![datatool 和 longtable 中的一个单元格太多](https://linux22.com/image/247597/datatool%20%E5%92%8C%20longtable%20%E4%B8%AD%E7%9A%84%E4%B8%80%E4%B8%AA%E5%8D%95%E5%85%83%E6%A0%BC%E5%A4%AA%E5%A4%9A.png)
我知道之前的帖子带有 longtable 的数据工具,但是并没有解决我的问题。
我有一个包含大约 10 个表格的文档,对于每个表格我使用这段代码:
\DTLsetseparator{;}
\DTLloaddb{kundt2}{kundt2.csv}
\begin{center}
\begin{longtable}{|c|c|c|}
\caption[De berekende bronsterkte van de buis]{De berekende bronsterkte van de buis} \label{tbl:kundt2} \\
\hline
\endfirsthead
\endhead
\endfoot
\endlastfoot
\DTLforeach{kundt2}{
\1=1, \2=2, \3=3}{\ifthenelse{\value{DTLrowi}>0}{
\1 & \2 & \3 \\ \hline }{}}
\end{longtable}
\end{center}
我的 csv 文件
1;2;3;
444;555;666;
111;222;333;
等等,我知道一个就可以了。
因为我是荷兰人,所以我需要使用符号;
来分隔我的 csv 值。即使表格长度超过 4 页,一切都运行良好,但每次最后一行都会有一个额外的空单元格。我尝试更改此行:
\DTLforeach{kundt2}{
\1=1, \2=2, \3=3}{\ifthenelse{\value{DTLrowi}>0}{
\1 & \2 & \3 \\ \hline }{}}
到:
\DTLforeach{kundt2}{
\1=1, \2=2, \3=3}{\ifthenelse{\value{DTLrowi}>0}{
\\ \hline \1 & \2 & \3}{}}
但随后我在第一行得到了一个额外的空单元格。我做错了什么?
答案1
datatool 显然没有充分保护其内部结构,因此无法在此上下文中使用。您可以\noalign
按如下方式隐藏切换。我还删除了中心环境,因为它对 longtable 没有影响。
\documentclass{article}
\usepackage{datatool,longtable}
\begin{document}
\DTLsetseparator{;}
\DTLloaddb{kundt2}{kundt2.csv}
\begin{longtable}{|c|c|c|}
\caption[De berekende bronsterkte van de buis]{De berekende bronsterkte van de buis} \label{tbl:kundt2} \\
\hline
\endfirsthead
\endhead
\endfoot
\endlastfoot
\noalign\bgroup
\DTLforeach{kundt2}{
\1=1, \2=2, \3=3}{\egroup\ifthenelse{\value{DTLrowi}>0}{
\1 & \2 & \3 \\ \hline }{}\noalign\bgroup}\egroup
\end{longtable}
\end{document}