使用 luaotfload 在 Plain TeX 中更改数学字体

使用 luaotfload 在 Plain TeX 中更改数学字体

luaotfload使用 Plain LuaTeX更改数学字体

我不会对所有尝试过的选项进行详细说明,这里只是简要介绍一下:

在 Mac OS X 和 Windows7 上使用 Tex Live 2013、LuaTeXplain.fmtluaotfload.sty,(luaotfload-tool version 2.2, database version 2.204),以下 TeX 无法正确设置新的数学字体。

% this works with ConTeXt's LuaTeX-Plain perfectly, except
% that *all* text is rendered in italic, (but that is a 
% problem for another time -- still better than this).
%
\input luaotfload.sty
\font\lmromr   =
    {latinmodernmathregular:mode=base;script=math} at 14pt
\font\lmromi   = 
    {latinmodernmathregular:mode=base;script=math}  at 14pt
\font\lmromsr  = 
    {LatinModernMath-Regular:mode=base;script=math;ssty=0} at 12pt
\font\lmromsi  = 
    {LatinModernMath-Regular:mode=base;script=math;ssty=0} at 12pt
\font\lmromssr = 
    {LatinModernMath-Regular:mode=base;script=math;ssty=1} at 10pt
\font\lmromssi = 
    {LatinModernMath-Regular:mode=base;script=math;ssty=1} at 10pt

\textfont0 = \lmromr  
\scriptfont0 = \lmromsr
\scriptscriptfont0 = \lmromssr
\textfont1 = \lmromi
\scriptfont1 = \lmromsi
\scriptscriptfont1 = \lmromssi
\textfont2 = \lmromr
\scriptfont2 = \lmromsr
\scriptscriptfont2 = \lmromssr
\textfont3 = \lmromr
\scriptfont3 = \lmromsr
\scriptscriptfont3 = \lmromssr

\TeX's “hello world” display math:
$$
x = {{b\pm\sqrt{b^{2} - 4ac}}\over{2ac}}
$$
Or some inline: $0 = ax^{2} + bx + c$, or
$\sqrt{a\over b}$ 
({\tt\$\\sqrt\{a\\over b\}\$}),
$\sin({\alpha\over\theta})$
({\tt\$\\sin(\{\\alpha\\over\\theta\}}).

\bye

所有文本都直立,没有显示任何符号。显然是我的错,但我不知道该如何修复它,或者使用什么字体,或者除了上述字体功能外,还应该选择哪些字体功能。

主要参考:哈立德·霍斯尼。从其他搜索中获得了想法,但没有解决方案。不,我对 LaTeX 或 ConTeXt 或 XeTeX 有多简单不感兴趣 =)。

希望有人做一个{plain-luatex}标签。

答案1

由于 Unicode 和 TeX 之间的编码差异,您需要编写(几乎)所有数学模式定义。仅为了支持您的最低要求,您需要(至少):

\def\mathfont{TeXGyreBonumMath-Regular:script=math} % just to make it more obvious
\font\math="\mathfont;+ssty=0" at 14pt
\font\maths="\mathfont;+ssty=1" at .7\fontdimen6\math
\font\mathss="\mathfont;+ssty=2" at .5\fontdimen6\math
\textfont0=\math \scriptfont0=\maths \scriptscriptfont0=\mathss
\fam0

\Umathchardef\pm="2"0"00B1
\def\sqrt{\Uradical"0"221A }
\Umathcodenum`a="1D44E
\Umathcodenum`b="1D44F
\Umathcodenum`c="1D450
\Umathcodenum`x="1D465
\Umathcode`\/="0"0"2215
\Umathcode`\+="2"0"2B
\Umathcode`\=="3"0"3D
\Umathcharnumdef\alpha="1D6FC
\Umathcharnumdef\theta="1D703

\newtoks\mathtttoks\mathtttoks={%
  \Umathcodenum`a="1D68A
  \Umathcodenum`b="1D68B }
\def\tt{\the\mathtttoks}

$$
  x = { b\pm\sqrt{b^2 - 4ac} \over 2ac }
$$
Or some inline: $0 = ax^2 + bx + c$, or $\sqrt{a/b}$
$\tt\sqrt{a/b}$

\bye

在此处输入图片描述

我写了一些(不是全部,也有一些不必要的东西)要旨

答案2

您可以使用微分数学用于使用纯 LuaTeX 设置 OpenType 数学字体的软件包。使用 minim-math,您只需提供字体系列 0;无需其他配置。

下面是使用最小数学的示例:

% Required packages
\input luaotfload.sty
\input minim-math

% Font settings (minim-math provides no defaults)
\font\tenmath   = % normal font
    {Latin Modern Math:mode=base;script=math;ssty=0;} at 10pt
\font\tenmaths  = % script font
    {Latin Modern Math:mode=base;script=math;ssty=1;} at 7pt
\font\tenmathss = % scriptscript font
    {Latin Modern Math:mode=base;script=math;ssty=2;} at 5pt
% Note: only family 0 is required with minim-math
\textfont         0 = \tenmath
\scriptfont       0 = \tenmaths
\scriptscriptfont 0 = \tenmathss

% Here continues your example
\TeX's “hello world” display math:
$$
    x = {{b\pm\sqrt{b^{2} - 4ac}}\over{2ac}}
$$
Or some inline: $0 = ax^{2} + bx + c$, or
$\sqrt{a\over b}$ 

\bye

相关内容