我想定义一个定义其他命令的命令。在动态定义命令。但是,我无法弄清楚如何使该解决方案适应我的需求,因为我需要动态定义的函数能够接受参数。请考虑以下示例。我希望能够使用\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}