sfmath 和不常见的 sf 字体导致 \neq 错误

sfmath 和不常见的 sf 字体导致 \neq 错误

我需要使用 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}

结果:

使用 sfmath 和 Alegreya Sans 显示 \neq

答案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}

相关内容