Bug avec polyglossia 1.42.4

mercredi 13 avril 2016, mise à jour vendredi 10 novembre 2017, par Maïeul
Suivre la vie du site RSS 2.0 Forum

Cet article est obsolète. Soit qu’il existe une manière plus « moderne » de procéder, soit que j’ai trouvé une autre méthode plus appropriée.
Voyez plutôt la nouvelle version : Polyglossia français debugué.

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.

Vos commentaires

  • Le 25 avril 2016 à 13:49, par alfa8my En réponse à : Bug avec polyglossia 1.42.4

    Merci, ce problème me turlupinait !

  • Le 10 juin 2016 à 10:31, par achemel En réponse à : Bug avec polyglossia 1.42.4

    Bonjour,

    La solution ci-dessus n’a pas fonctionné pour moi.

    En revanche, grâce à https://github.com/josephwright/csq..., voici ce qui fonctionne :

    documentclass{article}>
    usepackage{polyglossia}
    setmainlanguage{french}
    usepackage{csquotes}
    
    %problème pour les guillemets avec polyglossia 1.42.4
    %https://github.com/josephwright/csquotes/issues/8
    makeatletter
    apptocmd{french@punctuation}{%
    	XeTeXinterchartoks french@punctguillstart 4095  = {nobreakspacexpg@nospace}% "«  " -> "«~"
    	XeTeXinterchartoks 4095  french@punctguillend = {xpg@unskipnobreakspace}% "  »" -> "~»"  
    }{}{}
    makeatother
    begin{document}
    	
    	reprise de l'exemple ci-dessus:
    	« 1 » % Not csquotes
    	enquote{ 1 } % Csquotes
    	"  5 " % Csquotes
    	
    	correct (normalement) ---~je ne mets jamais d'espace autour des accolades, je ne sais pas si ça change quelque chose~---:
    	enquote{1}
    	enquote{bond}
    	enquote{et enquote{dernier} essai}
    end{document}

    Merci en tout cas pour ce blog, je suis en train de faire ma thèse (sciences humaines) grâce à vous sur LaTeX... Bravo pour le travail et les conseils. Je ne suis absolument pas une spécialiste... et j’y arrive :-)

  • Le 10 juin 2016 à 10:47, par Maïeul En réponse à : Bug avec polyglossia 1.42.4

    C’est parce que vous utiliser une version récente de XeLaTeX. Il y a un ticket ouvert sur le sujet, mais je crains qu’il ne soit résolu prochainement. Je comptais publier un billet à ce sujet ce week-end.

  • Le 10 juin 2016 à 10:52, par Maïeul En réponse à : Bug avec polyglossia 1.42.4

    ps : il manque les antislash dans votre exemple. Et puis pour faire bien il faudrait aussi corriger un bug sur certains signes typo.

    Voir ce que j’utilise.

  • Le 10 juin 2016 à 12:15, par achemel En réponse à : Bug avec polyglossia 1.42.4

    Ah oui, les antislash... c’est la première fois que je poste du code sur un blog, alors je n’ai pas trop su utiliser « code », etc. J’ai pourtant fait copier/coller depuis TeXstudio.

    Il est vrai que je rencontre ces problèmes (et d’autres... comme les numéros de notes en bas de page soudainement plus en exposant et bizarrement suivis d’un point [grr.. trouvé un début de réponse, mais qu’un début... re-grr]) depuis que je suis passée à la distribution 2016 de TeXLive, parce que, peut-être bêtement, je me dis qu’il faut passer au plus récent... Je suis même repassée à la distri 2015 pour un rapport à rendre hier soir (ce qui m’embête, parce que je n’ai pas assez de mémoire sur mon Mac pour garder les deux distri ensemble).

    Bon, petits tracas, qui valent quand la peine d’être vécus tant l’apport de LaTeX est un soulagement dans la rédaction d’un très long document !

    Encore merci pour votre lien vers votre package et pour tout le reste.

    PS : je me suis inscrite sur gravatar, comme vous le conseillez, mais ce n’est pas « mon image » (de très belles marguerites) qui apparaît :-(

  • Le 10 juin 2016 à 14:15, par Maïeul En réponse à : Bug avec polyglossia 1.42.4

    Le problème de gravatar était juste une histoire de cache, parce que vous vous êtes inscrits après-coup. Pas très grave.

    Pour ce qui est des notes, c’est un changement survenu dans la version 1.24.4 de polyglossia. Ce type de note correspond plus à la norme française.

    Ce qui est moche, c’est qu’il n’ont pas prévenu, et surtout pas mis d’option pour rendre cela facultatif.

    Cela étant, on peut contourner cela assez facilement. Remplacer \setmainlanguage{french} par :

    \makeatletter
    \let\old@makefntext\@makefntext
    \setmainlanguage{french}
    \let\@makefntext\old@makefntext
    \makeatletter
  • Le 10 juin 2016 à 16:10, par achemel En réponse à : Bug avec polyglossia 1.42.4

    GÉ-NIAL !!!!!

    Ça marche !!!! Merci beaucoup...

Qui êtes-vous ?

Pour afficher votre trombine avec votre message, enregistrez-la d’abord sur gravatar.com (gratuit et indolore) et n’oubliez pas d’indiquer votre adresse e-mail ici.

Ajoutez votre commentaire ici

Ce champ accepte les raccourcis SPIP {{gras}} {italique} -*liste [texte->url] <quote> <code> et le code HTML <q> <del> <ins>. Pour créer des paragraphes, laissez simplement des lignes vides.

Acheter XeLaTeX appliqué aux sciences humaines

À propos

Titulaire d’un doctorat en théologie et d’un doctorat en histoire, sous la direction conjointe de Frédéric Amsler et d’Élisabeth_Malamut, je commence à partir du 1er août 2017 un travail d’édition critique des Actes de Barnabé.

Dans le cadre de la rédaction de mon mémoire de master puis de ma thèse de doctorat, j’ai été emmené à utiliser LaTeX, et j’ai donc décider de partager mes techniques. En effet, au cours de mes premiers apprentissages, j’ai découvert que les ressources indiquant les outils pour l’utilisation de LaTeX en sciences humaines étaient rares. Ceci m’a conduit à maintenir ou créer plusieurs packages LaTeX et à donner plusieurs formations.

J’ai reçu en 2018 le prix DANTE e.V pour mon travail autour de LaTeX, en particulier autour de reledmac et reledpar.

Par ailleurs, je suis membre actif de la communauté SPIP, au sein de laquelle j’administre le site Spip-Contrib. Je propose sur ce site quelques notes sur SPIP, en général à destination de webmestre.

Il m’arrive également de faire un petit peu de Python, de temps en temps.

Enfin, je tiens un blog de réflexions politiques et religieuses.

Maïeul