summaryrefslogtreecommitdiff
path: root/macros/lamstex/inputs/acompat.tex
diff options
context:
space:
mode:
Diffstat (limited to 'macros/lamstex/inputs/acompat.tex')
-rw-r--r--macros/lamstex/inputs/acompat.tex233
1 files changed, 233 insertions, 0 deletions
diff --git a/macros/lamstex/inputs/acompat.tex b/macros/lamstex/inputs/acompat.tex
new file mode 100644
index 0000000000..9ac20a9e98
--- /dev/null
+++ b/macros/lamstex/inputs/acompat.tex
@@ -0,0 +1,233 @@
+% ACOMPAT.TEX VERSION 2.0
+% COPYRIGHT (C) 1991 BY THE TEXPLORATORS CORPORATION
+% ALL RIGHTS RESERVED
+
+% THIS FILE SHOULD NOT BE CHANGED IN ANY WAY.
+
+%% This file allows certain modifications that might be desired
+%% if an old AmS-TeX file has to be run through LamS-TeX.
+
+%% First of all
+%%
+%% \manualtags
+%%
+%% causes \tag to revert to its AmS-TeX usage: instead of
+%% simply typing
+%%
+%% $$ x=y \tag $$
+%%
+%% and expecting LamS-TeX to supply the \tag number automatically,
+%% one would type an explicit \tag like
+%%
+%% $$ x=y \tag 3 $$
+%%
+%% which would give the tag (3) [the formatting of the tag
+%% number can still be changed with \newstyle\tag].
+%%
+%% It is possible to specify \manualtags within a group if
+%% only part of a paper uses the AmS-TeX conventions.
+
+%% Similarly, the command
+%%
+%% \amstexCDs
+%%
+%% makes \CD act exactly as in AmS-TeX, with no &'s, and
+%% with @>>> and @<<< for horizontal arrows, @ AAA and @ VVV for
+%% vertical arrows, @. for an `empty arrow', @= for a horizontal
+%% long equal sign, and @| or @\vert for a vertical long equal sign.
+%% Moreover, @))) and @((( can be used for @>>> and @<<< --- an
+%% addition made in version 2.0 of AmS-TeX.
+%%
+%% \amstexCDs can also be used within a group, in case some \CD's
+%% are in the AmS-TeX format, while others are in LamS-TeX format.
+
+
+%% By the way, once this file has been \input, @>>> and @<<<
+%% can even be used in math mode, outside of commutative diagrams,
+%% just as in AmS-TeX, giving the same result as LamS-TeX's
+%% \East and \West. [But you can't use the alternatives @((( and @)))
+%% this way.]
+
+
+%% Although \amstexCDs allows \CD's from an old AmS-TeX file to
+%% be used with LamS-TeX, note that these rectangular \CD's will
+%% not look the same as those produced by LamS-TeX. However,
+%% there is also \OCD...\endOCD (`old \CD'), which gives exactly the
+%% same diagrams as ordinary LamS-TeX diagrams, but which requires
+%% only rather modest amounts of editing. For example, instead of
+%%
+%% \amstexCDs
+%% $$
+%% \CD
+%% G @)\alpha)\beta) H @= K @>\alpha>\beta > L\\
+%% @VfVgV @AfAgA @| @. \\
+%% G' @(\alpha(\beta( H' @. K' @<\alpha<\beta< L'
+%% \endCD
+%% $$
+%%
+%% you can type
+%%
+%% $$
+%% \OCD
+%% G @VfVgV @)\alpha)\beta) H @= K @>\alpha>\beta > L\\
+%% %
+%% G' @(\alpha(\beta( H' @AfAgA @. K' @| @<\alpha<\beta< L'
+%% \endOCD
+%% $$
+%%
+%% and get a commutative diagram that looks exactly like those normally
+%% produced by LamS-TeX.
+%%
+%% The changes that have to be made are covered by the following rules:
+%%
+%% (1) The `rows' with vertical arrows are eliminated.
+%% (2) Vertical arrows should instead be placed after the vertex at
+%% which they start. In other words, @VVV arrows should be placed
+%% after the vertex above, and @AAA arrows should be placed after
+%% the vertex below; a vertical long equal sign, @| or @\vert, is
+%% to be treated like @AAA (i.e., it is thought of as pointing
+%% upwards).
+%% (3) These vertical arrows always go BEFORE any horizontal arrow
+%% at the vertex.
+%% (4) Horizontal `empty arrows' are retained, but vertical ones
+%% are eliminated.
+%%
+%% Note that \OCD...\endOCD will give \tsize labels, the default for
+%% commutative diagrams in LamS-TeX, but if \amstexCD's is specified,
+%% then \CD...\endCD gives \ssize labels, the default in AmS-TeX.
+%% If you want \OCD...\endOCD to give \ssize labels, type
+%% \ssizeCDlabels\OCD ... \endOCD.
+
+
+%% In LamS-TeX, \endCD is actually part of the `syntax' for \CD, not
+%% an independent control sequence. So if you tried
+%%
+%% \define\cd{\CD}
+%% \define\endcd{\endCD}
+%%
+%% then \cd...\endcd would not work. However, you could
+%%
+%% \define\cd#1\endcd{\CD#1\endCD}
+%%
+%% and then you could use \cd...\endcd instead of \CD...\endCD.
+%% The same holds for \OCD...\endOCD. So you could, for example,
+%%
+%% \define\ocd#1\endocd{\ssizeCDlabels\OCD#1\endOCD}
+%%
+%% and then use \ocd...\endocd to have \ssizeCDlabels automatically.
+%% (You could even
+%%
+%% \predefine\OCDoriginal{\OCD}
+%% \redefine\OCD#1\endOCD{\ssizeCDlabels\OCDoriginal#1\endOCD}
+%%
+%% if you wanted to use \OCD...\endOCD and have \ssizeCDlabels
+%% automatically.)
+
+
+\catcode`\@=11
+\let\alloc@\alloc@
+\def\manualtags{\def\maketag@@@@##1\maketag@{\hbox{\tag@S{\tag@F
+ \ignorespaces##1\unskip}}}}
+\let\CD@\CD
+\atdef@>#1>#2>{\ampersand@
+ \setboxz@h{$\m@th\ssize\;{#1}\;\;$}%
+ \setbox\tw@\hbox{$\m@th\ssize\;{#2}\;\;$}%
+ \setbox4=\hbox{$\m@th#2$}%
+ \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
+ \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
+ \ifdim\wd\tw@>\bigaw@\global\bigaw@\wd\tw@\fi
+ \ifCD@\hskip.5em\fi
+ \ifdim\wd4 >\z@
+ \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{#1}_{#2}}%
+ \else\mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{#1}}\fi
+ \ifCD@\hskip.5em\fi
+ \ampersand@}%
+\atdef@<#1<#2<{\ampersand@\setboxz@h{$\m@th\ssize\;\;{#1}\;$}%
+ \setbox\tw@\hbox{$\m@th\ssize\;\;{#2}\;$}\setbox4=\hbox{$\m@th#2$}%
+ \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
+ \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
+ \ifdim\wd\tw@>\bigaw@\global\bigaw@\wd\tw@\fi
+ \ifCD@\hskip.5em\fi
+ \ifdim\wd4 >\z@
+ \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{#1}_{#2}}\else
+ \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{#1}}\fi
+ \ifCD@\hskip.5em\fi\ampersand@}
+\let\ampersand@\relax
+\newdimen\minCDaw@
+\minCDaw@2.5pc
+\def\minCDarrowwidth#1{\RIfMIfI@\onlydmatherr@\minCDarrowwidth
+ \else\minCDaw@#1\relax\fi\else\onlydmatherr@\minCDarrowwidth\fi}
+\newdimen\bigaw@
+\newif\ifCD@
+\def\amstexCDs{%
+ \atdef@ A##1A##2A{\llap{$\m@th\vcenter{\hbox
+ {$\ssize##1$}}$}\Big\uparrow\rlap{$\m@th\vcenter{\hbox{$\ssize##2$}}$}&&}%
+ \atdef@ V##1V##2V{\llap{$\m@th\vcenter{\hbox{$\ssize##1$}}$}%
+ \Big\downarrow\rlap{$\m@th\vcenter{\hbox{$\ssize##2$}}$}&&}%
+ \atdef@={&\hskip.5em\mathrel
+ {\vbox{\hrule width\minCDaw@\vskip3\ex@\hrule width
+ \minCDaw@}}\hskip.5em&}%
+ \atdef@|{\Big\Vert&&}%
+ \atdef@\vert{\Big\Vert&&}%
+ \def\pretend##1\haswidth##2{\setboxz@h{$\m@th\scriptstyle{##2}$}\hbox
+ to\wdz@{\hfill$\m@th\scriptstyle{##1}$\hfill}}%
+ \atdef@.{&&}%
+ \atdef@)##1)##2){\ampersand@
+ \setboxz@h{$\m@th\ssize\;{##1}\;\;$}%
+ \setbox\tw@\hbox{$\m@th\ssize\;{##2}\;\;$}%
+ \setbox4=\hbox{$\m@th##2$}%
+ \ifCD@
+ \global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
+ \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
+ \ifdim\wd\tw@>\bigaw@\global\bigaw@\wd\tw@\fi
+ \ifCD@\hskip.5em\fi
+ \ifdim\wd4 >\z@
+ \mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{##1}_{##2}}%
+ \else\mathrel{\mathop{\hbox to\bigaw@{\rightarrowfill}}\limits^{##1}}\fi
+ \ifCD@\hskip.5em\fi
+ \ampersand@}%
+ \atdef@(##1(##2({\ampersand@\setboxz@h{$\m@th\ssize\;\;{##1}\;$}%
+ \setbox\tw@\hbox{$\m@th\ssize\;\;{##2}\;$}\setbox4=\hbox{$\m@th##2$}%
+ \ifCD@\global\bigaw@\minCDaw@\else\global\bigaw@\minaw@\fi
+ \ifdim\wdz@>\bigaw@\global\bigaw@\wdz@\fi
+ \ifdim\wd\tw@>\bigaw@\global\bigaw@\wd\tw@\fi
+ \ifCD@\hskip.5em\fi
+ \ifdim\wd4 >\z@
+ \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{##1}_{##2}}\else
+ \mathrel{\mathop{\hbox to\bigaw@{\leftarrowfill}}\limits^{##1}}\fi
+ \ifCD@\hskip.5em\fi\ampersand@}%
+ \def\CD{\bgroup
+ \vspace@\relax\iffalse{\fi\let\ampersand@&\iffalse}\fi
+ \CD@true\vcenter\bgroup\Let@\tabskip\z@skip\baselineskip20\ex@
+ \lineskip3\ex@\lineskiplimit3\ex@\halign\bgroup
+ &\hfill$\m@th####$\hfill\crcr}
+ \def\endCD{\crcr\egroup\egroup\egroup}%
+}
+\def\OCD{\bgroup
+ \DN@{\let\leftparens@}\expandafter\next@\csname\string @(\endcsname
+ \atdef@.{&}%
+ \atdef@)##1)##2){\options@true\begingroup\optioncodes@
+ \L@{##1}\l@{##2}\leftparens@1,0)&}%
+ \atdef@>##1>##2>{\options@true\begingroup\optioncodes@
+ \L@{##1}\l@{##2}\leftparens@1,0)&}%
+ \atdef@(##1(##2({\options@true\begingroup\optioncodes@
+ \L@{##1}\l@{##2}\zero@ h\one@ e\leftparens@1,0)&}%
+ \atdef@<##1<##2<{\options@true\begingroup\optioncodes@
+ \L@{##1}\l@{##2}\zero@ h\one@ e\leftparens@1,0)&}%
+ \atdef@ A##1A##2A{\options@true\begingroup\optioncodes@
+ \L@{##1}\l@{##2}\leftparens@0,1)}%
+ \atdef@ V##1V##2V{\options@true\begingroup\optioncodes@
+ \L@{##1}\l@{##2}\leftparens@0,-1)}%
+ \atdef@={\options@true\begingroup\optioncodes@
+ \a@=\leftparens@1,0)&}%
+ \atdef@|{\options@true\begingroup\optioncodes@
+ \a@=\leftparens@0,1)}%
+ \atdef@\vert{\options@true\begingroup\optioncodes@
+ \a@=\leftparens@0,1)}%
+ \def\next@##1\endOCD{\CD@##1\endCD\egroup}%
+ \next@}
+\def\alloc@#1#2#3#4#5{\global\advance\count1#1by\@ne
+ \ch@ck#1#4#2\allocationnumber=\count1#1
+ \global#3#5=\allocationnumber
+ \wlog{\string#5=\string#2\the\allocationnumber}}
+\catcode`\@=\active