表格* 列对齐

表格* 列对齐

我读过有关tabular*环境的内容,但同样的例子反复出现。我想知道的是,当转换示例时,为什么第 2 列和第 3 列会失去居中?我见过使用tabularx和的解决方案array,但示例中的解决方案似乎接近正确,所以我想知道额外的步骤以使其符合预期。

示例及其输出的链接是:WikiBooks LaTeX 表格。这是本节的后半部分。

tabular*如果有人能提供关于如何在搜索引擎中搜索而不*将其作为通配符的提示,我也会很感激。

答案1

我相信你正在谈论下表:

\begin{tabular*}{0.75\textwidth}{@{\extracolsep{\fill}} | c | c | c | r | }
    \hline
    label 1 & label 2 & label 3 & label 4 \\
    \hline
    item 1  & item 2  & item 3  & item 4  \\
    \hline
\end{tabular*}

维基百科表

告诉编译器在每个后续列(从第二列开始)的左侧@{\extracolsep{\fill}}添加额外的橡胶长度( ),以便最终表格具有正确的宽度。这个间距也会添加到最后一列,但您看不到差异,因为它已经右对齐了。如果您使用包中的命令,您会注意到添加的额外空间不计入单元格的内容,而是计入列分隔符(如下例所示)。\fillcellcolorcolortbl

\documentclass{article}
\usepackage{colortbl}
\begin{document}
\begin{tabular*}{0.75\textwidth}{@{\extracolsep{\fill}} | c | c | c | r | }
    \hline
    label 1 & label 2 & label 3 & label 4 \\
    \hline
    item 1  &\cellcolor{green} item 2  & item 3  & \cellcolor{green} item 4  \\
    \hline
\end{tabular*}
\end{document}

彩色单元格内容

修复此问题的一种方法是使用p-column 说明符,它允许固定宽度的列。

\begin{tabular*}{0.75\textwidth}{| c *3{| p{0.175\textwidth}} | }
    \hline
    label 1 & \centering label 2 & \centering label 3 & \raggedleft label 4 \tabularnewline
    \hline
    item 1  & item 2  & item 3  & item 4  \tabularnewline
    \hline
\end{tabular*}

黑客解决方案

但这存在两个问题:

  1. 您需要通过反复试验的过程来获得正确的列宽(因为最好将任务留给计算机来完成)。
  2. 由于p列默认为左对齐。因此您需要单独指定每个单元格的对齐方式(如我在上例中所做的那样)。这会将表格内容与许多格式化命令混在一起,我更喜欢将它们分开。

获得正确表格的更简单方法是使用tabularxarray包,如维基百科文章

这里我们可以使用X-column 定义自动调整列宽。同样,由于X-columns 设置为p-columns,因此它们左对齐。我们需要指定正确的对齐方式。这里我们可以使用 '\newcolumntype' 命令来定义我们的自定义列定义。

\documentclass{article}
\usepackage{tabularx}    
\begin{document}
\newcolumntype{C}{>{\centering\arraybackslash}X}
\newcolumntype{R}{>{\raggedleft\arraybackslash}X}
\begin{tabularx}{0.75\textwidth}{ | c | C | C | R | }    
    \hline
    label 1 & label 2 & label 3 & label 4 \\
    \hline
    item 1  & item 2  & item 3  & item 4  \\
    \hline
\end{tabularx}
\end{document}

tabularx 方法

您还可以使用 -columns 做一些巧妙的技巧,X例如指定两列的相对宽度。我建议您查看手册以了解更多详细信息。

相关内容