指定其他列宽时多行单元格文本的垂直居中

指定其他列宽时多行单元格文本的垂直居中

我有几张表,想在其中同时使用两个功能:

  1. multirowcell(来自 makecell 包)用于跨多行的单元格,在特定位置的文本中插入新行,以及
  2. 为我想要文本换行的一个或多个其他列指定固定宽度(并更好地控制整个表格的宽度)。

当将这些功能一起使用时,我希望多行单元格中的文本垂直居中。

当使用默认的表格列类型时,makecell 将自动垂直居中多行单元格文本。MWE 中的表 1 说明了此行为。

如果使用允许指定列宽的列类型,即使对于表中未使用多行单元格的列,MWE 中的表 2 也显示 makecell 无法成功将文本垂直居中在多行单元格中。在此示例中,我使用了自定义列类型,但使用时也会出现同样的问题,例如p{}

当表格中另一列具有指定的宽度导致该列中的文本换行时,有没有办法帮助 makecell 垂直居中文本?

我尝试使用\Gape[][]{},但即使深度校正的负值很大,文本也不会垂直居中。\vspace{}在受影响单元格的文本上方插入 确实有效,但它需要猜测并检查每个受影响单元格的正确调整长度的近似值。不需要指定绝对长度校正的解决方案将是理想的,因为我有几张受影响的具有不同配置的表。

\documentclass{article}
\usepackage{makecell}
\usepackage{multirow}

\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}

Table 1

\begin{tabular}{|c|c|c|}
    \hline
    Column A & Column B & Column C \\
    \hline
    \multirowcell{4}{Some Somewhat\\Lengthy Text\\in a multirowcell} & Table Text & lorem ipsum dolor sit amet consectetur \\
    \cline{2-3}
    & \multirowcell{2}{A multirowcell\\More text} & adipiscing elit sed do elusmod tempur \\
    \cline{3-3}
    & & incididunt ut labore et dolore magna aliqua \\
    \cline{2-3}
    & Something & Whatever \\
    \hline
\end{tabular}

Table 2

\begin{tabular}{|c|c|C{1.2in}|}
    \hline
    Column A & Column B & Column C \\
    \hline
    \multirowcell{4}{Some Somewhat\\Lengthy Text\\in a multirowcell} & Table Text & lorem ipsum dolor sit amet consectetur \\
    \cline{2-3}
    & \multirowcell{2}{A multirowcell\\More text} & adipiscing elit sed do elusmod tempur \\
    \cline{3-3}
    & & incididunt ut labore et dolore magna aliqua \\
    \cline{2-3}
    & Something & Whatever \\
    \hline
\end{tabular}

\end{document}

没有固定列宽和具有固定列宽的表格的图示说明,说明多行单元格不会将文本垂直居中放置在某些列具有固定列宽的单元格中。

答案1

\multirow是为单行单元格设计的,因此你必须计算线,不属于。另外,添加单元格的垂直填充可能会改变等效行数。此外,您还可以使用小数调整等效行数。

以下是此案例的代码:

\begin{tabular}{|c|c|C{1.2in}|}
    \hline
    Column A & Column B & Column C \\
    \hline
    \multirowcell{7}{Some Somewhat\\Lengthy Text\\in a multirowcell} & Table Text & lorem ipsum dolor sit amet consectetur \\
    \cline{2-3}
    & \multirowcell{2}{A multirowcell\\More text} & adipiscing elit sed do elusmod tempur \\
    \cline{3-3}
    & & incididunt ut labore et dolore magna aliqua \\
    \cline{2-3}
    & Something & Whatever \\
    \hline
\end{tabular}

在此处输入图片描述

答案2

以下是您可以使用 做的{NiceTabular}事情nicematrix

\documentclass{article}
\usepackage{nicematrix}
\usepackage{array}
\newcolumntype{C}[1]{>{\centering\arraybackslash}m{#1}}

\begin{document}

\NiceMatrixOptions{cell-space-limits=1mm}


\begin{NiceTabular}{ccC{1.2in}}[hvlines]
    Column A & Column B & Column C \\
    \Block{4-1}{Some Somewhat\\Lengthy Text\\ in a multirowcell} & Table Text & lorem ipsum dolor sit amet consectetur \\
    & \Block{2-1}{A multirowcell\\More text} & adipiscing elit sed do elusmod tempur \\
    & & incididunt ut labore et dolore magna aliqua \\
    & Something & Whatever \\
\end{NiceTabular}
\end{document}
  • 在 中,您有一个用于合并单元格的{NiceTabular}命令。您可以指定\Block以及列数。

  • 该密钥hvlines绘制了区块中除外的所有规则。

上述代码的输出

相关内容