在 \multirow 单元格中使用 \prevgraf

在 \multirow 单元格中使用 \prevgraf

类似这样的问题longtable 中的对齐 很常见。一种可能的解决方案是使用multirow单元格,其中带有选项tb单元格内容与单元格的顶部或底部对齐。这里的问题是设置相邻单元格中的文本行数。可以通过手动计数行来确定,但最好使用自动计数。

@David Carlisle 在编辑我关于上述问题的回答时展示了一个优雅的解决方案,他展示了endgraf宏的使用。这个解决方案工作得很好,但是,我注意到一个有点烦人的问题:它还会在单元格中插入空行:

\documentclass{scrbook}
\usepackage{multirow, xltabular}
\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\usepackage{lipsum}

\begin{document}
    \begin{xltabular}{\linewidth}{@{} l|L<{\endgraf\xdef\zzz{\the\prevgraf}}@{}c @{}}
Column 1 & Column 2     & Column 3                      \\  \hline
top      &  \lipsum[1]  & \multirow[b]{\zzz}{*}{bottom} \\  \hline
top      & \lipsum[11]  & \multirow[b]{\zzz}{*}{bottom} \\  \hline
    \end{xltabular}
\end{document}

在此处输入图片描述

有没有办法消除这个垂直空间?

答案1

LaTeX在单元格末尾X(经过p伪装)插入一个\strut。就你的情况而言,这种情况发生在段落形成之后。

您可以通过添加负垂直空间来删除​​所创建的空白行。

\documentclass{scrbook}
\usepackage{multirow, xltabular}
\usepackage{lipsum}

\newcolumntype{L}{>{\raggedright\arraybackslash}X}
\newcommand{\countlines}[1]{%
  \vspace{-\normalbaselineskip}\strut
  \endgraf
  \xdef#1{\the\prevgraf}%
}

\begin{document}

\begin{xltabular}{\linewidth}{@{} l|L<{\countlines{\zzz}}@{}c @{}}
Column 1 & Column 2    & Column 3                      \\  \hline
top      & \lipsum[1]  & \multirow[b]{\zzz}{*}{bottom} \\  \hline
top      & \lipsum[11] & \multirow[b]{\zzz}{*}{bottom} \\  \hline
\end{xltabular}

\end{document}

在此处输入图片描述

相关内容