![如何让每列间距均匀?](https://linux22.com/image/464878/%E5%A6%82%E4%BD%95%E8%AE%A9%E6%AF%8F%E5%88%97%E9%97%B4%E8%B7%9D%E5%9D%87%E5%8C%80%EF%BC%9F.png)
最后一列 $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
中定义的列类型,可以轻松获得相等的列宽。tabularx
tabularray
- 在下面的 MWE 中,我定义页面布局使用包提供的默认页面布局 和包的
geometry
表格使用:tblr
tabularray
\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}