2010-08-20 14 views
11

Viết một số tài liệu có đoạn mã mà tôi muốn có thể sao chép để chạy dưới dạng văn bản. Các đoạn mã này có thể bao gồm các dòng có dấu cách trước. Gói danh sách định dạng văn bản tốt, nhưng không gian không thể sao chép được.Gói danh sách LaTeX: danh sách có thể sao chép

Hãy nói rằng tôi có ví dụ sau:

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

Nếu tôi sao chép và dán niêm yết ở đâu đó, nó trở thành:

def foo(): 
return "bar" 

đó phải được sửa chữa bằng tay.

Có cách nào để làm cho gói danh sách bao gồm không gian ban đầu không? Hoặc là có một gói phù hợp hơn cho các trường hợp như thế này?

+0

Có thể nhúng JavaScript vào PDF và có các nút "sao chép vào clipboard" gần mã. Chỉ là một ý tưởng, không phải là một giải pháp tốt. – Cloudanger

Trả lời

4

Đây là (rất có thể) không phải là vấn đề với danh sách (hoặc mủ cao su), nhưng với phần mềm kết xuất PDF của bạn. Ví dụ, với PDFKit dựa trên (Xem trước, Skim, ...) trên OSX, tôi nhận được hành vi mà bạn mô tả. Tuy nhiên, bằng cách sử dụng Xpdf, văn bản được sao chép chính xác.

+0

Tôi thực sự thấy những gì bạn đang nói với Xpdf, và đó là điều tốt để biết. Tuy nhiên, không phải tất cả mọi người tôi đang làm việc với Linux đều sử dụng Linux và buộc phải cài đặt Cygwin cho Xpdf có vẻ quá mức cần thiết ... Với Adobe Acrobat 9 dành cho Linux, không gian sẽ không hiển thị. Chưa thử phiên bản Windows. – Vultaire

+0

Tôi thấy cùng một vấn đề với sao chép không gian nếu tôi sử dụng khối văn bản thay vì danh sách. Cùng với TeX đơn giản và "\". Có lẽ đây là điều tốt nhất tôi sẽ nhận được mà không gặp rắc rối đáng kể nào. Cảm ơn. – Vultaire