跳转到主要内容

Python文档处理程序

项目描述

PyPI Python version Gitter chat Build status Windows Build status Test coverage

Rinohtype是一种类似LaTeX的文档处理程序。它根据文档模板和样式表将结构化文档渲染为PDF。Rinohtype的一个重要目标是比LaTeX更具用户友好性。这包括提供清晰的错误消息,并使调整文档样式变得非常容易。请参阅文档了解如何自定义文档样式。

Rinohtype 目前处于测试阶段,因此不建议用于生产环境,但您可以使用它来探索 rinohtype 的功能和问题。如果您在使用过程中遇到任何问题,请创建一个工单。然而,rinohtype 已经非常强大。以下是其主要功能列表:

  • 强大的页面布局系统,支持列、运行页眉/页脚、可浮动元素和脚注

  • 支持图像和(大型)表格

  • 自动生成目录和索引

  • 自动编号和交叉引用章节标题、图像和表格

  • 使用内置文档模板之一或创建自己的模板

  • 受 CSS 启发的直观样式表系统

  • 模块化设计,允许使用多个前端(如 reStructuredText、Markdown、DocBook 等)

  • 处理 OpenType、TrueType 和 Type1 字体,支持高级排版功能,如字距调整、连字符和小型大写字母

  • 嵌入 PDF、PNG 和 JPEG 图像,保留透明度和色彩配置文件

  • 易于部署;纯 Python,依赖项少

  • 基于 Unicode;适用于非拉丁语语言

Rinohtype 的主要输入格式是 reStructuredText。使用 rinoh 命令行工具渲染 reStructuredText 文档,并使用内置的 Sphinx 生成器,无需安装大型 LaTeX,即可生成 PDF 输出。请参阅 rinohtype 文档 以查看输出示例。

请注意,某些较旧的 PDF 阅读器在显示由 rinohtype 生成的 PDF 时可能存在问题(问题 2

  • 37.0 之前的 Firefox 内置 PDF 查看器(pdf.js)

  • 基于 0.41 之前的 poppler 的应用程序,例如 Evince

需求

rinohtype 支持 Python 3.4 及以上版本。解析 reStructuredText 和 CommonMark 文档时,rinohtype 分别依赖于 docutilsrecommonmark。安装 rinohtype 时,pip 会处理这些需求。如果您想包含 PDF、PNG 或 JPEG 以外的图像,您还需要安装 Pillow

入门

安装非常简单

pip install rinohtype

reStructuredText 渲染器

开始使用 rinohtype 的最简单方法是用 rinoh 命令行工具渲染一个 reStructuredText 文档(例如此存储库中的 CHANGES.rst

rinoh CHANGES.rst

rinoh 完成时,您将在输入文件旁边找到 CHANGES.pdf

默认情况下,rinoh 使用文章模板渲染输入文档。运行 rinoh --help 可以查看如何告诉 rinoh 使用哪个文档模板和样式表。

Sphinx 生成器

Rinohtype 可以用作 LaTeX 生成器的替代品(需要设置 latex_documents 配置变量)。您只需将 'rinoh.frontend.sphinx' 添加到 conf.py 中的 extensions 列表。这样,在构建文档时,您可以选择 rinoh 生成器。

sphinx-build -b rinoh . _build/rinoh

贡献

请参阅 CONTRIBUTING.rst

许可证

Rinohtype 的所有源代码都许可在 Affero GPL 3.0 许可下,除非源文件中有其他说明(例如 hyphenator.py)。

AGPLv3要求在rinohtype基础上构建的软件也必须在相同许可下作为开源软件发布。对于构建封闭源代码应用程序,您可以获取商业许可。rinohtype的作者也愿意为涉及rinohtype的咨询项目提供服务。

发布历史

发布 0.3.3 (2019-09-10)

修复

  • 修复了一个在构建Python文档时出现的奇怪错误,使其能够正常工作。

  • 更名为 rinohtype-reloaded

发布 0.3.2.dev

新特性

  • 自动生成图表和表格列表

  • 段落现在提供默认的制表位(与字体大小成比例)以进行缩进

  • 现在可以在样式表中指定选择器优先级(+ -)

  • Sphinx前端:rinoh构建器可以通过入口点被发现(不再需要将“rinoh.frontend.sphinx”添加到扩展列表中)

  • rinoh:如果找不到一个或多个引用的图像,则设置返回代码为1(问题 #104)

  • rinoh:引入了–install-resources选项,用于控制从PyPI自动安装资源

  • 德语区域设置(由Michael Kaiser贡献)

  • 波兰语区域设置(由Mariusz Jamro贡献)

变更

  • Python 3.3不再受支持,因为它已达到生命周期的结束

  • 通过嵌入png.py移除对purepng的依赖

  • 默认将图像宽度限制为可用宽度

  • XML前端:特殊情况混合内容节点

修复

  • 对于在新的页面上继续的流式元素,也考虑了边框宽度(问题 #127)

  • Sphinx:处理source_suffix是列表的情况(Nick Barrett的PR #110)

  • 与Sphinx 1.6.1+不兼容(latex_paper_size)

  • docutils:在警告中定义脚注时崩溃(问题 #95)

  • docutils:遇到原始文本角色时崩溃(问题 #99)

  • docutils:“装饰”节点(页眉/页脚)尚未支持(问题 #112)

  • 当表格单元格只包含图像时崩溃

  • 设置了gamma(gAMA块)的PNG图像颜色不正确(问题 #102)

  • Sphinx:不支持通配符扩展名的图像路径(问题 #119)

发布 0.3.1 (2016-12-19)

新特性

  • rinoh现在也作为独立应用程序提供,适用于Windows(安装程序)和macOS(应用程序);它们包括嵌入的CPython安装

  • 索引项现在可以是StyledText(除了str)

  • 现在可以使用字段显示“文档作者”元数据条目

  • Sphinx前端:支持“desc_signature_line”节点(Sphinx 1.5中新加入)

  • rinoh –docs:在默认浏览器中打开在线文档

变更

  • 更紧密地模仿Sphinx LaTeX构建器的标题页(问题 #60)

  • 由于它们特定于文档模板,PageTemplate.chapter_title_flowables不再有默认设置

修复

  • 处理StyledText元数据(如文档标题)

  • Sphinx前端:支持“autosummary_toc”节点

  • DummyFlowable现在会粘附在其后的流式元素上(保持与下一个元素一起),这样(1)它不会破坏前面标题的行为,并且(2)索引目标不会与后面的流式元素分开

  • LabeledFlowable中的错误破坏了保持与下一个元素一起的行为

  • 在keep_with_next=True的GroupedFlowables中的最后一个流式元素的下降大小丢失了

  • GroupedFlowables不应该标记页面为非空;这导致在第一个章节之前出现空页,如果它前面有组DummyFlowables

发布 0.3.0 (2016-11-23)

新特性

  • 支持对标准文档字符串(en, fr, it, nl)进行本地化(问题 #53)

  • 可以在文档模板配置中覆盖本地化字符串

  • 在无法找到字形时使用备用字体类型(问题 #55)(Sphinx样式表中的“fallback”样式设置备用字体类型)

  • 模板配置(INI)文件:指定要包含的文档部分,配置文档部分和页面模板,自定义本地化字符串,等等

  • 直接在样式表文件中指定更复杂的选择器

  • (图表和表格)标题支持分层编号(见CaptionStyle)

  • 使前端与当前工作目录无关

  • reStructuredText:支持表格 :widths: 选项(即将到来的docutils 0.13)

  • Sphinx前端:提供Sphinx内联标记角色的样式

  • rinoh(命令行渲染器)

    • 支持模板配置文件

    • 支持已安装前端支持的文件格式(查看–list-formats)

    • 接受配置前端的选项(查看–list-options)

    • 列出已安装的字体选项(在命令行或PDF文件中)

  • 在渲染进度指示器中显示当前页码

  • 书籍模板:支持设置封面页

  • 前端:当文档树节点未映射时,抛出更具描述性的异常

  • 验证传递给属性的默认值

  • 初步支持将样式表写入INI文件,列出非指定属性的默认值(#23)

变更

  • rinoh:现在输出PDF放在当前目录中,而不是输入文件所在的目录

  • Sphinx构建器配置:将rinoh_document_templaterinoh_template_configuration选项替换为rinoh_template

  • 如果没有为样式提供基,则样式属性查找将转到查找基样式表中同名的样式(#66)

  • DEFAULT_STYLE可以用作基样式,以防止在基样式表中查找同名的样式属性

  • 将FieldList重命名为DefinitionList,并使用它替换旧DefinitionList的使用(docutils和Sphinx前端)(#54)

  • 新的DefinitionList(FieldList)可以通过设置max_label_width为None、0或0值维度来像旧DefinitionList一样进行样式化

  • 默认情况下,图像现在是非浮动的(浮动放置需要更多工作)

  • 如果没有索引条目,则隐藏索引章节(#51)

  • 样式表:如果未指定,则使用默认匹配器

  • Sphinx样式表:从Sphinx LaTeX构建器复制警告样式

  • Sphinx样式表:将警告标题与正文保持在一起

  • Sphinx样式表:像LaTeX输出一样着色链接引用(#62)

  • Sphinx样式表:为文字强文本禁用连字符/连字符

  • 不再有DocumentSection;现在文档由部分(包含页面)组成

  • 模板配置

    • 通过名称引用文档部分模板,以便可以替换它们

    • 可以在模板配置中更改文档部分的列表

    • 文档部分采用‘end_at_page’选项(左、右或任何)

    • 通过文档部分所属的名称查找(左/右)页面模板

    • 当找不到右或左模板时,回退到<doc_part>_page

    • 每个模板配置都需要一个名称

  • DocumentTree:使source_file参数可选

  • 当文档部分层次结构缺少级别时,不要中止(#67)

  • 默认使用PDF后端(无需指定)

  • 将单位与Dimension实例一起存储(更好的打印效果)

  • float模块重命名为image

修复

  • 改进与Windows的兼容性:Windows路径名称和文件编码

  • 如果将StyledText传递给HeadingStyle.number_separator,则崩溃

  • GroupedLabeledFlowables标签宽度可能过于宽泛

  • 修复并改进自动表格列大小调整

  • 现在可以使用“参考”格式(“图1.2”)引用图像

  • HorizontallyAlignedFlowable:使其更健壮

  • 使文档元素可通过次级ID进行引用

  • reStructuredText:仅显示定义术语的第一个分类器

  • Sphinx前端:支持“居中”指令

  • Sphinx前端:对“hlist”指令提供基本支持

  • Sphinx前端:处理不带解释的:abbr:

  • Sphinx前端:支持嵌套内联节点(guilabel & samp角色)

  • PDF后端:修复从解析的PDF文件写入Type 1字体

  • PDF阅读器:处理多页PDF(#71)

  • PDF阅读器:修复XRef流的解析

  • PDF阅读器:修复解析文件的写入

版本0.2.1(2016-08-18)

新特性

  • 可选地限制大图像的宽度并利用此功能模拟Sphinx LaTeX构建器行为(#46)

  • reStructuredText/Sphinx:支持带有超链接的图像(#49)

  • 将PDF中的页码样式记录为页标签(#41)

  • 不支持Python版本:在可能的情况下防止安装(sdist)或在导入时退出(wheel)

  • 支持Python 3.6

错误修复

  • 使StyleSheet对象可序列化,以便Sphinx构建器的rinoh_stylesheet选项实际上可以使用

  • 修复#47:Literal_Block.lexer_getter()中的ClassNotFound异常

  • 修复#45:不合适的图像仍然放置在页面上

  • 不要警告关于解析到相同样式的重复样式匹配

版本0.2.0(2016-08-10)

样式

  • 生成样式日志(显示匹配的样式)以帮助样式表开发

  • 保持_with_next样式属性:防止将两个可流式处理的元素拆分到不同页面上

  • 样式表可以从INI格式的文件中加载

  • 检查传递给样式的属性类型

  • 使用Pygments进行源代码高亮显示

  • 目录条目可以更自由地进行样式设置

  • 允许隐藏目录条目的章节编号

  • 允许自定义章节标题

  • 选择器现在也可以根据文档部分/章节进行选择

  • 对选择器和匹配器进行了各种小的调整

  • 与样式表相关的各种修复

模板

  • 可配置的标准文档模板:文章和书籍

  • 创建自定义文档模板的正确基础设施

  • 支持左右页模板

  • 使文章模板更具可配置性

  • 页面现在有背景、内容和页眉/页脚层

  • 支持生成索引

  • 使某些字符串可配置(例如,用于本地化)

前端

  • Sphinx:如果未设置相应的rinohtype变量,则解释LaTeX配置变量

  • Sphinx:大致匹配LaTeX输出(文档模板和样式表)

  • 添加了基于recommonmark的CommonMark前端

  • 添加了基本的ePUB和DocBook前端

  • XML前端:修复空格处理

  • 前端现在返回生成器,产生可流式处理的元素(更灵活)

命令行渲染器(rinoh)

  • 允许指定模板和样式表

  • 自动从PyPI安装样式表中使用的字体

字体

  • 字体通过入口点发现/加载

  • 对OpenType字体提供更全面的支持

  • 修复对14种基本Type 1字体的支持

图像

  • 更灵活的图像大小:绝对宽度/高度和缩放

  • 允许指定行内图像的基线

  • JPEG读取器的几个修复

杂项

  • 重新组织Container类层次结构

  • 修复脚注处理中的错误

  • 放弃对Python 3.2的支持(支持3.3、3.4和3.5)

版本0.1.3(2015-08-04)

  • 从由0.1.2中的错误修复引起的缓慢渲染速度中恢复(感谢样式表中优化的元素匹配)

  • 与样式表相关的其他改进和错误修复

版本0.1.2(2015-07-31)

  • 大大改进了Sphinx支持(我们现在可以渲染Sphinx文档了)

  • 对reStructuredText(docutils)元素的更全面支持

  • 与脚注位置相关的各种修复

  • 在新章节开始时提供分页选项

  • 修复文档章节和部分的处理

  • 改进章节/图/表的引用

  • 原生支持PNG和JPEG图像(删除了PIL/Pillow需求,但增加了PurePNG 0.1.1需求)

  • Sphinx构建器使用的新'sphinx'样式表(~Sphinx LaTeX样式)

  • 恢复了Python 3.2兼容性

版本0.1.1(2015-04-12)

第一个预览版本

项目详情


下载文件

下载适用于您平台文件。如果您不确定选择哪个,请了解有关 安装包 的更多信息。

源代码分发

rinohtype-reloaded-0.3.3.tar.gz (5.0 MB 查看散列值)

上传时间 源代码

构建分发

rinohtype_reloaded-0.3.3-py3-none-any.whl (594.8 kB 查看散列值)

上传时间 Python 3

支持