latex/tabularx 多列和列宽

latex/tabularx 多列和列宽

我正在阅读 tabularx 文档并偶然发现一些我不清楚的东西。

  1. 在 4.3 中。第 1 点表明(之前的分数之和\hsize)应始终是使用的列数。如果这不合适,会有什么坏处吗(除非您提前计算了数字,列宽将不会完全符合计算(我问这个问题只是因为有时您做了数学运算,但随后您认为一列应该大一点,所以只想增加那个数字而不是重新计算所有内容))

  2. 在 4.3 中。要点 2:交叉是什么意思?是否应该没有多列[lXl](越过一列的左右边界X)、[XX](跨越多X列)甚至[lX](包含一X列)?- 为什么这是个问题,当尺寸不适合时,包只会重新计算尺寸(据我了解)

  3. 为什么要\hsize用来“加权”列宽而不是像\testwidht或这样的其他长度\linewidth(据我所知,它们有点相似(并且在大多数情况下相同)?

答案1

  1. 如果您不将大小相加,tabularx 真的不会做任何有意义的事情。它会做一些事情,在某些情况下您可能会接受结果,但在这种情况下的任何输出都是意外的未经测试的代码路径

  2. 这意味着如果你在第 2 列有一个 X 列,那么你就不应该有一个\multicolumn{..}{c}{...} 跨越第 2 列但没有 X 的列。有时你可以打破这个规则,有时你不能。在我写代码 30 年后,细节有点模糊 :-)

  3. 因为您需要设置\hsize,因为这是用于换行宽度的 tex 基元。最好设置\linewidth为匹配(如该项所示),这样嵌套的 latex 列表将使用正确的长度。

(2) 有问题的原因是它实际上会让您违反 (1)。如果宽度或声明为 X 的列实际上是由具有固定自然长度的条目强制的,\multicolumn{1}{c}{long text here}tabularx实际上会忽略该列中的 X,并且工作方式就像表中少了一个 X 列一样,然后重新计算。如果跨越的是 X,那么这很好,但如果是,>{\hsize=.5\hsize}X那么当忽略此列并减少活动 X 列的数量时,剩余的修改宽度将不符合 (1) 设置的约束。

相关内容