我已经找到了答案,但相关的解决方案似乎与翻译中的'print'
ing有关。
我想知道是否可以从IDLE打印(物理上在纸上)彩色的python代码?
我去过IDLE的File > Print Window
,它似乎只打印出黑白版本,而不提示是否打印颜色等。
编辑:
看起来这可能不可用所以选项是将代码复制到像SciTE这样的文本编辑器并从那里打印 - 就像默认的IDLE语法突出显示一样。
IDLE无法做到,但您可以间接方式执行此操作:使用LaTeX使用IDLE颜色格式化脚本。
listings
包支持python的类似IDLE的着色,但是它非常隐蔽:你必须知道包含listings
手册中提到的“首选项文件”,但没有对其功能的描述。以下几乎最小的示例将您的脚本myscript.py
转换为IDLE颜色的彩色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
)。它是TexLive 2016的一部分。
不幸的是,CTAN版本似乎仍然存在问题:首选项文件listings-python.prf
位于包的文档文件夹中,而不是在Tez可以找到它的tex/latex/listings
中。您需要手动移动它才能使包含起作用。
这是一个更好的答案。使用IDLE扩展名为IDLE2HTML.py(搜索此内容)。这使得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 Dark”。这应该导致更少的资源和更短的代码使用。 此外,当前扩展(版本2.0)可能适用于在保存数据时使用不同的文件格式,因为它具有非常简单的代码。
有关其工作原理的一些细节:
由于该工具是作为扩展运行的Python代码,因此它可以访问IDLE提供的特殊变量,该变量包含有关编辑器窗口的数据。 extend.txt
Python扩展(运行编辑器)的idlelib
文件描述了这个名为editwin
的变量:
IDLE扩展类使用单个参数`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文件立即创建。
在Python 3.x中使用的代码调整: 目前,IDLE2HTML扩展(版本2.0)将无法与Python 3.x一起使用,直到我在IDLEX Python模块附带的固定版本中找到的代码进行了少量更改。这是一个文件比较,左侧是原始文件,屏幕截图图片右侧是固定IDLEX版本。
描述:如果Python版本是Python 3.x,请使用import tkinter as Tkinter
而不是import Tkinter
和import tkinter.filedialog as tkFileDialog
而不是import tkFileDialog
。显示的代码使用if / else块中内置“sys”模块的sys.version
来运行正确的代码。