使用 STIX Math 与 xelatex 和 lualatex 时出现的问题

使用 STIX Math 与 xelatex 和 lualatex 时出现的问题

这个 MWE 在 lualatex 和 xelatex 中编译良好。

\documentclass{article}
  \usepackage{unicode-maths}
   \setmainfont{STIX}
    \setmathfont{STIX Math Regular}
  \newfontface{\chaptitlefont}{STIX-Bold}[Scale=1.6]
  \newfontface{\sectionfont}{STIX-Bold}[Scale=1.4]
  \newfontface{\subsectionfont}{STIX-Bold}[Scale=1.2]
  \setmonofont{InconsolataN}[Scale=MatchLowercase]
\begin{document}
    This is a test.\\
    {\chaptitlefont Chapter title}\\
    {\sectionfont Section font}\\
    \(
    \cos^2\theta+\sin^2\theta=1
    \)\\
    \(\mathbf{x^2+y^2=1}\).\\
\verb|Where|
\end{document}

它给出以下警告信息。

Package unicode-math Warning: The first font loaded by unicode-math must be an
(unicode-math)                OpenType Math font (with script=math). If you
(unicode-math)                simply want ‘the default’ before loading
(unicode-math)                supplementary fonts over the top for certain
(unicode-math)                ranges, use: 
(unicode-math)                  \setmathfont{latinmodern-math.otf}

它没有使用 STIX Math,而是使用 latinmorder-math.otf,正如在 lulatex 生成的日志文件末尾看到的那样:

<c:/texlive/2020/texmf-dist/fonts/opentype/public/inconsolata/InconsolataN-Regul
ar.otf><c:/texlive/2020/texmf-dist/fonts/opentype/public/stix/STIX-Bold.otf><c:/
texlive/2020/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf><c:/t
exlive/2020/texmf-dist/fonts/opentype/public/lm-math/latinmodern-math.otf><c:/te
xlive/2020/texmf-dist/fonts/opentype/public/stix/STIX-Regular.otf><c:/texlive/20
20/texmf-dist/fonts/opentype/public/stix/STIX-Bold.otf><c:/texlive/2020/texmf-di
st/fonts/opentype/public/stix/STIX-Regular.otf>

它显示有关 STIX Math 的警告:

Package fontspec Warning: Font "STIXMathRegular" does not contain requested
(fontspec)                Script "Math".

如果我在 STIX Math 之前将数学字体设置为 latinmodern-math,如下面的 MWE 所示,它可以编译成功。

 \documentclass{article}
\usepackage{unicode-math}
   \setmainfont{STIX}
     \setmathfont{latinmodern-math.otf}
   \setmathfont{STIX Math Regular}
  \newfontface{\chaptitlefont}{STIX-Bold}[Scale=1.6]
  \newfontface{\sectionfont}{STIX-Bold}[Scale=1.4]
  \newfontface{\subsectionfont}{STIX-Bold}[Scale=1.2]
  \setmonofont{InconsolataN}[Scale=MatchLowercase]
\begin{document}
    This is a test.\\
    {\chaptitlefont Chapter title}\\
    {\sectionfont Section font}\\
    \(
    \cos^2\theta+\sin^2\theta=1
    \)\\
    \(\mathbf{x^2+y^2=1}\).\\
\verb|Where|
\end{document}

它在 xelatex 和 lualatex 上都可以很好地编译。我在 Lualatex 中收到以下警告。

Package fontspec Warning: Font "STIXMathRegular" does not contain requested
(fontspec)                Script "Math".


Package fontspec Info: Could not resolve font "STIXMathRegular/B" (it probably
(fontspec)             doesn't exist).

unicode-math 仍然会给出警告,第一个字体必须是开放类型的数学字体。但是,从日志文件的最后一部分来看,它似乎正在使用 STIX Math。

<c:/texlive/2020/texmf-dist/fonts/opentype/public/inconsolata/InconsolataN-Regul
ar.otf><c:/texlive/2020/texmf-dist/fonts/opentype/public/stix/STIX-Bold.otf><c:/
texlive/2020/texmf-dist/fonts/opentype/public/stix/STIXMath-Regular.otf><c:/texl
ive/2020/texmf-dist/fonts/opentype/public/stix/STIX-Regular.otf><c:/texlive/2020
/texmf-dist/fonts/opentype/public/stix/STIX-Bold.otf><c:/texlive/2020/texmf-dist
/fonts/opentype/public/stix/STIX-Regular.otf>

对于 xelatex,我可以使用 Adob​​e Acrobat Reader 确认使用了 stix math。发生了什么? 在此处输入图片描述

如果之前 xelatex 发现 STIX Math 不可用,那么在加载 latinmodern-math 后它是如何变得可用的?为什么它仍然显示这些警告消息?

我再次收到错误消息

Package fontspec Info: Could not resolve font "STIXMathRegular/B" (it probably
(fontspec)             doesn't exist).

打印了粗体版的数学内容。我也没有检测到任何粗体字体替换。从 lualatex 生成的日志文件的最后一部分可以看出,它没有使用除 stix 或 inconsolata 之外的任何字体。这里发生了什么?

答案1

Khaled Hosny 的 XITS 和 XITS Math 是 STIX 的分支,修复了其错误,并具有相同的字形。虽然 STIX Two 也可以作为替代品,但它是一种明显不同的字体,可能符合您的要求。例如,它与使用 STIX 排版的期刊的内部风格不匹配。

作为额外奖励,XITS 提供粗体数学字体,可unicode-math自动加载。如果您使用\boldmath\boldsymbol,XITS Math 将立即可用。

\defaultfontfeatures{ Scale=MatchLowercase, Ligatures=TeX }
\setmainfont{XITS}[Scale=1.0]
\setmathfont{XITS Math}

答案2

使用

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{STIX Two Text}
\setmathfont{STIX2Math.otf}
[...]

STIX (one) 字体中缺少脚本定义“math”。当然,这不是什么大问题:您可以忽略警告。但是,使用 STIX2 更有意义。

相关内容