构建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 --help
和rubber-info --help
可以提供命令行语法的简要描述。包含的手册页(提供英文和法语)和TeXinfo文档包含更详细的使用信息。
已知错误
Rubber通常运行良好,尽管存在一些已知问题。
-
Rubber试图做太多。Rubber试图提供一种一站式解决方案来编译TeX文档,并根据需要运行大量相关软件。这种方法有三个弱点:a)它通过解析自身以及所有包含的文件中的.tex文件,并发现任何相关输入文件来实现。没有嵌入完整的TeX解释器,而rubber没有这样做,正确解析TeX是一项困难的任务。b)为了完成其工作,Rubber需要了解TeX生态系统中的每个版本的每个包,以便评估它们对TeX文档编译的影响。它需要了解任何TeX编译器对图像格式、搜索路径等的偏好。所有这些信息都很难保持最新。c)在某些情况下(如图像转换),它需要直接猜测用户意图,并可能实际上猜测错误。在未来的版本中,可能将这些功能之一删除,以更现代的方式完成相同的事情,目标是使Rubber更简单、更健壮。例如,可以尝试使用-recorder功能(.fls)而不是尝试从可读日志文件中读取相同的信息。
-
代码库已彻底清理,已转换为Python3,总体上处于合理状态。尽管如此,它已经编写了多年,如果尝试重写,某些功能可能会以不同的方式实现或完全省略(例如,onchange机制、模块等)。
-
在某些情况下,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的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | b63ce8f5ba1bd79e013b00897f0e04416266481634b55ee3ba199da524ff3a04 |
|
MD5 | 232f344be0cd23ec7f9c5f1ad3c36c51 |
|
BLAKE2b-256 | 779f86280842e6fa6f58af5f1f4aa4cb49c0ac816cb5ed031e09f7cd9bfa01d2 |
latex_rubber-1.6.6-py3-none-any.whl的哈希
算法 | 哈希摘要 | |
---|---|---|
SHA256 | 63a6bf8e194d002986b09a2f884c6eadefd78cf36df461baa1ba9bc126a358cd |
|
MD5 | 511f59e58a8c9e8f2c790df32bcc92bf |
|
BLAKE2b-256 | d334a1a849e9886606902610b2a38e640c253b59fad189b5d4b092272c4c62e3 |