你能在 \def 中使用两种类型的分隔符吗?

你能在 \def 中使用两种类型的分隔符吗?

在此邮政中提到,可以使用任何字符作为分隔符def。是否可以用两种类型的分隔符来定义函数?

具体来说,我希望定义一个类似于\alertbeamer 的东西,但它会隐藏文本而不是显示文本。我的天真猜测是:

\def\hide<#1> {#2}{\color<#1>{\usebeamercolor{hidden text}} #2}

其中hidden text是预定义的难以看见的颜色的 beamercolor。第一个参数由尖括号给出,第二个参数由括号给出。然而,编译时会出现错误:

\hide 定义中的参数数量非法

编辑:我原来的版本语法错误。我应该写成,

\def\hide<#1> {#2}{\color<#1>{black}{\usebeamercolor[fg]{hidden text}{#2}}}

其中黑色是一个无害的占位符,它被覆盖\usebeamercolor

答案1

\def\hide<#1> {#2}

<将定义一个由和分隔的一个参数的宏,>space但替换文本使用#2因此出现错误。

您没有标记{}“正常”论点,因此

\def\hide<#1>#2{\color<#1>{black}{\usebeamercolor[fg]{hidden text}{#2}}}

注意后面没有空格>,并且没有{}

相关内容