我不知道为什么最后一行效果不好。
主文本
\documentclass[11pt]{article}
\usepackage{ifthen}
\usepackage{longtable}
\usepackage{ragged2e}
\usepackage{datatool}
\DTLsetseparator{;}
\DTLloaddb[noheader, keys={nom,ape}]{miembros}{miembros.csv}
\begin{document}
\justifying
\begin{longtable}{|p{7cm} | p{5cm}|}
\hline
& \\
\makebox[7cm][c]{Nombre} & \makebox[5cm][c]{Firma} \\ & \\
\hline \hline
\endhead
\multicolumn{2}{|r|}{Continua en la siguiente p\'agina} \\ \hline
\endfoot
\DTLforeach{miembros}{\nom=nom,\ape=ape}{& \\ \ape, \nom & \\ & \\ \hline}
\end{longtable}
\end{document}
miebros.csv
Javier;Delgado Cruces
Manu\'el Andr\'es;Espuelas Cifuentes
Enrique Mart\'in;Garcia Mart\'in
Alejandro;Lobato Cantos
Ana;Mart\'in Prieto
输出
答案1
最好将其放在循环\\
的开始\DTLforeach
处以避免干扰:
\documentclass[11pt]{article}
\usepackage{ifthen}
\usepackage{longtable}
\usepackage{ragged2e}
\usepackage{datatool}
\DTLsetseparator{;}
\DTLloaddb[noheader, keys={nom,ape}]{miembros}{miembros.csv}
\begin{document}
\justifying
\begin{longtable}{|p{7cm} | p{5cm}|}
\hline
& \\
\makebox[7cm][c]{Nombre} & \makebox[5cm][c]{Firma} \\ & \\
\hline \hline
\endhead
\hline
\multicolumn{2}{|r|}{Continua en la siguiente p\'agina} \\ \hline
\endfoot
\DTLforeach{miembros}{\nom=nom,\ape=ape}{%
\DTLiffirstrow{}{\\\hline}% start new tabular row
& \\
\ape, \nom & \\
&
}
\end{longtable}
\end{document}
顺便说一句,您可能需要考虑采用不同的方式应用垂直间距,因为您可能会遇到一些问题。在第一次迭代中,\DTLforeach
有三个表格行:
& \\
Delgado Cruces, Javier & \\
& \\ \hline
这三行都适合这一页,依此类推,但如果表格到达页面末尾,分页符可能会出现在页面末尾或页面末尾,\ape, \nom & \\
这意味着您在页面末尾或下一页开头会有一个空白行,这会导致奇怪的效果。最好删除这些空白行并增加剩余行的垂直高度。
您可以重新定义\arraystretch
,也可以添加不可见的规则来增加垂直间距。这里有一个简单的文档,用于比较:
\documentclass{report}
\begin{document}
\begin{tabular}{|p{7cm}|p{5cm}|}
\hline
& \\
A1 & A2\\
& \\\hline
& \\
B1 & B2\\
& \\\hline
\multicolumn{2}{|r|}{Continued}\\\hline
\end{tabular}
\bigskip
\renewcommand{\arraystretch}{3}
\begin{tabular}{|p{7cm}|p{5cm}|}
\hline
A1 & A2\\\hline
B1 & B2\\\hline
\multicolumn{2}{|r|}{Continued}\\\hline
\end{tabular}
\renewcommand{\arraystretch}{1}% reset
\bigskip
\begin{tabular}{|p{7cm}|p{5cm}|}
\hline
\rule[-3ex]{0pt}{8ex}A1 & A2\\\hline
\rule[-3ex]{0pt}{8ex}B1 & B2\\\hline
\multicolumn{2}{|r|}{Continued}\\\hline
\end{tabular}
\end{document}
答案2
我找到了一个使用的解决方案\kill
,但我认为不是最好的。
主文本
\documentclass[11pt]{article}
\usepackage{ifthen}
\usepackage{longtable}
\usepackage{ragged2e}
\usepackage{datatool}
\DTLsetseparator{;}
\DTLloaddb[noheader, keys={nom,ape}]{miembros}{miembros.csv}
\begin{document}
\justifying
\begin{longtable}{|p{7cm} | p{5cm}|}
\hline
& \\
\makebox[7cm][c]{Nombre} & \makebox[5cm][c]{Firma} \\ & \\
\hline \hline
\endhead
\multicolumn{2}{|r|}{Continua en la siguiente p\'agina} \\ \hline
\endfoot
\DTLforeach{miembros}{\nom=nom,\ape=ape}{& \\ \ape, \nom & \\ & \\ \hline}
\kill
\end{longtable}
\end{document}
miebros.csv
Javier;Delgado Cruces
Manu\'el Andr\'es;Espuelas Cifuentes
Enrique Mart\'in;Garcia Mart\'in
Alejandro;Lobato Cantos
Ana;Mart\'in Prieto
输出