比较以下两个:
\starttext
\unit{0.01 kilogram}
$ \unit{0.01 kilogram} $
\stoptext
我天真地期望它们会产生非常相似的结果,但后一种情况(即数学模式中的情况)我们在小数点和第一个 0 之间得到了一个令人讨厌的空格。观察:
我误解了什么或者做错了什么?
答案1
(我将这个问题作为一个单独的答案,因为我认为“它坏了,这就是它的作用”和“它现在可以工作了,这就是它的作用”在概念上是不同的答案。也因为改变答案会让它下面的评论看起来很奇怪。)
您的问题实际上是测试版的问题;此问题已在当前版本中修复Mark IV 测试版(2012.12.03 11:33)。现在有三个选项\setupmathematics[autopunctuation=...]
:
autopunctuation=no
— 默认的 TeX 行为。逗号会占用很短的空格,句号则没有任何空格。autopunctuation=yes
— 手动控制逗号。逗号后跟空格时,空格较短;句号和逗号后跟其他内容时,空格较短。autopunctuation=all
— 类似yes
,但句号的行为相同。
至于\unit{2.5}
或\unit{2,5}
:小数点和数字分隔符后面都不会出现任何不必要的空格,无论哪个是逗号,哪个是句号。所以它又可以正常工作了,就像测试版短暂中断之前一样。
代码说明了该行为。出于懒惰,“所需”列使用了完整的空格。
\startTEXpage[offset=2mm]
\setupmathematics[autopunctuation=no]
autopunctuation=no
\starttabulate[||||]
\NC input \NC desired \NC output \NC \NR
\NC 2,5 \NC 2, 5 \NC $2,5$ \NC \NR
\NC 2, 5 \NC 2, 5 \NC $2, 5$ \NC \NR
\NC 2.5 \NC 2.5 \NC $2.5$ \NC \NR
\NC 2. 5 \NC 2.5 \NC $2. 5$ \NC \NR
\stoptabulate
\setupmathematics[autopunctuation=yes]
autopunctuation=yes
\starttabulate[||||]
\NC input \NC desired \NC output \NC \NR
\NC 2,5 \NC 2,5 \NC $2,5$ \NC \NR
\NC 2, 5 \NC 2, 5 \NC $2, 5$ \NC \NR
\NC 2.5 \NC 2.5 \NC $2.5$ \NC \NR
\NC 2. 5 \NC 2.5 \NC $2.5$ \NC \NR
\stoptabulate
\setupmathematics[autopunctuation=all]
autopunctuation=all
\starttabulate[||||]
\NC input \NC desired \NC output \NC \NR
\NC 2,5 \NC 2,5 \NC $2,5$ \NC \NR
\NC 2, 5 \NC 2, 5 \NC $2, 5$ \NC \NR
\NC 2.5 \NC 2.5 \NC $2.5$ \NC \NR
\NC 2. 5 \NC 2. 5 \NC $2. 5$ \NC \NR
\stoptabulate
\stopTEXpage
结果如下 --- 图像质量不是最好的,但是(细)空间仍然可见。
为了完整性:马克二世。
空格将被忽略。
无
\enablemathpunctuation
(没有\disablemathpunctuation
):% default TeX behaviour 2.5 or 2. 5 --> 2.5 2,5 --> 2, 5
和
\enablemathpunctuation
:2.5 --> 2.5 2,5 --> 2,5
答案2
这是因为自动标点符号目前存在错误。另请参阅
自动标点功能无法正常工作。这两个问题之间的唯一区别在于您描述的症状。您问的是为什么数学标点符号默认看起来很糟糕(即什么时候autopunctuation=no
);mbork 问的是为什么autopunctuation=yes
不按他期望的方式做。
% this example uses \m{...} rather than $...$,
% the result is identical, but \m{...} is preferred
\setupmathematics[autopunctuation=no]
\m{(2,5)} versus \m{(2, 5)} -- no, default
\crlf
\m{(2.5)} versus \m{(2. 5)} -- no, default
\setupmathematics[autopunctuation=yes]
\m{(2,5)} versus \m{(2, 5)} -- yes
\crlf
\m{(2.5)} versus \m{(2. 5)} -- yes
去引用阿迪亚在最近的邮件列表主题“自动标点符号的问题”中:
[我期望] 自动标点符号 [表现] 如下:如果逗号后面跟着非空格,则逗号应表现为“ord”;如果逗号后面跟着空格,则逗号应表现为“标点”。显然,这并没有发生。
该帖子于本月初发布,但该问题在今天的测试版中仍然存在。我会在邮件列表中重新讨论该问题。