在 \multicolumn 别名定义中放错了 \omit

在 \multicolumn 别名定义中放错了 \omit

我试图通过为某些命令创建别名来使我的语法更简洁、更易读(对我来说)。其中一个命令是\mC生成一个multicolumn删除了左右填充的命令。调用该命令时,我收到错误misplaced \omit。有什么想法吗?

PS:有没有一种无风险的方法可以将表格重新定义为默认位于@{}表格列规范的末尾(但不在中间......)?

梅威瑟:

\documentclass{article}

\usepackage{xparse}
\usepackage{multirow}
\usepackage{makecell}
\usepackage{booktabs}

\NewDocumentCommand{\mC}{m O{c} m}{% multicolumn cell
    \multicolumn{#1}{@{}#2@{}}{#3}%
}%

\NewDocumentCommand{\lbC}{O{t} O{l} m}{% line-break cell
    \makecell[{#1}{#2}]{#3}%
}%


\begin{document}
    \begin{tabular}{@{}lll@{}}
        \lbC[b][l]{L1\\L2} & a & b\\
        \mC{2}[l]{Multi col}  & 3 \\ % causes misplaces \omit
        \multicolumn{2}{@{}l@{}}{Multi col}  & 3 \\  % works fine
    \end{tabular}

\end{document}

答案1

似乎\mC命令必须\multicolumn直接扩展,而无需解析可选参数。\newcommand带有三个强制参数的简单命令即可工作。

您可以定义mytabular它始终添加@{}在开头和结尾,但是在添加\multicolumn命令时您仍然必须记住它。

\documentclass{article}
\newcommand\mC[3]{\multicolumn{#1}{@{}#2@{}}{#3}}%
\newenvironment{mytabular}[1]{%
  \begin{tabular}{@{}#1@{}}%
}{%
  \end{tabular}%
}
\begin{document}
    \begin{mytabular}{lll}
      \mC{2}{l}{Multirow}  & 3 \\
      \multicolumn{2}{@{}l@{}}{Multirow}  & 3 \\
    \end{mytabular}
\end{document}

相关内容