考虑这个例子:
\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
列。m
tabular
我添加这些线条只是为了显示“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}