我正在用打字机字体写法语,其提供的标点符号默认自动间距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}
),您会注意到“?”之前的空格就是您想要的(单词间空格),但不要惊讶于“:”和“!”之前没有空格,因为源代码中没有空格。