我newcommand
可以定义自定义命令,例如\ABC
。有没有办法定义带参数的命令。例如,我想要\brat{A}{B}
与 相同[\![A,B]\!]
。
答案1
的一般形式\newcommand
是
\newcommand\commandname[number of arguments][value of optional argument]{code}
(大多数情况下没有可选参数,在这种情况下可以省略。)参数在 中以 等#1
形式给出。#2
code
要定义你的\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}
。例如,要将可选参数的值从 更改为A
,C
您可以编写。这与使用第一个宏\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 页。