当我使用垂直对齐方式(例如“m”、“b”或“p”)时,如何在表格中居中对齐?

当我使用垂直对齐方式(例如“m”、“b”或“p”)时,如何在表格中居中对齐?

我希望每个单元格的宽度都像代码中一样指定,因此我使用垂直对齐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 节点,该包提供了许多自定义表格的选项,这通常需要几个额外的包才能实现。

这样,代码就会更加简单和紧凑。

虽然手册中的许多例子都值得探索和观察,但在这个简单的例子中它并没有闪现出亮点。

A

\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 列)

相关内容