薄而牢不可破的空间

薄而牢不可破的空间

您可能知道,在法语字体中,“大”标点符号 ( !?;») 前面必须有一个细的不可分割的空格(显然«后面也必须有一个细的不可分割的空格,并且作为例外,:前面应该有一个正常的不可分割的空格),例如参见法语http://fvsch.com/articles/espaces-ponctuation/

以下是一个例子: 在此处输入图片描述

扩展使用的解决方案babel是在每种情况下都使用带有 的正常不可破坏空间~

我有三个问题要解决这个问题:

  1. 的实际定义是什么~
  2. 有没有办法改变这个定义~
  3. 有没有办法强制babel使用薄的牢不可破空间!?;«»和正常的牢不可破空间:

感谢您提供任何线索。

答案1

babel你所断言的反例。正确的根据法语印刷规则,使用空格。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage{newunicodechar}
\newunicodechar{«}{\og}
\newunicodechar{»}{\fg}

\begin{document}

Une phrase en français; sans intérêt, avec signes diacritiques:
nous pouvons voir qu'il est correct!

Les \og guillemets\fg{} sont corrects aussi.

Les «guillemets» sont corrects aussi.

\end{document}

在此处输入图片描述

;如您所见,和之前的空格很细!(对于 也是一样?),但它们是冒号之前的正常空格。

对于 guillemets 来说,标准方法是使用\og\fg,但可以重新定义«»以获得相同的效果。

\showoutput使用时日志文件的一些摘录:

....\T1/cmr/m/n/10 f
....\T1/cmr/m/n/10 r
....\T1/cmr/m/n/10 a
....\T1/cmr/m/n/10 n
....\T1/cmr/m/n/10 ?
....\T1/cmr/m/n/10 a
....\T1/cmr/m/n/10 i
....\T1/cmr/m/n/10 s
....\penalty 10000
....\kern 1.6663
....\T1/cmr/m/n/10 ;
[...]
....\T1/cmr/m/n/10 d
....\T1/cmr/m/n/10 i
....\T1/cmr/m/n/10 a
....\T1/cmr/m/n/10 c
....\T1/cmr/m/n/10 r
....\T1/cmr/m/n/10 i
....\T1/cmr/m/n/10 t
....\T1/cmr/m/n/10 i
....\T1/cmr/m/n/10 q
....\T1/cmr/m/n/10 u
....\T1/cmr/m/n/10 e
....\T1/cmr/m/n/10 s
....\penalty 10000
....\glue 3.33252 plus 1.66626 minus 1.11084
....\T1/cmr/m/n/10 :
....\glue 3.33252 plus 1.66626 minus 1.11084
[...]
....\T1/cmr/m/n/10 c
....\T1/cmr/m/n/10 o
....\T1/cmr/m/n/10 r
....\T1/cmr/m/n/10 r
....\T1/cmr/m/n/10 e
....\T1/cmr/m/n/10 c
....\T1/cmr/m/n/10 t
....\penalty 10000
....\kern 1.6663
....\T1/cmr/m/n/10 !

细空格就是\kern 1.6663,而冒号周围的两个空格则是正常的词间空格。

如果您想要将冒号前的空格更改为正常的单词间空格而不拉伸(但会收缩)以及打开/关闭格子之前/之后的空格,只需重新定义\FBcolonspace\FBguillspace

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[french]{babel}

\usepackage{newunicodechar}
\newunicodechar{«}{\og}
\newunicodechar{»}{\fg}

\renewcommand{\FBcolonspace}{\hspace{\fontdimen 2\font minus\fontdimen4\font}}
\renewcommand{\FBguillspace}{\thinspace}

\begin{document}

Une phrase en français; sans intérêt, avec signes diacritiques:
nous pouvons voir qu'il est correct!

\makebox[3cm][s]{Deux: point}

Les \og guillemets\fg{} sont corrects aussi.

Les «guillemets» sont corrects aussi.

\showoutput

\end{document}

在此处输入图片描述

添加的冒号示例是故意夸张的。

答案2

从:如何排版“小”不间断空格

(1)的定义~

\leavevmode\nobreak\ 

(2)改变\nobreakspace定义。

(3) 我不知道如何使用 babel 来做到这一点,但你可以使用它\,来插入薄的牢不可破的空间。

编辑:打字错误。

答案3

我认为你可以用babel-french(frenchb)包来做你需要做的事情:http://ctan.org/pkg/babel-french

答案4

除了 egreg 的出色回应外,我还想补充frenchb一点babel此选项

ThinColonSpace=true (false) changes the inter-word unbreakable space
added before the colon ‘:’ to a thin space, so that the same amount
of space is added before any of the four ‘high punctuation’ characters.
The default setting is supported by the French ‘Imprimerie Nationale’.

相关内容