如何在 \DTLforeach 循环中引用绝对行号

如何在 \DTLforeach 循环中引用绝对行号

考虑以下 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}truefalse\ifthenelse{<condition>}{<true>}{<false>}

\DTLforeach
  %[\DTLiseq{\b}{oui}]
  {table}
  {\a=a,\b=b}{%
    \ifthenelse{\DTLiseq{\b}{oui}}
      {\a    &    \b & \arabic{DTLrowi}  \\}
      {}%
  }%

您的 MWE 中的这个定义产生:

在此处输入图片描述

相关内容