Znak nierówności (≠) z pionową kreską

Czy można uzyskać \neq, ale z pionową drążek zamiast skośnego? Istnieją operatory nierówności, takie jak AMS „s \gvertneqq, które zawierają ten rodzaj„ nierówności ”, ale nie bez ich mieszania z innymi znakami.

\documentclass[a5paper]{article} \usepackage{amssymb} \usepackage{amsmath} \begin{document} \begin{align*} a&\gvertneqq b\\ C&\neq \varnothing \end{align*} \end{document} 

wynik powyższego kodu

Zasadniczo chciałbym mieć izolowany symbol pod> w \gvertneqq powyżej. Szczególnie dlatego, że nie podoba mi się różne nachylenia ukośników w drugiej linii, a „≠ ∅” to dość powszechna kombinacja.

Odpowiedź

Znak równości z pionową linią

Pionowa linia | jest trochę wysoka jak na mój smak. Poniższa definicja \vneq zmniejsza całkowitą wysokość pionowej linii, aby dopasować ją do całkowitej wysokości \neq. Zmiana rozmiaru pionowej wysokości nie zmieni grubości linii w kierunku poziomym.

  • Ostateczną szerokość i wysokość pionowej linii można dostosować, ponownie definiując makra \vneqxscale i \vneqyscale. Wartość domyślna to 1.
  • \mathpalette umożliwia automatyczną zmianę rozmiaru symbolu.

Przykładowy plik:

\documentclass{article} \usepackage{amssymb}% \varnothing \usepackage{graphicx}% \resizebox \makeatletter \newcommand*{\vneq}{% \mathrel{% \mathpalette\@vneq{=}% }% } \newcommand*{\@vneq}[2]{% % #1: math style (\displaystyle, \textstyle, ...) % #2: symbol (=, ...) \sbox0{\raisebox{\depth}{$#1\neq$}}% \sbox2{\raisebox{\depth}{$#1|\m@th$}}% \ifdim\ht2>\ht0 % \sbox2{\resizebox{\vneqxscale\width}{\vneqyscale\ht0}{\unhbox2}}% \fi \sbox2{$\m@th#1\vcenter{\copy2}$}% \ooalign{% \hfil\phantom{\copy2}\hfil\cr \hfil$#1#2\m@th$\hfil\cr \hfil\copy2\hfil\cr }% } \newcommand*{\vneqxscale}{1} \newcommand*{\vneqyscale}{1} \makeatother \begin{document} \[ % Comparison \neq vs. vneq \varnothing \neq \emptyset \vneq \varnothing \\ \] \[ % Check sizes: \vneq^{\vneq^{\vneq}} \\ \] \[ % Bounding box checks: \setlength{\fboxsep}{0pt} \setlength{\fboxrule}{.1pt} \fbox{$\neq$}\,\fbox{$\vneq$}\,\fbox{$|$} \] \end{document} 

Wynik

Wysokość można dodatkowo zmniejszyć, np.

\renewcommand*{\vneqyscale}{.8} 

Wynik / .8

Wynik dla mathabx:

mathabx

Wynik dla txfonts:

txfonts

Wynik dla MnSymbol:

MnSymbol

Tutaj pionowa linia jest zbyt gruba i pozioma zmiana rozmiaru wymaga zmniejszenia:

Wynik dla MnSymbol i \vneqxscale = .67 :

MnSymbol / .67

Alternatywa dla varnothing

Zamiast zmieniać \neq, pusty symbol zestawu można skonstruować za pomocą \not, aby dopasować nachylenie ukośnych linii pionowych. Jednak \circ jest za mały i \bigcirc za duży. Dlatego ta metoda jest wyświetlana dla txfonts, które zapewnia \medcirc i MnSymbol z \medcircle.

\documentclass{article} %\usepackage{txfonts} %\newcommand*{\varemptysetcircle}{\medcirc} \usepackage{MnSymbol} \newcommand*{\varemptysetcircle}{\medcircle} \makeatletter \newcommand*{\varemptyset}{% {% mathord \vphantom{\not=}% correct height and depth of the final symbol \mathpalette\@varemptyset\varemptysetcircle }% } \newcommand*{\@varemptyset}[2]{% % #1: math style (\displaystyle, \textstyle, ...) % #2: circle \ooalign{% \hfil$\m@th#1\not\hphantomeq$\hfil\cr \hfil$\m@th#1#2$\hfil\cr }% } % \not can be redefined to take an argument \newcommand*{\hphantomeq}{% \mathrel{\hphantom{=}}% } \makeatother \usepackage{color} \begin{document} \[ \not=\; \color{blue}\neq \varemptyset\; \color{black}\varnothing \] \end{document} 

Wynik dla txfonts:

txfonts

Wynik dla MnSymbol:

MnSymbol

Komentarze

  • To po prostu niesamowita odpowiedź! Mam nadzieję, że Werner wygrał '. Nie przeszkadza mi, że nie mogę ' zmienić zaakceptowanej odpowiedzi na tę. ' Mam problemy podczas próby \renewcommand \neq do tej wersji \vneq chociaż. Mówiąc dokładniej, otrzymuję " pojemność TeX-a przekroczona ". Masz jakiś pomysł, dlaczego?
  • \vneq is using \ neq` w makrze \@vneq. W ten sposób możesz zapisać stare znaczenie: \let\ltxneq=\neq i użyć \ltxneq w \@vneq. Wtedy powinieneś być w stanie ponownie zdefiniować \neq.

Odpowiedź

Tak:

zrzut ekranu z kodem poniżej

\documentclass[a5paper]{article} \usepackage{amssymb} \usepackage{amsmath} \newcommand\vneq{\mathrel{\ooalign{$=$\cr\hidewidth$|$\hidewidth\cr}}} \begin{document} \begin{align*} a&\gvertneqq b\\ C&\neq \varnothing \\ d&\vneq f \end{align*} \end{document} 

Dla motywacji poleceń w \vneq, przeczytaj doskonały samouczek egreg na temat \ooalign w \subseteq + \circ jako pojedynczy symbol („otwarty podzbiór”)

Komentarze

  • Świetnie, dziękuję! Dodałem również $$ do =, co staje się ważne, gdy masz inny tekst niż czcionka matematyczna.Poza tym jest to najbardziej eleganckie rozwiązanie 🙂

Odpowiedź

Uproszczonym rozwiązaniem byłoby

\usepackage{mathabx} \changenotsign 

ale oznaczałoby to zmianę dużej części symboli matematycznych, co nie jest pożądane, ponieważ moim zdaniem niektóre symbole dostarczane przez mathabx są źle zaprojektowane.

Rozwiązanie ze standardowymi narzędziami to

\documentclass{article} \renewcommand\neq{\mathrel{\vphantom{|}\mathpalette\xsneq\relax}} \newcommand\xsneq[2]{% \ooalign{\hidewidth$#1|$\hidewidth\cr$#1=$\cr}% } \begin{document} $a\neq b$ \end{document} 

Użyłem \renewcommand, ponieważ będzie to po prostu kwestia usunięcia tego kodu w celu przywrócenia \neq do jego zwykłego kształtu.

Używając \mathpalette, utworzony symbol zmniejszy się w indeksach dolnych lub górnych.

tutaj wprowadź opis obrazu

Komentarze

  • zarówno ten symbol, jak i znak równości z anulowaniem pochylonym do tyłu są zawarte w czcionkach stix.
  • @barbarabeeton Tak, ale te czcionki nie ' tm dobrze współpracuje z czcionkami Computer Modern i innymi czcionkami.
  • smutne, ale prawdziwe. zostały zaprojektowane tak, aby mieszały się z czasem, co stanowiło konsensus członków konsorcjum stipub.

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *