如何使用 minted 将两个代码片段并排放置?

如何使用 minted 将两个代码片段并排放置?

minted包裹用于代码高亮的 带有一个名为 的浮动环境listing。现在我想将这两个代码清单放在一起,但我不知道该怎么做。我尝试使用该multicol包,但两个清单的代码重叠了。

关于如何做到这一点有什么建议吗?

编辑:这是我为了方便而创建的一些小宏及其使用示例。

\newcommand{\insertminted}[2]{\inputminted[linenos=true,
                                       frame=lines,
                                       framesep=2mm,
                                       xleftmargin=2cm,
                                       xrightmargin=2cm]{#1}{#2}}


\begin{listing}[H]
  \insertminted{xml}{code_examples/user.xml}
  \insertminted{js}{code_examples/user.js}
  \caption{SomeCaption}
  \label{lst:representation_examples}
\end{listing}

这样, 的代码user.xml就位于 的代码上方user.js。我希望将代码并排放在两列中,以便进行比较。我还希望每个代码都有单独的标题。整个列表应出现在 的输出中\listoflistings

答案1

minted软件包提供了listing环境,即float。我第一次尝试将环境与自己的 放在minipages一起listingcaptions遗憾的是,这没有奏效。

相反,我使用了caption包(compatibility=false如文档中所述minted),然后将两个minted环境放在一个figure环境中(使其浮动),并使用captionof命令获取适当的标题。

截屏

\documentclass{article}
\usepackage[compatibility=false]{caption}
\usepackage{minted}


\begin{document}
\listoflistings

\vspace{2cm}

\begin{figure}[!h]
 \begin{minipage}{0.5\textwidth}
  \centering
  \begin{minted}{python}
  some code
  \end{minted}
  \captionof{listing}{Sub caption}
 \end{minipage}
 \begin{minipage}{0.5\textwidth}
  \centering
  \begin{minted}{python}
  some other code
  \end{minted}
  \captionof{listing}{Another sub caption}
 \end{minipage}
 \captionof{listing}{SomeCaption}
  \label{lst:representation_examples}
\end{figure}

\end{document}

对于任何刚接触此minted软件包的人来说,你需要python-pygments

sudo apt-get install python-pygments

pdflatex你需要

 pdflatex -shell-escape myfile.tex

两者都在文档中有详细说明。

答案2

使用 aminipage是让两个东西相邻的简单方法。以下是使用包lstlisting中的一个例子listings。您应该能够将其调整为适合minted包。

在此处输入图片描述

\documentclass[border=2pt]{standalone}
\usepackage{listings}

\begin{document}
\begin{minipage}[t]{0.45\linewidth}
\begin{lstlisting}[caption={Some XML Caption}]
  .. xml code ...
  .. xml code ...
  .. xml code ...
  .. xml code ...
  .. xml code ...
  .. xml code ...
\end{lstlisting}
\end{minipage}
%
\begin{minipage}[t]{0.45\linewidth}
\begin{lstlisting}[caption={Some Javascript Caption}]
  ... javascript code ...
  ... javascript code ...
  ... javascript code ...
\end{lstlisting}
\end{minipage}
\end{document}

相关内容