为什么减少元素跨越的列数会增加其尺寸?

为什么减少元素跨越的列数会增加其尺寸?

我有下表:

\begin{tabular}{c | c | c | c | c}
 & Front & \multicolumn{2}{|c|}{Center} & Back \\
\hline
Close
  & \multicolumn{2}{|c|}{i}
  & \multicolumn{2}{|c|}{u} \\
\hline
Mid
  & e
  & \multicolumn{2}{|c|}{o} \\
\hline
\end{tabular}

请注意,在第二行中,包含 的单元格i跨 2 列,而在第三行中,包含 的单元格e仅跨 1 列。我猜想,仅从代码来看,第 2 行的单元格会更宽,因为它跨更多列。我预计包含 的单元格i会延伸到包含 的单元格的中点左右Center

但是,它并没有变宽。事实上,第 3 行的单元格更宽。

在此处输入图片描述

我不知道它为什么会这样。说实话,这是我在 tex 中遇到的最奇怪的事情。

这里发生了什么事?

答案1

在此处输入图片描述

\documentclass{article}
\usepackage{array}
\begin{document}

\begin{tabular}{c | c | c | c | c}
 & Front & \multicolumn{2}{c|}{Center} & Back \\
\hline
Close
  & \multicolumn{2}{c|}{i}
  & \multicolumn{2}{c|}{u} \\
\hline
Mid
  & e
  & \multicolumn{2}{c|}{o} \\
\hline
A&B&C&D&E
\end{tabular}
\end{document}

在原始层面上tabular是一种\halign构造,并且\halign有一些不幸的“优化”,特别是如果没有使用列模板(由于跨越每行),那么在分配列宽之前该列基本上会被删除。

这发生在第 3 列。如果您在末尾放入一整行,那么您会得到更易于理解的输出。

(一个简单的解决方法是删除 ABCD 但保留空白行,然后在表格后用负垂直空间进行补偿。)

与此表相比,该表具有完整的最后一行,并且或多或少具有您获得的列布局

在此处输入图片描述

\documentclass{article}
\usepackage{array}
\begin{document}

\begin{tabular}{c | c | c| c | c}
 & \multicolumn{2}{c|}{Front} & Center & Back \\
\hline
Close
  & i
  & \multicolumn{3}{c|}{u} \\
\hline
Mid
  & \multicolumn{2}{c|}{e}
  & o \\
\hline
A&B&C&D&E
\end{tabular}
\end{document}

相关内容