以下 MWE 产生附图:
\documentclass{article}
\usepackage{fontspec}
\usepackage{amsmath,amssymb}
\usepackage{unicode-math}
\begin{document}
With \LaTeX{} commands:
\begin{gather*}
A \not= B\\
A \not\le B\\
A \not\lesssim B\\
A \not\approxeq B
\end{gather*}
With Unicode characters:
\begin{gather*}
A \not= B\\
A \not≤ B\\
A \not≲ B\\
A \not≊ B
\end{gather*}
\end{document}
为什么被\not
取代6
?
我尝试使用 Unicode combining long solidus overlay
,但根本不起作用:
\begin{gather*}
A ≠ B\\
A ≰ B\\
A ≴ B\\
A ≊̸ B
\end{gather*}
答案1
如果存在适合组合\not
+ unicode 符号的 unicode 字符,则可以添加所需的声明,它们将像\not
+ 命令的组合一样工作。但在我看来,没有 \not\approxeq,所以这里需要一个后备,比如与斜线的组合。在这种情况下,您会得到 6,因为 unicode-math 中似乎有一个错误:它丢失了 unicode-math-tables 中 \not 的定义。这似乎是一种解决方法(但在我看来,看起来并不完美)。
\documentclass{article}
\usepackage{fontspec}
\usepackage{amsmath,amssymb}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}
\ExplSyntaxOn
\cs_gset:cpn { not≤ } { \nleq }
\cs_gset:cpn { not≲ } { \not\lesssim }
%Fallback bug correction:
\__um_sym:nnn {"00338}{\__um_oldnot: }{\mathaccent}
\ExplSyntaxOff
\begin{document}
With \LaTeX{} commands:
\begin{gather*}
A \not= B\\
A \not\le B\\
A \not\lesssim B\\
A \not\approxeq B
\end{gather*}
With Unicode characters:
\begin{gather*}
A \not= B\\
A \not≤ B\\
A \not≲ B\\
A \not≊ B
\end{gather*}
\end{document}
编辑
如果使用关键字,就会得到更好的“后备” overlay
。这只适用于 lualatex:这里以 \approxeq 为例:
\documentclass{article}
\usepackage{fontspec}
\usepackage{amsmath,amssymb}
\usepackage{unicode-math}
%\setmathfont{Cambria Math}
\newcommand\napproxeq{\Umathaccent overlay fixed 7\symoperators "00338 \approxeq}
\begin{document}
$A \napproxeq B $
$A \not\approxeq C $
\end{document}
我会将其添加到unicode数学的问题跟踪器中。
答案2
本地重新定义\not
为堆栈。
\documentclass{article}
\usepackage{fontspec}
\usepackage{amsmath,amssymb}
\usepackage{unicode-math}
\usepackage{stackengine}
\AtBeginDocument{\renewcommand\not[1]{%
\mathrel{\ensurestackMath{\stackengine{0pt}{#1}{\mkern1mu/}{O}{c}{F}{T}{L}}}}%
}
\begin{document}
With \LaTeX{} commands:
\begin{gather*}
A \not= B\\
A \not\le B\\
A \not\lesssim B\\
A \not\approxeq B
\end{gather*}
With Unicode characters:
\begin{gather*}
A \not= B\\
A \not≤ B\\
A \not≲ B\\
A \not≊ B
\end{gather*}
\end{document}
为了进行比较,这是原始的未修复代码。