考虑以下 MWE:
\documentclass[12pt]{article}
\usepackage{datatool}
\begin{document}
\DTLnewdb{table}
\DTLnewrow{table}
\DTLnewdbentry{table}{a}{hallo}
\DTLnewdbentry{table}{b}{non}
\DTLnewrow{table}
\DTLnewdbentry{table}{a}{bonjour}
\DTLnewdbentry{table}{b}{non}
\DTLnewrow{table}
\DTLnewdbentry{table}{a}{czesc}
\DTLnewdbentry{table}{b}{oui}
\DTLnewrow{table}
\DTLnewdbentry{table}{a}{hola}
\DTLnewdbentry{table}{b}{oui}
\section{display table}
\DTLdisplaydb{table}
\section{Subtable}
\begin{tabular}{|c|c|c|}
\hline
a & b & row-number \\
\DTLforeach[\DTLiseq{\b}{oui}]{table}{\a=a,\b=b}{%
\a & \b & \arabic{DTLrowi} \\
}%
\end{tabular}
\end{document}
循环\DTLforeach
对所有符合条件的行进行[\DTLiseq{\b}{oui}]
,即所有符合条件的行a=oui
或第 3 行和第 4 行。该命令\arabic{DTLrowi}
在循环中传递当前行的行号,但它引用了由限制生成的“子表” [\DTLiseq{\b}{oui}]
。在这个子表中,它们是第 1 行和第 2 行。
我的问题:我想引用原始行号(本例中为 3 和 4)。可以吗?
答案1
然后应该在 内使用与之关联<condition>
的。此外,返回或的结果然后应该在布尔子句中使用:\DTLforeach[<condition>]{..}{..}{<body>}
<body>
\DTLiseq{\b}{oui}
true
false
\ifthenelse{<condition>}{<true>}{<false>}
\DTLforeach
%[\DTLiseq{\b}{oui}]
{table}
{\a=a,\b=b}{%
\ifthenelse{\DTLiseq{\b}{oui}}
{\a & \b & \arabic{DTLrowi} \\}
{}%
}%
您的 MWE 中的这个定义产生: