有没有办法定义一个 LaTeX 命令,其中参数构成命令的一部分,并在命令定义的文本内扩展?
例如,这是一个 MNWE(最小非工作示例——它不起作用,这是问题的基础):
\newcommand{\firstExclamation}{Yesiree!}
\newcommand{\secondExclamation}{No way!}
\newcommand{\firstExplanation}{You are our favorite customer.}
\newcommand{\secondExplanation}{We're all out of that product.}
\newcommand{\usesMyCommands}[1]{I said, ``\#1Exclamation \#1Explanation"}
然后\usesMyCommands{first}
应该扩展为“是的!你是我们最喜欢的顾客。”,同时\usesMyCommands{second}
应该扩展为“没办法!我们已经没有那个产品了。”
这个问题并且它的答案似乎非常相关,这个,但经过一些实验,我还没有弄清楚如何将他们的经验应用到我的案例中。这些问题是关于如何在命令中定义命令,我想使用命令中又包含命令。也许我只是没看到——也许答案就在那些答案中,只是我没有意识到。
我确信有一种方法可以在原始 TeX 中实现这一点。我希望不必陷入 TeX 沼泽。我尊重那些经常这样做的人。我也看过这,这, 和这,但希望我不需要理解它们。:-)
答案1
\documentclass{article}
\usepackage{amsmath}
\begin{document}
\newcommand{\firstExclamation}{Yesiree!}
\newcommand{\secondExclamation}{No way!}
\newcommand{\firstExplanation}{You are our favorite customer.}
\newcommand{\secondExplanation}{We're all out of that product.}
\newcommand{\usesMyCommands}[1]{I said, ``\csname #1Exclamation\endcsname\ \csname#1Explanation\endcsname"}
\usesMyCommands{first}, \usesMyCommands{second}
\end{document}