表格列声明中的多行

表格列声明中的多行

是否可以在环境\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}

在此处输入图片描述

更新:从版本开始2021Ntabularray支持修剪选项lrlr,但你需要把它们放在里面方括号

答案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}

结果和以前一样。

相关内容