这个问题是关于自定义使用 minted 包生成的列表格式。具体来说,我想复制通过 tocloft 生成的数字格式:
尽管与以下两个问题相关:
(1)格式化 \listoftables 和 \listofalgorithms;
(2)定制由 \lstlistoflistings 生成的列表列表?,
我无法复制 minted 中 list of listings 的图表列表格式。这个问题与这两个例子不同,因为 minted 使用 float 包来创建 listings 列表,而上述两个问题分别涉及 algorithm 和 listing 包。
接下来尝试产生类似的结果。
\documentclass{report}
\usepackage{minted}
\usepackage[titles]{tocloft}
\makeatletter
\begingroup
\let\newcounter\@gobble
\let\setcounter\@gobbletwo
\globaldefs\@ne
\let\c@loadepth\@ne
\newlistof{listings}{lol}{\listoflistingscaption}
\endgroup
\let\l@listings\l@listing
\makeatother
\renewcommand{\cftfigpresnum}{Figure }
\cftsetindents{fig}{0em}{5em}
\renewcommand{\listoflistingscaption}{List of Listings}
\renewcommand{\cftlistingspresnum}{Listing }
\cftsetindents{listings}{0em}{5em}
\begin{document}
\listoffigures
\listoflistings
\clearpage
A minted environment:
\begin{listing}
\begin{minted}{java}
// Java class
\end{minted}
\caption{A Java Class.}
\end{listing}
A Figure:
\begin{figure}[h]
\centering
\rule{1cm}{1cm} \caption{A Figure}
\end{figure}
\end{document}
这种方法得到的列表并不令人满意:
任何建议将不胜感激。
答案1
minted.sty
我认为,如果您使用选项加载并使用中描述的newfloat
界面,效果会更好。代码:tocloft.sty
newfloat.pdf
\documentclass{article}
\usepackage[titles]{tocloft}
\newlistof{listing}{lol}{List of Listings}
\usepackage[newfloat]{minted}
\usepackage{caption}
\newenvironment{code}{\captionsetup{type=listing}}{}
\SetupFloatingEnvironment{listing}{%
name={Listing},
fileext=lol}
\renewcommand{\cftfigpresnum}{Figure~}
\setlength{\cftfigindent}{0pt}
\setlength{\cftfignumwidth}{2cm}
\renewcommand{\cftlistingpresnum}{Listing~}
\setlength{\cftlistingnumwidth}{2cm}
\begin{document}
\listoffigures
\listoflistings
\begin{listing}
\caption{A Java Class}
\begin{minted}{java}
// Java class
\end{minted}
\end{listing}
Reference to \ref{code:c-code}.
\begin{code}
\captionof{listing}{My C-Code}
\label{code:c-code}
\begin{minted}{c}
int main() {
printf("hello, world");
return 0;
}
\end{minted}
\end{code}
\begin{figure}[h]
\centering
\rule{1cm}{1cm} \caption{A Figure}
\end{figure}
\end{document}