如何定义具有特定宽度并居中的多列?

如何定义具有特定宽度并居中的多列?

我想定义多列(使用*{}{}),具有特定宽度(使用m{})并居中(使用>{\centering})。但是,我无法将这三个结合起来。下面的 MWE 只能将第一列居中:

\documentclass{article}
\usepackage{amsmath,array}
\begin{document}

\begin{table}
    \centering
    \begin{tabular}{ccc|>{\centering}*{6}{m{0.8cm}}}
        \hline
        i & t & k & $D_{im1}$ & $D_{im2}$ & $D_{im3}$ & $D_{ir1}$ & $D_{ir2}$ & $D_{ir3}$ \\ 
        \hline
        1 & 1 & $m$ & 0.5 & 0 & 0 & 0 & 0 & 0 \\ 
        1 & 2 & $m$ & 0 & 0.5 & 0 & 0 & 0 & 0 \\ 
        1 & 3 & $r$ & 0 & 0 & 0 & 0 & 0 & 0.5 \\ 
        2 & 1 & $r$ & 0 & 0 & 0 & 0.5 & 0 & 0 \\ 
        2 & 2 & $r$ & 0 & 0 & 0 & 0 & 0.5 & 0 \\ 
        2 & 3 & $m$ & 0 & 0 & 0.5 & 0 & 0 & 0 \\ 
        \hline
    \end{tabular}   
\end{table}

\end{document}

在此处输入图片描述

如果我使用*{6}{>{\centering}m{0.8cm}}(正如我最初尝试的那样),它就不会编译。

答案1

我建议使用该\newcolumntype功能并为此定义一个新的列类型M

直接使用>{...}...也是可能的,但有时容易出错,特别是当出现许多专门的列类型时。

\begin{tabular}{*{6}M{0.8cm}}

M然而要容易得多(当然,在定义之后)

S应使用中的列类型设置十进制值siunitx,但这是另一个问题,本文不作解答。

\documentclass{article}
\usepackage{amsmath}
\usepackage{array}

\newcolumntype{M}[1]{>{\centering\arraybackslash}m{#1}}
\begin{document}

\begin{table}
    \centering
    \begin{tabular}{ccc|*{6}{M{0.8cm}}}
%    \begin{tabular}{ccc|*{6}{>{\centering\arraybackslash}m{0.8cm}}} % Alternative...
        \hline
        i & t & k & $D_{im1}$ & $D_{im2}$ & $D_{im3}$ & $D_{ir1}$ & $D_{ir2}$ & $D_{ir3}$ \\ 
        \hline
        1 & 1 & $m$ & 0.5 & 0 & 0 & 0 & 0 & 0 \\ 
        1 & 2 & $m$ & 0 & 0.5 & 0 & 0 & 0 & 0 \\ 
        1 & 3 & $r$ & 0 & 0 & 0 & 0 & 0 & 0.5 \\ 
        2 & 1 & $r$ & 0 & 0 & 0 & 0.5 & 0 & 0 \\ 
        2 & 2 & $r$ & 0 & 0 & 0 & 0 & 0.5 & 0 \\ 
        2 & 3 & $m$ & 0 & 0 & 0.5 & 0 & 0 & 0 \\ 
        \hline
    \end{tabular}   
\end{table}

\end{document}

在此处输入图片描述

相关内容