在 tabularx 中跨多行垂直居中单元格

在 tabularx 中跨多行垂直居中单元格

考虑这个例子:

\documentclass{report}
\usepackage{tabularx}
\usepackage{lipsum}
\usepackage{multirow}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\begin{document}
\begin{tabularx}{0.5\linewidth}{llX}
  \multirow{2}{*}{A} & B & \lipsum[1][1-2] \\
                     & C & \lipsum[2][1-3]\\
\end{tabularx}
\end{document}

输出为

在此处输入图片描述

我用过tabularx X 列类型中的垂直对齐将单元格垂直居中。

但是,我对“A”的居中方式不满意。它使用multirow。如何将“A”垂直居中在表格中间?

避免使用的解决方案multirow也被接受。

答案1

正如 Ulrike 在评论中所说,为了避免手动调整,嵌套tabular可能是一种解决方案。

我会在主窗口中放置一列适当宽度的tabular列。mtabular

我添加这些线条只是为了显示“A”垂直居中。

\documentclass{report}
\usepackage{tabularx}
\usepackage{array}
\usepackage{lipsum}
\begin{document}
\noindent\begin{tabular}{|ll}
\hline
  A & 
    \begin{tabular}{@{}lm{.352\linewidth}@{}}
        B & \lipsum[1][1-2]\\
        C & \lipsum[2][1-3]\\
    \end{tabular}\\
    \hline
\end{tabular}

\vspace{4ex}\noindent\begin{tabularx}{.5\linewidth}{|llX}
    \hline
    A & B & Just for benchmark\\
    \hline
\end{tabularx}
\end{document}

在此处输入图片描述

答案2

minipage以下是使用 a和 a 的可能解决方案tabularx

\documentclass{report}
\usepackage{tabularx}
\usepackage{lipsum}
\usepackage{multirow}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\usepackage{calc}

\begin{document}

\begin{minipage}{2em}
A
\end{minipage}%
\begin{tabularx}{0.5\linewidth-2em}{lX}
   B & \lipsum[1][1-2]  \\
   C & \lipsum[2][1-3]\\
\end{tabularx}

\end{document}

在此处输入图片描述

答案3

在这种情况下,您可以使用 1 行多列,因为 m 列的基线就在那里。在其他情况下,您必须使用文档中描述的 vmode 选项。在我看来,虽然多列在 1 行单元格中工作正常,但在我看来,在 m 列和 p 列中工作相当麻烦,我很少使用它。

\documentclass{report}
\usepackage{tabularx}
\usepackage{lipsum}
\usepackage{multirow}
\begin{document}
% with X as p-column 5 works:
\begin{tabularx}{0.5\linewidth}{llX}
  \multirow{5}{*}{A} & B & \lipsum[1][1-2] \\
                     & C & \lipsum[2][1-3]\\
\end{tabularx}

%X as m-column:
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\begin{tabularx}{0.5\linewidth}{llX}
  \multirow{1}{*}{A} & B & \lipsum[1][1-2] \\
                     & C & \lipsum[2][1-3]\\
\end{tabularx}
\end{document}

在此处输入图片描述

要使 A 位于两个单元格的中心,请使用值 8.5 或 9(即第一个单元格基线下方的行数)。

\documentclass{report}
\usepackage{tabularx}
\usepackage{lipsum}
\usepackage{multirow}
\renewcommand{\tabularxcolumn}[1]{m{#1}}
\begin{document}
\begin{tabularx}{0.5\linewidth}{llX}
  \multirow{9}{*}{A} & B & \lipsum[1][1-2] \\
                     & C & \lipsum[2][1-3]\\
\end{tabularx}
\end{document}

在此处输入图片描述

相关内容