20

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.

  • 2
    See http://mirrors.ctan.org/info/symbols/comprehensive/symbols-a4.pdf for a extensive list of symbols, perhaps those symbols (markers?) do exist already... –  Jan 31 '18 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. – Daniel Robert-Nicoud Jan 31 '18 at 20:24
  • @ChristianHupfer Btw, they represent colored leaves in certain trees (not that it matters). – Daniel Robert-Nicoud Jan 31 '18 at 20:26
  • 1
    if you have them as images then you can use \includegraphics[height=1ex]{image-a} or whatever size you want as you symbol. – David Carlisle Jan 31 '18 at 20:34
  • 1
    @DanielRobert-Nicoud: Drawing the symbols with TikZ is easy, but not the correct scaling with respect to the context where the symbol appears –  Jan 31 '18 at 20:42
  • @DavidCarlisle I would like them to have standard dimension in math equations. I don't know if \includegraphics can do the trick. – Daniel Robert-Nicoud Jan 31 '18 at 20:42
  • @ChristianHupfer Yes, but I would really like them to scale correctly. – Daniel Robert-Nicoud Jan 31 '18 at 20:44
  • If you use \draw[line width=.1ex] (or a similar relative unit) the line width should scale according to the font size, if I am not completely wrong. – Jasper Habicht Jan 31 '18 at 20:54
  • those packages appear to interfere with the packages I already use for mathematical symbols: which packages are you using? – CarLaTeX Jan 31 '18 at 20:58
  • 1
    that's why I said to scale to 1ex (the height of an x) – David Carlisle Jan 31 '18 at 21:07

2 Answers2

33

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}

enter image description here

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}

enter image description here

egreg
  • 1,121,712
13

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} 

enter image description here

sergiokapone
  • 5,578
  • 1
  • 16
  • 39