为什么 \extracolsep{\fill} 没有填充?

为什么 \extracolsep{\fill} 没有填充?

当使用\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}}

隐藏宽度,只要您知道它将适合指定的宽度并且不会超出页面。

相关内容