在 newcommand 中使用多列时出现问题

在 newcommand 中使用多列时出现问题

在下面的 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\\ 代表什么?了解有关上述测试的更多信息。

相关内容