ConTeXt 数学模式中的数字字距调整与正常情况不同且更差

ConTeXt 数学模式中的数字字距调整与正常情况不同且更差

比较以下两个:

\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

显示 autopunction=no 会导致逗号后出现空格

去引用阿迪亚在最近的邮件列表主题“自动标点符号的问题”中:

[我期望] 自动标点符号 [表现] 如下:如果逗号后面跟着非空格,则逗号应表现为“ord”;如果逗号后面跟着空格,则逗号应表现为“标点”。显然,这并没有发生。

该帖子于本月初发布,但该问题在今天的测试版中仍然存在。我会在邮件列表中重新讨论该问题。

相关内容