在新环境中铸造

在新环境中铸造

我尝试创建一个新的环境来使用 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}

只需使用\begin{code}{TestLabel}...\end{code} 在此处输入图片描述

答案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}

在此处输入图片描述

相关内容