\documentclass[11pt]{article} % 10 Jun 2010: Added memoir/array compatibility, switched to pict2e, changed some flags. % Updated documentation to describe the new features. % 17 Feb 2004: Corrected some typos in documentation \usepackage{drs,pict2e} \usepackage{times} \chardef\BS=`\\ % It only works in \tt font \def\ctt#1{{\texttt{\BS #1}}} % \ctt command --> \command (in tt) \def\citem[#1 #2]{\item[\ctt{#1}{\textsl{#2}}]} % header of command plus argument \advance\textheight by 0.7in \advance\textwidth by 0.8 in \advance\oddsidemargin by -0.4in \topmargin=-0.3in \begin{document} \begin{center} {\bfseries Drs.sty, a \LaTeX\ package for Discourse Representation Structures} \\[6pt] Alexis Dimitriadis \\[6pt] Version 1.1\\[6pt] June 10, 2010 \\[1.5ex] \end{center} \noindent This package draws Discourse Representation Structures (DRSs). It can draw embedded DRSs, if-then conditions and quantificational ``duplex conditions'' (with a properly scaled connecting diamond). Formatting parameters allow the user to control the appearance and placement of DRSs, and of DRS variables and conditions. You should use this package together with \emph{pict2e.sty,} which allows better diagonal lines to be drawn. It is not automatically loaded by \emph{drs.sty,} but will be utilized if it you do load it. \section{History} This package is derived from the DRS macros in the style \emph{covington.sty,} written by Michael A. Covington. I am grateful to him for allowing modification and redistribution of his code. The present style retains the basic design (command syntax, use of the \verb|tabular| environment to construct the DRSs) and is intended to be backward compatible. It adds commands for duplex conditions and logical connectives, formatting options, better spacing, and an absurdly elaborate algorithm for calculating the size of the diamond used in duplex conditions. Please direct suggestions, bug reports, or other comments to Alexis Dimitriadis, \emph{a.dimitriadis} \emph{@uu.nl.} As usual, I cannot promise this package will do what you want it to, but I will try to help if there is a problem. \section{Box-building commands} These commands can be embedded in each other as desired. \begin{description} \citem [drs \{variables\}\{conditions\}]~ Typesets a DRS in a box according to the formatting options in effect (see below). Conditions should be separated by \verb|\\|. If the variables argument is completely empty (given as \verb|{}|), no space is provided for variables at the top of the box. To leave an empty line, give a space as the list of variables (\verb|{ }| or \verb|{~}|). \begin{verbatim} \drs{x y}{Jones(x) \\ Ulysses(y) \\ x owns y} \end{verbatim} \drs{x y}{Jones(x) \\ Ulysses(y) \\ x owns y} \newpage \citem[drs* \{variables\}\{conditions\}]~ Top-level DRSs are positioned on the page according to a number of formatting parameters (see next section). To generate a DRS without the extra spacing, define it using \verb|\drs*| rather than \verb|\drs|. \citem[ifdrs \{lvar\}\{lcond\}\{rvar\}\{rcond\}] Forms two DRSs joined by an arrow. This command is just a special case of \verb|\condrs|. \begin{verbatim} \drs{x}{Jones(x) \\ \ifdrs{y}{donkey(y)\\x owns y} {z w}{z = x\\ w = y\\ z feeds w}} \end{verbatim} \drs{x}{Jones(x) \\ \ifdrs{y}{donkey(y)\\x owns y} {z w}{z = x\\ w = y\\ z feeds w}} %If Jones owns a donkey, he feeds it. \citem[condrs \{lvar\}\{lcond\}\{connective\}\{rvar\}\{rcond\}]~ Connects two DRSs with the middle argument, presumably a logical connective like \verb|$\vee$| or \verb|$\wedge$|. (You must manually switch to math mode if it's needed). This is provided as a separate command because the spacing needs certain adjustments. The connective is always put in size \verb|\large|, which is appropriate for normal-sized text. If the text of your DRS is in a different size, manually resize the connective to be one step larger; for example, \verb|{\LARGE $\vee$}| if the DRS text is \verb|\Large|. \citem[qdrs \{lvar\}\{lcond\}\{quantifier\}\{qvar\}\{rvar\}\{rcond\}]~\par Forms a duplex condition. The arguments \emph{quantifier} and \emph{qvar} are placed in the diamond connecting the left and right DRSs, which is sized to fit them. The \emph{quantifier} argument may contain newlines (\verb|\\|), if necessary. \begin{verbatim} \drs{X}{ the lawyers(X) \\ \qdrs{x}{x $\in$ X} {every}{x} {y}{secretary(y) \\ x hired y}} \end{verbatim} \drs{X}{ the lawyers(X) \\ \qdrs{x}{x $\in$ X} {every}{x} {y}{secretary(y) \\ x hired y}} \citem[negdrs \{variables\}\{conditions\}]~ Produces a DRS preceded by the negation symbol. \citem[drsdiamond \{quantifier\}\{variable\}] ~ Produces the automatically scaling diamond used by \verb|\qdrs|. Perhaps it is useful to call it directly for specialized uses. An absurdly fancy scaling algorithm draws a diamond of the right size and places the text at the right height. The algorithm is optimized for cases where the variable is narrower than the quantifier text, but works well for a variety of shapes, including multi-line quantifier names (use {\tt \BS\BS} to break lines, as in: {\tt at~least\BS\BS one}). If it does the wrong thing for you, try padding the text with non-breaking spaces (\verb|~|). \end{description} \noindent For compatibility with the \emph{covington.sty} macros, the following commands are also supported: \begin{description} \citem[sdrs \{sentence\}\{variables\}\{conditions\}] ~ Just like \verb|\drs|, but the first argument is a sentence to be displayed above the DRS. \citem[alifdrs \{lvar\}\{lcond\}\{rvar\}\{rcond\}]~ Just like \verb|\ifdrs|, but shifted to the left so that the conditions in it, if left-adjusted, will line up with unembedded DRS conditions. \end{description} \section{Formatting parameters} The following commands may be redefined to control the appearance of the DRS boxes. \begin{description} \citem[drscondfont ] The font used for the DRS conditions. Default: \verb|\rm|. If necessary, it can be redefined to a macro that takes an argument, e.g.: \verb|\renewcommand\drscondfont[1]{\emph{#1}}| The font properties selected with this macro (e.g., italics) will also apply to the DRS variables, except as overridden by \verb|\drsvarfont|. \citem[drsvarfont ] Additional font settings used for the DRS variables. This macro modifies the font style already in effect from \verb|\drscondfont|. Default: \verb|\it|. If necessary, it can be redefined to a macro that takes an argument. \citem[drsseparator ] The separator between variables and conditions. By default it is \verb|\hline|, but can be redefined to suppress the line (or to draw other line styles, if appropriate). To suppress the line, put the following in the preamble of your document: \verb|\renewcommand\drsseparator{\relax}| \citem[drsalignment ] Alignment of the contents of the DRS, in the form of a \{tabular\} alignment parameter. The default is {\tt c} (centered) but can be changed to {\tt l} (or even {\tt r} if you wish). \citem[drsboxalignh ] Horizontal alignment of the top-level DRS box in the surrounding text. You can ask for left-aligned ({\tt l}) or centered boxes. The default is {\tt c.} \citem[drsboxalignv ] Vertical alignment of the top-level DRS box with the baseline of the text. The default is {\tt c} (centered on the baseline); {\tt t} and {\tt b} are also available. Embedded DRS boxes are always centered on the baseline. \citem[drsarraystretch ] This parameter gives the value of \verb|\arraystretch| used when making DRS boxes. Undefined by default, which is equivalent to the value~\emph{1.0.} You can change it to other numbers (without a dimension) to stretch or compress linespacing. \citem[drslinewidth ] The thickness of the lines used to draw the DRS boxes. The default is the current value of \verb|\arrayrulewidth| (which controls the width of table borders), normally 0.4pt. If you redefine this you should definitely load the package \emph{pict2e.sty} (recommended anyway), which will allow LaTeX to set the diagonal lines of the quantifier diamond to the same thickness. \end{description} \subsection{Compatibility with \emph{covington.sty}} Although this package should accept DRSs written for the \emph{covington.sty} macros, the appearance of the output is not the same by default. To match that style, specify the following formatting parameters: \begin{itemize} \item[] \begin{verbatim} \renewcommand\drscondfont{\it} \renewcommand\drsalignment{l} \renewcommand\drsboxalignh{l} \end{verbatim} \end{itemize} \section{Other packages} I recommend that you use \emph{drs.sty} in conjunction with \emph{pict2e.sty,} which improves \LaTeX's picture drawing capabilities. Your DRS diamonds will look a lot better if you do. \emph{Drs.sty} is also compatible with \emph{eepic.sty,} which has similar function but only works for DVI output (with PostScript enhancements). \emph{Drs.sty} will not automatically load either package, but will take advantage of their capabilities if one is loaded. I have tried to make \emph{drs.sty} work well with doublespacing. Because of shortcomings of the doublespacing macros, the boxes might still be placed too close to each other. Perhaps some day this will be corrected in future versions of \emph{setspace.sty} (but I requested the fix years ago, so don't hold your breath). Until then, I have provided a work-around which you can use if you are using \emph{setspace.sty.} Place the command \verb|\drshacksetspace| in your document preamble, somewhere after both packages have been included, to redefine certain \emph{setspace} internals so that boxes can be properly spaced. This is turned off by default since it is a hack and might cause unexpected problems. Starting with version 1.1, \emph{drs.sty} is compatible with \emph{memoir.cls} and the reimplementation of the \emph{tabular} and \emph{array} environments used by \emph{memoir} and \emph{array.sty.} However, the extra column types these provide cannot be used with \emph{drs} commands. Only {\tt c, l} and {\tt r} are accepted. \end{document}