mirror of
https://github.com/sphinx-doc/sphinx.git
synced 2025-02-25 18:55:22 -06:00
parent
004b68f281
commit
da7a06b323
@ -168,6 +168,23 @@ Sphinx.
|
|||||||
|
|
||||||
The default is empty (``{}``).
|
The default is empty (``{}``).
|
||||||
|
|
||||||
|
.. confval:: mathjax_config
|
||||||
|
|
||||||
|
The inline configuration options for mathjax. The value is used as a
|
||||||
|
parameter of ``MathJax.Hub.Config()``. For more information, please
|
||||||
|
read `Using in-line configuration options`_.
|
||||||
|
|
||||||
|
For example::
|
||||||
|
|
||||||
|
mathjax_config = {
|
||||||
|
'extensions': ['tex2jax.js'],
|
||||||
|
'jax': ['input/TeX', 'output/HTML-CSS'],
|
||||||
|
}
|
||||||
|
|
||||||
|
The default is empty (not configured).
|
||||||
|
|
||||||
|
.. _Using in-line configuration options: http://docs.mathjax.org/en/latest/configuration.html#using-in-line-configuration-options
|
||||||
|
|
||||||
:mod:`sphinx.ext.jsmath` -- Render math via JavaScript
|
:mod:`sphinx.ext.jsmath` -- Render math via JavaScript
|
||||||
------------------------------------------------------
|
------------------------------------------------------
|
||||||
|
|
||||||
|
@ -420,7 +420,7 @@ class StandaloneHTMLBuilder(Builder):
|
|||||||
|
|
||||||
def add_js_file(self, filename, **kwargs):
|
def add_js_file(self, filename, **kwargs):
|
||||||
# type: (unicode, **unicode) -> None
|
# type: (unicode, **unicode) -> None
|
||||||
if '://' not in filename:
|
if filename and '://' not in filename:
|
||||||
filename = posixpath.join('_static', filename)
|
filename = posixpath.join('_static', filename)
|
||||||
|
|
||||||
self.script_files.append(JavaScript(filename, **kwargs)) # type: ignore
|
self.script_files.append(JavaScript(filename, **kwargs)) # type: ignore
|
||||||
@ -1630,17 +1630,22 @@ def setup_js_tag_helper(app, pagename, templatexname, context, doctree):
|
|||||||
def js_tag(js):
|
def js_tag(js):
|
||||||
# type: (JavaScript) -> unicode
|
# type: (JavaScript) -> unicode
|
||||||
attrs = []
|
attrs = []
|
||||||
|
body = '' # type: unicode
|
||||||
if isinstance(js, JavaScript):
|
if isinstance(js, JavaScript):
|
||||||
for key in sorted(js.attributes):
|
for key in sorted(js.attributes):
|
||||||
value = js.attributes[key]
|
value = js.attributes[key]
|
||||||
if value is not None:
|
if value is not None:
|
||||||
attrs.append('%s="%s"' % (key, htmlescape(value, True)))
|
if key == 'body':
|
||||||
attrs.append('src="%s"' % pathto(js.filename, resource=True))
|
body = value
|
||||||
|
else:
|
||||||
|
attrs.append('%s="%s"' % (key, htmlescape(value, True)))
|
||||||
|
if js.filename:
|
||||||
|
attrs.append('src="%s"' % pathto(js.filename, resource=True))
|
||||||
else:
|
else:
|
||||||
# str value (old styled)
|
# str value (old styled)
|
||||||
attrs.append('type="text/javascript"')
|
attrs.append('type="text/javascript"')
|
||||||
attrs.append('src="%s"' % pathto(js, resource=True))
|
attrs.append('src="%s"' % pathto(js, resource=True))
|
||||||
return '<script %s></script>' % ' '.join(attrs)
|
return '<script %s>%s</script>' % (' '.join(attrs), body)
|
||||||
|
|
||||||
context['js_tag'] = js_tag
|
context['js_tag'] = js_tag
|
||||||
|
|
||||||
|
@ -11,6 +11,8 @@
|
|||||||
:license: BSD, see LICENSE for details.
|
:license: BSD, see LICENSE for details.
|
||||||
"""
|
"""
|
||||||
|
|
||||||
|
import json
|
||||||
|
|
||||||
from docutils import nodes
|
from docutils import nodes
|
||||||
|
|
||||||
import sphinx
|
import sphinx
|
||||||
@ -79,6 +81,10 @@ def builder_inited(app):
|
|||||||
options.update(app.config.mathjax_options)
|
options.update(app.config.mathjax_options)
|
||||||
app.builder.add_js_file(app.config.mathjax_path, **options) # type: ignore
|
app.builder.add_js_file(app.config.mathjax_path, **options) # type: ignore
|
||||||
|
|
||||||
|
if app.config.mathjax_config:
|
||||||
|
body = "MathJax.Hub.Config(%s)" % json.dumps(app.config.mathjax_config)
|
||||||
|
app.builder.add_js_file(None, type="text/x-mathjax-config", body=body) # type: ignore # NOQA
|
||||||
|
|
||||||
|
|
||||||
def setup(app):
|
def setup(app):
|
||||||
# type: (Sphinx) -> Dict[unicode, Any]
|
# type: (Sphinx) -> Dict[unicode, Any]
|
||||||
@ -94,6 +100,7 @@ def setup(app):
|
|||||||
app.add_config_value('mathjax_options', {}, 'html')
|
app.add_config_value('mathjax_options', {}, 'html')
|
||||||
app.add_config_value('mathjax_inline', [r'\(', r'\)'], 'html')
|
app.add_config_value('mathjax_inline', [r'\(', r'\)'], 'html')
|
||||||
app.add_config_value('mathjax_display', [r'\[', r'\]'], 'html')
|
app.add_config_value('mathjax_display', [r'\[', r'\]'], 'html')
|
||||||
|
app.add_config_value('mathjax_config', None, 'html')
|
||||||
app.connect('builder-inited', builder_inited)
|
app.connect('builder-inited', builder_inited)
|
||||||
|
|
||||||
return {'version': sphinx.__display_version__, 'parallel_read_safe': True}
|
return {'version': sphinx.__display_version__, 'parallel_read_safe': True}
|
||||||
|
@ -249,3 +249,15 @@ def test_math_compat(app, status, warning):
|
|||||||
[nodes.math_block, "e^{i\\pi}+1=0\n\n"],
|
[nodes.math_block, "e^{i\\pi}+1=0\n\n"],
|
||||||
[nodes.paragraph, "Multi math equations"],
|
[nodes.paragraph, "Multi math equations"],
|
||||||
[nodes.math_block, "E = mc^2"]))
|
[nodes.math_block, "E = mc^2"]))
|
||||||
|
|
||||||
|
|
||||||
|
@pytest.mark.sphinx('html', testroot='basic',
|
||||||
|
confoverrides={'extensions': ['sphinx.ext.mathjax'],
|
||||||
|
'mathjax_config': {'extensions': ['tex2jax.js']}})
|
||||||
|
def test_mathjax_config(app, status, warning):
|
||||||
|
app.builder.build_all()
|
||||||
|
|
||||||
|
content = (app.outdir / 'index.html').text()
|
||||||
|
assert ('<script type="text/x-mathjax-config">'
|
||||||
|
'MathJax.Hub.Config({"extensions": ["tex2jax.js"]})'
|
||||||
|
'</script>' in content)
|
||||||
|
Loading…
Reference in New Issue
Block a user