Welcome to mirror list, hosted at ThFree Co, Russian Federation.

github.com/sphinx-doc/sphinx.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJean-François B <2589111+jfbu@users.noreply.github.com>2022-06-30 13:01:36 +0300
committerJean-François B <2589111+jfbu@users.noreply.github.com>2022-06-30 13:01:36 +0300
commita7ef63a1fd462b72638c7887faa07dbe1d7a02a6 (patch)
tree992df404790cf79b3975a14a0ab16e289f58f27e
parent5a24fec8de10323de7b46f4d3606765ffc246dd9 (diff)
LaTeX: fix #10506 (make Pygments \PYG macro \protected)
-rw-r--r--CHANGES2
-rw-r--r--sphinx/builders/latex/__init__.py2
-rw-r--r--sphinx/highlighting.py9
3 files changed, 10 insertions, 3 deletions
diff --git a/CHANGES b/CHANGES
index 99a2ab9bf..d52b5e70b 100644
--- a/CHANGES
+++ b/CHANGES
@@ -19,6 +19,8 @@ Bugs fixed
* #10594: HTML Theme: field term colons are doubled if using Docutils 0.18+
* #10596: Build failure if Docutils version is 0.18 (not 0.18.1) due
to missing ``Node.findall()``
+* #10506: LaTeX: build error when using ``:cpp:stuff`` syntax highlighting in
+ figure caption
Testing
--------
diff --git a/sphinx/builders/latex/__init__.py b/sphinx/builders/latex/__init__.py
index 47aa59344..32f9d32ef 100644
--- a/sphinx/builders/latex/__init__.py
+++ b/sphinx/builders/latex/__init__.py
@@ -245,7 +245,7 @@ class LaTeXBuilder(Builder):
with open(stylesheet, 'w', encoding="utf-8") as f:
f.write('\\NeedsTeXFormat{LaTeX2e}[1995/12/01]\n')
f.write('\\ProvidesPackage{sphinxhighlight}'
- '[2016/05/29 stylesheet for highlighting with pygments]\n')
+ '[2022/06/30 stylesheet for highlighting with pygments]\n')
f.write('% Its contents depend on pygments_style configuration variable.\n\n')
f.write(highlighter.get_stylesheet())
diff --git a/sphinx/highlighting.py b/sphinx/highlighting.py
index a7e5e4940..b86c31f5e 100644
--- a/sphinx/highlighting.py
+++ b/sphinx/highlighting.py
@@ -40,9 +40,14 @@ escape_hl_chars = {ord('\\'): '\\PYGZbs{}',
ord('}'): '\\PYGZcb{}'}
# used if Pygments is available
-# use textcomp quote to get a true single quote
_LATEX_ADD_STYLES = r'''
+% Sphinx additions
+% use textcomp quote to get a true single quote
\renewcommand\PYGZsq{\textquotesingle}
+\makeatletter
+% use \protected to allow \PYG in \caption
+\protected\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+{\PYG@do{#2}}}
+\makeatother
'''
# fix extra space between lines when Pygments highlighting uses \fcolorbox
# add a {..} to limit \fboxsep scope, and force \fcolorbox use correct value
@@ -52,7 +57,7 @@ _LATEX_ADD_STYLES_FIXPYG = r'''
% fix for Pygments <= 2.7.4
\let\spx@original@fcolorbox\fcolorbox
\def\spx@fixpyg@fcolorbox{\fboxsep-\fboxrule\spx@original@fcolorbox}
-\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+%
+\protected\def\PYG#1#2{\PYG@reset\PYG@toks#1+\relax+%
{\let\fcolorbox\spx@fixpyg@fcolorbox\PYG@do{#2}}}
\makeatother
'''