我已經搜索了這個答案,但相關的解決方案似乎涉及解釋器中的'print'
。如何從IDLE物理打印顏色的Python代碼?
我想知道是否可以打印(物理上紙)從IDLE顏色的Python代碼?
我去了:在IDLE File > Print Window
,它似乎剛打印出的黑色和白色版本,而不會提示是否以彩色打印等
編輯:
看起來這威力不可用,所以選項是將代碼複製到像SciTE這樣的文本編輯器並從那裏打印 - 很像默認的IDLE語法突出顯示。
我已經搜索了這個答案,但相關的解決方案似乎涉及解釋器中的'print'
。如何從IDLE物理打印顏色的Python代碼?
我想知道是否可以打印(物理上紙)從IDLE顏色的Python代碼?
我去了:在IDLE File > Print Window
,它似乎剛打印出的黑色和白色版本,而不會提示是否以彩色打印等
編輯:
看起來這威力不可用,所以選項是將代碼複製到像SciTE這樣的文本編輯器並從那裏打印 - 很像默認的IDLE語法突出顯示。
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可以找到它。您需要手動移動它以便包含才能正常工作。
這裏是一個更好的答案。 使用稱爲IDLE2HTML.py的IDLE擴展(搜索此內容)。 這可以讓IDLE打印到其樣式表中具有顏色的HTML文件。 然後將HTML文件保存爲PDF(顏色仍然存在)。
一個好的和簡單的解決方案是使用IDLE2HTML,IDLE的擴展。
該工具允許IDLE將編輯器窗口(或交互式shell)中的代碼保存爲HTML文件,其顏色包含在CSS格式中。在此之後,可以打印文件(按要求)或與其他程序(如文字處理器)一起使用的格式化代碼。
當前可以下載Python文件並查看一些說明的可靠網站是Python Package Index(PyPI) - 頁面爲https://pypi.python.org/pypi/IDLE2HTML或pip
模塊(內置於較新的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版本。
說明:如果Python版本是Python的3.x中,使用import tkinter as Tkinter
代替import Tkinter
和import tkinter.filedialog as tkFileDialog
而不是import tkFileDialog
。顯示的代碼使用來自if/else塊中的內置「sys」模塊的sys.version
來運行正確的代碼。
IDLE可以使用擴展(可從編輯器本身運行的Python模塊,例如* IDLE2HTML *)來執行它,這些模塊在運行時會給出有關編輯器窗口的數據。 – Edward
在TexLive 2016(當前版本截至目前),文件'listing-python.prf'位置很好('/ texmf-dist/tex/latex/listings/listings-python.prf'),LaTeX可以在沒有複製它。 –
感謝您的提醒!更新答案。 – alexis