XeLaTeX 有时无法使用 LinuxLibertine 加载 newtxmath

XeLaTeX 有时无法使用 LinuxLibertine 加载 newtxmath

我想使用newtxmathalong with LinuxLibertineunder XeLaTeX。听起来可能很简单,但实际上却让我抓狂。以下是 MWE:

\documentclass{article}

\PassOptionsToPackage{no-math}{fontspec}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}

\begin{document}

\begin{tabular}{rl}
with mathmode: & without mathmode: \\
$1+2=3$ & 1+2=3 \\
\end{tabular}

Footnote\footnote{}$^,$\footnote{$123$}$^,$\footnote{}

\end{document}

但结果并没有显示预期的数学字体: 在此处输入图片描述

这是 XeTeX,版本 3.14159265-2.6-0.99992(TeX Live 2015/W32TeX)(预加载格式=xelatex 2016.3.4)

使用 PDFLaTeX 一切看起来都很好: 在此处输入图片描述

现在,真正的难题开始于使用XeLaTeX以下命令进行编译cygwin在此处输入图片描述

这是 XeTeX,版本 3.14159265-2.6-0.99992(TeX Live 2015/Cygwin)(预加载格式=xelatex 2015.10.12)

数学字体似乎是正确的,但在有多个脚注的情况下,如果其中一个脚注包含数学环境(或\url),则文本中的脚注编号会混乱!最后一个逗号和3比前面的标记略低。

知道发生什么事了吗?

答案1

newtxmath软件包在使用 XeTeX 或 LuaTeX 时有一种设置符号字体的特殊方式operators,这解释了数字的问题。

你可以通过做一些调整来使用标准字体,但在这种情况下会出现 XeTeX 的奇怪错误,请参阅xelatex + unicode+math + vphantom 中的错误

有一个解决方法,那就是修补\textsuperscript,以便以文本样式排版一些数学运算(但这个错误也可能出现在其他地方)。

\documentclass{article}
\usepackage{xpatch}

\PassOptionsToPackage{no-math}{fontspec}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}

\xpretocmd{\textsuperscript}
 {{\sbox0{$\textstyle x$}}}
 {}{}

\AtBeginDocument{%
  \DeclareSymbolFont{operators}{\encodingdefault}{\familydefault}{m}{n}%
  \SetSymbolFont{operators}{bold}{\encodingdefault}{\familydefault}{b}{n}%
}

%% Alternative
%\usepackage{unicode-math}
%\setmainfont{Libertinus Serif}
%\setsansfont{Libertinus Sans}
%\setmathfont{Libertinus Math}

\begin{document}

\begin{tabular}{rl}
with mathmode: & without mathmode: \\
$1+2=3$ & 1+2=3 \\
\end{tabular}

Footnote\footnote{123}\textsuperscript{,}\footnote{$123$}\textsuperscript{,}\footnote{123}

\end{document}

(注:输出已用 生成\textheight=3cm

在此处输入图片描述

相关内容