diff options
Diffstat (limited to 'Master/texmf-dist/doc/xelatex/langsci/avm.sty')
-rwxr-xr-x | Master/texmf-dist/doc/xelatex/langsci/avm.sty | 184 |
1 files changed, 184 insertions, 0 deletions
diff --git a/Master/texmf-dist/doc/xelatex/langsci/avm.sty b/Master/texmf-dist/doc/xelatex/langsci/avm.sty new file mode 100755 index 00000000000..03e57511cfe --- /dev/null +++ b/Master/texmf-dist/doc/xelatex/langsci/avm.sty @@ -0,0 +1,184 @@ +%% avm.sty - a style file for attribute-value matrices +%% Copyright 1992, 1993, 2006, 2013 Christopher Manning (manning@cs.stanford.edu) +% +% v 1.00 mar 29, 1992 +% v 1.01 dec 6, 1993 +% v 1.02 jan 5, 2006 +% v 1.03 dec 8, 2013 +% +% This work may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either version 1.3 +% of this license or (at your option) any later version. +% The latest version of this license is in +% http://www.latex-project.org/lppl.txt +% and version 1.3 or later is part of all distributions of LaTeX +% version 2005/12/01 or later. +% +% This work has the LPPL maintenance status `maintained'. +% +% The Current Maintainer of this work is Christopher Manning. +% +% This work consists of the files avm.sty, avm-doc.tex, avm-test.tex. + +\newif\ifavmactive\newif\ifavmsorted\newif\ifavmlabeled +\newif\ifavmcenter\newif\ifavmbottom +\newif\ifavmbottomright\newif\ifavmtopleft\newif\ifavmtopright + +\newdimen\avmdimen +\newbox\avmboxone\newbox\avmboxthree + +\def\avmoptions#1{\avmactivefalse\avmsortedfalse\avmlabeledfalse + \avmcenterfalse\avmbottomfalse + \avmbottomrightfalse\avmtopleftfalse\avmtoprightfalse + \def\more{#1}\ifx\more\empty\else\avmjoptions#1,\@nil\fi} +\def\avmjoptions#1,#2\@nil{\def\more{#2}\csname avm#1true\endcsname + \ifx\more\empty\else\avmjoptions#2\@nil\fi} + + +\def\avmfont#1{\def\avmjfont{#1}} +\def\avmjfont{} + +\def\avmvalfont#1{\def\avmjvalfont{#1}} +\def\avmjvalfont{} + +\def\avmsortfont#1{\def\avmjsortfont{#1}} +\def\avmjsortfont{} + +\def\avmhskip#1{\def\avmjhskip{#1}} +\def\avmjhskip{1em} + +\def\avmbskip#1{\def\avmjbskip{#1}} +\def\avmjbskip{0em} + +\def\avmvskip#1{\def\avmjvskip{#1}} +\def\avmjvskip{0.385ex}%was .3875 + + +\def\avmjprolog#1{$\mskip-\thinmuskip + \left#1\hskip\avmjbskip\vcenter\bgroup\vskip\avmjvskip + \ialign\bgroup\avmjfont + \strut ##\unskip\hfil + &&\hskip\avmjhskip\avmjvalfont ##\unskip\hfil\cr} +\def\avmjpostlog#1{\crcr\egroup\vskip\avmjvskip\egroup + \hskip\avmjbskip\right#1\mskip-\thinmuskip$\ignorespaces} + + +\def\avmjcatcode{\let\lparen=(\let\rparen=)\catcode`\[=13\catcode`\]=13 + \catcode`\<=13\catcode`\@=13\catcode`\(=13\catcode`\)=13 + \catcode`\>=13\catcode`\|=13} + +{\avmjcatcode % new group: redefine above catcodes as active + +\gdef\specialavm{\avmjcatcode +\def({\avmjprolog\lparen}% +\def){\avmjpostlog\rparen}% +\def<{\avmjprolog\langle}% +\def>{\avmjpostlog\rangle}% +\ifavmsorted +\def[##1{\setbox\avmboxthree=\hbox{\avmjsortfont##1\/}\setbox2=\hbox + \bgroup\avmjprolog\lbrack}% +\def]{\avmjpostlog\rbrack\egroup\avmjsort}% +\else\ifavmlabeled +\def[##1{\def\more{##1}\setbox2=\hbox\bgroup\avmjprolog[}% +\def]{\avmjpostlog]\egroup\node{\more}{\box2}}% +\else +\def[{\avmjprolog\lbrack}% +\def]{\avmjpostlog\rbrack}% +\fi\fi +% +\def\<{$\langle$}\def\>{$\rangle$}% +\def\({\lparen} +\def\){\rparen}% +\def\[{\lbrack} +\def\]{\rbrack}% +\def|{$\,\vert\,$}% +\def@##1{\avmbox{##1}}% +} % end defn of \specialavm +} % restore active catcodes + + +\long\def\avm{\begingroup +\ifavmactive\specialavm +\else +\def\({\avmjprolog(}% +\def\){\avmjpostlog)}% +\def\<{\avmjprolog\langle}% +\def\>{\avmjpostlog\rangle}% +% +\ifavmsorted +\def\[##1{\setbox\avmboxthree=\hbox{\avmjsortfont##1\/}\setbox + 2=\hbox\bgroup\avmjprolog[}% +\def\]{\avmjpostlog]\egroup\avmjsort}% +\else\ifavmlabeled +\def\[##1{\def\more{##1}\setbox2=\hbox\bgroup\avmjprolog[}% +\def\]{\avmjpostlog]\egroup\node{\more}{\box2}}% +\else +\def\[{\avmjprolog[}% +\def\]{\avmjpostlog]}% +\fi\fi +% +\def\|{$\,\vert\,$}% +\def\@##1{\avmbox{##1}}% +\fi % end not active +% +\ifx\LaTeX\undefined\def\\{\cr}% running under TeX +\else \ifx\@tabularcr\relax +\def\\{\@arraycr}% fix for the Mainz array package +\else +\def\\{\@tabularcr}% Leverage off LaTeX's \\*[dimen] options +\fi +\fi +\def\!{\node}% +\long\def\avmjsort{\dimen2=\ht2\advance\dimen2 by -.25\baselineskip + \global\dimen\avmdimen=\wd\avmboxthree + \ifavmtopleft \raise\dimen2\llap{\box\avmboxthree}\box2% + \else\ifavmtopright \box2\raise\dimen2\box\avmboxthree + \else\ifavmbottomright \box2\lower\dimen2\box\avmboxthree + \else \lower\dimen2\llap{\box\avmboxthree}\box2% + \fi\fi\fi}% +\long\def\sort##1##2{\setbox2=\hbox{##2}\setbox + \avmboxthree=\hbox{\avmjsortfont##1\/}\dimen2=\ht2% + \advance\dimen2 by -.25\baselineskip + \ifavmtopleft \raise\dimen2\box\avmboxthree\box2% + \else\ifavmtopright \box2\raise\dimen2\box\avmboxthree% + \else\ifavmbottomright \box2\lower\dimen2\box\avmboxthree% + \else \lower\dimen2\box\avmboxthree\box2% + \fi\fi\fi}% +\long\def\osort##1##2{\setbox2=\hbox{##2}\setbox + \avmboxthree=\hbox{\avmjsortfont ##1\/}\avmjsort}% +\def\asort##1{\avmspan{\avmjsortfont ##1}\\}% +\def\avml{\avmjprolog.}% +\def\avmr{\avmjpostlog.}% +\def\avmb##1{\node{##1}{\lbrack\;\rbrack}}% +\def\avmd##1{\node{##1}{---}}% +\def\q##1{\ifx ##1\{$\lbrace$\else + \ifx ##1\}$\rbrace$\else + \ifx ##1<$\langle$\else + \ifx ##1>$\rangle$\fi \fi \fi \fi}% +\def\{{\avmjprolog\lbrace}% +\def\}{\avmjpostlog\rbrace}% +\def\;{\hskip\avmjhskip}% +\def\avmspan##1{\multispan2\strut ##1\expandafter\hfil}% +\avmjfont +\openup\avmjvskip +\setbox\avmboxone=\hbox\bgroup\ignorespaces +} % end defn of \avm + + +\def\endavm{\egroup\ifvmode\leavevmode\fi % this if is useful! + \ifavmsorted\null\hskip\dimen\avmdimen\fi + \ifavmcenter + \box\avmboxone + \else \ifavmbottom + \lower.575\baselineskip\hbox{\vbox{\box\avmboxone\null}}% + \else +% the next bit is ripped off from Emma's \evnup in lingmacros.sty + \dimen2=\ht\avmboxone\advance\dimen2 by -.725\baselineskip + \lower\dimen2\box\avmboxone +\fi \fi \endgroup} + + +% based on TeXbook exercise 21.3 +\def\avmbox#1{\setbox2=\hbox{$\scriptstyle #1$}\lower.2ex\vbox{\hrule + \hbox{\vrule\kern1.25pt + \vbox{\kern1.25pt\box2\kern1.25pt}\kern1.25pt\vrule}\hrule}} |