定义带参数的宏

定义带参数的宏

newcommand可以定义自定义命令,例如\ABC。有没有办法定义带参数的命令。例如,我想要\brat{A}{B}与 相同[\![A,B]\!]

答案1

的一般形式\newcommand

\newcommand\commandname[number of arguments][value of optional argument]{code}

(大多数情况下没有可选参数,在这种情况下可以省略。)参数在 中以 等#1形式给出。#2code

要定义你的\brat命令你可以写

\newcommand\brat[2]{[\![#1,#2]\!]}

\brat{A}{B}然后,您可以通过编写 等来使用此宏\brat{A}{C}。如果您几乎总是希望第一个参数是A,那么您可以使用可选的第一个参数并定义

\newcommand\Brat[2][A]{[\![#1,#2]\!]}

此版本的宏 n 的使用方法几乎与之前完全相同,只是您不需要指定A:因此\Brat{B}产生的结果与之前相同\brat{A}{B}。例如,要将可选参数的值从 更改为AC您可以编写。这与使用第一个宏\Brat[C]{B}相同。\brat{C}{B}

答案2

在 TeX 中,我们可以通过以下方式定义带参数的宏

 \def\macro#1#2#3#4{body with #1 argument, #2 argument, #3 argument, #4 argument}

用法是:

 \macro{first}{second}{third}{four}

或者

\macro fstf

相当于\macro{f}{s}{t}{f}

还有另一种方法来声明“分隔”参数(LaTeX 不支持这种方法\newcommand),请参见(例如)TeX 简介,第 9 和 10 页。

相关内容