\subsection{The \texttt{label} command}

One of the nicest features of \MP{} is that it relies on \TeX{} (or
\LaTeX) to typeset labels within figures.  Almost all figures in
technical documents are accompanied by labels which help clarify the
situation for which the figure is assisting to illustrate.  Such labels
may include anything from simple typesetting as in
Figures~\ref{fig:draw1}, \ref{fig:annulus2}, and~\ref{fig:draw2} to
typesetting function declarations and even axes labeling.

The |label| command requires two arguments\Dash a string to typeset and
the point for which label is placed.  For example, the command

\begin{lstlisting}[style=MP]
label("A", (0,0));
\end{lstlisting}
will place the letter ``A'' at the coordinate |(0,0)| and the box around
this label is centered vertically and horizontally at this point.
Simple strings like \lstinline[style=text]{"A"} require no real
typesetting to ensure that they appear properly in the figure.  However,
many typeset strings in technical figures require the assistance of
\TeX{} to properly display them.

\begin{figure}
  \begin{withattachment}{parabola.mp}
    \centering
    \includegraphics{parabola.mps}
  \end{withattachment}
  \caption{Labeling text}
  \label{fig:parabola}
\end{figure}

For example, \autoref{fig:parabola} is an example where typesetting is
preferred.  That is, the axes labels and the function declaration look
less than perfect if \TeX{} is not used.  For reasons such as this,
\MP{} provides a way to \textit{escape} to \TeX{} in order to assist in
typesetting the labels.  Therefore, instead of labeling the ``A'' as
above,

\begin{lstlisting}[style=MP]
label(btex A etex, (0,0));
\end{lstlisting}
provides a much nicer technique for typesetting the label.  The
|btex ... etex| block instructs \MP{} to process everything in between
|btex| and |etex| using \TeX.  Therefore, the function declaration in
\autoref{fig:parabola} is labeled using

\begin{lstlisting}[style=MP]
label(btex $f(x)=x^2$ etex, (a,b));
\end{lstlisting}
where $(a,b)$ is the point for which the label is to be centered.

Since many \MP{} users prefer to typeset their labels using \LaTeX{}
instead of plain \TeX, \MP{} provides a convenient method for
accommodating this, done in the preamble of the \MP{} source file.  The
following code ensures that the |btex ... etex| block escapes to
\LaTeX{} (instead of plain \TeX) for text processing.

\begin{lstlisting}[style=MP]
verbatimtex
%&latex
\documentclass{minimal}
\begin{document}
etex
beginfig(|$n$|);
|\quad$\langle\mbox{\normalfont\textit{draw commands}}\rangle$|
endfig;
end
\end{lstlisting}

Often times it is desirable to typeset labels with a justification that
are not necessarily centered.  For example, one may wish to place an
``A'' centered horizontally about |(0,0)|, but placed above
|(0,0)|. \MP{} provides eight suffixes to accommodate such needs.  The
suffixes |.lft|, |.rt|, |.bot|, and |.top| align the label on the left,
right, bottom, and top, respectively, of the designated point.  A hybrid
of these four justifications provide four additional ones, namely,
|.llft|, |.ulft|, |.lrt|, and |.urt| to align the label on the lower
left, upper left, lower right, and upper right, respectively, of the
designated point.  For example,

\begin{lstlisting}[style=MP]
label.top(btex A etex, (0,0));
\end{lstlisting}
places the ``A'' directly above |(0,0)|.  \autoref{fig:label}
demonstrates each of the suffixes and their corresponding placement of
the labels.

\begin{figure}
  \begin{withattachment}{label.mp}
    \hfill%
    \includegraphics{label-1.mps}%
    \hfill%
    \includegraphics{label-2.mps}%
    \hfill\mbox{}%
  \end{withattachment}
  \caption{Label suffixes}
  \label{fig:label}
\end{figure}
