diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-13 00:01:57 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-13 00:01:57 +0000 |
commit | b947be239b40a6eaec6083a561bf347ff84385e9 (patch) | |
tree | de6e275795855424864a563f8c1b882f8a2286c8 /Master/texmf-dist/tex/latex/pb-diagram/lamsarrow.sty | |
parent | 950f03b7024e00033a9f56cbd3f66212eaeaa4c8 (diff) |
pb-diagram
git-svn-id: svn://tug.org/texlive/trunk@1176 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex/latex/pb-diagram/lamsarrow.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/pb-diagram/lamsarrow.sty | 770 |
1 files changed, 770 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/pb-diagram/lamsarrow.sty b/Master/texmf-dist/tex/latex/pb-diagram/lamsarrow.sty new file mode 100644 index 00000000000..a215c8b1fc3 --- /dev/null +++ b/Master/texmf-dist/tex/latex/pb-diagram/lamsarrow.sty @@ -0,0 +1,770 @@ +% lamsarrow.sty: fancy arrows using lams fonts +% Author: extracted from Michael Spivak's LamS-TeX by Paul Burchard +% Version Number: 4.1 +% Version Date: 24 Jan 1997 +% +%--------------------- LamS-TeX copyright ------------------------- +% COPYRIGHT (C) 1989, 1990, 1991 by the Texplorators Corporation, +% 1572 West Gray #377, Houston, TX 77019-4948 (ALL RIGHTS RESERVED) +%------------------------------------------------------------------ +% +% This macro package allows LaTeX users to make use of the LamS-TeX +% arrow fonts and create arrows with +% * any valid LaTeX \line slope (unlike LaTeX's \vector) +% * all those fancy head/tail symbols and shaft styles. +% +% Actually, these macros will accept any slope and approximate it +% by the closest LaTeX \line slope. In making the approximation +% to the desired arrow slope, these macros will work to keep the +% arrow's *vertical* dimension accurate (at the expense +% of the horizontal one, if necessary). This requires the +% opposite strategy from LaTeX's \line and \vector commands, +% where the *horizontal* dimension can always be precisely +% specified. +% +% The macros seem to have the 10pt font size hardcoded in, so +% the arrow embellishments will be on the marginally small side +% in 12pt. +% +% Commands defined in this style file: +% +% \lamsarrow(#1,#2) +% Draws an arrow which extends #1 \unitlengths in the +% x-direction and #2 \unitlengths in the y-direction from the +% current position. #1 and #2 are arbitrary real numbers, +% not both zero. Intended for use in the picture environment. +% +% \lamsvector(#1,#2){#3} +% Has the same effect as \lamsarrow, except its usage is +% completely compatible with LaTeX's \vector command. But +% with \lamsvector, there are no limits on the size of the +% integers #1, #2, and it is OK if they have common factors. +% Only valid LaTeX line slopes will actually be drawn, tho. +% +% \lamsshaft{#1} +% A local declaration which changes the style of the shaft +% of any subsequent lams arrows within the same environment +% or {...} group. The symbol #1 may be one of: +% +% - solid line (default) +% . dashed line +% = long equals sign (no head or tail printed) +% 0 invisible arrow +% ? reset to default +% +% \lamssource{#1} +% \lamstarget{#1} +% Local declarations which change the symbol placed at the +% initial and final points, respectively, of the arrow shaft. +% Affects subsequent lams arrows within the same environment +% or {...} group. For either declaration, the symbol #1 may +% be any one of: +% +% Heads: +% ^ arrow head (default for \lamstarget) +% V arrow tail (default for \lamssource) +% ' left half of arrowhead +% ` right half of arrowhead +% A double arrowhead +% Tails: +% J left fishhook tail +% L right fishhook tail +% S squiggle +% Other: +% 0 no symbol +% ? reset to default +% + +% detente message +\typeout{ * LAMSTEX ARROWS * } +\typeout{ The arrows you are using are courtesy of LamS-TeX, a } +\typeout{ full-featured mathematical typsetting package which its } +\typeout{ creator, at least, believes to be superior to LaTeX. } +\typeout{ You can obtain LamS-TeX by anonymous FTP from most TeX } +\typeout{ archives, or through the TUG user group organization. } +\typeout{ } + +% lams arrow fonts +\font\lamsfont@i=lams1 +\font\lamsfont@ii=lams2 +\font\lamsfont@iii=lams3 +\font\lamsfont@iv=lams4 +\font\lamsfont@v=lams5 + +% arrow geom params +% direction +\newif\ifN@ +\newif\ifE@ +\newif\ifNESW@ +\newif\ifH@ +\newif\ifV@ +% location of source, target +\newdimen\lams@firstx +\newdimen\lams@firsty +\newdimen\lams@lastx +\newdimen\lams@lasty +\newdimen\lams@center %ignore +% shaft char dims +\newdimen\lams@ht +\newdimen\lams@wd + +% misc +\newcount\ten@ \ten@10 + + +%%%%%%%%%%%%%%%%%%%% \lamssource, \lamstarget, \lamsshaft +% +% Used to set arrow style options. +% +% EXTERNAL VARS COMPUTED +% +% \lams@source \lams@target \lams@shaft + +\newcount\lams@source +\newcount\lams@target +\newcount\lams@shaft + +\def\lamssource#1{% + \if#10\lams@source\m@ne\else + \if#1?\lams@source\z@\else + \if#1V\lams@source\tw@\else + \if#1^\lams@source\thr@@\else + \if#1'\lams@source6 \else + \if#1`\lams@source7 \else + \if#1J\lams@source8 \else + \if#1L\lams@source9 \else + \if#1S\lams@source12 \else + \if#1A\lams@source13 \else + \@latexerr{Invalid lamsarrow source style: #1}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\lamstarget#1{% + \if#10\lams@target\m@ne\else + \if#1?\lams@target\z@\else + \if#1^\lams@target\tw@\else + \if#1V\lams@target\thr@@\else + \if#1'\lams@target4 \else + \if#1`\lams@target5 \else + \if#1J\lams@target\ten@ \else + \if#1L\lams@target11 \else + \if#1S\lams@target12 \else + \if#1A\lams@target13 \else + \@latexerr{Invalid lamsarrow target style: #1}% + \fi\fi\fi\fi\fi\fi\fi\fi\fi\fi} +\def\lamsshaft#1{% + \if#10\lams@shaft\m@ne\else + \if#1?\lams@shaft\z@\else + \if#1-\lams@shaft\@ne\else + \if#1.\lams@shaft\tw@\else + \if#1=\lams@shaft\thr@@\else + \@latexerr{Invalid lamsarrow shaft style: #1}% + \fi\fi\fi\fi\fi} + + +%%%%%%%%%%%%%%%%%%%% \lams@slope +% +% Utility macro to calculate arrow shaft character in lamstex arrow +% fonts, given the x- and y-dimensions of the raw arrow. +% +% EXTERNAL VARS USED +% +% \lams@firstx \lams@lastx \lams@firsty \lams@lasty +% \ifN@ \ifE@ +% +% EXTERNAL VARS COMPUTED +% +% \lams@tani \lams@tanii \lams@ang +% +% INTERNAL VARS USED +% +% \lams@slopei \lams@slopeii +% \lams@tanip \lams@taniip \lams@slopeip \lams@slopeiip +% \count@ \lams@extra + +\newcount\lams@tani +\newcount\lams@tanip +\newcount\lams@tanii +\newcount\lams@taniip +\newdimen\lams@slopei +\newdimen\lams@slopeip +\newdimen\lams@slopeii +\newdimen\lams@slopeiip +\newcount\lams@ang +\newcount\lams@extra + +\def\lams@slopeselect{% + \\161\\152\\143\\134\\255\\126\\357\\238\\349\\45{10}% + \\56{11}\\11{12}\\65{13}\\54{14}\\43{15}\\32{16}\\53{17}% + \\21{18}\\52{19}\\31{20}\\41{21}\\51{22}\\61{23}} + +\def\lams@slope{{\lams@slopei\lams@lasty + \advance\lams@slopei-\lams@firsty + \ifN@\else\multiply\lams@slopei\m@ne\fi + \lams@slopeii\lams@lastx\advance\lams@slopeii-\lams@firstx + \ifE@\else\multiply\lams@slopeii\m@ne\fi + \ifdim\lams@slopeii<\z@ + \global\lams@tani6 \global\lams@tanii\@ne\global\lams@ang23 + \else + \dimen@\lams@slopei\multiply\dimen@6 + \ifdim\dimen@<\lams@slopeii + \global\lams@tani\@ne\global\lams@tanii6 \global\lams@ang\@ne + \else + \dimen@\lams@slopeii\multiply\dimen@6 + \ifdim\dimen@<\lams@slopei + \global\lams@tani6 \global\lams@tanii\@ne\global\lams@ang23 + \else + \global\lams@tanip\z@\global\lams@taniip\@ne + \def\\##1##2##3{\global\lams@ang##3\relax + \lams@slopeip\lams@slopei\lams@slopeiip\lams@slopeii + \multiply\lams@slopeiip##1\relax + \multiply\lams@slopeip##2\relax + \ifdim\lams@slopeiip<\lams@slopeip + \global\lams@tanip##1\relax\global\lams@taniip##2\relax + \else + \global\lams@tani##1\relax\global\lams@tanii##2\relax + \def\\####1####2####3{}% + \fi}% + \lams@slopeselect + \lams@slopei\lams@lasty\advance\lams@slopei-\lams@firsty + \ifN@\else\multiply\lams@slopei\m@ne\fi + \multiply\lams@slopei\lams@tanii + \multiply\lams@slopei\lams@taniip + \multiply\lams@slopei\tw@ + \count@\lams@tani\multiply\count@\lams@taniip + \lams@extra\lams@tanip\multiply\lams@extra\lams@tanii + \advance\count@\lams@extra + \lams@slopeii\lams@lastx\advance\lams@slopeii-\lams@firstx + \ifE@\else\multiply\lams@slopeii\m@ne\fi + \multiply\lams@slopeii\count@ + \ifdim\lams@slopei<\lams@slopeii + \global\lams@tani\lams@tanip\global\lams@tanii\lams@taniip + \global\advance\lams@ang\m@ne + \fi + \fi + \fi + \fi}% +} + + +%%%%%%%%%%%%%%%%%%%% \lamsarrow, \lamsvector +% +% User macros for lams arrows. They call \lams@arrow, which sets +% up parameters for \lams@harrow, \lams@varrow, and \lams@darrow. +% +% EXTERNAL VARS USED +% +% \lams@source \lams@target +% +% EXTERNAL VARS COMPUTED +% +% \ifNESW@ \ifN@ \ifE@ +% \lams@center \lams@firstx \lams@firsty \lams@lasty +% \lams@wd \lams@ht +% +% INTERNAL VARS USED +% +% \lams@xsize \lams@ysize + +\newdimen\lams@xsize +\newdimen\lams@ysize + +\def\lamsvector(#1,#2)#3{% + \lams@xsize#3\unitlength\relax + \ifnum#1<\z@\multiply\lams@xsize\m@ne\fi + \lams@ysize\lams@xsize + \ifnum#1=\z@ + \lams@xsize\z@ + \ifnum#2<\z@\multiply\lams@ysize\m@ne\fi + \else + \multiply\lams@ysize#2\relax\divide\lams@ysize#1\relax + \fi + \lams@arrow{\lams@xsize}{\lams@ysize}% +} + +\def\lamsarrow(#1,#2){% + \lams@xsize#1\unitlength\relax\lams@ysize#2\unitlength\relax + \lams@arrow{\lams@xsize}{\lams@ysize}% +} + +\def\lams@switchsides{% + \ifnum\lams@source=6\relax\lams@source7\else + \ifnum\lams@source=7\relax\lams@source6\else + \ifnum\lams@source=8\relax\lams@source9\else + \ifnum\lams@source=9\relax\lams@source8\fi\fi\fi\fi\relax + \ifnum\lams@target=4\relax\lams@target5\else + \ifnum\lams@target=5\relax\lams@target4\else + \ifnum\lams@target=\ten@\relax\lams@target11\else + \ifnum\lams@target=11\relax\lams@target\ten@\fi\fi\fi\fi\relax +} + +\def\lams@arrow#1#2{% + \lams@firstx\z@\lams@firsty\z@ + \lams@lastx#1\relax\lams@lasty#2\relax + \lams@center\z@ + % + % compute direction flags + \N@false\E@false\H@false\V@false + \ifdim\lams@lastx>\z@\E@true\fi + \ifdim\lams@lastx=\z@\V@true\fi + \ifdim\lams@lasty>\z@\N@true\fi + \ifdim\lams@lasty=\z@\H@true\fi + \NESW@false + \ifN@\ifE@\NESW@true\fi\else\ifE@\else\NESW@true\fi\fi + % + % fix up one-sided embellishments, depending on direction + \ifdim\lams@lastx<\z@ \lams@switchsides \fi + \ifdim\lams@lastx=\z@ \ifdim\lams@lasty<\z@ \lams@switchsides \fi\fi + % + % compute shaft char info with help of \lams@slope macro + \ifH@\else\ifV@\else + \lams@slope + \ifnum\lams@tani>\lams@tanii + \lams@ht\ten@\p@\lams@wd\ten@\p@ + \multiply\lams@wd\lams@tanii\divide\lams@wd\lams@tani + \else + \lams@wd\ten@\p@\lams@ht\ten@\p@ + \divide\lams@ht\lams@tanii\multiply\lams@ht\lams@tani + \fi + \fi\fi + % + % adjust arrow placement for source and target style + \ifH@\else\ifV@\else + \ifnum\lams@target=\thr@@ + \ifN@\advance\lams@lasty-.3\lams@ht + \else\advance\lams@lasty.3\lams@ht\fi + \fi + \ifnum\lams@source=\tw@ + \ifE@\advance\lams@firstx.3\lams@ht + \else\advance\lams@firstx-.3\lams@ht\fi + \fi + \ifnum\lams@target=12 + \ifN@\advance\lams@lasty-\lams@ht + \else\advance\lams@lasty\lams@ht\fi + \fi + \fi\fi + % + % draw arrow, special-casing horizontal and vertical ones + \ifH@ \lams@harrow + \else\ifV@ \lams@varrow + \else \lams@darrow + \fi\fi +} + + +%%%%%%%%%%%%%%%%%%%% \lams@darrow +% +% Does actual drawing of diagonal arrows, +% with the help of \lams@cos. +% +% EXTERNAL VARS USED +% +% \lams@shaft \lams@source \lams@target +% +% \ifNESW@ \ifN@ \ifE@ (computed by \lams@arrow) +% \lams@center \lams@firstx \lams@firsty \lams@lasty (ibid) +% \lams@wd \lams@ht (computed by \lams@arrow) +% +% \lams@ang \lams@tani \lams@tanii (computed by \lams@slope) +% +% \lamsfont@i \lamsfont@ii \lamsfont@iii \lamsfont@iv \lamsfont@v +% +% INTERNAL VARS USED +% +% \lams@sl (from \lams@ang, used by \lams@cos) +% \lams@S \lams@T (from \lams@ang, \lams@source, \lams@target) +% \lams@shift (+/- \lams@firsty) \lams@adj +% \lams@goal (+/-(\lams@lasty-\lams@firsty)) +% \dimen@ \dimen@ii \count@ (computed by \lams@cos) +% \arrowfont@ \lams@shaftbox \lams@ZERO + +\newdimen\lams@goal +\newdimen\lams@shift +\newdimen\lams@adj +\newcount\lams@T +\newcount\lams@S +\newbox\lams@shaftbox +\newcount\lams@sl +\newbox\lams@ZERO + +\def\lams@next{\ifN@\let\next@\raise\else\let\next@\lower\fi} + +\def\lams@cos#1{% + \ifnum\lams@tani<\lams@tanii + \dimen@#1% + \ifnum\lams@sl<8 \count@9 + \else \ifnum\lams@sl<12 \count@8 + \else \count@7 \fi\fi + \multiply\dimen@\count@\divide\dimen@\ten@ + \dimen@ii\dimen@\multiply\dimen@ii\lams@tani + \divide\dimen@ii\lams@tanii + \else + \dimen@ii#1% + \count@-\lams@sl\advance\count@24 + \ifnum\count@<8 \count@9 \else \ifnum\count@<12 \count@8 + \else\count@7 \fi\fi + \multiply\dimen@ii\count@\divide\dimen@ii\ten@ + \dimen@\dimen@ii\multiply\dimen@\lams@tanii + \divide\dimen@\lams@tani + \fi +} + +\def\lams@darrow{\lams@sl\lams@ang + \ifNESW@ + \ifnum\lams@ang<\ten@ + \let\arrowfont@\lamsfont@i\global\advance\lams@ang\m@ne + \global\multiply\lams@ang13 + \else + \ifnum\lams@ang<19 + \let\arrowfont@\lamsfont@ii\global\advance\lams@ang-\ten@ + \global\multiply\lams@ang13 + \else + \let\arrowfont@\lamsfont@iii\global\advance\lams@ang-19 + \global\multiply\lams@ang13 + \fi\fi + \lams@T\lams@ang + \else + \ifnum\lams@ang<5 + \let\arrowfont@\lamsfont@iii\global\advance\lams@ang\m@ne + \global\multiply\lams@ang13 \global\advance\lams@ang65 + \else + \ifnum\lams@ang<14 + \let\arrowfont@\lamsfont@iv\global\advance\lams@ang-5 + \global\multiply\lams@ang13 + \else + \ifnum\lams@ang<23 + \let\arrowfont@\lamsfont@v\global\advance\lams@ang-14 + \global\multiply\lams@ang13 + \else + \let\arrowfont@\lamsfont@i\global\lams@ang117 + \fi\fi\fi + \ifnum\lams@ang=117 \lams@T115 \else\lams@T\lams@ang\fi + \fi + \lams@S\lams@T + \ifE@ + \ifnum\lams@target=\z@\advance\lams@T\tw@ + \else\ifnum\lams@target=13 \advance\lams@T\tw@ + \else\advance\lams@T\lams@target\fi\fi + \ifnum\lams@source=\z@ + \else\ifnum\lams@source=13 \advance\lams@S\thr@@ + \else\advance\lams@S\lams@source\fi\fi + \else + \ifcase\lams@target\advance\lams@T\thr@@\or + \or\advance\lams@T\thr@@\or + \advance\lams@T\tw@\or\advance\lams@T6 \or\advance\lams@T7 + \or\or\or\or\or\advance\lams@T8 \or\advance\lams@T9 \or + \advance\lams@T12 \or\advance\lams@T\thr@@\fi + \ifcase\lams@source\or\or\advance\lams@S\thr@@ + \or\advance\lams@S\tw@\or\or\or\advance\lams@S4 + \or\advance\lams@S5 \or\advance\lams@S\ten@ + \or\advance\lams@S11 \or\or\or\advance\lams@S12 + \or\advance\lams@S\tw@\fi + \fi + \ifcase\lams@shaft\or\or\global\advance\lams@ang\@ne\else\fi + \ifN@\lams@shift\lams@firsty\else\lams@shift-\lams@firsty\fi + \ifE@\else\advance\lams@shift\lams@ht\fi + \lams@goal\lams@lasty\advance\lams@goal-\lams@firsty + \ifN@\else\multiply\lams@goal\m@ne\fi + \setbox\lams@shaftbox\hbox{\arrowfont@\char\lams@ang}% + \ifnum\lams@shaft=\thr@@ + \lams@cos{1.5\p@}% + \setbox\lams@shaftbox\hbox to\wd\lams@shaftbox{\arrowfont@ + \rlap{\hskip\dimen@ii + \smash{\ifNESW@\let\next@\lower\else\let\next@\raise\fi + \next@\dimen@\hbox{\arrowfont@\char\lams@ang}}}% + \rlap{\hskip-\dimen@ii + \smash{\ifNESW@\let\next@\raise\else\let\next@\lower\fi + \next@\dimen@\hbox{\arrowfont@\char\lams@ang}}}\hfil}% + \fi + \rlap{\smash{\hskip\lams@center\hskip\lams@firstx + \ifnum\lams@shaft=\m@ne + \else + \ifnum\lams@shaft=\thr@@ + \else + \ifnum\lams@source=\m@ne + \else + \ifnum\lams@source=\z@ + \else + \setbox\lams@ZERO\hbox{% + \ifnum\lams@ang=117 \lamsfont@v\else\arrowfont@\fi + \char\lams@S}% + \ifNESW@ + \ifnum\lams@source=\tw@ + \dimen@\lams@shift\advance\dimen@-\lams@ht + \ifN@\hskip-\wd\lams@ZERO\fi + \lams@next + \next@\dimen@\copy\lams@ZERO + \ifN@\else\hskip-\wd\lams@ZERO\fi + \else + \lams@next + \ifN@\else\hskip-\wd\lams@ZERO\fi + \next@\lams@shift\copy\lams@ZERO + \ifN@\hskip-\wd\lams@ZERO\fi + \fi + \ifnum\lams@source=12 + \advance\lams@shift\lams@ht\advance\lams@goal-\lams@ht + \ifN@\hskip\wd\lams@ZERO\else\hskip-\wd\lams@ZERO\fi + \fi + \ifnum\lams@source=13 + \lams@cos{\thr@@\p@}% + \ifN@\hskip\dimen@\else\hskip-\wd\lams@ZERO\hskip-\dimen@\fi + \lams@adj\lams@shift\advance\lams@adj\dimen@ii + \lams@next + \next@\lams@adj\copy\lams@ZERO + \ifN@\hskip-\dimen@\hskip-\wd\lams@ZERO\else\hskip\dimen@\fi + \fi + \else + \ifN@\hskip-\wd\lams@ZERO\fi + \ifnum\lams@source=\tw@ + \ifN@\hskip\wd\lams@ZERO\else\hskip-\wd\lams@ZERO\fi + \dimen@\lams@shift\advance\dimen@-\lams@ht + \lams@next + \next@\dimen@\copy\lams@ZERO + \ifN@\hskip-\wd\lams@ZERO\fi + \else + \lams@next + \next@\lams@shift\copy\lams@ZERO + \ifN@\else\hskip-\wd\lams@ZERO\fi + \fi + \ifnum\lams@source=12 + \advance\lams@shift\lams@ht\advance\lams@goal-\lams@ht + \ifN@\hskip-\wd\lams@ZERO\else\hskip\wd\lams@ZERO\fi + \fi + \ifnum\lams@source=13 + \lams@cos{\thr@@\p@}% + \ifN@\hskip-\wd\lams@ZERO\hskip-\dimen@\else\hskip\dimen@\fi + \lams@adj\lams@shift\advance\lams@adj\dimen@ii + \lams@next + \next@\lams@adj\copy\lams@ZERO + \ifN@\hskip\dimen@\else\hskip-\dimen@\hskip-\wd\lams@ZERO\fi + \fi + \fi + \fi\fi\fi\fi + \ifnum\lams@shaft=\m@ne + \else + \loop + \ifdim\lams@goal>\lams@ht + \ifE@\else\hskip-\lams@wd\fi + \lams@next + \next@\lams@shift\copy\lams@shaftbox + \ifE@\else\hskip-\lams@wd\fi + \advance\lams@shift\lams@ht\advance\lams@goal-\lams@ht + \repeat + \ifdim\lams@goal>\z@ + \dimen@\lams@ht\advance\dimen@-\lams@goal + \divide\dimen@\lams@tani\multiply\dimen@\lams@tanii + \ifE@\hskip-\dimen@\else\hskip-\lams@wd\hskip\dimen@\fi + \lams@adj\lams@shift\advance\lams@adj-\lams@ht + \advance\lams@adj\lams@goal + \lams@next + \next@\lams@adj\copy\lams@shaftbox + \ifE@\else\hskip-\lams@wd\fi + \else + \lams@adj\lams@shift\advance\lams@adj-\lams@ht + \fi + \fi + \ifnum\lams@shaft=\m@ne + \else + \ifnum\lams@shaft=\thr@@ + \else + \ifnum\lams@target=\m@ne + \else + \setbox\lams@ZERO + \hbox{\ifnum\lams@ang=117 + \lamsfont@v\else\arrowfont@\fi\char\lams@T}% + \ifnum\lams@target=\thr@@ + \advance\lams@adj\lams@ht + \ifE@\else\ifN@\hskip-\lams@wd\else\hskip-\wd\lams@ZERO\fi\fi + \else + \ifnum\lams@target=12 + \advance\lams@adj\lams@ht + \ifE@\else\ifN@\hskip-\lams@wd\else\hskip-\wd\lams@ZERO\fi\fi + \else + \ifE@\hskip-\wd\lams@ZERO\fi + \fi\fi + \lams@next + \next@\lams@adj\copy\lams@ZERO + \ifnum\lams@target=13 + \hskip-\wd\lams@ZERO + \lams@cos{\thr@@\p@}% + \ifE@\hskip-\dimen@\else\hskip\dimen@\fi + \advance\lams@adj-\dimen@ii + \lams@next + \next@\lams@adj\box\lams@ZERO + \fi + \fi\fi\fi}}% +} + + +%%%%%%%%%%%%%%%%%%%% \lams@harrow +% +% Performs actual drawing of horizontal arrows. +% +% EXTERNAL VARS USED +% +% \lams@shaft \lams@source \lams@target +% +% \ifE@ (computed by \lams@arrow) +% \lams@center \lams@firstx \lams@lastx (ibid) +% \lamsfont@i \lamsfont@ii (lams fonts) +% +% \lams@axis (to correct centering of head/tail symbol chars) +% +% INTERNAL VARS USED +% +% \dimen@ \dimen@ii +% \leads@ \lams@ZERO + +\newdimen\lams@axis \lams@axis90\p@\divide\lams@axis36 + +\def\lams@harrow{\dimen@\lams@lastx\advance\dimen@-\lams@firstx + \ifE@\let\next@\rlap\else\multiply\dimen@\m@ne\let\next@\llap\fi + \next@{\ifE@\hskip\lams@center\hskip\lams@firstx\fi + \smash{\raise-\lams@axis\hbox to\dimen@ + {\lamsfont@ii + \ifnum\lams@shaft=\m@ne\else\ifnum\lams@shaft=\thr@@\else + \ifE@ + \ifnum\lams@source=\m@ne + \else + \ifcase\lams@source\or\or\char118 \or\char117 \or + \or\or\char119 \or\char120 \or\char121 \or\char122 \or + \or\or\lamsfont@i\char125 \or + \char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi + \fi + \else + \ifnum\lams@target=\m@ne + \else + \ifcase\lams@target\char117 \or\or\char117 \or\char118 \or + \char119 \or\char120 \or\or\or\or\or\char121 \or + \char122 \or\lamsfont@i\char125 + \or\char117 \hskip\thr@@\p@\char117 \hskip-\thr@@\p@\fi + \fi + \fi + \fi\fi + \dimen@\lams@axis\advance\dimen@.2\p@ + \dimen@ii\lams@axis\advance\dimen@ii-.2\p@ + \ifnum\lams@shaft=\m@ne + \let\leads@\null + \else + \ifcase\lams@shaft + \def\leads@{\hrule\@height\dimen@\@depth-\dimen@ii}\or + \def\leads@{\hrule\@height\dimen@\@depth-\dimen@ii}\or + \def\leads@{\hbox to\ten@\p@{% + \leaders\hrule\@height\dimen@\@depth-\dimen@ii\hfil + \hfil + \leaders\hrule\@height\dimen@\@depth-\dimen@ii + \hskip\z@ plus2fil\relax + \hfil + \leaders\hrule\@height\dimen@\@depth-\dimen@ii\hfil}}\or + \def\leads@{\hbox{\hbox to\ten@\p@{% + \dimen@\lams@axis\advance\dimen@1.2\p@ + \dimen@ii\dimen@\advance\dimen@ii-.4\p@ + \leaders\hrule\@height\dimen@\@depth-\dimen@ii\hfil}% + \kern-\ten@\p@ + \hbox to\ten@\p@{\dimen@\lams@axis\advance\dimen@-1.2\p@ + \dimen@ii\dimen@\advance\dimen@ii-.4\p@ + \leaders\hrule\@height\dimen@\@depth-\dimen@ii\hfil}}}\fi + \fi + \cleaders\leads@\hfil + \ifnum\lams@shaft=\m@ne\else\ifnum\lams@shaft=\thr@@\else + \lamsfont@i + \ifE@ + \ifnum\lams@target=\m@ne + \else + \ifcase\lams@target\char119 \or\or\char119 \or\char120 \or + \char121 \or\char122 \or \or\or\or\or\char123 \or + \char124 \or\char125 \or + \char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi + \fi + \else + \ifcase\lams@source\or\or\char120 \or\char119 \or + \or\or\char121 \or\char122 \or\char123 \or + \char124 \or\or\or\char125 \or + \char119 \hskip-\thr@@\p@\char119 \hskip\thr@@\p@\fi + \fi + \fi\fi}}% + \ifE@\else\hskip-\lams@firstx\hskip-\lams@center\fi}% +} + + +%%%%%%%%%%%%%%%%%%%% \lams@varrow +% +% Performs actual drawing of vertical arrows. +% +% EXTERNAL VARS USED +% +% \lams@shaft \lams@source \lams@target +% +% \ifN@ (computed by \lams@arrow) +% \lams@center \lams@firsty \lams@lasty (ibid) +% +% \lamsfont@iii \lamsfont@iv (lams fonts) +% +% INTERNAL VARS USED +% +% \dimen@ \dimen@ii +% \leads@ \lams@ZERO + +\def\lams@varrow{\dimen@\lams@lasty\advance\dimen@-\lams@firsty + \ifN@\else\multiply\dimen@\m@ne\fi + \setbox\lams@ZERO\vbox to\dimen@ + {\ifnum\lams@shaft=\m@ne\else\ifnum\lams@shaft=\thr@@\else + \hbox{\lamsfont@iii + \ifN@ + \ifnum\lams@target=\m@ne + \else + \ifcase\lams@target\char117 \or\or\char117 \or + \char118 \or\char119 \or\char120 \or\or\or\or + \or\char121 \or\char122 \or\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@ + \hbox{\char117}\vskip-\thr@@\p@}\fi + \fi + \else + \ifcase\lams@source\or\or\char118 \or\char117 \or\or + \or\char119 \or\char120 \or\char121 \or\char122 \or + \or\or\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip\thr@@\p@ + \hbox{\char117}\vskip-\thr@@\p@}\fi + \fi}% + \nointerlineskip + \fi\fi + \ifnum\lams@shaft=\m@ne + \let\leads@\null + \else + \ifcase\lams@shaft\let\leads@\vrule\or\let\leads@\vrule\or + \def\leads@{\vbox to\ten@\p@{% + \hrule\@height1.67\p@\@depth\z@\@width.4\p@ + \vfil + \hrule\@height3.33\p@\@depth\z@\@width.4\p@ + \vfil + \hrule\@height1.67\p@\@depth\z@\@width.4\p@}}\or + \def\leads@{\hbox{\vrule\@height\p@\hskip\tw@\p@\vrule}}\fi + \fi + \cleaders\leads@\vfill\nointerlineskip + \ifnum\lams@shaft=\m@ne\else\ifnum\lams@shaft=\thr@@\else + \hbox{\lamsfont@iv + \ifN@ + \ifcase\lams@source\or\or\char118 \or\char117 \or + \or\or\char119 \or\char120 \or\char121 \or\char122 \or + \or\or\lamsfont@iii\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@ + \hbox{\char117}\vskip\thr@@\p@}\fi + \else + \ifnum\lams@target=\m@ne + \else + \ifcase\lams@target\char117 \or\or\char117 \or\char118 \or + \char119 \or\char120 \or\or\or\or\or\char121 \or + \char122 \or\lamsfont@iii\char123 \or + \vbox{\hbox{\char117}\nointerlineskip\vskip-\thr@@\p@ + \hbox{\char117}\vskip\thr@@\p@}\fi + \fi + \fi}% + \fi\fi}% + \ifN@ + \dimen@ii\lams@firsty + \else + \dimen@ii-\lams@firsty\advance\dimen@ii\ht\lams@ZERO + \multiply\dimen@ii\m@ne + \fi + \rlap{\smash{\hskip\lams@center\raise\dimen@ii\box\lams@ZERO}}% +} + + |