[Tex/LaTex] microtype and french typography

frenchfrenchspacingmicrotypespacingtypography

In french, we put spaces before characters : ! ; ? when we type the text. For instance, we will type

Que fait-on ? On met un espace avant les deux points : comme cela.

If I do so and use microtype, the spacing in the generated pdf file is not the right one. See the following example:

\documentclass{article}

\usepackage[utf8x]{inputenc}
\usepackage[french]{babel}
\usepackage[babel=true, kerning=french]{microtype}

\begin{document}
 
  Voici ce qui se passe quand on met un signe \og{}deux~points\fg{} 
 avec le package \og{}microtype\fg{} : il semble que ça ne marche pas ! 
 Un autre essai : est-ce que cela marche ?
  \bigskip 

  \textbf{But what happens if I type my text following the 
 English typographic rules?}
  \bigskip 

  Voici ce qui se passe quand on met un signe \og{}deux~points\fg{} 
 avec le package \og{}microtype\fg{}: il semble que ça ne marche pas! 
 Un autre essai: est-ce que cela marche?
 
\end{document}

enter image description here

Hence:

  • How can I use microtype and type my text the french way?

Note: here is the result without microtype.

\documentclass{article}

\usepackage[utf8x]{inputenc}
\usepackage[french]{babel}
%\usepackage[babel=true, kerning=french]{microtype}

\begin{document}
 
  Voici ce qui se passe quand on met un signe \og{}deux~points\fg{} 
 avec le package \og{}microtype\fg{} : 
 il semble que ça ne marche pas ! Un autre essai : est-ce que cela marche ?
 
\end{document}

enter image description here

Best Answer

If you want to use kerning=french, then you need to disable the punctuation settings made by babel and leave no space before punctuation symbols.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,french]{babel}
\frenchbsetup{AutoSpacePunctuation=false}
\usepackage[babel=true, kerning=french]{microtype}

\begin{document}

Voici ce qui se passe quand on met un signe \og{}deux~points\fg{}
avec le package \og{}microtype\fg{}: il semble que ça ne marche pas!
Un autre essai: est-ce que cela marche?

\bigskip

\begin{otherlanguage*}{english}
But what happens if I type my text following the
English typographic rules?
\end{otherlanguage*}

\end{document}

enter image description here

Note that for disabling the humongous space before punctuation used in French typography when using another language you have to tell LaTeX you want to temporarily change the rules.

Alternatively, don't use kerning=french; you can type a space before punctuation or not.

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english,french]{babel}
\usepackage[babel=true]{microtype}

\begin{document}

Voici ce qui se passe quand on met un signe \og{}deux~points\fg{}
avec le package \og{}microtype\fg{}: il semble que ça ne marche pas!
Un autre essai: est-ce que cela marche?

\bigskip

Voici ce qui se passe quand on met un signe \og{}deux~points\fg{}
avec le package \og{}microtype\fg{} : il semble que ça ne marche pas !
Un autre essai : est-ce que cela marche ?

\end{document}

enter image description here

My eyes will never get used to see such monstrosities perpetrated by the French. ;-)

Related Question