\documentclass{amsart}
\usepackage{amssymb}
\usepackage{color}
\usepackage{graphics}
\usepackage{adtrees}
\usepackage{url}
\usepackage{microtype}

\begin{document}
\title{Adpositional Trees in \LaTeX}
\date{}
\author[Marco Benini]{Marco Benini}
\address[Marco Benini]{Dipartimento di Scienza e Alta Tecnologia\\ 
  Universit\`a degli Studi dell'Insubria\\
  via Valleggio 11, I-22100 Como, Italy}
\email{marco.benini@uninsubria.it}
\urladdr{http://marcobenini.wordpress.com}
\author[Federico Gobbo]{Federico Gobbo}
\address[Federico Gobbo]{Faculty of Humanities\\
  University of Amsterdam\\ 
  Spuistraat 134,NL-1012VT Amsterdam, The Netherlands}
\email{F.Gobbo@uva.nl}
\urladdr{http://federicogobbo.name}
\maketitle

% --------------------------
\section{Introduction}\label{sec:introduction}
Adpositional trees (adtrees, for short) are a formal way to represent
expressions in natural language. They have been defined, used, and
discussed in F.~Gobbo and M.~Benini, \textit{Constructive Adpositional
  Grammars: Foundations of Constructive Linguistics}, Cambridge
Scholar Press (2011). Since then, they have been used without
theoretical modifications in a number of applications.

This document describes the \LaTeX\/ package to draw adtrees. It is
written so that a user may start typesetting adtrees as soon as
possible: all the fundamental commands and macros are presented in
Section~\ref{sec:simple}. At the first reading, the subsequent
sections may be freely skipped.

Section~\ref{sec:centring} describes the next obvious step: how to put
an adtree inside your document, controlling the way to align it with
other objects. Section~\ref{sec:complex} explains how to control the
length of branches via the \verb|\unitlength| value. It also
introduces the variants of the fundamental commands to modify the
lengths of the branches in the adtree, the angle between them, or
both, either globally, locally, or recursively.

Section~\ref{sec:internal} describes the low-level definitions that
affect the construction of the various pieces composing
adtrees. Changing these definitions is intended for advanced users,
who want to modify the standard appearance of
adtrees. Section~\ref{sec:hints} concludes the description of the main
graphical package, showing some special techniques to deal with
adtrees, and a couple of very low-level primitives of the package.

Sections~\ref{sec:pathlike} and~\ref{sec:tabular} describe two
alternatives way to compose adtrees. the former shows a
\emph{path-like} format which is useful when keeping the order of
morphemes in the original sentence is important; the latter is a
textual rendering of an adtree as a piece of indented text.

The final Section~\ref{sec:linear} describes the way to render adtrees
in a linear format. This is a minor feature which we discourage to
use, except for very special purposes.

% --------------------------
\clearpage
\section{Simple Adtrees}\label{sec:simple}
The installation of the package is standard: see the documentation on
your particular \TeX\/ system for the details. It reduces to put the
\verb|.sty| file in a sensible place. Using the package in a document
requires it to be invoked with
\verb|\usepackage{adtrees}| in the preamble.\vspace{1.5ex}

The simplest adtree is composed by a single morpheme:
\begin{equation*}
  \ATm{Liza}{O}
\end{equation*}
which has been typeset by the command 
\begin{verbatim}
    \ATm{Liza}{O}
\end{verbatim}

Sometimes, a morpheme requires to specify attributes:
\begin{equation*}
  \ATm{Liza}{O}[proper noun][animated]
\end{equation*}
this behaviour is accomplished by the command
\begin{verbatim}
    \ATm{Liza}{O}[proper noun][animated]
\end{verbatim}

The general form of the \verb|\ATm| command is 
\begin{equation*}
  \verb|\ATm{| m \verb|}{| g \verb|}[| a_1 \verb|]| \cdots \verb|[|
    a_n \verb|]|
\end{equation*}
with $m$ the morpheme, $g$ its grammar character, and $a_1, \dots,
a_n$ its attributes, if any.  The attributes are optional, and there
can be any number of them. Also, notice how all the commands in the
package start with \verb|\AT|: the final \verb|m| stands for
\emph{morpheme}. This is a general naming rule: all the fundamental
command have the form \verb|\AT| followed by a single letter which
reminds its function. Variants of the fundamental commands use a
two-letter code, the first letter being the same as the fundamental
command, and the second letter reminding the variant.

% --------------------------
\subsection{Complex Adtrees}\label{subsec:complex}
A complex adtree is made by two adtrees, composed via an
\emph{adposition}, which is described by a morpheme together with the
grammar character of the resulting adtree, and the
\emph{trajectory}. The trajectory is an arrow, and it can be
$\leftarrow$, $\rightarrow$, or $\leftrightarrow$. The following three
examples are very similar to the ones in Figure 2.11 of Gobbo and
Benini (2011):
\begin{equation*}
  \ATr{to}{I_2^2}
  {\ATm{Kim}{O_2}}
  {\ATs{The box belongs}{I_1^2}}
  \qquad
  \ATl{$\epsilon$}{I_2^2}
  {\ATs{the box}{O_2}}
  {\ATs{Kim owns}{I_1^2}}
  \qquad 
  \ATb{on}{E>I_1^1}
  {\ATs{the box}{O}}
  {\ATs{Kim jumps}{I_1^1}}
\end{equation*}

These adtrees are typeset, respectively, by the commands
\begin{verbatim}
    \ATr{to}{I_2^2}
    {\ATm{Kim}{O_2}}
    {\ATs{The box belongs}{I_1^2}}

    \ATl{$\epsilon$}{I_2^2}
    {\ATm{the box}{O_2}}
    {\ATs{Kim owns}{I_1^2}}

    \ATb{on}{E>I_1^1}
    {\ATs{the box}{O_2}}
    {\ATs{Kim jumps}{I_1^1}}
\end{verbatim}\vspace{1.5ex}

The general format of these commands is
\begin{equation*}
  c \verb|{| a \verb|}{| g \verb|}[| x_1 \verb|]| \dots \verb|[| x_n 
  \verb|]{| L \verb|}{| R \verb|}|
\end{equation*}
with $c$ among \verb|\ATl|, \verb|ATr|, \verb|\ATb|; $a$ the
adposition: $g$ the grammar character of the whole construction; $x_1,
\dots, x_n$ the optional attributes of the construction; $L$ the left
adtree; and $R$ the right adtree. The adposition is typeset as normal
text, the grammar character in math mode with the roman typeface, so
that super- and sub-scripts can be freely used, and the trajectory is
defined by the command: \verb|\ATl| for the \emph{left} arrow,
\verb|\ATr| for the \emph{right} arrow, and \verb|\ATb| for the arrow
in \emph{both} direction, following the general naming rule.  The
attributes are optional and they are typeset as in the morpheme
construction.\vspace{1.5ex}

Actually, the \verb|\ATm| command is used to typeset proper morphemes,
while the \verb|\ATs| command is designed to typeset expressions which
can be expanded into an adtree. In fact, the \verb|s| letter stands
for \emph{summary}, following the general naming rule. The \verb|\ATs|
command has the same syntax as the \verb|\ATm| command, and it differs
just in the graphical appearance. So, it may take an arbitrary number
of attributes, and whatever applies to \verb|\ATm| holds for
\verb|\ATs|, too.

% --------------------------
\subsection{Epsilon Adpositions}\label{subsec:epsilon}
Since writing adtrees with the empty adposition, represented by the
$\epsilon$ symbol, is very common, the following commands are
provided: \verb|\ATle|, \verb|\ATre|, and \verb|\ATbe|, with \verb|e|
standing for \emph{empty} in the general naming convention. They
behave as the command without the trailing \verb|e|, but the
adposition is automatically typeset. Also, they share the same
syntax. So, the previous example
\begin{equation*}
  \ATle{I_2^2}
  {\ATs{the box}{O}}
  {\ATs{Kim owns}{I_1^2}}
\end{equation*}
can be typeset in a simplified way as
\begin{verbatim}
    \ATle{I_2^2}
    {\ATs{the box}{O}}
    {\ATs{Kim owns}{I_1^2}}
\end{verbatim}\vspace{1.5ex}

Similarly, because the so-called epsilon-transformations are common,
and they require to forget about adpositions and morphemes, which is
graphically marked by cancelling them with a stroke, the package
automatically includes the \verb|cancel| package by Donald Arseneau,
(available in CTAN, at
\url{http://mirror.ctan.org/macros/latex/contrib/cancel}). In
addition, to simplify the cancellation of empty adpositions, the
commands \verb|\ATrc| \verb|\ATlc| \verb|\ATbc| are provided, with
\verb|c| standing for \emph{cancel ed}. They work as their
counterparts with the trailing \verb|e|, sharing the same syntax. For
example,
\begin{equation*}
  \ATlc{I_2^2}
  {\ATs{\cancel{the apple}}{O}}
  {\ATs{Kim eats}{I_1^2}}
\end{equation*}
has been typeset by
\begin{verbatim}
    \ATlc{I_2^2}
    {\ATs{\cancel{the apple}}{O}}
    {\ATs{Kim eats}{I_1^2}}
\end{verbatim}

% --------------------------
\subsection{Overlapping subtrees}\label{subsec:overlapping}
When one has to write complex adtrees, it is often the case that there
are overlapping subtrees. To cope with these situations, the simplest
way is to prolong the left or the right branch of a node. This
behaviour can be accomplished with the \verb|\ATxl| and \verb|\ATxr|
commands, where \verb|x| stands for \emph{extends} and \verb|l| and
\verb|r| for \emph{left} and \emph{right}, respectively. They both
take a single argument which is the adtree being appended at the end
of the extended branch.  For example, the following adtree, similar to
the one in Figure~2.16 (Gobbo and Benini 2011):
\begin{equation*} 
  \unitlength.23ex
  \ATl{with}{I^3_3}[phrase]
  {\ATs{the key}{O}}
  {\ATre{I^3_2}
    {\ATxl{\ATs{the door}{O_2}}}
    {\ATs{will be opened}{I^3}}}
\end{equation*}
has been typeset by the following \LaTeX\/ code
\begin{verbatim}
    \ATl{with}{I^3_3}[phrase]
    {\ATs{the key}{O_3}}
    {\ATre{I^3_2}
      {\ATxl{\ATs{the door}{O_2}}}
      {\ATs{will be opened}{I^3}}}
\end{verbatim}

The example also shows how to put an attribute in the top adposition.
Normally, for reasons of space, adtrees use extensively summaries to
put in evidence only the linguistic phenomenon needed in that
moment. For example, the following adtree:
\begin{equation*} 
  \ATl{with}{I^3_3}
  {\ATs{the key}{O_3}}
  {\ATxr{\ATs{the door will be opened}{I^3_2}}}
\end{equation*}
has been typeset by the following \LaTeX\/ code
\begin{verbatim}
    \ATl{with}{I^3_3}
      {\ATs{the key}{O_3}}
      {\ATxr{\ATs{the door will be opened}{I^3_2}}}
\end{verbatim}
The example also shows a right-branch extension. Overlapping can be
also avoided in complex adtrees using advanced commands. See Section
\ref{sec:complex} for details.

% --------------------------
\subsection{Morphological adpositions}\label{subsec:mu}
Sometimes, for the sake of clarity, morphological relations should be
stated explicitly. For example, the following adtree:
\begin{equation*} 
%  \unitlength.3ex
  \ATr{-ly}{E>I^3_2}
  {\ATm{quick-}{A}}
  {\ATre{I^3_2}
    {\ATxl{\ATs{the door}{O_2}}}
    {\ATs{will be opened}{I^3}}}
\end{equation*}
which has been typeset by the following \LaTeX\/ code
\begin{verbatim}
    \ATr{-ly}{E>I^3_2}
    {\ATm{quick-}{A}}
    {\ATre{I^3_2}
      {\ATxl{\ATs{the door}{O_2}}}
      {\ATs{will be opened}{I^3}}}
\end{verbatim}
could be made explicit, where the $\mu$ adposition indicates a
morphological relation. For example, the following adtree is
linguistically equivalent to the previous one:
\begin{equation*} 
  \unitlength.2ex
  \ATle{I^3_2}
  {\ATxl{\ATxl{\ATrmu{E}
        {\ATm{-ly}{E}}
        {\ATm{quick-}{A}}}}}
  {\ATre{I^3_2}
    {\ATxl{\ATs{the door}{O_2}}}
    {\ATs{will be opened}{I^3}}}
\end{equation*}
and it has been typeset by the following \LaTeX\/ code
\begin{verbatim}
    \ATle{I^3_2}
    {\ATxl{\ATxl{\ATrmu{E}
          {\ATm{-ly}{E}}
          {\ATm{quick-}{A}}}}}
    {\ATre{I^3_2}
      {\ATxl{\ATs{the door}{O_2}}}
      {\ATs{will be opened}{I^3}}}
\end{verbatim}
The package provides the commands \verb|\ATlmu|, \verb|\ATrmu|, and
\verb|\ATbmu|, analogous to the $\epsilon$ variants, to simplify the
typesetting of adtrees using the $\mu$ adposition.

% --------------------------
\clearpage
\section{Alignments and Centring}\label{sec:centring}
Drawing an adtree in a display is the simplest and most common way:
\begin{equation*}
  \unitlength.18ex
  \ATl{with}{I^3_3}
  {\ATs{the key}{O_3}}
  {\ATre{I^3_2}
    {\ATxl{\ATs{the door}{O_2}}}
    {\ATs{will be opened}{I^3}}}
\end{equation*}
is generated by the following code
\begin{verbatim}
    \begin{equation*}
      \unitlength.18ex
      \ATl{with}{I^3_3}
        {\ATs{the key}{O_3}}
        {\ATre{I^3_2}
          {\ATxl{\ATs{the door}{O_2}}}} 
          {\ATs{will be opened}{I^3}}}
    \end{equation*}
\end{verbatim}\vspace{1.5ex}

Putting an adtree in a figure environment reduces to write the
corresponding \LaTeX\/ display inside the content of the \verb|figure|
environment.

In general, we strongly encourages the user to use a robust display
environment, like \verb|equation*| or \verb|displaymath|, and to avoid
the \verb|center| environment. Advanced displays to align mathematical
material, as in the \AmS\ suite, are another good and reliable option
to place adtrees in a page.\vspace{1.5ex}

An adtree fits exactly its enclosing box, that is
\begin{equation*}
  \fboxsep0pt
  \unitlength.18ex
    \fbox{\ATl{with}{I^3_3}
    {\ATs{the key}{O_3}}
    {\ATre{I^3_2}
      {\ATxl{\ATbe{O_2}{\ATm{the}{A}}{\ATm{door}{O}}}}
      {\ATs{will be opened}{I^3}}}}
\end{equation*}
If one looks closely (and that is why the adtree is so big), there is
half of the point in the root which lies outside the box. This is done
on purpose, to make easier to collate together adtrees.\vspace{1.5ex}

Writing a morpheme or a summary directly inside the text, like
\fbox{\ATm{Gargoyle}{O}}, produces a box whose baseline is exactly the
baseline of the morpheme. This makes the behaviour predictable, even
if the graphical appearance is quite terrible (like in this
paragraph). An adtree, like \fbox{\ATre{I_2^2} {\ATm{the box}{O_2}}
  {\ATbe{I_1^2}{\ATm{Kim}{O_1}}{\ATs{owns}{I^2}}}}, behaves similarly,
because the baseline of the box is the baseline of the lowest morpheme
or summary in the whole tree, the one corresponding to the \emph{owns}
morpheme in the example.

So, at least in principle, since the user can rely on the size of the
enclosing box, and on the position of the baseline, it is possible to
align an adtree in whatever way one may desire. In our experience, the
only really common way one requires to move adtrees in the surrounding
text is to centre them: the package provides three commands to centre
an adtree horizontally, vertically, or both. These are
\verb|\ATvcentre|, \verb|\AThcentre|, and \verb|\ATcentre|,
respectively. For example
\begin{equation*}
  \ATvcentre{\ATl{with}{I^3_3}
    {\ATs{the key}{O_3}}
    {\ATre{I^3_2}
      {\ATxl{\ATs{the door}{O_2}}}
      {\ATs{will be opened}{I^3}}}} 
  \mathbin{\equiv}
  \ATvcentre{\ATl{with}{I^3_3}
    {\ATs{the key}{O_3}}
    {\ATre{I^3_2}
      {\ATs{the door}{O_2}}
      {\ATxr{\ATs{will be opened}{I^3}}}}}
\end{equation*}
has been generated by
\begin{verbatim}
    \ATvcentre{\ATl{with}{I^3_3}
      {\ATs{the key}{O_3}}
      {\ATre{I^3_2}
        {\ATxl{\ATs{the door}{O_2}}}
        {\ATs{will be opened}{I^3}}}} 
    \mathbin{\equiv}
    \ATvcentre{\ATl{with}{I^3_3}
      {\ATs{the key}{O_3}}
      {\ATre{I^3_2}
        {\ATs{the door}{O_2}}
      {\ATxr{\ATs{will be opened}{I^3}}}}}
\end{verbatim}

More sophisticated ways to place an adtree in the page are discussed
in Section~\ref{sec:hints}.

% --------------------------
\clearpage
\section{Dealing with Complex Adtrees}\label{sec:complex}
Simple adtrees are easily typeset using the previously described
commands. But, sooner or later, one has to typeset a complex adtree,
which does not fit into the page, or whose branches overlap, no matter
how we extend branches, or which looks awful because of a poor choice
of dimensions. In all these cases, there are a number of strategies
one may adopt.\vspace{1.5ex}

The simplest and crudest one is to change the length of branches. In
this respect, branches are drawn using the \LaTeX\/ \verb|picture|
environment, so the length of each branch is $25\verb|\unitlength|$.

The value of \verb|\unitlength| may be changed globally, affecting the
way all subsequent adtrees in a document are typeset. Also, the value
may be changed inside a surrounding group, which affects only the
adtree to be typeset, but not the rest of the document.

Finally, the value of \verb|\unitlength| can be changed within the
adtree, to affect the point where the change appears and all the
subtrees. Notice how there is no way to directly change the value of
\verb|\unitlength| in a single node: we will return on this point
later.

For example,
\begin{equation*}
  {\unitlength.28ex
    \ATl{with}{I^3_3}
    {\ATs{the key}{O_3}}
    {\ATre{I^3_2}
      {\ATs{the door}{O_2}}
      {\ATs{will be opened}{I^3}}} }
\end{equation*}
has been typeset adopting the strategy to affect all the branches in
the adtree: 
\begin{verbatim}
   {\unitlength.3ex
     \ATl{with}{I^3_3}{\ATs{the key}{O_3}}
     {\ATre{I^3_2}
       {\ATs{the door}{O_2}}
       {\ATs{will be opened}{I^3}}} }
\end{verbatim}

On the contrary,
\begin{verbatim}
    \unitlength.31ex
    \ATl{with}{I^3_3}
    {\unitlength.12ex\ATxl{\ATbe{O_3}
      {\ATm{the}{A}}
      {\ATm{key}{O}}}}
    {\unitlength.28ex\ATre{I^3_2}
      {\ATs{the door}{O_2}}
      {\ATs{will be opened}{I^3}}}
\end{verbatim}
modifies the length of all the branches in the left subtree to
\verb|3ex| (since $3 = 25 \cdot 0.12$), and to \verb|7ex| in the
right subtree, while the outer branches have a length of
\verb|7.75ex|, obtaining
\begin{equation*}
  \unitlength.31ex
  \ATl{with}{I^3_3}
  {\unitlength.12ex\ATxl{\ATbe{O_3}
    {\ATm{the}{A}}
    {\ATm{key}{O}}}}
  {\unitlength.28ex\ATre{I^3_2}
    {\ATs{the door}{O_2}}
    {\ATs{will be opened}{I^3}}}
\end{equation*}

The adposition, and the related arrow and grammar character are moved
accordingly, which is not pleasant in this example, although it is
what one usually wants when changing the value of \verb|\unitlength|
in the whole adtree. 

The right way to have the adposition always in the same place with
respect to the branches in a node, is to fix a suitable
\verb|\unitlength| for the whole adtree, and to extend locally, just
in the single node, its value. The exact technique is a bit complex,
and it will be explained by an example later. Usually, there is no
need to cope with these minor details, except for maniacs or for high
precision works.\vspace{1.5ex}

The length of branches can be changed locally to a single node,
without recursively affecting the subtrees, as it happens when we
change the value of \verb|\unitlength| inside a node, like in the
latest example. This can be achieved using the length variant of the
adtree drawing commands. There are also an angle variant, and a
variant affecting both the length and the angle.
The complete list of complex adtree drawing commands, with all the
variants is in Table~\ref{tab:1}
\begin{table}
\begin{center}
  \begin{tabular}{cccc}\renewcommand{\arraystretch}{1.3}
    \textbf{base command} & \textbf{length variant} & \textbf{angle
      variant} & \textbf{combined variant}\\ 
    \hline\hline
    \multicolumn{4}{c}{{\huge\strut}\emph{plain adtrees}}\\
    \verb|\ATl| & \verb|\ATlL| & \verb|\ATlA| & \verb|\ATlLA|\\
    \verb|\ATr| & \verb|\ATrL| & \verb|\ATrA| & \verb|\ATrLA|\\
    \verb|\ATb| & \verb|\ATbL| & \verb|\ATbA| & \verb|\ATbLA|\\
    \hline
    \multicolumn{4}{c}{{\huge\strut}\emph{extensions}}\\
    \verb|\ATxl| & \verb|\ATxlL| & \verb|\ATxlA| & \verb|\ATxlLA|\\
    \verb|\ATxr| & \verb|\ATxrL| & \verb|\ATxrA| & \verb|\ATxrLA|\\
    \hline
    \multicolumn{4}{c}{{\huge\strut}\emph{adtrees with special
        adpositions}}\\ 
    \verb|\ATle| & \verb|\ATleL| & \verb|\ATleA| & \verb|\ATleLA|\\
    \verb|\ATlc| & \verb|\ATlcL| & \verb|\ATlcA| & \verb|\ATlcLA|\\
    \verb|\ATlmu| & \verb|\ATlmuL| & \verb|\ATlmuA| & \verb|\ATlmuLA|\\ 
    \verb|\ATre| & \verb|\ATreL| & \verb|\ATreA| & \verb|\ATreLA|\\
    \verb|\ATrc| & \verb|\ATrcL| & \verb|\ATrcA| & \verb|\ATrcLA|\\
    \verb|\ATrmu| & \verb|\ATrmuL| & \verb|\ATrmuA| & \verb|\ATrmuLA|\\ 
    \verb|\ATbe| & \verb|\ATbeL| & \verb|\ATbeA| & \verb|\ATbeLA|\\
    \verb|\ATbc| & \verb|\ATbcL| & \verb|\ATbcA| & \verb|\ATbcLA|\\
    \verb|\ATbmu| & \verb|\ATbmuL| & \verb|\ATbmuA| & \verb|\ATbmuLA|\\ 
    \hline
  \end{tabular}
\end{center}
\caption{Complex adtrees drawing command.}\label{tab:1}
\end{table}

The names of these commands are easy to remember: the length variant
has a trailing \verb|L|, the angle variant a trailing \verb|A|, and
the combined variant a trailing \verb|LA|.  

The syntax of the length variant is the same as the base command
except that there is an additional argument, the first one, which
contains the value for the local \verb|\unitlength|. In fact, the
length we specify has exactly the same effect of changing
\verb|\unitlength| just before the command, but the change does not
apply recursively.

It is worth remarking that, e.g., \verb|\ATlL{\unitlength}| is
equivalent to \verb|\ATl|, so to reduce the length of branches to
$90\%$ of their current value, it suffices the write something like
\verb|\ATrL{.9\unitlength}|.

Similarly, the syntax of the angle variant requires an additional
first argument which can be $60$, $90$, or $120$, representing the
angle between the branches: the default is $60$ degrees. Specifying
any other values resorts to the default.  

The combined variant requires two additional arguments, the length and
the angle, in this order, before any other parameter.\vspace*{1.5ex}

A hidden, very technical, feature of the package is that, whatever
follows the length in the \verb|L| argument gets evaluated inside the
group which generates the branches in the node. So, for those well
inside \LaTeX\/ mysteries, this feature can be used to tweak the
behaviour of the graphical engine.\vspace{1.5ex}

For example,
\begin{equation*}
  \ATlL{.4ex}{with}{I^3_3}
  {\ATbe{O_3}
    {\ATm{the}{A}}
    {\ATm{key}{O}}}
  {\ATreL{.25ex}{I^3_2}
    {\ATs{the door}{O_2}}
    {\ATs{will be opened}{I^3}}}
\end{equation*}
has been typeset by
\begin{verbatim}
    \ATlL{.4ex}{with}{I^3_3}
    {\ATbe{O_3}
      {\ATm{the}{A}}
      {\ATm{key}{O}}}
    {\ATreL{.25ex}{I^3_2}
      {\ATs{the door}{O_2}}
      {\ATs{will be opened}{I^3}}}
\end{verbatim}\vspace{1.5ex}

The \emph{trick} to have the adposition always in the same place we
speak before, is now easy to write, although slightly
cumbersome. Specifically, the trick is to choose a reasonable global
value for \verb|\unitlength| which affects all the adtree, and then to
locally extend the branches with the \verb|\ATxlL| and \verb|\ATxrL|
commands whenever there is a need. The sensible choice for
\verb|\unitlength| minimises the number of extensions, and nicely
place the adpositions. For example
\begin{verbatim}
    {\unitlength.32ex
      \ATl{with}{I^3_3}
      {\ATxlL{.1ex}
        {\ATbe{O_3}
          {\ATm{the}{A}}
          {\ATm{key}{O}}}}
      {\ATxrL{.2ex}
        {\ATre{I^3_2}
          {\ATs{the door}{O_2}}
          {\ATs{will be opened}{I^3}}}}}
\end{verbatim}
generates
\begin{equation*}
  {\unitlength.3ex
    \ATl{with}{I^3_3}
    {\ATxlL{.1ex}{\ATbe{O_3}
        {\ATm{the}{A}}
        {\ATm{key}{O}}}}
    {\ATxrL{.2ex}{\ATre{I^3_2}
        {\ATs{the door}{O_2}}
        {\ATs{will be opened}{I^3}}}}}
\end{equation*}\vspace{1.5ex}

Another possibility to change the geometry of adtrees is to modify the
angle between the branches. The commands to change the angle in the
whole document, or within any group, affecting just the content of the
group, are \verb|\ATnormalangle|, which sets the angle to $60$
degrees, the default, \verb|\ATwideangle|, which sets the angle to
$90$ degrees, and \verb|\ATextrawideangle|, which sets the angle to
$120$ degrees. These values are the only possible ones, also in the
angle variant of the commands, as said before. Moreover, the value
$60$, $90$, or $120$ passed to the angle variant of a command (or to
the combined variant) affects the node locally, as in the length
variants' case.

For example
\begin{equation*}
  {\ATwideangle\unitlength.3ex
    \ATl{with}{I^3_3}
    {\ATbe{O_3}
      {\ATm{the}{A}}
      {\ATm{key}{O}}}
    {\ATxrL{.2ex}{\ATre{I^3_2}
      {\ATs{the door}{O_2}}
      {\ATs{will be opened}{I^3}}}} }
\end{equation*}
has been typeset by
\begin{verbatim}
    {\ATwideangle\unitlength.3ex
      \ATl{with}{I^3_3}
      {\ATbe{O_3}
        {\ATm{the}{A}}
        {\ATm{key}{O}}}
      {\ATxrL{.2ex}{\ATre{I^3_2}
        {\ATs{the door}{O_2}}
        {\ATs{will be opened}{I^3}}}} }
\end{verbatim}

However, the following adtree
\begin{equation*}
  \ATlLA{.5ex}{120}{with}{I^3_3}
  {\ATbe{O_3}
    {\ATm{the}{A}}
    {\ATm{key}{O}}}
  {\ATreL{.25ex}{I^3_2}
    {\ATs{the door}{O_2}}
    {\ATs{will be opened}{I^3}}}
\end{equation*}
has been generated by
\begin{verbatim}
    \ATlLA{.5ex}{120}{with}{I^3_3}
    {\ATbe{O_3}
      {\ATm{the}{A}}
      {\ATm{key}{O}}}
    {\ATreL{.25ex}{I^3_2}
      {\ATs{the door}{O_2}}
      {\ATs{will be opened}{I^3}}}
\end{verbatim}

The placement of the adposition varies when the angle is changed: this
has been done on purpose to cope with the reduction in height which is
induced by a larger angle between the branches. Notice how the
reduction in height may cause the adposition part of the adtree to
fall beyond the base of the branches.

% --------------------------
\clearpage
\section{Internal Constructions}\label{sec:internal}
All the major parts of an adtree can be customised. This section
describes a number of definitions which are used to control the
spacing between the various parts of morpheme blocks, summaries, and
adposition blocks. Also, the boxes which are deputed to provide a
format to a single morpheme, a grammar character, or an attribute, are
described.\vspace{1.5ex}

The shape of the adposition block, which lies just below the root of a
node in the adtree, is synthetically described as:
\begin{equation*}
  {\unitlength2ex
    \begin{picture}(14,14)
      \thinlines
      \put( 0, 2){\line(1,0){14}}
      \put( 0, 4){\line(1,0){14}}
      \put( 0, 6){\line(1,0){14}}
      \put( 0, 8){\line(1,0){14}}
      \put( 0,10){\line(1,0){14}}
      \put( 0,12){\line(1,0){14}}
      \put( 7,13){\makebox(0,0){pre skip}}
      \put( 7,11){\makebox(0,0){$t$}}
      \put( 7, 9){\makebox(0,0){first intermediate skip}}
      \put( 7, 7){\makebox(0,0){$a$}}
      \put( 7, 5){\makebox(0,0){second intermediate skip}}
      \put( 7, 3){\makebox(0,0){$g + x$}}
      \put( 7, 1){\makebox(0,0){post skip}}
      \thicklines
      \put( 0, 0){\line(1,0){14}}
      \put( 0,14){\line(1,0){14}}
      \put( 0, 0){\line(0,1){14}}
      \put(14, 0){\line(0,1){14}}
    \end{picture}}
  \qquad\qquad\qquad
  \raisebox{6ex}{\ATb{$a$}{g}[x]{\ATm{}{}}{\ATm{}{}}}
\end{equation*}
Here, $t$ stands for the trajectory, one of $\leftarrow$,
$\rightarrow$, or $\leftrightarrow$, as in the exemplifying adtree
above; $a$ is the adposition; $g$ is the grammar character; $x$ is an
attribute. The various skips are \LaTeX\/ commands deputed to add
vertical space between the components.

These commands, together with their definition, are:
\begin{verbatim}
    \def\ATpreadpositionskip{\relax}
    \def\ATfirstinteradpositionskip{\vskip.3ex}
    \def\ATsecondinteradpositionskip{\vskip.3ex}
    \def\ATpostadpositionskip{\relax}
\end{verbatim}
They can be redefined globally, to affect all the adtrees following
the redefinition, or locally, within a group which limits the
scope. For example, the following adtree
\begin{equation*}
  {\def\ATpreadpositionskip{\vskip-2ex}
    \ATrL{.3ex}{to}{I_2^2}
    {\ATm{Kim}{O_2}}
    {\ATs{The box belongs}{I^2_1}}}
\end{equation*}
has been obtained by the code
\begin{verbatim}
    {\def\ATpreadpositionskip{\vskip-2ex}
      \ATrL{.3ex}{to}{I_2^2}
      {\ATm{Kim}{O_2}}
      {\ATs{The box belongs}{I^2_1}}}
\end{verbatim}

The \verb|L| hidden feature of the package, already introduced, which
injects code into the macro expansion, allows to redefine these
commands within the scope of a single node, as in the root of
\begin{equation*}
  \ATrL{\unitlength\def\ATpreadpositionskip{\vskip-2ex}}
  {to}{I_2^2}{\ATm{Kim}{O}}
  {\ATbe{I_1^2}{\ATs{The box}{O_1}}{\ATm{belongs}{I^2_1}}}
\end{equation*}
This effect is obtained by the following code
\begin{verbatim}
    \ATrL{\unitlength\def\ATpreadpositionskip{\vskip-2ex}}
    {to}{I_2^2}
    {\ATm{Kim}{O_2}}
    {\ATbe{I_1^2}{\ATs{The box}{O_1}}{\ATm{belongs}{I^2}}}
\end{verbatim}\vspace{1.5ex}

Attributes are managed so to form a unique block together with the
grammar character. This block is constructed by the \verb|\ATm| and
\verb|\ATs| commands, and inside the previously described adposition
block.

It is important to remark that, although the size of text is normal in
the case of the morpheme and summary blocks, and while it is small in
the case of the adposition block, the values of skips are not affected
by the size. Thus, we strongly suggest, if you want to change them, to
express these values in the \verb|ex| unit, which is the right unit to
measure vertical space in terms of the \emph{current} font size.

The structure of the attribute block is
\begin{equation*}
  {\unitlength2ex
    \begin{picture}(14,14)
      \thinlines
      \put( 0, 2){\line(1,0){14}}
      \put( 0, 4){\line(1,0){14}}
      \put( 0, 6){\line(1,0){14}}
      \put( 0, 8){\line(1,0){14}}
      \put( 0,10){\line(1,0){14}}
      \put( 0,12){\line(1,0){14}}
      \put( 7,13){\makebox(0,0){$g$}}
      \put( 7,11){\makebox(0,0){first skip}}
      \put( 7, 9){\makebox(0,0){$a_1$}}
      \put( 7, 7){\makebox(0,0){intermediate skip}}
      \put( 7, 5){\makebox(0,0){$\vdots$}}
      \put( 7, 3){\makebox(0,0){intermediate skip}}
      \put( 7, 1){\makebox(0,0){$a_n$}}
      \thicklines
      \put( 0, 0){\line(1,0){14}}
      \put( 0,14){\line(1,0){14}}
      \put( 0, 0){\line(0,1){14}}
      \put(14, 0){\line(0,1){14}}
    \end{picture}}
  \qquad\qquad\qquad
  {\def\ATAttributeBox#1{\strut\textsf{#1}}
    \raisebox{20ex}{\ATm{}{g}[\lbrack$a_1$\rbrack]
      [\vdots]
      [\lbrack$a_n$\rbrack]} }
\end{equation*}
Here, $g$ is the grammar character, while $a_1, \dots, a_n$ are the
various attributes. The commands defining the skips in this block are
\begin{verbatim}
    \def\ATfirstattrskip{\vskip.7ex}
    \def\ATinterattrskip{\vskip.5ex}
\end{verbatim}
These definitions can be changed globally or locally, within the scope
of a group. Also, in the case of attributes in the adposition block,
they can be redefined within the single node, with the same technique
as before.

It is worth remarking that any kind of material can be generated by
these commands, not only vertical space. For example
\begin{equation*}
  {\makeatletter
    \def\ATfirstattrskip{\vskip.5ex
      \hbox to\@ATlen{\hfil\tiny * * *\hfil}\nointerlineskip
      \vskip.3ex}
    \makeatother
    \ATbe{O}[determ]
    {\ATm{the}{A}}
    {\ATm{box}{O}}}
\end{equation*}
has been generated by
\begin{verbatim}
    {\makeatletter
      \def\ATfirstattrskip{\vskip.5ex
        \hbox to\@ATlen{\hfil\tiny * * *\hfil}\nointerlineskip
        \vskip.3ex}
      \makeatother
      \ATbe{O}[determ]
      {\ATm{the}{A}}
      {\ATm{box}{O}}}
\end{verbatim}\vspace{1.5ex}

Finally, morpheme and summary blocks are as follows:
\begin{equation*}
  {\unitlength2ex
    \begin{picture}(14,12)
      \thinlines
      \put( 0, 2){\line(1,0){14}}
      \put( 0, 4){\line(1,0){14}}
      \put( 0, 6){\line(1,0){14}}
      \put( 0, 8){\line(1,0){14}}
      \put( 0,10){\line(1,0){14}}
      \put( 7,11){\makebox(0,0){$\triangle$, if a summary}}
      \put( 7, 9){\makebox(0,0){pre skip}}
      \put( 7, 7){\makebox(0,0){$m$}}
      \put( 7, 5){\makebox(0,0){intermediate skip}}
      \put( 7, 3){\makebox(0,0){$g + x$}}
      \put( 7, 1){\makebox(0,0){post skip}}
      \thicklines
      \put( 0, 0){\line(1,0){14}}
      \put( 0,12){\line(1,0){14}}
      \put( 0, 0){\line(0,1){12}}
      \put(14, 0){\line(0,1){12}}
    \end{picture}}
  \qquad\qquad
  \raisebox{15ex}{\ATm{m}{g}[x]}
  \qquad
  \raisebox{14ex}{\ATs{m}{g}[x]}
\end{equation*}
Here, $m$ is the morpheme or expression, and $g$ is the grammar
character together with its attributes $x$. The commands defining the
skips in this block are
\begin{verbatim}
    \def\ATpremorphemeskip{\vskip.5ex}
    \def\ATintermorphemeskip{\vskip1ex}
    \def\ATpostmorphemeskip{\relax}
\end{verbatim}
Again, these definitions can be modified globally, or locally, within
a group that limits the scope of the change. It is worth remarking
that nesting an \verb|\ATm| or \verb|\ATs| command inside a complex
adtree provides a natural group. For example
\begin{equation*}
  \ATbe{O}
  {\def\ATpremorphemeskip{\vskip0ex}
    \def\ATintermorphemeskip{\vskip.2ex}
    \ATm{the}{A}}
  {\ATm{box}{O}}
\end{equation*}
has been typeset by
\begin{verbatim}
    \ATbe{O}
    {\def\ATpremorphemeskip{\vskip0ex}
      \def\ATintermorphemeskip{\vskip.2ex}
      \ATm{the}{A}}
    {\ATm{box}{O}}
\end{verbatim}\vspace{1.5ex}

Actually, the face of morphemes, adpositions, and expressions in
summaries is controlled by the following command:
\begin{verbatim}
    \def\ATMorphemeBox#1{#1\strut}
\end{verbatim}
The \verb|\strut| forces all the instances to have the same minimal
height and depth. So, to typeset all the morphemes and summaries in
italic, as in
\begin{equation*}
  {\def\ATMorphemeBox#1{\textit{#1}\strut}
    \ATb{in}{E>I_2^2}
    {\ATs{the house}{O}}
    {\ATs{Kim moves}{I^2_1}} }
\end{equation*}
the following code suffices
\begin{verbatim}
    {\def\ATMorphemeBox#1{\textit{#1}\strut}
      \ATb{in}{E>I_2^2}
      {\ATs{the house}{O}}
      {\ATs{Kim moves}{I^2_1}} }
\end{verbatim}\vspace{1.5ex}

Similarly, the face of grammar characters, wherever they appear, is
controlled by the command
\begin{verbatim}
    \def\ATGrammarCharacterBox#1{$\mathrm{#1}$}
\end{verbatim}
The same scoping rules apply as in the case of
\verb|\ATMorphemeBox|. So, for example, we can make the grammar
character of the left subtree to be \verb|\Huge|, as in
\begin{equation*}
  \ATb{in}{E>I_2^2}
  {\def\ATGrammarCharacterBox#1{\Huge$\mathrm{#1}$}
    \ATs{the house}{O}}
  {\ATs{Kim move}{I_1^2}}
\end{equation*}
by typing the following code
\begin{verbatim}
    \ATb{in}{E>I_2^2}
    {\def\ATGrammarCharacterBox#1{\Huge$\mathrm{#1}$}
      \ATs{the house}{O}}
    {\ATs{Kim moves}{I_1^2}}
\end{verbatim}\vspace{1.5ex}

Also attributes are typeset according to a command:
\begin{verbatim}
    \def\ATAttributeBox#1{\textsf{[#1]}}
\end{verbatim}
So, for example, the illustrating attribute block on the previous page
has been generated by the following code
\begin{verbatim}
    {\def\ATAttributeBox#1{\strut\textsf{#1}}
      \raisebox{20ex}{\ATm{}{g}[\lbrack$a_1$\rbrack]
        [\vdots]
        [\lbrack$a_n$\rbrack]} }
\end{verbatim}\vspace{1.5ex}

Finally, the symbol denoting a summary can be customised by changing
\begin{verbatim}
    \def\ATSummarySymbol{$\triangle$}
\end{verbatim}
It is important to remark that the top vertex of the triangle lies in
the middle of the top of the $\triangle$ character, providing a
natural point to join with the branches of adtrees. This fact should
be taken in account when changing the definition.

% --------------------------
\clearpage
\section{Hints and Tricks}\label{sec:hints}
There are a few last features which can be exploited in the
\verb|adtrees| package. These are the low-level commands to draw the
branches:
\begin{verbatim}
    \def\ATleftbranch#1#2{\line(#1,#2)}
    \def\ATrightbranch#1#2{\line(#1,#2)}
    \def\ATcircle{\circle*}
\end{verbatim}

The \verb|\ATleftbranch| and \verb|\ATrightbranch| commands draw the
left and the right branch of an adtree, respectively. Also, they draw
the extensions, when present. They can be redefined globally, locally
within the scope of a group, or locally within a node, using the
implicit scope of the length variant, as previously described by the
trick to equalise the position of adposition blocks.

For example,
\begin{equation*}
  \unitlength.26ex
  {\def\ATrightbranch#1#2{\color{red}\line(#1,#2)}
    \ATlL{\unitlength
      \def\ATleftbranch##1##2{\color{green}\line(##1,##2)}}
    {with}{I^3_3}{\ATs{the key}{O_3}}
    {\ATre{I^3_2}
      {\ATxl{\ATs{the door}{O_2}}}
      {\ATs{will be opened}{I^3}}} }
\end{equation*}
is obtained by making all the right branches red, and the topmost left
branch green:
\begin{verbatim}
    {\def\ATrightbranch#1#2{\color{red}\line(#1,#2)}
      \ATlL{\unitlength
        \def\ATleftbranch##1##2{\color{green}\line(##1,##2)}}
      {with}{I^3_3}
      {\ATs{the key}{O_3}}
      {\ATre{I^3_2}
        {\ATxl{\ATs{the door}{O_2}}}
        {\ATs{will be opened}{I^3}}} }
\end{verbatim}

Also, the following definition
\begin{verbatim}
    {\def\ATcircle#1{\relax}
      \ATl{with}{I^3_3}
      {\ATs{the key}{O_3}}
      {\ATre{I^3_2}
        {\ATxl{\ATs{the door}{O_2}}}
        {\ATs{will be opened}{I^3}}} }
\end{verbatim}
suppresses the points in the whole adtree
\begin{equation*}
  \unitlength.2ex
  {\def\ATcircle#1{\relax}
    \ATl{with}{I^3_3}
    {\ATs{the key}{O_3}}
    {\ATre{I^3_2}
      {\ATxl{\ATs{the door}{O_2}}}
      {\ATs{will be opened}{I^3}}} }
\end{equation*}

As a rather extreme and useless example, one can typeset the previous
adtree without showing the branches and making the points really huge
\begin{equation*}
  {\def\ATcircle#1{\circle*{8}}
    \def\ATleftbranch#1#2#3{\relax}
    \def\ATrightbranch#1#2#3{\relax}
    \unitlength.22ex
    \ATl{with}{I^3_3}
    {\ATs{the key}{O_3}}
    {\ATre{I^3_2}
      {\ATxl{\ATs{the door}{O_2}}}
      {\ATs{will be opened}{I^3}}} }
\end{equation*}
by the following code
\begin{verbatim}
    {\def\ATcircle#1{\circle*{8}}
      \def\ATleftbranch#1#2#3{\relax}
      \def\ATrightbranch#1#2#3{\relax}
      \unitlength.22ex
      \ATl{with}{I^3_3}
      {\ATs{the key}{O_3}}
      {\ATre{I^3_2}
        {\ATxl{\ATs{the door}{O_2}}}
        {\ATs{will be opened}{I^3}}} }
\end{verbatim}\vspace{1.5ex}

Another important aspect of the package is that every adtree lies in a
\TeX\/ box. It means that all the standard commands to manipulate
boxes are available.

For example
\begin{equation*}
  \rotatebox{-30}
  {\ATlcLA{.3ex}{90}{I_2^2}
    {\ATs{\cancel{the apple}}{O_2}}
    {\ATs{Kim eats}{I_1^2}}}
\end{equation*}
has been generated by
\begin{verbatim}
    \rotatebox{-30}
    {\ATlcLA{.3ex}{90}{I_2^2}
      {\ATs{\cancel{the apple}}{O_2}}
      {\ATs{Kim eats}{I_1^2}}}
\end{verbatim}

Sometimes, scaling a box is required:
\begin{equation*}
  \scalebox{1.5}
  {\ATlcLA{.3ex}{90}{I_2^2}
    {\ATs{\cancel{the apple}}{O_2}}
    {\ATs{Kim eats}{I_1^2}}}
\end{equation*}
has been generated by
\begin{verbatim}
    \scalebox{1.5}
    {\ATlcLA{.3ex}{90}{I_2^2}
      {\ATs{\cancel{the apple}}{O_2}}
      {\ATs{Kim eats}{I_1^2}}}
\end{verbatim}\vspace{1.5ex}

A final point is that, when the \verb|\smaller| command is available,
as in AMS-\TeX, changing the font size automatically makes the
adposition blocks to be \verb|\smaller| than the size of the normal
text, which is used to typeset the morpheme and summary blocks. For
example,
\begin{equation*}
  \hbox{\huge
    \ATlcLA{.3ex}{120}{I_2^2}
      {\ATs{\cancel{the apple}}{O_2}}
      {\ATs{Kim eats}{I_1^2}}}
\end{equation*}
which has been generated by
\begin{verbatim}
    {\huge
      \ATlcLA{.3ex}{120}{I_2^2}
        {\ATs{\cancel{the apple}}{O_2}}
        {\ATs{Kim eats}{I_1^2}}}
\end{verbatim}

When the \verb|smaller| command is not available, the size of the
adposition block is fixed to be \verb|\small|. This can be changed
modifying the (internal) command \verb|\@ATsmall|:
\begin{verbatim}
    \makeatletter
    \def\@ATsmall{\small}
    \makeatother
\end{verbatim}
Changing \verb|\small| in the above code, modifies the size of the
components of the adposition block. We suggest to avoid such a change,
except in a local group which contains a complete adtree.\vfill

% --------------------------
\clearpage
\section{Path-like Adtrees}\label{sec:pathlike}
Adtrees are abstract representation of pieces of text. When the
relation with an effective piece of text is relevant, a different
representation is preferred: path-like adtrees. For example, the
expression ``the girl for whom the man bought the book'' is rendered as
\begin{displaymath}
  \begin{pathlikeadtree}
    the    [A]                  ( 1,1)[\overleftarrow{O}]     &
    girl   [O]                                                &
    for    [U]                  ( 5,4)[\overleftarrow{I^4_3}] &
    wh-    [U]                  (-2,6)[\overleftarrow{O}]     &
    om     [O_2]                (-2,1)[\overleftarrow{O_2}]   &
    the    [A]                  ( 1,1)[\overleftarrow{O_1}]   &
    man    [O_1]                ( 1,2)[\overleftarrow{I^4_1}] &
    bought [I^4_{\mathsf{dep}}] (-4,5)[\overrightarrow{A}]    &
    the    [A]                  ( 1,1)[\overleftarrow{O_2}]   &
    book   [O_2]                (-2,3)[\overleftarrow{I^4_2}]
  \end{pathlikeadtree}
\end{displaymath}
from the code
\begin{verbatim}
  \begin{pathlikeadtree}
    the    [A]                  ( 1,1)[\overleftarrow{O}]     &
    girl   [O]                                                &
    for    [U]                  ( 5,4)[\overleftarrow{I^4_3}] &
    wh-    [U]                  (-2,6)[\overleftarrow{O}]     &
    om     [O_2]                (-2,1)[\overleftarrow{O_2}]   &
    the    [A]                  ( 1,1)[\overleftarrow{O_1}]   &
    man    [O_1]                ( 1,2)[\overleftarrow{I^4_1}] &
    bought [I^4_{\mathsf{dep}}] (-4,5)[\overrightarrow{A}]    &
    the    [A]                  ( 1,1)[\overleftarrow{O_2}]   &
    book   [O_2]                (-2,3)[\overleftarrow{I^4_2}]
  \end{pathlikeadtree}
\end{verbatim}

To write a path-like adtree one encloses it into a
\verb!pathlikeadtree! environment. Then, each \emph{cell} is written.
Cells are separated by \verb|&|. A cell is composed by a
\emph{morpheme}, a \emph{grammar character}, and one or more
\emph{arcs}. The morpheme $m$ comes first with his grammar character
following in square brackets:
\begin{verbatim}
  \begin{pathlikeadtree}
    morhpeme   [G]
  \end{pathlikeadtree}
\end{verbatim}
produces
\begin{displaymath}
  \begin{pathlikeadtree}
    morhpeme  [G]
  \end{pathlikeadtree}
\end{displaymath}

An arc is specified as \verb|(|$t$\verb|,|$h$\verb|)[|$g$\verb|]|
where $t$ is the \emph{target}, i.e., the node to which the arc is
directed, $h$ is the \emph{height} of the arc, which \textbf{must} be
a positive integer, and $g$ is the \emph{grammar character} of the
composition of expressions which the arc intend to represent. It
should be remarked that there \textbf{must} be no space between
\verb|)| and \verb|[|. For example,
\begin{displaymath}
  \begin{pathlikeadtree}
    the[A](1,1)[\overleftarrow{O}] &
    girl[O]&for[U]&wh-[U]&om[O_2]&the[A]&man[O_1]&
    bought[I^4_{\mathsf{dep}}]&the[A]&book[O_2]
  \end{pathlikeadtree}
\end{displaymath}
has been typeset by
\begin{verbatim}
  \begin{pathlikeadtree}
    the[A](1,1)[\overleftarrow{O}] &
    girl[O]&for[U]&wh-[U]&om[O_2]&the[A]&man[O_1]&
    bought[I^4_{\mathsf{dep}}]&the[A]&book[O_2]
  \end{pathlikeadtree}
\end{verbatim}

The target uses a \emph{relative} specification: in the example, it is
one step forward with respect to the node it has been written into. Of
course, going backwards is possible, by using a negative value for the
target:
\begin{displaymath}
  \begin{pathlikeadtree}
    the[A]&girl[O]&for[U]&
    wh-[U] (-2,2)[\overleftarrow{O}] &
    om[O_2]&the[A]&man[O_1]&bought[I^4_{\mathsf{dep}}]&
    the[A]&book[O_2]
  \end{pathlikeadtree}
\end{displaymath}
\begin{verbatim}
  \begin{pathlikeadtree}
    the[A]&girl[O]&for[U]&
    wh-[U] (-2,2)[\overleftarrow{O}] &
    om[O_2]&the[A]&man[O_1]&bought[I^4_{\mathsf{dep}}]&
    the[A]&book[O_2]
  \end{pathlikeadtree}
\end{verbatim}
However, it is possible to specify an \emph{absolute} position
prepending a \verb|!| to the target:
\begin{verbatim}
  \begin{pathlikeadtree}
    the[A]&girl[O]&
    for[U] (!8,1)[\overleftarrow{I^4_3}] &
    wh-[U]&om[O_2]&the[A]&man[O_1]&
    bought[I^4_{\mathsf{dep}}]&the[A]&book[O_2]
  \end{pathlikeadtree}
\end{verbatim}
\begin{displaymath}
  \begin{pathlikeadtree}
    the[A]&girl[O]&
    for[U] (!8,1)[\overleftarrow{I^4_3}] &
    wh-[U]&om[O_2]&the[A]&man[O_1]&
    bought[I^4_{\mathsf{dep}}]&the[A]&book[O_2]
  \end{pathlikeadtree}
\end{displaymath}

The appearance of a path-like adtree is controlled by a number of
parameters which the user may customise:
\begin{itemize}
\item \verb|\ATpathinterskip| (default: \verb|.5em|) is the distance
  between two cells;
\item \verb|\ATpathunitlength| (default: \verb|4ex|) corresponds to
  the length of a line of height $1$;
\item \verb|\ATpicskip| (default: \verb|.2ex|) is the distance between
  the upper text and the arcs below;
\item \verb|\ATpathlinethickness| (default: \verb|.1em|) specifies the
  thickness of the arcs;
\item \verb|\ATpathlabelhspace| (default: \verb|.3em|) defines the
  horizontal space between the grammar character in an arc and the
  vertical line of the arc to which it is closer;
\item \verb|\ATpathlabelvspace| (default: \verb|1ex|) defines the
  vertical space between the baseline of the grammar character in an
  arc and the horizontal line of the arc. 
\end{itemize}
Finally, the way in which the grammar characters are written is
customisable by changing their default boxes. They are defined as
\begin{verbatim}
  \def\ATnGCBox#1{\@ATsmall$\mathrm{#1}$}
  \def\ATlGCBox#1{\@ATsmall$\mathrm{#1}$}
\end{verbatim}
with \verb|\ATnGCBox| controlling the rendering of the part below each
morpheme, and \verb|\ATlGCBox| controlling the labels of the arcs.

As an example,
\begin{displaymath}
  \ATpathinterskip1.2em
  \ATpathunitlength4.5ex
  \ATpicskip1ex
  \ATpathlinethickness.2pt
  \ATpathlabelhspace1em
  \ATpathlabelvspace2ex
  \begin{pathlikeadtree}
    the    [A]                  ( 1,1)[\overleftarrow{O}]     &
    girl   [O]                                                &
    for    [U]                  ( 5,4)[\overleftarrow{I^4_3}] &
    wh-    [U]                  (-2,6)[\overleftarrow{O}]     &
    om     [O_2]                (-2,1)[\overleftarrow{O_2}]   &
    the    [A]                  ( 1,1)[\overleftarrow{O_1}]   &
    man    [O_1]                ( 1,2)[\overleftarrow{I^4_1}] &
    bought [I^4_{\mathsf{dep}}] (-4,5)[\overrightarrow{A}]    &
    the    [A]                  ( 1,1)[\overleftarrow{O_2}]   &
    book   [O_2]                (-2,3)[\overleftarrow{I^4_2}]
  \end{pathlikeadtree}
\end{displaymath}
has been typeset by
\begin{verbatim}
  \ATpathinterskip1.2em    
  \ATpathunitlength4.5ex
  \ATpicskip1ex            
  \ATpathlinethickness.2pt
  \ATpathlabelhspace1em    
  \ATpathlabelvspace2ex
  \begin{pathlikeadtree}
    the    [A]                  ( 1,1)[\overleftarrow{O}]     &
    girl   [O]                                                &
    for    [U]                  ( 5,4)[\overleftarrow{I^4_3}] &
    wh-    [U]                  (-2,6)[\overleftarrow{O}]     &
    om     [O_2]                (-2,1)[\overleftarrow{O_2}]   &
    the    [A]                  ( 1,1)[\overleftarrow{O_1}]   &
    man    [O_1]                ( 1,2)[\overleftarrow{I^4_1}] &
    bought [I^4_{\mathsf{dep}}] (-4,5)[\overrightarrow{A}]    &
    the    [A]                  ( 1,1)[\overleftarrow{O_2}]   &
    book   [O_2]                (-2,3)[\overleftarrow{I^4_2}]
  \end{pathlikeadtree}
\end{verbatim}

Path-like adtrees as explained so far are useful to represent adtrees
having $\epsilon$-only adpositions. Since every adtree, up to a
syntactical transformation, can be represented in this way, although
losing some pieces of structural content, path-like adtrees drawn
using the previously explained features are completely general.

However, there is less elegant way of writing general adtrees in the
path-like form, in which adpositions are directly referred to in the
arcs.

In short, the arc syntax is generalised to
\verb|(|$t$\verb|,|$h$\verb|)[|$g$\verb|]|\verb|<|$a$\verb|>| where
the $a$ specifies the adposition, either using the relative or the
absolute \verb|!| syntax. Of course, when there is no explicit
adpostion to refer, i.e., the adposition is $\epsilon$, the previous
syntax, without the parameter in angle brackets, is used.

As an illustration,
\begin{displaymath}
  \ATpathinterskip1.2em
  \begin{pathlikeadtree}
    the    [A]                  ( 1,1)[\overleftarrow{O}]         &
    girl   [O]                                                    &
    for    [U]                                                    &
    wh-    [U]                                                    &
    om     [O_2]                ( 3,4)[\overleftarrow{I^4_3}]<!3> &
    the    [A]                  ( 1,1)[\overleftarrow{O_1}]       &
    man    [O_1]                ( 1,2)[\overleftarrow{I^4_1}]     &
    bought [I^4_{\mathsf{dep}}] (-6,6)[\overrightarrow{A}]<-4>    &
    the    [A]                  ( 1,1)[\overleftarrow{O_2}]       &
    book   [O_2]                (-2,3)[\overleftarrow{I^4_2}]
  \end{pathlikeadtree}
\end{displaymath}
has been typeset by
\begin{verbatim}
\begin{displaymath}
  \ATpathinterskip1.2em
  \begin{pathlikeadtree}
    the    [A]                  ( 1,1)[\overleftarrow{O}]         &
    girl   [O]                                                    &
    for    [U]                                                    &
    wh-    [U]                                                    &
    om     [O_2]                ( 3,4)[\overleftarrow{I^4_3}]<!3> &
    the    [A]                  ( 1,1)[\overleftarrow{O_1}]       &
    man    [O_1]                ( 1,2)[\overleftarrow{I^4_1}]     &
    bought [I^4_{\mathsf{dep}}] (-6,6)[\overrightarrow{A}]<-4>    &
    the    [A]                  ( 1,1)[\overleftarrow{O_2}]       &
    book   [O_2]                (-2,3)[\overleftarrow{I^4_2}]
  \end{pathlikeadtree}
\end{displaymath}
\end{verbatim}\vspace{1.5ex}

There are a few hints and tricks about path-like adtrees: first, as in
the case of adtrees, the \verb|pathlikeadtree| environment produces a
\TeX{} box, thus it can be manipulated by, e.g., rotating, scaling,
etc.

Second, while the syntax inside the \verb|pathlikeadtree| is quite
rigid, it is possible to locally use commands by putting them in the
morpheme of a cell. The effects of this commands influence the cell
from the point they are issued, but also all the subsequent
cells. Beware that using commands with side effects inside a
\verb|pathlikeadtree| environment is an hack, which requires a deep
understanding of how the code of the package operates.

The third way to radically affect the appearance of a path-like adtree
is to redefine \verb|\ATpathpichook|, which is \verb|\def|ined to be
empty by default. This command is issued just before each arc is
drawn. To code sophisticated manipulations of the drawing process
requires to understand how the drawing engine works. However, for
simple manipulations, it suffices to know that \verb|\@ATpa| contains
the index of the source cell of an arc, \verb|\@ATpb| the index of the
target cell, \verb|\@ATpc| the height, \verb|\@ATsa| is a box register
containing the already formatted grammar character of an arc, and
\verb|\@ATpe| is either $0$ or the index of the adposition cell.
Needless to say, using this feature is for advanced users only.

% --------------------------
\clearpage
\section{Tabular Adtrees}\label{sec:tabular}
Sometimes it is useful to have a purely textual representation of an
adtree, which is more compact and fits, e.g., in a double column
format. For example
\begin{equation*}
  \ATrLA{2\unitlength}{120}{wh-}{O}
  {\ATr{for}{I}
    {\ATs{the girl}{O}}
    {\ATle{I^4_2}
      {\ATs{the book}{Y}}
      {\ATre{I^4_1}
        {\ATm{-o}{X}}
        {\ATs{bought}{I^4_{\mathrm{dep}}}}}}}
  {\ATle{O}
    {\ATm{the}{A}}
    {\ATm{man}{O}}}
\end{equation*}
can be rendered as
\begin{ATtabulardisplay}
  \ATrLA{2\unitlength}{120}{wh-}{O}
  {\ATr{for}{I}
    {\ATs{the girl}{O}}
    {\ATle{I^4_2}
      {\ATs{the book}{Y}}
      {\ATre{I^4_1}
        {\ATm{-o}{X}}
        {\ATs{bought}{I^4_{\mathrm{dep}}}}}}}
  {\ATle{O}
    {\ATm{the}{A}}
    {\ATm{man}{O}}}
\end{ATtabulardisplay}

Obtaining this effect is as simple as enclosing the adtree into a
\verb!ATtabulardisplay! environment. The previous example has been
typeset by
\begin{verbatim}
  \begin{ATtabulardisplay}
    \ATrA{120}{wh-}{O}
    {\ATr{for}{I}
      {\ATs{the girl}{O}}
      {\ATle{I^4_2}
        {\ATs{the book}{Y}}
        {\ATre{I^4_1}
          {\ATm{-o}{X}}
          {\ATs{bought}{I^4_{\mathrm{dep}}}}}}}
    {\ATle{O}{\ATm{the}{A}}{\ATm{man}{O}}}
  \end{ATtabulardisplay}
\end{verbatim}

The environment uses the \verb|\ATtabskip| command to declare the
amount of space to use for indenting the sub-trees. The default is
\verb|\def\ATtabskip{\hspace*{1em}}|.  In addition, the whole
environment is moved on the right by \verb|\ATtabindent|, with default
value \verb|\def\ATtabindent{\hspace*{2em}}|.

Alternatively, the environment \verb|ATtabular| allows to typeset the
adtree in the same way but inside a box, which can then be manipulated
as one pleases:
\begin{displaymath}
  \fbox{$\vcenter{\begin{ATtabular}
        \ATrLA{2\unitlength}{120}{wh-}{O}
        {\ATr{for}{I}
          {\ATs{the girl}{O}}
          {\ATle{I^4_2}
            {\ATs{the book}{Y}}
            {\ATre{I^4_1}
              {\ATm{-o}{X}}
              {\ATs{bought}{I^4_{\mathrm{dep}}}}}}}
        {\ATle{O}
          {\ATm{the}{A}}
          {\ATm{man}{O}}}
      \end{ATtabular}}$} =
  \fbox{$\vcenter{\begin{ATtabular}
        \ATrLA{2\unitlength}{120}{wh-}{O}
        {\ATr{for}{I}
          {\ATs{the girl}{O}}
          {\ATle{I^4_2}
            {\ATs{the book}{Y}}
            {\ATre{I^4_1}
              {\ATm{-o}{X}}
              {\ATs{bought}{I^4_{\mathrm{dep}}}}}}}
        {\ATle{O}
          {\ATm{the}{A}}
          {\ATm{man}{O}}}
      \end{ATtabular}}$}
\end{displaymath}
\begin{verbatim}
  \fbox{$\vcenter{
      \begin{ATtabular}
        \ATrLA{2\unitlength}{120}{wh-}{O}
        {\ATr{for}{I}
          {\ATs{the girl}{O}}
          {\ATle{I^4_2}
            {\ATs{the book}{Y}}
            {\ATre{I^4_1}
              {\ATm{-o}{X}}
              {\ATs{bought}{I^4_{\mathrm{dep}}}}}}}
        {\ATle{O}
          {\ATm{the}{A}}
          {\ATm{man}{O}}}
      \end{ATtabular}}$} =
  \fbox{$\vcenter{
      \begin{ATtabular}
        \ATrLA{2\unitlength}{120}{wh-}{O}
        {\ATr{for}{I}
          {\ATs{the girl}{O}}
          {\ATle{I^4_2}
            {\ATs{the book}{Y}}
            {\ATre{I^4_1}
              {\ATm{-o}{X}}
              {\ATs{bought}{I^4_{\mathrm{dep}}}}}}}
        {\ATle{O}
          {\ATm{the}{A}}
          {\ATm{man}{O}}}
      \end{ATtabular}}$}
\end{verbatim}

The various pieces of the adtree are rendered according to the
following definitions, which could be modified on need, see also the
next section, keeping in mind that they are not for the casual user.
\begin{verbatim}
  \def\ATtabularadpositionblock#1#2#3{%
     \hbox{\ATtabindent\AT@loop@tab%
      {#2}\textsuperscript{#1}\textsubscript{#3}}}
  \def\ATtabularmorphemeblock#1#2{
    \hbox{\ATtabindent\AT@loop@tab%
      {#1}\textsubscript{#2}}}
  \def\ATtabularsummaryblock#1#2{
    \hbox{\ATtabindent\AT@loop@tab%
      \mbox{$\triangle($}%
      \mbox{#1}\mbox{$)$}\textsubscript{#2}}}
  \def\ATtabularfirstattribute{\ATlinearfirstattribute}
  \def\ATtabularnextattribute{\ATlinearnextattribute}
  \def\ATtabularsubtrees#1#2{%
    \advance\@AT@tabcount1%
    \vbox{#1\relax#2}%
    \advance\@AT@tabcount-1}
\end{verbatim}

Finally the \verb|\ATTabular| command can be used to switch from the
normal graphical rendering of adtrees to the tabular one. This is a
low-level command which has been left accessible to end-users willing
to write their own environments when \verb|ATtabular| is not enough. 

% --------------------------
\clearpage
\section{Linear Adtrees}\label{sec:linear}
Adtrees can be rendered in a linear format. This is not graphically
pleasant, so we discourage users to adopt it.\vspace{1.5ex}

Nevertheless, it may be useful to have a very compact representation
of adtrees. This can be automatically obtained by prepending the
\verb|\ATlinearise| command to an adtree. For example
\begin{center}
  \ATlinearise{\ATlcL{.3ex}{I_2^2}[phrase]
    {\ATm{\cancel{something}}{O}[object][fruit]}
    {\ATs{Kim eats}{I_1^2}}}
\end{center}
is the same as
\begin{equation*}
  \ATlcL{.3ex}{I_2^2}[phrase]
  {\ATm{\cancel{something}}{O}[object][fruit]}
  {\ATs{Kim eats}{I_1^2}}
\end{equation*}
which shows how all the features of adtrees are rendered in the linear
format. 

The linear presentation has been generated by
\begin{verbatim}
    \ATlinearise{\ATlcL{.3ex}{I_2^2}[phrase]
      {\ATm{\cancel{something}}{O}[object][fruit]}
      {\ATs{Kim eats}{I_1^2}}}
\end{verbatim}
which differs from the code to draw the graphics presentation just for
\verb|\ATlinearise|.\vspace{1.5ex}

Declaring \verb|\ATLinear| in some point of the text makes linear all
the adtrees from that point on. To reestablish the standard behaviour
of graphical adtrees, one issues the command
\verb|\ATNormal|.\vspace{1.5ex} 

Linear adtrees are composed using the following commands
\begin{verbatim}
  \def\ATlinearadpositionblock#1#2#3%
    {{#2}\textsuperscript{#1}\textsubscript{#3}}
  \def\ATlinearfirstattribute#1{{#1}:}
  \def\ATlinearnextattribute#1{{#1};}
  \def\ATlinearsubtrees#1#2{(#1,\linebreak[0] #2)}
  \def\ATlinearmorphemeblock#1#2{{#1}\textsubscript{#2}}
  \def\ATlinearsummaryblock#1#2{\mbox{$\triangle($}%
      \mbox{#1}\mbox{$)$}\textsubscript{#2}}
\end{verbatim}
Their meaning should be intuitive after the explanations in
Section~\ref{sec:internal}. 

Also, it must be remarked that \verb|\ATMorphemeBox|,
\verb|\ATGrammarCharacterBox|, and \verb|\ATAttributeBox| are still
used to write the corresponding elements.\vspace{1.5ex}

Linear adtrees are useful when it is required to perform some
computation on an adtree inside \LaTeX, e.g., when trying to write a
macro which manipulates an argument which is an adtree. 

The reason is double: first, the linear format require far less
computation than the graphical rendering; and, second, the building
macros receive inputs which have not been heavily preprocessed to
prepare their graphical rendering, thus closer to what the user has
written in the source code.

For example, to list all the morpheme attributes occurring inside
\begin{equation*}
  \ATlL{.3ex}{with}{I^2_2}[phrase]
  {\ATs{the key}{O}[third actant]}
  {\ATre{I^2_1}
    {\ATxl{\ATs{the door}{O}[second actant]}}
    {\ATs{will be opened}{I^3}[governor]}}
\end{equation*}
we can execute
\begin{verbatim}
  { \def\ATlinearadpositionblock#1#2#3{\relax}
    \def\ATlinearfirstattribute#1#2{#2}
    \def\ATlinearnextattribute#1#2{[{#2}]}
    \def\ATlinearsubtrees{\relax}
    \def\ATlinearmorphemeblock#1{\relax}
    \def\ATlinearsummaryblock#1{\relax}
    \ATlinearise{
      \ATl{with}{I^2_2}[phrase]
        {\ATs{the key}{O}[third actant]}
        {\ATre{I^2_1}
          {\ATxl{\ATs{the door}{O}[second actant]}}
          {\ATs{will be opened}{I^2}[governor]}}} }
\end{verbatim}
which produces
\begin{center}
  { \def\ATlinearadpositionblock#1#2#3{\relax}
    \def\ATlinearfirstattribute#1#2{#2}
    \def\ATlinearnextattribute#1#2{[{#2}]}
    \def\ATlinearsubtrees{\relax}
    \def\ATlinearmorphemeblock#1{\relax}
    \def\ATlinearsummaryblock#1{\relax}
    \ATlinearise{
      \ATl{with}{I^2_2}[phrase]
        {\ATs{the key}{O}[third actant]}
        {\ATre{I^2_1}
          {\ATxl{\ATs{the door}{O}[second actant]}}
          {\ATs{will be opened}{I^2}[governor]}}} }
\end{center}
Needless to say, such computations require a real \TeX\/ magician, who
is able to fully understand the code of the package! Nevertheless,
this opens the door to \LaTeX\/ macros that operate on adtrees,
treating them like data structures.\vfill
\end{document}

%%% Local Variables:
%%% mode: latex
%%% TeX-master: t
%%% End:
