使用 minted 的新环境

使用 minted 的新环境

我想创建一个新的环境来改变这一点:

\begin{listing}
  \caption{some caption}
  \label{code:label}
  \begin{minted}[options]{language}
My code here
  \end{minted}
\end{listing}

变成这样:

\begin{mycode}{language}{some caption}{code:label}
My code here
\end{mycode}

我已经尝试过代码使用 minted 定义新环境没有成功。

编辑

这是我尝试过的:

\newenvironment{mycode}[3]{%
  \VerbatimEnvironment
  \minted@resetoptions
  \setkeys{minted@opt}{linenos,fontfamily=courier, fontsize=\scriptsize, xleftmargin=21pt}
  \begin{listing}
    \caption{#2}
    \label{#3}
    % \centering
    \begin{VerbatimOut}{\jobname.pyg}}
{%
    \end{VerbatimOut}
    \minted@pygmentize{#1}
    \DeleteFile{\jobname.pyg}
  \end{listing}}

答案1

\documentclass[12pt]{article}
\usepackage{minted}    
\makeatletter
\newenvironment{mycode}[3]
 {\VerbatimEnvironment
  \minted@resetoptions
  \setkeys{minted@opt}{frame=single}% from fancyvrb
  \renewcommand{\minted@proglang}[1]{#1}
  \begin{figure}[htp]%% default placing
    \centering
    \caption{#2}\label{#3}
      \begin{VerbatimOut}{\jobname.pyg}}
 {\end{VerbatimOut}
  \minted@pygmentize{\minted@proglang{}}
  \DeleteFile{\jobname.pyg}
  \end{figure}}
\makeatother

\begin{document}
\begin{mycode}{latex}{some caption}{code:label}
My \code here
\end{mycode}

\end{document}

在此处输入图片描述

答案2

你不需要那么复杂的代码:

\documentclass[12pt]{article}
\usepackage{minted}

\newenvironment{mycode}[4][]
 {\VerbatimEnvironment
  \begin{listing}
  \caption{#3}\label{#4}
  \begin{minted}[
    linenos,
    fontfamily=courier,
    fontsize=\scriptsize,
    xleftmargin=21pt,
    #1]{#2}}
 {\end{minted}\end{listing}}

\begin{document}

\begin{mycode}{latex}{some caption}{code:label}
My \code here
\end{mycode}

\begin{mycode}[fontsize=\large]{latex}{some caption}{code:label2}
My \code here
\end{mycode}

\end{document}

在此处输入图片描述

答案3

这是一个更容易定义环境的解决方案。除了 listings 和 minted 之外,它还要求您使用一个包 caption。

\documentclass[12pt]{article}

\usepackage{listings}
\usepackage{caption}
\usepackage[newfloat]{minted}
\newminted{python}{
    fontsize=\scriptsize,
    numbersep=8pt,
    frame=lines,
    framesep=3mm
}
\newminted{latex}{
    fontsize=\footnotesize,
    numbersep=8pt,
    xleftmargin=21pt,
    linenos,
    fontfamily=courier,
}


\begin{document}

\begin{listing}
\captionof{listing}{Example for python\label{python}}
\begin{pythoncode}
from xyz imort abc

print("Example python code")
\end{pythoncode}
\end{listing}

\begin{listing}
\captionof{listing}{Example for Latex\label{latex}}
\begin{latexcode}
\usepackage{latex}
\end{latexcode}
\end{listing}

\end{document}

例子

这样做还有一个额外的好处。例如,\SetupFloatingEnvironment{listing}{name=Source Code}您可以更改环境的显示名称。在示例中,它被称为源代码 1、源代码 2 等。

相关内容