diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index bf9c1623f9..ceb691a15b 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -36,7 +36,7 @@ jobs: - name: Install deps run: | sudo apt-get install -y eatmydata - sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64 + sudo eatmydata apt-get install -y gettext librsvg2-bin mingw-w64 latexmk texlive-fonts-recommended texlive-latex-recommended texlive-latex-extra pip install requests sh click setuptools cpp-coveralls "Sphinx<4" sphinx-rtd-theme recommonmark sphinx-autoapi sphinxcontrib-svg2pdfconverter polib pyyaml astroid isort black awscli - name: Versions run: | @@ -73,12 +73,19 @@ jobs: with: name: stubs path: circuitpython-stubs* - - name: Docs + - name: Test Documentation Build (HTML) run: sphinx-build -E -W -b html -D version=${{ env.CP_VERSION }} -D release=${{ env.CP_VERSION }} . _build/html - uses: actions/upload-artifact@v2 with: name: docs path: _build/html + - name: Test Documentation Build (LaTeX/PDF) + run: | + make latexpdf + - uses: actions/upload-artifact@v2 + with: + name: docs + path: _build/latex - name: Translations run: make check-translate - name: New boards check diff --git a/.readthedocs.yml b/.readthedocs.yml index 2a0640782f..3f66351ce7 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -12,6 +12,9 @@ submodules: include: - extmod/ulab +formats: + - pdf + python: version: 3 install: diff --git a/docs/rstjinja.py b/docs/rstjinja.py index 3a08b25997..7ab92a9793 100644 --- a/docs/rstjinja.py +++ b/docs/rstjinja.py @@ -6,18 +6,28 @@ def rstjinja(app, docname, source): Render our pages as a jinja template for fancy templating goodness. """ # Make sure we're outputting HTML - if app.builder.format != 'html': + if app.builder.format not in ("html", "latex"): return # we only want our one jinja template to run through this func if "shared-bindings/support_matrix" not in docname: return - src = source[0] + src = rendered = source[0] print(docname) - rendered = app.builder.templates.render_string( - src, app.config.html_context - ) + + if app.builder.format == "html": + rendered = app.builder.templates.render_string( + src, app.config.html_context + ) + else: + from sphinx.util.template import BaseRenderer + renderer = BaseRenderer() + rendered = renderer.render_string( + src, + app.config.html_context + ) + source[0] = rendered def setup(app):