将命令作为另一个命令的参数传递

将命令作为另一个命令的参数传递

今天的第二个问题:有没有办法将命令作为另一个方法的参数传递?

\newcommand\foo[1]{Foo does: `#1'}
\newcommand\bar[2]{Bar does: `#1{#2}'}

...

\bar{\foo}{xxx}

我想要的输出应该是:

Bar does: `Foo does: `xxx''

另外,有人可以向我解释一下这是什么\expandafter意思吗?

编辑:

抱歉,对于这个问题,在重读了我的代码几次之后,我注意到了错误的根源:实际上写错了#1in 。尽管如此,还是感谢大家的快速回答。\bar\#1

答案1

以下对我有用:

\documentclass{minimal}
\newcommand\Foo[1]{Foo does: `#1'}
\newcommand\BaBar[2]{BaBar does: `#1{#2}'}
\begin{document}
\BaBar{\Foo}{xxx}
\end{document}

也许你犯了一个错误\bar already defined?因为我只是复制了你的代码并更改了命令的名称\bar以避免该错误消息。

答案2

在 TeX 中没有方法,尽管你可以以在很多方面成为的方式定义宏method

考虑以下最小值,

\documentclass{article}
\begin{document}
\long\def\aPieceOfCode{%
  This is a Piece of code that I need to type out in a number of ways.
  First pick the contents from the CMS and store it in macro. Then call them through your typesetter macros and hey it can even display maths \formula\ without the use of JavaScript!
}

\def\formula{$a=b^2+23 $}
\def\displayMyCode#1{#1}

\displayMyCode{\aPieceOfCode}
\end{document}

你可以将 视为\aPieceofCode一个函数或对象。在displayMyCode宏中,你可以将其作为参数传递。

相关内容