考慮以下 MWE:
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2][]{%
& something & #2 & #1 \\
}
\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}
\end{document}
它產生的輸出類似:
something 3
4
為什麼放置4
在新行的開頭而不是前一行的結尾?我該如何修復它?
我已經看到將\\
表格而不是巨集放在裡面可以使事情正常進行:
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2][]{%
& something & #2 & #1
}
\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}\\
\end{tabular}
\end{document}
然而這不是我想要的。我正在定義一個在幕後使用的新環境tabular
,但我不希望其介面依賴於放置//
,並且&
明確地,我希望它們隱藏在巨集內。
答案1
宏\macro
(原文如此!)被定義為具有可選參數。如果缺少此功能,則呼叫與下一個表格行的數字\macro{3}{4}
相同。\macro[]{3}
4
「錯誤」用法中的列移位清晰可見。3
位於第四列,而不是要求的第三列。
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2][]{%
& something & #2 & #1 \\
}
\begin{document}
Does not work
\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}
Works
\begin{tabular}{lccc}
\macro[3]{4}
\end{tabular}
\end{document}
答案2
如果您想要不帶可選參數的巨集:
\documentclass[a4paper,10pt]{article}
\newcommand{\macro}[2]{% notice the lack of the second brackets here
& something & #2 & #1 \\
}
\begin{document}
\begin{tabular}{lccc}
\macro{3}{4}
\end{tabular}
\end{document}