我正在使用 Sphinx 写一些笔记。我在笔记中使用 Mathjax 数学扩展。数学的默认大小比我想要的要大一点。在 Mathjax 页面上,我发现可以通过将以下脚本添加到 HTML 文件来更改该大小。
MathJax.Hub.Config({
"HTML-CSS": {scale: 90}
});
因此,我尝试在
.rst
文件中添加以下内容:
.. raw:: html
<script type="text/javascript" >
MathJax.Hub.Config({
"HTML-CSS": {
scale: 90
}
});
</script>
==========
Objective
==========
To change math size \\( \\alpha \\).
上面的内容对于特定
.rst
文件中的数学运算非常有效。但我想对属于同一个 Sphinx 文档的许多不同的 .rst
文件执行此操作。是否可以在不将上述脚本添加到每个 .rst
文件中的情况下执行此操作?
这可以通过模板来完成:
在Sphinx项目目录中创建一个名为
templates
的文件夹。在conf.py中添加
templates_path = ["templates"]
在
templates
目录中,创建一个名为 layout.html
的文件,其中包含以下内容:
{% extends "!layout.html" %}
{%- block extrahead %}
<script type="text/javascript">
MathJax.Hub.Config({
"HTML-CSS": {
scale: 90
}
});
</script>
{% endblock %}
<script>
元素将包含在每个生成的 HTML 页面的<head>
中。
extrahead
模板块默认为空。有关详细信息,请参阅 Sphinx 模板文档。
如果您想避免更改模板,您可以从 Sphinx 项目的 conf.py
中的
add_js_file()
函数调用 Sphinx 的 setup()
:
# conf.py
# ... other settings ...
def setup(app):
# (create a setup() function if you don't already have one;
# or add to the existing setup() ...)
app.add_js_file("mathjax-config.js")
在 _static 源目录中创建文件“mathjax-config.js”。 (检查 conf.py
html_static_path
设置以验证静态目录,或者根据需要定义一个。)Sphinx 会在构建期间将其复制到输出目录中。
add_css_file()
方法。它们都可以采用静态源目录的相对路径,或外部资源的完整 url。
add_javascript()
和 add_stylesheet()
。
在 Sphinx v3.0 或更高版本中,有一个更简单的方法,可以避免需要额外的 JS 文件。
在 Sphinx 3.0 及更高版本中,添加 JavaScript 配置简短片段的最简单方法是在 conf.py 设置函数中调用
app.add_js_file(None, body="...JS code...")
。示例:
# In your Sphinx project's conf.py:
# 1. Add whatever JS code you need as a string constant.
# (This example is from the original question.)
MATHJAX_CONFIG_JS = """
MathJax.Hub.Config({
"HTML-CSS": {scale: 90}
});
"""
# 2. Create a setup() function if you don't already have one.
# (If you do, just add to your existing setup() function.)
def setup(app):
# 3. Tell Sphinx to add your JS code. Sphinx will insert
# the `body` into the html inside a <script> tag:
app.add_js_file(None, body=MATHJAX_CONFIG_JS)
使用这种方法,您不需要创建单独的静态 JS 文件。
(Sphinx 3.0 中添加了
body
参数;在早期版本中,您可以
仍然使用 add_js_file()
与静态 JS 文件 - 请参阅我的
之前的回答。对于任何比
一个简短的配置片段,无论如何使用外部文件可能会更好。)
仅配置
conf.py
的最简单解决方案可能是使用 MathJax 扩展的配置值 mathjax_config
(自 1.8
起可用)。
mathjax_config
的值传递给 MathJax.Hub.Config()
。
根据您的具体情况,将以下内容添加到
conf.py
:
mathjax_config = {
"HTML-CSS": {"scale": 90},
}