11

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

5
  • 1
    Maybe you find some here: ctan.org/pkg/wasysym or www.ctan.org/pkg/stix
    – Sigur
    Commented Nov 20, 2018 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
    Commented Nov 20, 2018 at 14:46
  • 1
    Check here also: mirrors.ctan.org/info/symbols/comprehensive/symbols-a4.pdf
    – Sigur
    Commented Nov 20, 2018 at 14:50
  • Also, if using unicode-math: mirrors.ctan.org/macros/latex/contrib/unicode-math/…
    – Davislor
    Commented Nov 21, 2018 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
    Commented Nov 21, 2018 at 3:43

3 Answers 3

14

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

8

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

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

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

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .