宏的范围是否仅限于调用它的表格单元格?

宏的范围是否仅限于调用它的表格单元格?

如何重用tabular环境的单元格分隔符(通常是 & 符号)来分隔宏参数?

就像这样(不幸的是,它不起作用):

\def\mymacro#1&{#1}

...

\begin{tabular}
Hello & \mymacro out & there \\
\end{tabular}

\mymacro适用于出去

在这种特殊情况下,我宁愿不使用花括号来限定参数值。

另外,我应该提到空格也不起作用,因为参数值中也可能有空格。

答案1

宏扩展与表扫描交互的具体规则有些神秘,但在这种情况下,您可以这样做:

在此处输入图片描述

\documentclass{article}


\begin{document}

或者即使不是单元格中的第一个标记也能起作用的版本。

在此处输入图片描述

\def\mymacro#1&{\fbox{#1\unskip}&}


\documentclass{article}


\begin{document}

\def\mymacro{\relax\mymacrox}
\def\mymacrox#1\unskip{\fbox{#1\unskip}}

\begin{tabular}{ccc}
Hello &aaa \mymacro out & there \\
Hello &\mymacro out & there \\
\end{tabular}

\end{document}

\begin{tabular}{ccc}
Hello & \mymacro out & there \\
\end{tabular}

\end{document}

相关内容