![sfmath 和不常见的 sf 字体导致 \neq 错误](https://linux22.com/image/439341/sfmath%20%E5%92%8C%E4%B8%8D%E5%B8%B8%E8%A7%81%E7%9A%84%20sf%20%E5%AD%97%E4%BD%93%E5%AF%BC%E8%87%B4%20%5Cneq%20%E9%94%99%E8%AF%AF.png)
我需要使用 Alegreya Sans 作为主字体和 sf 数学,在 pdflatex 中使用 和 完成\usepackage[sfdefault]{AlegreyaSans}
。\usepackage{sfmath}
但是,从 Alegreya Sans 中获取的等号 = 与 不太匹配\not
,因此\neq
变得很丑陋。
如何将 = 设置为标准数学字母,例如\equiv
,或者仅修复\neq
命令?
梅威瑟:
\documentclass{article}
\usepackage[sfdefault]{AlegreyaSans}
\usepackage{sfmath}
\begin{document}
not ok: $a \neq b$
ok: $a \not \equiv b$
\end{document}
结果:
答案1
这是一种方法,用斜线来实现否定。
\documentclass{article}
\usepackage[sfdefault]{AlegreyaSans}
\usepackage{amsmath}
\usepackage{sfmath}
% these declarations are missing from sfmath.sty
\DeclareMathSymbol{=}{\mathrel}{SFMathUp}{`=}
\DeclareMathSymbol{/}{\mathord}{SFMathUp}{`/}
\makeatletter
\newcommand{\neg@te}[2]{%
\vphantom{/#2}%
\ooalign{\hidewidth$\m@th#1/$\hidewidth\cr$\m@th#1#2$}%
}
\DeclareRobustCommand{\neq}{\mathrel{\mathpalette\neg@te{=}}}
\RenewCommandCopy{\ne}{\neq}
\makeatother
\begin{document}
$a\neq b$ $a\ne b$
\end{document}
答案2
的定义\neq
如下:
\DeclareRobustCommand\ne{\not=}
来源:source2e
代码行号412和第519页(2021/12/09)
这意味着它会在该字体提供的字符\not
上添加字符=
。因此看起来很奇怪。\not
命令可能不适合=
每种字体的形状。您可以使用 LuaLaTeX 从所选字体中获取正确的形状,但您需要将其声明\neq
为文本命令。请参阅以下示例。
\documentclass{article}
\usepackage{fontspec}
\setmainfont{AlegreyaSans}
\DeclareTextCommand{\neq}{TU}{\symbol{"2260}}
\begin{document}
$\neq$
\end{document}