如何充分对齐表格列

如何充分对齐表格列

我想要一个tabular具有完全对齐列的环境。我猜想如何实现这一点是使用一个tabularx环境(这样表格就知道宽度),然后在所有相邻列之间放置\hilll(以适当重复字母l)。但是,这行不通。请参阅下面的 MWE。

\documentclass{article}
\usepackage{tabularx}
\begin{document}
Text before. Text before. Text before. Text before. Text before. Text before. Text before.

\begin{tabularx}{\textwidth}{l@{\hfill}c@{\hfill}r}
 On the LEFT & In the middle & On the RIGHT
\end{tabularx}

Text between. Text between. Text between. Text between. Text between. Text between. Text between.

\def\magicNumber{50pt}
\begin{tabularx}{\textwidth}{lcr}
 On the LEFT & \hspace*{\magicNumber} In the middle \hspace*{\magicNumber} & On the RIGHT
\end{tabularx}

Text after. Text after. Text after. Text after. Text after. Text after. Text after. Text after.
\end{document}

在此处输入图片描述

第一个tabularx环境是我的失败尝试。第二个tabularx环境排版(大致)正确,但使用魔法数字是一种黑客行为。

问题:

如何正确使用无限粘连(如\hfill)来指定列之间的空间tabularx?更一般地说,如何获得tabular具有完全对齐列的环境?

答案1

tabularx仅在使用 -column 时才有效X。您感兴趣的可能是设置\extracolsep{\fill},如表格中的列和行填充

在此处输入图片描述

\documentclass{article}
\begin{document}
Text before. Text before. Text before. Text before. Text before. Text before. Text before.

\noindent
\begin{tabular*}{\linewidth}{@{}@{\extracolsep{\fill}}lcr@{}}
  On the LEFT & In the MIDDLE & On the RIGHT
\end{tabular*}

Text after. Text after. Text after. Text after. Text after. Text after. Text after. Text after.

\noindent
\begin{tabular*}{\linewidth}{@{}@{\extracolsep{\fill}}lcr@{}}
  On the LEFT & In the very MIDDLE & On the RIGHT
\end{tabular*}

\end{document}

请注意,以上内容并不代表“完全对齐”的列。为此,您可以使用

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx}
\begin{document}
Text before. Text before. Text before. Text before. Text before. Text before. Text before.

\noindent
\begin{tabularx}{\linewidth}{@{}XXX@{}}
  On the LEFT & In the MIDDLE & On the RIGHT
\end{tabularx}

Text after. Text after. Text after. Text after. Text after. Text after. Text after. Text after.

\end{document}

如果需要,您可以使用array包裹

相关内容