summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/tex/latex/kluwer/klutab.sty
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/tex/latex/kluwer/klutab.sty')
-rw-r--r--Master/texmf-dist/tex/latex/kluwer/klutab.sty270
1 files changed, 270 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/kluwer/klutab.sty b/Master/texmf-dist/tex/latex/kluwer/klutab.sty
new file mode 100644
index 00000000000..edc4987c5b9
--- /dev/null
+++ b/Master/texmf-dist/tex/latex/kluwer/klutab.sty
@@ -0,0 +1,270 @@
+%
+%<*other>
+%
+\ifcat a\noexpand @\let\next\relax\else \def\next{%
+\documentclass{kluwer}\usepackage{doc}\MakePercentIgnore}\fi\next
+\def\filedate{2000/04/29}
+\def\filename{klutab.sty}
+%\DoNotIndex{\@M,\def,\c@secnumdepth,\baselineskip,\@pnumwidth,\else,\fi}
+%\DoNotIndex{\newcommand,\z@,\relax,\renewcommand,\ifnum,\csname,\endcsname}
+%\DoNotIndex{\baselineskip,\vskip,\hskip,\relax,\secdef,\gdef,\@cla,\@clb}
+%\DoNotIndex{\normalsize,\protect,\global,\setbox,\hbox,\vbox,\endinput}
+%\DoNotIndex{\egroup,\endgroup,\bgroup,\begingroup,\let}
+%\CodelineIndex
+%\changes{v??}{1997/02/12}{TH: Inserted definition of `array' to accomodate `hline'.}
+%\changes{v??}{1999/12/07}{SK: some code delayed with AtBeginDocument: now (almost) compatible with array package'.}
+%\newcommand{\Bs}{$\backslash$}
+%\parindent=0pt
+%\parskip=3pt
+%\hfuzz=10pt
+%\MakeShortVerb{\|}
+%\setlength{\marginparwidth}{0in}
+%\addtolength{\textwidth}{4pc}
+%\begin{document}
+%\begin{opening}
+%\title{\filename}
+%\date{\filedate}
+%\author{Kluwer Academic Publishers\surname{}}
+%\institute{~}
+%\begin{abstract}
+% This internal stylefile takes care of tabulars.
+%\end{abstract}
+%\end{opening}
+%\tableofcontents
+%\section{Usage}
+%
+% All of this is quite simple code. What happens
+% is that some extra lines for use in tabulars are defined and
+% included in the original definition of |tabular| and
+% |tabular*|. These have a bit of extra vertical space which breaks
+% the use of vertical rules in tabular's, which is why the old
+% definitions are saved as |TABULAR| and |TABULAR*|.
+%
+% There are some variations on |\cline|. I moved internal commands out of the
+% definition of |tabular| so they could be used in |tabular*| easily. \\[6pt]
+% |\rcline| == hbox 3pt to the left\\
+% |\lcline| == hbox 3pt to the right\\
+% |\lrcline| == both \\
+% |\rlcline| == |\lrcline| (to provide symmetry)
+%
+% All of the environments have
+% been changed so that they also set the value of |\@tabwidth|, which
+% is needed by |klufloa.sty|.
+%
+% |tabular*| has been adjusted to flush out the excess space over all
+% columns instead of to the right of the last one. This is controlled
+% by the value of |\stretchtabsep|, whose default value equals |\hfil|
+%
+%\newpage\section{Implementation}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{klutab}[\filedate ]
+% \end{macrocode}
+% \subsection{Tabular}
+% First some needed values. The `array' things may not belong here,
+% but is also not save to put them somewhere else. After all, \LaTeX\
+% seems to think this is correct.
+% \begin{macrocode}
+%</other>
+%<*main>
+\arraycolsep 6pt
+\tabcolsep 6pt
+\arrayrulewidth .4pt
+\doublerulesep 2pt
+% \end{macrocode}
+%
+% Internal versions of the rules check whether first arg $>1$, and assign
+% |\@tabklu@tmpa| accordingly. Next, execute |\@tabklu@tmpa| and
+% unskip vertical width of rule. (All three are similar)
+% \begin{macrocode}
+\def\@rcline[#1-#2]{%
+ \noalign{%
+ \global\@cla #1\relax
+ \global\advance\@cla\m@ne
+ \ifnum\@cla >0
+ \global\let\@tabklu@tmpa\@rclinea
+ \else
+ \global\let\@tabklu@tmpa\@rclineb
+ \fi
+ \global\@clb #2\relax
+ \global\advance\@clb-\@cla }%
+ \@tabklu@tmpa
+ \noalign{\vskip-\arrayrulewidth}%
+ }%
+\def\@rclinea{%
+ \multispan\@cla&\multispan\@clb
+ \hbox to 3pt{\hfil }%
+ \unskip
+ \leaders\hrule \@height \arrayrulewidth\hfill
+ \cr}%
+\def\@rclineb{%
+ \multispan\@clb
+ \hbox to 3pt{\hfil }%
+ \unskip
+ \leaders\hrule \@height \arrayrulewidth\hfill
+ \cr}%
+\def\@lcline[#1-#2]{%
+ \noalign{%
+ \global\@cla #1\relax
+ \global\advance\@cla\m@ne
+ \ifnum\@cla >0
+ \global\let\@tabklu@tmpa\@lclinea
+ \else
+ \global\let\@tabklu@tmpa\@lclineb
+ \fi
+ \global\@clb #2\relax
+ \global\advance\@clb-\@cla
+ }\@tabklu@tmpa
+ \noalign{\vskip-\arrayrulewidth}%
+}%
+\def\@lclinea{%
+ \multispan\@cla&\multispan\@clb
+ \unskip
+ \leaders\hrule \@height \arrayrulewidth\hfill
+ \hbox to 3pt{\hfil }\cr}%
+\def\@lclineb{%
+ \multispan\@clb
+ \unskip
+ \leaders\hrule \@height \arrayrulewidth\hfill
+ \hbox to 3pt{\hfil }\cr}%
+\def\@lrcline[#1-#2]{%
+ \noalign{%
+ \global\@cla #1\relax
+ \global\advance\@cla\m@ne
+ \ifnum\@cla>0
+ \global \let\@tabklu@tmpa\@lrclinea
+ \else
+ \global \let\@tabklu@tmpa\@lrclineb
+ \fi
+ \global \@clb #2\relax
+ \global \advance\@clb-\@cla
+ }%
+ \@tabklu@tmpa
+ \noalign{\vskip -\arrayrulewidth}%
+ }%
+\def\@lrclinea{%
+ \multispan\@cla&\multispan\@clb
+ \hbox to 3pt{\hfil }%
+ \unskip\leaders\hrule \@height \arrayrulewidth\hfill
+ \hbox to 3pt{\hfil }%
+ \cr}%
+\def\@lrclineb{%
+ \multispan\@clb
+ \hbox to 3pt{\hfil }%
+ \unskip\leaders\hrule \@height \arrayrulewidth\hfill
+ \hbox to 3pt{\hfil }%
+ \cr}%
+% \end{macrocode}
+% This is used for |tabular*|
+% \begin{macrocode}
+\newlength\stretchtabsep
+\setlength\stretchtabsep{0pt plus 1fil}
+% \end{macrocode}
+% |\hline| has been redefined to provide some extra vertical
+% space. Unforunately, we could not do the same for |\cline| and
+% friend, because there can be more than one in one row. The old value
+% of |\hline| is saved in |\savehline| in case you need it.
+%
+% |\arraystretch| is left to it's default value, but we did want extra
+% spacing, so |\strut| is redefined (indirectly) to give some.
+%
+% And then, the entire tabular is saved in a |\hbox| so we can measure
+% it up later. (See above for why we need to know this). There is a
+% grouping level added to stop definitions from running away, but
+% maybe this isn't needed. Not sure.
+% We enclose all this in an |\AtBeginDocument| so that, if array.sty
+% is loaded, the code will be executed on top of array.sty.
+% \begin{macrocode}
+%
+\AtBeginDocument{%
+\let\savehline\hline
+\def\tabular{\begingroup
+ \def\hline{\noalign{\vskip3pt}\savehline\noalign{\vskip3pt}}%
+ \def\rcline##1{\@rcline[##1]}%
+ \def\lcline##1{\@lcline[##1]}%
+ \def\lrcline##1{\@lrcline[##1]}%
+ \let\rlcline=\lrcline
+ \setbox\strutbox\hbox{\vrule height.8\baselineskip
+ depth.4\baselineskip width\z@}%
+ \setbox0=\hbox\bgroup\def\@halignto{}\@tabular}%
+% \end{macrocode}
+% |\endtabular| is quite straightforward.
+% \begin{macrocode}
+\def\endtabular{\crcr\egroup\egroup $\egroup
+ \egroup \tabwidth{\wd0}\unhbox0 \endgroup}%
+% \end{macrocode}
+%
+% Apparently we need to restore the definition of |\hline|
+% inside of array's. This is just a quick hack that 'fixes'
+% the problem.
+% \begin{macrocode}
+\let\klu@intarray\array
+\let\klu@intendarray\endarray
+\def\array{\begingroup \let\hline\savehline \klu@intarray }
+\def\endarray{\klu@intendarray \endgroup}
+% \end{macrocode}
+%
+% |tabular*| follows the same rules, except for redefining
+% |\@tabacol| to insert a |\hfil| value for |\tabskip| in the first
+% preamble-entry (and all following, but these don't count),
+% thereby stretching out all intercolumn space instead
+% of just the last (\LaTeX\ standard behaviour).
+% \begin{macrocode}
+\@ifundefined{newcolumntype}{% array.sty not loaded
+\@namedef{tabular*}#1{%
+ \begingroup
+ \let\savehline\hline
+ \def\hline{\noalign{\vskip3pt}\savehline\noalign{\vskip3pt}}%
+ \def\rcline##1{\@rcline[##1]}%
+ \def\lcline##1{\@lcline[##1]}%
+ \def\lrcline##1{\@lrcline[##1]}%
+ \let\rlcline=\lrcline
+ \setbox\strutbox\hbox{\vrule height.8\baselineskip
+ depth.4\baselineskip width\z@}%
+ \setbox0=\hbox\bgroup\def\@halignto{to #1}%
+ \def\@tabacol{\edef\@preamble{\@preamble
+ \tabskip \stretchtabsep \hskip \tabcolsep}}\@tabular}%
+}{% array.sty loaded:
+\@namedef{tabular*}#1{%
+ \begingroup
+ \let\savehline\hline
+ \def\hline{\noalign{\vskip3pt}\savehline\noalign{\vskip3pt}}%
+ \def\rcline##1{\@rcline[##1]}%
+ \def\lcline##1{\@lcline[##1]}%
+ \def\lrcline##1{\@lrcline[##1]}%
+ \let\rlcline=\lrcline
+% \def\@acol{\@addtopreamble{\hskip\col@sep plus 40pc}} % doesn't work
+ \setbox\strutbox\hbox{\vrule height.8\baselineskip
+ depth.4\baselineskip width\z@}%
+ \setbox0=\hbox\bgroup
+ \gdef\@halignto{to #1}%
+ \@tabular}%
+} % end array.sty loaded
+\@namedef{endtabular*}{\endtabular}
+%
+% \end{macrocode}
+% \subsection{TABULAR}
+% This is just ordinary \LaTeX\ tabular, apart from the |\hbox|.
+% \begin{macrocode}
+\def\TABULAR{%
+ \let\savehline\hline %compatibility
+ \let\rcline\cline \let\lcline\cline
+ \let\lrcline\cline \let\rlcline\cline
+ \setbox0=\hbox\bgroup\def\@halignto{}\@tabular}%
+\def\endTABULAR{\crcr\egroup\egroup $\egroup
+ \egroup \tabwidth{\wd0}\unhbox0 }%
+\@namedef{TABULAR*}#1{%
+ \let\savehline\hline %compatibility
+ \let\rcline\cline \let\lcline\cline
+ \let\lrcline\cline \let\rlcline\cline
+ \setbox0=\hbox\bgroup\def\@halignto{to #1}\@tabular}%
+\@namedef{endTABULAR*}{\endtabular}} % end of AtBeginDocument
+%</main>
+%<*other>
+\endinput
+% \end{macrocode}
+%\def\IndexParms{\hbadness=10000}
+%\PrintIndex
+%\end{document}
+% end of klutab.sty
+%</other>