如何在 TEX 中为 `\newcommand` 添加后缀?

如何在 TEX 中为 `\newcommand` 添加后缀?

我使用新命令定​​义了一个术语,如下所示:

\newcommand{\ourmethod}{G-MM\xspace}

现在我想为刚刚定义的术语添加后缀,例如我想使用“\ourmethod”表示 G-MM(请注意,术语后面加了一个“s”)。如何在 LATEX 中执行此操作?

答案1

我认为你应该遵循 David 的建议。但是,如果你仍然想使用xspace(或者即使你决定不使用),我建议你使用类似下面的代码定义单数和复数:

\DefineTerms{ourmethod}{G-MM}

这将创建两个宏:\ourmethod\ourmethods

在此处输入图片描述


另外,您可以定义命令,其中在方括号中提供后缀作为可选参数:

\newcommand{\ourmethod}[1][]{G-MM#1\xspace}

在此处输入图片描述


代码:使用etoolbox

\documentclass{article}
\usepackage{etoolbox}
\usepackage{xspace}

\newcommand{\DefineTerms}[2]{%
    \csdef{#1}{#2\xspace}%
    \csdef{#1s}{#2s\xspace}%
}

\DefineTerms{ourmethod}{G-MM}

\begin{document}
\verb|\ourmethod|: \ourmethod

\verb|\ourmethods|: \ourmethods
\end{document}

代碼: 沒有etoolbox

\documentclass{article}
\usepackage{xspace}

\newcommand{\DefineTerms}[2]{%
    \expandafter\newcommand\csname#1\endcsname{#2\xspace}%
    \expandafter\newcommand\csname#1s\endcsname{#2s\xspace}%
}

%\newcommand{\ourmethod}{G-MM\xspace}
\DefineTerms{ourmethod}{G-MM}

\begin{document}
\verb|\ourmethod|: \ourmethod

\verb|\ourmethods|: \ourmethods
\end{document}

代码:可选参数

\documentclass{article}
\usepackage{xspace}

\newcommand{\ourmethod}[1][]{G-MM#1\xspace}

\begin{document}
\verb|\ourmethod|: \ourmethod

\verb|\ourmethod[s]|: \ourmethod[s]
\end{document}

相关内容