unicode-math 破坏 \not 命令

unicode-math 破坏 \not 命令
\documentclass{scrartcl}

\usepackage{fontspec}

\usepackage{mathtools}
\usepackage{unicode-math}
\setmathfont{Latin Modern Math}

\begin{document}
$\not\propto$
\end{document}

结果是:

结果

我该如何解决这个问题?

答案1

unicode-math已检查是否\npropto已定义(在本例中未定义),并且只有在未定义时才会返回到套印。它使用原始定义(保存为\__um_oldnot:),这在这里并不合适,与其重新定义\not以执行其他操作作为后备,不如稍微作弊,重新定义已保存的\__um_oldnot:以套印/

对于任何否定组合看起来不太好的命令,只需定义\nxxx要做其他事情,下面的例子展示了一个默认定位,然后如果你定义\npropto使用垂直笔触,效果如下,

在此处输入图片描述

\documentclass{scrartcl}

\usepackage{fontspec}

\usepackage{mathtools}
\usepackage{unicode-math}

\ExplSyntaxOn
\def\__um_oldnot:#1{\mathrel{%
\mathchoice
{\rlap{$\displaystyle\mkern1mu/$}}%
{\rlap{$\textstyle\mkern1mu/$}}%
{\rlap{$\scriptstyle/$}}%
{\rlap{$\scriptscriptstyle/$}}%
{#1}}}
\ExplSyntaxOff


\setmathfont{Latin Modern Math}

\begin{document}

$a \not\propto b$


\newcommand\npropto{\mathrel{|\mkern-12mu\propto}}


$a \not\propto b$

\end{document}

相关内容