对齐 (tabular*) 时 \hbox 未满的问题和/或 calc 包的问题

对齐 (tabular*) 时 \hbox 未满的问题和/或 calc 包的问题

我得到了

underfull \hbox in alignment (badness 10000)

使用tabular*。如果我将表格宽度调整 0.00002pt(按照下面的 MWE),警告就会消失。差异似乎源于使用calcTeX\real的定点算法进行的长度计算。

我知道使用tabularxX 列是一种解决方案,但是 a) 我希望完全控制表格,并且 b)“更正”通常取决于当前\linewidth

对于像我这样想要干净的 TeX 日志文件的人来说,这看起来像是一个陷阱。如果按照 The LaTeX Companion 中的示例 5.3.1(虽然没有反对!),可能会掉入这个陷阱,更重要的是很难推断出如此微小的差异。

我们该忍受这样的事吗?

\documentclass{article}
\usepackage{calc}
\begin{document}
\newlength{\MyLen}      \setlength{\MyLen}{(\linewidth*\real{0.5}-\tabcolsep)/3}%
\newlength{\MyLenTwo}   \setlength{\MyLenTwo}{\MyLen*\real{1.3}}
\newlength{\MyLenThree} \setlength{\MyLenThree}{\MyLen*\real{0.7}}
\newlength{\MyLenFour}  \setlength{\MyLenFour}{\linewidth*\real{0.5}-(\MyLen+\MyLenTwo+\MyLenThree+\tabcolsep)}
% \showthe\MylenFour % gives 0.00002pt; if that is not accounted for, TeX barks with an "Underfull \hbox (badness 10000) in alignment..."

\begin{tabular*}{0.5\linewidth-0.00002pt}{p{\the\MyLen}@{}p{\the\MyLenTwo}@{}p{\the\MyLenThree}@{}}
First&Second&Third \\
\end{tabular*}
\end{document}

答案1

只需使用

\begin{tabular}{p{\the\MyLen}@{}p{\the\MyLenTwo}@{}p{\the\MyLenThree}@{}}
First&Second&Third \\
\end{tabular}

由于列之间的粘合没有灵活性,tabular*无法以任何方式更改宽度,因此使用的宽度tabular*tabular与指定大小的框相同,因此如果它不完全适合,则会生成警告。基本上tabular*需要\extracolsep{\fill}在某个地方使用才能发挥任何作用。

相关内容