如何编写宏?

如何编写宏?

我对 TeX 还很陌生,只是在数学 stackexchange 上学习在 MathJax 中编写。我刚刚发现我可以编写宏来更轻松地执行重复操作,但我对宏的工作方式有些困惑。

看起来\def定义一个由字符串(一系列标记)分隔的宏。因此:

\def\foo[#1]#2{The\ first\ argument\ is\ ''#1'',\ the\ second\ one\ is\ ''#2''}
\foo[hi]there

结果是:

第一个参数是“hi”,第二个参数是“t”here

如果我想要将全部“there”作为第二个参数,我会这样做:

\foo[hi]{there}

导致:

第一个参数是“hi”,第二个参数是“there”

但是有没有办法,让我可以将包含所有参数的整个部分放在括号中,而不必将最后一个参数放在括号中?例如:

\foo{[hi]there}

答案1

搞清楚了。它是通过间接层来完成的:

\def\foo#1{\foox#1\\}
\def\foox[#1]#2\\{The\ first\ argument\ is\ ''#1'',\ the\ second\ one\ is\ ''#2''}
\foo{[hi]there}

基本上,我需要指定一个终止标记。因此,\foo将使用单个标记({/}字符内的内容)进行调用,然后\foox使用终止字符进行调用\\

相关内容