2010-08-20 16 views
11

Scrittura di alcuni documenti con frammenti di codice che desidero essere copiabili per l'esecuzione scritta. Questi snippet possono includere righe con spazi precedenti. Il pacchetto di elenchi formatta il testo correttamente, ma gli spazi non sono copiabili.Pacchetto elenchi LaTeX: inserzioni copia-selezionabili

Diciamo che ho il seguente esempio:

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

Se Copio e incollo l'elenco da qualche parte, diventa:

def foo(): 
return "bar" 

che devono essere corretti manualmente.

C'è un modo per rendere il pacchetto di elenchi include gli spazi originali? O c'è un pacchetto più adatto per casi come questo?

+0

È possibile incorporare JavaScript in PDF e avere pulsanti "copia negli appunti" accanto ai codici. Solo un'idea, non una buona soluzione. – Cloudanger

risposta

4

Questo è (molto probabilmente) non un problema con elenchi (o lattice), ma con il software di rendering PDF. Ad esempio, con PDFKit (Preview, Skim, ...) su OSX, ottengo il comportamento che descrivi. Utilizzando Xpdf, tuttavia, il testo viene copiato correttamente.

+0

Vedo davvero quello che stai dicendo con Xpdf, e questo è bello sapere. Tuttavia, non tutti quelli con cui sto lavorando usano Linux, e forzare un'installazione cygwin per Xpdf sembra eccessivo ... Con Adobe Acrobat 9 per Linux, gli spazi non vengono visualizzati. Non ho ancora provato la versione per Windows. – Vultaire

+0

Vedo lo stesso problema con la copia spaziale se utilizzo un blocco verbatim invece delle liste. Lo stesso con semplici TeX e "\". Forse questo è il migliore che ho intenzione di ottenere senza problemi significativi. Grazie. – Vultaire