diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/kluwer/klutab.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/kluwer/klutab.sty | 270 |
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> |