我希望每个单元格的宽度都像代码中一样指定,因此我使用垂直对齐m{6mm}
。但是现在,如何使所有值水平居中对齐?
这是我的代码:
\documentclass[11pt]{article}
\usepackage{array}
\begin{document}
\begin{tabular}{|m{1.5cm}||*{6}{m{6mm}|}}
\hline
$x_1$ & 1 & 2 & 3 & 4 & 5\\
\hline
$y_1$ & 10 & 20 & 30 & 40 & 50\\
\hline
\end{tabular}
\end{document}
目标是使所有值都位于center
而不是left aligned
如上图所示。
答案1
\documentclass[11pt]{article}
\usepackage{array, booktabs}
\usepackage[table, svgnames, dvipsnames]{xcolor}
\definecolor{LightCyan}{rgb}{0.88,1,1}
\definecolor{Gray}{gray}{0.85}
\newcolumntype{P}[1]{>{\centering\arraybackslash}p{#1}}
\newcolumntype{Q}[1]{>{\columncolor{Gray}\centering\arraybackslash}p{#1}}
\begin{document}
\begin{tabular}{|P{1.5cm}||*{6}{P{6mm}|}}
\hline
$x_1$ & 1 & 2 & 3 & 4 & 5\\
\hline
$y_1$ & 10 & 20 & 30 & 40 & 50\\
\hline
\end{tabular}
\vspace{\baselineskip}
\begin{tabular}{P{1.5cm}*{6}{P{6mm}}}
\toprule
$x_1$ & 1 & 2 & 3 & 4 & 5\\
$y_1$ & 10 & 20 & 30 & 40 & 50\\
\bottomrule
\end{tabular}
\vspace{\baselineskip}
\begin{tabular}{Q{1.5cm}*{6}{P{6mm}}}
% \toprule
$x_1$ & 1 & 2 & 3 & 4 & 5\\
$y_1$ & 10 & 20 & 30 & 40 & 50\\
% \bottomrule
\end{tabular}
\vspace{\baselineskip}
\begin{tabular}{P{1.5cm}*{6}{P{6mm}}}
% \toprule
\rowcolor{Gainsboro!40}
$x_1$ & 1 & 2 & 3 & 4 & 5\\
\rowcolor{Gainsboro!80}
$y_1$ & 10 & 20 & 30 & 40 & 50\\
% \bottomrule
\end{tabular}
\end{document}
编辑——以“m”型居中
\documentclass[11pt]{article}
\usepackage{array, booktabs}
\usepackage[table, svgnames, dvipsnames]{xcolor}
\definecolor{LightCyan}{rgb}{0.88,1,1}
\definecolor{Gray}{gray}{0.85}
\newcolumntype{P}[1]{>{\centering\arraybackslash}m{#1}}
\newcolumntype{Q}[1]{>{\columncolor{Gray}\centering\arraybackslash}m{#1}}
\begin{document}
\begin{tabular}{|P{1.5cm}||*{6}{P{6mm}|}}
\hline
$x_1$ & 1 & 2 & 3 & 4 & 5\\
\hline
$y_1$ & 10 & 20 & 30 & 40 & 50\\
\hline
\end{tabular}
\vspace{\baselineskip}
\begin{tabular}{P{1.5cm}*{6}{P{6mm}}}
\toprule
$x_1$ & 1 & 2 & 3 & 4 & 5\\
$y_1$ & 10 & 20 & 30 & 40 & 50\\
\bottomrule
\end{tabular}
\vspace{\baselineskip}
\begin{tabular}{Q{1.5cm}*{6}{P{6mm}}}
% \toprule
$x_1$ & 1 & 2 & 3 & 4 & 5\\
$y_1$ & 10 & 20 & 30 & 40 & 50\\
% \bottomrule
\end{tabular}
\vspace{\baselineskip}
\begin{tabular}{P{1.5cm}*{6}{P{6mm}}}
% \toprule
\rowcolor{Gainsboro!40}
$x_1$ & 1 & 2 & 3 & 4 & 5\\
\rowcolor{Gainsboro!80}
$y_1$ & 10 & 20 & 30 & 40 & 50\\
% \bottomrule
\end{tabular}
\end{document}
答案2
一个值得考虑的“不错的”替代方案是nicematrix
包装。wc{<lenght>}
将以该宽度的列为中心。
通过定义单元格及其角落中的 Tikz 节点,该包提供了许多自定义表格的选项,这通常需要几个额外的包才能实现。
这样,代码就会更加简单和紧凑。
虽然手册中的许多例子都值得探索和观察,但在这个简单的例子中它并没有闪现出亮点。
\documentclass[11pt]{article}
\usepackage{nicematrix}
\begin{document}
\begin{NiceTabular}{|wc{1.5cm}||*{5}{wc{6mm}|}}
\hline
$x_1$ & 1 & 2 & 3 & 4 & 5\\
\hline
$y_1$ & 10 & 20 & 30 & 40 & 50\\
\hline
\end{NiceTabular}
\end{document}
(只需定义 6 列,而不是 7 列)