将乳胶突出显示的代码列表转换为图像

将乳胶突出显示的代码列表转换为图像

有人知道我如何向期刊提交包含源代码突出显示的论文吗?minted https://github.com/gpoore/minted? 我真的很喜欢突出显示并且不想回到,但是我有点怀疑期刊编辑是否会在他们的 python 安装中安装lstlisting最新的 Tex Live 以及安装。pygments

有没有办法将minted代码转换listings为 svgs 并将它们放在 latex 文档中?

答案1

按照@Johannes_B建议,我为每个代码清单创建了一个单独的 tex 文件,然后将其编译为 pdf 并用作原始文档中的图表。我使用文档类独立为每个代码清单创建了一个单独的 pdf 文件。

\documentclass[varwidth=6cm, border={0.5cm 0.1cm 0.1cm 0.1cm}]{standalone}
\usepackage{minted}
\setminted[python]{breaklines, linenos, frame=lines, framesep=2mm, fontsize=\footnotesize, numbersep=5pt}
\begin{document}
\begin{minted}{python}
cool = python.code()
\end{minted}
\end{document}

答案2

处于相同的情况并且有许多代码清单,我不想为每个清单创建一个单独的 tex 文件。我发现,通过minted在下面的第 4 行将环境声明为“独立环境”,您可以拥有多个在生成的 pdf 中获取单独页面的清单:

\documentclass[varwidth=6cm, border={0.5cm 0.1cm 0.1cm 0.1cm}]{standalone}
\usepackage{minted}
\setminted[python]{breaklines, linenos, frame=lines, framesep=2mm, fontsize=\footnotesize, numbersep=5pt}
\standaloneenv{minted}
\begin{document}

\begin{minted}{python}
cool = python.code()
\end{minted}

\begin{minted}{python}
more_cool = python.code()
\end{minted}

% Many more minted blocks go here

\end{document}

使用 nicepdftk程序我们可以将其拆分成每页一个 pdf:

$ pdftk document-name.pdf burst

这为我们提供了pg_NNNN.pdf以 NNNN 命名的 pdf 文件,范围从 0001 及以上。每页的左侧、顶部和底部均被正确裁剪,但右侧有一些空白,因此所有页面的宽度都与类选项中指定的宽度一致。通过将设置varwidth为纸张中所需的线宽,这可以很好地与配合使用includegraphics

为了在其他文档(这些 pdf 现在作为图形包含在内)中获取名为“Listing 1”等的浮点数,可以在序言中放入以下内容:

\usepackage{float}
\floatstyle{ruled}
\newfloat{listing}{thp}{lop}
\floatname{listing}{Listing}

然后在文档正文中

\begin{listing}[htbp]
\includegraphics[width=\linewidth]{pg_0001.pdf}
\caption{Showing some code.}
\label{lst:somecode}
\end{listing}
See the code in \cref{lst:somecode} for an example.

相关内容