我想创建一个宏,将其扩展为一些参数以提供给另一个宏。这是一个非常简单的例子:
\documentclass[]{article}
\begin{document}
\newcommand{\parameters} { {2} {3} }
\[
\frac\parameters % \frac{2}{3}
\]
\end{document}
答案1
你可以使用
\expandafter\frac\parameters
问题是\frac
需要两个参数并寻找它们无需解释 token(并在搜索过程中丢弃空白)。
在你的情况下,第一个参数是\parameters
和第二个参数\]
,这显然会导致非常错误的
\frac{\parameters}{\]}
然后简化为更原始的
{\parameters\over\]}
混乱随之而来。
我们来实现一个新的命令,即
\newcommand{\FRAC}{\expandafter\frac}
因此\FRAC{2}{3}
和\FRAC\parameters
会产生相同的结果。
\documentclass{article}
\usepackage{amsmath}
\newcommand{\FRAC}{\expandafter\frac}
\newcommand{\parameters}{{2}{3}}
\begin{document}
\[
\FRAC{2}{3}=\FRAC\parameters
\]
\end{document}
这是因为
\expandafter\frac\parameters
首先被翻译成\frac{2}{3}
。另一方面,
\expandafter\frac{2}{3}
将尝试扩展{
,但无法扩展。