\NewNegationCommand를 사용하여 부정 기호에 mathrel을 올바르게 설정

\NewNegationCommand를 사용하여 부정 기호에 mathrel을 올바르게 설정

간격과 관련하여 의 기본 정의는 \not\models만족스럽지 않습니다.

\documentclass{article}
\usepackage{unicode-math}
\begin{document}
$a\models b$

$a\not\models b$
\end{document}

준다

기본 간격

나는 그것이 부족하기 때문이라고 생각합니다 \mathrel. 수동으로 추가하면 올바른 간격이 제공됩니다. 물론 매번 이것을 입력하는 것은 허용되지 않으므로 이를 수행하기 위해 a를 정의하려고 합니다 \notmodels.

unicode-math가 이전 버전을 일부 변경 \not하고 \NewNegationCommand.

그러나 아마도 순진한

\documentclass{article}
\usepackage{unicode-math}
\NewNegationCommand\models{\mathrel{\not\models}}
\begin{document}
$a\models b$

$a\notmodels b$
\end{document}

제공 :TeX 용량을 초과했습니다. 죄송합니다. [의미 중첩 크기=500]. $a\not모델

끝없는 재귀를 의심하면서 시도해 보았습니다.

\documentclass{article}
\usepackage{unicode-math}
\edef\ysnm{\not\models}
\NewNegationCommand\models{\mathrel{\ysnm}}
\begin{document}
$a\models b$

$a\notmodels b$
\end{document}

그러나 그것은 다음을 제공합니다 :누락된 { 삽입됨. $a\not모델, 나는 그것이 꽤 불안하다고 생각합니다.

세 번째 시도

\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}

공장…

그러나 나는 이것이 매우 당혹스럽다고 생각한다.

어떻게 하면 더 나은 방법 으로 이 문제 에서 벗어날 수 있습니까 ?

답변1

기호를 부정하는 것은 고통스럽습니다 unicode-math. :-(하지만 탈출구가 있습니다.:-)

\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}

구문은 다음과 \NewNegatedCommand같습니다.

\NewNegatedCommand{\foo}{<code>}

\foo부정할 관계 기호는 어디에 있습니까? 이는 조합 \not\foo과 명령을 모두 정의합니다 \notfoo.

여기서는 충돌을 피하기 위해 작은 컨을 사용합니다.

여기에 이미지 설명을 입력하세요

그건 그렇고, 이것은 LuaLaTeX에서 \mathoverlayaccent조합이 \not\models작동하기 때문에 (잘못된 간격을 제공하더라도) XeTeX의 버그인 것 같습니다.

\NewNegationCommand{\models}{\mathrel{\notaccent\models}}

하지만 출력이 만족스럽지 못함

여기에 이미지 설명을 입력하세요

이 솔루션은 \altnotXeLaTeX 및 LuaLaTeX 모두에서 작동합니다.

답변2

이유는 묻지 마세요. 다음은 작동합니다(기본적으로 수동으로 하나의 확장을 수행합니다).

\documentclass{article}
\usepackage{unicode-math}
\NewNegationCommand{\models}{\mathrel{\not⊧}}
\begin{document}
$a\models b$

$a\notmodels b$
\end{document}

관련 정보