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
\vneqxscaleen\vneqyscale. De standaardwaarde is1. -
\mathpalettezorgt 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\neqnaar deze versie van\vneqechter. 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=\neqen\ltxneqgebruiken in\@vneq. Dan zou je\neqmoeten 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 🙂