Les chaînes de langues de Polyglossia

, par Maïeul

J’ai parlé dans un précédent article de la manière de redéfinir les chaînes de langues de BibLaTeX.

J’explique ici la manière de procéder pour les chaînes de langues de Polyglossia, pour permettre par exemple de changer le texte « Tables des matières » par « Sommaire » lors de l’appel à la commande \tableofcontents.

Le problème

En France, une table des matière est située à la fin d’un livre, alors qu’un sommaire est situé en début de livre.

Si j’utilise \tableofcontents en début de document, j’obtiens une « table des matières » et non pas un « Sommaire ».

Comment faire ?

La solution

Ces textes automatiquement insérés par LaTeX qui varient en fonction de la langue sont des chaînes de langues, définies par le package Polyglossia [1].

Il faut donc les surcharger.

La méthode

Comme pour les toutes les chaînes de langues, il faut commencer par découvrir quelle est la chaîne à modifier. Il faut d’abord ouvrir le fichier gloss-french.ldf, qui définit, entre autres, les chaînes de langues pour le français [2].

On peut une ligne contenant \def\captionsfrench{%.
Cette ligne est suivie d’autres lignes sous la forme : \def\chaine{Valeur}%.

Et ce jusqu’à une accolade fermante.

Pour notre cas, on peut aisément repérer la ligne contenant \def\contentsname{Table des matières}%.
Notre chaîne de langue est donc contentsname.

Pour redéfinir une chaîne de langue, il suffit d’écrire, de préférence dans le préambule :

\gappto\captionsfrench{\renewcommand{\chaine}{Valeur}}

Dans le cas présent, cela donne :

\gappto\captionsfrench{\renewcommand{\contentsname}{Sommaire}}

Anedocte : \newcommand vs \def

La commande \def permet de créer des nouvelles commandes. Toutefois à la différence de la commande \newcommand, les commandes ainsi créées appartiennent à TeX et non pas à LaTeX.

Définir des commandes en TeX par rapport à les définir en LaTeX permet plus de souplesse. Toutefois définir les commandes en TeX demande plus de maîtrise technique pour éviter divers problèmes (comme des erreurs de compilation.).

Les commandes TeX peuvent contenir des « sous commandes ». Ici par exemple, la commande \captionfrench contient la sous commande \contentsname. J’utilise la commande TeX \gappto pour « injecter » une sous-commande dans une commande déjà définie.

Notes

[1Je travaille avec Polyglossia et non pas avec Babel : tant pis pour les adeptes de Babel, ce tutoriel n’est pas pour vous.

[2Pour trouver le fichier, je renvoie à mon article sur les fichiers par défaut.