I'd like to define macros to be able to use each of the following six shapes as subscripts in math mode.

I'd try to draw them using tikz, but I don't know if I could use those as subscripts.

enter image description here

  • 1
    Maybe you find some here: ctan.org/pkg/wasysym or www.ctan.org/pkg/stix – Sigur Nov 20 at 14:44
  • Thanks! That package has the commands \Leftcircle and \Rightcircle, I'll try to figure out how to rotate those. Still missing the ones with just the arc, though. – Peter Nov 20 at 14:46
  • 1
  • Also, if using unicode-math: mirrors.ctan.org/macros/latex/contrib/unicode-math/… – Davislor Nov 21 at 3:34
  • 1
    A few of those symbols are in Unicode, ◯ is U+25EF, ◠ is U+25E0 and ◡ is U+25E1. unicode-math and some other packages give these the aliases \lgwhtcircle, \topsemicircle and \botsemicircle, respectively. There are several horizontal dashes. The other two symbols do not seem to be. – Davislor Nov 21 at 3:43
up vote 13 down vote accepted

Picture mode!

\documentclass{article}
\usepackage{amsmath}
\usepackage{pict2e}

\DeclareRobustCommand{\fullcircle}{%
  \mspace{2mu}\mathord{
    \sbox{0}{$\scriptstyle O$}%
    \setlength{\unitlength}{\ht0}%
    \begin{picture}(1,1)
    \put(0.5,0.5){\arc{0.5}}
    \end{picture}
  }\mspace{2mu}
}
\DeclareRobustCommand{\upsemicircle}{%
  \mspace{2mu}\mathord{
    \sbox{0}{$\scriptstyle O$}%
    \setlength{\unitlength}{\ht0}%
    \begin{picture}(1,1)
    \put(0.5,0.5){\arc[0,180]{0.5}}
    \end{picture}
  }\mspace{2mu}
}
\DeclareRobustCommand{\downsemicircle}{%
  \mspace{2mu}\mathord{
    \sbox{0}{$\scriptstyle O$}%
    \setlength{\unitlength}{\ht0}%
    \begin{picture}(1,1)
    \put(0.5,0.5){\arc[180,360]{0.5}}
    \end{picture}
  }\mspace{2mu}
}
\DeclareRobustCommand{\upsemicirclediam}{%
  \mspace{2mu}\mathord{
    \sbox{0}{$\scriptstyle O$}%
    \setlength{\unitlength}{\ht0}%
    \begin{picture}(1,1)
    \moveto(0.5,0.5)
    \circlearc{0.5}{0.5}{0.5}{0}{180}
    \lineto(0.5,0.5)
    \strokepath
    \end{picture}
  }\mspace{2mu}
}
\DeclareRobustCommand{\downsemicirclediam}{%
  \mspace{2mu}\mathord{
    \sbox{0}{$\scriptstyle O$}%
    \setlength{\unitlength}{\ht0}%
    \begin{picture}(1,1)
    \moveto(0.5,0.5)
    \circlearc{0.5}{0.5}{0.5}{180}{360}
    \lineto(0.5,0.5)
    \strokepath
    \end{picture}
  }\mspace{2mu}
}
\DeclareRobustCommand{\diam}{%
  \mspace{2mu}\mathord{
    \sbox{0}{$\scriptstyle O$}%
    \setlength{\unitlength}{\ht0}%
    \begin{picture}(1,1)
    \Line(0,0.5)(1,0.5)
    \end{picture}
  }\mspace{2mu}
}

\begin{document}

$X_{\fullcircle\upsemicircle\downsemicircle\upsemicirclediam\downsemicirclediam\diam}$

\end{document}

enter image description here

An enhanced version that can cope with the symbols at every level.

\documentclass{article}
\usepackage{amsmath}
\usepackage{pict2e}

\makeatletter
\DeclareRobustCommand{\fullcircle}{\peter@symbol\peter@fullcircle}
\DeclareRobustCommand{\upsemicircle}{\peter@symbol\peter@upsemicircle}
\DeclareRobustCommand{\downsemicircle}{\peter@symbol\peter@downsemicircle}
\DeclareRobustCommand{\upsemicirclediam}{\peter@symbol\peter@upsemicirclediam}
\DeclareRobustCommand{\downsemicirclediam}{\peter@symbol\peter@downsemicirclediam}
\DeclareRobustCommand{\diam}{\peter@symbol\peter@diam}

\newcommand{\peter@symbol}[1]{\mathord{\mspace{2mu}\mathpalette#1\relax\mspace{2mu}}}
\newcommand{\peter@unitlength}[1]{%
  \settoheight{\unitlength}{$\m@th#1O$}%
  \linethickness{\fontdimen 8
    \ifx#1\displaystyle\textfont\else
    \ifx#1\textstyle\textfont\else
    \ifx#1\scriptstyle\scriptfont\else
    \scriptscriptfont\fi\fi\fi 3
  }%
}

\newcommand{\peter@fullcircle}[2]{%
  \begingroup
  \peter@unitlength{#1}%
  \begin{picture}(1,1)
  \circlearc[1]{0.5}{0.5}{0.5}{0}{360}
  \strokepath
  \end{picture}%
  \endgroup
}
\newcommand{\peter@upsemicircle}[2]{%
  \begingroup
  \peter@unitlength{#1}%
  \begin{picture}(1,1)
  \circlearc[1]{0.5}{0.5}{0.5}{0}{180}
  \strokepath
  \end{picture}%
  \endgroup
}
\newcommand{\peter@downsemicircle}[2]{%
  \begingroup
  \peter@unitlength{#1}%
  \begin{picture}(1,1)
  \circlearc[1]{0.5}{0.5}{0.5}{180}{360}
  \strokepath
  \end{picture}%
  \endgroup
}
\newcommand{\peter@upsemicirclediam}[2]{%
  \begingroup
  \peter@unitlength{#1}%
  \begin{picture}(1,1)
  \moveto(0.5,0.5)
  \circlearc{0.5}{0.5}{0.5}{0}{180}
  \lineto(0.5,0.5)
  \strokepath
  \end{picture}%
  \endgroup
}
\newcommand{\peter@downsemicirclediam}[2]{%
  \begingroup
  \peter@unitlength{#1}%
  \begin{picture}(1,1)
  \moveto(0.5,0.5)
  \circlearc{0.5}{0.5}{0.5}{180}{360}
  \lineto(0.5,0.5)
  \strokepath
  \end{picture}%
  \endgroup
}
\newcommand{\peter@diam}[2]{%
  \begingroup
  \peter@unitlength{#1}%
  \begin{picture}(1,1)
  \Line(0,0.5)(1,0.5)
  \end{picture}%
  \endgroup
}

\begin{document}

$X\fullcircle\upsemicircle\downsemicircle\upsemicirclediam\downsemicirclediam\diam$

$X_{\fullcircle\upsemicircle\downsemicircle\upsemicirclediam\downsemicirclediam\diam}$

$X_{X_{\fullcircle\upsemicircle\downsemicircle\upsemicirclediam\downsemicirclediam\diam}}$

\end{document}

enter image description here

TikZ in boxes! (Far inferior to picture mode unfortunately)

\documentclass[]{article}

\usepackage{tikz}

\makeatletter
\newcommand\setup@crazysubscripts[2]
  {%
    \expandafter\newsavebox\csname crazysubscripts@#1\endcsname
    \expandafter\sbox\csname crazysubscripts@#1\endcsname
      {%
        \kern.1ex
        \begin{tikzpicture}
          \path[use as bounding box] circle[radius=.5ex];
          #2%
        \end{tikzpicture}%
        \kern.1ex
      }%
  }
\setup@crazysubscripts{fc}% fullcircle
  {%
    \draw circle[radius=.5ex];%
  }
\setup@crazysubscripts{lo}% lower open
  {%
    \draw (.5ex,0) arc[start angle=0, end angle=-180, radius=.5ex];%
  }
\setup@crazysubscripts{uo}% upper open
  {%
    \draw (.5ex,0) arc[start angle=0, end angle=180, radius=.5ex];%
  }
\setup@crazysubscripts{lc}% lower closed
  {%
    \draw (-.5ex,0) -- (.5ex,0) arc[start angle=0, end angle=-180, radius=.5ex]
      --cycle;%
  }
\setup@crazysubscripts{uc}% upper closed
  {%
    \draw (-.5ex,0) -- (.5ex,0) arc[start angle=0, end angle=180, radius=.5ex]
      --cycle;%
  }
\setup@crazysubscripts{b}% boring line
  {%
    \draw (-.5ex,0) -- (.5ex,0);%
  }
\newcommand\csubs[1]
  {%
    \@ifundefined{crazysubscripts@#1}
      {\GenericError{}{Undefined crazysubscript `#1`}{}{}}%
      {%
        \resizebox{.75ex}{!}
          {\expandafter\usebox\csname crazysubscripts@#1\endcsname}%
      }%
  }
\makeatother

\begin{document}
$A_{\csubs{fc}_{\csubs{lo}_{\csubs{lc}}}}$

\csubs{fc}\csubs{lo}\csubs{uo}\csubs{lc}\csubs{uc}\csubs{b}
\end{document}

enter image description here

  • Could you elaborate how this is inferior to picture mode? – Peter Nov 20 at 15:34
  • @Peter because the other one is picture mode! – Skillmon Nov 20 at 15:43
  • 2
    @Peter no honestly, it's just a joke. – Skillmon Nov 20 at 15:44

Just a template.

\documentclass[preview,border=12pt,varwidth,12pt]{standalone}
\usepackage{tikz}

\def\alex{\tikz \draw (0,0) circle (2pt);}
\def\bobby{\tikz \draw (0,0) -- (3pt,0) -- (3pt,2pt) -- cycle;}
\begin{document}
This is an  equation $F_{\alex}^{\bobby}+1$.
\end{document}

enter image description here

Your Answer

By clicking "Post Your Answer", you acknowledge that you have read our updated terms of service, privacy policy and cookie policy, and that your continued use of the website is subject to these policies.

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