当使用\extracolsep{\fill}
将稀疏表拉伸至完整文本宽度时,插入文本“太长”的多列会破坏填充。
我天真地以为下面例子中两个表的第二行看起来相同。
为什么会发生这种情况?我该怎么办?
\documentclass{article}
\setlength{\parindent}{0pt}
\begin{document}
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}|c|c|}
\hline
\multicolumn{2}{|c|}{Some text} \\
\hline
Left & Right \\
\hline
\end{tabular*}
\begin{tabular*}{\linewidth}{@{\extracolsep{\fill}}|c|c|}
\hline
\multicolumn{2}{|c|}{Some longer text with spaces} \\
\hline
Left & Right \\
\hline
\end{tabular*}
\end{document}
答案1
基本上,表格首先被设置为表格形式,因此长跨度条目会强制第二列更宽(因此Right
不再填充该列的整个宽度并且不会到达其右边缘,因为它是一c
列。)然后在完成对齐之后,因为表格的自然宽度小于\linewidth
,\extracolsep
(即\tabskip
粘合)用于分隔列,但列宽已经固定。
你可以使用
\multicolumn{2}{|c|}{\makebox[0pt]{Some longer text with spaces}}
隐藏宽度,只要您知道它将适合指定的宽度并且不会超出页面。