% %<*other> % % \ifcat a\noexpand @\let\next\relax\else \def\next{% \documentclass{kluwer}\usepackage{doc}\MakePercentIgnore}\fi\next \def\filedate{1998/03/13} %\changes{v??}{1997/07/10}{Fixes in @klu@caption: inserted [b] and moved % kaprotate code from the else to after the fi.} \def\filename{klufloa.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 %\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{T. \surname{Hoekwater}} %\institute{Kluwer Academic Publishers, Dordrecht} %\begin{abstract} % This internal stylefile takes care of floats and the |kaprotate| macro's \\ % %\noindent %{\bf Disclaimer:} This stylefile is to be used by Kluwer Academic % Publishers in the contruction of full class files. Therefore, the % user interface is not very high-level, and is definately not meant % for normal usage. This stylefile is provided {\bf as is}, i.e. we % accept no responsibilities whatsoever. You are free to use this file % in any way you like, provided you do not make {\it any\/} changes. % If you {\it do\/} make changes, you have to rename the changed file. %\end{abstract} %\end{opening} %\tableofcontents %\newpage\section{Usage} % At this moment, there are three float environments done here: % |table|, |figure| (with their starred and sub... forms) and |algorithm|. % % % In order to facilitate customization, the following commands are % exported: % % \def\pitem[#1]{\item[\ttfamily\string #1]\SpecialUsageIndex{#1}} %\begin{description} %\pitem[\tabwidth] Allows setting the width of a table that has to be %centered, but does not contain a |tabular| or |TABULAR|. Also, %it might be handy for tables that contain more than one |tabular|. %(e.g. |\tabwidth{20pc}|) %\pitem[\tabfont] Font specification for the main text of tables.\\ % (default value |\footnotesize|) %\pitem[\tabcapfont] Font specification for table captions. % (default value |\footnotesize|) %\pitem[\figcapfont] Font specification for caption of figures. There is no % definition for the font of the text of figures. % (defaultvalue |\footnotesize|) %\pitem[\tableindent] Indentation for tables. % (default given by stylefile) % Tables and figures can be either indented over a specified width, or % centered. This can be done independent of each other, but both % always use the same indentation. i.e: You cannot % have figures indented 4 picas and tables 2 picas, but you can have % indented tables with centered figures. %\pitem[\figindent] Indentation for figures. From the note above for these %two commands it follows that if both are given, they have to set the same % value. If they don't, the last given value will prevail. % (default given by stylefile) %\pitem[\figtabdot] The dot after the number. (default value |.|) %\pitem[\captionskip] Vertical skip between caption and main body of float. % (default value 6pt) %\pitem[\tabcapspace] Space between heading of caption and %text of caption. This is a vertical or horizontal skip, depending on %whether captions are split or not. Default value .5em. %\pitem[\splittabcaptions] Splits the table captions in two parts. %\pitem[\splitfigcaptions] Splits the figure captions in two parts. %\pitem[\splitcaptions] Combines both. %\pitem[\indentedcaptions] Ordinarily, captions are centered above or below %the float. This setting allows you to specify a specific indentation. %\pitem[\captionindent] Value used for the previous option The default value %is 0pt (appears to make most sense). %\end{description} % % % %\newpage\section{Implementation} % % The |klutab| is necesarry here, because we need the definitions % of tabular \& co that set the correct widths. It also makes sure that % these two are nicely tied in to eachother (version control problems). % % \begin{macrocode} \NeedsTeXFormat{LaTeX2e} \ProvidesPackage{klufloa}[\filedate ] \RequirePackage{klutab}[1997/05/30] % \end{macrocode} %\subsection{Float parameters} % These are standard as in \LaTeXe. % \begin{macrocode} % %<*main> \setcounter{topnumber}{2} \setcounter{bottomnumber}{1} \setcounter{totalnumber}{3} \setcounter{dbltopnumber}{2} % \end{macrocode} % The parameters below try to ensure that there are not so many float % pages. (prevents empty white space). % % In the old stylefiles, % |\topfraction| was $.99$, but that was bit to much, resulting in % pages with a huge float and only two text lines. Now a float has % to be $>.85$|\textheight| before it will result in a float page. % (oversimplified, but this is the general idea). This leaves % space on the page for a few more textlines. % % |\bottomfraction| used to be $.3$, but that is to small for almost % any float this style generates; there are split captions and tabnotes % to account for, so the value has increased a bit. % \begin{macrocode} \renewcommand{\topfraction}{.85} \renewcommand{\textfraction}{.01} \renewcommand{\bottomfraction}{.4} \renewcommand{\floatpagefraction}{.84} \renewcommand{\dblfloatpagefraction}{.84} \renewcommand{\dbltopfraction}{.7} % \end{macrocode} %\newpage % \subsection{Helper macros} % |\figtabdot| serves the same purpose as |\sectiondot| elsewhere, % and the % names of various strings. % \begin{macrocode} \def\figtabdot{.} \def\tablename{Table}% \def\figurename{Figure}% \def\algorithmname{Algorithm}% % \end{macrocode} % |\maxfloatwidth| is the allowed width of the table.\\ % (If this is a rotated table or figure, it will use all of the % page. Of course, |\maxfloatwidth| then is |\textheight|.)\\ % |\figtabbox| will contain the total float as a vbox. % |\floatindent| is the indentation skip for indented tables \& figures. % The last defined value will overwrite the previous one.\\ % |\@tabskip| is an aid in helping to decide indentation of rotated tables.\\ % |\cap@type| is an aid in keeping track of caption types\\ % |\captionskip| is the vertical skip between caption and main body. % \begin{macrocode} \newdimen\maxfloatwidth \newbox\figtabbox \newdimen\floatindent \newdimen\@tabskip \gdef\cap@type{0} \newdimen\captionskip \setlength\captionskip{6pt} % \end{macrocode} % % % |\@tabwidth| is % supposed to contain the width of the table. (the width of |\figtabbox| is % probably either |\textwidth| or zero.) |tabular| and |TABULAR| from % |klutab.sty| set % this value automatically, but so should every |table|. If your table % does not contain a |tabular|, you can set this value yourself: % just say |\tabwidth{..}| somewhere in your table. Your text will % be typeset inside a |\vbox| with width |\maxfloatwidth|. % \begin{macrocode} \newdimen\@tabwidth \setlength\@tabwidth{\textwidth} \def\tabwidth#1{\global\setlength\@tabwidth{#1}} % \end{macrocode} % % |\@getindent| calculates the value of |\maxfloatwidth|, % It is called from figure and table. % % For rotated floats, |\maxfloatwidth| == |\vsize|. The use % of |\vsize| here is probably % better than |\textheight|, because it allows use of minipages and % |\vbox|es to get special effects (where |\textheight| $>$ |\vsize|). % % |\@floatcorrect| fixes indentation for rotated floats. This and\\ % |\hbox@to@floatwidth| are just shortcuts. % \begin{macrocode} \def\@getmaxwidth{\maxfloatwidth=\hsize \if@kaprotate \maxfloatwidth=\textheight \fi } \def\@floatcorrect{\if@kaprotate\else \advance\maxfloatwidth -\floatindent \fi } \def\hbox@to@floatwidth#1{\leavevmode \hbox to \@tabwidth{#1}} % \end{macrocode} % % |\@getindent| calculates the values for |\@tabskip| and % |\@floatindent|. The first check initializes |\@tabwidth| for % anything except tables. The macro\\ |\@centeredfloat| does the % hard work for centered floats, where |\floatindent| is not given % beforehand. % \begin{macrocode} \def\@getindent{% \ifnum\cap@type=2 \else \@tabwidth=\if@kaprotate \textheight \else \hsize \fi \if@figindent\advance \@tabwidth -\floatindent \fi\fi \ifnum\cap@type=1 \if@figindent \@tabskip\floatindent \else \@centeredfloat \fi \else \ifnum\cap@type=2 \if@tabindent \@tabskip\floatindent \else \@centeredfloat \fi \ifdim \@tabwidth > \maxfloatwidth \@tabskip 0pt \floatindent 0pt \fi \else \@centeredfloat \fi \fi } % \end{macrocode} % % |\@centeredfloat|\\ % Calculate |\@tabskip| for centering. In this macro, we know the % float will be centered. We calculate |\floatindent| ourselves from % |\maxfloatwidth|. % % We need to maintain this indentation for rotated floats (so they % will be vertically centered), but |\@tabskip| needs to be re-done. % % \begin{macrocode} \def\@centeredfloat{% \floatindent\maxfloatwidth \advance\floatindent by -\@tabwidth \divide\floatindent by 2 \@tabskip\floatindent \if@kaprotate \@tabskip\hsize \advance\@tabskip by -\ht\figtabbox \advance\@tabskip by -\dp\figtabbox \divide\@tabskip by 2 \fi } % \end{macrocode} % % \subsection{Table caption commands} % Here is the code for the captions. % % % |\indentedcaptions| is a user option that indents captions instead % (over a default value of 0pt). % \begin{macrocode} \newif\if@centeredfigcaption \newif\if@centeredtabcaption \@centeredtabcaptiontrue \@centeredfigcaptiontrue \def\indentedtabcaptions{\global\@centeredtabcaptionfalse } \def\indentedfigcaptions{\global\@centeredfigcaptionfalse } \def\indentedcaptions{\global\@centeredtabcaptionfalse \global\@centeredfigcaptionfalse} \newdimen\captionindent \setlength\captionindent{0pt} \newtoks\@floatcaption \def\tabcapspace{.5em} \def\tabcapfont{\footnotesize } \long\def\@maketabcaption#1#2{\global\@floatcaption={#2}% \message{\tablename\space\thetable \if@kaprotate \space(rotated) \fi}} % \end{macrocode} % % Captions are centered above the table by default.\footnote{ % In real life, {\tt @klu@caption} would be called {\tt make@caption}, % since these do the typesetting}. This code is called from |\endtable|. % \begin{macrocode} \def\@klu@caption{% \setbox1=\hbox{\tabcapfont\fnum@table\hskip\tabcapspace \the\@floatcaption}% \noindent \ifdim\wd1 >\@tabwidth {\if@centeredtabcaption\centering\else \hskip \captionindent\fi \parbox[b]{\@tabwidth}{\tabcapfont\unhbox1}}% \else \hbox to \@tabwidth{% \if@centeredtabcaption \hfil \else \hskip \captionindent\fi \tabcapfont\fnum@table \hskip\tabcapspace{\tabcapfont\the\@floatcaption}\hfil }% \fi \if@kaprotate \else \par \vskip -\baselineskip \fi \par } \def\@klu@figcaption{% \setbox1=\hbox{\figcapfont\fnum@figure\hskip\tabcapspace \the\@floatcaption}% \noindent \ifdim\wd1 >\@tabwidth {\if@centeredfigcaption\centering\else \hskip \captionindent\fi \parbox{\@tabwidth}{\figcapfont\unhbox1}}% \else \hbox to \@tabwidth{% \if@centeredfigcaption \hfil\else \hskip \captionindent\fi \tabcapfont\fnum@figure \hskip\tabcapspace{\figcapfont\the\@floatcaption}\hfil}% \fi \par } % \end{macrocode} % % |\splitcaptions| is a user option to generate a caption in which the % `Table 1' is separated from the caption text. The resulting % definitions depend on being inside a % vbox when called. % \begin{macrocode} \def\splitcaptions{\splittabcaptions\splitfigcaptions} \def\splittabcaptions{ \def\@klu@caption{% \setbox1=\hbox{\tabcapfont\the\@floatcaption}% \noindent \ifdim\wd1 >\@tabwidth \hbox to \@tabwidth{\if@centeredtabcaption\hss\else \hskip\captionindent\fi \tabcapfont\fnum@table\hss}\vskip \tabcapspace \vskip 6pt {\if@centeredtabcaption\centering\fi \hskip \captionindent \parbox{\@tabwidth}{\tabcapfont\unhbox1}}% \else \hbox to \@tabwidth{% \if@centeredtabcaption \hfil\else \hskip\captionindent\fi \tabcapfont\fnum@table\strut\hfil }\vskip \tabcapspace \hbox to \@tabwidth{% \if@centeredtabcaption \hfil\else \hskip\captionindent \fi \tabcapfont\the\@floatcaption \hfil }% \if@kaprotate \else \par \vskip -\baselineskip \fi \fi \par }} \def\splitfigcaptions{\def\@klu@figcaption{% \setbox1=\hbox{\figcapfont\the\@floatcaption}% \noindent \ifdim\wd1 >\@tabwidth \hbox to \@tabwidth{\if@centeredfigcaption\hfil\else \hskip\captionindent\fi \figcapfont\fnum@figure\hfil}\vskip \tabcapspace \vskip 6pt {\if@centeredfigcaption\centering\fi \hskip \captionindent \parbox{\@tabwidth}{\figcapfont\unhbox1}}% \else \hbox to \@tabwidth{% \if@centeredfigcaption \hfil\else \hskip\captionindent\fi \figcapfont\fnum@figure\strut\hfil }\vskip \tabcapspace \hbox to \@tabwidth{% \if@centeredfigcaption \hfil\else \hskip\captionindent\fi \figcapfont\the\@floatcaption \hfil }% \fi \par }}% % \end{macrocode} %\newpage %\subsection{Table} % Standard \LaTeX\ definitions first: % % |\newcounter| removed 7/6/96 to prevent errors when used as package. % (`counter |\c@table| already defined') % \begin{macrocode} \@ifundefined{thetable}{\newcounter{table}}{} \def\thetable{\arabic{table}} \def\fps@table{tbp} \def\ftype@table{2} \def\ext@table{lot} \def\fnum@table{\tablename~\thetable\figtabdot} % \end{macrocode} % Now the switch to control indentation. % % \begin{macrocode} \newif\if@tabindent \@tabindentfalse \def\tableindent#1{% \global\floatindent= #1\global\@tabindenttrue } % \end{macrocode} % Default font for tables. % This could also be used to redefine the font % defaults like family and shape. % \begin{macrocode} \def\tabfont{\footnotesize} % \end{macrocode} % |\tabnotes| is intended to be used as `footnote' to a tabular % environment. |\@tabnotes| will be cleared before every table. % \begin{macrocode} \def\@tabnotes{} \newcounter{tabnote} \def\tabnotemark{\ensuremath{^{\thetabnote}}} \def\thetabnote{\arabic{tabnote}} \def\tabnotesep{\par} \def\tabnote#1{\stepcounter{tabnote}% \rlap{\tabnotemark }% \begingroup \let\tabnotesep\relax \xdef\@tabnotes{\@tabnotes\tabnotesep \tabnotemark #1\par}% \endgroup } \long\def\tabnotes#1{\gdef\@tabnotes{{\tabfont\noindent #1\par}}} % \end{macrocode} % Now for the macro's that set the table itself. Just to recall: \\[6pt] %|\maxfloatwidth|== max. width of table\\ %|\@tabskip|== horizontal offset\\ %|\floatindent|==indent before table proper\\ %|\@tabnotes|==macro containing tabnotes (in Tabfont)\\ %|\figtabbox|==vbox containing table (minus caption \& tabnotes) % % Non-rotated version:\\ % Check width of caption. If it is too wide to fit on one line, put it % in a |\parbox| with proper |\floatindent| before it. % % \begin{macrocode} \def\@setnotrotatedtabbox{% \setbox4=\hbox to \maxfloatwidth{\vbox{\hsize=\maxfloatwidth \@klu@caption \vskip\captionskip \leavevmode \unvbox\figtabbox\par \noindent\parbox{\@tabwidth}{\tabfont\@tabnotes}\par}}% \if@fixedfloat\calc@fixedspace4\fi \noindent\kern \floatindent\box4 } % \end{macrocode} % Rotated version. We are inside a |\vbox| here, so we typeset 3 % hboxes (and a |\vskip|). % % |\maxfloatwidth| is |\textheight| here, causing overfull boxes. % % \begin{macrocode} \def\@setrotatedtabbox{\begingroup \hfuzz=\vsize \setbox2\hbox to \textheight{\hfil \vbox to \hsize{\hsize=\vsize \vfil \hbox{\hbox@to@floatwidth{\vbox{\@klu@caption }}} \vskip\captionskip \hbox{\hbox@to@floatwidth{\box\figtabbox\hss}}% \hbox{\hbox@to@floatwidth{\parbox{\@tabwidth}{\tabfont\@tabnotes}\hfil }}% \vss }\hss}\rotl{2}\endgroup } % \end{macrocode} % |\@makecaption| will be |\let| to |\@maketabcaption| in for the % duration of the table. % % This is quite simple code, apart from handling the optional argument % ourselves. |kaprotate| effectively kills Overfull and Underfull % hbox-es. I don't like that, but I also don't like the messages I % always get (Overfull hbox with width = |\textheight| $-$ |\textwidth|). % \begin{macrocode} \def\table{\let\@makecaption\@maketabcaption \global\@floatcaption={}% \gdef\@tabnotes{}\setcounter{tabnote}{0}\gdef\cap@type{2}% \@ifnextchar[{\t@blewithoptions}{\t@blewithoptions[tbp]}} \def\t@blewithoptions[#1]{% \if H#1\@fixedtable \else \@float{table}[#1]\fi \@getmaxwidth \if@tabindent \@floatcorrect \fi \setbox\figtabbox\vbox\bgroup\tabfont \if@kaprotate\hfuzz=\vsize\fi }% % \end{macrocode} % % This |\hfuzz| is a bit more precise. At least ik will warn if the % tabular itself is too large. % \begin{macrocode} \def\endtable{\egroup \@getindent \gdef\cap@type{0}\noindent \hfuzz=\floatindent \if@kaprotate \@setrotatedtabbox \else \@setnotrotatedtabbox \fi \if@fixedfloat \vskip\intextsep \@fixedfloatfalse \else \end@float \fi \hfuzz =0.1pt }% % \end{macrocode} %\subsection{Table starred} % This code is basically identical to the code above. % Multicolumn `Here' floats in twocolumn layout don't work, for obvious % reasons. If you need something like that, fake it with the % twocolumn package. % \begin{macrocode} \@namedef{table*}{\let\@makecaption\@maketabcaption \global\@floatcaption={}% \gdef\@tabnotes{}\setcounter{tabnote}{0}\gdef\cap@type{2}% \@ifnextchar[{\dt@blewithoptions}{\dt@blewithoptions[tbp]}} \def\dt@blewithoptions[#1]{% \if H#1\if@twocolumn \@dblfloat{table}[t]\else \@fixedtable\fi \else \@dblfloat{table}[#1]\fi \@getmaxwidth \if@tabindent \@floatcorrect \fi \setbox\figtabbox\vbox\bgroup\tabfont \if@kaprotate \hfuzz=\vsize \fi }% % \end{macrocode} % % \begin{macrocode} \@namedef{endtable*}{\egroup \@getindent \gdef\cap@type{0}\noindent \hfuzz=\floatindent \if@kaprotate \@setrotatedtabbox \else \@setnotrotatedtabbox \fi \if@fixedfloat \vskip\intextsep \@fixedfloatfalse \else \end@dblfloat \fi \hfuzz=0.1pt }% % \end{macrocode} % \subsection{fixed point tables and figures} % The fixedtable option. If there is enough room on the page, the % box is typeset right away. If there is not enough space, the page is % ended and the box is typeset at the top of the next page. This may % conflict with following `top' floats, but the exact location in % the text is maintained. % % Don't try to use |[H]| on rotated tables, and twocolumn will produce % overlapping text in the second column, also, these will not appear % in a `list of tables' unless you specifically ask that. % \begin{macrocode} \newif\if@fixedfloat \def\@fixedtable{\vskip\intextsep \@fixedfloattrue \def\caption{\@ifnextchar[{\f@xedcap{table}}% {\f@xedcap{table}[]}}} \def\@fixedfigure{\vskip\intextsep \@fixedfloattrue \def\caption{\@ifnextchar[{\f@xedcap{figure}}% {\f@xedcap{figure}[]}}} \def\f@xedcap#1[#2]#3{\refstepcounter{#1}\def\@tempa{#2}% \ifx\@tempa\empty \else \addcontentsline{\csname ext@#1\endcsname}{#1}{#2}\fi \message{#1\space\csname the#1\endcsname \space (fixed)}% \global\@floatcaption={#3}} \def\calc@fixedspace#1{% \@tempdima=\pagegoal \@tempdimb=\dp#1 \advance\@tempdimb \ht#1 \advance\@tempdima -\pagetotal \advance\@tempdima -2\intextsep \wlog{pageleft= \the\@tempdima, size= \the\@tempdimb }% \ifdim\@tempdima>\@tempdimb \else \newpage \fi} % \end{macrocode} % %\newpage \subsection{Figure} % Now we are going to do this all over again for % figures. Documentation will only mark important differences. % % Parameters. % % \begin{macrocode} \@ifundefined{thefigure}{\newcounter{figure}}{} \def\thefigure{\arabic{figure}} \def\fps@figure{tbp} \def\ftype@figure{1} \def\ext@figure{lof} \def\fnum@figure{\figurename~\thefigure\figtabdot} % \end{macrocode} % Indentation, font and caption. % \begin{macrocode} \newif\if@figindent \@figindentfalse \def\figindent#1{% \global\floatindent #1 \global\@figindenttrue } \def\figcapfont{\footnotesize} \long\def\@makefigcaption#1#2{% \message{\figurename\space\thefigure \if@kaprotate \space (rotated)\fi }% \global\@floatcaption={#2}} % \end{macrocode} % % The |fixed| option. % % \begin{macrocode} % \end{macrocode} % The figure environment itself. % \begin{macrocode} \def\figure{% \gdef\cap@type{1}% \let\@makecaption\@makefigcaption \global\@floatcaption={}% \@ifnextchar[{\f@gurewithoptions}{\f@gurewithoptions[tbp]}}% \def\f@gurewithoptions[#1]{% \let\saved@centerline\centerline \if H#1\@fixedfigure \else \@float{figure}[#1]\fi \@getmaxwidth \if@figindent \@floatcorrect \def\centerline##1{##1}\fi \setbox\figtabbox\vbox\bgroup }% \def\endfigure{\egroup \@getindent \gdef\cap@type{0}% \hfuzz=\floatindent \if@kaprotate \@setrotatedfigbox \pagebreak \else \@setnotrotatedfigbox \fi \let\centerline\saved@centerline \if@fixedfloat \vskip\intextsep \@fixedfloatfalse \else \end@float \fi \hfuzz=0.1pt }% % \end{macrocode} % \subsection{figure starred} % \begin{macrocode} \@namedef{figure*}{% \def\cap@type{1}% \let\@makecaption\@makefigcaption \global\@floatcaption={}% \@ifnextchar[{\df@gurewithoptions}{\df@gurewithoptions[ttp]}} \def\df@gurewithoptions[#1]{% \let\saved@centerline\centerline \if H#1 \@fixedfigure \else \@dblfloat{figure}[#1]\fi \@getmaxwidth \if@figindent \@floatcorrect \def\centerline##1{##1}\fi \setbox\figtabbox\vbox\bgroup }% \@namedef{endfigure*}{\egroup \@getindent \gdef\cap@type{0}% \hfuzz=\floatindent \if@kaprotate \@setrotatedfigbox \else \@setnotrotatedfigbox \fi \let\centerline\saved@centerline \if@fixedfloat \vskip\intextsep \@fixedfloatfalse \else \end@dblfloat \fi \hfuzz=0.1pt }% % \end{macrocode} % Non-rotated version (in figures |\caption| is done last): % \begin{macrocode} \def\@setnotrotatedfigbox{% \setbox4=\hbox to \maxfloatwidth{\vbox{\hsize=\maxfloatwidth \unvbox\figtabbox \vskip\captionskip \@klu@figcaption }}% \if@fixedfloat\calc@fixedspace4 \fi \noindent\kern \floatindent\box4 } % \end{macrocode} % Rotated version: % % \begin{macrocode} \def\@setrotatedfigbox{% \setbox2\vbox to \hsize{\hsize=\textheight \leavevmode \vrule width \textheight height 0pt depth 0pt\par \vskip \@tabskip \hbox to \textheight{\hss\box\figtabbox\hss}% \vskip\captionskip \hbox to \textheight{\vbox{\@klu@figcaption }} \vss }\rotl{2}}% % \end{macrocode} %\newpage \subsection{Algorithm} % This is a `standard' float. % \begin{macrocode} \newcounter{algorithm} \def\thealgorithm{\arabic{algorithm}} \def\fps@algorithm{tbp} \def\ftype@algorithm{4} \def\ext@algorithm{lof} \long\def\@makealgocaption#1#2{% \hbox to \hsize{\parbox[t]{\hsize}{{\vskip 1ex \tabcapfont #1\figtabdot~~#2}}}} \def\fnum@algorithm{\algorithmname\space \thealgorithm} \def\algorithm{\let\@makecaption\@makealgocaption \@float{algorithm}\footnotesize\obeyspaces\obeylines} \let\endalgorithm\end@float % \end{macrocode} %\subsection{subtable and subfigure} % These are the sub... environments. If you need comment on what % happens, please see |kluthm.sty|, definition of |subequation|. % \begin{macrocode} \def\subtable{\@ifnextchar[{\@subtable}{\@subtable[alph]}} \def\@subtable[#1]{\refstepcounter{table}% \def\@testoption{arabic}\def\@testparam{#1}% \begingroup \edef\old@table{\the\c@table}% \edef\old@thetable{\thetable}% \setcounter{table}{0}% \ifx\@testoption\@testparam \def\thetable{\old@thetable.\csname #1\endcsname{table}}% \else \def\thetable{\old@thetable\csname #1\endcsname{table}}% \fi} \def\endsubtable{\setcounter{table}{\old@table}% \endgroup \global\@ignoretrue} \def\subfigure{\@ifnextchar[{\@subfigure}{\@subfigure[alph]}} \def\@subfigure[#1]{\refstepcounter{figure}% \def\@testoption{arabic}\def\@testparam{#1}% \begingroup \edef\old@figure{\the\c@figure}% \edef\old@thefigure{\thefigure}% \setcounter{figure}{0}% \ifx\@testoption\@testparam \def\thefigure{\old@thefigure.\csname #1\endcsname{figure}}% \else \def\thefigure{\old@thefigure\csname #1\endcsname{figure}}% \fi} \def\endsubfigure{\setcounter{figure}{\old@figure}% \endgroup \global\@ignoretrue} % \end{macrocode} % \subsection{kaprotate} % This appears to be an afterthought now, but in fact it is a quite % handy command. The environment is defined in this file, because % this reflects common usage, and this allows loading as a package % in e.g. |article|. % % \begin{macrocode} \newif\if@kaprotate \@kaprotatefalse \def\kaprotate{\global\@kaprotatetrue} \def\endkaprotate{\global\@kaprotatefalse} % \end{macrocode} % % \subsubsection{Rotation macros} % These are used in the |kaprotate| environment. Note that these % macros depend on PostScript output at this moment. Later, % I might include commands for (at least) Tpic. % % These are just a few macro's, so it isn't really worth including |graphicx| % at the moment. % % |\rotl| and |\rotr| rotate a given box over resp. 270 and 90 degrees % while typesetting that box. The new box has $wd_{new}=dp_1 + ht_1$ and % $ht_{new}=wd_1$, with $dp_{new} ==0$. % \begin{macrocode} \newdimen\rotdimen \def\rotstart#1{\special{ps: gsave currentpoint currentpoint translate #1 neg exch neg exch translate}} \def\rotfinish{\special{ps: currentpoint grestore moveto}} \def\rotl#1{\rotdimen=\ht#1\advance\rotdimen by \dp#1 \hbox to \rotdimen{\vbox to\wd#1{\vskip \wd#1 \rotstart{270 rotate}\box #1\vss}\hss}\rotfinish} \def\rotr#1{\rotdimen=\ht #1\advance\rotdimen by \dp#1 \hbox to \rotdimen{\vbox to \wd#1{\vskip \wd#1 \rotstart{90 rotate}\box #1\vss}\hss}\rotfinish} % %<*other> \endinput % \end{macrocode} %\newpage %\def\IndexParms{\hbadness=10000} %\PrintIndex %\end{document} % end of klufloa.sty %