\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}] & 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}] & 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: