latex template: disable language-specific shorthands in babel.

Babel defines "shorthands" for some languages, and these can
produce unexpected results. For example, in Spanish, `1.22`
gets rendered as `122`, and `et~al.` as `etal`.

One would think that babel's `shorthands=off` option (which
we were using) would disable these, but it doesn't.  So we
remove `shorthands=off` and add some code that redefines
the shorthands macro.  Eventually this will be fixed in babel,
I hope, and we can revert to something simpler.

Closes #6817, closes #6887.
This commit is contained in:
John MacFarlane 2020-11-25 08:25:30 -08:00
parent bfb2a492c8
commit e26d31d56b
2 changed files with 8 additions and 2 deletions

View file

@ -336,7 +336,10 @@ $for(polyglossia-otherlangs)$
\setotherlanguage[$for(polyglossia-otherlangs.options)$$polyglossia-otherlangs.options$$sep$,$endfor$]{$polyglossia-otherlangs.name$} \setotherlanguage[$for(polyglossia-otherlangs.options)$$polyglossia-otherlangs.options$$sep$,$endfor$]{$polyglossia-otherlangs.name$}
$endfor$ $endfor$
\else \else
\usepackage[shorthands=off,$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel} \usepackage[$for(babel-otherlangs)$$babel-otherlangs$,$endfor$main=$babel-lang$]{babel}
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
$if(babel-newcommands)$ $if(babel-newcommands)$
$babel-newcommands$ $babel-newcommands$
$endif$ $endif$

View file

@ -56,7 +56,10 @@
\setotherlanguage[]{spanish} \setotherlanguage[]{spanish}
\setotherlanguage[]{french} \setotherlanguage[]{french}
\else \else
\usepackage[shorthands=off,ngerman,british,nswissgerman,spanish,french,main=english]{babel} \usepackage[ngerman,british,nswissgerman,spanish,french,main=english]{babel}
% get rid of language-specific shorthands (see #6817):
\let\LanguageShortHands\languageshorthands
\def\languageshorthands#1{}
\newcommand{\textgerman}[2][]{\foreignlanguage{ngerman}{#2}} \newcommand{\textgerman}[2][]{\foreignlanguage{ngerman}{#2}}
\newenvironment{german}[2][]{\begin{otherlanguage}{ngerman}}{\end{otherlanguage}} \newenvironment{german}[2][]{\begin{otherlanguage}{ngerman}}{\end{otherlanguage}}
\newcommand{\textenglish}[2][]{\foreignlanguage{british}{#2}} \newcommand{\textenglish}[2][]{\foreignlanguage{british}{#2}}