我有这个 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
时会出现问题。colortbl
multirow
multirow
您对如何实现单元格的自动垂直对齐有什么想法吗?
答案1
如果可以选择替代表格包,我建议cals
:
\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}