2 个不稳定版本
0.2.0 | 2024年3月23日 |
---|---|
0.1.0 | 2023年11月24日 |
#831 在 文本处理
26KB
413 行
mdbook-numthm
一个 mdBook 预处理器,用于自动编号定理、引理等。
如果你习惯使用 LaTeX 写数学,那么在 mdBook 中使用可能会很烦恼,如果你计划有很多定理、引理、定义等需要自动编号并稍后链接,这个预处理器可以提供类似于 LaTeX 中的 amsthm 包的功能。
你可以在 这里 看到它的实际应用。
安装
假设你已经安装了 mdBook 和 mdbook-katex,使用以下命令安装包:
$ cargo install mdbook-numthm
然后将其添加到你的 book.toml
中的预处理器部分
[preprocessor.numthm]
使用方法
环境由一个键(任意字符串)、一个名称(例如 "Theorem"、"Lemma" 等)以及要应用于标题的一些强调组成。
它将替换所有出现
{{key}}{label}[title]
为以 label
识别的锚点,后跟一个由环境的名称、自动生成的编号和括号内的 title
组成的标题。
字段 label
和 title
是可选的。如果没有提供标签,则不会创建锚点;如果没有提供标题,则标题将不会在标题中显示。如果标签已存在,它将忽略它并发出警告。
例如,对于 "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.toml
的 custom_environments
键下定义新的环境。每个新环境由一个数组 [env_key, env_name, env_emph]
指定,其中 env_key
、env_name
和 env_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