结合上下文使用 \frak

结合上下文使用 \frak

我正在尝试上下文,但无法\frak工作。

下列操作应该有效吗?

\starttext
{\frak The quick brown fox jumps over the lazy dog. 1234567890}
\stoptext

我剪切并粘贴{\frak}http://wiki.contextgarden.net/Command/frak

我也尝试过类似的牙套,\frak{text}但是没有效果。

答案1

在从 Pdftex 迁移到 Luatex 的过程中,Context 放弃了对处理部分数学排版的“旧方法”的支持。如今的字体处理 严重依赖 Luatex 属性其中一些 Context 仅在数学模式下考虑。因此,一些在 Pdftex 时代曾经是字体切换的控制序列如今被映射到 Lua 代码,而这些代码根本不会在数学之外执行。以这个演示为例:

%% http://tex.stackexchange.com/q/161639/14066
%% run with MkII or MkIV
\def \demo {\fontname \font: \hskip \emwidth ABC abc 42}
\def \test #1{%
  \section {\detokenize {#1}}%
  \doifmodeelse {mkiv} {
    %% This works in MkIV …
    \startmathmode
      #1 \demo
    \stopmathmode
  } {
    %% … but this has an effect only in MkII.
    #1 \demo
  }
  \endgraf
}
\starttext
  \test \frak
  \test {\doifmodeelse{mkiv}\gothic\goth} %% no “goth” synonym in MkIV
  \test \cal
  \test \bbd
\stoptext

如果封闭 mathmode环境被注释掉,条件的 MkIV 部分将失去其效果;字体保持不变。

实际的宏定义在 font-ini.mkii,但被转移到更具体的 math-ini.mkiv 在 MkIV 中。从定义可以明显看出:

...
\unexpanded\def\frak      {\ifmmode\expandafter\mathfraktur   \fi}
\unexpanded\def\cal       {\ifmmode\expandafter\mathscript    \fi}
\unexpanded\def\bbd       {\ifmmode\expandafter\mathblackboard\fi}
\unexpanded\def\blackboard{\ifmmode\expandafter\mathblackboard\fi}
\unexpanded\def\fraktur   {\ifmmode\expandafter\mathfraktur   \fi}
\unexpanded\def\gothic    {\ifmmode\expandafter\mathfraktur   \fi}
  ...

它们不会在数学模式之外做任何事情。顺便说一句,这些条件只是为了提高性能,因为\mathfraktur在数学模式之外调用和类似操作从一开始就没有效果。

但是,新的顺序不会阻止您加载与 Pdftex 使用的完全相同的字体。您可以像定义任何其他字体一样定义它们:

\def \demo {\fontname \font: \hskip \emwidth ABC abc 42}

\definefont [frakturfont]      [eufm10 at 20pt]
\definefont [calligraphicfont] [msbm10 at 20pt]

\setupbodyfont [20pt]

\def \othertest #1{
  \section {\detokenize {#1}}
  \begingroup #1\demo \endgroup \endgraf
}

\starttext
  \othertest \frakturfont
  \othertest \calligraphicfont
\stoptext

上述命令的输出

相关内容