我的问题几乎与问题 74681,但有一个值得注意的例外:我可以运行 latex 1000 次或更多次,它仍然会说“表格宽度已更改。重新运行 LaTeX”。重现此问题的最小测试用例如下:
\documentclass{letter}
\usepackage[T1]{fontenc}
\usepackage{ltxtable}
\usepackage{filecontents}
\begin{filecontents}{\jobname.ltxtable.tex}
\begin{longtable}[c]{r|r|l|l|X|r|r}
pos. &
date &
\multicolumn{2}{|l|}{quantity} &
description &
item price &
net price
\endhead
\endlastfoot
1 &
02.10. &
1 &
piece &
testitem testitem &
50,00 E per piece &
50,00 E
\end{longtable}
\end{filecontents}
\begin{document}
\LTXtable{17cm}{\jobname.ltxtable.tex}
\end{document}
请注意,如果我将“数量”一词改为更短的单词(例如“qty”),问题就消失了。或者更改为更长的内容(例如“数量数量”),但这当然不是一般情况的解决方案(实际上,像这样的文件会自动处理,并且消息“重新运行 LaTeX”应该触发重新运行 LaTeX,这会立即触发无限循环)。
我希望这不仅仅是运气不好——但我错过了什么?
编辑:不幸的是,问题仍然存在。今天,我在一份我可以简化为的文档中发现了这个问题
\documentclass{letter}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{,}{\mathord\mathcomma}{#1} }
\begin{filecontents}{\jobname.ltxtable.tex}
\begin{longtable}[c]{r|r@{\,}l|X}
date & \multicolumn{2}{l|}{quanti} & description \\
& & & \kill
\endhead
\endlastfoot
& 2 & units & some descriptive text \\
\end{longtable}
\end{filecontents}
\begin{document}
\LTXtable{13cm}{\jobname.ltxtable.tex}
\end{document}
请注意标题中已删除的行,正如建议的那样 - 但列仍然不匹配(原始差异要大得多)。现在该怎么办?
答案1
呃,这是隐藏功能,抱歉。一个简单的解决方法是确保您的标题不以多列行结尾(例如,通过添加一行\kill
)
\documentclass{letter}
\usepackage[T1]{fontenc}
\usepackage{ltxtable}
\usepackage{filecontents}
\usepackage{icomma}
\usepackage[a2paper]{geometry}
\usepackage{dcolumn}
\newcolumntype{d}[1]{D{,}{\mathord\mathcomma}{#1} }
\begin{filecontents}{\jobname.ltxtable.tex}
\begin{longtable}[c]{r|r|d{1}|l|X|r|r|r}
pos. &
date &
\multicolumn{2}{l|}{quantity} &
description &
item price &
net price
\\
&&&&&&\kill
\endhead
1 &
02.10. &
1 &
piece &
testitem testitem &
50,00 E per piece &
50,00 E
\\
\end{longtable}
\end{filecontents}
\begin{document}
\begin{center}\rule{17cm}{1cm}\end{center}
\LTXtable{17cm}{\jobname.ltxtable.tex}
\end{document}