我正在使用 Sphinx(v1.4.9,Windows 7 64 位上的 Python 3.5.1)编写启用了 MathJax 的文档集。 我想定义自定义 LaTeX 命令来清理我的源代码,因此我通过添加 _templates\layout.html
:
来实现此方法
{% extends "!layout.html" %}
{% set script_files = script_files + ["_static/mjconf.js"] %}
并在
_static\mjconf.js
: 中定义我的自定义命令
MathJax.Hub.Config({
TeX: {
Macros: {
dsetarr: ['{\\small \\textsf{#1 Array } \\mathsf{(#2)} }', 2],
dsettype: ['{\\small \\textsf{#1}}', 1],
mtt: ['{\\texttt{#1}}' ,1],
sgn: ['{\\mathrm{sgn}#1}', 1]
}
}
});
这一切都很好。
但是,每当我编辑
mjconf.js
添加新命令或修改现有命令时,Sphinx 无法识别配置已更改,因此简单的 make html
不会像以前那样重建文档编辑至 conf.py
后。我必须在 make clean
之前先 make html
才能看到这些自定义 MathJax 命令更改的效果。
如何配置 Sphinx 通过重建整个文档集来对已编辑的
mjconf.js
做出反应,就像对已编辑的 conf.py
所做的那样?
make html -a
,但这不会反映文档中交叉引用的更新。不过,如果您没有交叉引用更新,这将是最快的选择。
make html -E
,以防您有必须更新的交叉引用。
最后还有
make clean html
,它会删除(清理)构建目录(如果你的 makefile 有它),然后再次构建 HTML。
为了启用 Steve Piercy
推荐的
make html -E
等调用,我将我的 make.bat
更改为:
set BUILDDIR=build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source
set I18NSPHINXOPTS=%SPHINXOPTS% source
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
对此:
set BUILDDIR=build
set ALLSPHINXOPTS=-d %BUILDDIR%/doctrees %SPHINXOPTS% source %2
set I18NSPHINXOPTS=%SPHINXOPTS% source
if NOT "%PAPER%" == "" (
set ALLSPHINXOPTS=-D latex_paper_size=%PAPER% %ALLSPHINXOPTS%
set I18NSPHINXOPTS=-D latex_paper_size=%PAPER% %I18NSPHINXOPTS%
)
唯一的变化是将 %2
附加到初始化
%ALLSPHINXOPTS%
的行。