如何使两个独立的“表格”环境具有相同的宽度?

如何使两个独立的“表格”环境具有相同的宽度?

尽管两种情况下各个单元格宽度的总和都是 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\arrayrulewidth0.4pt

您似乎隐含地想到的是特殊情况,其中\tabcolsep设置为0pt,或者等效地,,0mm0cm。比如说:

\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,第二个环境的总宽度tabular4*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}

您可以阅读有关表格tabularxLaTeX/表格 - 维基教科书

相关内容