内部错误:错误的原生字体标志(XeLaTeX、fontspec、newtxmath、libertine、\dot)

内部错误:错误的原生字体标志(XeLaTeX、fontspec、newtxmath、libertine、\dot)

\dot{P}我正尝试在数学环境中使用。

梅威瑟:

\documentclass{scrartcl}
\usepackage[no-math]{fontspec}
\usepackage{libertineotf}
\usepackage[libertine]{newtxmath}
\begin{document}
    \begin{equation}
        \dot{P}(t) + 1234567890
    \end{equation}
\end{document}

没有该命令,\dot一切都按预期进行。
有了这个命令,我得到了错误:Internal error: bad native font flag并且没有产生任何输出。

如果没有该选项no-math或整个fontspec包(目前我甚至不需要其功能),编译的输出会包含正确的“带点”P。
但括号、加号和数字不是用 Libertine 字体设置的,而是用 CM 设置的。此外,包中的间距信息newtxmath似乎丢失了(可能与 CM 有关)。

我已经尝试更改软件包顺序。结果导致 fontspec 出现选项冲突错误,并且输出与没有 fontspec 软件包时相同。

有什么建议吗?
我尝试使用libertinefor 包pdflatex(当然没有 fontspec),它产生的输出与没有 fontspec 包的 XeLaTeX 相同。

版本/文件列表:

MikTeX                2.9 64bit, Win7
libertineotf.sty      2012/04/07 5.13-8
fontspec.sty          2012/05/06 v2.2b
newtxmath.sty         2012/06/25 v0.99

答案1

这是 XeTeX 中的一个错误,是由于将 OpenType(又称“原生”)字体 Libertine 与 TFM 字体中的重音混合而导致的newtxmath。由于漏洞这妨碍了 OpenType 数学重音定位的正确使用,该问题最近已得到修复。

我尝试修复这个新错误,但似乎有点棘手。无论如何,我希望它能在下一个版本发布时修复。

答案2

我终于在以下帮助下找到了解决方案亨德里克的回答点导数差异

只需添加

\renewcommand*\dot[1]{%
  \placeaccent{\acc@dot}{#1}%
  }
\renewcommand*\ddot[1]{%
  \placeaccent{\acc@dot\mkern1.4mu\acc@dot}{#1}%
  }

到他的代码片段。

当然,这对其他口音没有帮助。
对于该\hat{}命令,我找到了以下解决方案:

\renewcommand*\hat[1]{%
  \placeaccent{\acc@hat}{#1}%
 }

其中\acc@hat定义为:

\def\acc@hat{\mbox{\raisebox{-1.27ex}[0ex][0ex]{\^{}}}}

答案3

我遇到了类似的问题,这里是 MWE

\documentclass{article}
  \usepackage{fontspec}
  \usepackage{unicode-math}
  \setmainfont{Liberation Serif}
  \def\conduce{⇝}
  \usepackage{latexsym}
\begin{document}
   \[ \dot{P}(t) + 1234567890 \]
   \[\not\conduce\]
   \[\not\leadsto\]
\end{document}

这里的线条\[ \dot{P}(t) + 1234567890 \]渲染得很好

相反,在这个例子中,命令将崩溃;如果不使用,\not\leadsto它不会崩溃,但没有出现符号;该命令确实有效(但看起来有点丑)。unicode-math\not\conduce

请注意,这里使用了 Libertine 字体,但这并不相关;我尝试添加\setmathfont{STIX Two Math}和/或\setmainfont{Times New Roman},其行为相同。

因此,回答 OP:使用setmainfont

相关内容