我使用该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}
),可以将列表呈现为多列。