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 is 1.
\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 \bigcirctoo 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:

\renewcommand\neqto this version of\vneqthough. More specifically, I get a "TeX capacity exceeded". Any idea why? – Christian Aug 29 '13 at 15:47\vneq is using\neqin macro@vneq. Thus you can store the old meaning:\let\ltxneq=\neqand use\ltxneqin@vneq. Then you should be able to redefine\neq`. – Heiko Oberdiek Aug 29 '13 at 16:04