使用 polski 和 newtxmath 时无法输入 \geq 或 \leq

使用 polski 和 newtxmath 时无法输入 \geq 或 \leq
\documentclass[12pt]{mwrep}
\usepackage{polski}
\usepackage{newtxmath}
\begin{document}
Why can't I write $a \leq 3$ or
\[
a \geq 2
\]
\end{document}

输出:
在此处输入图片描述

当使用上面 MWE 中显示的包组合时,我无法获取某些字符(\geq\leq)。当我评论时,\usepackage{polski}我得到了正确的结果。不幸的是,我需要这个包。我该怎么做才能解决这个问题?

答案1

使用另一种顺序的包:

\documentclass[12pt]{mwrep}
\usepackage{newtxmath}
\usepackage{polski}
\begin{document}
Why can't I write $a \leq 3$ or
\[
a \geq 2
\]
\end{document}

或者重新定义符号:

\documentclass[12pt]{mwrep}
\usepackage{polski}
\usepackage{newtxmath}
\DeclareSymbolFont{Symbols}{OMS}{cmsy}{m}{n}
\DeclareMathSymbol{\leq}{\mathrel}{Symbols}{"14}
\DeclareMathSymbol{\geq}{\mathrel}{Symbols}{"15}
\begin{document}
Why can't I write $a \leq 3$ or
\[
a \geq 2
\]
\end{document}

答案2

该包polski重新定义了symbol要使用的字体,\OMS/plsy/m/n而不是通常的\OMS/cmsy/m/n;字体的\leq\geq的位置与标准编码不同(因为它想使用斜条而不是通常的直条);事实上它指出

\DeclareMathSymbol{\xleq}{3}{symbols}{172}
\DeclareMathSymbol{\xgeq}{3}{symbols}{173}
\let\leq=\xleq
\let\geq=\xgeq
\let\le=\leq
\let\ge=\geq

newtxmath这就是为什么在之后加载时无法获得正确符号的原因polski。另一方面,如果你颠倒顺序,polski将定义数学字母表,从而使 的加载无效newtxmath。因此解决方法应该是

\usepackage{polski}
\usepackage{newtxmath}

\DeclareMathSymbol{\leq}{\mathrel}{symbols}{20}
   \let\le=\leq
\DeclareMathSymbol{\geq}{\mathrel}{symbols}{21}
   \let\ge=\geq

以便将两个符号恢复到正确的位置。

笔记。看起来这些符号的重新定义应该取决于包选项plmath,但实际上它总是执行的。

相关内容