证明、定理和算法#

sphinx-proof 扩展提供了支持 proofalgorithm 样式格式化的基础设施。

该扩展支持 htmlpdflatex 构建器。

sphinx-proof 包括对以下 directives 的支持:

  1. Algorithms

  2. Axioms

  3. Conjectures

  4. Corollaries

  5. Criteria

  6. Definitions

  7. Examples

  8. Lemmas

  9. Observations

  10. Properties

  11. Propositions

  12. Proofs

  13. Remarks

  14. Theorems

安装#

Warning

目前这不是 jupyter-book 中的默认包,因为它是一个相对较新的包。

安装后需要通过 _config.yml 启用。

要安装,可以使用 pip

pip install sphinx-proof

通过 _config.yml 添加扩展#

打开 _config.yml 并将 sphinx_proof 添加到:

sphinx:
  extra_extensions:
    - sphinx_proof

使用 sphinx-proof#

该包使用 prf sphinx 域。

所有标记对象遵循 {prf:<typeset>}(如 {prf:proof})模式,并允许使用内联角色 {prf:ref} 引用指令。

Warning

在引用 sphinx-proof 中的指令时,需要使用 {prf:ref}`<label>` 内联角色。 使用其他交叉引用设施将不会工作,例如 [](<label>)

下面我们展示了一个使用 {prf:algorithm} 指令的示例。

可以为 sphinx-proof 支持的其他语法 遵循类似的模式。

在 MyST Markdown 中,可以使用 algorithm 指令向文档添加 algorithm

Algorithm 1 (Ford–Fulkerson)

输入 给定一个网络 \(G=(V,E)\),流量容量 \(c\),源节点 \(s\),和汇节点 \(t\)

输出 计算从 \(s\)\(t\) 的最大值流量 \(f\)

  1. \(f(u, v) \leftarrow 0\) 对于所有边 \((u,v)\)

  2. 当存在一条路径 \(p\)\(s\)\(t\)\(G_{f}\) 中,使得 \(c_{f}(u,v)>0\) 对于所有边 \((u,v) \in p\)

  3. 找到 \(c_{f}(p)= \min \{c_{f}(u,v):(u,v)\in p\}\)

  4. 对于每条边 \((u,v) \in p\)

  5. \(f(u,v) \leftarrow f(u,v) + c_{f}(p)\) (沿路径发送流量)

  6. \(f(u,v) \leftarrow f(u,v) - c_{f}(p)\) (流量可能在之后“返回”)

将被渲染为

Algorithm 2 (Ford–Fulkerson)

输入 给定一个网络 \(G=(V,E)\),流量容量 \(c\),源节点 \(s\),和汇节点 \(t\)

输出 计算从 \(s\)\(t\) 的最大值流量 \(f\)

  1. \(f(u, v) \leftarrow 0\) 对于所有边 \((u,v)\)

  2. 当存在一条路径 \(p\)\(s\)\(t\)\(G_{f}\) 中,使得 \(c_{f}(u,v)>0\) 对于所有边 \((u,v) \in p\)

  3. 找到 \(c_{f}(p)= \min \{c_{f}(u,v):(u,v)\in p\}\)

  4. 对于每条边 \((u,v) \in p\)

  5. \(f(u,v) \leftarrow f(u,v) + c_{f}(p)\) (沿路径发送流量)

  6. \(f(u,v) \leftarrow f(u,v) - c_{f}(p)\) (流量可能在之后“返回”)

并可以使用分配给算法的 label 引用,例如 {prf:ref}`ford-fulkerson` ,这将提供一个链接,如 Algorithm 2

附加文档#

sphinx-proof 的更多文档 也可用。