Work around French babel's incompatibility with prettyref

In classic (pdf)latex, where the colon is activated, detokenize
the argument of \prettyref.

Fix proposed by egreg at
https://tex.stackexchange.com/a/527912/19291
This commit is contained in:
Juergen Spitzmueller 2023-08-11 17:35:18 +02:00
parent 6671f9bee1
commit 858b076ab7
2 changed files with 10 additions and 0 deletions

View File

@ -498,6 +498,7 @@ Language canadien
BabelName acadian BabelName acadian
PolyglossiaName french PolyglossiaName french
PolyglossiaOpts "variant=canadian" PolyglossiaOpts "variant=canadian"
ActiveChars ;!?:
XindyName french XindyName french
QuoteStyle french QuoteStyle french
Encoding iso8859-15 Encoding iso8859-15
@ -705,6 +706,7 @@ Language french
GuiName "French" GuiName "French"
HasGuiSupport true HasGuiSupport true
BabelName french BabelName french
ActiveChars ;!?:
PolyglossiaName french PolyglossiaName french
XindyName french XindyName french
QuoteStyle french QuoteStyle french

View File

@ -1284,6 +1284,14 @@ string const LaTeXFeatures::getPackages() const
// The rest of these packages are somewhat more complicated // The rest of these packages are somewhat more complicated
// than those above. // than those above.
// Babel languages with activated colon (such as French) break
// with prettyref. Work around that.
if (!runparams_.isFullUnicode() && useBabel()
&& mustProvide("prettyref") && contains(getActiveChars(), ':')) {
packages << "% Make prettyref compatible with babel active colon\n"
<< "\\def\\prettyref#1{\\expandafter\\@prettyref\\detokenize{#1:}}\n";
}
if (mustProvide("changebar")) { if (mustProvide("changebar")) {
packages << "\\usepackage"; packages << "\\usepackage";
if (runparams_.flavor == Flavor::LaTeX if (runparams_.flavor == Flavor::LaTeX