(Unicode-Mathematik oder Newtxmath) + \newcommand{\nmodels}{\not\models} + $\not\models$ = stall

(Unicode-Mathematik oder Newtxmath) + \newcommand{\nmodels}{\not\models} + $\not\models$ = stall

Eingabe einspeisen

\RequirePackage{ifthen}
\RequirePackage{ifxetex,ifluatex}
\newif\ifxetexorluatex
\ifxetex
  \xetexorluatextrue
\else
  \ifluatex
    \xetexorluatextrue
  \else
    \xetexorluatexfalse
  \fi
\fi
\documentclass{standalone}
\ifxetexorluatex
\usepackage{unicode-math}
\else
\usepackage{newtxmath}
\fi
\newcommand{\nmodels}{\not\models}%%% or \providecommand, or \providecommand* instead of \newcommand; the effect is the same.
\begin{document}
\(\nmodels\) %%% or \(\not\models\); the effect is the same.
\end{document}

zu einem der Werte pdflatex, xelatex, oder lualatexführt zu einer Endlosschleife. Nun, im Fall vonXeLaTeX + Unicode-Mathematik geht in eine Endlosschleife, wenn \nin definiert ist? Sie können \notinanstelle von verwenden \not\in, aber was tun Sie, wenn Ihnen die Form von \models(anstatt der von \vDash) gefällt, Sie eine negierte Form davon möchten und es nennen möchten \nmodels? Die Form von \nvDashist anders, daher ist es nicht ratsam, sowohl \modelsals auch \nvDashim selben Dokument zu verwenden. Die Verwendung (des gesamten) MnSymbols kommt nicht in Frage: Es kann immer noch Fehler enthalten (ich wusste vor etwa 10 Jahren, dass es welche gibt, und habe es dann nicht mehr verwendet), es ändert sich eine ganze Reihe von Symbolen und es kollidiert mit NewTX-Schriftarten.

Antwort1

Die aktuelle Implementierung von \notmacht im Wesentlichen dasselbe in pdflatexwie in (Xe|Lua)LaTeX mit unicode-math.

Genauer gesagt, \notnimmt das nächste Token, sagen wir, \foound prüft zuerst, ob \notfoodefiniert ist; wenn der Test erfolgreich ist, \notfoowird verwendet. Andernfalls wird als nächstes geprüft, ob \nfoodefiniert ist. Auch hier gilt: Wenn dieser Test erfolgreich ist, \nfoowird verwendet. Andernfalls macht LaTeX \n@tch@r\foo.

Jetzt sehen Sie, warum eine Endlosschleife gestartet wird: \nmodelstut \not\models; da \nmodelsdefiniert ist, wird es verwendet, was tut \not\models

Sie können das Problem vermeiden, indem Sie sich \notan wenden \relax(in der Hoffnung, dass weder \notrelaxnoch \nrelaxdefiniert sind, was unwahrscheinlich ist).

\documentclass{standalone}
\usepackage{iftex}
\iftutex
  \usepackage{unicode-math}
\else
  \usepackage{newtxmath}
\fi

\newcommand{\nmodels}{\not\relax\models}%

\begin{document}

\(\nmodels\)

\(\not\models\)

\end{document}

Bildbeschreibung hier eingeben

Dies ist jedoch keine besonders gute Möglichkeit, zu negieren \models. Vergleichen Sie mit dem Folgenden.

\documentclass[border=4]{standalone}
\usepackage{iftex}
\iftutex
  \usepackage{unicode-math}
\else
  \usepackage{newtxmath}
\fi
\usepackage{centernot}

\newcommand{\nmodels}{\centernot\models}%

\begin{document}

\(\nmodels\)

\(\not\models\)

\end{document}

Bildbeschreibung hier eingeben

Antwort2

Die Definition von „ \notzu schlau werden“, indem man nachschlägt, ob „ \nmodelsoder“ \notmodelsbereits vorhanden ist.

Es funktioniert, wenn Sie den Namen ändern:

\documentclass{standalone}
\usepackage{iftex}

\iftutex
  \usepackage{unicode-math}
\else
  \usepackage{newtxmath}
\fi

%\newcommand{\aintmodel}%
  %{\mathrel{\ooalign{\(\models\)\cr\hidewidth\(\mathslash\)\hidewidth}}}

\newcommand\aintmodel{\not\models}

\begin{document}
\( \aintmodel \)
\end{document}

Diese Suche wird immer durchgeführt, wenn das Symbol verwendet wird, und die Definition von \notist nicht vollständig erweiterbar. Sie können das Symbol daher nicht mit \let„oder“ definieren \edefund dies umgehen.

Sie können das Symbol jedoch \ooalignstattdessen mit erstellen. (Verwenden Sie /mit newtxmathanstelle von \mathslash.)

Klar, unicode-mathjetzt muss nach dem Präfix gesucht werden aint.

Aktualisieren

\notSie können auch ohne Verwendung des Namens anrufen \modelsund so die Suche verhindern. Beispiel:

\documentclass{standalone}
\usepackage{iftex}

\usepackage{unicode-math}


\newcommand\nmodels{\mathrel{\not\symbol{"22A7}}}

\begin{document}
\( \nmodels \)
\end{document}

verwandte Informationen