我有下表:
\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}