Take the 2-minute tour ×
TeX - LaTeX Stack Exchange is a question and answer site for users of TeX, LaTeX, ConTeXt, and related typesetting systems. It's 100% free, no registration required.

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?

share|improve this question

2 Answers 2

up vote 11 down vote accepted
  • 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

share|improve this answer
    
Thanks, the MnSymbol solution works great. I renamed the command to \el for brevity. –  goblin Nov 15 '12 at 16:04

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

share|improve this answer

Your Answer

 
discard

By posting your answer, you agree to the privacy policy and terms of service.

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