Is het mogelijk om een \neq
te krijgen maar met een verticale bar in plaats van een schuine? Er zijn ongelijkheidsoperatoren zoals AMS “s \gvertneqq
die dit soort” niet gelijk “bevatten, maar niet zonder het te vermengen met andere tekens.
\documentclass[a5paper]{article} \usepackage{amssymb} \usepackage{amsmath} \begin{document} \begin{align*} a&\gvertneqq b\\ C&\neq \varnothing \end{align*} \end{document}
Dus wat ik eigenlijk zou willen hebben is het geïsoleerde symbool onder de> in de \gvertneqq
hierboven. Vooral omdat ik de verschillende hellingen van de schuine strepen in de tweede regel niet mooi vind en “≠ ∅” een vrij gebruikelijke combinatie is.
Antwoord
Gelijkteken met verticale lijn
De verticale lijn |
is een beetje lang voor mijn smaak. De volgende definitie voor \vneq
verlaagt de totale hoogte van de verticale lijn zodat deze overeenkomt met de totale hoogte van \neq
. Door de grootte van de verticale hoogte aan te passen, wordt de lijndikte in horizontale richting niet gewijzigd.
- De uiteindelijke breedte en hoogte van de verticale lijn kunnen worden verfijnd door macros opnieuw te definiëren
\vneqxscale
en\vneqyscale
. De standaardwaarde is1
. -
\mathpalette
zorgt ervoor dat het formaat van het symbool automatisch wordt aangepast.
Voorbeeldbestand:
\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}
De hoogte kan verder worden verkleind, bijvoorbeeld
\renewcommand*{\vneqyscale}{.8}
Resultaat voor mathabx
:
Resultaat voor txfonts
:
Resultaat voor MnSymbol
:
Hier is de verticale lijn te dik en de horizontale grootte moet worden verkleind:
Resultaat voor MnSymbol
en \vneqxscale
= .67
:
Alternatief voor varnothing
In plaats van \neq
te wijzigen, het lege set-symbool \varnothing
kan worden geconstrueerd met \not
om overeen te komen met de helling van de schuine verticale lijnen. \circ
is echter te klein en \bigcirc
te groot. Daarom wordt deze methode weergegeven voor txfonts
die \medcirc
en MnSymbol
levert met \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}
Resultaat voor txfonts
:
Resultaat voor MnSymbol
:
Reacties
- Dit is gewoon een geweldig antwoord! Ik hoop dat Werner ' het niet erg vindt dat ik ' niet maar het geaccepteerde antwoord in dit antwoord kan veranderen. Ik ' heb wat problemen bij het proberen
\renewcommand
\neq
naar deze versie van\vneq
echter. Meer specifiek: ik krijg een " TeX-capaciteit overschreden ". Enig idee waarom? -
\vneq is using
\ neq` in macro\@vneq
. U kunt dus de oude betekenis opslaan:\let\ltxneq=\neq
en\ltxneq
gebruiken in\@vneq
. Dan zou je\neq
moeten kunnen herdefiniëren.
Antwoord
Ja:
\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}
Voor een motivatie achter de commandos in \vneq
, lees egreg “s uitstekende tutorial over \ooalign
in \subseteq
+ \circ
als een enkel symbool (“open subset”)
Reacties
Antwoord
Een simplistische oplossing zou zijn
\usepackage{mathabx} \changenotsign
maar dit zou betekenen dat een groot deel van de wiskundige symbolen moet worden gewijzigd, wat niet wenselijk is omdat, naar mijn mening, enkele van de symbolen geleverd door mathabx
zijn slecht ontworpen.
Een oplossing met standaardtools is
\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}
Ik gebruikte \renewcommand
omdat het simpelweg een kwestie is van het verwijderen van die code om \neq
terug te brengen naar de gebruikelijke vorm.
Door \mathpalette
, wordt het aangemaakte symbool kleiner in subscripts of superscripts.
Opmerkingen
- zowel dit symbool als een gelijkteken met een schuine annulering naar achteren zijn opgenomen in de stix-lettertypen.
- @barbarabeeton Ja, maar die lettertypen zijn niet ' tm ix goed met Computer Modern en andere lettertypen.
- triest maar waar. ze waren ontworpen om te mengen met de tijd, wat het consensus-lettertype was van de stipub-consortiumleden.
$$
ook rond de=
toegevoegd, wat belangrijk wordt als je een andere tekst dan wiskundig lettertype.Anders dan dat is dit een zeer elegante oplossing 🙂