跳转到主要内容

构建LaTeX文档的自动化系统

项目描述

这是Rubber。

Rubber是LaTeX文档的构建系统。它基于一个运行必要次数的例程,并在需要时运行BibTeX和Makeindex等伴随程序。模块系统提供了极大的灵活性,几乎可以支持任何无需用户干预的包,以及文档的预处理和后处理。支持许多标准包,包括graphics/graphicx,具有各种图形格式之间的自动转换和Metapost编译。关联工具"rubber-info"可以提取信息,例如依赖关系或编译后的诊断。

安装

运行Rubber只需要Python 3.8。当然,如果没有工作的LaTeX环境,它将没有太多用处(Rubber已知在包括Darwin和Cygwin在内的各种Unix版本上的TeXLive和VTeX上运行,欢迎提供关于其他系统的反馈)。

对于编译,你需要Python Distutils,它们通常包含在开发包中(在Debian中,这是python3-dev包)。

要构建文档,你需要texinfo(Debian包:texinfo)。注意,默认情况下禁用了所有文档格式。

要编译和安装Rubber,只需遵循常规步骤

# python3 setup.py --help
# python3 setup.py install
# python3 setup.py clean --all

setup.py的一些有用选项包括

禁用info文档

# python3 setup.py build --info=False install

以及类似的--html--man--pdf

更改manpages的安装路径

# python3 setup.py install --mandir=/path/to/man/pages

安装到预发布目录而不是根/前缀

# python3 setup.py install --root=/staging/directory

请注意,如果您需要将构建和安装作为两个不同的步骤(例如,当构建用于分发目的的软件包时),Python的distutils会忘记任何“构建”选项,并在“安装”阶段重新使用默认选项进行重新构建。如果您不希望构建某些文档,这可能会引起担忧。因此,最好通过将这些选项放入setup.cfg文件中来使其永久化。例如

[build]
man = 1
html = 0
pdf = 0
info = 0
txt = 0
[install]
prefix  = /usr

最后,调用

# python3 setup.py build
# python3 setup.py install --root=/staging/directory

PEP 517构建

PEP 517指定了Python处理过程的新颖构建流程。目前对此有初始支持,但软件包将不包括文档。

开发流程如下

设置一个虚拟环境,使用您选择的Python版本

# python3 -m venv .venv

激活虚拟环境,并安装依赖项

# source .venv/bin/activate
(.venv) # pip install -U pip setuptools wheel
(.venv) # pip install -r requirements-dev.txt

这是虚拟环境设置,只需执行一次。如果依赖项发生变化,请重新运行此最新步骤。

要创建PEP 571兼容的sdist和wheel,请运行

# make build-wheel

这使用“构建”模块在“dist”文件夹中创建文件。这些是要上传到PyPI的文件。

PyPI发布

要发布PEP 517

有关设置twine凭据的说明,请参阅https://twine.readthedocs.io

构建sdist和wheel后,请使用以下命令将它们上传到PyPI

# make publish-wheel

用法

如礼仪所要求的,使用rubber --helprubber-info --help可以提供命令行语法的简要描述。包含的手册页(提供英文和法语)和TeXinfo文档包含更详细的使用信息。

已知错误

Rubber通常运行良好,尽管存在一些已知问题。

  1. Rubber试图做太多。Rubber试图提供一种一站式解决方案来编译TeX文档,并根据需要运行大量相关软件。这种方法有三个弱点:a)它通过解析自身以及所有包含的文件中的.tex文件,并发现任何相关输入文件来实现。没有嵌入完整的TeX解释器,而rubber没有这样做,正确解析TeX是一项困难的任务。b)为了完成其工作,Rubber需要了解TeX生态系统中的每个版本的每个包,以便评估它们对TeX文档编译的影响。它需要了解任何TeX编译器对图像格式、搜索路径等的偏好。所有这些信息都很难保持最新。c)在某些情况下(如图像转换),它需要直接猜测用户意图,并可能实际上猜测错误。在未来的版本中,可能将这些功能之一删除,以更现代的方式完成相同的事情,目标是使Rubber更简单、更健壮。例如,可以尝试使用-recorder功能(.fls)而不是尝试从可读日志文件中读取相同的信息。

  2. 代码库已彻底清理,已转换为Python3,总体上处于合理状态。尽管如此,它已经编写了多年,如果尝试重写,某些功能可能会以不同的方式实现或完全省略(例如,onchange机制、模块等)。

  3. 在某些情况下,Rubber可能会触发不必要的重新编译。Rubber试图谨慎行事。

作者

Rubber最初由Emmanuel Beffara编写 emmanuel@beffara.org。它目前由Florian Schmaus flo@geekplace.eu、Sebastian Kapfer sebastian.kapfer@fau.de和Nicolas Boulenguez nicolas@debian.org维护。

它的主页可在https://gitlab.com/latex-rubber/rubber找到

感谢所有提供测试、评论和建议的人,以及再次感谢编写补丁和错误修复的人。

任何形式的反馈都受到欢迎,以便使此程序尽可能有用和健壮。

许可证

Rubber是免费软件:您可以在自由软件基金会发布的GNU通用公共许可证的条款下重新分发和/或修改它,无论是许可证的第3版,还是(根据您的选择)任何较新版本。

本程序分发时希望它将是有用的,但没有任何保证;甚至没有关于适销性和特定用途的隐含保证。有关更多详细信息,请参阅GNU通用公共许可证。

您应该已经随本程序一起收到GNU通用公共许可证的一个副本。如果没有,请参阅https://gnu.ac.cn/licenses/

SPDX-License-Identifier: GPL-3.0-or-later

项目详情


下载文件

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

源分布

latex_rubber-1.6.6.tar.gz (352.3 kB 查看哈希)

上传时间

构建分布

latex_rubber-1.6.6-py3-none-any.whl (348.0 kB 查看哈希)

上传时间 Python 3

支持者

AWS AWS 云计算和安全赞助商 Datadog Datadog 监控 Fastly Fastly CDN Google Google 下载分析 Microsoft Microsoft PSF 赞助商 Pingdom Pingdom 监控 Sentry Sentry 错误记录 StatusPage StatusPage 状态页面