在主长表的单元格中垂直居中子表

在主长表的单元格中垂直居中子表

我在尝试着垂直居中第 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环境相对于彼此垂直居中)。请注意,没有必要在指令中括住row1and 。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}

相关内容