我在尝试着垂直居中第 2 列单元格中的子表格:
如您所见,包含 a1、a2 的子表格垂直居中。下面的单元格的情况类似。
我想保留结构表格第 2 列的每个单元格。
我尝试过以下代码,但我不知道如何进展:
\documentclass{article}
\usepackage{multirow}
\usepackage{longtable}
\begin{document}
\begin{longtable}{|c|c|c|}
\caption{Your table caption} \label{tab:my_label} \\
\hline
header 1 & header 2 & header 3 \\
\hline
\endhead
\multirow{3}{*}{row1} & a1 & b1 \\
& a2 & b2 \\
& & b3 \\
\hline
\multirow{3}{*}{row2} & a3 & b4 \\
& a4 & b5 \\
& & b6 \\
\hline
\end{longtable}
\end{document}
提前致谢。
答案1
在这种情况下,包multirow
不是必需的。您可以嵌套tabular
环境并轻松控制单元格之间的对齐,例如顶部、中间和底部。
\documentclass{article}
\usepackage{longtable}
\newcommand\TB[2][c]{%
\begin{tabular}[#1]{@{}c@{}}#2\end{tabular}}
\renewcommand*{\arraystretch}{1.15}
\begin{document}
\begin{longtable}{|c|c|c|}
\caption{Your table caption} \label{tab:my_label} \\
\hline
header 1 & header 2 & header 3 \\
\hline
\endhead
row1 & \TB{a1\\a2} & \TB{b1\\b2\\b3} \\
\hline
row2 & a3 & \TB[t]{b4\\b5} \\
\hline
row3 & a4 & \TB[b]{b6\\b7} \\
\hline
\end{longtable}
\end{document}
答案2
你在环境中输入数据的方式longtable
,LaTeX“知道”单个细胞-- 如果它们是指令的参数,则将它们向下(或向上)移动\multirow
。默认情况下,LaTeX 会不知道夹在指令之间的垂直排列的单元格\hline
应该形成一个“子表”。
如果您希望 LaTeX 对子表而不是单元格进行操作,则需要自己提供关键信息。在下面的代码中,这是通过subtab
指令完成的(在测试文档的序言中以tabular
环境的形式定义;默认情况下,相邻tabular
环境相对于彼此垂直居中)。请注意,没有必要在指令中括住row1
and 。row2
\subtab
\documentclass{article} % or some other suitable document class
\usepackage{array}
\newcommand\subtab[1]{\begin{tabular}{@{}c@{}} #1 \end{tabular}}
\begin{document}
\begin{tabular}{|c|c|c|}
\hline
header 1 & header 2 & header 3 \\
\hline
row1 & \subtab{a1\\a2} & \subtab{b1\\b2\\b3} \\
\hline
row2 & \subtab{a3\\a4} & \subtab{b4\\b5\\b6} \\
\hline
\end{tabular}
\end{document}