混合 minted 与 lstlisting

混合 minted 与 lstlisting

我有一份如下所示的清单:

在此处输入图片描述

第一个列表是正确的,使用 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}}

相关内容