使用 Linux Libertine 字体进行数学运算,无需 newtxmath

使用 Linux Libertine 字体进行数学运算,无需 newtxmath

我正在尝试使用 Linux Libertine 作为数学(和主)字体,并且我使用了这个答案设置数学字体。但是,数学输出仍然是 CM。

\documentclass{minimal}   
\usepackage{amsmath, mathspec, libertine, lipsum}
%\usepackage[libertine]{newtxmath}
\setmathsfont[ItalicFont={LinLibertine_RI.otf}]{LinLibertine_R.otf}
\setmathrm{LinLibertine_R.otf}
\setboldmathrm{LinLibertine_RB.otf}
\setmathsf{LinBiolinum_RB.otf}


\begin{document}
\lipsum[1]

\begin{equation}
    \hat{Q}_i=\int_0^\infty \mathcal{G}^2(x) \Sigma^{-1}(x^2) f_i(x)dx
\end{equation}

\end{document}

在此处输入图片描述

如果我尝试取消注释该newtxmath行,则会收到错误

程序包 mathspec 错误:amsmath' must be loaded earlier thanmathspec'

但我amsmath之前已经加载过mathspec

我该如何解决这些问题(修复任何一个都可以,因为目标是使用 LL 字体进行数学运算)。


正如指出的那样,移动newtxmath之前amsmath解决了上述 MWE 中的问题。现在让我稍微修改一下,并将其amsthm也包括在内,这现在会导致许多其他错误,例如:

!LaTeX 错误:命令 \openbox 已定义。或名称 \end... 非法,请参阅手册第 192 页。

答案1

加载这些包的正确顺序是amsthm,,newtxmathmathspec

\usepackage{amsthm}
\usepackage[libertine]{newtxmath}
\usepackage{mathspec}

您无需加载,amsmath因为它已被加载。这也是为什么在它之后加载时会出现抱怨的newtxmath原因。mathspecnewtxmath

此外,请注意amsthm和都newtxmath定义了\openbox命令。但是,前者通过定义它\newcommand,而后者通过定义它\DeclareRobustCommand,因此它不会抱怨......

答案2

自由主义者是 Linux Libertine 的一个分支,修复了一些错误,并提供了非常好的数学支持(请查看本示例文档)。它将使您能够使用 Linux Libertine 进行数学运算,而无需使用newtxmath。这是问题标题...(请参阅XY问题)。

进行编译xelatex并安装 Libertinus 字体。

\documentclass[varwidth,border=1mm]{standalone}

\usepackage[
    math-style=ISO,
    bold-style=ISO,
    partial=upright,
    nabla=upright
]{unicode-math}

\setmainfont{Libertinus Serif}
\setsansfont{Libertinus Sans}
\setmathfont{Libertinus Math}


\begin{document}
The formula \(E=mc^2\) is arguably the most famous formula in physics.

In mathematics, it could be \(\mathrm{e}^{\mathrm{i}\uppi}-1=0\).

\(\displaystyle \sum_{k=0}^\infty \frac{1}{k^2} = \frac{\uppi^2}{6}\), and
\(\displaystyle \int\displaylimits_{-\infty}^\infty 
   \exp\left(-\frac{x^2}{2}\right) = \sqrt{2\uppi}\).

\(\alpha\beta\gamma\delta\epsilon\zeta\eta\theta\iota\kappa\lambda\mu\nu\xi\pi\rho\sigma\tau\upupsilon\phi\chi\psi\omega \varepsilon\vartheta\varrho\varsigma\varphi\varkappa\)

\(\upalpha\upbeta\upgamma\updelta\upepsilon\upzeta\upeta\uptheta\upiota\upkappa\uplambda\upmu\upnu\upxi\uppi\uprho\upsigma\uptau\upupsilon\upphi\upchi\uppsi\upomega \upvarepsilon\upvartheta\upvarrho\upvarsigma\upvarphi\upvarkappa\)

\(\Alpha\Beta\Gamma\Delta\Epsilon\Zeta\Eta\Theta\Iota\Kappa\Lambda\Mu\Nu\Xi\Pi\Rho\Sigma\Tau\Upsilon\Phi\Chi\Psi\Omega\)

\(\upAlpha\upBeta\upGamma\upDelta\upEpsilon\upZeta\upEta\upTheta\upIota\upKappa\upLambda\upMu\upNu\upXi\upPi\upRho\upSigma\upTau\upUpsilon\upPhi\upChi\upPsi\upOmega\)
\end{document}

截屏

但请注意:xe(la)tex目前(TeX Live 2016)有一个错误,在我的屏幕截图中可以看到:为什么 XeTeX 中的分数偏离了数学轴?TeX lualatexLive 2016 也有一个错误:使用 unicode-math 在 LuaLaTeX 中实现空格

相关内容