在 multicol 包中使用 minted 包(multicol 包)

在 multicol 包中使用 minted 包(multicol 包)

我正在尝试列出一些代码(包铸造)在 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*。但是,这会将列表设置在整个页面而不是单个列中,也意味着当读取命令时,它永远不会出现在正在排版的页面上(总是出现在后续页面上)。

相关内容