在表格环境中将左对齐列居中

在表格环境中将左对齐列居中

我知道这必须在某个地方,所以链接到正确的问题会很有帮助;我的 google-fu 一直返回我想要的错误版本(如下所述)。

目标:我希望能够拥有一个跨越某个固定宽度(比如说,整个页面的宽度)的表格环境,该环境具有多列,其中特定列的内容是左对齐的,但其文本在列内居中。

例如;

\documentclass{article}
\begin{document}
\begin{center}
    \begin{tabular}{llll}
        \textbf{\Large{Semester}} & \textbf{\large{Start Date}} 
               & \textbf{\large{End Date}} & \textbf{\large{Last Day of Finals}}\\
        \textbf{Summer A} & May 1st & June 2nd & June 5th \\[5pt]
        \textbf{Summer B} & June 1st & August 25th & August 30th \\[5pt]
        \textbf{Summer C} & August 1st & August 20th & August 30th \\
    \end{tabular}
\end{center}
\end{document}

当前打印的是居中表格,所有列均左对齐。我想要:

  1. 能够手动更改表格的宽度(我目前只知道如何使用 tabularx 来实现这一点,但肯定还有其他方法;最好是不需要文章类未自动加载的包的方法)
  2. 一旦表格变宽,第二列中的文本仍然保持左对齐,但在(现在人为变宽的)列内居中。

正如我所说,这应该是一个非常正常的问题,已经回答了一百次,但当我尝试搜索它时,我只发现人们希望将表格本身居中,并将表格内的内容左对齐。我认为在大多数情况下,表格会自动调整宽度,因此将左对齐的列居中是没有意义的……但如果你人为地将列宽度设置为超过文本要求的宽度,左对齐看起来会很奇怪,这就是我的问题所在。

为了清晰起见,我的目标是让该列中的文本在表格中间“浮动”,从而达到一定的美感。我意识到这是一个非常具体的用例,有很多理由通常不想这样做,而是做其他“看起来更好”的事情。然而,我正在试图弄清楚如何排版这个特定的功能,但我似乎不知道该用什么。

正如我在开始时所说的那样,即使只是将我链接到一个有答案的现有问题也会很棒,我将向您高超的搜索技巧致敬。

编辑:还忘记了另一点;如果我在表中有一个长标题(例如上面 MWE 中的标题“期末考试最后一天”),但该列的其余部分是相对较短(水平)的数据,这将是另一个方面,我希望该列“标题”下方的数据相对于标题居中,但仍然让所有数据相对于其自身左对齐......如果这有意义的话。

谢谢!

答案1

您可以使用tabular*强制表格宽度,将标题居中在宽度上需要一点调整,但也许

在此处输入图片描述

\documentclass{article}
\usepackage{array}
\newcommand\hd[1]{\multicolumn{1}{c}{\textbf{\large#1}}}

\begin{document}

\begin{center}
    \begin{tabular*}{\textwidth}{
!{\extracolsep{\fill}}
l
>{\kern10pt}l<{\kern10pt}
>{\kern5pt}l<{\kern5pt}
>{\kern25pt}l<{\kern25pt}
!{}}
        \hd{Semester} & \hd{Start Date}
               & \hd{End Date} & \hd{Last Day of Finals}\\[5pt]
        \textbf{Summer A} & May 1st & June 2nd & June 5th \\[5pt]
        \textbf{Summer B} & June 1st & August 25th & August 30th \\[5pt]
        \textbf{Summer C} & August 1st & August 20th & August 30th \\
    \end{tabular*}
\end{center}
\end{document}

相关内容