Le problème
XeTeX propose de définir des classes de caractères (par exemple « signes de ponctuations » « espaces » « guillemets »). Ceci permet d’insérer automatiquement des espaces de tailles déterminées entre certains caractères, selon la classe à laquelle ils appartiennent. Par exemple insérer une espace fine avant les caractères de ponctuation double.
Problème : il existe une classe spéciale, celles correspondant à la limite d’un mot, dont le code était 255 dans les anciennes versions de XeTeX, mais qui dans la version distribuée dans TeXLive2016 est devenue 4095.
Résultat : alors que un mot ; un autre mot
mettait une espace fine avant le point-virgule, elle met désormais une espace normale.
La solution
Il suffit simplement de patcher la commande french@punctuation
.
Ajoutez donc les lignes suivantes dans votre préambule, après avoir chargé le français :
\makeatletter
\appto\french@punctuation{%
\XeTeXinterchartoks \french@punctguillstart 255 = {\nobreakspace\xpg@nospace}% "« " -> "«~"
\XeTeXinterchartoks 255 \french@punctguillend = {\xpg@unskip\nobreakspace}% " »" -> "~»"
\XeTeXinterchartoks \french@punctguillstart 4095 = {\nobreakspace\xpg@nospace}% "« " -> "«~"
\XeTeXinterchartoks 4095 \french@punctguillend = {\xpg@unskip\nobreakspace}% " »" -> "~»"
\XeTeXinterchartoks 4095 \french@punctthin = {\xpg@unskip\nobreak\thinspace}%
\XeTeXinterchartoks 4095 \french@punctthick = {\xpg@unskip\nobreakspace}%
}
\makeatother
On retrouve le \makeatletter
, \makeatother
pour manipuler les commandes contenant des @
dans leur nom. Nous ajouter à la fin de la commande \french@punctuation
la déclaration des « tokens » (éléments TeX de base) à ajouter entre les caractéres, en utilisant le bon code de classe.
Ceci inclut la correction pour le bug sur les guillemets signalée il y a peu.
Vos commentaires
# Le 13 juin 2016 à 02:43, par A. Pouliquen En réponse à : Polyglossia et XeLaTeX 3.14159265-2.6-0.99996 (TeXLive 2016)
Encore merci !
# Le 14 décembre 2016 à 19:53, par Frédéric Vachon En réponse à : Polyglossia et XeLaTeX 3.14159265-2.6-0.99996 (TeXLive 2016)
Merci pour l’information ; depuis la mise à jour j’utilisais une classe fournie par ma nouvelle université et j’ai cru naïvement que c’était une modification de leur part un peu étrange, jusqu’à ce que je fasse une présentation beamer ces dernières semaines et que je rencontre le même problème.
Probablement une évidence pour plusieurs, il faut ajouter le code de la solution après l’appel du paquet csquotes et de l’appel de langue. J’avais mis le code entre les deux et, évidemment, ça ne fonctionnait pas.
Sinon, doit-on s’attendre à un correctif d’ici 2017 ou le patchage est là pour rester encore un bon moment ? J’ai fouillé un peu sur les pages Github des paquets polyglossia et csquotes sans trouver de réponse claire à ce sujet.
# Le 14 décembre 2016 à 19:59, par Maïeul En réponse à : Polyglossia et XeLaTeX 3.14159265-2.6-0.99996 (TeXLive 2016)
cela risque de durer un petit moment, parce que tant le mainteneur du package que moi même somme trop occupé pour l’incorporer correctement…