如何重用 Latex 代码以供以后扩展?

如何重用 Latex 代码以供以后扩展?

我想创建一个命令来帮助我编写如下代码:

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

逐字吸收参数并在需要真实输出时重新扫描它:

\documentclass{article}
\usepackage{xparse}

\ExplSyntaxOn
\NewDocumentCommand{\eqn}{v}
 {
  The~\LaTeX{}~code~is:~\texttt{#1},~and~the~
  result~is:~\tl_rescan:nn { } { $#1$ }.
 }
\ExplSyntaxOff

\begin{document}

\eqn{e^{i\pi} - 1 = 0}

\end{document}

在此处输入图片描述

答案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此示例中,后面有一个多余的空格。

相关内容