LaTeX 的 listings 包:可复制的列表

18

我正在编写一些文档,其中包含要复制并运行的代码片段。这些片段可能包含带前导空格的行。虽然listings包可以格式化文本,但是其中的空格无法被复制。

假设我有以下示例:

\documentclass{article}
\usepackage{listings}
\begin{document}
\lstset{
    basicstyle=\ttfamily,
    frame=single,
    columns=fullflexible
}
\begin{lstlisting}[language=python]
def foo():
    return "bar"
\end{lstlisting}
\end{document}

如果我将列表复制并粘贴到另一个地方,它会变成:

def foo():
return "bar"

这必须手动更正。

有没有办法使listings包包含原始空格?或者是否有更适合这种情况的包?


1
可以将JavaScript嵌入PDF并在代码旁边放置“复制到剪贴板”按钮。这只是一个想法,不是一个好的解决方案。 - Cloudanger
1个回答

4

这很可能不是列表(或者 LaTeX)的问题,而是你的 PDF 渲染软件的问题。例如,在 OS X 上使用基于 PDFKit 的软件(比如 Preview、Skim 等等),我遇到了你描述的情况。然而,使用 Xpdf 时,文本被正确复制。


我确实理解您在Xpdf方面的意思,这是很好的了解。然而,我正在与的人并非都使用Linux,强制安装Xpdf的cygwin似乎有些过度...在Linux上使用Adobe Acrobat 9时,空格不会显示出来。但我还没有尝试Windows版本。 - Vultaire
如果我使用verbatim块而不是listings,我会看到相同的空格复制问题。在使用普通TeX和“\”时也是如此。也许这是我能得到的最好的结果,而不会有太大的麻烦。谢谢。 - Vultaire

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接