证明、定理和算法#
sphinx-proof 扩展提供了支持 proof 和 algorithm 样式格式化的基础设施。
该扩展支持 html 和 pdflatex 构建器。
sphinx-proof 包括对以下 directives 的支持:
安装#
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\)
\(f(u, v) \leftarrow 0\) 对于所有边 \((u,v)\)
当存在一条路径 \(p\) 从 \(s\) 到 \(t\) 在 \(G_{f}\) 中,使得 \(c_{f}(u,v)>0\) 对于所有边 \((u,v) \in p\):
找到 \(c_{f}(p)= \min \{c_{f}(u,v):(u,v)\in p\}\)
对于每条边 \((u,v) \in p\)
\(f(u,v) \leftarrow f(u,v) + c_{f}(p)\) (沿路径发送流量)
\(f(u,v) \leftarrow f(u,v) - c_{f}(p)\) (流量可能在之后“返回”)
将被渲染为
Algorithm 2 (Ford–Fulkerson)
输入 给定一个网络 \(G=(V,E)\),流量容量 \(c\),源节点 \(s\),和汇节点 \(t\)
输出 计算从 \(s\) 到 \(t\) 的最大值流量 \(f\)
\(f(u, v) \leftarrow 0\) 对于所有边 \((u,v)\)
当存在一条路径 \(p\) 从 \(s\) 到 \(t\) 在 \(G_{f}\) 中,使得 \(c_{f}(u,v)>0\) 对于所有边 \((u,v) \in p\):
找到 \(c_{f}(p)= \min \{c_{f}(u,v):(u,v)\in p\}\)
对于每条边 \((u,v) \in p\)
\(f(u,v) \leftarrow f(u,v) + c_{f}(p)\) (沿路径发送流量)
\(f(u,v) \leftarrow f(u,v) - c_{f}(p)\) (流量可能在之后“返回”)
并可以使用分配给算法的 label 引用,例如 {prf:ref}`ford-fulkerson` ,这将提供一个链接,如 Algorithm 2。
附加文档#
sphinx-proof 的更多文档 也可用。