입력 공급
\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}
pdflatex
, xelatex
또는 중 하나에 연결하면 lualatex
무한 루프가 발생합니다. 글쎄요, 이런 경우에는XeLaTeX + unicode-math는 \nin이 정의되면 무한 루프에 들어갑니다.\notin
대신 사용할 수 있지만 (이 아닌 )의 모양이 마음에 들고, 부정된 형식을 원하고, 이라고 부르고 싶다면 \not\in
어떻게 합니까 ? 의 형식이 다르기 때문에 동일한 문서에서 및 를 모두 사용하는 것은 바람직하지 않습니다. MnSymbols 전체를 사용하는 것은 의문의 여지가 없습니다. 여전히 버그가 있을 수 있으며(약 10년 전에 버그가 있다는 것을 알고 그 당시 사용을 중단했습니다), 꽤 많은 기호가 변경되고 NewTX 글꼴과 충돌할 수 있습니다.\models
\vDash
\nmodels
\nvDash
\models
\nvDash
답변1
의 현재 구현은 기본적 으로 (Xe|Lua)LaTeX with 와 \not
동일합니다 .pdflatex
unicode-math
보다 정확하게는 \not
다음 토큰을 가져와 \foo
먼저 \notfoo
정의되어 있는지 확인합니다. 테스트가 성공하면 \notfoo
이 사용됩니다. 그렇지 않으면 다음 검사는 \nfoo
정의 여부입니다. 이번에도 이 테스트가 성공하면 \nfoo
이 사용됩니다. 그렇지 않으면 LaTeX는 \n@tch@r\foo
.
이제 무한 루프가 시작된 이유를 알 수 있습니다. \nmodels
does \not\models
; 정의 되었으므로 \nmodels
사용됩니다 \not\models
.
\not
에 적용하면 문제를 피할 수 있습니다 \relax
(어느 쪽도 정의되지 않았으면 좋겠지만 \notrelax
그럴 \nrelax
가능성은 낮음).
\documentclass{standalone}
\usepackage{iftex}
\iftutex
\usepackage{unicode-math}
\else
\usepackage{newtxmath}
\fi
\newcommand{\nmodels}{\not\relax\models}%
\begin{document}
\(\nmodels\)
\(\not\models\)
\end{document}
어쨌든 이것은 부정하는 데 특별히 좋은 방법은 아닙니다 \models
. 다음과 비교해보세요.
\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}
답변2
의 정의는 이미 존재 하는지 \not
여부를 검색하여 절반으로 너무 영리해지는 것입니다 .\nmodels
\notmodels
이름을 변경하면 작동합니다.
\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}
이 조회는 기호가 사용될 때마다 수행되며 정의는 완전히 확장 가능하지 않으므로 또는를 \not
사용하여 기호를 정의하고 이를 회피할 수 없습니다 .\let
\edef
그러나 대신 을 사용하여 기호를 생성할 수 있습니다 \ooalign
. ( 대신 /
with 를 사용하세요 .)newtxmath
\mathslash
이제 unicode-math
접두사를 검색해야 합니다 aint
.
업데이트
\not
이름을 사용하지 않고 호출하여 \models
조회를 방지할 수도 있습니다 . 예를 들어,
\documentclass{standalone}
\usepackage{iftex}
\usepackage{unicode-math}
\newcommand\nmodels{\mathrel{\not\symbol{"22A7}}}
\begin{document}
\( \nmodels \)
\end{document}