![如何使两个独立的“表格”环境具有相同的宽度?](https://linux22.com/image/361451/%E5%A6%82%E4%BD%95%E4%BD%BF%E4%B8%A4%E4%B8%AA%E7%8B%AC%E7%AB%8B%E7%9A%84%E2%80%9C%E8%A1%A8%E6%A0%BC%E2%80%9D%E7%8E%AF%E5%A2%83%E5%85%B7%E6%9C%89%E7%9B%B8%E5%90%8C%E7%9A%84%E5%AE%BD%E5%BA%A6%EF%BC%9F.png)
尽管两种情况下各个单元格宽度的总和都是 5 厘米,但两个表格环境的宽度可能会有所不同。如何解决这个问题?
例如,这两个表的宽度不一样:
\documentclass[a4paper,12pt]{article}
\pagestyle{empty}
\usepackage{tabularx}
\begin{document}
\begin{center}
\renewcommand{\arraystretch}{1.25}
\setlength\arrayrulewidth{0.025cm}
\newcolumntype{B}{ >{\arraybackslash} m{2.500cm}}
\begin{tabular}{|B|B|} \hline
a & b \\ \hline
\end{tabular}
\end{center}
\begin{center}
\renewcommand{\arraystretch}{1.25}
\setlength\arrayrulewidth{0.025cm}
\newcolumntype{C}{ >{\centering\arraybackslash} m{1.250cm}}
\begin{tabular}{|C|C|C|C|} \hline
1 & 2 & 3 & 4 \\ \hline
\end{tabular}
\end{center}
\end{document}
答案1
您的计算似乎忽略了 (a) 插入到每个单元格左侧和右侧的“空白填充”量和 (b) 垂直线的宽度。在环境中tabular
,空白填充量由参数设置\tabcolsep
;在许多(大多数?)文档类中,的默认值为。每行的宽度由设置;其默认值通常\tabcolsep
为。6pt
\arrayrulewidth
0.4pt
您似乎隐含地想到的是特殊情况,其中\tabcolsep
设置为0pt
,或者等效地,,0mm
等0cm
。比如说:
\documentclass{article}
\usepackage{array} % for "m" column type and "\newcolumntype" macro
\setlength\tabcolsep{0mm}
\setlength\arrayrulewidth{0.25mm}
\newcolumntype{B}{ >{\centering\arraybackslash} m{25.25mm}}
\newcolumntype{C}{ >{\centering\arraybackslash} m{12.5mm}}
\begin{document}
\centering
\begin{tabular}{|B|B|} \hline
u & v \\ \hline
\end{tabular}
\bigskip
\begin{tabular}{|C|C|C|C|} \hline
u & v & w & x \\ \hline
\end{tabular}
\end{document}
观察第一张纸tabular
有 2 个单元格(每个单元格宽 25.25 毫米)和 3 条垂直线(每条 0.25 毫米宽)。第二张纸tabular
有 4 个单元格(每个单元格宽 12.5 毫米)和 5 条垂直线(每条 0.25 毫米宽)。总宽度第一个tabular
环境的总宽度为2*25.25mm+3*0.25mm=51.25mm
,第二个环境的总宽度tabular
为4*12.5mm+5*0.25mm=51.25mm
。也就是说,现在整体宽度完全相同。
当然,将的值设置\tabcolsep
为零可能是您无法接受的——在这种情况下,您必须适当调整列宽以考虑非零值\tabcolsep
。
答案2
当您使用tabularx
包时,您可以使用tabularx
允许“拉伸”表的环境。
您可以定义新的列类型如下:
\usepackage{tabularx}
\newcolumntype{C}{ >{\centering\arraybackslash}X}
\newcolumntype{B}{ >{\arraybackslash}X}
请注意,这仅在环境X
中可用。tabularx
使用说明符指定的列
X
将被拉伸以使表格达到指定的宽度,从而大大简化表格的创建。
然后您可以tabularx
通过指定表格所需的宽度将其与环境一起使用:
\begin{center}
\setlength\arrayrulewidth{0.025cm}
\begin{tabularx}{5cm}{|B|B|} \hline
a & b \\ \hline
\end{tabularx}
\end{center}
\begin{center}
\setlength\arrayrulewidth{0.025cm}
\begin{tabularx}{5cm}{|C|C|C|C|} \hline
1 & 2 & 3 & 4 \\ \hline
\end{tabularx}
\end{center}
您可以阅读有关表格tabularx
和LaTeX/表格 - 维基教科书。