传递参数

传递参数

我见过一些可以传递parameters以构建模板的示例,例如\int_step_inline:您可以写入#1以表示循环的当前值。我想知道它是如何工作的,并尝试一下。

据我所知TeXbyTopic,在每次扩展中,#1都被替换为<parameter token1>并且##被替换为#这里有一个问题,###和是如何#### 替换的?)。

但我不确定当#1作为宏的参数传递时会发生什么。似乎#1只是替换了#n宏。

我有以下例子。

\def\a#1{\def\b##1{#1}}

如果我有正确的想法。\a{*#1*}展开为\def\b#1{*#1*},则会\b{test}得到*test*。 从输出来看,似乎我是对的,但我想知道我是否真的得到了正确的想法,或者有一些我忽略的额外信息。

答案1

这可能不完整:

  • 类似于<parameter text>in ,后跟数字 1--9 表示参数。以及引发错误的任何其他用#1#2例。 \def\x#1#2{...}##
    • 一个特殊情况是<parameter text>以 结尾#。例如,\def\x#1#{...}。这意味着#1由 分隔{
  • 在 中<replacement text>#1#9视为对应参数 token 并被##视为单个#。 任何其他用例都会#引发错误。
  • 在其他情况下,例如作为宏参数(\a{#1}),没有什么特殊情况发生#

因此您可以使用\def\a#1{\def\b##1{\def\c####1####{...}}}

相关内容