多行单元格的自动垂直对齐

多行单元格的自动垂直对齐

我有这个 MWE

\documentclass{article}
\usepackage{multirow}
\usepackage{bigstrut}
\setlength{\bigstrutjot}{2pt} % height added by \bigstrut
\usepackage{tabu}
\tabulinesep=1.5pt % ensures some offset between cell content and border
\begin{document}
\begin{tabu}{|c|c|}
\hline
bigstrut \bigstrut & \\\cline{1-1}
ordinary & \multirow{-2}{*}{Multirow} \\\hline
\shortstack{short \\ stack} & \\\cline{1-1}
ordinary & \multirow{-2}{*}{Multirow} \\\hline
ordinary & \\\cline{1-1}
$x=\int_0^\infty\frac{a}{b}$ & \multirow{-2}{*}{Multirow} \\\hline
ordinary & \\\cline{1-1}
$\displaystyle x=\int_0^\infty\frac{a}{b}$ & \multirow{-2}{*}{Multirow} \\\hline
\end{tabu}
\end{document}

这显示了一些单元格内容multirow并不在其应在位置的情况。

平均能量损失

我想很多人都熟悉这个问题,因为我见过十几种解决方法。然而,它们都需要一些微调,例如[fixup]

我找到了一个名为的包makecell,它部分满足了我的要求。但它仍然有缺陷。它不适用于多行单元格,并且与我用于背景颜色的包(必须在第一行中定义)一起使用multirow时会出现问题。colortblmultirow

multirow您对如何实现单元格的自动垂直对齐有什么想法吗?

答案1

如果可以选择替代表格包,我建议cals

calstable 中的多行对齐

\documentclass{article}
\usepackage{cals}
\usepackage{bigstrut}
\setlength{\bigstrutjot}{2pt}
\begin{document}

\newcommand\incell{%\vfil % uncomment to align middle
Multirow}

\begin{calstable}
%\alignC % uncomment to align center
\colwidths{{3cm}{3cm}}
\brow
  \cell{bigstrut \bigstrut}
  \nullcell{tlr}
\erow
\brow
  \cell{ordinary}
  \nullcell{blr}\spancontent{\incell}
\erow
\brow
  \cell{\shortstack{short \\ stack}}
  \nullcell{tlr}
\erow
\brow
  \cell{ordinary}
  \nullcell{blr}\spancontent{\incell}
\erow
\brow
  \cell{ordinary}
  \nullcell{tlr}
\erow
\brow
  \cell{$x=\int_0^\infty\frac{a}{b}$}
  \nullcell{blr}\spancontent{\incell}
\erow
  \brow
  \cell{ordinary}
  \nullcell{tlr}
\erow
\brow
  \cell{$\displaystyle x=\int_0^\infty\frac{a}{b}$}
  \nullcell{blr}\spancontent{\incell}
\erow
\end{calstable}
\end{document}

相关内容