在图形环境中对齐多个子表中的列

在图形环境中对齐多个子表中的列

这是我的代码:

\documentclass{article}
\usepackage{booktabs,caption,subcaption}
\begin{document}

\begin{table}[h!]
\caption{Main figure}

\begin{subfigure}{\linewidth}
\caption{Table 1}
%Table 1
\begin{tabular}{|c|c|c|}
\toprule
Header 1 & Header 2 & Header 3 \\
\midrule
Blablabla & Bliblablabla & Blublasdad \\
\bottomrule
\end{tabular}
\end{subfigure}

\begin{subfigure}{\linewidth}
\caption{Table 2}
%Table 2
\begin{tabular}{|c|c|c|}
\toprule
Header 1 & Header 2 & Header 3 \\
\midrule
A & B & C\\
\bottomrule
\end{tabular}
\end{subfigure}

\end{table}

\end{document}

这给了我这个:

结果输出

表格的宽度不同。我希望两个表格中的列成对对齐(即表格 1 的“标题 3”列与表格 2 的“标题 3”列对齐),并将它们全部居中。我该怎么做?

答案1

你可以newcolumntype使用array包来制作一个centered接受width

\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}

正如所证明的表格中中心列的指定宽度(表格环境)?

我也用过calc命令的包\widthof

截屏

\documentclass{article}
\usepackage{booktabs,caption,subcaption}
\usepackage{array}
\usepackage{calc}
\newcolumntype{C}[1]{>{\centering\arraybackslash}p{#1}}
\begin{document}

\begin{table}[h!]
    \caption{Main figure}
    \begin{subfigure}{\linewidth}
        \caption{Table 1}
        %Table 1
        \begin{tabular}{|C{\widthof{Blablabla}}|C{\widthof{Bliblablabla}} |C{\widthof{Blublasdad}}|}
            \toprule
            Header 1  & Header 2     & Header 3   \\
            \midrule
            Blablabla & Bliblablabla & Blublasdad \\
            \bottomrule
        \end{tabular}
    \end{subfigure}

    \begin{subfigure}{\linewidth}
        \caption{Table 2}
        %Table 2
        \begin{tabular}{|C{\widthof{Blablabla}}|C{\widthof{Bliblablabla}} |C{\widthof{Blublasdad}}|}
            \toprule
            Header 1 & Header 2 & Header 3 \\
            \midrule
            A        & B        & C        \\
            \bottomrule
        \end{tabular}
    \end{subfigure}
\end{table}

\end{document}

最后要说的是,booktabs作者(以及本网站上的一些人)建议不要在您的tabular环境中使用垂直线 - 当然,这是个人喜好,但作为参考,请看一下为什么不在表格中使用垂直线('|')?

答案2

也许我会提前选择宽度,就像这样

在此处输入图片描述

\documentclass{article}
\usepackage{array,booktabs,caption,subcaption}
\begin{document}

\begin{table}[htp!]
\caption{Main figure}

\begin{subfigure}{\linewidth}
\centering
\caption{Table 1}
%Table 1
\begin{tabular}{|*3{>{\centering\arraybackslash}p{.25\linewidth}|}}
\toprule
Header 1 & Header 2 & Header 3 \\
\midrule
Blablabla & Bliblablabla & Blublasdad \\
\bottomrule
\end{tabular}
\end{subfigure}

\bigskip

\begin{subfigure}{\linewidth}
\centering
\caption{Table 2}
%Table 2
\begin{tabular}{|*3{>{\centering\arraybackslash}p{.25\linewidth}|}}
\toprule
Header 1 & Header 2 & Header 3 \\
\midrule
A & B & C\\
\bottomrule
\end{tabular}
\end{subfigure}

\end{table}

\end{document}

但是如果您确实想要单行条目并且宽度动态选择,那么您可以将其制作成单个表格:

在此处输入图片描述

\documentclass{article}
\usepackage{array,booktabs,caption,subcaption}
\begin{document}

\begin{table}[htp!]
\caption{Main figure}
\centering

%Table 1
\begin{tabular}{|*3{>{\centering\arraybackslash}p{.25\linewidth}|}}
\multicolumn{3}{c}{%
\makebox[0pt][c]{\parbox{\textwidth}{%
\subcaption{Table 1}
}}}\\
\toprule
Header 1 & Header 2 & Header 3 \\
\midrule
Blablabla & Bliblablabla & Blublasdad \\
\bottomrule
\multicolumn{3}{c}{%
\makebox[0pt][c]{\parbox{\textwidth}{%
\bigskip
\subcaption{Table 2}
}}}\\
\toprule
Header 1 & Header 2 & Header 3 \\
\midrule
A & B & C\\
\bottomrule
\end{tabular}


\end{table}

\end{document}

相关内容