summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGES3
-rw-r--r--sphinx/application.py8
-rw-r--r--sphinx/ext/mathjax.py2
-rw-r--r--tests/test_ext_math.py13
4 files changed, 25 insertions, 1 deletions
diff --git a/CHANGES b/CHANGES
index a71f25aaa..d970b7ec6 100644
--- a/CHANGES
+++ b/CHANGES
@@ -30,6 +30,9 @@ Features added
* #9097: Optimize the paralell build
* #9131: Add :confval:`nitpick_ignore_regex` to ignore nitpicky warnings using
regular expressions
+* #9174: Add ``Sphinx.add_html_assets_in_all_pages`` to tell extensions to include
+ HTML assets in all the pages. Extensions can check this via
+ ``Sphinx.html_assets_in_all_pages``
Bugs fixed
diff --git a/sphinx/application.py b/sphinx/application.py
index 4735beffd..59e1683b3 100644
--- a/sphinx/application.py
+++ b/sphinx/application.py
@@ -146,6 +146,7 @@ class Sphinx:
self.project: Project = None
self.registry = SphinxComponentRegistry()
self.html_themes: Dict[str, str] = {}
+ self.html_assets_in_all_pages: bool = False
# validate provided directories
self.srcdir = abspath(srcdir)
@@ -1181,6 +1182,13 @@ class Sphinx:
logger.debug('[app] adding environment collector: %r', collector)
collector().enable(self)
+ def add_html_assets_in_all_pages(self):
+ """Tell extensions to insert HTML assets in all the pages.
+
+ .. versionadded: 4.1
+ """
+ self.html_assets_in_all_pages = True
+
def add_html_theme(self, name: str, theme_path: str) -> None:
"""Register a HTML Theme.
diff --git a/sphinx/ext/mathjax.py b/sphinx/ext/mathjax.py
index 301c0d699..8fc63cb9e 100644
--- a/sphinx/ext/mathjax.py
+++ b/sphinx/ext/mathjax.py
@@ -79,7 +79,7 @@ def install_mathjax(app: Sphinx, pagename: str, templatename: str, context: Dict
'mathjax extension to work')
domain = cast(MathDomain, app.env.get_domain('math'))
- if domain.has_equations(pagename):
+ if app.html_assets_in_all_pages or domain.has_equations(pagename):
# Enable mathjax only if equations exists
options = {'async': 'async'}
if app.config.mathjax_options:
diff --git a/tests/test_ext_math.py b/tests/test_ext_math.py
index ebe2c0f38..52d49ec43 100644
--- a/tests/test_ext_math.py
+++ b/tests/test_ext_math.py
@@ -256,3 +256,16 @@ def test_mathjax_is_not_installed_if_no_equations(app, status, warning):
content = (app.outdir / 'index.html').read_text()
assert 'MathJax.js' not in content
+
+
+@pytest.mark.sphinx('html', testroot='ext-math',
+ confoverrides={'extensions': ['sphinx.ext.mathjax']})
+def test_mathjax_is_installed_if_no_equations_when_forced(app, status, warning):
+ app.add_html_assets_in_all_pages()
+ app.builder.build_all()
+
+ content = (app.outdir / 'index.html').read_text()
+ assert MATHJAX_URL in content
+
+ content = (app.outdir / 'nomath.html').read_text()
+ assert MATHJAX_URL in content