#restructuredtext #latex #transpiler

bin+lib ruSTLa

A reStructuredText → LarST ⊂ LaTeX transpiler

1 个不稳定版本

0.38.0 2021 年 3 月 4 日

842文本处理

34 每月下载量

自定义许可证

1MB
22K SLoC

ruSTLa - Rust 中的 rSTLa

ruSTLa 是 rSTLa (reStructuredText → LaTeX) transpiler 的实现,使用 Rust 编程语言编写。rSTLa 本身是 Tomi Janhunen 编写的 LarST (LaTeX → reStructuredText) transpiler 的逆转换器。

ruSTLa 最初是 Santtu Söderholm 硕士论文的“实践部分”。换句话说

版权 © 2020 Santtu Söderholm

关于项目状态的说明

ruSTLa 仍然是一个非常正在进行中的项目。例如,reStructuredText 表格和许多指令尚未支持,这可以从以下文件中看出src/parser/table_parserssrc/parser/directive_parsers。然而,现在发布它被认为是很合适的,因为实际的论文写作项目即将结束,并且(相当简单)的软件架构已经确定,正朝着 1.0.0 版本迈进。

因此,该工具可以帮助您将课程材料从 reStructuredText 转换为 LarST 格式,但某些结构需要用户自行转换。

待办事项

添加关于缺失结构的说明。

构建说明

如果您想自己构建项目,最简单的方法是安装 rustup,重新启动计算机以便必要的 PATH 修改生效,导航到项目文件夹并运行

cargo build [--release]

要运行单元测试,请输入 cargo test。运行特定测试包括输入

cargo test path::to::test::function

输入

cargo test path::to::test::function -- --nocapture

如果您想查看测试输出,请参阅 Cargo 文档 了解更多选项。

在无 Cargo 的机器上使用

该程序可以在终端中通过输入不带任何选项的程序运行

$ path/to/rustla path/to/rst/file.rst

注意所需的源文件后缀 .rst:rusTLa 以这种方式具有意见,以保护用户不会意外地将源文件覆盖为对象文件。

或者,可以将二进制文件移动到 PATH 环境变量中列出的文件夹之一,重新启动终端或注销,如果您的系统需要这样做才能使对 PATH 的更改生效。这样,它可以从任何地方通过简单地输入来运行

$ rustla path/to/rst/file.rst

可以通过不同的标志将选项提供给 rustla,这些标志在 reStructuredText 源文件路径之前指定

$ path/to/rustla --flag1 --flag2 ... --flagN path/to/rst/file.rst

以下列表中给出了可识别的标志

Option              Explanation
===========         ===========

--to-stdout         The option "stdout" is self-explanatory:
                    it directs the program output to the standard output of rustla.
                    This is the default functionality if "output-stream" is not specified.

--to-file           The option "file" creates a new LarST file next to the reST source file,
                    with the same name except for the suffix ".rst", which is replaced with ".tex".
                    There is currently no way to prevent this object file from being overwritten,
                    so care should be taken when running the program with this flag set.

--full-doc          If this is set, the resulting output will be surrounded by the string:

                        \documentclass{aplus}
                        \begin{document}
                        <output>
                        \end{document}

--aplus-cls         This option generates an aplus.cls file next to the file generated,
                    when the flag --to-file is set.

项目结构

以下列出了当前的项目结构

src/
├── common.rs
├── doctree
│   ├── class_data.rs
│   ├── directives.rs
│   ├── hyperref_data.rs
│   ├── larst_writer.rs
│   ├── mod.rs
│   ├── node_categories.rs
│   ├── restructuredtext_transforms.rs
│   ├── section_data.rs
│   ├── tests
│   │   ├── mod.rs
│   │   ├── test_constructor.rs
│   │   └── test_walkers.rs
│   ├── tree_node.rs
│   ├── tree_node_types.rs
│   ├── tree_zipper.rs
│   └── walkers.rs
├── main.rs
├── parser
│   ├── automata.rs
│   ├── converters.rs
│   ├── directive_parsers.rs
│   ├── line_cursor.rs
│   ├── mod.rs
│   ├── regex_patterns.rs
│   ├── state_machine
│   │   ├── aplus_questionnaire.rs
│   │   ├── aplus.rs
│   │   ├── block_quote.rs
│   │   ├── body.rs
│   │   ├── bullet_list.rs
│   │   ├── common.rs
│   │   ├── definition_list.rs
│   │   ├── enumerated_list.rs
│   │   ├── field_list.rs
│   │   ├── inline.rs
│   │   ├── literal_block.rs
│   │   ├── mod.rs
│   │   ├── transitions.rs
│   │   └── unknown_transitions.rs
│   ├── table_parsers.rs
│   ├── tests
│   │   ├── mod.rs
│   │   ├── test_admonitions.rs
│   │   ├── test_aplus_point_of_interest.rs
│   │   ├── test_aplus_questionnaire.rs
│   │   ├── test_block_quotes.rs
│   │   ├── test_block_reading.rs
│   │   ├── test_bullet_lists.rs
│   │   ├── test_class.rs
│   │   ├── test_comments.rs
│   │   ├── test_converters.rs
│   │   ├── test_definition_lists.rs
│   │   ├── test_enumerated_lists.rs
│   │   ├── test_field_lists.rs
│   │   ├── test_hyperlink_targets.rs
│   │   ├── test_images.rs
│   │   ├── test_inline_parsing.rs
│   │   ├── test_list_tables.rs
│   │   ├── test_literal_blocks.rs
│   │   ├── test_math_blocks.rs
│   │   ├── test_mixed_structures.rs
│   │   ├── test_regexes.rs
│   │   ├── test_sections_and_transitions.rs
│   │   ├── test_sphinx_only.rs
│   │   └── test_unknown_directives.rs
│   └── types_and_aliases.rs
├── rustla_options.rs
└── utf8_to_latex.rs

6 directories, 65 files

随着项目的进一步发展,此结构可能会发生变化。

依赖项

~2–3MB
~53K SLoC