在数学模式中纠正自由符号

在数学模式中纠正自由符号

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 的 ,而=-取自ntxmiantxsy,即来自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}

相关内容