使用参数定义其他命令的命令

使用参数定义其他命令的命令

我想定义一个定义其他命令的命令。在动态定义命令。但是,我无法弄清楚如何使该解决方案适应我的需求,因为我需要动态定义的函数能够接受参数。请考虑以下示例。我希望能够使用\definecommand来动态定义\greetp\greete。下面给出了我尝试的解决方案,但注释掉了(我在不确定该怎么做的地方使用了问号)。如果可能的话,我还希望我的动态定义的命令能够接受可选参数。

\documentclass{article}

\newcommand{\greetp}[1]{hello, #1.}
\newcommand{\greete}[1]{Hello, #1!}

%\newcommand{\definecommand}[2]
%{
%    \expandafter\def\csname#1p\endcsname{#2, ?.}
%    \expandafter\def\csname#1e\endcsname{#2, ?!}
%}
%\definecommand{greet}{Hello}

\begin{document}

\greetp{world}
\greete{world}

\end{document}

答案1

您快完成了。您需要使用“##”语法来引用嵌套参数:

\documentclass{article}

\newcommand\definecommand[2]{%%
  \expandafter\def\csname#1p\endcsname##1{#2$\rightarrow$##1}%%
  \expandafter\def\csname#1e\endcsname##1{#2$\leftarrow$##1}%%
}

\definecommand{greet}{Hello}
\pagestyle{empty}
\begin{document}

\greetp{A}

\greete{B}

\end{document}

在此处输入图片描述

相关内容