显示和执行代码(数学公式)的命令

显示和执行代码(数学公式)的命令

如同显示符号及其命令的新命令我想要一个命令来显示和执行代码。代码应该与 listings 包一起显示。

例如

\documentclass{scrartcl}
\usepackage{amsmath,listings}
\newcommand*{\codeExample}[1]{Code: \lstinline!\string{#1}! yields #1}
\begin{document}
  \codeExample{$\lVert a\rVert$}
\end{document}

最好的情况下应该显示$\lVert a \rVert$为逐字(\lstinline!...!)代码,然后显示呈现的数学代码。这样的事情可能吗?上面的代码产生了几个错误。我想我错过了一些避免#1被标记化的东西?

答案1

您可以xparse对此使用逐字参数。

\documentclass{scrartcl}
\usepackage{amsmath,xparse}
\NewDocumentCommand\codeExample{v}{%
    Code: \texttt{#1} yields \scantokens{#1\noexpand}%
}
\begin{document}
  \codeExample{$\lVert a\rVert$}
\end{document}

在此处输入图片描述

答案2

由于\scantokens很难正确使用,我建议使用可以expl3解决所有陷阱的实现。总而言之,这与@HenriMenke 的回答,但更加稳健:

\documentclass{scrartcl}
\usepackage{amsmath,xparse}
\ExplSyntaxOn
\NewDocumentCommand\codeExample{v}
  {
    Code:~\texttt{#1}~yields~\tl_rescan:nn {} {#1}
  }
\ExplSyntaxOff
\begin{document}
  \codeExample{$\lVert a\rVert$}
\end{document}

在此处输入图片描述

相关内容