2013-05-30 29 views
7

Tôi đã tìm kiếm câu trả lời cho điều này nhưng các giải pháp liên quan dường như quan tâm đến 'print' ing trong thông dịch viên.Làm cách nào để in mã vạch python bằng màu sắc từ IDLE?

Tôi tự hỏi liệu có thể in mã python (vật lý trên giấy) bằng màu từ IDLE không?

Tôi đã đi: File > Print Window trong IDLE và nó dường như chỉ in ra một phiên bản màu đen và trắng mà không nhắc xem có nên in màu, vv

Edit:

Nó có vẻ như sức mạnh này không có sẵn để lựa chọn là sao chép mã vào một trình soạn thảo văn bản như SciTE và in từ đó - khá giống như cú pháp IDLE mặc định làm nổi bật mặc dù.

Trả lời

4

IDLE không thể làm điều đó, nhưng bạn có thể làm điều đó một cách gián tiếp: Sử dụng LaTeX để định dạng tập lệnh của bạn bằng màu IDLE.

Gói listings hỗ trợ IDLE giống như colorizing cho python, nhưng nó được ẩn khá tốt: Bạn phải biết bao gồm "tệp tùy chọn" được đề cập trong hướng dẫn sử dụng listings, nhưng không có mô tả về các tính năng của nó. Ví dụ gần như tối thiểu sau đây sẽ biến tập lệnh của bạn myscript.py thành PDF màu bằng màu IDLE.

\documentclass{article} 

\usepackage{listings} 
\input{listings-python.prf} % defines the python-idle-code style 
\usepackage{textcomp} % Needed for straight quotes        

\lstset{ 
basicstyle=\normalsize\ttfamily, % size of the fonts for the code    
language={Python},style={python-idle-code}, 
showstringspaces=false, 
tabsize=4, 
upquote=true, % Requires textcomp            
} 

\oddsidemargin=-0.5cm 
\textwidth=7in % This just fits 80 characters at 10pt       

\begin{document} 
\lstinputlisting{myscript.py} 
\end{document} 

Bạn cũng có thể bao gồm các đoạn mã trong một tài liệu LaTeX thực.

Tính khả dụng: Bạn sẽ cần ít nhất listings phiên bản 1.5b (2013/08/26). Người dùng Texlive 2013 phải tải xuống từ CTAN (ví dụ: với người quản lý dòng lệnh texlive, tlmgr). Đây là một phần của TexLive 2016.

Thật không may có vẻ như có vấn đề với phiên bản CTAN: Tệp tùy chọn listings-python.prf nằm trong thư mục tài liệu cho gói, chứ không phải trong tex/latex/listings nơi TeX có thể tìm thấy. Bạn sẽ cần phải di chuyển nó theo cách thủ công để đưa vào hoạt động.

+0

IDLE có thể làm điều đó bằng cách sử dụng các phần mở rộng (các mô-đun Python có thể được chạy từ chính trình soạn thảo, ví dụ * IDLE2HTML *) được cung cấp dữ liệu về cửa sổ trình soạn thảo khi chạy. – Edward

+0

Trong TexLive 2016 (phiên bản hiện tại kể từ bây giờ), tệp 'listings-python.prf' được định vị tốt ('/texmf-dist/tex/latex/lists/listings-python.prf') và LaTeX có thể tìm thấy nó mà không cần sao chép nó. –

+0

Cảm ơn lời nhắc! Cập nhật câu trả lời. – alexis

2

Đây là câu trả lời hay hơn. Sử dụng tiện ích IDLE có tên IDLE2HTML.py (tìm kiếm điều này). Điều này cho phép IDLE in ra một tệp HTML có màu trong bảng định kiểu của nó. Sau đó lưu tệp HTML vào PDF (màu vẫn sẽ ở đó).

2

Giải pháp tốt và đơn giản là sử dụng IDLE2HTML, một phần mở rộng cho IDLE.
Công cụ cho phép IDLE lưu mã từ cửa sổ trình soạn thảo (hoặc trình tương tác) vào tệp HTML,
với màu được bao gồm trong định dạng CSS. Sau đó, tệp có thể được in (như được yêu cầu) hoặc mã định dạng của nó được sử dụng với các chương trình khác như bộ xử lý văn bản.
Trang web đáng tin cậy hiện đang tải xuống tệp Python và xem một số hướng dẫn là Chỉ mục gói Python (PyPI) - trang là https://pypi.python.org/pypi/IDLE2HTML hoặc mô-đun pip, được cài sẵn trong phiên bản Python mới hơn, có thể cài đặt tệp cho bạn.

Một lợi thế hữu ích của phương pháp này là nó nhận định dạng màu từ IDLE thay vì dành thời gian phân tích mã và sử dụng màu đã lưu trữ (nhiều giải pháp khác). Điều này có nghĩa là sử dụng bảng màu thực tế và hoạt động với các chủ đề IDLE khác nhau, chẳng hạn như "IDLE Dark". Điều này sẽ dẫn đến ít tài nguyên hơn và mã ngắn hơn đang được sử dụng.
Ngoài ra, tiện ích mở rộng hiện tại (phiên bản 2.0) có thể là được điều chỉnh để sử dụng định dạng tệp khác khi lưu dữ liệu vì nó có mã khá đơn giản.

Một số chi tiết về cách thức hoạt động:

Kể từ khi công cụ này là Python mã chạy như một phần mở rộng, nó có quyền truy cập vào một biến đặc biệt được cung cấp bởi IDLE, trong đó có chứa dữ liệu về cửa sổ soạn thảo. Các tập tin extend.txt của Python mở rộng idlelib (chạy trình biên tập) mô tả biến này được gọi là editwin:

Một lớp mở rộng IDLE là instantiated với một đối số duy nhất, 'editwin', một thể hiện EditorWindow.

Nó cũng bao gồm một số tệp khác về mở rộng IDLE như "config-main.def" và "config-extensions.def". Tài liệu Python chính thức có nhiều thông tin hơn.

hướng dẫn

Cài đặt:

Sao chép IDLE2HTML.py đến "idlelib" thư mục cài đặt python của bạn.
Nối nội dung của "config-extensions.txt" vào tệp "config-extensions.def" của bạn (cũng trong thư mục idlelib) và khởi động lại IDLE.

Làm thế nào để sử dụng:

Chọn "Save as HTML" từ menu "Options" và chỉ định tên tập tin trong cửa sổ FileDialog. Tệp HTML được tạo ngay lập tức.

Một mã tinh chỉnh để làm việc bằng Python 3.x:
Hiện nay, IDLE2HTML phần mở rộng (phiên bản 2.0) sẽ không làm việc với Python 3.x cho đến khi một sự thay đổi nhỏ được thực hiện để mã mà tôi tìm thấy trong một phiên bản cố định đi kèm với mô-đun Python IDLEX. Đây là một so sánh tệp, với bản gốc ở bên trái và phiên bản IDLEX cố định ở bên phải của ảnh chụp màn hình.

File comparison image described above.

Mô tả: nếu Python phiên bản là Python 3.x, sử dụng import tkinter as Tkinter thay vì import Tkinterimport tkinter.filedialog as tkFileDialog thay vì import tkFileDialog. Mã được hiển thị sử dụng sys.version từ mô-đun "sys" tích hợp trong khối if/else để chạy đúng mã.

Các vấn đề liên quan