babel、frenchb 和 em dash

babel、frenchb 和 em dash

如果我没记错的话,在法语中,使用 LaTeX 排版的破折号---通常被视为不间断空格。“开头”破折号后面必须有一个不间断空格,而“结尾”破折号前面必须有一个不间断空格。

[french]{babel}不适用此规则,所以我最终制作了自己的宏:

\newcommand{\ocadr}{\mbox{---~}}
\newcommand{\fcadr}{\mbox{~---}}

有没有更好的方法来确保这些不间断的空间?

编辑:

这是一个证明使用 的合理性的最小例子\mbox

\documentclass{minimal}

\begin{document}

\parbox{9cm}{\textsc{
Dieu se sert des epreuves pour nous montrer nos c\oe{}urs,
 afin de pouvoir nous purifier et nous faire ensuite entrer
 dans le pays de la benediction ---~physiquement et spirituellement.
}}

\end{document}

生成结果:

em 坏换行符

\mbox使用---~,我得到:

em 好换行符

注意:

我保留了,\textsc因为我知道在给定大小的情况下会产生这种效果\parbox

答案1

我看到需要 ,\mbox因为连字符会插入\discretionary。但是,如果我是你,我会将空格保留在框外。因此

\newcommand*{\ocadr}{\mbox{---}~}
\newcommand*{\fcadr}{\unskip~---}

使用原语\unskip来避免任何额外的空间(在任何情况下,打开宏都应该跳过空格)以及\mbox防止打开材料后的中断似乎是最好的。

相关内容