Merge pull request #9949 from jfbu/9925_latex

LaTeX: prohibit also with xelatex linebreaks at dashes in literal text (not code-blocks) (fixes #9925)
This commit is contained in:
Jean-François B 2021-12-09 18:22:18 +01:00 committed by GitHub
commit e05741e8c7
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
3 changed files with 25 additions and 6 deletions

View File

@ -36,6 +36,8 @@ Bugs fixed
* #9878: mathjax: MathJax configuration is placed after loading MathJax itself * #9878: mathjax: MathJax configuration is placed after loading MathJax itself
* #9857: Generated RFC links use outdated base url * #9857: Generated RFC links use outdated base url
* #9909: HTML, prevent line-wrapping in literal text. * #9909: HTML, prevent line-wrapping in literal text.
* #9925: LaTeX: prohibit also with ``'xelatex'`` line splitting at dashes of
inline and parsed literals
Testing Testing
-------- --------

View File

@ -1,7 +1,7 @@
%% LITERAL BLOCKS %% LITERAL BLOCKS
% %
% change this info string if making any custom modification % change this info string if making any custom modification
\ProvidesFile{sphinxlatexliterals.sty}[2021/01/27 code-blocks and parsed literals] \ProvidesFile{sphinxlatexliterals.sty}[2021/12/06 code-blocks and parsed literals]
% Provides support for this output mark-up from Sphinx latex writer: % Provides support for this output mark-up from Sphinx latex writer:
% %
@ -704,6 +704,10 @@
% the \catcode13=5\relax (deactivate end of input lines) is left to callers % the \catcode13=5\relax (deactivate end of input lines) is left to callers
\newcommand*{\sphinxunactivateextrasandspace}{\catcode32=10\relax \newcommand*{\sphinxunactivateextrasandspace}{\catcode32=10\relax
\sphinxunactivateextras}% \sphinxunactivateextras}%
% alltt uses a monospace font and linebreaks at dashes (which are escaped
% to \sphinxhyphen{} which expands to -\kern\z@) are inhibited with pdflatex.
% Not with xelatex (cf \defaultfontfeatures in latex writer), so:
\newcommand*{\sphinxhypheninparsedliteral}{\sphinxhyphennobreak}
% now for the modified alltt environment % now for the modified alltt environment
\newenvironment{sphinxalltt} \newenvironment{sphinxalltt}
{% at start of next line to workaround Emacs/AUCTeX issue with this file {% at start of next line to workaround Emacs/AUCTeX issue with this file
@ -711,6 +715,7 @@
\ifspx@opt@parsedliteralwraps \ifspx@opt@parsedliteralwraps
\sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}% \sbox\sphinxcontinuationbox {\spx@opt@verbatimcontinued}%
\sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}% \sbox\sphinxvisiblespacebox {\spx@opt@verbatimvisiblespace}%
\let\sphinxhyphen\sphinxhypheninparsedliteral
\sphinxbreaksattexescapedchars \sphinxbreaksattexescapedchars
\sphinxbreaksviaactiveinparsedliteral \sphinxbreaksviaactiveinparsedliteral
\sphinxbreaksatspaceinparsedliteral \sphinxbreaksatspaceinparsedliteral
@ -757,10 +762,14 @@
\protected\def\sphinxtextbackslashbreakafter \protected\def\sphinxtextbackslashbreakafter
{\discretionary{\sphinx@textbackslash}{\sphinxafterbreak}{\sphinx@textbackslash}} {\discretionary{\sphinx@textbackslash}{\sphinxafterbreak}{\sphinx@textbackslash}}
\let\sphinxtextbackslash\sphinxtextbackslashbreakafter \let\sphinxtextbackslash\sphinxtextbackslashbreakafter
% - is escaped to \sphinxhyphen{} and this default ensures no linebreak
% behaviour (also with a non monospace font, or with xelatex)
\newcommand*{\sphinxhyphenininlineliteral}{\sphinxhyphennobreak}
% the macro must be protected if it ends up used in moving arguments, % the macro must be protected if it ends up used in moving arguments,
% in 'alltt' \@noligs is done already, and the \scantokens must be avoided. % in 'alltt' \@noligs is done already, and the \scantokens must be avoided.
\protected\def\sphinxupquote#1{{\def\@tempa{alltt}% \protected\def\sphinxupquote#1{{\def\@tempa{alltt}%
\ifx\@tempa\@currenvir\else \ifx\@tempa\@currenvir\else
\let\sphinxhyphen\sphinxhyphenininlineliteral
\ifspx@opt@inlineliteralwraps \ifspx@opt@inlineliteralwraps
% break at . , ; ? ! / % break at . , ; ? ! /
\sphinxbreaksviaactive \sphinxbreaksviaactive

View File

@ -1,7 +1,7 @@
%% TEXT STYLING %% TEXT STYLING
% %
% change this info string if making any custom modification % change this info string if making any custom modification
\ProvidesFile{sphinxlatexstyletext.sty}[2021/01/27 text styling] \ProvidesFile{sphinxlatexstyletext.sty}[2021/12/06 text styling]
% Basically everything here consists of macros which are part of the latex % Basically everything here consists of macros which are part of the latex
% markup produced by the Sphinx latex writer % markup produced by the Sphinx latex writer
@ -72,12 +72,20 @@
% Special characters % Special characters
% %
% This definition prevents en-dash and em-dash TeX ligatures. % The \kern\z@ is to prevent en-dash and em-dash TeX ligatures.
% A linebreak can occur after the dash in regular text (this is
% normal behaviour of "-" in TeX, it is not related to \kern\z@).
% %
% It inserts a potential breakpoint after the hyphen. This is to keep in sync % Parsed-literals and inline literals also use the \sphinxhyphen
% with behavior in code-blocks, parsed and inline literals. For a breakpoint % but linebreaks there are prevented due to monospace font family.
% before the hyphen use \leavevmode\kern\z@- (within \makeatletter/\makeatother) % (xelatex needs a special addition, cf. sphinxlatexliterals.sty)
%
% Inside code-blocks, dashes are escaped via another macro, from
% Pygments latex output (search for \PYGZhy in sphinxlatexliterals.sty),
% and are configured to allow linebreaks despite the monospace font.
% (the #1 swallows the {} from \sphinxhyphen{} mark-up)
\protected\def\sphinxhyphen#1{-\kern\z@} \protected\def\sphinxhyphen#1{-\kern\z@}
\protected\def\sphinxhyphennobreak#1{\mbox{-}}
% The {} from texescape mark-up is kept, else -- gives en-dash in PDF bookmark % The {} from texescape mark-up is kept, else -- gives en-dash in PDF bookmark
\def\sphinxhyphenforbookmarks{-} \def\sphinxhyphenforbookmarks{-}