Latest news 2024-10-15: New blog post: Tales for Our Times Book Launch.

Bug Tracker RSS feed

I’m currently working on a major new version of the datatool package. This may take a while. Please be patient. (Experimental version available for testing.)

ID 23🔗
Date: 2013-03-29 12:57:19
Status Closed (Not a Bug)
Category datatool
Version 2.13
Summary Only the second row works not the first

Sign in to subscribe to notifications about this report.

Description

I cant iterate through row 1 of the database, I dont know why, have tried to describe as good as possible the problems.

its an MW(N)E including the description of the problem...

Best regards

Peter

MWE

Download (2.14K)

\documentclass{article}

\usepackage{expl3}
\usepackage[ansinew]{inputenc}
\usepackage{datatool}
\usepackage{filecontents} % Ein- oder Auskommentieren, siehe Hinweis unten
\begin{filecontents}{tempdatabb.dat}
10 & 100
20 & 130
30 & 150
40 & 170
50 & 190
60 & 210
\end{filecontents}


\makeatletter
\ExplSyntaxOn
\cs_set_eq:NN \ifinstr \tl_if_in:nnTF
\DeclareRobustCommand*\assignvalues[2]{\@assignvalues{#1}{#2}}
\long \def\@assignvalues#1#2{
  \seq_set_split:Nnn \l_tmpa_seq { | } {#1}
  \seq_set_split:Nnn \l_tmpb_seq { | } {#2}
  \seq_mapthread_function:NNN \l_tmpa_seq \l_tmpb_seq \assignvalues@ii
}
\long \def \assignvalues@ii #1#2 { \protected@csedef{#1}{#2} }
\ExplSyntaxOff
\makeatother



\begin{document}

First problem. I can only search through the second row, not the first.


This workts...


\assignvalues{suchwert}{155}

\DTLsetseparator{&}
\DTLloaddb[keys={temperatur,dichte},noheader]{scoreAAA}{tempdatabb.dat}

\begin{table}[htbp]
\centering
\begin{tabular}{llr}
\bfseries Temperatur & \bfseries Dichte %
\DTLforeach[\DTLislt{\dichte}{\suchwert}]{scoreAAA}%
{\temperatur=temperatur,\dichte=dichte}{%
\\\temperatur & \dichte 
}%
\end{tabular}
\end{table}


this does not work...

\assignvalues{suchwert}{155}

\DTLsetseparator{&}
\DTLloaddb[keys={temperatur,dichte},noheader]{scoreAA}{tempdatabb.dat}

\begin{table}[htbp]
\centering
\begin{tabular}{llr}
\bfseries Temperatur & \bfseries Dichte %
\DTLforeach[\DTLislt{\temperatur}{\suchwert}]{scoreAA}%
{\temperatur=temperatur,\dichte=dichte}{%
\\\temperatur & \dichte 
}%
\end{tabular}
\end{table}

Goal of my piece of code is the search of the nearest value pairs to the suchwert.

for example if the suchwert is 35 (for temperatur, row one) than I would like to make assignments of

\assignvalues{firstpointx}{30} 
\assignvalues{firstpointy}{150}
\assignvalues{secondpointx}{40}
\assignvalues{secondpointy}{170}

in other words: the nearest point smaller to 35, the nearest point bigger to 35 is to access...

but i rather can't find the point during the problem because of the first row problem as described...




\end{document}

Evaluation

This isn't a bug in datatool. Your database file separates entries using <space>&<space>, but you've set the separator to just & which means a spurious space is being added to the data base values. The default math processor (fp.sty) can't cope with that space in \temperatur, which is what's causing the problem. The simplest solution is to use pgfmath instead of fp as pgfmath can cope with the space.

\usepackage[math=pgfmath]{datatool}

Comments

0 comments.


Add Comment

Name (optional):

Are you human? Please confirm the bug report ID (which can be found at the top of this page) or login if you have an account.

Comment:


You can use the following markup:

Block:

[pre]Displayed verbatim[/pre]
[quote]block quote[/quote]

In line:

[tt]code[/tt]
[file]file/package/class name[/file]
[em]emphasized text[/em]
[b]bold text[/b]
[url]web address[/url] [sup]superscript[/sup]
[sub]subscript[/sub]

Ordered list:
[ol]
[li]first item[/li]
[li]second item[/li]
[/ol]

Unordered list:
[ul]
[li]first item[/li]
[li]second item[/li]
[/ul]

You can use the Preview button to review your message formatting before submitting.

Page permalink: https://www.dickimaw-books.com/bugtracker.php?key=23