Not equal sign (≠) with a vertical bar
Equal sign with vertical line
The vertical line |
is a little tall for my taste. The following definition for \vneq
decreases the total height of the vertical line to match the total height of \neq
. Resizing vertical height will not change the line thickness in horizontal direction.
- The final witdh and height of the vertical line can be fine-tuned by redefining macros
\vneqxscale
and\vneqyscale
. The default is1
. \mathpalette
allows the symbol to resize automatically.
Example file:
\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}
The height can be further decreased, e.g.
\renewcommand*{\vneqyscale}{.8}
Result for mathabx
:
Result for txfonts
:
Result for MnSymbol
:
Here the vertical line is too thick and the horizontal resizing needs shrinking:
\renewcommand*{\vneqxscale}{.67}
Result for MnSymbol
and \vneqxscale
= .67
:
Alternative to varnothing
Instead of changing \neq
, the empty set symbol \varnothing
could be constructed using \not
to match the slope of the slanted vertical lines.
However, \circ
is too small and \bigcirc
too big. Therefore this method is shown for txfonts
that provides \medcirc
and MnSymbol
with \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}
Result for txfonts
:
Result for MnSymbol
:
Yes:
\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}
For a motivation behind the commands in \vneq
, read egreg's excellent tutorial on \ooalign
in \subseteq
+ \circ
as a single symbol (“open subset”)
A simplistic solution would be
\usepackage{mathabx}
\changenotsign
but this would mean changing a great part of the math symbols, which is not desirable as, in my opinion, some of the symbols provided by mathabx
are badly designed.
A solution with standard tools 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}
I used \renewcommand
because it will be simply a matter of removing that code in order to revert \neq
to its usual shape.
By using \mathpalette
, the created symbol will become smaller in subscripts or superscripts.