我正在尝试上下文,但无法\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