重复环境内容两次

重复环境内容两次

我正在编写一个文档,其中有许多代码块,如下所示:

\begin{align}
d = \sqrt{ (x'-x)^2 } 
\end{align}

\begin{minted}{latex}
d = \sqrt{ (x'-x)^2 }
\end{minted}

因此,第一行呈现 latex 代码,第二行显示源代码。有没有办法将整个内容包装在其自己的环境中?例如,它看起来像:

\begin{eqnexample}
d = \sqrt{ (x'-x)^2 }
\end{eqnexample}

有什么想法吗?

答案1

最简单的方法是写出你的“示例”环境的内容并读回两次:

\documentclass{article}

\usepackage{amsmath}
\usepackage{minted} % loads fancyvrb

\newenvironment{eqnexample}
 {\VerbatimOut{\jobname.tmp}}
 {\endVerbatimOut
  \inputminted{latex}{\jobname.tmp}
  \input{\jobname.tmp}}

\begin{document}

\begin{eqnexample}
\begin{align}
  d &= \sqrt{ (x'-x)^2 }
  \\
  e &= 0
\end{align}
\end{eqnexample}

\begin{eqnexample}
\begin{multline}
  d = \sqrt{ (x'-x)^2 }
  \\
  = f(x,x')
\end{multline}
\end{eqnexample}

\end{document}

在此处输入图片描述

答案2

这是使用 的简单方法fancyvrb。此方法将环境内容保存到外部文件,然后将其恢复两次。可能有一些方法可以在不使用临时外部文件的情况下执行此操作,但如果您使用,则minted您已经使用了大量临时文件。

顺便说一句,你可能想使用该upquote包来制作素数X在环境中使用直引号而不是弯引号minted

在此处输入图片描述

\documentclass{minimal}

\usepackage{amsmath}
\usepackage{minted}
%\usepackage{fancyvrb} %Already loaded by minted

\newenvironment{eqnexample}%
  {\VerbatimEnvironment
    \begin{VerbatimOut}{eqnexample.tmp}}%
  {\end{VerbatimOut}%
    \begin{align}%
    \input{eqnexample.tmp}%
    \end{align}%
    \inputminted{latex}{eqnexample.tmp}}


\begin{document}

\begin{eqnexample}
d = \sqrt{ (x'-x)^2 }
\end{eqnexample}

\end{document}

相关内容