拉丁现代语中的“不是元素”

拉丁现代语中的“不是元素”

在下面的例子中,∉符号看起来不太好看。

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}
\begin{document}
This does not show: $\notin$ \\
This does not look good: $\not\in$
\end{document}

MWE output

\not\in不加载时可以工作unicode-math,但unicode-math不知何故阻止它工作(?)。Unicode 字符0x2209\notin)似乎不包含在 Latin Modern Math 字体中。我知道我可以从其他字体加载 Unicode 字符,但我只希望输出看起来像\not\inComputer Modern。

编辑:澄清一下,我只是希望输出看起来像,\not\in而不使用unicode-math。我想使用,unicode-math因为在这个例子中看不到的原因。

答案1

在 Khaled 上次发表评论后,以下方法似乎有效

\Umathchardef\xnot="3 \symoperators "0338
\AtBeginDocument{
  \renewcommand\not[1]{#1\xnot}
  \renewcommand{\notin}{\not\in}
}

然后

$a\not\in b \notin c$

可以工作(尽管位置似乎不是最佳的)。

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}

\Umathchardef\xnot="3 \symoperators "0338
\AtBeginDocument{\renewcommand\not[1]{#1\xnot}
\renewcommand{\notin}{\in\xnot}}

\begin{document}

$a \not\in S_{\not\in}$

$a\in\xnot b \notin c$

$a\in b \in c$

\end{document}

enter image description here

一个可能的改进是说

\Umathchardef\xnot="3 \symoperators "0338
\AtBeginDocument{
  \renewcommand\not[1]{#1\mathrel{\mkern1mu}\xnot}
  \renewcommand{\notin}{\not\in}
}

将斜线稍微向右推,使其上端与符号的终止符对齐\in

enter image description here

注意:这绝对不适用于 XITS Math 或 Asana Math,但它们有正确的符号。

更新

截至 2013 年 1 月,该问题似乎已得到解决;以下是最简单的示例:

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}

\begin{document}

$a \not\in S_{\not\in}$

$a \notin S_{\notin}$

\end{document}

enter image description here

LuaLaTeX 和 XeLaTeX 都给出了正确的结果。

进一步更新

代码再次被破坏,但 0.8j 版本unicode-math似乎已经修复了该问题。

答案2

\documentclass{article}
\usepackage{unicode-math}
\setmainfont{Latin Modern Roman}
\setmathfont{Latin Modern Math}
\newcommand\cnot[1]{%
  \mathrel{\ooalign{\hfil$#1$\hfil\cr\hfil$/$\hfil\cr}}}

\begin{document}

$a \cnot\in S$

\end{document}

注意:我不知道为什么 Oberdiek 的centernot包也失败了。所以我不得不自己实现一个。


编辑:

为了使宏按照 egreg 建议的那样自动改变大小,

\def\cnot#1{\mathrel{\mathpalette\ccnot{#1}}}
\def\ccnot#1#2{\ooalign{\hfil$#1#2$\hfil\cr\hfil$#1/$\hfil\cr}} % helper macro

答案3

尝试\centernot\in(从centernot包中):/无论后面跟着什么符号,它都会将其置于上方的中心。

相关内容