我正在尝试列出一些代码(包铸造)在 multicol (包多色)。
示例代码:
\documentclass{article}
\usepackage{minted}
\usepackage{multicol}
\begin{document}
\begin{multicols}{2}
This is a listing inside a multicolom:
\begin{listing}
\begin{minted}{sql}
SELECT * FROM table1
\end{minted}
\caption{Some random SQL Query}
\label{lst:sql}
\end{listing}
\end{multicols}
This is a listing outside the multicolums:
\begin{listing}
\begin{minted}{sql}
SELECT * FROM table2
\end{minted}
\caption{Some other random SQL Query}
\label{lst:sql2}
\end{listing}
\end{document}
输出:
问题:
如您所见,缺少第一个列表。当不在列表环境中使用 minted 时,代码会显示出来,但没有所需的章节/标签。
如何在带有标签和章节的多列式列表中使用铸造的列表环境?
答案1
问题在于 alisting
是浮点数,就像table
或 一样figure
,而环境中不允许使用浮点数multicol
。如果您愿意手动将列表放置在您想要的位置,您可以通过删除环境listing
、使用包caption
并更改\caption
为 来实现您想要的效果\captionof
:
\documentclass{article}
\usepackage{minted, caption}
\usepackage{multicol}
\begin{document}
\begin{multicols}{2}
This is a listing inside a multicolumn:
\begin{minted}{sql}
SELECT * FROM table1
\end{minted}
\captionof{listing}{Some random SQL Query}
\label{lst:sql}
\end{multicols}
\end{document}
或者,如果您需要浮动功能,另一个选项是使用环境listing*
。但是,这会将列表设置在整个页面而不是单个列中,也意味着当读取命令时,它永远不会出现在正在排版的页面上(总是出现在后续页面上)。