What is the best approach to get a non-breaking space just before the closing French guillemet » ?
I wish to be able to type in the natural style, which in French is « bonjour » with non-breaking spaces before » and after «. It would be great if the code were clever enough to forgive my occasional use of the English-style «bonjour» and add the forgotten space for me. Now I get this:
I am using the babel package with the [french] option. I am also using the csquotes package with the [babel] option. I have also included the xspace package in the belief/hope that it would help with the spaces. I am not committed to these packages or options, although I believe they are common. I am open to using the panglossia package, which is also quite popular to typeset foreign languages, if that would help. For this particular project, I am committed to using XeLaTeX, but the problem also exists when I compile with PDFLaTeX. I am compiling a French text with UTF-8 encoding enabled. Is there anything I am overlooking here? Do I need to redefine guillemets commands? I have seen several ways to do this, but as they did not seem to work I am leaving them out of my MWE so as not to have misleading, deprecated code around.
% !TeX TXS-program:compile = txs:///xelatex/[--shell-escape]
\documentclass[12pt]{article}
\usepackage[paperwidth=14cm,paperheight=20.5cm]{geometry}
\usepackage{libertine}% use this font and geometry width to reproduce bad break
\usepackage{ifxetex}
\ifxetex
\usepackage{fontspec}
\defaultfontfeatures{Ligatures={TeX}}
\else
\usepackage[utf8]{inputenc}
\usepackage[T1]{fontenc}
\usepackage{lmodern}
\fi
\usepackage[french]{babel}
\usepackage{xspace}
\usepackage[babel,french=guillemets]{csquotes}
\begin{document}
Je n'ai rien à dire --- mais je le dis bien : je suis un « beau parleur ».
Je n'ai rien à dire -- mais je le dis bien: je suis un «beau parleur».
Je n'ai rien à dire : je suis un « beau parleur » .
Je n'ai rien à dire:je suis un «beau parleur» .
\end{document}
Edit I have been explicit about the requirement that I use the guillemets directly and not a shortcut like \fg or \og. This is because I co-write with someone who will be typing in a standard text processor (and I will be copy-pasting their text back and forth several times).


