2010-08-20 7 views
11

Schreiben einiger Dokumente mit Code-Schnipsel, die kopierbar sein sollen, wie geschrieben. Diese Snippets können Zeilen mit vorangestellten Leerzeichen enthalten. Das Auflistungspaket formatiert den Text fein, aber die Leerzeichen sind nicht kopierbar.LaTeX-Listing-Paket: copy-pastable-Listen

Sagen wir, ich habe folgendes Beispiel:

\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} 

Wenn ich kopieren und fügen Sie den Eintrag irgendwo, es wird:

def foo(): 
return "bar" 

, die von Hand korrigiert werden müssen.

Gibt es eine Möglichkeit, dass das Listing-Paket die ursprünglichen Leerzeichen enthält? Oder gibt es ein Paket, das besser für solche Fälle geeignet ist?

+0

Es ist möglich, JavaScript in PDF einzubetten und Schaltflächen in der Nähe von Codes in die Zwischenablage zu kopieren. Nur eine Idee, keine gute Lösung. – Cloudanger

Antwort

4

Dies ist (höchstwahrscheinlich) kein Problem mit Listings (oder Latex überhaupt), sondern mit Ihrer PDF-Rendering-Software. Zum Beispiel, mit PDFKit-basierten (Vorschau, Skim, ...) auf OSX, bekomme ich das Verhalten, das Sie beschreiben. Bei Verwendung von Xpdf wird der Text jedoch korrekt kopiert.

+0

Ich sehe tatsächlich, was Sie mit Xpdf sagen, und das ist gut zu wissen. Aber nicht jeder, mit dem ich arbeite, benutzt Linux, und das Erzwingen einer Cygwin-Installation für Xpdf scheint übertrieben ... Mit Adobe Acrobat 9 für Linux werden die Leerzeichen nicht angezeigt. Habe die Windows Version noch nicht ausprobiert. – Vultaire

+0

Ich sehe das gleiche Problem mit Space kopieren, wenn ich einen Verbatim-Block anstelle von Auflistungen verwenden. Gleiches mit einfachem TeX und "\" s. Vielleicht ist das das Beste, was ich ohne größere Probleme bekomme. Vielen Dank. – Vultaire