宏定义宏

宏定义宏

我有以下内容:

\newcommand{\makeWord}[1]{%
\newcommand{\#1}{\textrm{#1}}}

\makeWord{AdditiveGroup}
\newcommand{\AdditiveGroup}{\textrm{AdditiveGroup}}

不幸的是,我没有正确定义 makeWord 宏。我该如何解决这个问题?

答案1

\newcommand{\makeWord}[1]{%
\newcommand{\#1}{\textrm{#1}}}

\#1是两个标记\#(将排版为#),1因此作为 的第一个参数的语法错误\newcommand

尝试

\newcommand{\makeWord}[1]{%
  \expandafter\newcommand\csname#1\endcsname{\textrm{#1}}}

注意,如果用于数学,这将生成一个 mathord 标记。如果你想要生成一个像这样的运算符,则\log需要

\newcommand{\makeWord}[1]{%
  \expandafter\newcommand\csname#1\endcsname{\mathop{\mathrm{#1}}}}

或使用amsopn \DeclareMathOperator 命令。

相关内容