Bug avec polyglossia 1.42.4

, par Maïeul

Décidément, c’est la saison des bugs. La version 1.42.4 de polyglossia, envoyée sur le CTAN le 25 mars, casse les espaces à l’interieur des guillemets français.

Voici comment contourner le problème, en attendant qu’il soit résolu directement dans polyglossia.

Le problème

Soit le les lignes suivantes :

\documentclass{article}
\usepackage{polyglossia}
\setmainlanguage{french}
\setotherlanguage{english}
\usepackage[french=guillemets]{csquotes}
\begin{document}

\enquote{x}

\end{document}

Avant la version 1.42.4 de polyglossia, des espaces étaient automatiquement insérées au niveau des guillemets.

Espaces dans les guillemets : bonne typographie

Après cette version, les espaces disparaissent.

Pas d’espaces dans les guillemets : mauvaise typographie

La solution

Le problème a été introduit par un commit visant à résoudre un autre problème.

On pourrait évidemment surcharger le fichier french.ldf modifié par ce commit pour revenir à l’ancien fichier. Toutefois, il n’est en généralement pas conseillé de surcharger un fichier entier : on ne profite pas des évolutions futures.

Cependant il est assez simple de corriger cela. Il suffit de rétablir au sein de la commande \french@punctuation les codes commentés, et ce grâce à la commande \apptocmd qui permet d’ajouter des morceaux de code à la fin d’une commande déjà existante.

Comme la commande \french@punctuation contient des @, et que les commandes que l’on souhaite insérer aussi, il faut entourer notre \apptocmd de \makeatletter\makeatother.

Cela étant, le seul bout de code à insérer dans le préambule est :

\apptocmd{\french@punctuation}{%
     \XeTeXinterchartoks \french@punctguillstart 255 = {\nobreakspace\xpg@nospace}% "«  " -> "«~"
     \XeTeXinterchartoks 255 \french@punctguillend = {\xpg@unskip\nobreakspace}% "  »" -> "~»"  
}{}{}

Je ne manquerais pas de vous tenir au courant lorsque la nouvelle version de polyglossia sera sortie, mais il faudra alors passer à la TeXLive 2017, la TeXLive 2016 étant gelée.

Corrigenda : si vous utiliser TeXLive 2016, lisez l’article suivant "Polyglossia et XeLaTeX 3.14159265-2.6-0.99996 (TeXLive 2016)".

P.-S.

Remerciement à Aurélien Berra pour avoir signalé le problème et trouvé la piste de solution.