如何使用 minted 包制作子列表?

如何使用 minted 包制作子列表?

我使用该minted包在文本中创建突出显示的代码列表,并且需要在一个浮动下显示多个代码片段。首先,我尝试使用包\subcaptionbox中的命令subcaption,如下所示:

\begin{lsg}{code:basic-id-transform}{Scoped identifier transformation}
    \begin{cppcode}
        // simple.hpp
        namespace foo {
                void bar(int a);
            }
    \end{cppcode}
    \subcaptionbox{Original file\label{code:basic-id-transform:orig}}{\usebox{\verbsavebox}}\hfill
    \begin{cppcode}
        // libsimple-c.h
        #ifdef __cplusplus
        #    define EXTERN       extern "C"
        #    define EXTERN_OPEN  extern "C" {
        #    define EXTERN_CLOSE }  // extern "C"
        #else
        #    define EXTERN
        #    define EXTERN_OPEN
        #    define EXTERN_CLOSE
        #endif
        EXTERN void foo_bar(int a);
    \end{cppcode}
    \subcaptionbox{Generated header\label{code:basic-id-transform:orig}}{\usebox{\verbsavebox}}\hfill
    \begin{cppcode}
        #include "libsimple-c.h"
        #include "simple.hpp"
        void foo_bar(int a) {
                (::foo::bar(a));
            }
    \end{cppcode}
    \subcaptionbox{Generated implementation\label{code:basic-id-transform:orig}}{\usebox{\verbsavebox}}\hfill
\end{lsg}

该代码正确地给出了标签,但结果如下所示: 在此处输入图片描述

但是,使用\subcaption命令会使总标题被视为子标题,因此整个浮点数不会出现在列表列表中。

问题是我在网上找到的所有解决方案都是针对该lstlisting包的。

答案1

找到了一个通过minipage环境和subcaption命令解决的解决方案。

\begin{lsg}{code:basic-id-transform}{Scoped identifier transformation}
  \begin{minipage}[b]{1\linewidth}
    \begin{cppcode}
        // simple.hpp
        namespace foo {
                void bar(int a);
            }
    \end{cppcode}
    \subcaption{Original file\label{code:basic-id-transform:orig}}
  \end{minipage}
  % ... and so on for every sub-listing ...
\end{lsg}

通过在第三个参数中给出分数值(例如\begin{minipage}[b]{0.5\linewidth}),可以将列表呈现为多列。

相关内容