libertine
当将该包与 和 一起newtxmath
使用时pdflatex
,数学模式下的等号和减号字形不会取自 libertine 字体,这会导致与其他符号(如“加号”运算符)相比符号过大,而“加号”运算符是从 libertine 字体中正确获取的。此外,在数学模式下,错误的字形具有完全不同的形状(直角大写字母,而不是像“加号”符号那样的圆角大写字母)。
最小工作示例:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}
\begin{document}\noindent
Text: a = b + c \textminus{} d \\
Math: $a = b + c - d$
\end{document}
文本模式(当然)使用正确的字形,数学模式则不然。
编辑:请注意,在上面的例子中,我仅以文本模式提供公式,以证明 libertine 字体中提供了正确的字形。当然,我总是使用数学模式来编写方程式等。
这种行为是软件包中的错误newtxmath
还是应该这样工作?是否有可能更改单个字形(如 = 和 –)?
答案1
是的,这似乎是 的预期行为newtxmath
。原因很简单:虽然您可以从 Libertine 字体(如=
和 )中获取一些数学符号-
,但大多数数学符号并未涵盖。您想要的最终结果是从 Libertine 中获取的一些数学符号和 提供的大多数其他数学符号的混合newtx
。
但是,情况很奇怪:在您的 MWE 中,数学版本确实使用了+
来自 Libertine 的 ,而=
和-
取自ntxmia
和ntxsy
,即来自newtx
。我可以在newtx
代码中看到=
明确取自ntxmia
,但我看不出为什么-
取自newtx
和来自 Libertine 。我猜原因是OT1 编码中+
有,但没有。+
-
无论如何,您可以用 Libertine 的符号替换这两个有问题的符号,如下所示:
\documentclass{article}
\usepackage[utf8]{inputenc}
\usepackage{libertine}
\usepackage[libertine]{newtxmath}
%% change equal sign from U/ntxmia/m/it "3D to OT1/LinuxLibertineT-TLF/m/n "3D
\DeclareSymbolFont{libtext}{OT1}{LinuxLibertineT-TLF}{m}{n}
\DeclareMathSymbol{=}{\mathrel}{libtext}{"3D}
%% change minus sign from OMS/ntxsy/m/n "00 to TS1/LinuxLibertineT-TLF/m/n "3D
\DeclareSymbolFont{libtextsymb}{TS1}{LinuxLibertineT-TLF}{m}{n}
\DeclareMathSymbol{-}{\mathbin}{libtextsymb}{"3D}
\begin{document}
\noindent
Text: a = b + c \textminus{} d \\
Math: $a = b + c - d$
\end{document}