我正在编写一个文档,其中有许多代码块,如下所示:
\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}