我尝试创建一个新的环境来使用 minted。但不知怎的,它并没有真正起作用,我发现了以下两篇帖子:1. 2.
然后我复制了代码并尝试根据自己的需要进行修改。我希望能够使用\begin{code}{label}
。这是我所拥有的:
\newenvironment{code}[2]
{\VerbatimEnvironment
\minted@resetoptions
\setkeys{minted@opt}{frame=lines}% from fancyvrb
\renewcommand{\minted@proglang}[1]{#1}
\begin{figure}[htp]%% default placing
\centering
\label{#2}
\begin{VerbatimOut}{\jobname.pyg}}
{\end{VerbatimOut}
\minted@pygmentize{\minted@proglang{}}
\DeleteFile{\jobname.pyg}
\end{figure}}
\makeatother
我收到几个“FancyVerb”错误和未定义的控制序列。
编辑
基本上我想定义一个产生以下内容的新环境:
\begin{minted}
[
frame=lines,
framesep=2mm,
linenos,
label=TestLabel
]
{java}
while(true){
//Do stuff
}
\end{minted}
答案1
我认为你把事情复杂化了:
\documentclass{article}
\usepackage{minted}
\usepackage{lipsum}
\newenvironment{code}[4][htp]
{\VerbatimEnvironment
\begin{figure}[#1]
\centering
\caption{#3}\label{#4}
\begin{minted}[frame=lines]{#2}}
{\end{minted}\end{figure}}
\begin{document}
\lipsum[1]
\begin{code}{latex}{A caption}{label1}
Test of \LaTeX code
\end{code}
\lipsum[2]
\begin{code}[bp]{latex}{A caption}{label2}
Test of \LaTeX code
\end{code}
\lipsum
\end{document}
另一个版本,其中参数指的是label=
;我也改成了figure
更合适的listing
环境。
\documentclass{article}
\usepackage{minted}
\usepackage{lipsum}
\newenvironment{code}[2][htp]
{\VerbatimEnvironment
\begin{listing}[#1]
\centering
\begin{minted}[frame=lines,framesep=2mm,linenos,label=#2]{java}}
{\end{minted}\end{listing}}
\begin{document}
\lipsum[1]
\begin{code}{Code 1}
while(true){
//Do stuff
}
\end{code}
\lipsum[2]
\begin{code}[bp]{Code 2}
while(true){
//Do stuff
}
\end{code}
\lipsum
\end{document}