我有一个应用程序存储 LaTeX 文档,然后(当用户单击链接时)将它们呈现为 PDF 文件以供下载或查看。
总体来说,这种方法效果很好,但我遇到了一个小问题。有时(我不太清楚这种情况是在什么情况下发生的),当使用 渲染文件时pdflatex
,会发出警告:
Table widths have changed. Rerun LaTeX.
尽管生成的 PDF 可以呈现,但却是不正确的(即,列标题似乎与表格的实际主体列未对齐。按照警告指示进行操作,并pdflatex
在输入文件上进行第二次运行,可以完全正确地呈现 PDF(所有内容均正确对齐),并且没有任何警告。
例如,下表显示了这个问题:
\begin{longtabu}{ r r r r r }
\multicolumn{1}{c}{\textbf{Description}} &
\multicolumn{1}{c}{\textbf{Available}} &
\multicolumn{1}{c}{\textbf{Billed}} &
\multicolumn{1}{c}{\textbf{Current}} &
\multicolumn{1}{c}{\textbf{Remaining}} \\
\endhead
1 - Foo & \$1,791.04 & \$0.00 &
\$1,567.16 & \$223.88 \\
2 - Bar & \$58,730.01 & \$0.00 &
\$19,579.01 & \$39,151.00 \\
Baz & \$6,839.00 & \$0.00 &
\$0.00 & \$6,839.00 \\
\hline
\textbf{Profit} & \textbf{\$14,255.48} & \textbf{\$0.00} &
\textbf{\$2,581.85} & \textbf{\$11,673.63} \\
\textbf{Total} & \textbf{\$145,055.13} &
\textbf{\$0.00} & \textbf{\$25,032.69} & \textbf{\$120,022.44} \\
\end{longtabu}
我想有两种方法可以回答我的问题:
我是否因为输入了一些“有问题的”输入而导致此警告
pdflatex
?如果是这样,我应该如何调整代码以避免此问题?有没有办法告诉
pdflatex
“如果需要,只需自己重新运行,不要告诉我”? 这个问题的简单解决方案是只检测此警告,然后重新运行pdflatex
,但这似乎是一种解决我的问题的非常混乱的方法。
似乎从例如这个问题,这些重复运行可能是必要的。在这种情况下,我想让pdflatex
它自动完成,而不是手动运行两次或更多次。
答案1
这些都是 longtable 包的标准行为。如果您使用控制应用程序(如 make 或 latexmk 或 arara 或 emacs 等),那么它可以为您读取日志文件并重新运行 latex,但 latex 本身不能。
请注意,longtable 并没有什么特别之处,目录、交叉引用\ref
、索引都需要 latex 运行多次。