此代码生成一个包含三个居中列的表格:
\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
赋予“权重”(宽度系数):X
X[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}