修改 Babel 法语标点符号间距

修改 Babel 法语标点符号间距

我正在用打字机字体写法语,其提供的标点符号默认自动间距babel有点不令人满意。

在此处输入图片描述

(上面是法语模式,下面是英语模式)

我需要标点符号前的空格正好是一个空格。我该如何修改这个值?

以下是 MWE:

\documentclass{article}

\renewcommand{\familydefault}{\ttdefault}
\renewcommand{\rmdefault}{\ttdefault}
\raggedright

\usepackage[english,french]{babel}

\begin{document}

\selectlanguage{french}
Qu'est-ce que c'est ? C'est ...

\selectlanguage{english}
Qu'est-ce que c'est ? C'est ...

\end{document}

答案1

的代码?删除了它前面的可能空格,然后添加了\FBthinspace,其定义为

\hskip 0.5\fontdimen2\font\relax

但你想要的是完整的\fontdimen2\font。另一方面,冒号使用\FBcolonspace,其定义为\space,因此完整的解决方案是使两个宏执行相同的操作。

\documentclass{article}

\renewcommand{\familydefault}{\ttdefault}
\renewcommand{\rmdefault}{\ttdefault}
\raggedright

\usepackage[english,french]{babel}

\renewcommand{\FBthinspace}{\FBcolonspace}

\begin{document}

\selectlanguage{french}
Qu'est-ce que c'est ? C'est; c'est: c'est! ...

\selectlanguage{english}\frenchspacing
Qu'est-ce que c'est ? C'est ; c'est : c'est ! ...

\end{document}

在此处输入图片描述

在用来比较的英文部分,我设置了\frenchspacing避免在标点符号后添加多余的空格。

答案2

请注意 babel-french才不是修改字体为高标点前的间距已声明为等宽字体(“打字机”)。

在您的示例中,您宣布您正在使用 \rmfamily,这就是为什么在“?”之前会出现一个很窄的空格。@egreg 提供了正确的补丁。

如果您在@egreg 的示例中在 \begin{document} 之后添加 \ttfamily(删除\renewcommand{\FBthinspace}),您会注意到“?”之前的空格就是您想要的(单词间空格),但不要惊讶于“:”和“!”之前没有空格,因为源代码中没有空格。

相关内容