使用 tabularx 的表格布局(列宽:50%|25%|25%)

使用 tabularx 的表格布局(列宽:50%|25%|25%)

此代码生成一个包含三个居中列的表格:

\begin{table}[htbp]
    \centering
    \begin{tabularx}{\textwidth}{| c | c | c |}
        \hline
        Alpha     & Beta     & Gamma     \\ \hline
        0         & 2        & 4         \\ \hline
        1         & 3        & 5         \\ \hline
    \end{tabularx}
\end{table}

此代码生成一个具有相等宽度列的全宽表格:

\begin{table}[htbp]
    \centering
    \begin{tabularx}{\textwidth}{| X | X | X |}
        \hline
        Alpha     & Beta     & Gamma     \\ \hline
        0         & 2        & 4         \\ \hline
        1         & 3        & 5         \\ \hline
    \end{tabularx}
\end{table}

我不知道如何生成全宽表格,其中标题居中(~第一行)并且列宽|50%|25%|25%|分别?

如果我可以在文档开头的某处定义这些样式,那就太好了,这样所有其他的表都可以使用它。

答案1

下面的代码定义了两个新的columntypes:b表示“大”,s表示“小”

我遵循了documentation来创造这些。

截屏

\documentclass{article}
\usepackage{tabularx}

\newcolumntype{b}{X}
\newcolumntype{s}{>{\hsize=.5\hsize}X}

\begin{document}

\begin{table}[htbp]
    \centering
    %\begin{tabularx}{\textwidth}{| X | X | X |}
    \begin{tabularx}{\textwidth}{bss}
        \hline
        Alpha     & Beta     & Gamma     \\ \hline
        0         & 2        & 4         \\ \hline
        1         & 3        & 5         \\ \hline
    \end{tabularx}
\end{table}
\end{document}

如果你想让标题居中,那么你可以使用类似下面的命令,它定义了一个\heading命令来使其参数居中

\documentclass{article}
\usepackage{tabularx}

\newcolumntype{b}{X}
\newcolumntype{s}{>{\hsize=.5\hsize}X}
\newcommand{\heading}[1]{\multicolumn{1}{c}{#1}}

\begin{document}

\begin{table}[htbp]
    \centering
    %\begin{tabularx}{\textwidth}{| X | X | X |}
    \begin{tabularx}{\textwidth}{bss}
        \hline
        \heading{Alpha}     & \heading{Beta}     & \heading{Gamma}     \\ \hline
        0         & 2        & 4         \\ \hline
        1         & 3        & 5         \\ \hline
    \end{tabularx}
\end{table}
\end{document}

答案2

已知每列有两个“制表符分隔符”和 的 4/3 \arrayrulewidth,您可以从常规p-column 说明符中减去它:

在此处输入图片描述

\documentclass{article}
\usepackage{tabularx}% http://ctan.org/pkg/tabularx
\begin{document}

\noindent
\begin{tabularx}{\textwidth}{| X | X | X |}
  \hline
   Alpha     & Beta     & Gamma     \\ \hline
   0         & 2        & 4         \\ \hline
   1         & 3        & 5         \\ \hline
\end{tabularx}

\noindent
\begin{tabular}{
  |p{\dimexpr.5\linewidth-2\tabcolsep-1.3333\arrayrulewidth}% column 1
  |p{\dimexpr.25\linewidth-2\tabcolsep-1.3333\arrayrulewidth}% column 2
  |p{\dimexpr.25\linewidth-2\tabcolsep-1.3333\arrayrulewidth}|% column 3
  }
  \hline
  \centering Alpha     & \centering Beta     & \centering\arraybackslash Gamma     \\ \hline
  0         & 2        & 4         \\ \hline
  1         & 3        & 5         \\ \hline
\end{tabular}
\end{document}

使用 可在所需单元格内实现居中\centering(知道您正在处理 -column p,这是可能的)。修改此对齐方式需要进行小幅修正(通过)以重新建立中\arraybackslash的使用。\\tabular

答案3

我的新 LaTeX3 包tabularray是过时软件包的替代品tabu

\documentclass{article}
\usepackage{tabularray}
\begin{document}

\begin{table}[htbp]
    \centering
    \begin{tblr}{
      colspec={|X[2]|X|X|}, row{1} = {c}, hlines,
    }
      Alpha & Beta & Gamma \\
        0   &  2   &   4   \\
        1   &  3   &   5   \\
    \end{tblr}
\end{table}

\end{document}

在此处输入图片描述

答案4

另一种方法是使用环境。您可以为列 ( )tabu赋予“权重”(宽度系数):XX[2]

\documentclass{article}
\usepackage{tabu}

\begin{document}

\begin{table}[htbp]
    \centering
    \begin{tabu} to \textwidth {| X[2] | X | X |}
        \hline
        \centering Alpha & \centering Beta & \centering Gamma \\ \hline
        0                & 2               & 4                \\ \hline
        1                & 3               & 5                \\ \hline
    \end{tabu}
\end{table}

\end{document}

相关内容