在下面的 MWE 中有两个表。两者最终应该相同。但第二个表中有一个问题 (Error: Misplaced \omit
)。\multicolumn{2}{|l|}{#1} \\ \hline
在我的新命令中不起作用。我该如何修复它?
\documentclass{article}
\usepackage{booktabs}
\usepackage{ifthen}
\newcommand{\newcol}[2]{
\ifthenelse{\equal{#2}{}}{
\multicolumn{2}{|l|}{#1} \\ \hline
}{
#1 & #2\\ \hline
}
}
\begin{document}
\begin{tabular}{|c|c|}
\hline
\multicolumn{2}{|l|}{Title} \\
\hline
x (mm) & 10\\
\hline
y (mm) & 12\\
\hline
\end{tabular}
\begin{tabular}{|c|c|}
\hline
\newcol{Title}{}
\hline
\newcol{x (mm)}{10}
\newcol{y (mm)}{12}
\end{tabular}
\end{document}
答案1
文本\ifthenelse
使 TeX 开始新的表格单元格,因此\multicolumn
来得太晚了。请使用“可扩展测试”。
\newcommand{\newcol}[2]{%
\if\relax\detokenize{#2}\relax
\multicolumn{2}{|l|}{#1} \\ \hline % empty second argument
\else
#1 & #2\\ \hline
\fi
}
看\ifx\\#1\\ 代表什么?了解有关上述测试的更多信息。