I have spent several hours fighting this atrocity and yet have not found an answer. Let's consider this simple symbol:
It must fit well inside a table. Here is what I want to get:
Here is a nice PGF/TikZ picture produced by the code:
\usepackage{tikz}
\begin{tikzpicture}[scale=0.028]%
\path[use as bounding box] (-0.7,0) rectangle (15.7,10);% Added ±0.7 for nicer inline kerning
\draw[line width=0.4pt] (0+5, 5-0.02) .. controls(0+5, 6.5) and (4.5+5, 10) .. (7.02+5, 10);%
\draw[line width=0.4pt] (7+5-0.03, 10) .. controls(8.5+5, 10) and (10+5, 10) .. (10+5, 5-0.02);%
\draw[line width=0.4pt] (10+5, 5+0.02) .. controls(10+5, 0) and (8.5+5, 0) .. (7+5-0.02, 0);%
\draw[line width=0.4pt] (7.03+5, 0) .. controls(4.5+5, 0) and (0+5, 3.5) .. (0+5, 5+0.02);%
\draw[line width=0.3pt] (3.6+5, 7.2) .. controls(5.6+5, 8.8) and (10.2+5, 11.1) .. (8.6+5, 2.8);%
\draw[line width=0.3pt] (8.3+5, 4.2) -- (8.5+5, 2.4) -- (9.35+5, 3.9);%
\draw[dash pattern=on 0.5pt off 0.3pt, line width=0.3pt] (0, 8.5) -- (4.8, 4.55);%
\draw[dash pattern=on 0.5pt off 0.3pt, line width=0.3pt] (0, 1.5) -- (4.8, 5.45);%
\draw (0.5,5) node {\scalebox{.43}{$\alpha$}};
\end{tikzpicture}
Let’s just name that monster something shorter, e.g. define the whole code from \begin{tikzpicture}
to \end{tikzpicture}
(including both) as \basemotorpic
and try to make some improvements. First, I refined some of the lines and scaled it properly (made it font-size-dependent):
\newcommand{\basemotorpic}{\resizebox{1.17em}{!}{\begin{tikzpicture}[scale=0.028]%
\path[use as bounding box] (-0.7,0) rectangle (15.7,10);%
\draw[line width=0.4pt] (0+5, 5-0.02) .. controls(0+5, 6.5) and (4.5+5, 10) .. (7.02+5, 10);%
\draw[line width=0.4pt] (7+5-0.03, 10) .. controls(8.5+5, 10) and (10+5, 10) .. (10+5, 5-0.02);%
\draw[line width=0.4pt] (10+5, 5+0.02) .. controls(10+5, 0) and (8.5+5, 0) .. (7+5-0.02, 0);%
\draw[line width=0.4pt] (7.03+5, 0) .. controls(4.5+5, 0) and (0+5, 3.5) .. (0+5, 5+0.02);%
\draw[line width=0.3pt] (3.6+5, 7.2) .. controls(5.6+5, 8.8) and (10.2+5, 11.1) .. (8.6+5, 2.8);%
\draw[line width=0.3pt] (8.3+5, 4.2) -- (8.5+5, 2.4) -- (9.35+5, 3.9);%
\draw[dash pattern=on 0.5pt off 0.3pt, line width=0.3pt] (0, 8.5) -- (4.8, 4.55);%
\draw[dash pattern=on 0.5pt off 0.3pt, line width=0.3pt] (0, 1.5) -- (4.8, 5.45);%
\draw (0.5,5) node {\scalebox{.43}{$\alpha$}};
\end{tikzpicture}}}
I have noticed that if one loads a lump of packages (longtable, mathtools, microtype, wasysym and a bunch of other priceless tools) and places the command inside a table, then the symbol is somewhat stuck to the bottom edge of the box and no standart tricks can move it down. However, when I put this devil inside a \frame{...}
command, it was stuck to the upper edge of the cell box! WTF?! UPDATE: when I did the same thing two days later, it was always stuck to the upper edge, et il n’avait rien à péter de ce qu’il n’y avait pas de \frame{...}
controlseq autour de l’image, as an enraged French would have said. In order to stabilize the behaviour of that wayward hoodlum, I had to confine it within a frame... that would draw no frame! It was accomplished after I had hacked the latex.ltx
file and copied the \frame
definition with \hrule
’s and \vrule
’s removed. Here’s what I got:
\makeatletter
\long\def\invisibleframe#1{%
\leavevmode
\hbox{%
\hskip-\@wholewidth
\vbox{%
\vskip-\@wholewidth
\hbox{#1}%
\vskip-\@wholewidth}%
\hskip-\@wholewidth}}
\makeatother
Now let’s combine all these oddities and get a symbol with nice vertical alignment:
\newcommand{\oddmot}{\invisibleframe{\raisebox{-0.05em}{\mbox{\basemotorpic}}\vspace{-0.07em}}}
Aww yeah! Finally!
If needed, play with the resizebox, thicken the lines etc.