长桌视野不佳

长桌视野不佳

我不知道为什么最后一行效果不好。

主文本

\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

输出

桌子

相关内容