我想创建垂直和水平对齐且包含多行和多列的表格。
我使用了下面的脚本。
\begin{table}[!h]
\centering
\caption{My caption}
\begin{tabular}{|>{\centering\arraybackslash}m{1.5cm}|>{\centering\arraybackslash}m{1.5cm}|>{\centering\arraybackslash}m{1.5cm}|>{\centering\arraybackslash}m{1.5cm}|>{\centering\arraybackslash}m{1.5cm}|>{\centering\arraybackslash}m{1.5cm}|>{\centering\arraybackslash}m{1.5cm}|}
\hline
\multirow{2}{*}{(\%)} & \multicolumn{2}{c|}{A} & \multicolumn{2}{c|}{B} & \multicolumn{2}{c|}{C}\\[25pt] \cline{2-7}
& a & b & c & d & e & f \\[25pt] \hline
1 & a1 & b1 & c1 & d1 & e1 & f1 \\[25pt] \hline
2 & a2 & b2 & c2 & d2 & e2 & f2 \\[25pt] \hline
3 & a3 & b3 & c3 & d3 & e3 & f3 \\[25pt] \hline
4 & a4 & b4 & c4 & d4 & e4 & f4 \\[25pt] \hline
5 & a5 & b5 & c5 & d5 & e5 & f5 \\[25pt] \hline
\end{tabular}\end{table}
它创建下表。
多行多列的行没有对齐。
并且最后一行也没有对齐。
有谁知道这个问题吗?
谢谢。
答案1
我提出了一个远非完美的解决方案,基于该cellspace
软件包,它允许您使用以字母为前缀的 sêcifier S
(或者C
如果您使用siunitx
)定义列中单元格顶部和底部的最小垂直间距。不幸的是,由于某种原因,这个简单的解决方案不适用于第一列,所以我不得不使用基于 的解决方法makecell
:
\documentclass{article}
\usepackage{multirow}
\usepackage{array, caption, makecell}
\usepackage{cellspace}
\setlength{\cellspacetoplimit}{19pt}
\setlength{\cellspacebottomlimit}{16pt}
\begin{document}
\begin{table}[!h]
\centering
\caption{My caption}
\begin{tabular}{|>{\centering\arraybackslash}m{1.5cm}|>{\centering\arraybackslash}S{m{1.5cm}}|*{6}{>{\centering\arraybackslash}S{m{1.5cm}}|}}
\hline
\multirow{4.2}{*}{(\%)} & \multicolumn{2}{Sc|}{A} & \multicolumn{2}{Sc|}{B} & \multicolumn{2}{Sc|}{C}\\
\cline{2-7}
& a & b & c & d & e & f \\
\hline
\makecell{\\1} & a1 & b1 & c1 & d1 & e1 & f1 \\
\hline
\makecell{\\2} & a2 & b2 & c2 & d2 & e2 & f2 \\
\hline
\makecell{\\3} & a3 & b3 & c3 & d3 & e3 & f3 \\
\hline
\makecell{\\4} & a4 & b4 & c4 & d4 & e4 & f4 \\
\hline
\makecell{\\5} & a5 & b5 & c5 & d5 & e5 & f5 \\
\hline
\end{tabular}
\end{table}
\end{document}
答案2
可以使用\begin{tabular}[ c | c ]
或使单元格水平对齐。通过在序言中\multicolumn{2}{c}
应用和可在表格中生成垂直对齐的文本。\usepackage{array}
\begin{tabular}[ m{5em} | m{5em} ]
如果您想使单元格垂直和水平对齐,则应>{\centering\arraybackslash}
在单元格格式前面包含。
以下是一个例子:
\begin{table}[h!]
\renewcommand{\arraystretch}{1}
\centering
\caption{My caption}
\begin{tabular}{|m{1.5cm}|>{\centering\arraybackslash}m{1.5cm}|>{\centering\arraybackslash}m{1.5cm}|m{1.5cm}|m{1.5cm}|m{1.5cm}|m{1.5cm}|}
\hline
\multirow{2}{1.5cm}{(\%)} & \multicolumn{2}{c|}{A} & \multicolumn{2}{c|}{B} & \multicolumn{2}{c|}{C}\\ \cline{2-7}
& a & abra cadabra & c & d & e & f \\ \hline
1 & a1 & abra cadabra & c1 & d1 & e1 & f1 \\ \hline
2 & a2 & abra cadabra & c2 & d2 & e2 & f2 \\ \hline
3 & a3 & abra cadabra & c3 & d3 & e3 & f3 \\ \hline
4 & a4 & abra cadabra & c4 & d4 & e4 & f4 \\ \hline
5 & a5 & abra cadabra & c5 & d5 & e5 & f5 \\ \hline
\end{tabular}
\renewcommand{\arraystretch}{1}
\end{table}
注意\renewcommand{\arraystretch}{1}
表格代码中的第二行和倒数第二行,如果增加数字,行与行之间的间距也会增大,比如下图就是 的结果,\renewcommand{\arraystretch}{3}
倒数第二行则恢复为默认值 1。