2010-08-20 20 views
11

Escribo algunos documentos con fragmentos de código que quiero que se puedan copiar para que se ejecuten como están escritos. Estos fragmentos pueden incluir líneas con espacios precedentes. El paquete de listados formatea bien el texto, pero los espacios no se pueden copiar.Paquete de listados de LaTeX: listados de copiado de pasta

Digamos que tengo el siguiente ejemplo:

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

Si puedo copiar y pegar la lista en algún lugar, se convierte en:

def foo(): 
return "bar" 

que debe ser corregido a mano.

¿Hay alguna manera de hacer que el paquete de listados incluya los espacios originales? ¿O hay un paquete más adecuado para casos como este?

+0

Es posible incrustar JavaScript en PDF y tener botones "copiar en el portapapeles" cerca de los códigos. Solo una idea, no es una buena solución. – Cloudanger

Respuesta

4

Esto (lo más probable) no es un problema con los listados (o látex en absoluto), pero con su software de representación de PDF. Por ejemplo, con PDFKit-based (Preview, Skim, ...) en OSX, obtengo el comportamiento que describes. Sin embargo, al usar Xpdf, el texto se copia correctamente.

+0

De hecho, veo lo que dices con Xpdf, y eso es bueno saberlo. Sin embargo, no todas las personas con las que estoy trabajando usan Linux, y forzar una instalación de cygwin para Xpdf parece excesivo ... Con Adobe Acrobat 9 para Linux, los espacios no aparecen. Aunque todavía no he probado la versión de Windows. – Vultaire

+0

Veo el mismo problema con la copia espacial si utilizo un bloque literal en lugar de listados. Lo mismo con TeX simple y "\" 's. Quizás esto sea lo mejor que obtendré sin problemas importantes. Gracias. – Vultaire

Cuestiones relacionadas