我想创建一个命令来帮助我编写如下代码:
The \LaTeX~code is: \verb@e^{i\pi} - 1 = 0@, and the result is: $e^{i\pi} - 1 = 0$.
我想到使用一个新命令:
\newcommand{\eqn}[1]{The \LaTeX~code is: \verb@#1@, and the result is: $#1$.}
用作:
\eqn{e^{i\pi} - 1 = 0}
这是行不通的。
尝试逐字逐句地提取如下内容:
\newcommand{\eqn1}[1]{The \LaTeX~code is: #1, and the result is: $#1$.}
用作:
\eqn1{\verb@e^{i\pi} - 1 = 0@}
也不起作用。
我的问题是,有没有办法在乳胶中实现这一点?
谢谢。PS:不幸的是,下面的帖子似乎表明这是不可能的 :( 将代码(列表、逐字或其他方法)包装在新命令中
答案1
答案2
灵感来自Ulrich Schwarz 的回答,我们可以使用以下方法解决这个问题\meaning
:
\documentclass{article}
\makeatletter
\newcommand\meaningbody[1]{%
{\ttfamily
\expandafter\strip@prefix\meaning#1}%
}
\newcommand\eqn[1]{%
{\def\@foo{$#1$}The \LaTeX~code is \meaningbody\@foo, and the result is: $#1$.}%
}
\makeatother
\begin{document}
\eqn{e^{i\pi} - 1 = 0}
\end{document}
结果是:
一个潜在的问题是,输出\meaning
与输入代码并不完全相同。\pi
此示例中,后面有一个多余的空格。