diff options
Diffstat (limited to 'Master/texmf-dist/tex/latex/kluwer/kluopen.sty')
-rw-r--r-- | Master/texmf-dist/tex/latex/kluwer/kluopen.sty | 595 |
1 files changed, 595 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/kluwer/kluopen.sty b/Master/texmf-dist/tex/latex/kluwer/kluopen.sty new file mode 100644 index 00000000000..9bef1a0b6a0 --- /dev/null +++ b/Master/texmf-dist/tex/latex/kluwer/kluopen.sty @@ -0,0 +1,595 @@ +% +%<*other> +% +\ifcat a\noexpand @\let\next\relax\else \def\next{% +\documentclass{kluwer}\usepackage{doc}\MakePercentIgnore}\fi\next +\NeedsTeXFormat{LaTeX2e} +% \def\changes#1#2{} +% \changes{1997/07/10}{bugfix in title@thanks: move thanks into ititle@.} +% \changes{1997/07/10}{bugfix in opening: inserted hsize == textwidth. This +% to enforce double width in abstract (twocolumn layouts)} +% \changes{1997/07/10}{changes in ititle@ to correct spacing of thanks. This +% removed the need for title@@ and title@thanks: both removed} +% \changes{1997/07/10}{speccright etc. removed (never used)} +% \changes{1997/07/10}{crude vertical spacing fix for @arttype if copyrighthead} +% \changes{1998/01/06}{fix thispagestyle (crt. endup on 2nd page if abstract too long)} +% \changes{1998/02/04}{added new hooks: "beforeartskip", "titlebaselinefactor"} +% \changes{1998/02/04}{made "classification", "keywords", "abbreviations" and "nomenclature" long} +% \changes{1998/02/06}{force "email" lowercase} +% \changes{1998/02/06}{removed () around defaulted dates} +% \changes{1999/05/18}{removed inappropriate whitespace in "@authors and institutes"} +% \changes{1999/11/29}{new opening command nodagger for footnote symbols} +\def\filedate{2000/04/29} +\def\filename{kluopen.sty} +%\DoNotIndex{\@M,\def,\c@secnumdepth,\baselineskip,\@pnumwidth,\else,\fi} +%\DoNotIndex{\newcommand,\z@,\relax,\renewcommand,\ifnum,\csname,\endcsname} +%\DoNotIndex{\baselineskip,\vskip,\hskip,\relax,\secdef,\refstepcounter} +%\DoNotIndex{\normalsize,\numberline,\protect,\endinput,\hfill} +%\DoNotIndex{\@compare,\ifx,\global,\gdef,\def,\let,\hbox,\par,\typeout} +%\CodelineIndex +%\newcommand{\Bs}{$\backslash$} +%\parindent=0pt +%\parskip=3pt +%\hfuzz=11pt +%\MakeShortVerb{\|} +%\setlength{\marginparwidth}{0in} +%\addtolength{\textwidth}{4pc} +%\begin{document} +%\begin{opening} +%\title{\filename} +%\date{\filedate} +%\author{Kluwer Academic Publishers\surname{}} +%\institute{~} +%\runningtitle{\filename\ -- \filedate} +%\runningauthor{Kluwer Academic Publishers} +%\editor{Test} +%\journalcode{test} +%\begin{abstract} +% This internal stylefile defines most of the special kluwer +% opening commands. +%\end{abstract} +%\end{opening} +%\tableofcontents +%\newpage\section{Implementation} +% \begin{macrocode} +\ProvidesPackage{kluopen}[\filedate ] +% \end{macrocode} +% \subsection{The opening environment} +% The beginning of this environment is rather empty, there is not much +% need to do anything here. All definitions inside the `opening' have +% to be indirect |\def|s anyway, so we will start worrying about +% typesetting things at the end of the environment. +% +% \begin{macrocode} +%</other> +%<*main> +\gdef\title#1{\title@{#1}} +\gdef\author#1{\author@{#1}} +\gdef\date#1{\date@{#1}} +\gdef\nodagger@{% + \def\@fnsymbol##1{\ensuremath{\ifcase##1\or *\or \ddagger\or + \mathsection\or \mathparagraph\or \|\or ** + \or \ddagger\ddagger \else\@ctrerr\fi}}} +\def\opening{% + \let\title=\title@ + \let\author=\author@ + \let\date=\date@ + \let\arttype=\arttype@ + \let\subtitle=\subtitle@ + \let\dedication=\dedication@ + \let\translation=\translation@ + \let\received=\received@ + \let\orf=\orf@ + \let\accepted=\accepted@ + \let\revised=\revised@ + \let\institute=\institute@ + \hsize\textwidth + \let\nodagger\nodagger@ + } +% \end{macrocode} +% Since |\listfiles| is a definite `preambleonly' command, we can test +% for that. IF |\listfiles| = |\@notprerr| typeset opening, ELSE +% typeset opening at begin document. +% +% If new commands are added to this list, don't forget to add them +% above too. Also, please gobble all arguments carefully. Als note +% that these redefinitions only take place if there is an |opening| +% environment. +% +% The new syntax for |opening| is to use it {\it after\/} +% |\begin{document}| and/or |\begin{article}|, but we still honour the +% old syntax. Also, because I wanted to support |\maketitle| the +% ordinary way, |\maketitle| is |\let| to |\endopening|. +% \begin{macrocode} +\gdef\maketitle{\endopening} +\def\endopening{% + \ifx\listfiles\@notprerr \maketitle@@ \else + \AtBeginDocument{\maketitle@@}\fi + \gdef\title##1{\opening@only\title} + \gdef\subtitle##1{\opening@only\subtitle} + \gdef\orf##1{\opening@only\orf} + \gdef\dedication##1{\opening@only\dedication} + \gdef\translation##1{\opening@only\translation} + \gdef\received##1{\opening@only\received} + \gdef\revised##1{\opening@only\revised} + \gdef\author##1{\opening@only\author} + \gdef\institute##1{\opening@only\institute} + \gdef\date##1{\opening@only\date}% + \gdef\arttype##1{\opening@only\arttype} + \gdef\nodagger{\opening@only\nodagger} + } +% \end{macrocode} +% Let `opening only' == warning. +% \begin{macrocode} +\def\opening@only#1{\PackageWarning{kluopen}{\string#1\space + effective only inside opening environment.}} +% \end{macrocode} +% \subsection{Internal Author and institute commands} +% author and institute commands are seriously intertwined. Too bad +% about the relocation that used to happen in |humnkap|, because has +% been sacrificed again. It turned out be more of a fuzz than it was +% worth. +% +% The general idea is to keep four different command lists that stack +% the authors and institutes. +% +% Let's do the easy thing first. These are the `user' changeable +% parameters for authors and institutes. +% \begin{macrocode} +\def\authorsize{\normalsize \raggedright} +\def\authorcase#1{#1} +\def\authorindent{0pt} +\def\afterallauthorsskip{1em\relax} +\def\afterauthorskip{0pt} +\def\institutesize{\footnotesize\it} +\def\institutecase#1{#1} +\def\instituteindent{0pt} +\def\institutesep{.4\baselineskip} +\def\authorand{and} +% \end{macrocode} +% This is a hook for klups.sty (oldstyle numerals) +% \begin{macrocode} +\def\i@oldseries{} +% \end{macrocode} +% +% We only need |\@temptokenb|, because |\@temptokena| is a \LaTeX\ +% scratch register. +% \begin{macrocode} +\newtoks\@temptokenb +% \end{macrocode} +% The list will, for example, look like this: +%\begin{verbatim} +%\@authors == {\@k@p {A. \surname{Thor}}\@k@p {B. \surname{Thor}}} +%\end{verbatim} +% \begin{macrocode} +\long\def\append@item#1\to#2{% + \@temptokena={\@k@p{#1}}% + \@temptokenb=\expandafter{#2}% + \xdef#2{\the\@temptokenb\the\@temptokena}} +% \end{macrocode} +% Extraction macros. Typical usage: +% +%\begin{verbatim} +%\get@left\@instituteauthors\to\@curauths +%\end{verbatim} +% +% This will expand into: +% +%\begin{verbatim} +%\g@l\@k@p \ITEM1\@k@p \ITEM2 ...\g@l \@instituteauthors \@curauths +%\end{verbatim} +% +% And from there into +% +%\begin{verbatim} +%\def\@curauths \ITEM1 \def\@institeauthors{\ITEM2 ...} +%\end{verbatim} +% +% Gee, this looks so easy if you write it out :-). +% \begin{macrocode} +\def\get@left#1\to#2{\expandafter\g@l#1\g@l#1#2} +\long\def\g@l\@k@p#1#2\g@l#3#4{\def#4{#1}\def#3{#2}} +% \end{macrocode} +% This will contain the authors for the current institute. +% \begin{macrocode} +\def\@authors{}% +% \end{macrocode} +% This will contain all authors. +% \begin{macrocode} +\def\@allauthors{}% +% \end{macrocode} +% This will contain all institutes. +% \begin{macrocode} +\def\@institutes{}% +% \end{macrocode} +% This will contain items containing all of the authors that are +% tied up to one institute. +% \begin{macrocode} +\def\@instituteauthors{}% +% \end{macrocode} +% These two are temporaries that need to be initialized. +% \begin{macrocode} +\def\@curauths{} +\def\@curinst{} +% \end{macrocode} +% These are the insertion macros. |\author@| is the internal version +% of |\author|, and just adds to the two author lists. +% +% |\institute@| is a bit trickier, it has to store the institute +% itself for later retrieval, but it also has to clear |\@authors|, so +% it can be used again for the next institute. It does this by moving +% all of the collected authors in the |\@authors| list as one item +% into the |\authors@institute| list. +% +% Because |\@institutes| and |\@instituteauthors| are parallel, there +% will be an error condition if there are authors after the last +% institute. The |\expandafter|'s are needed to get |\@authors| folded +% out. +% \begin{macrocode} +\def\author@#1{\append@item#1\to\@authors + \append@item#1\to\@allauthors } +\def\institute@#1{\append@item#1\to\@institutes + \expandafter\append@item\expandafter{\@authors}\to\@instituteauthors + \gdef\@authors{}} +% \end{macrocode} +% Format one name. +% +% The box in the first part is needed because we have to typeset once +% in order to get the |\thanks|. +% +% The |\expandafter|'s in the second part bypass grouping. Param \#2 +% is either a comma or nothing. The italic correction is needed if +% authors are typeset in Italics, or the thankssymbol will come out to +% far to the left. +% +% \changes{1997/08/13}{Removed null box for thankssymbol and switched +% places with comma (hor. spacing bugs)} +% \begin{macrocode} +\newif\ifthanks +\def\orf@#1{#1} +\def\@formatname#1#2{\begingroup + \def\thanks##1{\global\thankstrue}\setbox0\vbox{#1}% + \endgroup + \begingroup + \ifthanks + \edef\fn##1\thanks##2{\authorcase{##1}\/% + \noexpand\thanks{##2}#2}\expandafter\fn#1 + \else + \edef\fn##1{{\authorcase{##1}}#2}% + \expandafter\fn\expandafter{#1}% + \fi + \endgroup\global\thanksfalse } +% \end{macrocode} +% +% Format authors presently in |\@curauths| (These are the ones belonging +% to one specific institute). +% +% First, loop over |\@curauths| counting the number of authors. Then +% we know how many, so loop over again, typesetting all. The |,| needs +% to be given separately to make sure |\thanks| works inside an +% author. +% +% It there are 0 authors, nothing will happen at all. +% \begin{macrocode} +\newcount\cnt@authors +\def\@formatauthors{\begingroup + \authorsize + \leavevmode + \gdef\surname##1{##1}% + \gdef\email##1{ \hbox{({\tt \lowercase{##1}})}}% + \cnt@authors=0 + \def\@k@p##1{\advance\cnt@authors by 1}\@curauths + \def\@k@p##1{\advance\cnt@authors by -1 + \ifnum\cnt@authors>1 + \@formatname{##1}{,}\penalty0\ \fi % signif. space + \ifnum\cnt@authors=1 % before \fi's !! + \@formatname{##1}{} \authorand \penalty0\ \fi + \ifnum\cnt@authors<1 + \@formatname{##1}{}\par\fi}\@curauths + \vskip \afterauthorskip + \endgroup} +% \end{macrocode} +% Format one institute. +% \begin{macrocode} +\def\@formatinstitute{{\institutesize \institutecase{\@curinst}\par}} +% \end{macrocode} +% Format all authors and all institutes. Indentation is done through +% parindent and hangindent instead of rightskip, because otherwise a +% |\centering| would fail. +% +% There is a space of |\institutesep| + |\parskip| between every +% author\,/\,institute block, and double that space between the last +% two (don't understand that). +% +% This macro also takes care of the case that there is no institute at +% all given, which is likely to happen in the \LaTeX\ compatibility +% mode. {\it This does not allow you to have only the last author without +% an institute\/}. +% +% The |\relax| after |\@institutes| is absolutely necessary, or the +% author will be set twice! +% \begin{macrocode} +\newcount\cnt@institutes +\def\@authorsandinstitutes{\begingroup + \authorsize + \cnt@authors=0 + \def\@k@p##1{\advance\cnt@authors by 1}\@allauthors + \cnt@institutes=0 + \def\@k@p##1{\advance\cnt@institutes by 1}\@institutes\relax + \ifnum\cnt@institutes=0 + \let\@curauths\@allauthors + \parindent=\authorindent + \hangindent=\authorindent + \@formatauthors + \fi + \loop\ifnum\cnt@institutes>0 + \get@left\@instituteauthors\to\@curauths + \parindent=\authorindent + \hangindent=\authorindent + \@formatauthors + \get@left\@institutes\to\@curinst + \parindent=\instituteindent + \hangindent=\instituteindent + \@formatinstitute +% \ifnum\cnt@institutes=2 \vskip \institutesep\relax \fi % commented out by SK + \ifnum\cnt@institutes>1 \vskip \institutesep\relax \fi + \advance\cnt@institutes by -1 + \repeat + \vskip \afterallauthorsskip + \gdef\@authors{}% + \gdef\@allauthors{}% + \gdef\@institutes{}% + \gdef\@instituteauthors{}% + \gdef\@curauths{}% + \gdef\@curinst{}% +\endgroup} +% \end{macrocode} +% \subsection{Typesetting the title and subtitle} +% First, here are the user settings again: +% \begin{macrocode} +\def\titleflushstyle{} +\def\titlefont{\Large\rm} +\def\titlecase#1{#1} +\def\titleindent{0pt} +\def\aftertitleskip{1.8pc } +\def\presubtitleskip{-1.4pc } +\def\aftersubtitleskip{1pc } +\def\subtitlefont{\large\it} +\def\subtitleflushstyle{} +% \end{macrocode} +% Internal commands. |\@maketitle| will call |\@title|. |\title@| is +% just an internal for |\title|. +% \begin{macrocode} +\def\title@#1{\gdef\@title{% + \@formattitle{#1}\par \vskip \aftertitleskip }} +\def\@title{} +% \end{macrocode} +% The trick with the vbox is the same as above, to get |\thanks|. +% \begin{macrocode} +\def\@formattitle#1{\begingroup + \def\thanks##1{\global\thankstrue}% + \setbox\@tempboxa\vbox{#1}\endgroup + \begingroup + \titleflushstyle + \ifthanks + \def\fn##1\thanks##2{\ititle@{##1}{\,\thanks{##2}}}% + \expandafter\fn#1 + \else + \def\fn##1{\ititle@{##1}{}}\expandafter\fn\expandafter{#1}% + \fi + \endgroup\global\thanksfalse } +% \end{macrocode} +% Not much left to do here. The flush style has been set by +% |\@formattitle|, skips before and after by |\@title|. +% \begin{macrocode} +\def\titlebaselinefactor{1.05} +\def\ititle@#1#2{\begingroup + \parindent \titleindent + \hangindent \titleindent + \hyphenpenalty10000 + {\titlefont\titlecase{#1}#2% + \baselineskip=\titlebaselinefactor\baselineskip + \par} + \endgroup} +% \end{macrocode} +% Basically, this is just an echo of title. +% \begin{macrocode} +\def\@subtitle{} +\def\subtitle@#1{\gdef\@subtitle{\vskip \presubtitleskip + \@formatsubtitle{#1}\par \vskip \aftersubtitleskip }} +\def\@formatsubtitle#1{\begingroup + \def\thanks##1{\global\thankstrue}\setbox0\vbox{#1}\endgroup + \begingroup \subtitleflushstyle + \ifthanks + \def\fn##1\thanks##2{\subtitle@thanks{##1}{##2}}\expandafter\fn#1 + \else + \def\fn##1{\subtitle@@{##1}}\expandafter\fn\expandafter{#1}\fi + \endgroup + \par\global\thanksfalse} +\def\subtitle@thanks#1#2{\isubtitle@{#1}\thanks{#2}\par + \ignorespaces} +\def\subtitle@@#1{\isubtitle@{#1}\par\ignorespaces} +\def\isubtitle@#1{{\subtitlefont #1}} +% \end{macrocode} +% \subsection{Date, article type, dedication and translation.} +% These are all fairly straightforward, so I will not pay too much +% attention to these commands. +% \begin{macrocode} +\def\afterdateskip{.7\baselineskip} +\def\datesize{\footnotesize} +\def\@date{{\i@oldseries\datesize Received: \@received ; + Accepted\@accepted}\vskip \afterdateskip + \gdef\@received{\ldots\ldots}% + \gdef\@accepted{\ldots\ldots}} +\def\date@#1{\gdef\@date{{\i@oldseries\datesize #1\par}\vskip \afterdateskip + \gdef\@received{\ldots\ldots}% + \gdef\@accepted{\ldots\ldots}}} +\def\@received{\ldots\ldots} +\def\@accepted{: \ldots\ldots} +\def\revised@#1{\gdef\@accepted{ in revised form: #1}} +\def\received@#1{\gdef\@received{#1}} +\def\accepted@#1{\gdef\@accepted{ in final form: #1}} +% \end{macrocode} +% +% \begin{macrocode} +\def\artsize{\normalsize\it} +\def\afterartskip{1.5pc} +\def\beforeartskip{0pc} +\def\@arttype{} +\def\arttype@#1{\gdef\@arttype{\vskip\beforeartskip\noindent + {\artsize #1\vskip\afterartskip}}} +% \end{macrocode} +% +% \begin{macrocode} +\def\@dedication{} +\def\dedicationsize{\normalsize\it\raggedright} +\def\prededicationskip{18pt} +\def\afterdedicationskip{18pt} +\def\dedication@#1{\gdef\@dedication{% + \unskip\vskip \prededicationskip + {\dedicationsize #1\par}% + \vskip \afterdedicationskip}} +% \end{macrocode} +% +% \begin{macrocode} +\def\@translation{} +\def\translationsize{\normalsize\it\raggedright} +\def\pretranslationskip{18pt} +\def\aftertranslationskip{18pt} +\def\translation@#1{\gdef\@translation{% + \unskip\vskip \pretranslationskip + {\translationsize #1\par}% + \vskip \aftertranslationskip}} +% \end{macrocode} +% \subsection{Abstract, keywords, abbreviations, classification +% and nomenclature} +% All of these are suppposed to have the same size. The only one with +% a flexible before/after skip is |abstract|, but they all have their +% own font defined for the name. +% \begin{macrocode} +\providecommand{\abstractname}{Abstract} +\providecommand{\keywordsname}{Keywords} +\providecommand{\abbreviationsname}{Abbreviations} +\providecommand{\nomenclaturename}{Nomenclature} +\def\abstractsize{\footnotesize} +\def\abstractnamefont{\bf} +\def\abstractdot{.~} +\def\keynamefont{\bf} +\def\nomennamefont{\bf} +\def\abbrevnamefont{\bf} +\def\classnamefont{\bf} +\def\afterabstractskip{.7\baselineskip\relax} +\def\preabstractskip{0pt\relax} +% \end{macrocode} +% Abstract is a box, because we still want to support the opening +% environment before |\begin{document}|. +% +%{\it Note that the stylefile is resposible for making sure that these +%are typeset at all}. +% \begin{macrocode} +\newbox\@abstractbox +\def\@abstract{} +\newenvironment{abstract}{% + \gdef\@abstract{\message{\abstractname}% + {\vskip\preabstractskip + \noindent + \unvbox\@abstractbox + \vskip\afterabstractskip }}% + \global\setbox\@abstractbox\vbox\bgroup \abstractsize \noindent + {\abstractnamefont\abstractname\abstractdot}}{\par\egroup } +\def\@keywords{} +\long\def\keywords#1{% + \gdef\@keywords{\message{\keywordsname}% + {\abstractsize\noindent{\keynamefont + \keywordsname:~}#1\par \vskip.7\baselineskip}}} +\def\@abbreviations{} +\def\abbrev#1#2{#1 -- #2} +\long\def\abbreviations#1{% + \gdef\@abbreviations{\message{\abbreviationsname}% + {\abstractsize\noindent{\abbrevnamefont \abbreviationsname:~}% + #1\par \vskip.7\baselineskip}}} +\def\@nomenclature{} +\def\nomen#1#2{#1 -- #2} +\long\def\nomenclature#1{% + \gdef\@nomenclature{\message{\nomenclaturename}% + {\abstractsize\noindent{\nomennamefont + \nomenclaturename:\par}\noindent #1\par \vskip.7\baselineskip}}} +\def\@classification{} +\long\def\classification#1#2{% + \gdef\@classification{\message{Classification}% + {\abstractsize\noindent{\classnamefont #1: }% + #2\par \vskip.7\baselineskip}}} +\def\motto{\@ifnextchar[{\prosemotto}{\poemmotto}} +\newbox\mottobox +\def\@motto{} +\long\def\poemmotto{\global\setbox\mottobox\vbox \bgroup + \noindent + \hbox to\hsize\bgroup\begingroup + \hfill\vbox\bgroup\hsize =15pc + \footnotesize \raggedright \noindent + \parskip=3pt} +\long\def\prosemotto[#1]{\global\setbox\mottobox\vbox \bgroup + \noindent + \hbox to\hsize\bgroup \begingroup + \hfill\vbox\bgroup\hsize =15pc + \raggedright \footnotesize \noindent + \parskip=3pt} +\def\endmotto{\par \egroup \endgroup \egroup + \vspace{1\baselineskip}\egroup + \gdef\@motto{\par\message{Motto}\box\mottobox \gdef\@motto{}}} +% \end{macrocode} +% \subsection{@maketitle} +% Internal commands for typesetting of the front part. |\@maketitle| +% has been kept as simple as possible, making it easy to redefine the +% order inside a stylefile. For twocolumn output, everything that is +% done inside |\@maketitle| is typeset over two columns. +% +% As noted above, if the stylefile feels like removing some of these +% commands, it also has to find a way to have them typeset, because +% that will no longer be automatic. +% \begin{macrocode} +\def\@maketitle{% + \@arttype \@title \@subtitle \@authorsandinstitutes \@date + \@abstract \@keywords \@abbreviations \@classification + \@nomenclature \@translation \@dedication \@motto} +% \end{macrocode} +% This command is called by |\endopening| and |\maketitle|. +% \begin{macrocode} +\def\openingflushstyle{} +\def\maketitle@@{% + \begingroup + \setcounter{footnote}{0}% + \def\thefootnote{\fnsymbol{footnote}}% + \if@twocolumn + \twocolumn[{\openingflushstyle + \parindent 0pt + \@maketitle}] + \thispagestyle{opening}% + \@extramaketitle + \else + \newpage\global\@topnum\z@ + \thispagestyle{opening}% + {\openingflushstyle \parindent 0pt \@maketitle}% + \fi + \markboth{\@runningauthor}{\@runningtitle}% + \@thanks + \endgroup + \setcounter{footnote}{0}% + \let\@maketitle\relax + \gdef\@thanks{}% + \gdef\@title{}% + \let\thanks\relax } +% \end{macrocode} +% \begin{macrocode} +\def\runningtitle#1{\gdef\@runningtitle{#1}} +\gdef\@runningtitle{} +\def\runningauthor#1{\gdef\@runningauthor{#1}} +\gdef\@runningauthor{} +%</main> +%<*other> +\endinput +% \end{macrocode} +%\PrintIndex +%\end{document} +% end of kluopen.sty +%</other> |