将一个宏的参数存储到另一个宏中

将一个宏的参数存储到另一个宏中

我想创建一个宏,将其扩展为一些参数以提供给另一个宏。这是一个非常简单的例子:

\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}

将尝试扩展{,但无法扩展。

相关内容