可选参数打破多列

可选参数打破多列

如果您使用命令将多行附加到表格,则如果该命令具有可选参数,它将停止工作。即使没有这些参数,它也可以工作:

\documentclass{standalone}
\newcommand{\mwe}[2][1]{ % remove [1]
    \multicolumn{2}{l}{text}
}
\begin{document}
    \begin{tabular}{ll}
        \mwe[1]{1} % [1]->{1}
    \end{tabular}
\end{document}  

(最小工作示例,根据评论更改后即可工作)

错误:

Misplaced \omit

答案1

这是一个已知问题:\multicolumn必须是单元格中的第一个对象(扩展宏之后),但带有可选参数的命令会在它之前放置一些内容。

使用xparse

\documentclass{standalone}
\usepackage{xparse}

\NewExpandableDocumentCommand{\mwe}{O{1}m}{%
    \multicolumn{2}{l}{text}%
}

\begin{document}
    \begin{tabular}{ll}
        \mwe[1]{1} % [1]->{1}
    \end{tabular}
\end{document}

只要参数列表以m(强制参数)结尾,该命令就是完全可扩展的。

相关内容