![混合 minted 与 lstlisting](https://linux22.com/image/319787/%E6%B7%B7%E5%90%88%20minted%20%E4%B8%8E%20lstlisting.png)
我有一份如下所示的清单:
第一个列表是正确的,使用 lstlisting。3.1
是正确的章节。
第二个列表使用 minted。不知何故它显示1
为 chapter,但实际上应该是3.2
。
这是我对列表列表的命令:
\renewcommand{\lstlistlistingname}{List of Listings}
\addcontentsline{toc}{chapter}{\listoflistingscaption}%
\listof{listing}{\listoflistingscaption}%
这是第一个代码:
\begin{lstlisting}[language=xml, frame=single, caption={"Segment of the XML input file"}, label={lst:xmlfile}]
some code
\end{lstlisting}
这是第二个:
\begin{listing}[H]
\begin{minted}{c++}
some code
\end{minted}
\caption{"Conversion functions for DirID and ID"}
\label{lst:conversion}
\end{listing}
我需要在这里进行哪些更改才能使其正确显示正确的章节编号?
答案1
您需要做的第一件事是\usepackage[chapter]{minted}
。这将设置在列表列表中minted
使用样式编号。<chapter>.<listing>
此时,两个包中的列表将具有相同的格式,但每个包都将使用自己的数字方案。它们需要共享一个通用计数器来解决这个问题。一个简单的解决方案是修改环境,listing
以便minted
它实际使用lstlisting
计数器。这依赖于etoolbox
包,它由最新版本的自动加载minted
。代码可以在minted
加载后插入序言中。
\AtBeginEnvironment{listing}{\setcounter{listing}{\value{lstlisting}}}
\AtEndEnvironment{listing}{\stepcounter{lstlisting}}