13

To mean that x is an element of X, we can write x \in X. However, in the standard packages, the membership symbol that results is too big; it draws too much attention to itself. This is especially evident when we're doing set theory and writing sets as lowercase, as in x \in y. Does anyone one how to draw a less attention-seeking membership symbol?

13
  • Package mathdesign provides \smallin.
  • \in of package MnSymbol looks smaller than the usual form.

See also "The Comprehensive LaTeX Symbol List".

The example file compares the default with the version of MnSymbol without loading the package (it also changes other symbols):

\documentclass{article}
\DeclareFontFamily{U}{MnSymbolD}{}
\DeclareSymbolFont{MnSyD}{U}{MnSymbolD}{m}{n}
\SetSymbolFont{MnSyD}{bold}{U}{MnSymbolD}{b}{n}
\DeclareFontShape{U}{MnSymbolD}{m}{n}{
    <-6>  MnSymbolD5
   <6-7>  MnSymbolD6
   <7-8>  MnSymbolD7
   <8-9>  MnSymbolD8
   <9-10> MnSymbolD9
  <10-12> MnSymbolD10
  <12->   MnSymbolD12
}{}
\DeclareFontShape{U}{MnSymbolD}{b}{n}{
    <-6>  MnSymbolD-Bold5
   <6-7>  MnSymbolD-Bold6
   <7-8>  MnSymbolD-Bold7
   <8-9>  MnSymbolD-Bold8
   <9-10> MnSymbolD-Bold9
  <10-12> MnSymbolD-Bold10
  <12->   MnSymbolD-Bold12
}{}
\DeclareMathSymbol{\insmall}{\mathrel}{MnSyD}{"3E}
\begin{document}
\[ a\in b \]
\[ a\insmall b\]
\end{document}

Result

Version with scaling

Similar to Enrico Gregorio's solution, but with calculated vertical position with unchanged math axis.

\documentclass{article}
\usepackage{graphicx}
\makeatletter
\newdimen\scalemath@axis
% Macro \scalemath
% #1: math class (\mathrel, \mathbin, ...)
% #2: scale factor
% #3: symbol
\newcommand*{\scalemath}[3]{%
  #1{%
    \mathpalette{\scalemath@aux{#2}}{#3}%
  }%
}
% Macro \scalemath@aux
% #1: factor
% #2: math style
% #3: symbol
\newcommand*{\scalemath@aux}[3]{%
  \begingroup
    \everyvbox{}%
    \settoheight\scalemath@axis{$#2\vcenter{}$}%
    \raisebox{\scalemath@axis}{%
      \scalebox{#1}{%
        \raisebox{-\scalemath@axis}{%
          $\m@th#2#3$%
        }%
      }%
    }%
  \endgroup
}
\makeatother 

\newcommand*{\smallin}{\scalemath{\mathrel}{.75}{\in}}
\newcommand*{\smallni}{\scalemath{\mathrel}{.75}{\ni}}
\newcommand*{\smallnotin}{\scalemath{\mathrel}{.75}{\notin}}

% for testing
\newcommand*{\test}[1]{%
  \[%
    \testaux{#1}^{\testaux{#1}^{\testaux{#1}}}%
    \quad
    \rlap{\scriptsize\texttt{\string#1}}%
  \]%
}
\newcommand*{\testaux}[1]{%
  \testrule\!\!#1\!\!\testrule
}
\newcommand*{\testrule}{%
  \vcenter{\hrule width .5em height .01pt depth .01pt}%
}

\begin{document}
\[ a\in b \ni c \notin d \quad\rlap{\scriptsize(normal)} \]
\[ a\smallin b \smallni c \smallnotin d \quad\rlap{\scriptsize(small)} \]
\test\in
\test\smallin
\test\smallni
\test\smallnotin
\end{document}  

Result

  • Thanks, the MnSymbol solution works great. I renamed the command to \el for brevity. – goblin Nov 15 '12 at 16:04
10

This seems to be a good compromise:

\documentclass{article}
\usepackage{graphicx}
\newcommand{\smallerrel}[1]{\mathrel{\mathpalette\smallerrelaux{#1}}}
\newcommand{\smallerrelaux}[2]{\raisebox{.1ex}{\scalebox{.75}{$#1#2$}}}

\newcommand{\smallin}{\smallerrel{\in}}
\newcommand{\smallnotin}{\smallerrel{\notin}}

\begin{document}
$x\smallin y\smallnotin z$

$x\in y\notin z$
\end{document}

enter image description here

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.