宏来展示新定义的宏

宏来展示新定义的宏

我有以下 MWE,它接受一个参数并逐字打印。我从以下位置获取了代码回答。

\documentclass{article}
\makeatletter
\newcommand{\myverb}{%
    \begingroup
    % deactivate special characters
    \let\do\@makeother
    \dospecials
    % change '{' and '}' back to normal
    \catcode`\{=1
    \catcode`\}=2
    \@myverb%
}
\def\@myverb#1{%
    \endgroup%
    \texttt{#1}%
}
\makeatother
\begin{document}
\myverb{$\alpha$}
\end{document}

$\alpha$页面上的收益。

我想定义一个宏\showcase来打印用于文本的代码以及该代码的评估,即

\newcommand\showcase[1]{\myverb{#1} #1}
\showcase{$\alpha$}

我期望打印出来

$\alpha$ <actual-letter-alpha>

但它打印的是

<actual-letter-alpha> <actual-letter-alpha>

因为这个论点在被采纳之前就已经被扩展了\myverb(我认为)。

我应该怎么做才能让宏按照我想要的方式运行?

笔记:我想在表格或小页面中使用此宏,以便展示我定义的宏。所以我需要能够使用它,比如&在它们之间放置列分隔符,或者将它们分成两个小页面环境。

答案1

你需要\meaning类似

\documentclass{article}


\def\foo#1>{}

\newcommand\showcase[1]{%
\def\tmp{#1}%
\texttt{\expandafter\foo\meaning\tmp} #1}

\begin{document}

\showcase{$\alpha$}

\end{document}

相关内容