home *** CD-ROM | disk | FTP | other *** search
/ Fresh Fish 8 / FreshFishVol8-CD1.bin / useful / text / tex / pastex / macros / latex2e / inputs / array.sty < prev    next >
Text File  |  1994-06-09  |  11KB  |  323 lines

  1. %% 
  2. %% This is file `array.sty', generated 
  3. %% on <1994/6/9> with the docstrip utility (2.2h).
  4. %% 
  5. %% The original source files were:
  6. %% 
  7. %% array.dtx  (with options: `package,ncols')
  8. %% 
  9. %% IMPORTANT NOTICE: 
  10. %% This file is part of the `tools' bundle 
  11. %% in the LaTeX2e distribution. 
  12. %% 
  13. %% You are not allowed to distribute this file. 
  14. %% For distribution of the original source see 
  15. %% the copyright notice in the source file, and 
  16. %% in the file readme.txt distributed with the 
  17. %% tools bundle. 
  18. %% 
  19. %% Package `array' to use with LaTeX 2e
  20. %% Copyright (C) 1989-1994 Frank Mittelbach, all rights reserved.
  21. \NeedsTeXFormat{LaTeX2e}[1994/05/13]
  22. \ProvidesPackage{array}
  23.          [1994/06/01 v2.2e Tabular extension package (FMi)]
  24. %% \CharacterTable
  25. %%  {Upper-case    \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
  26. %%   Lower-case    \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
  27. %%   Digits        \0\1\2\3\4\5\6\7\8\9
  28. %%   Exclamation   \!     Double quote  \"     Hash (number) \#
  29. %%   Dollar        \$     Percent       \%     Ampersand     \&
  30. %%   Acute accent  \'     Left paren    \(     Right paren   \)
  31. %%   Asterisk      \*     Plus          \+     Comma         \,
  32. %%   Minus         \-     Point         \.     Solidus       \/
  33. %%   Colon         \:     Semicolon     \;     Less than     \<
  34. %%   Equals        \=     Greater than  \>     Question mark \?
  35. %%   Commercial at \@     Left bracket  \[     Backslash     \\
  36. %%   Right bracket \]     Circumflex    \^     Underscore    \_
  37. %%   Grave accent  \`     Left brace    \{     Vertical bar  \|
  38. %%   Right brace   \}     Tilde         \~}
  39. %%
  40. \def\@addtopreamble#1{\xdef\@preamble{\@preamble #1}}
  41. \def\@testpach{\@chclass
  42.  \ifnum \@lastchclass=6 \@ne \@chnum \@ne \else
  43.   \ifnum \@lastchclass=7 5 \else
  44.    \ifnum \@lastchclass=8 \tw@ \else
  45.     \ifnum \@lastchclass=9 \thr@@
  46.    \else \z@
  47.    \ifnum \@lastchclass = 10 \else
  48.    \edef\@nextchar{\expandafter\string\@nextchar}%
  49.    \@chnum
  50.    \if \@nextchar c\z@ \else
  51.     \if \@nextchar l\@ne \else
  52.      \if \@nextchar r\tw@ \else
  53.    \z@ \@chclass
  54.    \if\@nextchar |\@ne \else
  55.     \if \@nextchar !6 \else
  56.      \if \@nextchar @7 \else
  57.       \if \@nextchar <8 \else
  58.        \if \@nextchar >9 \else
  59.   10
  60.   \@chnum
  61.   \if \@nextchar m\thr@@\else
  62.    \if \@nextchar p4 \else
  63.     \if \@nextchar b5 \else
  64.    \z@ \@chclass \z@ \@preamerr \z@ \fi \fi \fi \fi
  65.    \fi \fi  \fi  \fi  \fi  \fi  \fi \fi \fi \fi \fi \fi}
  66. \def\@xexpast#1*#2#3#4\@@{%
  67.    \@tempcnta #2
  68.    \toks@={#1}\@temptokena={#3}%
  69.    \let\the@toksz\relax \let\the@toks\relax
  70.    \def\@tempa{\the@toksz}%
  71.    \ifnum\@tempcnta >0 \@whilenum\@tempcnta >0\do
  72.      {\edef\@tempa{\@tempa\the@toks}\advance \@tempcnta \m@ne}%
  73.        \let \@tempb \@xexpast \else
  74.        \let \@tempb \@xexnoop \fi
  75.    \def\the@toksz{\the\toks@}\def\the@toks{\the\@temptokena}%
  76.    \edef\@tempa{\@tempa}%
  77.    \expandafter \@tempb \@tempa #4\@@}
  78. \def\prepnext@tok{\advance \count@ \@ne
  79.    \toks\count@{}}
  80. \def\save@decl{\toks\count@ \expandafter{\@nextchar}}
  81. \def\insert@column{%
  82.    \the@toks \the \@tempcnta
  83.    \ignorespaces \@sharp \unskip
  84.    \the@toks \the \count@ \relax}
  85. \newdimen\col@sep
  86. \def\@acol{\@addtopreamble{\hskip\col@sep}}
  87. \def\@mkpream#1{\gdef\@preamble{}\@lastchclass 4 \@firstamptrue
  88.    \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax
  89.    \@xexpast #1*0x\@@
  90.    \count@\m@ne
  91.    \let\the@toks\relax
  92.    \prepnext@tok
  93.    \expandafter \@tfor \expandafter \@nextchar
  94.     \expandafter :\expandafter =\@tempa \do
  95.    {\@testpach
  96.    \ifcase \@chclass \@classz \or \@classi \or \@classii
  97.      \or \save@decl \or \or \@classv \or \@classvi
  98.      \or \@classvii \or \@classviii  \or \@classix
  99.      \or \@classx \fi
  100.    \@lastchclass\@chclass}%
  101.    \ifcase\@lastchclass
  102.    \@acol \or
  103.    \or
  104.    \@acol \or
  105.    \@preamerr \thr@@ \or
  106.    \@preamerr \tw@ \@addtopreamble\@sharp \or
  107.    \or
  108.    \else  \@preamerr \@ne \fi
  109.    \def\the@toks{\the\toks}}
  110. \def\@classx{%
  111.   \ifcase \@lastchclass
  112.   \@acolampacol \or
  113.   \@addamp \@acol \or
  114.   \@acolampacol \or
  115.   \or
  116.   \@acol \@firstampfalse \or
  117.   \@addamp
  118.   \fi}
  119. \def\@classz{\@classx
  120.    \@tempcnta \count@
  121.    \prepnext@tok
  122.    \@addtopreamble{\ifcase \@chnum
  123.       \hfil
  124.       \d@llarbegin
  125.       \insert@column
  126.       \d@llarend \hfil \or
  127.       \d@llarbegin \insert@column \d@llarend \hfil \or
  128.       \hfil\kern\z@ \d@llarbegin \insert@column \d@llarend \or
  129.    $\vcenter
  130.    \@startpbox{\@nextchar}\insert@column \@endpbox $\or
  131.    \vtop \@startpbox{\@nextchar}\insert@column \@endpbox \or
  132.    \vbox \@startpbox{\@nextchar}\insert@column \@endpbox
  133.   \fi}\prepnext@tok}
  134. \def\@classix{\ifnum \@lastchclass = \thr@@
  135.        \@preamerr \thr@@ \fi
  136.        \@classx}
  137. \def\@classviii{\ifnum \@lastchclass >\z@
  138.       \@preamerr 4\@chclass 6 \@classvi \fi}
  139. \def\@arrayrule{\@addtopreamble \vline}
  140. \def\@classvii{\ifnum \@lastchclass = \thr@@
  141.    \@preamerr \thr@@ \fi}
  142. \def\@classvi{\ifcase \@lastchclass
  143.       \@acol \or
  144.       \@addtopreamble{\hskip \doublerulesep}\or
  145.       \@acol \or
  146.       \@classvii
  147.       \fi}
  148. \def\@classii{\advance \count@ \m@ne
  149.    \save@decl\prepnext@tok}
  150. \def\@classv{\save@decl
  151.    \@addtopreamble{\d@llarbegin\the@toks\the\count@\relax\d@llarend}%
  152.    \prepnext@tok}
  153. \def\@classi{\@classvi
  154.    \ifcase \@chnum \@arrayrule \or
  155.       \@classv \fi}
  156. \def\@startpbox#1{\bgroup
  157.   \hsize #1 \@arrayparboxrestore
  158.    \everypar{%
  159.       \vrule \@height \ht\@arstrutbox \@width \z@
  160.       \everypar{}}%
  161.    }
  162. \def\@endpbox{\@finalstrut\@arstrutbox \egroup}
  163. \def\@array[#1]#2{%
  164.   \@tempdima \ht \strutbox
  165.   \advance \@tempdima by\extrarowheight
  166.   \setbox \@arstrutbox \hbox{\vrule
  167.              \@height \arraystretch \@tempdima
  168.              \@depth \arraystretch \dp \strutbox
  169.              \@width \z@}%
  170.   \begingroup
  171.   \@mkpream{#2}%
  172.   \xdef\@preamble{\ialign \@halignto
  173.                   \bgroup \@arstrut \@preamble
  174.                           \tabskip \z@ \cr}%
  175.   \endgroup
  176.   \@arrayleft
  177.   \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi
  178.   \bgroup
  179.   \let \@sharp ##\let \protect \relax
  180.   \lineskip \z@
  181.   \baselineskip \z@
  182.   \m@th
  183.   \let\\ \@arraycr  \let\par\@empty \@preamble}
  184. \newdimen \extrarowheight
  185. \extrarowheight=0pt
  186. \def\@arstrut{\unhcopy\@arstrutbox}
  187. \def\@arraycr{{\ifnum 0=`}\fi
  188.   \@ifstar \@xarraycr \@xarraycr}
  189. \def\@xarraycr{\@ifnextchar [%
  190.   \@argarraycr {\ifnum 0=`{\fi}\cr}}
  191. \def\@argarraycr[#1]{\ifnum0=`{\fi}\ifdim #1>\z@
  192.   \@xargarraycr{#1}\else \@yargarraycr{#1}\fi}
  193. \def\@xargarraycr#1{\unskip
  194.   \@tempdima #1\advance\@tempdima \dp\@arstrutbox
  195.   \vrule \@depth\@tempdima \@width\z@ \cr}
  196. \def\@yargarraycr#1{\cr\noalign{\vskip #1}}
  197. \def\multicolumn#1#2#3{%
  198.    \multispan{#1}\begingroup
  199.    \def\@addamp{\if@firstamp \@firstampfalse \else
  200.                 \@preamerr 5\fi}%
  201.    \@mkpream{#2}\@addtopreamble\@empty
  202.    \endgroup
  203.    \def\@sharp{#3}%
  204.    \@arstrut \@preamble
  205.    \null
  206.    \ignorespaces}
  207. \let\d@llarbegin\begingroup
  208. \let\d@llarend\endgroup
  209. \def\array{\col@sep\arraycolsep
  210.   \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\gdef\@halignto{}%
  211.   \@tabarray}
  212. \def\@tabarray{\@ifnextchar[{\@array}{\@array[c]}}
  213. \def\tabular{\gdef\@halignto{}\@tabular}
  214. \expandafter\def\csname tabular*\endcsname#1{%
  215.       \gdef\@halignto{to#1}\@tabular}
  216. \def\@tabular{%
  217.   \leavevmode
  218.   \hbox \bgroup $\col@sep\tabcolsep \let\d@llarbegin\begingroup
  219.                                     \let\d@llarend\endgroup
  220.   \@tabarray}
  221. \def\endarray{\crcr \egroup \egroup \gdef\@preamble{}}
  222. \def\endtabular{\endarray $\egroup}
  223. \expandafter\let\csname endtabular*\endcsname=\endtabular
  224. \let\@ampacol=\relax        \let\@expast=\relax
  225. \let\@arrayclassiv=\relax   \let\@arrayclassz=\relax
  226. \let\@tabclassiv=\relax     \let\@tabclassz=\relax
  227. \let\@arrayacol=\relax      \let\@tabacol=\relax
  228. \let\@tabularcr=\relax      \let\@@endpbox=\relax
  229. \let\@argtabularcr=\relax   \let\@xtabularcr=\relax
  230. \def\@preamerr#1{\def\@tempd{{..} at wrong position: }%
  231.    \PackageError{array}{%
  232.    \ifcase #1 Illegal pream-token (\@nextchar): `c' used\or %0
  233.     Missing arg: token ignored\or                           %1
  234.     Empty preamble: `l' used\or                             %2
  235.     >\@tempd token ignored\or                               %3
  236.     <\@tempd changed to !{..}\or                            %4
  237.     Only one column-spec. all