Skip to content

Commit d2a1f7d

Browse files
committed
added avm.sty, missing from minimal TEXINPUTS path defined for pdflatex
svn/trunk@4105
1 parent e360e54 commit d2a1f7d

File tree

1 file changed

+158
-0
lines changed

1 file changed

+158
-0
lines changed

Diff for: avm.sty

+158
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,158 @@
1+
% avm.sty -- for attribute-value matrices -- mar 29, 1992; rev. dec 6, 1993
2+
% (c) 1992 christopher manning ([email protected]) -- see avm.doc.tex
3+
4+
\newif\ifavmactive\newif\ifavmsorted\newif\ifavmlabeled
5+
\newif\ifavmcenter\newif\ifavmbottom
6+
\newif\ifavmbottomright\newif\ifavmtopleft\newif\ifavmtopright
7+
8+
\newdimen\avmdimen
9+
\newbox\avmboxone\newbox\avmboxthree
10+
11+
\def\avmoptions#1{\avmactivefalse\avmsortedfalse\avmlabeledfalse
12+
\avmcenterfalse\avmbottomfalse
13+
\avmbottomrightfalse\avmtopleftfalse\avmtoprightfalse
14+
\def\more{#1}\ifx\more\empty\else\avmjoptions#1,\@nil\fi}
15+
\def\avmjoptions#1,#2\@nil{\def\more{#2}\csname avm#1true\endcsname
16+
\ifx\more\empty\else\avmjoptions#2\@nil\fi}
17+
18+
19+
\def\avmfont#1{\def\avmjfont{#1}}
20+
\def\avmjfont{}
21+
22+
\def\avmvalfont#1{\def\avmjvalfont{#1}}
23+
\def\avmjvalfont{}
24+
25+
\def\avmsortfont#1{\def\avmjsortfont{#1}}
26+
\def\avmjsortfont{}
27+
28+
\def\avmhskip#1{\def\avmjhskip{#1}}
29+
\def\avmjhskip{1em}
30+
31+
\def\avmbskip#1{\def\avmjbskip{#1}}
32+
\def\avmjbskip{0em}
33+
34+
\def\avmvskip#1{\def\avmjvskip{#1}}
35+
\def\avmjvskip{0.385ex}%was .3875
36+
37+
38+
\def\avmjprolog#1{$\mskip-\thinmuskip
39+
\left#1\hskip\avmjbskip\vcenter\bgroup\vskip\avmjvskip
40+
\ialign\bgroup\avmjfont
41+
\strut ##\unskip\hfil
42+
&&\hskip\avmjhskip\avmjvalfont ##\unskip\hfil\cr}
43+
\def\avmjpostlog#1{\crcr\egroup\vskip\avmjvskip\egroup
44+
\hskip\avmjbskip\right#1\mskip-\thinmuskip$\ignorespaces}
45+
46+
47+
\def\avmjcatcode{\let\lparen=(\let\rparen=)\catcode`\[=13\catcode`\]=13
48+
\catcode`\<=13\catcode`\@=13\catcode`\(=13\catcode`\)=13
49+
\catcode`\>=13\catcode`\|=13}
50+
51+
{\avmjcatcode % new group: redefine above catcodes as active
52+
53+
\gdef\specialavm{\avmjcatcode
54+
\def({\avmjprolog\lparen}%
55+
\def){\avmjpostlog\rparen}%
56+
\def<{\avmjprolog\langle}%
57+
\def>{\avmjpostlog\rangle}%
58+
\ifavmsorted
59+
\def[##1{\setbox\avmboxthree=\hbox{\avmjsortfont##1\/}\setbox2=\hbox
60+
\bgroup\avmjprolog\lbrack}%
61+
\def]{\avmjpostlog\rbrack\egroup\avmjsort}%
62+
\else\ifavmlabeled
63+
\def[##1{\def\more{##1}\setbox2=\hbox\bgroup\avmjprolog[}%
64+
\def]{\avmjpostlog]\egroup\node{\more}{\box2}}%
65+
\else
66+
\def[{\avmjprolog\lbrack}%
67+
\def]{\avmjpostlog\rbrack}%
68+
\fi\fi
69+
%
70+
\def\<{$\langle$}\def\>{$\rangle$}%
71+
\def\({\lparen}\def\){\rparen}%
72+
\def\[{\lbrack}\def\]{\rbrack}%
73+
\def|{$\,\vert\,$}%
74+
\def@##1{\avmbox{##1}}%
75+
} % end defn of \specialavm
76+
} % restore active catcodes
77+
78+
79+
\long\def\avm{\begingroup
80+
\ifavmactive\specialavm
81+
\else
82+
\def\({\avmjprolog(}%
83+
\def\){\avmjpostlog)}%
84+
\def\<{\avmjprolog\langle}%
85+
\def\>{\avmjpostlog\rangle}%
86+
%
87+
\ifavmsorted
88+
\def\[##1{\setbox\avmboxthree=\hbox{\avmjsortfont##1\/}\setbox
89+
2=\hbox\bgroup\avmjprolog[}%
90+
\def\]{\avmjpostlog]\egroup\avmjsort}%
91+
\else\ifavmlabeled
92+
\def\[##1{\def\more{##1}\setbox2=\hbox\bgroup\avmjprolog[}%
93+
\def\]{\avmjpostlog]\egroup\node{\more}{\box2}}%
94+
\else
95+
\def\[{\avmjprolog[}%
96+
\def\]{\avmjpostlog]}%
97+
\fi\fi
98+
%
99+
\def\|{$\,\vert\,$}%
100+
\def\@##1{\avmbox{##1}}%
101+
\fi % end not active
102+
%
103+
\ifx\LaTeX\undefined\def\\{\cr}% running under TeX
104+
\else \def\\{\@tabularcr}% Leverage off LaTeX's \\*[dimen] options
105+
\fi
106+
\def\!{\node}%
107+
\long\def\avmjsort{\dimen2=\ht2\advance\dimen2 by -.25\baselineskip
108+
\global\dimen\avmdimen=\wd\avmboxthree
109+
\ifavmtopleft \raise\dimen2\llap{\box\avmboxthree}\box2%
110+
\else\ifavmtopright \box2\raise\dimen2\box\avmboxthree%
111+
\else\ifavmbottomright \box2\lower\dimen2\box\avmboxthree%
112+
\else \lower\dimen2\llap{\box\avmboxthree}\box2%
113+
\fi\fi\fi}%
114+
\long\def\sort##1##2{\setbox2=\hbox{##2}\setbox
115+
\avmboxthree=\hbox{\avmjsortfont##1\/}\dimen2=\ht2
116+
\advance\dimen2 by -.25\baselineskip
117+
\ifavmtopleft \raise\dimen2\box\avmboxthree\box2%
118+
\else\ifavmtopright \box2\raise\dimen2\box\avmboxthree%
119+
\else\ifavmbottomright \box2\lower\dimen2\box\avmboxthree%
120+
\else \lower\dimen2\box\avmboxthree\box2%
121+
\fi\fi\fi}%
122+
\long\def\osort##1##2{\setbox2=\hbox{##2}\setbox
123+
\avmboxthree=\hbox{\avmjsortfont ##1\/}\avmjsort}%
124+
\def\avml{\avmjprolog.}%
125+
\def\avmr{\avmjpostlog.}%
126+
\def\avmb##1{\node{##1}{\lbrack\;\rbrack}}%
127+
\def\avmd##1{\node{##1}{---}}%
128+
\def\q##1{\ifx ##1\{$\lbrace$\else
129+
\ifx ##1\}$\rbrace$\else
130+
\ifx ##1<$\langle$\else
131+
\ifx ##1>$\rangle$\fi \fi \fi \fi}%
132+
\def\{{\avmjprolog\lbrace}%
133+
\def\}{\avmjpostlog\rbrace}%
134+
\def\;{\hskip\avmjhskip}%
135+
\def\avmspan##1{\multispan2\strut ##1\expandafter\hfil}%
136+
\avmjfont
137+
\openup\avmjvskip
138+
\setbox\avmboxone=\hbox\bgroup\ignorespaces
139+
} % end defn of \avm
140+
141+
142+
\def\endavm{\egroup\ifvmode\leavevmode\fi % this if is useful!
143+
\ifavmsorted\null\hskip\dimen\avmdimen\fi
144+
\ifavmcenter
145+
\box\avmboxone
146+
\else \ifavmbottom
147+
\lower.575\baselineskip\hbox{\vbox{\box\avmboxone\null}}%
148+
\else
149+
% the next bit is ripped off from Emma's \evnup in lingmacros.sty
150+
\dimen2=\ht\avmboxone\advance\dimen2 by -.725\baselineskip
151+
\lower\dimen2\box\avmboxone
152+
\fi \fi \endgroup}
153+
154+
155+
% based on TeXbook exercise 21.3
156+
\def\avmbox#1{\setbox2=\hbox{$\scriptstyle #1$}\lower.2ex\vbox{\hrule
157+
\hbox{\vrule\kern1.25pt
158+
\vbox{\kern1.25pt\box2\kern1.25pt}\kern1.25pt\vrule}\hrule}}

0 commit comments

Comments
 (0)