如何用 kpfonts 编写 \nsupseteq?

如何用 kpfonts 编写 \nsupseteq?
\documentclass[9pt, a4paper]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{a4paper, total={170mm,257mm}, left=20mm, top=20mm,}
\usepackage{amsmath,amsfonts,amssymb} 

\usepackage{kpfonts}

\begin{document}

$\nsupseteq \, \nsubseteq$

\end{document}

如果我尝试运行它(在 ShareLaTeX 中),那么的符号\nsupseteq看起来会很奇怪,但\nsubseteq不会。

我发现问题出在包装上kpfonts。但我确实喜欢这个字体。

我该如何解决?

答案1

这是字体中的一个错误jkpsyb;在 slot 中0x2B有与 slot 中相同的符号0x29,而不是 slot 中符号的类似物0x2A。以下是字体表的相关部分:

在此处输入图片描述

底线表明了问题所在。

解决方法:

\documentclass[9pt, a4paper]{extarticle}
\usepackage[utf8]{inputenc}
\usepackage{geometry}
\geometry{a4paper, total={170mm,257mm}, left=20mm, top=20mm,}
\usepackage{amsmath}

\usepackage{kpfonts}
\renewcommand{\nsupseteq}{\not\mathrel{}\supseteq}
\renewcommand{\nsubseteq}{\not\mathrel{}\subseteq}

\begin{document}

$\nsupseteq \, \nsubseteq$

\end{document}

这会改变用于\not否定的两个符号;只有改变错误的符号才会使它们不相似。

在此处输入图片描述

为什么奇怪\mathrel{}?因为该kpfonts包试图智取胜:它重新定义\not为向前看,以查看后面是否有可以否定的符号。因此,\not\supseteq我们将以无限循环结束,因为它将被翻译成,\nsupseteq而这又被翻译成\not\supseteq……

由于\notmathrel均未\nmathrel定义,因此不执行任何替换。连续关系原子之间没有空格,因此 的效果\not\mathrel{}<relation>与 相同\not<relation>

请注意,不要amssymb与 一起加载kpfonts

相关内容