
Die Standarddefinition von \not\models
ist hinsichtlich der Abstände nicht zufriedenstellend:
\documentclass{article}
\usepackage{unicode-math}
\begin{document}
$a\models b$
$a\not\models b$
\end{document}
gibt
Ich denke, es liegt daran, dass ein fehlt \mathrel
: Wenn man es manuell hinzufügt, erhält man den richtigen Abstand. Natürlich ist es nicht akzeptabel, dies jedes Mal einzugeben, also versuche ich, ein zu definieren, \notmodels
um dies zu tun.
Ich habe festgestellt, dass Unicode-Mathematik einige Änderungen gegenüber der alten Version vornimmt \not
und ein \NewNegationCommand
. bereitstellt.
Doch die vielleicht naiven
\documentclass{article}
\usepackage{unicode-math}
\NewNegationCommand\models{\mathrel{\not\models}}
\begin{document}
$a\models b$
$a\notmodels b$
\end{document}
gibt:TeX-Kapazität überschritten, tut mir leid [semantische Nestgröße=500]. $a\notmodels
Da ich eine endlose Rekursion vermutete, versuchte ich
\documentclass{article}
\usepackage{unicode-math}
\edef\ysnm{\not\models}
\NewNegationCommand\models{\mathrel{\ysnm}}
\begin{document}
$a\models b$
$a\notmodels b$
\end{document}
aber es gibt:Fehlendes { eingefügt. $a\notmodels, was ich ziemlich beunruhigend finde.
Dritter Versuch
\documentclass{article}
\usepackage{unicode-math}
\AtBeginDocument{
\newbox\boxnm
\setbox\boxnm=\hbox{$\not\models$}
\NewNegationCommand\models{\mathrel{\copy\boxnm}}
}
\begin{document}
$a\models b$
$a\notmodels b$
\end{document}
funktioniert…
Aber ich finde das sehr rätselhaft.
Wie kann ich da besser rauskommen?
Antwort1
Das Negieren von Symbolen ist mit mühsam unicode-math
. :-(
Aber es gibt einen Ausweg.:-)
\documentclass{article}
\usepackage{unicode-math}
\Umathchardef\altnot=3 \symsymbols "0338
\NewNegationCommand{\models}{\models\mathrel{\mkern1mu}\altnot\mkern-1mu}
\begin{document}
$a\models b$
$a\not\models b$
$a\notmodels b$
\end{document}
Die Syntax für \NewNegatedCommand
ist
\NewNegatedCommand{\foo}{<code>}
wobei \foo
das zu negierende Relationssymbol ist. Dies definiert sowohl die Kombination \not\foo
als auch den Befehl \notfoo
.
Hier verwende ich einen kleinen Kern, um den Konflikt zu vermeiden.
Dies scheint übrigens ein Fehler in XeTeX zu sein \mathoverlayaccent
, da die Kombination \not\models
in LuaLaTeX funktioniert (wenn auch mit falschen Abständen), was behoben werden könnte mit
\NewNegationCommand{\models}{\mathrel{\notaccent\models}}
aber das Ergebnis ist nicht so zufriedenstellend
Die Lösung \altnot
funktioniert sowohl mit XeLaTeX als auch mit LuaLaTeX.
Antwort2
Fragen Sie nicht warum, aber Folgendes funktioniert (wobei im Grunde eine Erweiterung manuell durchgeführt wird):
\documentclass{article}
\usepackage{unicode-math}
\NewNegationCommand{\models}{\mathrel{\not⊧}}
\begin{document}
$a\models b$
$a\notmodels b$
\end{document}