【问题标题】:How to physically print python code in color from IDLE?如何从 IDLE 物理打印彩色 python 代码?
【发布时间】:2013-05-25 20:36:01
【问题描述】:

我已经为此寻找答案,但相关解决方案似乎与解释器中的'print'ing 有关。

我想知道是否可以从 IDLE 中以彩色打印(物理地在纸上)python 代码?

我在IDLE中去了:File > Print Window,它似乎只是打印了一个黑白版本,没有提示是否打印彩色等。

编辑:

似乎这可能不可用,因此可以选择将代码复制到 SciTE 等文本编辑器并从那里打印 - 就像默认的 IDLE 语法突出显示一样。

【问题讨论】:

    标签: python python-2.7 printing syntax-highlighting python-idle


    【解决方案1】:

    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 文档中包含代码 sn-ps。

    可用性:您至少需要listings 1.5b 版(2013/08/26)。 Texlive 2013 的用户必须从 CTAN 下载它(例如使用命令行 texlive 管理器,tlmgr)。它是 TexLive 2016 的一部分。

    不幸的是,CTAN 版本似乎仍然存在问题:首选项文件listings-python.prf 位于包的文档文件夹中,而不是在 TeX 可以找到的tex/latex/listings 中。您需要手动移动它才能使包含生效。

    【讨论】:

    • IDLE 可以使用扩展(可以从编辑器本身运行的 Python 模块,例如 IDLE2HTML)来实现,这些扩展在运行时会提供有关编辑器窗口的数据。
    • 在 TexLive 2016(目前为当前版本)中,文件 listings-python.prf 位于很好的位置 (/texmf-dist/tex/latex/listings/listings-python.prf),LaTeX 无需复制即可找到它。
    • @alexis 这听起来很有希望,但我觉得需要更多的指导。当我下载列表包时,我得到 8 个文件,但我把它们放在哪里?也许在 IDLE 安装中的特定文件夹中?那么,我可以直接将您的脚本剪切并粘贴到 IDLE 控制台中并且它会起作用吗? (除了我意识到我必须在你有“myscript.py”的地方插入完整的路径位置和文件名。)
    • @waterman,这不是它的工作原理。我的回答显示了如何使用文档格式化系统LaTeX 格式化您的代码。 IDLE 不参与其中。 listings 包是 texlive 发行版的标准配置。
    • PS listings 中的配色方案几乎完全匹配 IDLE 配色方案。
    【解决方案2】:

    这是一个更好的答案。 使用名为 IDLE2HTML.py 的 IDLE 扩展(搜索这个)。 这允许 IDLE 打印到在其样式表中有颜色的 HTML 文件。 然后将 HTML 文件保存为 PDF(颜色仍然存在)。

    【讨论】:

      【解决方案3】:

      一个好的和简单的解决方案是使用 IDLE2HTML,一个 IDLE 的扩展。
      该工具允许 IDLE 将代码从编辑器窗口(或交互式 shell)保存到 HTML 文件中,
      CSS 格式中包含颜色。在此之后,可以打印文件(根据要求)或其格式化代码与其他程序(如文字处理器)一起使用。
      目前下载 Python 文件和查看一些说明的可靠网站是 Python 包索引 (PyPI) - 页面是 https://pypi.python.org/pypi/IDLE2HTMLpip 模块,内置于较新的 Python 版本,可以为您安装文件。

      此方法的一个有用优势是它从 IDLE 获取颜色格式,而不是花时间分析代码和使用存储的颜色(许多其他解决方案都这样做)。这意味着它使用实际的配色方案并适用于不同的 IDLE 主题,例如“IDLE Dark”。这应该会导致使用更少的资源和更短的代码。
      此外,当前的扩展(2.0 版)可能在保存数据时适应使用不同的文件格式,因为它的代码非常简单。

      有关其工作原理的一些详细信息:

      由于该工具是作为扩展运行的 Python 代码,因此它可以访问 IDLE 提供的特殊变量,其中包含有关编辑器窗口的数据。 idlelib Python 扩展(运行编辑器)的 extend.txt 文件描述了这个名为 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 Tkinterimport tkinter.filedialog as tkFileDialog 代替 import tkFileDialog。显示的代码使用 if/else 块中内置“sys”模块中的sys.version 来运行正确的代码。

      【讨论】:

      • 您在“安装说明”中提到您必须“重新启动 IDLE”。这是什么意思以及如何做到这一点?
      • 表示如果IDLE正在运行则退出IDLE并启动它,但正常启动它。关键是 IDLE 在启动时会加载扩展,因此添加扩展直到下次运行 IDLE 时才会生效。对于安装的每个 Python 版本,必须将扩展放在 idlelib 目录中。
      【解决方案4】:

      最简单的方法是使用Notepad++ 打开“.py”文件,然后您可以在其中选择和修改您的设置和首选项(您想要的 python 代码的任何主题)以将 python 文件导出为彩色 PDF 文件(使用 PDF 虚拟打印机)或直接打印 :-) .

      如果您使用的是VS code,则只需安装 (PrintCode) 扩展程序并在安装后:

      1. 打开VS Code并转到查看
      2. 点击命令面板
      3. 搜索“PrintCode

      它将使用您的默认 Internet 浏览器将 python 文件导出为 HTML,您可以在那里直接打印它或使用虚拟打印机,将您的 python 文档打印为彩色 PDF。

      【讨论】:

        【解决方案5】:

        我遇到了同样的问题,将 py 文件打开到 Visual Studio Code 中,然后简单地复制 (Ctrl A / Ctrl C) 并将文本 (Ctrl V) 粘贴到 Microsoft 编辑器中,例如 Word 或 RTF,甚至是 Outlook。颜色保持不变,包括打印时。 请注意,为了避免在 VS Code 中将夜间模式设置为默认值,请转到 文件->首选项->颜色主题,选择更适合打印的日模式。

        【讨论】:

          【解决方案6】:

          我一直使用大量代码来执行此操作。 只需安装 SciTE “https://www.scintilla.org/SciTEDownload.html” 复制并粘贴您的代码并打印。 我喜欢拿一些胶带和记号笔把所有的床单都贴在墙上,然后放一些音乐。 编码愉快!

          【讨论】:

            猜你喜欢
            • 2017-07-17
            • 1970-01-01
            • 2023-04-06
            • 2023-03-08
            • 2019-03-22
            • 1970-01-01
            • 2021-12-04
            • 2020-06-12
            • 2021-05-06
            相关资源
            最近更新 更多