#mdbook #preprocessor #katex

bin+lib mdbook-numthm

mdbook 预处理器,用于自动编号定理、引理等

2 个不稳定版本

0.2.0 2024年3月23日
0.1.0 2023年11月24日

#831文本处理

MIT 许可证

26KB
413

mdbook-numthm

Crates.io GitHub License

一个 mdBook 预处理器,用于自动编号定理、引理等。

如果你习惯使用 LaTeX 写数学,那么在 mdBook 中使用可能会很烦恼,如果你计划有很多定理、引理、定义等需要自动编号并稍后链接,这个预处理器可以提供类似于 LaTeX 中的 amsthm 包的功能。

你可以在 这里 看到它的实际应用。

安装

假设你已经安装了 mdBook 和 mdbook-katex,使用以下命令安装包:

$ cargo install mdbook-numthm

然后将其添加到你的 book.toml 中的预处理器部分

[preprocessor.numthm]

使用方法

环境由一个键(任意字符串)、一个名称(例如 "Theorem"、"Lemma" 等)以及要应用于标题的一些强调组成。

它将替换所有出现

{{key}}{label}[title]

为以 label 识别的锚点,后跟一个由环境的名称、自动生成的编号和括号内的 title 组成的标题。

字段 labeltitle 是可选的。如果没有提供标签,则不会创建锚点;如果没有提供标题,则标题将不会在标题中显示。如果标签已存在,它将忽略它并发出警告。

例如,对于 "theorem" 环境,键是 thm,名称是 Theorem,标题的强调是加粗。因此,这将

{{thm}}{thm:central_limit}[Central Limit Theorem]

变为(假设这是键 thm 的首次出现)

<a name="thm:central_limit"></a>
**Theorem 1 (Central Limit Theorem).**

并将显示为

定理 1(中心极限定理)。

所有带有标签的环境都可以通过创建以下链接来引用

{{ref: label}}

它将被替换为 markdown 链接

[Theorem 1](path/to/file.md#label)

如果环境有标题,可以使用它来代替“定理 1”,方法如下:

{{tref: label}}

它将被替换为:

[Central Limit Theorem](path/to/file.md#label)

如果标签不存在,它将用 [??] 替换 ref 并发出警告。

内置环境

提供了五种内置环境

  • 定理:键 thm,名称 Theorem,加粗强调
  • 引理:键 lem,名称 Lemma,加粗强调
  • 命题:键 prop,名称 Proposition,加粗强调
  • 定义:键 def,名称 Definition,加粗强调
  • 备注:键 rem,名称 Remark,斜体强调。

编号

每个环境独立编号。例如,

{{thm}}
{{lem}}
{{lem}}
{{thm}}
{{lem}}

将生成

定理 1。
引理 1。
引理 2。
定理 2。
引理 3。

此外,每个环境的计数器在每个(子)章节的开始时重置。

自定义环境

可以通过在 book.tomlcustom_environments 键下定义新的环境。每个新环境由一个数组 [env_key, env_name, env_emph] 指定,其中 env_keyenv_nameenv_emph 是三个字符串,分别指定环境键、环境名称和环境强调(更具体地说,是将在环境标题前后添加的字符串,例如,对于加粗,是 **)。custom_environments 的值必须是这样定义环境数组的数组。

例如,以下配置

[preprocessor.numthm]
custom_environments = [
  ["conj", "Conjecture", "*"],
  ["ax", "Axiom", "**"]
]

定义了两个新环境

  • a "conjecture" 环境,键 conj,名称 "Conjecture",斜体强调,
  • 一个 "axiom" 环境,键 ax,名称 "Axiom",加粗强调。

配置

有一个可配置的选项

[preprocessor.numthm]
prefix = bool

如果 prefix 设置为 true,环境编号将被章节编号前缀。例如,在第一章 1.2 中,定理将被编号为 1.2.1、1.2.2 等。

与其他预处理器的交互

如果您还使用 [mdbook-footnote] 预处理器,必须确保它在 mdbook-numthm 运行之后运行。

[preprocessor.footnote]
after = ["numthm"]

待办事项

  • 允许某些环境子集的通用编号(例如,定理和引理获得一个共同的计数器,定义获得一个独立计数器)。

依赖项

~12–23MB
~327K SLoC