ConTeXt:使用 mathdesign 时素数(导数)看起来不正确

ConTeXt:使用 mathdesign 时素数(导数)看起来不正确

下面的例子:

\loadtypescriptfile[mathdesign]
\setupbodyfont[charter,12pt]

\starttext
\startTEXpage[offset=3bp]
Derivatives look bad: $y''=(y')'$.

Also in a displayed formula:
\startformula
f(x) = f(0)+\int_0^x f'(t)\,dt.
\stopformula
\stopTEXpage
\stoptext

给出输出:

图像显示不正确的素数

我用

ConTeXt  ver: 2018.02.25 19:48 MKIV beta  fmt: 2018.3.2  int: english/english

运行pdffontspdf 文件,我得到

name                                 type              encoding         emb sub uni object ID
------------------------------------ ----------------- ---------------- --- --- --- ---------
IGTPXN+Bitstream-Charter             CID Type 0C       Identity-H       yes yes yes     10  0
HBTNTB+CharterBT-Italic              Type 1            Custom           yes yes no      11  0
OVWAZT+MathDesign-CH-Regular-Symbol-10 Type 1            Builtin          yes yes no      12  0
WNUDUP+Bitstream-Charter             CID Type 0C       Identity-H       yes yes yes     13  0
VZLEXX+MathDesign-CH-Regular-Extension-10 Type 1            Builtin          yes yes no      14  0
CEWEBK+Bitstream-Charter             CID Type 0C       Identity-H       yes yes yes     15  0

问:我怎样才能使素数看起来正常?

答案1

正如我所提议的https://mailman.ntg.nl/pipermail/ntg-context/2017/089541.html,您只需将定义从 复制粘贴plain.tex到文档中,即可恢复素数的经典 Plain TeX 行为。我在这里使用 Iwona,因为 Mathdesign 未与 Standalone 捆绑在一起,但 Iwona 在素数方面也存在同样的问题。您唯一需要做的调整是\prime在 的定义后插入一个显式的字距\prim@s。否则 LuaTeX 将尝试将两个单个素数连在一起,U+2033 DOUBLE PRIME这在 Iwona 中是行不通的(至少在 Iwona 中是这样)。

但是,应用此解决方法后,您将失去 ConTeXt 中素数的所有 Unicode 特性,即,您只能将素数输入为'( U+0027 APOSTROPHE)。不能输入( U+2032 PRIME)、( ‎U+2033 DOUBLE PRIME) 或( U+2034 TRIPLE PRIME)。

我认为您最好使用 OpenType 数学字体。

\setupbodyfont[iwona,12pt]

\catcode`@=11
% from plain.tex
\mathcode`\'="8000 % ^\prime
{\catcode`\'=\active \gdef'{^\bgroup\prim@s}}
\def\prim@s{\prime\mkern0mu\futurelet\next\pr@m@s}
\def\pr@m@s{\ifx'\next\let\nxt\pr@@@s \else\ifx^\next\let\nxt\pr@@@t
  \else\let\nxt\egroup\fi\fi \nxt}
\def\pr@@@s#1{\prim@s} \def\pr@@@t#1#2{#2\egroup}
\catcode`@=12

\starttext

\startTEXpage[offset=3bp]
Derivatives look bad: $y''=(y')'$.

Also in a displayed formula:
\startformula
f(x) = f(0)+\int_0^x f'(t)\,dt.
\stopformula
\stopTEXpage
\stoptext

前:

在此处输入图片描述

后:

在此处输入图片描述

相关内容