我试图通过为某些命令创建别名来使我的语法更简洁、更易读(对我来说)。其中一个命令是\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}