babel & frenchb

ou comment écrire en français

Fleuron

Introduction

Chaque langue possède des règles typographiques qui lui sont propre. On ne coupe pas les mots de la même manière en anglais et en français. Les items d’une listes commence par • en anglais et — en français.

En anglais et en allemand on ne met pas d’espace avant les signes doubles ( ; : ! ?) en français on met une espace insécable avant et une espace normale après pour le : et pour les ; ! ? ont met avant une espace fine insécable et une espace normale après.

Je te rappelle qu’en typographie l’espace séparant les mots est de genre féminin.

L’espace insécable est une espace qui ne peut être coupée par un saut de ligne. Elle s’écrit ~ en LaTeX (\, pour l’espace fine insécable).

La langue naturel de LaTeX est l’anglais. Le role du package babel est de permettre à LaTeX de parler d’autres langues, à l’aide d’extension comme frenchb pour le français.

frenchb est maintenue par Daniel Flipo, la dernière version est 2.6e (6 juillet 2013). Tu trouveras la documentation sur le site de Daniel Flipo

Comme tu peux le voir cette fiche date un peu. Depuis la version française de babel s'appelle babel-french et son numéro de version est la 3.5m au 20 juillet 2021. N'utilisant plus LaTeX depuis un petit moment (je préfère ConTeXt) je ne sais pas si tout ce que je raconte dans cette fiche est encore d'actualité.

Le package babel n’est pas suffisant pour écrire en français. En effet les fontes utilisées par défaut par LaTeX (appelées CM ou Computer Modern) ne possèdent pas les caractères tel que â, é, ï, ç, ù… Il faut donc charger une police adéquate par :

\usepackage[T1]{fontenc}
\usepackage{lmodern}

La première ligne

\usepackage[T1]{fontenc}

permet à LaTeX d’utiliser des fontes modernes T1 possédant tous les caractères utilisées par les langues d’Europe de l’ouest.

\usepackage{lmodern}

charge la fonte lmodern qui est un équivalent, avec tous les caractère spéciaux, de Computer Modern. Tu n’es pas obligé de te limiter à celle-ci, il en existe d’autre comme fourier (Utopia), txfonts (Times) ou pxfonts (Palatino), kpfonts (très belle fonte)…

Reconnaissance des lettres accentuées du clavier

On a un dernier problème à régler avant de pouvoir taper des textes en français avec LaTeX. Lui faire reconnaître les caractères accentués du clavier et éviter d’avoir à taper \’e pour é. Pour cela il suffit d’ajouter :

\usepackage[utf8]{inputenc}

Pour résumer

Les premières lignes de ton source juste après le \documentclass doivent être :

\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lmodern}

\usepackage[french]{babel}

Le package babel doit être le dernier package chargé.

L'option pour babel est french et non frenchb. Voici ce que dit Daniel Flipo : «Les options frenchb et francais (équivalentes à french depuis 2004), sont conservées pour des raisons de compatibilité, elles ne devraient plus être utilisées sur les installations modernes.»

Voici un petit correctif que j'ajoute en 2021 :
Le lancement de babel-french a été modifié. Daniel Flipo recommande de déclarer les options de langues comme arguments de\documentclass,elles peuvent alors être utilisées également par d’autres extensions :


\documentclass[12pt,english,french]{article}
\usepackage{varioref}
\usepackage{babel}

ou bien comme ceci :

\documentclass[12pt]{article}
\usepackage[french]{varioref}
\usepackage[english,french]{babel}

Je te renvoie à la documentation.

Les options de frenchb

frenchb accepte plusieurs options. Tu les places à l’aide de la commande :

\frenchbsetup{}

que tu mets dans le préambule de ton source. Elles sont en générale du type option=true ou option=false. Dans le cas ou l’option est vraie tu n’es pas obligé de mettre =true. option=true et option sont équivalent. Tu peux mettre plusieurs options, dans ce cas tu les sépares par une virgule.

\frenchbsetup{option1=false,option2=true,option3=false}

Césure des mots

Chaque langue a ses règles, en français on ne coupe pas un mot sur la dernière syllabe muette, par exemple césure ne sera jamais coupé comme ceci : césu- re. Il existe des cas tordus comme malaise qui se coupe en mal- aise s’il s’agit de tomber dans les pommes et en ma- laise si on a à faire à un habitant de la Malaisie (voir wikipedia). La césure c’est le boulot de frenchb. Toutefois tu peux rencontrer des cas ou tu n’es pas satisfait de la coupure du mot et que tu veuilles par exemple forcer la césure sur une syllabe muette. Tu emploies pour ce faire la commande \-. Appliquée à notre mot césure, cela donne : césu\-re. Voici un exemple, une succession de énorme et césure écrit dans une petite boite de 2,5 cm, à droite on laisse faire frenchb et à gauche on force la césure des syllabes muettes avec césu\-re et énor\-me.

Si au contraire tu ne veux pas que frenchb coupe un mot, il suffit de le placer dans une boite comme ceci :

\mbox{césure}

Cette méthode est très utile pour éviter qu’un numéro de téléphone soit coupé par LaTeX

\mbox{01 02 03 04 05}

L’inconvénient c’est que la portée des deux commandes que l’on vient de voir est locale. Si tu veux autoriser la césure sur la syllabe muette pour tous les mots « césure » et empêcher toutes césures du mot « énorme », il te faut utiliser la commande

\hyphenation{cé-su-re énorme}

que tu places dans le préambule de ton document.

Il ne faut pas séparer les différent mots avec des virgules. \hyphenation n'appartient pas à frenchb c'est une commande LaTeX.


La commande \hyphenation{césu-re}, interdit la coupure entre cé et sure, si tu veux conserver la première césure, tu dois écrire \hyphenation{cé-su-re}.

Signes doubles

Comme je l’ai indiqué dans l’introduction, en français qui dit signe double dit double espace un devant et un derrière.

Et là miracle, frenchb ajoutera automatiquement une espace insécable devant tous les signes doubles même si tu l’a oublié.

Un texte: écrit; n’importe! comment?

donne :

frenchb insère une espace avant, mais pas après.

Un texte:écrit;n’importe!comment?

donne

Je ne veux pas d’espace avant.

C’est bien joli tout ça mais quand je tape une url je ne veux pas d’espace avant le : dans http://

Et là re-miracle. En général une url se saisi en police à chasse fixe et donc si tu tapes

\texttt{http://lesfichesabebert.fr/ }

tu obtiens

En police à chasse fixe, frenchb n’ajoute pas automatiquement d’espace avant les signes doubles. Pas de problème non plus si tu utilises la commande \url, couplée avec le package hyperref, frenchb n’ajoute pas d’espace.

Oui ! je me doute que toi forcement tu veux écrire ton url avec une police normale. Dans ce cas tu ajoutes l’option AutoSpacePunctuation=false

\frenchbsetup{AutoSpacePunctuation=false}

qui désactive l’ajout automatique d’espace, mais alors attention à bien les saisir toi-même devant chaque signe double, tu n’as plus le droit à l’erreur.

Il existe une autre manière de procéder, surtout pour supprimer ponctuellement une espace. Tu utilises la commande \string.

Par exemple (je reprends l’exemple de la doc de frenchb) tu veux !!! tu écris

!\string!\string!

tu évites ! ! !

Tu peux utiliser la commande \NoAutoSpacing apparue dans la version 2.5a de frenchb :

!!!
{\NoAutoSpacing !!!}

Le cas du :

Tu te souviens peut-être que dans l’introduction j’ai dis que devant le : en typographie française on met une espace normal insécable alors que pour les 3 autres ( ; ! et ?) c’est une espace fine insécable. Par défaut frenchb respecte cette règle, comme tu peux le voir ci-dessous :

exemple:
exemple;
exemple!
exemple?

Si tu veux que tous les signes doubles aient la même espace tu ajoutes l’option ThinColonSpace=true (false par défaut), tu obtiens une espace fine devant le :

Les guillemets

Ils s’obtiennent en tapant \og pour « et \fg pour »

On déjà vu dans la fiche « LaTeX créer ses commandes » le problème de l’espace mangée en fin de commande. Tu retrouves le même problème avec \fg, si tu n’écris pas \fg{}, le mot suivant le guillemet fermant sera collé à ce dernier. Je te conseille fortement de charger le package xspace (on l’a vu dans la même fiche sur les commandes) qui permet de ce passer des {}.

Le début \og un mot\fg la suite.

sans xspace donne

avec xspace tu obtiens

frenchb insère automatiquement une espace insécable entre les guillemets et le mot. Il ne faut pas les insérer soi-même.

Tu peux écrire :

\og un mot\fg
\og un mot \fg
mais pas
\og~un mot~\fg

. . .

Les trois petits points s’obtiennent avec la commande \dots. N’utilises pas le point du clavier car tu n’obtient pas les vrais 3 points typographiques :

Les véritables points typographiques avec \dots
Les faux avec le clavier (pas beau)...

En français on ne mets pas d’espace avant une parenthèse fermante, hors, le \dots original ajoute une espace à la fin des trois points, frenchb surprime cette espace.

\selectlanguage{english}
(trois petits points\dots)
\selectlanguage{french}
(trois petits points\dots)

Noms propres

En français l’usage typographique veut que les noms propres soient écrit en petite capitale comme ça :

Pour ce faire il vaut mieux utiliser la commande \bsc{} de frenchb plutôt que la commande classique de LaTeX \textsc{}, car une autre règle de la typographie française veut que l’on ne coupe pas un nom propre en fin de ligne, ce que respecte :

\bsc{} mais pas \textsc{}.

Donc Robert Bidochon s’écrit :

Robert \bsc{Bidochon}

Mme, Melle

C’est la commande \up{} qui permet d’écrire correctement Mme, Melle, Mmes, Melles :

M\up{ me} , M\up{ elle} , M\up{ mes} , M\up{ elles}

Petite remarque typographique en passant :

En français l’abréviation de Monsieur c’est M. (un M majuscule avec un point) et pas Mr, Mr. Mr est réservé pour les sujets de sa gracieuse majesté britannique quelque soit la langue de l’ouvrage, c’est l’abréviation de Mister comme Mr Bond.

De même l’abréviation de Messieurs c’est MM. (deux M majuscules avec un point) et pas Ms, Mrs ou Mrs. Encore une foi Ms ou Mrs sont à réserver pour des sujets britanniques, Miss ou Mistress.

1er, 2e

Premier s’abrège avec 1\ier et deuxième avec 2\ieme qui imprime :

Pourquoi ne pas utiliser 1\up{er} ou 2\up{e} ? Parce que en typographie française le ième de deuxième, troisième, dixième… s’écrit e et pas ième, me… En utilisant les raccourcis de frenchb tu es sûr de respecter cette règle. Donc voici les commandes à utiliser :

1\ier , 1\iers , 1\iere , 1\ieres , 2\ieme, 2\iemes, 10\ieme 10\iemes\dots

qui impriment :

\primo, \secundo, \tertio, \quarto, donnent respectivement 1° , 2° ,3° , 4) . Pour les nombres suivants tu utilises \FrenchEnumerate{} : \FrenchEnumerate{8} pour 8° et \FrenchEnumerate{256} pour 256° .

Le ° du clavier n'est pas reconnu par LaTex.

no , nos ,No et Nos

Ils s’écrivent \no, \nos, \No et \Nos. frenchb ajoute automatiquement une espace insécable entre no et le chiffre, donc tu codes : \no1 (ou \no 1, c'est pareil) pour n° 1 et \nos12, 25 et 38 pour nos 12, 25 et 38.

De l’avantage du package xspace :

L’utilisation du package xspace, évite d’avoir à taper 1\ier%{},\secundo{}… pour ne pas voir l’espace suivante se faire bouffer.

Le degrés°

Le degrés s’écrit avec \degres.

Ce n’est pas un petit o comme dans \no.

\no1
n\degres 1

Tu pourras voir dans la littérature le symbole degrés écrit \degre mais attention car la gestion des espaces, dans ce cas n’est pas toujours bonne et dépend de la police utilisée :

20~\degres C
20~\degre C

~ est l’espace insécapble.

Ceci n'est pas le vrais symbole degré. Pour l'obtenir il faut utiliser le package textcomp (\usepackage{textcomp}).

Voici ce que donne la commande suivante :

\no \degres \degre \textdegree

sans textcomp

On voit bien la différence entre le petit o de n° et le rond parfait de degré. Avec textcomp et dans ce cas tu peux utiliser le ° du clavier :

\no \degres \degre \textdegree °

\degres utilise \textdegree qui provient de textcomp mais pas \degre.

Les nombres

Là encore il y a de grosses différences entre le monde anglo-saxon et les francophones. Le séparateur des décimales est un point en anglais et une virgule en français. Le séparateur des milliers est une virgule en anglais et une espace insécable en français. Il est préférable d’utiliser le package numprint (\usepackage{numprint}) qui associé à frenchb produira la bonne typographie.

123456789
\numprint{123456789}
\numprint{3,1415926535897932384626}
\numprint{12.34}

En plus tu peux préciser les unités de cette façon :

\numprint[kg]{12.34}
\numprint[m]{3524}

Si tu veux utiliser le raccourci \np{} au lieu de \usepackage{numprint}, il te faut charger le package de cette façon :

\usepackage[np]{numprint}

Les listes

frenchb prend le contrôle lors de la création de liste afin de remplacer le • anglais par le — français. Il modifie aussi les espaces verticaux entre les items. Voici deux exemples de la même liste, celle de gauche par défaut et celle de droite avec frenchb

Bien entendu tu peux revenir aux commandes par défaut si tu préfères. C’est même parfois obligatoire, notamment quand du veux que se soit un package particulier qui s’occupe des listes (enumitem, par exemple, voir la fiche « LaTeX et les listes »). Voici les différentes options qui permettent de revenir aux comportements par défaut.

Option Empèche frenchb de
StandardLists=true s’occuper des listes (si tu utilises enumitem par exemple)
ReduceListSpacing=false de réduire l’espace entre les item pour enumerate et description
CompactItemize=false de supprimer l’espace entre les items pour itemize
StandardItemLabels=true de remplacer le marqueur de liste par — et de retrouver •

Notes de bas de page

frenchb prend le contrôle des notes de bas de page pour les mettre au goût français. Voici deux exemples de la même note, celle de gauche par défaut et celle de droite avec frenchb

Bien entendu tu peux revenir aux commandes par défaut si tu préfères. C’est même parfois obligatoire, notamment quand du veux modifier l’aspect des notes avec les options KOMA-Script, par exemple. Voici les différentes options qui permettent de revenir aux comportements par défaut.

Option Empèche frenchb de
FrenchFootnotes=false s’occuper des notes de bas de page, on revient aux comportements par défaut
AutoSpaceFootnotes=false d’ajouter une espace fine insécable avant l’appel de chaque note dans le texte courant

Notes de bas de page et minipages

Il arrive que l’on veuille mettre dans un texte un passage en aparté. Pour cela en général on utilise une minipage qui permet de lui appliquer une forme particulière. En français les appels de note dans ce cas sont numéroté avec des lettres (a, b, c…)

La commande \StandardFootnotes placé à l’intérieur de la minipage permet d’obtenir un comportement standard des notes de minipage.

Paragraphe

Décidément on a rien de commun avec les anglo-saxons. Mêmes les paragraphes ont un traitement différent. En anglais le premier paragraphe de chaque section n’est pas indenté, les autres le sont. En français tous les paragraphes sont indentés, même le premier. Voici deux exemples du même paragraphe, celui de gauche par défaut et celui de droite avec frenchb.

L’option IndentFirst=false permet de retrouver le comportement par défaut et de supprimer l’indentation du premier paragraphe.

Francisation des titres

frenchb se charge de la francisation des titres chapter en chapitre, de la légende des flottants (Fig. 1 : en Figure 1 –), de la date (\today),…

On a vu dans la fiche « Changer les noms prédéfinis par LaTeX » comment redéfinir ces noms. Si tu te rappelles j’ai précisé dans cette fiche le fait qu’il fallait redéfinir ces nom après le \begin{document}. La raison c’est que l’action de babel et frenchb n’a lieu qu’au \begin{document} donc tout ce qui est redéfini avant est sans effet. Si tu es dans un document uniquement en français ce n’est pas grave. Par contre dans un document multi-lingue, tu seras obligé de redéfinir les renommages à chaque changement de langue.

Pour remédier à cela tu peux utiliser la commande, un peu barbare :

\addto\captionsfrench{\def\commande{nouveauNom}}

que tu places dans le préambule de ton document (avant le \begin{document}), de cette manière à chaque foi que tu reviens au français les modifications sont prisent en compte.

\commande correspond aux commandes décrites dans la fiche précité que je rappelle dans la page suivante et nouveauNom le nouveau nom que tu veux donner au titre par exemple « Bibliographie » en « Références bibliographiques » par :

\addto\captionsfrench{\def\bibname{Références bibliographiques}}
CommandeTexte anglais (par défaut)Texte français
\abstractnameAbstractRésumé
\alsonamesee alsovoir aussi
\appendixnameAppendixAnnexe
\bibnameBibliographyBibliographie
\ccnameccCopie à
\chapternameChapterChapitre
\contentsnameContentsTable des matières
\enclnameenclP.J.
\figurenameFigureFigure
\glossarynameGlossaryGlossaire
\indexnameIndexIndex
\listfigurenameList of FiguresTable des figures
\listtablenameList of TablesListe des tableaux
\pagenamePagepage
\partnamePartpartie
\prefacenamePrefacePréface
\proofnameProofDémonstration
\refnameReferencesRéférences
\seenameseevoir
\tablenameTableTable

Conclusion

Bien voilà on a quasiment fait le tour de la francisation de LaTeX. frenchb permet de faire d’autre chose comme par exemple de redéfinir les marqueurs des listes, mais comme je préfère, dans ce cas, utiliser enumitem et que j’ai pondu une fiche dessus, si la façon de faire de frenchb t’intéresse je te renvoie à la doc