在命令中打印逐字命令输入

在命令中打印逐字命令输入

我想定义一个\mydef执行如下操作的命令:

\mydef{\foo{bar}}

生产

\def\foo{bar} \verb|\foo=bar|

命令:

\newcommand{\mydef}[1]{\def #1}

执行第一位,但我似乎无法在命令中逐字使用 - 我如何访问内容#1?在这种情况下,如果我可以丢弃第一个字符,我会很高兴......

答案1

您可以使用\string将命令打印为字符串,并\strip@prefix结合\meaning显示宏内容:

\documentclass{article}

\makeatletter
\newcommand*{\mydef}[2]{%
    \def#1{#2}%
    {\ttfamily\string#1=\expandafter\strip@prefix\meaning#1}%
}
\makeatother

\begin{document}

\mydef\foo{bar}

\end{document}

相关内容