我想创建一个新的环境来改变这一点:
\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 等。