如何让每列间距均匀?

如何让每列间距均匀?

最后一列 $x_3$ 的间距比其他列大。如何解决?谢谢。我希望表格中的所有 $x_1$、$x_2$ 和 $x_3$ 间距均匀。

\begin{table}[h]
\begin{tabular}{rrr|rrr|rrr|rrr|rrr|rrr}
\hline
\multicolumn{3}{c|}{$\mathbf{r}^{\prime} = [0, 0, 0]$} &   
\multicolumn{3}{c|}{$\mathbf{r}^{\prime} = [0, 0, -1]$} &   
\multicolumn{3}{c|}{$\mathbf{r}^{\prime} = [1, 0, 1]$} &   
\multicolumn{3}{c|}{$\mathbf{r}^{\prime} = [1, 1, 1] $} &   
\multicolumn{3}{c|}{$\mathbf{r}^{\prime} = [-1, -1, -1]$} \\
\hline
$x_1$ &  $x_2$ &  $x_3$ &  
$x_1$ &  $x_2$ &  $x_3$ & 
$x_1$ &  $x_2$ &  $x_3$ & 
$x_1$ &  $x_2$ &  $x_3$ & 
$x_1$ &  $x_2$ &  $x_3$ \\
\hline
$-1$ & $-1$ & $-1$ &   1    & 0    & 1    &  1    & 0    & 1    &  1    & $-1$ & $-1$ &  $-1$ & $-1$ & $-1$ \\
$-1$ & 1    & 1    &   $-1$ & $-1$ & 1    &  0    & 1    & 0    &  1    & 0    & 0    &  $-1$ & $-1$ & $-1$ \\
\hline
\end{tabular}
\end{table}

在此处输入图片描述

答案1

您可以使用一 wr列,这样它们就有指定的宽度,并且比跨越的列更宽。如果您挤压空白,它(刚好)适合article宽度(或者您可以使用\small

在此处输入图片描述

\documentclass[a4paper]{article}

\usepackage{array}
\newcolumntype{R}{>$wr{20.4pt}<$}
\begin{document}

\begin{table}
\setlength\tabcolsep{1.3pt}
\setlength\extrarowheight{2pt}
\begin{tabular}{@{}RRR|RRR|RRR|RRR|RRR@{}}
\hline
\multicolumn{3}{@{}c|}{$\mathbf{r}' {=} [0, 0, 0]$} &   
\multicolumn{3}{c|}{$\mathbf{r}' {=} [0, 0, -1]$} &   
\multicolumn{3}{c|}{$\mathbf{r}' {=} [1, 0, 1]$} &   
\multicolumn{3}{c|}{$\mathbf{r}' {=} [1, 1, 1] $} &   
\multicolumn{3}{c@{}}{$\mathbf{r}' {=} [-1, -1, -1]\!$} \\
\hline
x_1 &  x_2 &  x_3 &  
x_1 &  x_2 &  x_3 & 
x_1 &  x_2 &  x_3 & 
x_1 &  x_2 &  x_3 & 
x_1 &  x_2 &  x_3 \\
\hline
-1 & -1 & -1 &   1    & 0    & 1    &  1    & 0    & 1    &  1    & -1 & -1 &  -1 & -1 & -1 \\
-1 & 1    & 1    &   -1 & -1 & 1    &  0    & 1    & 0    &  1    & 0    & 0    &  -1 & -1 & -1 \\
\hline
\end{tabular}
\end{table}

\end{document}

答案2

像这样?

在此处输入图片描述

  • 不幸的是,所使用的\documentclass文档页面布局均不为人所知。
  • 具有 15 列的表格相当宽,因此无法容纳默认定义的文章文本块。
  • 通过使用或包X中定义的列类型,可以轻松获得相等的列宽。tabularxtabularray
  • 在下面的 MWE 中,我定义页面布局使用包提供的默认页面布局 和包的geometry表格使用:tblrtabularray
\documentclass{article}
\usepackage{geometry}
\usepackage{tabularray}

\begin{document}
    \begin{table}[ht]
\begin{tblr}{hlines, vlines,
             colspec = {*{15}{X[c, mode=math]} },
             cell{1}{1,4,7,10,13} = {c=3}{}
            }
\mathbf{r}' = [0, 0, 0]
    &   &   &   \mathbf{r}' = [0, 0, -1]
                &   &   &   \mathbf{r}' = [1, 0, 1]
                            &   &   &   \mathbf{r}' = [1, 1, 1]
                                        &   &   &    \mathbf{r}' = [-1, -1, -1] \\
x_1 & x_2 & x_3 
    & x_1 & x_2 & x_3
        & x_1 & x_2 & x_3
            & x_1 & x_2 & x_3
                & x_1 & x_2 & x_3   \\
-1 & -1 & -1 &  1 &  0 &  1 &  1 &  0 &  1 &  1 & -1 & -1 & -1 & -1 & -1 \\
-1 &  1 & 1  & -1 & -1 &  1 &  0 &  1 &  0 &  1 &  0 &  0 & -1 & -1 & -1 \\
\end{tblr}
    \end{table}
\end{document}

答案3

您的查询标题询问如何使tabular环境的所有 15 列具有相同的宽度。实际上,我认为真正需要做的就是使最后两列具有相同的宽度,以便它们 - 与第 13 列一起 - 填充相关标题的宽度,即$\mathbf{r}'=[-1,-1,-1]$

我认为修改两列的属性可能更好,原因是表格已经很宽了,实际上可能已经接近超出文本块的宽度。增加所有 15 列(而不是仅增加最后 2 列)的宽度几乎肯定会使表格更难正确适应。

以下代码和相关截图显示了如何借助包w提供的列类型计算所需的宽度array。截图显示了未调整和调整宽度的表格。请注意,两个表格的前 13 列宽度相同。

在此处输入图片描述

\documentclass{article}
\usepackage{array} % for 'w' column type and \newcolumntype macro
\usepackage{calc} % simplify calculation in TeX
\newcolumntype{R}{>{$}r<{$}} % automatic inline math mode
\newcolumntype{W}[1]{>{$}wr{#1}<{$}}
\newlength\mylen % for calculation of width of final 2 columns

\begin{document}

\begin{table}[h]
\setlength\tabcolsep{5.35pt} % default: 6pt
\setlength\extrarowheight{1.5pt} % for a less-cramped look

\begin{tabular}{@{} RRR|RRR|RRR|RRR|RRR @{}}
\hline
\multicolumn{3}{c|}{$\mathbf{r}' = [0, 0, 0]$} &   
\multicolumn{3}{c|}{$\mathbf{r}' = [0, 0,-1]$} &   
\multicolumn{3}{c|}{$\mathbf{r}' = [1, 0, 1]$} &   
\multicolumn{3}{c|}{$\mathbf{r}' = [1, 1, 1]$} &   
\multicolumn{3}{c@{}}{$\mathbf{r}'=[-1,-1,-1]$} \\
\hline
x_1 & x_2 & x_3 & x_1 & x_2 & x_3 & x_1 & x_2 & x_3 & x_1 & x_2 & x_3 & x_1 & x_2 & x_3 \\
\hline
-1 & -1 & -1 & 1 &  0 & 1 & 1 & 0 & 1 & 1 & -1 & -1 & -1 & -1 & -1 \\
-1 &  1 &  1 &-1 & -1 & 1 & 0 & 1 & 0 & 1 &  0 &  0 & -1 & -1 & -1 \\
\hline
\end{tabular}

\bigskip
% calculate the width of the final two columns
\settowidth\mylen{$\mathbf{r}'=[-1,-1,-1]$} 
\setlength\mylen{(\mylen-\widthof{$-1$}-4\tabcolsep)/2}

\begin{tabular}{@{} RRR|RRR|RRR|RRR|R *{2}{W{\mylen}} @{}}
\hline
\multicolumn{3}{c|}{$\mathbf{r}' = [0, 0, 0]$} &   
\multicolumn{3}{c|}{$\mathbf{r}' = [0, 0,-1]$} &   
\multicolumn{3}{c|}{$\mathbf{r}' = [1, 0, 1]$} &   
\multicolumn{3}{c|}{$\mathbf{r}' = [1, 1, 1]$} &   
\multicolumn{3}{c@{}}{$\mathbf{r}'=[-1,-1,-1]$} \\
\hline
x_1 & x_2 & x_3 & x_1 & x_2 & x_3 & x_1 & x_2 & x_3 & x_1 & x_2 & x_3 & x_1 & x_2 & x_3 \\
\hline
-1 & -1 & -1 & 1 &  0 & 1 & 1 & 0 & 1 & 1 & -1 & -1 & -1 & -1 & -1 \\
-1 &  1 &  1 &-1 & -1 & 1 & 0 & 1 & 0 & 1 &  0 &  0 & -1 & -1 & -1 \\
\hline
\end{tabular}
\end{table}

\end{document}

相关内容