我想使用newtxmath
along with LinuxLibertine
under 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)
现在,真正的难题开始于使用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
)