\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
,但实际上它总是执行的。