下面的代码显示了一个我认为很小但很烦人的错误。显示的长表延伸到第二页,但第二页上没有列,因此没有必要将长表延伸到第二页。
\documentclass[12pt,letterpaper]{article}
\usepackage{longtable}
\usepackage[verbose]{datatool}
\usepackage{array}
\usepackage{filecontents}
\usepackage[T1]{fontenc}
\usepackage{fouriernc}
\newcommand{\PrintTable}[2]{%
% #1 = database
% #2 =caption
\begin{longtable}{c}
\caption{#2}\\
Col\\\hline\endhead
\DTLforeach
{#1}{%
\Col=Col%
}{%
\Col \\
}%
\end{longtable}
}%
\begin{filecontents*}{foo.csv}
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
foo,
\end{filecontents*}
\begin{document}
\IfFileExists{./foo.csv}{
\DTLloaddb[noheader,keys={Col,}]{DB}{foo.csv}
\PrintTable{DB}{Foo}
}{}
\end{document}
答案1
\\
您将在 内以 结束每一行\DTLforeach
。这意味着您将在最后一个之后执行代码\\
,这样的代码很容易导致表格末尾出现空行。您可以使用 之类的序言来直观地展示问题{>{blub}c}
。我建议将 移到开头,并使用来\\
隐藏第一个:\\
\DTLiffirstrow
\newcommand{\PrintTable}[2]{%
% #1 = database
% #2 =caption
\begin{longtable}{>{blub}c}
\caption{#2}\\
Col\\\hline\endhead
\DTLforeach
{#1}{%
\Col=Col%
}{%
\DTLiffirstrow{}{\\}%
\Col
}%
\end{longtable}
}%