是否可以在环境\multirow
的列声明中使用命令tabular
(由array
包裹)?
我想要获得以下结果:
通过这样做我可以实现:
\documentclass{article}
\usepackage{array,booktabs,multirow}
\begin{document}
\begin{tabular}{%
>{\centering\arraybackslash}m{3cm}% 1st column
m{2.5cm}% 2nd column
}
\toprule
text & \multirow{2}{=}[-2.5pt]{\centering$a+b$} \\
\cmidrule(r){1-1}
text & \\
\midrule
text & \multirow{2}{=}[-2.5pt]{\centering$x+y$} \\
\cmidrule(r){1-1}
text & \\
\bottomrule
\end{tabular}
\end{document}
不过,我尝试把事情稍微清理一下:
\documentclass{article}
\usepackage{array,booktabs,multirow}
\begin{document}
\begin{tabular}{%
>{\centering\arraybackslash}m{3cm}%
>{\multirow{2}{=}[-2.5pt]{\centering\arraybackslash\(}m{2.5cm}<{\)\}}% <--- added '\multirow' here
}
\toprule
text & a+b \\ % <--- Removed '\multirow' from here
\cmidrule(r){1-1}
text & \\
\midrule
text & x+y \\ % <--- Removed '\multirow' from here
\cmidrule(r){1-1}
text & \\
\bottomrule
\end{tabular}
\end{document}
第二种方法显然行不通,因为<{\)\}}
nor<{\)}}
都不起作用。
我猜\}
应该打印括号,同时}
关闭所有内容<{\)}
并留下另一个}
。
那么,是否有可能以某种方式关闭这个括号?也就是说,让它>{\multirow{2}{=}[-2.5pt]{\centering\arraybackslash\(}m{2.5cm}<{\)}}
起作用。
笔记:
我知道可以声明如下命令
\newcommand{\MR}[1]{\multirow{2}{=}[-2.5pt]{\centering\ensuremath{#1}}}
像 一样 使用\MR{a+b}
。
答案1
如果您使用我的新 LaTeX3 包,生活会变得更轻松tabularray
要制作多行或多列单元格:
\documentclass{article}
\usepackage{tabularray}
\UseTblrLibrary{booktabs}
\begin{document}
\begin{tblr}{
colspec = {Q[c,m,3cm]m{2.5cm}},
cell{odd}{2} = {r=2}{c}, % multirow
}
\toprule
text & $a+b$ \\
\cmidrule[r]{1-1}
text & \\
\midrule
text & $x+y$ \\
\cmidrule[r]{1-1}
text & \\
\bottomrule
\end{tblr}
\end{document}
更新:从版本开始2021N
,tabularray
支持修剪选项l
,r
和lr
,但你需要把它们放在里面方括号。
答案2
简化第一个 MWE 的一种方法是使用\multirowsetup
并更改其默认设置,如下所示:
\renewcommand\multirowsetup{\centering}
使用它,您的第一个 MWE 变成:
\documentclass{article}
\usepackage{array,booktabs,multirow}
\renewcommand\multirowsetup{\centering}
\begin{document}
\begin{tabular}{%
>{\centering\arraybackslash}m{3cm}% 1st column
m{2.5cm}% 2nd column
}
\toprule
text & \multirow{2}{=}[-2.5pt]{$a+b$} \\
\cmidrule(r){1-1}
text & \\
\midrule
text & \multirow{2}{=}[-2.5pt]{$x+y$} \\
\cmidrule(r){1-1}
text & \\
\bottomrule
\end{tabular}
\end{document}
其编译结果为:
编辑: 如果您想为这个特定的多行单元格创建一些快捷方式,您可以将其定义为:
\renewcommand\multirowsetup{\centering}
\newcommand{\MR}[1]{\multirow{2}{=}[-2.5pt]{$#1$}}
然后这个 MWE 写成:
\documentclass{article}
\usepackage{array,booktabs,multirow}
\renewcommand\multirowsetup{\centering}
\newcommand{\MR}[1]{\multirow{2}{=}[-2.5pt]{$#1$}}
\begin{document}
\begin{tabular}{%
>{\centering\arraybackslash}m{3cm}% 1st column
m{2.5cm}% 2nd column
}
\toprule
text & \MR{a+b} \\
\cmidrule(r){1-1}
text & \\
\midrule
text & \MR{x+y} \\
\cmidrule(r){1-1}
text & \\
\bottomrule
\end{tabular}
\end{document}
结果和以前一样。