2013-05-30 39 views
7

我已經搜索了這個答案,但相關的解決方案似乎涉及解釋器中的'print'如何從IDLE物理打印顏色的Python代碼?

我想知道是否可以打印(物理上紙)從IDLE顏色的Python代碼?

我去了:在IDLE File > Print Window,它似乎剛打印出的黑色和白色版本,而不會提示是否以彩色打印等

編輯:

看起來這威力不可用,所以選項是將代碼複製到像SciTE這樣的文本編輯器並從那裏打印 - 很像默認的IDLE語法突出顯示。

回答

4

IDLE無法做到這一點,但您可以以間接方式進行:使用LaTeX以IDLE顏色格式化您的腳本。

listings軟件包支持python類似於IDLE的着色,但它隱藏得很好:您必須知道包含在listings手冊中提及的「首選項文件」,但沒有描述其功能。以下幾乎最簡單的示例將以IDLE顏色將腳本myscript.py轉換爲彩色PDF。

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

你還可以包括一個真實的LaTeX文檔中的代碼片段。

可用性:您至少需要listings版本1.5b(2013/08/26)。 Texlive 2013的用戶必須從CTAN下載(例如,使用命令行texlive manager,tlmgr)。這是2016年的texlive的一部分

不幸的似乎仍然是與CTAN版中的問題:首選項文件listings-python.prf是在該包的文檔文件夾,而不是在那裏tex/latex/listings的TeX可以找到它。您需要手動移動它以便包含才能正常工作。

+0

IDLE可以使用擴展(可從編輯器本身運行的Python模塊,例如* IDLE2HTML *)來執行它,這些模塊在運行時會給出有關編輯器窗口的數據。 – Edward

+0

在TexLive 2016(當前版本截至目前),文件'listing-python.prf'位置很好('/ texmf-dist/tex/latex/listings/listings-python.prf'),LaTeX可以在沒有複製它。 –

+0

感謝您的提醒!更新答案。 – alexis

2

這裏是一個更好的答案。 使用稱爲IDLE2HTML.py的IDLE擴展(搜索此內容)。 這可以讓IDLE打印到其樣式表中具有顏色的HTML文件。 然後將HTML文件保存爲PDF(顏色仍然存在)。

2

一個好的和簡單的解決方案是使用IDLE2HTML,IDLE的擴展。
該工具允許IDLE將編輯器窗口(或交互式shell)中的代碼保存爲HTML文件,其顏色包含在CSS格式中。在此之後,可以打印文件(按要求)或與其他程序(如文字處理器)一起使用的格式化代碼。
當前可以下載Python文件並查看一些說明的可靠網站是Python Package Index(PyPI) - 頁面爲https://pypi.python.org/pypi/IDLE2HTMLpip模塊(內置於較新的Python版本)可以爲您安裝文件。

這種方法的一個有用的優點是,它從IDLE獲得顏色格式,而不是花時間分析代碼並使用存儲的顏色(許多其他解決方案)。這意味着它使用實際的配色方案並與不同的IDLE主題,如「IDLE黑暗」。這應該導致更少的資源和更短的代碼被使用。
此外,當前的擴展(版本2.0)可能是,因爲它具有相當簡單的代碼,所以在保存數據時使用不同的文件格式

它是如何工作的一些細節:

由於該工具是Python代碼運行作爲一個擴展,它可以訪問由IDLE提供一個特殊的變量,其中包含有關編輯器窗口中的數據。該extend.txt文件idlelib Python擴展(在運行編輯器)的描述了這種可變稱爲editwin

空閒分機類被實例化與單個參數, `editwin',一個EditorWindow實例。

它還包含一些關於擴展IDLE的其他文件,例如「config-main.def」和「config-extensions.def」。官方的Python文檔有更多的信息。

安裝說明:

複製IDLE2HTML.py到你的Python安裝的 「idlelib」 文件夾中。
將「config-extensions.txt」的內容附加到您的「config-extensions.def」文件(也在idlelib文件夾中)並重新啓動IDLE。

使用方法:

選擇 「另存爲HTML」,從 「選項」 菜單,並指定的FileDialog窗口中的文件名。 HTML文件立即創建。

A碼的調整在Python 3.x的工作:
目前,IDLE2HTML擴展名(2.0版本)將不會與Python 3.x中工作,直到一小的變化就是由我在Python模塊IDLEX中包含的固定版本中找到的代碼。 這是一個文件比較,左邊是原始文件,右邊是固定的IDLEX版本。

File comparison image described above.

說明:如果Python版本是Python的3.x中,使用import tkinter as Tkinter代替import Tkinterimport tkinter.filedialog as tkFileDialog而不是import tkFileDialog。顯示的代碼使用來自if/else塊中的內置「sys」模塊的sys.version來運行正確的代碼。