# Creating custom mathematical symbols

I need to create two custom symbols for an article I am writing. The two symbols should have the same size as usual mathematical symbols, and should look like this:

(sorry for the small size). I would define them pixel by pixel, but I don't know how to do it, nor what the correct conventions are (like height/width depending if it is a normal equation, inline equation or sub/superscript). Could anyone help or explain how to do it?

The symbols \upspoon and \upfilledspoon in the MnSymbol package are close to what I want, but I'd prefer if they had little squares instead of little circles. Same thing for \upspoon and \upblackspoon in fdsymbol.

However, both those packages appear to interfere with the packages I already use for mathematical symbols.

• See mirrors.ctan.org/info/symbols/comprehensive/symbols-a4.pdf for a extensive list of symbols, perhaps those symbols (markers?) do exist already...
– user31729
Jan 31, 2018 at 20:20
• @ChristianHupfer I have already looked at a couple standard lists of common symbols and, honestly, even if such symbols were present in the document you linked I think it would be faster to define them from scratch than to go through the 338 pages... But thanks anyway for the reference. Jan 31, 2018 at 20:24
• if you have them as images then you can use \includegraphics[height=1ex]{image-a} or whatever size you want as you symbol. Jan 31, 2018 at 20:34
• @DanielRobert-Nicoud: Drawing the symbols with TikZ is easy, but not the correct scaling with respect to the context where the symbol appears
– user31729
Jan 31, 2018 at 20:42
• that's why I said to scale to 1ex (the height of an x) Jan 31, 2018 at 21:07

Picture mode!

\documentclass{article}
\usepackage{pict2e}

\makeatletter
\newcommand{\YES}{\mathord{\mathpalette\nicoud@YESNO\relax}}
\newcommand{\NO}{\mathord{\mathpalette\nicoud@YESNO{\nicoud@path{\fillpath}}}}
\newcommand{\nicoud@YESNO}[2]{%
\begingroup
\settoheight{\unitlength}{$#1X$}%
\begin{picture}(0.7,1)
\linethickness{\variable@rule{#1}}%
\roundcap\roundjoin
\nicoud@path{\strokepath}
#2
\Line(0.35,0)(0.35,0.5)
\end{picture}%
\endgroup
}
\newcommand{\nicoud@path}[1]{%
\moveto(0.1,0.5)
\lineto(0.1,1)\lineto(0.6,1)\lineto(0.6,0.5)
\closepath
#1
}
\newcommand{\variable@rule}[1]{%
\fontdimen8
\ifx#1\displaystyle\textfont3\else
\ifx#1\textstyle\textfont3\else
\ifx#1\scriptstyle\scriptfont3\else
\scriptscriptfont3\relax
\fi\fi\fi
}
\makeatletter

\begin{document}

$\YES\NO_{\YES\NO}$

{\LARGE$\YES\NO_{\YES\NO}$}

\end{document}


Just for fun and learning, here's a version with the drawing commands in expl3.

\documentclass{article}
\usepackage{l3draw}

\ExplSyntaxOn
\NewDocumentCommand{\YES}{}
{
\mathord{\mathpalette{\nicoud_yesno:nn}{stroke}}
}
\NewDocumentCommand{\NO}{}
{
\mathord{\mathpalette{\nicoud_yesno:nn}{fill}}
}

\dim_new:N \l_nicoud_yesno_ht_dim

\cs_new_protected:Nn \nicoud_yesno:nn
{% #1 = math style, #2 = stroke or fill the path
\group_begin:
\mkern 0.5mu
\draw_begin:
\draw_cap_round:
\draw_join_round:
\draw_linewidth:n { \nicoud_line_thickness:n { #1 } }
\hbox_set:Nn \l_tmpa_box { $#1X$ }
\dim_set:Nn \l_nicoud_yesno_ht_dim
{% the height of X minus the line thickness
\box_ht:N \l_tmpa_box - \nicoud_line_thickness:n { #1 }
}
% the top part
\nicoud_path:n { #2 }
% the bottom part
\draw_path_moveto:n {0.35\l_nicoud_yesno_ht_dim,0.0\l_nicoud_yesno_ht_dim}
\draw_path_lineto:n {0.35\l_nicoud_yesno_ht_dim,0.5\l_nicoud_yesno_ht_dim}
\draw_path_use_clear:n { stroke }
\draw_end:
\mkern 0.5mu
\group_end:
}
\cs_new_protected:Nn \nicoud_path:n
{
\draw_path_moveto:n {0.1\l_nicoud_yesno_ht_dim,0.5\l_nicoud_yesno_ht_dim}
\draw_path_lineto:n {0.1\l_nicoud_yesno_ht_dim,1.0\l_nicoud_yesno_ht_dim}
\draw_path_lineto:n {0.6\l_nicoud_yesno_ht_dim,1.0\l_nicoud_yesno_ht_dim}
\draw_path_lineto:n {0.6\l_nicoud_yesno_ht_dim,0.5\l_nicoud_yesno_ht_dim}
\draw_path_close:
\draw_path_use_clear:n { #1 }
}
\cs_new:Nn \nicoud_line_thickness:n
{
\str_case:nn { #1 }
{
{\displaystyle}{\the\fontdimen8\textfont3}
{\textstyle}{\the\fontdimen8\textfont3}
{\scriptstyle}{\the\fontdimen8\scriptfont3}
{\scriptscriptstyle}{\the\fontdimen8\scriptscriptfont3}
}
}
\ExplSyntaxOff

\begin{document}

$X\YES\NO_{X\YES\NO}$

{\LARGE X$\YES\NO_{X\YES\NO}$}

\end{document}


• You learning from a true master (+1) Jan 31, 2018 at 21:08
• @DavidCarlisle Still not able to design airplanes with picture mode. Jan 31, 2018 at 21:09
• @Dr.ManuelKuehner Working on it! Jan 31, 2018 at 22:14
• @Dr.ManuelKuehner egreg aspires to be able to do things like this tex.stackexchange.com/a/114847/1090 Jan 31, 2018 at 22:14
• @David Carlisle Ah, I see. I do not doubt egreg's capability to copy this plane :) Jan 31, 2018 at 22:19

You can buid the symbols with tikz

\documentclass{article}
\usepackage{tikz}

\newcommand{\myclosedsymbol}{%
\tikz[baseline]{\fill[draw] (0,0) -- ++(0,1ex) ++(-0.25ex,0) rectangle (0.25ex,1.5ex) }%
}

\newcommand{\myopensymbol}{%
\tikz[baseline]{\draw (0,0) -- ++(0,1ex) ++(-0.25ex,0) rectangle (0.25ex,1.5ex) }%
}

\begin{document}

{\Huge $F \myopensymbol$}

{\normalsize $F \myopensymbol$}

{\tiny $F \myopensymbol$}

{\Huge $F \myclosedsymbol$}

{\normalsize $F \myclosedsymbol$}

{\tiny $F \myclosedsymbol$}

\end{document}


• Thanks, but this doesn't scale correctly when you put it as a subscript. Jan 31, 2018 at 21:11
• @DanielRobert-Nicoud use \text{..the above definition} and \text from amsmath then it will scale. Jan 31, 2018 at 21:14