From 7559eb16050dce8cef70650604224db997445886 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Thu, 11 Jul 2019 21:04:12 +0000 Subject: adtrees (11jul19) git-svn-id: svn://tug.org/texlive/trunk@51618 c570f23f-e606-0410-a88d-b1316a301751 --- Master/texmf-dist/tex/latex/adtrees/adtrees.sty | 657 +++++++++++++++++------- 1 file changed, 467 insertions(+), 190 deletions(-) (limited to 'Master/texmf-dist/tex/latex/adtrees') diff --git a/Master/texmf-dist/tex/latex/adtrees/adtrees.sty b/Master/texmf-dist/tex/latex/adtrees/adtrees.sty index 5d94825f81a..7cf97e3b0d2 100644 --- a/Master/texmf-dist/tex/latex/adtrees/adtrees.sty +++ b/Master/texmf-dist/tex/latex/adtrees/adtrees.sty @@ -1,14 +1,15 @@ -%%------------------------------------------------------- +%------------------------------------------------------- %% This package is deputed to draw AdTrees as defined by %% F. Gobbo and M. Benini in "Constructive Adpositional %% Grammars: Foundations of Constructive Linguistics", %% Cambrdige Scholar Publishing %% -%% Version 1.0 - 2016/01/20 +%% Version 1.1 - 2019/07/11 %%------------------------------------------------------- \NeedsTeXFormat{LaTeX2e} -\ProvidesPackage{adtrees}[2016/01/20 v1.0 Adtrees package] +\ProvidesPackage{adtrees}[2019/07/11 v1.1 Adtrees package] \RequirePackage{cancel} +\RequirePackage{epic} %%------------------------------------------------------- %% We assume that \smaller is a command that reduces the @@ -18,8 +19,8 @@ %% the right size when dealing with \normalsize trees. %%------------------------------------------------------- \@ifundefined{smaller}% -{\gdef\@ATsmall{\small}}% -{\gdef\@ATsmall{\smaller}} + {\gdef\@ATsmall{\small}}% + {\gdef\@ATsmall{\smaller}} %%------------------------------------------------------- %% Usually, the angle in adtrees is 60 degrees @@ -36,7 +37,7 @@ \ATnormalangle %%------------------------------------------------------- -%% Firstly, we declare the internal variables +%% First, we declare the internal variables %%------------------------------------------------------- \newskip\@ATlen % a temporay length \newskip\@ATbp % the base point of a block @@ -63,6 +64,8 @@ \newif\if@ATlinear % switch for linear vs tree format \@ATlinearfalse % (usually false) +\newif\if@ATtabul % switch for linear vs tree format +\@ATtabulfalse % (usually false) %%------------------------------------------------------- %% The variable stack implementation @@ -73,17 +76,20 @@ %% In this case, we know that the saved values are, in %% fact, dimensions. We store them as numbers. %%------------------------------------------------------- +\newcount\@ATstackheight \@ATstackheight0 \def\@ATeos{X} \edef\@ATstack{\@ATeos} \def\@ATpush#1{% -\def\@ATcons{\noexpand\@ATcons}% -\expandafter\edef\expandafter\@ATstack\expandafter{% -\@ATcons{#1}\@ATstack}} + \global\advance\@ATstackheight1% + \def\@ATcons{\noexpand\@ATcons}% + \expandafter\edef\expandafter\@ATstack\expandafter{% + \@ATcons{#1}\@ATstack}} \def\@AT@top#1#2#3X{#2} \def\@ATtop{\expandafter\@AT@top\@ATstack} \def\@AT@pop#1#2#3X{% -\def\@ATcons{\noexpand\@ATcons}% -\expandafter\edef\expandafter\@ATstack\expandafter{#3\@ATeos}} + \global\advance\@ATstackheight-1% + \def\@ATcons{\noexpand\@ATcons}% + \expandafter\edef\expandafter\@ATstack\expandafter{#3\@ATeos}} \def\@ATpop{\expandafter\@AT@pop\@ATstack} %%------------------------------------------------------- @@ -98,7 +104,9 @@ %%------------------------------------------------------- \def\@ATadposition#1#2#3{% \if@ATlinear% - \ATlinearadpositionblock{#1}{#2}{#3}\else%% + \@ATlinearadpositionblock{#1}{#2}{#3}\else% + \if@ATtabul% + \@ATtabularadpositionblock{#1}{#2}{#3}\else% \setbox\@ATsa\hbox{#1}\setbox\@ATsb\hbox{#2}% \setbox\@ATsc\hbox{#3}% \setbox\@ATu\vbox{\copy\@ATsa\copy\@ATsb\copy\@ATsc}% @@ -112,7 +120,7 @@ \hbox to\@ATlen{\hfil\box\@ATsc\hfil}\nointerlineskip% \ATpostadpositionskip}% \@ATwt\dp\@ATu% - \hbox{\raise\@ATwt\hbox{\box\@ATu}}\fi} + \hbox{\raise\@ATwt\hbox{\box\@ATu}}\fi\fi} \def\@ATtree#1#2#3#4#5{% \@ifnextchar[{\@ATadposb{#1}{#2}{#3}{#4}{#5}}% {\@ATadposa{#1}{#2}{#3}{#4}{#5}}} @@ -120,29 +128,33 @@ \@ATtreeparsed{#1}{#2}{#3}{#4}{\hbox{#5}}} \def\@ATadposb#1#2#3#4#5[#6]{% \@ATadposc{#1}{#2}{#3}{#4}{% - \@ATadposd{#5}{\@ATsmall\ATAttributeBox{#6}}}} + \@ATadposd{#5}{\ATAttributeBox{#6}}}} \def\@ATadposc#1#2#3#4#5{% \@ifnextchar[{\@ATadposf{#1}{#2}{#3}{#4}{#5}}% {\@ATadposa{#1}{#2}{#3}{#4}{#5}}} \def\@ATadposd#1#2{\if@ATlinear% - \ATlinearfirstattribute{#1}{#2}\else% + \@ATlinearfirstattribute{#1}{#2}\else% + \if@ATtabul% + \@ATtabularfirstattribute{#1}{#2}\else% \setbox\@ATsa\hbox{#1}\setbox\@ATsb\hbox{#2}% \setbox\@ATu\vbox{\copy\@ATsa\copy\@ATsb}\@ATlen\wd\@ATu% \vbox{% \hbox to\@ATlen{\hfil\box\@ATsa\hfil}\nointerlineskip% \ATfirstattrskip% - \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi}% + \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi\fi} \def\@ATadpose#1#2{\if@ATlinear% - \ATlinearnextattribute{#1}{#2}\else% + \@ATlinearnextattribute{#1}{#2}\else% + \if@ATtabul% + \@ATtabularnextattribute{#1}{#2}\else% \setbox\@ATsa\hbox{#1}\setbox\@ATsb\hbox{#2}% \setbox\@ATu\vbox{\copy\@ATsa\copy\@ATsb}\@ATlen\wd\@ATu% \vbox{% \hbox to\@ATlen{\hfil\box\@ATsa\hfil}\nointerlineskip% \ATinterattrskip% - \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi}% + \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi\fi}% \def\@ATadposf#1#2#3#4#5[#6]{% \@ATadposc{#1}{#2}{#3}{#4}{% - \@ATadpose{#5}{\@ATsmall\ATAttributeBox{#6}}}} + \@ATadpose{#5}{\ATAttributeBox{#6}}}} %%------------------------------------------------------- %% The internal drawing procedure for binary adtrees. @@ -184,62 +196,66 @@ %% and to limit register/memory usage. %%------------------------------------------------------- \def\@ATtreeparsed#1#2#3#4#5#6#7{% -\if@ATlinear% -\@ATadposition{#3}{#4}{#5}\ATlinearsubtrees{#6}{#7}\else% -\sbox{\@ATta}{\ignorespaces#6\@killglue}% -\@ATpush{\the\@ATbp}\@ATpush{\the\@ATwt}% -\sbox{\@ATtb}{\ignorespaces#7\@killglue}% -\setbox\@ATu\hbox{\usebox{\@ATta}\usebox{\@ATtb}}\@ATh\ht\@ATu% -\setbox\@ATu\hbox{\usebox{\@ATta}}\@ATlen\ht\@ATu\advance\@ATlen -\@ATh% -\edef\@ATtok{\@ATtop}\@ATpop\@ATwl\@ATtok% -\edef\@ATtok{\@ATtop}\@ATpop\@ATbl\@ATtok% -\@ATrl\@ATwl\advance\@ATrl -\@ATbl% -\sbox{\@ATta}{\raisebox{-\@ATlen}{\usebox{\@ATta}}}% -\setbox\@ATu\hbox{\usebox{\@ATtb}}\@ATwr\@ATwt\@ATlen\ht\@ATu% -\advance\@ATlen -\@ATh\@ATbr\@ATbp\@ATrr\@ATwr\advance\@ATrr -\@ATbr% -\sbox{\@ATtb}{\raisebox{-\@ATlen}{\usebox{\@ATtb}}}% -\@ATskip\z@\@ATpiks\z@% -\@ATunit\unitlength% -\unitlength#1% -\@ATlen\@ATbl\advance\@ATlen\@ATrr\advance\@ATlen 50\unitlength\relax% -\ifdim\@ATlen<\@ATwl% -\ifdim\@ATwr<\@ATwl\@ATpiks\@ATrl\advance\@ATpiks -\@ATrr% -\advance\@ATpiks -50\unitlength\fi% -\@ATlen\@ATwl\fi\relax% -\ifdim\@ATlen<\@ATwr\@ATlen\@ATwr% -\@ATskip\@ATbr\advance\@ATskip -\@ATbl% -\advance\@ATskip -50\unitlength\fi\relax% -\global\@ATbp\@ATbl\global\advance\@ATbp 25\unitlength% -\global\advance\@ATbp \@ATskip\global\@ATwt\@ATlen% -\setbox\@ATu\box\voidb@x% -\unitlength\@ATunit% -\hbox{\hspace*{\@ATskip}\usebox{\@ATta}\hspace*{-\@ATrl}% -\@ATunit\unitlength% -\unitlength#1% -\edef\@AT@angle{#2}% -{\ifnum\@AT@angle=120% -\raisebox{\@ATh}{\begin{picture}(50,12.5)% -\thicklines\put(25,12.5){\ATleftbranch{-2}{-1}{25}}% -\put(25,12.5){\ATcircle{2}}% -\put(25,9.5){\makebox(0,0)[t]{\@ATadposition{#3}{#4}{#5}}}% -\thicklines\put(25,12.5){\ATrightbranch{2}{-1}{25}}% -\end{picture}}% -\else\ifnum\@AT@angle=90% -\raisebox{\@ATh}{\begin{picture}(50,25)% -\thicklines\put(25,25){\ATleftbranch{-1}{-1}{25}}% -\put(25,25){\ATcircle{2}}% -\put(25,19){\makebox(0,0)[t]{\@ATadposition{#3}{#4}{#5}}}% -\thicklines\put(25,25){\ATrightbranch{1}{-1}{25}}% -\end{picture}}% -\else% -\raisebox{\@ATh}{\begin{picture}(50,50)% -\thicklines\put(25,50){\ATleftbranch{-1}{-2}{25}}% -\put(25,50){\ATcircle{2}}% -\put(25,35){\makebox(0,0)[t]{\@ATadposition{#3}{#4}{#5}}}% -\thicklines\put(25,50){\ATrightbranch{1}{-2}{25}}% -\end{picture}}\fi\fi}% -\unitlength\@ATunit% -\hspace*{-\@ATbr}\usebox{\@ATtb}\hspace*{\@ATpiks}}\fi} + \if@ATlinear% + \@ATlinearadpositionblock{#3}{#4}{#5}% + \@ATlinearsubtrees{#6}{#7}\else% + \if@ATtabul% + \vbox{\@ATtabularadpositionblock{#3}{#4}{#5}% + \@ATtabularsubtrees{#6}{#7}}\else% + \sbox{\@ATta}{\ignorespaces#6\@killglue}% + \@ATpush{\the\@ATbp}\@ATpush{\the\@ATwt}% + \sbox{\@ATtb}{\ignorespaces#7\@killglue}% + \setbox\@ATu\hbox{\usebox{\@ATta}\usebox{\@ATtb}}\@ATh\ht\@ATu% + \setbox\@ATu\hbox{\usebox{\@ATta}}\@ATlen\ht\@ATu\advance\@ATlen -\@ATh% + \edef\@ATtok{\@ATtop}\@ATpop\@ATwl\@ATtok% + \edef\@ATtok{\@ATtop}\@ATpop\@ATbl\@ATtok% + \@ATrl\@ATwl\advance\@ATrl -\@ATbl% + \sbox{\@ATta}{\raisebox{-\@ATlen}{\usebox{\@ATta}}}% + \setbox\@ATu\hbox{\usebox{\@ATtb}}\@ATwr\@ATwt\@ATlen\ht\@ATu% + \advance\@ATlen -\@ATh\@ATbr\@ATbp\@ATrr\@ATwr\advance\@ATrr -\@ATbr% + \sbox{\@ATtb}{\raisebox{-\@ATlen}{\usebox{\@ATtb}}}% + \@ATskip\z@\@ATpiks\z@% + \@ATunit\unitlength% + \unitlength#1% + \@ATlen\@ATbl\advance\@ATlen\@ATrr\advance\@ATlen 50\unitlength\relax% + \ifdim\@ATlen<\@ATwl% + \ifdim\@ATwr<\@ATwl\@ATpiks\@ATrl\advance\@ATpiks -\@ATrr% + \advance\@ATpiks -50\unitlength\fi% + \@ATlen\@ATwl\fi\relax% + \ifdim\@ATlen<\@ATwr\@ATlen\@ATwr% + \@ATskip\@ATbr\advance\@ATskip -\@ATbl% + \advance\@ATskip -50\unitlength\fi\relax% + \global\@ATbp\@ATbl\global\advance\@ATbp 25\unitlength% + \global\advance\@ATbp \@ATskip\global\@ATwt\@ATlen% + \setbox\@ATu\box\voidb@x% + \unitlength\@ATunit% + \hbox{\hspace*{\@ATskip}\usebox{\@ATta}\hspace*{-\@ATrl}% + \@ATunit\unitlength% + \unitlength#1% + \edef\@AT@angle{#2}% + {\ifnum\@AT@angle=120% + \raisebox{\@ATh}{\begin{picture}(50,12.5)% + \thicklines\put(25,12.5){\ATleftbranch{-2}{-1}{25}}% + \put(25,12.5){\ATcircle{2}}% + \put(25,9.5){\makebox(0,0)[t]{\@ATadposition{#3}{#4}{#5}}}% + \thicklines\put(25,12.5){\ATrightbranch{2}{-1}{25}}% + \end{picture}}% + \else\ifnum\@AT@angle=90% + \raisebox{\@ATh}{\begin{picture}(50,25)% + \thicklines\put(25,25){\ATleftbranch{-1}{-1}{25}}% + \put(25,25){\ATcircle{2}}% + \put(25,19){\makebox(0,0)[t]{\@ATadposition{#3}{#4}{#5}}}% + \thicklines\put(25,25){\ATrightbranch{1}{-1}{25}}% + \end{picture}}% + \else% + \raisebox{\@ATh}{\begin{picture}(50,50)% + \thicklines\put(25,50){\ATleftbranch{-1}{-2}{25}}% + \put(25,50){\ATcircle{2}}% + \put(25,35){\makebox(0,0)[t]{\@ATadposition{#3}{#4}{#5}}}% + \thicklines\put(25,50){\ATrightbranch{1}{-2}{25}}% + \end{picture}}\fi\fi}% + \unitlength\@ATunit% + \hspace*{-\@ATbr}\usebox{\@ATtb}\hspace*{\@ATpiks}}\fi\fi} %%------------------------------------------------------- %% The internal drawing procedure for right extensions @@ -248,32 +264,34 @@ %% been truncated. %%------------------------------------------------------- \def\@ATright#1#2#3{% -\if@ATlinear% -#3\else% -\sbox{\@ATtb}{\ignorespaces#3\@killglue}% -\setbox\@ATu\hbox{\usebox{\@ATtb}}\@ATh\ht\@ATu\@ATwr\@ATwt% -\@ATbr\@ATbp\@ATrr\@ATwr\advance\@ATrr -\@ATbr% -\global\advance\@ATbp\ifdim\@ATbr<25pt -\@ATbp\else -25\unitlength\fi% -\@ATwt\@ATrr\advance\@ATwt 25\unitlength\global\advance\@ATwt\@ATbp% -\setbox\@ATu\box\voidb@x% -\hbox{\hspace*{\@ATbp}% -\@ATlen\unitlength% -\unitlength#1% -\edef\@AT@angle{#2}% -\ifnum\@AT@angle=120% -\raisebox{\@ATh}{\begin{picture}(25,12.5)% -\thicklines\put(0,12.5){\ATrightbranch{2}{-1}{25}}% -\end{picture}}% -\else\ifnum\@AT@angle=90% -\raisebox{\@ATh}{\begin{picture}(25,25)% -\thicklines\put(0,25){\ATrightbranch{1}{-1}{25}}% -\end{picture}}% -\else% -\raisebox{\@ATh}{\begin{picture}(25,50)% -\thicklines\put(0,50){\ATrightbranch{1}{-2}{25}}% -\end{picture}}\fi\fi% -\unitlength\@ATlen% -\hspace*{-\@ATbr}\usebox{\@ATtb}}\fi} + \if@ATlinear% + #3\else% + \if@ATtabul% + #3\else% + \sbox{\@ATtb}{\ignorespaces#3\@killglue}% + \setbox\@ATu\hbox{\usebox{\@ATtb}}\@ATh\ht\@ATu\@ATwr\@ATwt% + \@ATbr\@ATbp\@ATrr\@ATwr\advance\@ATrr -\@ATbr% + \global\advance\@ATbp\ifdim\@ATbr<25pt -\@ATbp\else -25\unitlength\fi% + \@ATwt\@ATrr\advance\@ATwt 25\unitlength\global\advance\@ATwt\@ATbp% + \setbox\@ATu\box\voidb@x% + \hbox{\hspace*{\@ATbp}% + \@ATlen\unitlength% + \unitlength#1% + \edef\@AT@angle{#2}% + \ifnum\@AT@angle=120% + \raisebox{\@ATh}{\begin{picture}(25,12.5)% + \thicklines\put(0,12.5){\ATrightbranch{2}{-1}{25}}% + \end{picture}}% + \else\ifnum\@AT@angle=90% + \raisebox{\@ATh}{\begin{picture}(25,25)% + \thicklines\put(0,25){\ATrightbranch{1}{-1}{25}}% + \end{picture}}% + \else% + \raisebox{\@ATh}{\begin{picture}(25,50)% + \thicklines\put(0,50){\ATrightbranch{1}{-2}{25}}% + \end{picture}}\fi\fi% + \unitlength\@ATlen% + \hspace*{-\@ATbr}\usebox{\@ATtb}}\fi\fi} %%------------------------------------------------------- %% The internal drawing procedure for left extensions @@ -282,31 +300,33 @@ %% has been truncated. %%------------------------------------------------------- \def\@ATleft#1#2#3{% -\if@ATlinear% -#3\else% -\sbox{\@ATta}{\ignorespaces#3\@killglue}% -\setbox\@ATu\hbox{\usebox{\@ATta}}\@ATh\ht\@ATu\@ATwl\@ATwt% -\@ATrl\@ATwl\advance\@ATrl -\@ATbp\global\advance\@ATbp 25\unitlength\relax% -\global\@ATwt\ifdim\@ATbp<\@ATwl\@ATwl\else\@ATbp\fi\relax% -\setbox\@ATu\box\voidb@x% -\hbox{\usebox{\@ATta}\hspace*{-\@ATrl}% -\@ATlen\unitlength% -\unitlength#1% -\edef\@AT@angle{#2}% -\ifnum\@AT@angle=120% -\raisebox{\@ATh}{\begin{picture}(25,12.5)% -\thicklines\put(25,12.5){\ATleftbranch{-2}{-1}{25}}% -\end{picture}}% -\else\ifnum\@AT@angle=90% -\raisebox{\@ATh}{\begin{picture}(25,25)% -\thicklines\put(25,25){\ATleftbranch{-1}{-1}{25}}% -\end{picture}}% -\else% -\raisebox{\@ATh}{\begin{picture}(25,50)% -\thicklines\put(25,50){\ATleftbranch{-1}{-2}{25}}% -\end{picture}}\fi\fi% -\unitlength\@ATlen% -\hspace*{-\@ATbp}\hspace*{\@ATwt}}\fi}% + \if@ATlinear% + #3\else% + \if@ATtabul% + #3\else% + \sbox{\@ATta}{\ignorespaces#3\@killglue}% + \setbox\@ATu\hbox{\usebox{\@ATta}}\@ATh\ht\@ATu\@ATwl\@ATwt% + \@ATrl\@ATwl\advance\@ATrl -\@ATbp\global\advance\@ATbp 25\unitlength\relax% + \global\@ATwt\ifdim\@ATbp<\@ATwl\@ATwl\else\@ATbp\fi\relax% + \setbox\@ATu\box\voidb@x% + \hbox{\usebox{\@ATta}\hspace*{-\@ATrl}% + \@ATlen\unitlength% + \unitlength#1% + \edef\@AT@angle{#2}% + \ifnum\@AT@angle=120% + \raisebox{\@ATh}{\begin{picture}(25,12.5)% + \thicklines\put(25,12.5){\ATleftbranch{-2}{-1}{25}}% + \end{picture}}% + \else\ifnum\@AT@angle=90% + \raisebox{\@ATh}{\begin{picture}(25,25)% + \thicklines\put(25,25){\ATleftbranch{-1}{-1}{25}}% + \end{picture}}% + \else% + \raisebox{\@ATh}{\begin{picture}(25,50)% + \thicklines\put(25,50){\ATleftbranch{-1}{-2}{25}}% + \end{picture}}\fi\fi% + \unitlength\@ATlen% + \hspace*{-\@ATbp}\hspace*{\@ATwt}}\fi\fi}% %%------------------------------------------------------- %% The internal procedure to draw a leaf. @@ -320,7 +340,10 @@ {\@ATadlb{#1}{#2}}% {\@ATadla{#1}{#2}}} \def\@ATadla#1#2{% - \if@ATlinear\ATlinearmorphemeblock{#1}{#2}\else% + \if@ATlinear\relax% + \@ATlinearmorphemeblock{#1}{#2}\else% + \if@ATtabul% + \@ATtabularmorphemeblock{#1}{#2}\else% \setbox\@ATsa\hbox{#1}\setbox\@ATsb\hbox{#2}% \setbox\@ATu\vbox{\copy\@ATsa\copy\@ATsb}\@ATlen\wd\@ATu% \setbox\@ATu\vbox{% @@ -334,28 +357,32 @@ \@ATwt\ht\@ATu\advance\@ATwt-\ht\@ATsa% \setbox\@ATu\hbox{\lower\@ATwt\hbox{\box\@ATu}}% \global\@ATwt\wd\@ATu\global\@ATbp .5\@ATwt% - \hbox{\box\@ATu}\fi} + \hbox{\box\@ATu}\fi\fi} \def\@ATadlb#1#2[#3]{% \@ATadlc{#1}{\@ATadld{#2}{\ATAttributeBox{#3}}}} \def\@ATadlc#1#2{\@ifnextchar[% {\@ATadlf{#1}{#2}}% {\@ATadla{#1}{#2}}} \def\@ATadld#1#2{\if@ATlinear% - \ATlinearfirstattribute{#1}{#2}\else% + \@ATlinearfirstattribute{#1}{#2}\else% + \if@ATtabul% + \@ATtabularfirstattribute{#1}{#2}\else% \setbox\@ATsa\hbox{#1}\setbox\@ATsb\hbox{#2}% \setbox\@ATu\vbox{\copy\@ATsa\copy\@ATsb}\@ATlen\wd\@ATu% \vbox{% \hbox to\@ATlen{\hfil\box\@ATsa\hfil}\nointerlineskip% \ATfirstattrskip% - \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi}% + \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi\fi}% \def\@ATadle#1#2{\if@ATlinear% - \ATlinearnextattribute{#1}{#2}\else% + \@ATlinearnextattribute{#1}{#2}\else% + \if@ATtabul% + \@ATtabularnextattribute{#1}{#2}\else% \setbox\@ATsa\hbox{#1}\setbox\@ATsb\hbox{#2}% \setbox\@ATu\vbox{\copy\@ATsa\copy\@ATsb}\@ATlen\wd\@ATu% \vbox{% \hbox to\@ATlen{\hfil\box\@ATsa\hfil}\nointerlineskip% \ATinterattrskip% - \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi}% + \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi\fi}% \def\@ATadlf#1#2[#3]{% \@ATadlc{#1}{\@ATadle{#2}{\ATAttributeBox{#3}}}} @@ -371,7 +398,10 @@ {\@ATadsb{#1}{#2}}% {\@ATadsa{#1}{#2}}} \def\@ATadsa#1#2{% - \if@ATlinear\ATlinearsummaryblock{#1}{#2}\else% + \if@ATlinear\relax% + \@ATlinearsummaryblock{#1}{#2}\else% + \if@ATtabul\relax% + \@ATtabularsummaryblock{#1}{#2}\else% \setbox\@ATsa\hbox{#1}\setbox\@ATsb\hbox{#2}% \setbox\@ATsc\hbox{\ATSummarySymbol}% \setbox\@ATu\vbox{\copy\@ATsc\copy\@ATsa\copy\@ATsb}% @@ -390,28 +420,32 @@ \@ATwt\ht\@ATu\advance\@ATwt-\ht\@ATsa% \setbox\@ATu\hbox{\lower\@ATwt\hbox{\box\@ATu}}% \global\@ATwt\wd\@ATu\global\@ATbp .5\@ATwt% - \hbox{\box\@ATu}\fi} + \hbox{\box\@ATu}\fi\fi} \def\@ATadsb#1#2[#3]{% \@ATadsc{#1}{\@ATadsd{#2}{\ATAttributeBox{#3}}}} \def\@ATadsc#1#2{\@ifnextchar[% {\@ATadsf{#1}{#2}}% {\@ATadsa{#1}{#2}}} \def\@ATadsd#1#2{\if@ATlinear% - \ATlinearfirstattribute{#1}{#2}\else% + \@ATlinearfirstattribute{#1}{#2}\else% + \if@ATtabul% + \@ATtabularfirstattribute{#1}{#2}\else% \setbox\@ATsa\hbox{#1}\setbox\@ATsb\hbox{#2}% \setbox\@ATu\vbox{\copy\@ATsa\copy\@ATsb}\@ATlen\wd\@ATu% \vbox{% \hbox to\@ATlen{\hfil\box\@ATsa\hfil}\nointerlineskip% \ATfirstattrskip% - \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi}% + \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi\fi}% \def\@ATadse#1#2{\if@ATlinear% - \ATlinearnextattribute{#1}{#2}\else% + \@ATlinearnextattribute{#1}{#2}\else% + \if@ATtabul% + \@ATtabularnextattribute{#1}{#2}\else% \setbox\@ATsa\hbox{#1}\setbox\@ATsb\hbox{#2}% \setbox\@ATu\vbox{\copy\@ATsa\copy\@ATsb}\@ATlen\wd\@ATu% \vbox{% \hbox to\@ATlen{\hfil\box\@ATsa\hfil}\nointerlineskip% \ATinterattrskip% - \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi}% + \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}\fi\fi}% \def\@ATadsf#1#2[#3]{% \@ATadsc{#1}{\@ATadse{#2}{\ATAttributeBox{#3}}}} @@ -455,9 +489,9 @@ %% %% \ATSummarySymbol defines the symbol used for the summary %%------------------------------------------------------- -\def\ATMorphemeBox#1{#1\strut} -\def\ATGrammarCharacterBox#1{$\mathrm{#1}$} -\def\ATAttributeBox#1{\textsf{[#1]}} +\def\ATMorphemeBox#1{\mbox{#1\strut}} +\def\ATGrammarCharacterBox#1{\mbox{\@ATsmall$\mathrm{#1}$}} +\def\ATAttributeBox#1{\mbox{\@ATsmall\textsf{[#1]}}} \def\ATfirstattrskip{\vskip.7ex} \def\ATinterattrskip{\vskip.5ex} @@ -546,36 +580,24 @@ \def\@ATmu{\mu} \def\@AT@shorttree#1#2#3#4#5{% \@ATtree{#1}{#2}{\hbox{$#3$}}% - {\@ATsmall\ATMorphemeBox{#4}}% - {\@ATsmall\ATGrammarCharacterBox{#5}}} -\def\ATl{\@AT@shorttree{\unitlength}{\@ATangle}% - {\scriptstyle\leftarrow}} -\def\ATlL#1{\@AT@shorttree{#1}{\@ATangle}% - {\scriptstyle\leftarrow}} -\def\ATlA#1{\@AT@shorttree{\unitlength}{#1}% - {\scriptstyle\leftarrow}} -\def\ATlLA#1#2{\@AT@shorttree{#1}{#2}% - {\scriptstyle\leftarrow}} -\def\ATr{\@AT@shorttree{\unitlength}{\@ATangle}% - {\scriptstyle\rightarrow}} -\def\ATrL#1{\@AT@shorttree{#1}{\@ATangle}% - {\scriptstyle\rightarrow}} -\def\ATrA#1{\@AT@shorttree{\unitlength}{#1}% - {\scriptstyle\rightarrow}} -\def\ATrLA#1#2{\@AT@shorttree{#1}{#2}% - {\scriptstyle\rightarrow}} -\def\ATb{\@AT@shorttree{\unitlength}{\@ATangle}% - {\scriptstyle\leftrightarrow}} -\def\ATbL#1{\@AT@shorttree{#1}{\@ATangle}% - {\scriptstyle\leftrightarrow}} -\def\ATbA#1{\@AT@shorttree{\unitlength}{#1}% - {\scriptstyle\leftrightarrow}} -\def\ATbLA#1#2{\@AT@shorttree{#1}{#2}% - {\scriptstyle\leftrightarrow}} + {\ATMorphemeBox{#4}}% + {\ATGrammarCharacterBox{#5}}} +\def\ATlLA#1#2{\@AT@shorttree{#1}{#2}{\scriptstyle\leftarrow}} +\def\ATl{\ATlLA{\unitlength}{\@ATangle}} +\def\ATlL#1{\ATlLA{#1}{\@ATangle}} +\def\ATlA{\ATlLA{\unitlength}} +\def\ATrLA#1#2{\@AT@shorttree{#1}{#2}{\scriptstyle\rightarrow}} +\def\ATr{\ATrLA{\unitlength}{\@ATangle}} +\def\ATrL#1{\ATrLA{#1}{\@ATangle}} +\def\ATrA{\ATrLA{\unitlength}} +\def\ATbLA#1#2{\@AT@shorttree{#1}{#2}{\scriptstyle\leftrightarrow}} +\def\ATb{\ATbLA{\unitlength}{\@ATangle}} +\def\ATbL#1{\ATbLA{#1}{\@ATangle}} +\def\ATbA{\ATbLA{\unitlength}} +\def\ATleLA#1#2{\ATlLA{#1}{#2}{$\@ATeps$}} \def\ATle{\ATl{$\@ATeps$}} \def\ATleL#1{\ATlL{#1}{$\@ATeps$}} \def\ATleA#1{\ATlA{#1}{$\@ATeps$}} -\def\ATleLA#1#2{\ATlLA{#1}{#2}{$\@ATeps$}} \def\ATlc{\ATl{$\@ATepsc$}} \def\ATlcL#1{\ATlL{#1}{$\@ATepsc$}} \def\ATlcA#1{\ATlA{#1}{$\@ATepsc$}} @@ -608,18 +630,16 @@ \def\ATbmuL#1{\ATbL{#1}{$\@ATmu$}} \def\ATbmuA#1{\ATbA{#1}{$\@ATmu$}} \def\ATbmuLA#1#2{\ATbLA{#1}{#2}{$\@ATmu$}} -\def\ATxl{\@ATleft{\unitlength}{\@ATangle}} -\def\ATxlL#1{\@ATleft{#1}{\@ATangle}} -\def\ATxlA#1{\@ATleft{\unitlength}{#1}} \def\ATxlLA#1#2{\@ATleft{#1}{#2}} -\def\ATxr{\@ATright{\unitlength}{\@ATangle}} -\def\ATxrL#1{\@ATright{#1}{\@ATangle}} -\def\ATxrA#1{\@ATright{\unitlength}{#1}} +\def\ATxl{\ATxlLA{\unitlength}{\@ATangle}} +\def\ATxlL#1{\ATxlLA{#1}{\@ATangle}} +\def\ATxlA{\ATxlLA{\unitlength}} \def\ATxrLA#1#2{\@ATright{#1}{#2}} -\def\ATs#1#2{\@ATads{\ATMorphemeBox{#1}}% - {\ATGrammarCharacterBox{#2}}} -\def\ATm#1#2{\@ATadl{\ATMorphemeBox{#1}}% - {\ATGrammarCharacterBox{#2}}} +\def\ATxr{\ATxrLA{\unitlength}{\@ATangle}} +\def\ATxrL#1{\ATxrLA{#1}{\@ATangle}} +\def\ATxrA{\ATxrLA{\unitlength}} +\def\ATs#1#2{\@ATads{\ATMorphemeBox{#1}}{\ATGrammarCharacterBox{#2}}} +\def\ATm#1#2{\@ATadl{\ATMorphemeBox{#1}}{\ATGrammarCharacterBox{#2}}} %%------------------------------------------------------- %% Public commands to write adtrees in linear format. @@ -632,17 +652,95 @@ %% where t is the text. All these renderings are coded via %% suitable blocks %%------------------------------------------------------- -\def\ATlinearise#1{\@ATlineartrue\hbox{#1}\@ATlinearfalse} -\def\ATLinear{\@ATlineartrue} -\def\ATNormal{\@ATlinearfalse} +\def\ATLinear{\global\@ATlineartrue\global\@ATtabulfalse% + \gdef\@ATlinearadpositionblock{\ATlinearadpositionblock}% + \gdef\@ATlinearfirstattribute{\ATlinearfirstattribute}% + \gdef\@ATlinearnextattribute{\ATlinearnextattribute}% + \gdef\@ATlinearsubtrees{\ATlinearsubtrees}% + \gdef\@ATlinearmorphemeblock{\ATlinearmorphemeblock}% + \gdef\@ATlinearsummaryblock{\ATlinearsummaryblock}} +\def\ATNormal{\global\@ATlinearfalse\global\@ATtabulfalse} +\def\ATlinearise#1{\ATLinear\ensuremath{#1}\ATNormal} -\def\ATlinearadpositionblock#1#2#3{% - {#2}${}^{\hbox{#1}}_{\hbox{#3}}$} -\def\ATlinearfirstattribute#1#2{{#1}:{#2}} -\def\ATlinearnextattribute#1#2{{#1};{#2}} +\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}${}_{\hbox{#2}}$} -\def\ATlinearsummaryblock#1#2{({#1})${}_{\hbox{#2}}$} +\def\ATlinearmorphemeblock#1#2{{#1}\textsubscript{#2}} +\def\ATlinearsummaryblock#1#2{\mbox{$\triangle($}% + \mbox{#1}\mbox{$)$}\textsubscript{#2}} +\def\@ATlinearadpositionblock{\ATlinearadpositionblock}% +\def\@ATlinearfirstattribute{\ATlinearfirstattribute}% +\def\@ATlinearnextattribute{\ATlinearnextattribute}% +\def\@ATlinearsubtrees{\ATlinearsubtrees}% +\def\@ATlinearmorphemeblock{\ATlinearmorphemeblock}% +\def\@ATlinearsummaryblock{\ATlinearsummaryblock} + +%%------------------------------------------------------- +%% Public commands to write adtrees in tabular format. +%% +%% Essentially, an adtree is written as +%% Ad^dir_GC( +%% L, +%% R) +%% where Ad is the adposition, dir is the direction, GC +%% is the grammar character, and L and R are the left and +%% right subtrees respectively. Leaves are written as +%% m_GC, where m is the morpheme, and summaries as (t)_GC +%% where t is the text. All these renderings are coded via +%% suitable blocks +%%------------------------------------------------------- +\def\ATTabular{\global\@ATtabultrue\global\@ATlinearfalse% + \gdef\@ATtabularadpositionblock{\ATtabularadpositionblock}% + \gdef\@ATtabularfirstattribute{\ATtabularfirstattribute}% + \gdef\@ATtabularnextattribute{\ATtabularnextattribute}% + \gdef\@ATtabularsubtrees{\ATtabularsubtrees}% + \gdef\@ATtabularmorphemeblock{\ATtabularmorphemeblock}% + \gdef\@ATtabularsummaryblock{\ATtabularsummaryblock}% + \@AT@tabcountreset} + +\newenvironment{ATtabulardisplay} +{\ATTabular\unskip\hfill\break} +{\ATNormal} + +\newenvironment{ATtabular} +{\hbox\bgroup\ATTabular} +{\egroup\ATNormal} + +\def\ATtabskip{\hspace*{.7em}} +\def\ATtabindent{\hspace*{1em}} + +\newcount\@AT@tabcount +\newcount\@AT@@tabcount +\def\@AT@tabcountreset{\global\@AT@tabcount0} +\def\AT@loop@tab{\@AT@@tabcount\@AT@tabcount% + \ifnum\@AT@@tabcount>0% + \loop\ATtabskip\advance\@AT@@tabcount-1% + \ifnum\@AT@@tabcount>0\repeat\else\relax\fi} + +\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} +\def\@ATtabularadpositionblock{\ATtabularadpositionblock}% +\def\@ATtabularfirstattribute{\ATtabularfirstattribute}% +\def\@ATtabularnextattribute{\ATtabularnextattribute}% +\def\@ATtabularsubtrees{\ATtabularsubtrees}% +\def\@ATtabularmorphemeblock{\ATtabularmorphemeblock}% +\def\@ATtabularsummaryblock{\ATtabularsummaryblock}% %%------------------------------------------------------- %% Centring adtrees. @@ -659,12 +757,191 @@ %%------------------------------------------------------- \def\ATvcentre#1{% \setbox\@ATsc\hbox{#1}% - \@ATlen\dp\@ATsc\setbox\@ATsc\hbox{\raise\@ATlen\box\@ATsc} + \@ATlen\dp\@ATsc\setbox\@ATsc\hbox{\raise\@ATlen\box\@ATsc}% \@ATlen.5\ht\@ATsc\hbox{\lower\@ATlen\box\@ATsc}}% \def\AThcentre#1{% \setbox\@ATsc\hbox{#1}% - \@ATlen-.5\wd\@ATsc% - \hbox{\kern\@ATlen\box\@ATsc}} + \@ATlen-.5\wd\@ATsc\hbox{\kern\@ATlen\box\@ATsc}} \def\ATcentre#1{\AThcentre{\ATvcentre{#1}}} %%------------------------------------------------------- +%% Pathlike adtrees. +%% +%% A pathlike adtree is rendered by enclosing it into the +%% pathlikeadtree environment. +%%------------------------------------------------------- + +% the pieces the user may use and change +\newskip\ATpathinterskip \ATpathinterskip.5em +\newskip\ATpathunitlength \ATpathunitlength4ex +\newskip\ATpicskip \ATpicskip.2ex +\newskip\ATpathlinethickness \ATpathlinethickness.1em +\def\ATnGCBox#1{\@ATsmall$\mathrm{#1}$} +\def\ATlGCBox#1{\@ATsmall$\mathrm{#1}$} +\newskip\ATpathlabelhspace \ATpathlabelhspace.3em +\newskip\ATpathlabelvspace \ATpathlabelvspace1ex +\def\ATpathpichook{} + +%\newenvironment{pathlikeadtree} +\def\pathlikeadtree{\@ATpathlistinit} +\def\endpathlikeadtree{\@ATpathlistend} + +% some internal declarations +\newif\if@ATpathfirstnode +\newbox\@ATpathbox \newbox\@ATpathlinebox +\newcount\@ATanchor \newcount\@ATcells \newcount\@ATadppars +\newcount\@ATpa \newcount\@ATpb \newcount\@ATpc +\newcount\@ATpd \newcount\@ATpe \newcount\@ATtmp +\newcount\@ATtmpa \newcount\@AThmax + +% A pathlike adtree starts with parsing a node after cleaning up what +% has to be done, and temporarily redefining & +\def\@ATpathlistinit{% + \begingroup% + \linethickness{\ATpathlinethickness}% + \global\@ATpathfirstnodetrue\global\@ATanchor0\global\@ATcells0% + \global\@ATadppars0\global\@AThmax0\def\@ATpathdrawlines{\relax}% + \setbox\@ATpathbox\null\setbox\@ATpathlinebox\null\AT@n} + +% A pathlike adtree ends by drawing the two boxes which contain the +% list of marked morphemes and the connecting lines, respectively +\def\@ATpathlistend{% + \def\@ATca##1{\@ATpa ##1\relax}\def\@ATcb##1{\@ATpb ##1\relax}% + \def\@ATcc##1{\@ATpc ##1\relax}\def\@ATcd##1{\@ATpd ##1\relax}% + \def\@ATce##1{\@ATpe ##1\@ATto}\@ATpathdrawlines% + \global\setbox\@ATpathbox\hbox{% + \vbox{\box\@ATpathbox\nointerlineskip% + \vskip\ATpicskip\box\@ATpathlinebox}}% + \box\@ATpathbox\endgroup} + +% Parsing a node: it has the form +% - morpheme[gc] +% possibly followed by one or more arrow specs +\def\AT@n#1[#2]{\@ifnextchar(% + {\@ATn{#1}{#2}\AT@to} + {\@ATn{#1}{#2}}} +\def\AT@np{\@ifnextchar&{\@AT@n}{}} +\def\@AT@n[#2]{\AT@n#1[#2]} + +% when morpheme[gc] has been extracted, its cell is constructed as a +% box and accumulated in the pathbox, correctly spaced +% At the end, we pass on the next cell, if any +\def\@ATn#1#2{% + \global\advance\@ATanchor1% + \setbox\@ATsa\hbox{\ignorespaces#1}\@ATlen\wd\@ATsa% + \setbox\@ATsb\hbox{\ATnGCBox{#2}}\@ATwt\wd\@ATsb\relax% + \ifdim\@ATlen<\@ATwt\relax\@ATlen\@ATwt\fi% + \setbox\@ATsa\vbox{\hbox to\@ATlen{\hfil\box\@ATsa\hfil}% + \hbox to\@ATlen{\hfil\box\@ATsb\hfil}}% + \@ATwt\wd\@ATpathbox\advance\@ATwt.5\@ATlen% + \if@ATpathfirstnode\else\advance\@ATwt\ATpathinterskip\fi% + \expandafter\edef\csname @ATcell\the\@ATanchor\endcsname{\the\@ATwt}% + \setbox\@ATpathbox\hbox{\box\@ATpathbox% + \if@ATpathfirstnode\global\@ATpathfirstnodefalse\else% + \hskip\ATpathinterskip\fi\box\@ATsa}% + \@ifnextchar&{\AT@np}{}} + +% parsing an arrow spec: it has the form +% (t,h)[gc] +% where the "a" part is optional +% moreover, if "t" or "a" are specified by absolute positions, they +% are preceded by "!". +% parsing calculates the absolute values of the relative positions, +% and send everything to \@ATtoa +\def\AT@to(#1){\AT@@to#1)} +\def\AT@@to{\@ifnextchar!{\AT@to@a}{\AT@tor(}} +\def\AT@to@a!#1){\AT@toa(#1)} +\def\AT@tor(#1,#2){% + \@ATtmp#1\advance\@ATtmp\@ATanchor\relax% + \AT@toa(\the\@ATtmp,#2)} +\def\AT@toa(#1,#2)[#3]{\@ifnextchar<% + {\@AT@toa{#1}{#2}{\ATlGCBox{#3}}}% + {\@ATtoa{#1}{#2}{\ATlGCBox{#3}}{0}}} +\def\@AT@toa#1#2#3<{\@ifnextchar!% + {\@AT@@toa{#1}{#2}{#3}}% + {\@ATtoar{#1}{#2}{#3}}} +\def\@AT@@toa#1#2#3!#4>{\@ATtoa{#1}{#2}{#3}{#4}} +\def\@ATtoar#1#2#3#4>{% + \@ATtmpa#4\relax\ifnum#4=\z@\relax\@ATtmpa\z@% + \else\advance\@ATtmpa\@ATanchor\fi% + \@ATtoa{#1}{#2}{#3}{\the\@ATtmpa}} + +% when an arrow has been parsed, we must accumulate it into the +% command \@ATpathdrawlines which will construct the arrows at the +% right moment, i.e., after the whole pathlike adtree has been +% scanned. Notice how the command checks whether an arrow is followed +% by another one, eventually restarting the parsing process for the +% new arrow. If not, let's move to the next cell, if any +\def\@ATtoa#1#2#3#4{% + \ifnum\@AThmax<#2\relax\@AThmax#2\fi% + \def\@ATca{\noexpand\@ATca}\def\@ATcb{\noexpand\@ATcb}% + \def\@ATcc{\noexpand\@ATcc}\def\@ATcd{\noexpand\@ATcd}% + \def\@ATce{\noexpand\@ATce}% + \expandafter\def\csname @ATadppar\the\@ATadppars\endcsname{#3}% + \expandafter\edef\expandafter\@ATpathdrawlines\expandafter{% + \@ATca{\the\@ATanchor}\@ATcb{#1}\@ATcc{#2}% + \@ATcd{\the\@ATadppars}\@ATce{#4}\@ATpathdrawlines}% + \global\advance\@ATadppars1\relax + \@ifnextchar({\AT@to}{\AT@np}} + +% at the end, an arrow is effectively drawn. +\def\@ATto{% + \edef\@AText{\csname @ATcell\the\@ATpa\endcsname}\@ATbl\@AText% + \edef\@AText{\csname @ATcell\the\@ATpb\endcsname}\@ATbr\@AText% + \setbox\@ATsa\hbox{\csname @ATadppar\the\@ATpd\endcsname}% + \setbox\@ATsa\hbox{% + \hskip\ATpathlabelhspace\box\@ATsa\hskip\ATpathlabelhspace}% + \@ATbp\ht\@ATsa\advance\@ATbp\dp\@ATsa% + \advance\@ATbp\ATpathlabelvspace\relax% + \@ATskip\wd\@ATsa\relax\unitlength1pt\relax% + \@ATh\@ATpc\ATpathunitlength\relax% + \@ATunit\@AThmax\ATpathunitlength\relax% + \@ATlen\@ATbr\advance\@ATlen\@ATbl\relax% + \@ATwr\@ATbr\advance\@ATwr-\@ATbl\relax% + \@ATrr\@ATunit\advance\@ATrr-\@ATh\relax% + \ifnum\@ATpe=\z@\else% + \edef\@AText{\csname @ATcell\the\@ATpe\endcsname}\@ATrl\@AText\fi% + \ATpathpichook\relax% + \setbox\@ATu\hbox{% + \begin{picture}(\strip@pt\@ATlen,\strip@pt\@ATunit) + \put(\strip@pt\@ATbl,\strip@pt\@ATunit)% + {\line(0,-1){\strip@pt\@ATh}}% + \put(\strip@pt\@ATbr,\strip@pt\@ATunit)% + {\line(0,-1){\strip@pt\@ATh}}% + \ifdim\@ATwr<\z@\relax% + \put(\strip@pt\@ATbl,\strip@pt\@ATrr)% + {\vector(-1,0){-\strip@pt\@ATwr}}% + \put(\strip@pt\@ATbr,\strip@pt\@ATrr)% + {\makebox(0,\strip@pt\@ATbp)[l]{\box\@ATsa}}\else% + \put(\strip@pt\@ATbl,\strip@pt\@ATrr)% + {\vector(1,0){\strip@pt\@ATwr}}% + \put(\strip@pt\@ATbr,\strip@pt\@ATrr)% + {\makebox(0,\strip@pt\@ATbp)[r]{\box\@ATsa}}\fi% + \ifnum\@ATpe=\z@\else\ifdim\@ATrl<\@ATbl% + \@ATwt.5\ATpathunitlength% + \@ATwl\@ATbl\advance\@ATwl-\@ATwt% + \@ATwr\@ATrr\advance\@ATwr2\@ATwt% + \dottedline{3}(\strip@pt\@ATbl,\strip@pt\@ATrr)% + (\strip@pt\@ATwl,\strip@pt\@ATwr)% + \advance\@ATbl-\@ATwt\advance\@ATrr2\@ATwt% + \@ATlen\@ATbl\advance\@ATlen-\@ATrl% + \@ATwl\@ATbl\advance\@ATwl-\@ATlen% + \dottedline{3}(\strip@pt\@ATbl,\strip@pt\@ATrr)% + (\strip@pt\@ATwl,\strip@pt\@ATrr)% + \dottedline{3}(\strip@pt\@ATrl,\strip@pt\@ATunit)% + (\strip@pt\@ATrl,\strip@pt\@ATrr)\else% + \@ATwt.5\ATpathunitlength% + \@ATwl\@ATbl\advance\@ATwl\@ATwt% + \@ATwr\@ATrr\advance\@ATwr2\@ATwt% + \dottedline{3}(\strip@pt\@ATbl,\strip@pt\@ATrr)% + (\strip@pt\@ATwl,\strip@pt\@ATwr)% + \advance\@ATbl\@ATwt\advance\@ATrr2\@ATwt% + \@ATlen\@ATbl\advance\@ATlen-\@ATrl% + \@ATwl\@ATbl\advance\@ATwl-\@ATlen% + \dottedline{3}(\strip@pt\@ATbl,\strip@pt\@ATrr)% + (\strip@pt\@ATwl,\strip@pt\@ATrr)% + \dottedline{3}(\strip@pt\@ATrl,\strip@pt\@ATunit)% + (\strip@pt\@ATrl,\strip@pt\@ATrr)\fi\fi% + \end{picture}}% + \setbox\@ATpathlinebox\hbox{% + \box\@ATu\kern-\@ATlen\box\@ATpathlinebox}} -- cgit v1.2.3