![在图形环境中对齐多个子表中的列](https://linux22.com/image/259362/%E5%9C%A8%E5%9B%BE%E5%BD%A2%E7%8E%AF%E5%A2%83%E4%B8%AD%E5%AF%B9%E9%BD%90%E5%A4%9A%E4%B8%AA%E5%AD%90%E8%A1%A8%E4%B8%AD%E7%9A%84%E5%88%97.png)
这是我的代码:
\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}