diff options
author | Karl Berry <karl@freefriends.org> | 2006-01-11 23:56:21 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2006-01-11 23:56:21 +0000 |
commit | 8b909865f2b6ffeb4314622e1b9029e64aac7a8e (patch) | |
tree | a94ad2f8ca1c64b0e01c8c49f1952291c4b02bdc /Master/texmf-dist/source/latex/preprint/authblk.dtx | |
parent | d11486b019edfcc5645b6d3a47867f415e3f978a (diff) |
trunk/Master/texmf-dist/source/latex/preprint
git-svn-id: svn://tug.org/texlive/trunk@460 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/source/latex/preprint/authblk.dtx')
-rw-r--r-- | Master/texmf-dist/source/latex/preprint/authblk.dtx | 969 |
1 files changed, 969 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/preprint/authblk.dtx b/Master/texmf-dist/source/latex/preprint/authblk.dtx new file mode 100644 index 00000000000..0b931ced2fd --- /dev/null +++ b/Master/texmf-dist/source/latex/preprint/authblk.dtx @@ -0,0 +1,969 @@ +% \iffalse THIS IS A META-COMMENT +%<*dtx> +\ProvidesFile +%======================================================================== + {AUTHBLK.DTX} +%======================================================================== +%</dtx> +%% Copyright 1997-1999 Patrick W Daly +%% Max-Planck-Institut f\"ur Aeronomie +%% Max-Planck-Str. 2 +%% D-37191 Katlenburg-Lindau +%% Germany +%% E-mail: daly@linmpi.mpg.de +% +% This program can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. +% +% This is a contributed file to the LaTeX2e system. +% ------------------------------------------------- +% This is a LaTeX package to prepare author/affiliation blocks +% Installation: +% LaTeX this file: creates docstrip installation file authblk.ins +% AND the (LaTeX2e) documentation +% (La)TeX authblk.ins: creates package files authblk.sty, and optionally +% documentation driver authblk.drv +% (authblk.ins may be edited as needed) +% Docstrip options available: +% package - to produce a .sty file with the uncommented coding +% driver - to produce a driver file to print the documentation +% 209 - (with package) for package that runs under LaTeX 2.09 +% subpack - (with package) for coding included in other packages +% LaTeX the unstripped version to obtain the documentation +% (Documentation can be produced with LaTeX2e only) +%-------------------------------------------------------------------------- +%<*!subpack> +%<package&209>\def\ProvidesPackage#1#2] +%<package&209> {\typeout{Style option `#1'#2]}} +% +% *** Identify the package file:- +%<package&!209>\NeedsTeXFormat{LaTeX2e}[1995/06/01] +%<package>\ProvidesPackage{authblk} +%</!subpack> +% +% *** Provide command to dislay module version +%<package&subpack>\def\ModuleVersion#1[#2]{} +%<package&subpack> \ModuleVersion{authblk} +% +% *** Identify the driver file:- +%<driver>\NeedsTeXFormat{LaTeX2e} +%<driver>\ProvidesFile{authblk.drv} +% +% *** The DATE, VERSION, and other INFO +%\fi +%\ProvidesFile{authblk} + [2001/02/27 1.3 (PWD)] +%\iffalse +%<*package> +%<*!subpack> + %------------------------------------------------------------------- + % NOTICE: + % This file may be used for non-profit purposes. + % It may not be distributed in exchange for money, + % other than distribution costs. + % + % The author provides it `as is' and does not guarantee it in any way. + % +%</!subpack> +%</package> +%% authblk coding copyright (C) 1997 Patrick W. Daly +%<*package> +%<*!subpack> + % Max-Planck-Institut f\"ur Aeronomie + % Max-Planck-Str. 2 + % D-37191 Katlenburg-Lindau + % Germany + % + % E-mail: daly@linmpi.mpg.de + %----------------------------------------------------------- +%</!subpack> +%</package> +% END META-COMMENT \fi +% \changes{1.0}{1997 Apr 22}{First version} +% \changes{1.1}{1997 Aug 28}{Allow standard \cs{author} to come before package +% loaded} +% \changes{1.1a}{1998 Jul 14}{A 2.09 fixup} +% \changes{1.2}{1999 Feb 23}{Update copyright notice} +% \changes{1.3}{2001 Feb 27}{Make stand-alone by changing \cs{maketitle} to center} +% +% \CheckSum{404} +% \CharacterTable +% {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 +% 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 +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} +% +% \iffalse +%<*install> +%^^A ============================================= +%^^A Here is the docstrip installation file +%^^A It is written on first LaTeX run if it +%^^A does not already exist +%^^A ============================================= +\begin{filecontents*}{authblk.ins} +% File: authblk.ins +% Copyright 1999 Patrick W. Daly +% +% This file can be redistributed and/or modified under the terms +% of the LaTeX Project Public License Distributed from CTAN +% archives in directory macros/latex/base/lppl.txt; either +% version 1 of the License, or any later version. +% +% It is an installation file for extracting package and driver +% files from the original source file. Simply process it under +% TeX or LaTeX. + +\input docstrip + +\preamble +============================================= +IMPORTANT NOTICE: + +This program can be redistributed and/or modified under the terms +of the LaTeX Project Public License Distributed from CTAN +archives in directory macros/latex/base/lppl.txt; either +version 1 of the License, or any later version. + +This is a generated file. +It may not be distributed without the original source file \inFileName. + +Full documentation can be obtained by LaTeXing that original file. +Only a few abbreviated comments remain here to describe the usage. +============================================= +\endpreamble +\postamble + +<<<<< End of generated file <<<<<< +\endpostamble + +\declarepreamble\driver +============================================ +This is the driver file to produce the LaTeX documentation +from the original source file \inFileName. + +Make changes to it as needed. (Never change the file \inFileName!) +============================================ +\endpreamble + +\declarepostamble\driverq + +End of documentation driver file. +\endpostamble + +\keepsilent +\askforoverwritefalse + +\generate{\file{authblk.sty}{\from{authblk.dtx}{package}} + \file{authblk.drv}{\usepreamble\driver\usepostamble\driverq + \from{authblk.dtx}{driver}} + } + +\obeyspaces +\Msg{******************************************}% +\Msg{* For documentation, process authblk.dtx *}% +\Msg{* or the driver file authblk.drv *}% +\Msg{******************************************} + +\endbatchfile +\end{filecontents*} +%</install> +%<*driver> +\documentclass{ltxdoc} +%<driver>%\documentclass[twoside]{ltxdoc} +%<driver>%\documentclass[a4paper]{ltxdoc} +%<driver>%\documentclass[twoside,a4paper]{ltxdoc} +\raggedbottom + + %** To include the detailed explanation of the coding, comment out + %** the next line +\OnlyDescription + + %** To produce a command index: add the following line for one run, + %** then run makeindex -s gind.ist authblk + %** and reprocess, with or without this line (much faster without) +%<driver>% \EnableCrossrefs\CodelineIndex + + %** To produce a change history: add the following line for one run, + %** then run makeindex -s gglo.ist -o authblk.gls authblk.glo + %** and reprocess, with or without this line (faster without) +%<driver>% \RecordChanges + +\DisableCrossrefs %May stay; zapped by \EnableCrossrefs +\CodelineNumbered %May stay + +\begin{document} + \DocInput{authblk.dtx} +\end{document} +%</driver> +%\fi +% +% \DoNotIndex{\begin,\CodelineIndex,\CodelineNumbered,\def,\DisableCrossrefs} +% \DoNotIndex{\DocInput,\documentclass,\EnableCrossrefs,\end,\GetFileInfo} +% \DoNotIndex{\NeedsTeXFormat,\OnlyDescription,\RecordChanges,\usepackage} +% \DoNotIndex{\ProvidesClass,\ProvidesPackage,\ProvidesFile,\RequirePackage} +% \DoNotIndex{\LoadClass,\PassOptionsToClass,\PassOptionsToPackage} +% \DoNotIndex{\DeclareOption,\CurrentOption,\ProcessOptions,\ExecuteOptions} +% \DoNotIndex{\AtEndOfClass,\AtEndOfPackage,\AtBeginDocument,\AtEndDocument} +% \DoNotIndex{\InputIfFileExists,\IfFileExists,\ClassError,\PackageError} +% \DoNotIndex{\ClassWarning,\PackageWarning,\ClassWarningNoLine} +% \DoNotIndex{\PackageWarningNoLine,\ClassInfo,\PackageInfo,\MessageBreak} +% \DoNotIndex{\space,\protect,\DeclareRobustCommand,\CheckCommand} +% \DoNotIndex{\newcommand,\renewcommand,\providecommand,\newenvironment} +% \DoNotIndex{\renewenvironment,\newif,\newlength,\newcounter,\setlength} +% \DoNotIndex{\setcounter,\if,\ifx,\ifcase,\ifnum,\ifdim,\else,\fi} +% \DoNotIndex{\texttt,\textbf,\textrm,\textsl,\textsc} +% \DoNotIndex{\textup,\textit,\textmd,\textsf,\emph} +% \DoNotIndex{\ttfamily,\rmfamily,\sffamily,\mdseries,\bfseries,\upshape} +% \DoNotIndex{\slshape,\scshape,\itshape,\em,\LaTeX,\LaTeXe} +% \DoNotIndex{\filename,\fileversion,\filedate,\let} +% \DoNotIndex{\\,\@empty,\@namedef,\@nameuse,\@tempa,\@temptokena} +% \DoNotIndex{\@unexpandable@protect,\addtocounter,\and,\arabic} +% \DoNotIndex{\begingroup,\c@authors,\edef,\endgroup,\expandafter} +% \DoNotIndex{\ignorespaces,\large,\maxdimen,\noexpand,\normalfont,\number} +% \DoNotIndex{\relax,\textsuperscript,\the,\value,\xdef,\z@} +% \DoNotIndex{\@ifundefined,\@ifnextchar,\document,\gdef,\global,\rm} +% \DoNotIndex{\rlap,\footnote,\thanks} +% +% \setcounter{IndexColumns}{2} +% \setlength{\IndexMin}{10cm} +% \setcounter{StandardModuleDepth}{1} +% +% \GetFileInfo{authblk} +% +% \title{\bfseries A \LaTeX\ Package to Prepare Author and Affiliation Blocks} +% +% \author{Patrick W. Daly} +% +% \date{This paper describes \LaTeXe\ package \texttt{\filename}\\ +% version \fileversion{} from \filedate\\[1ex] +% \textsl{It is part of the \texttt{preprint} collection of packages} +% } +% +% \maketitle +% +% \pagestyle{myheadings} +% \markboth{P. W. Daly}{Author/Affiliation Blocks} +% +%^^A In order to keep all marginal notes on the one (left) side: +%^^A (otherwise they switch sides disasterously with twoside option) +% \makeatletter \@mparswitchfalse \makeatother +% +%\begin{small}\begin{center}\textbf{Summary}\end{center} +% The stripped version of this file contains the following brief description: +%\iffalse +%<*package&!subpack> + % Author/Affiliation Blocks +%\fi +% \begin{verbatim} + % A LaTeX2e package to redefine the \author command to work as normal or + % to allow a footnote style of author/affiliation input. + % + % Three methods of input: + % 1. Standard LaTeX + % \author{Name1//Affil1 /and Name2 and Name3//Affil2 . . .} + % (use \authorcr, not \\, to force new line within the author text) + % 2. Automatic mode (selects modes 1 or 3 depending on number of affiliations) + % \author{Name1} + % \affil{Affil1} + % \author{Name2} + % \author{Name3} + % \affil{Affil2} + % . . . + % 3. Footnotes explicitly + % \author[*]{Name1} + % \author[**]{Name2} + % \author[**]{Name3} + % \affil[*]{Affil1} + % \affil[**]{Affil2} + % . . . +% \end{verbatim} +%\iffalse + % See documentation in authblk.dtx for further configuration possibilities. + %----------------------------------------------------------- +%</package&!subpack> +%\fi +%\end{small} +% \newcommand\brsl{/\discretionary{}{}{}} +% +% \section{Introduction} +% The standard \LaTeX\ syntax for entering author names and their +% affiliations is rather limited. The standard is to have \emph{author +% blocks} consisting of all authors from one institute grouped together. +% However, if there are many institutes, or if the authors are ordered in +% some other way (e.g.\ alphabetically) it is more appropriate to use a +% footnote system. Both methods should be available for any paper since the +% style depends more on the number of authors and affiliations and their +% mixture. +% +% This package offers a syntax for entering author names and their +% affiliations that permits both styles, and is also compatible with the +% standard \LaTeX\ syntax. It places its results in the control sequence +% |\@author|, which is the standard container for the author\brsl{}affiliation +% names; in this way it can be used immediately with standard \LaTeX\ +% classes, or with packages that modify the title\brsl{}author block. +% +% \section{Invoking the Package} +% The macros in this package are included in the main document +% with the |\usepackage| command of \LaTeXe, +% \begin{quote} +% |\documentclass[..]{...}|\\ +% |\usepackage[|\emph{options}|]{|\texttt{\filename}|}| +% \end{quote} +% where the possible \emph{options} are described below in Section~\ref{opts}. +% +% \section{Usage} +% +% Authors and affiliations can be printed in author blocks, as +% \begin{center} +% \begin{tabular}[t]{c} +% J. B. Smith\\Institute for Research\\Hamilton, Ontario +% \end{tabular}\\[1ex] +% \begin{tabular}[t]{c} +% C. T. Appleton and P. R. Bailey\\NASA, Greenbelt, MD +% \end{tabular} +% \end{center} +% or in a line with footnote markers for the affiliations, as +% \begin{center} +% J. B. Smith\textsuperscript{1}, C. T. Appleton\textsuperscript{2}, and +% P. R. Bailey\textsuperscript{2}\\[1ex] +% \textsuperscript{1}Institute for Research, Hamilton, Ontario\\ +% \textsuperscript{2}NASA, Greenbelt, MD +% \end{center} +% +% \DescribeMacro{\author} +% \DescribeMacro{\affil} +% The user can enter the author and affiliation information in a number of +% different manners. +% \begin{enumerate} +% \item \label{ab}Standard \LaTeX, with syntax +% \begin{quote} +% |\author{|\dots|\and|\dots|\and|\dots|}| +% \end{quote} +% where each block of author(s)\brsl{}affiliation comes between the +% |\and| commands, containing possibly |\\| for new lines; +% +% \item \label{abfn} Automatic switching between author block or footnote +% style, information input with a series of |\author|, |\affil| +% commands as +% \begin{quote} +% |\author{|\emph{author1}|}|\\ +% |\author{|\emph{author2}|}|\\ +% |\affil{|\emph{affil1}|}|\\ +% |\author{|\emph{author3}|}|\\ +% |\author{|\emph{author4}|}|\\ +% |\affil{|\emph{affil2}|}|\\ +% $\cdots$ +% \end{quote} +% where the authors will appear all in one (possibly continued) line +% with automatic footnotes, and the affiliations appear in separate lines +% below; +% +% \item \label{fn}Footnote style with manual footnote markers given as +% optional arguments; in this case, the |\author| and |\affil| commands +% can be fully separated: +% \begin{quote} +% |\author[1]{|\emph{author1}|}|\\ +% |\author[1]{|\emph{author2}|}|\\ +% |\author[2]{|\emph{author3}|}|\\ +% |\author[2]{|\emph{author4}|}|\\ +% |\affil[1]{|\emph{affil1}|}|\\ +% |\affil[2]{|\emph{affil2}|}|\\ +% $\cdots$ +% \end{quote} +% \end{enumerate} +% Method \ref{ab} can only produce author blocks; method \ref{fn} only +% footnotes, while \ref{abfn} can produce both. If the number of affiliations +% is greater than \texttt{Maxaffil}, footnotes are used, otherwise author +% blocks. +% +% \DescribeMacro{\authorcr} +% With method \ref{ab}, the |\\| command is used to switch to affiliation +% text, possibly changing the font; if the author text is to be forced to a +% new line, use |\authorcr| instead. +% +% \noindent\textbf{Warning:} +% methods \ref{abfn} and \ref{fn} can only be used \emph{after} +% \texttt{\filename} has been loaded, since |\affil| is otherwise +% not defined. However, a single |\author| command (method \ref{ab}) +% can appear before |\usepackage|, or even before |\documentclass|, +% as is allowed in standard \LaTeX. +% +% \section{Configuration} +% +% Certain aspects of the author\brsl{}affiliation blocks can be controlled by +% the user through redefinitions. +% +% As already \marginpar{\raggedleft\texttt{Maxaffil}} +% mentioned, the maximum number of affiliations before automatically +% switching from author block to footnote mode is set in the counter +% |Maxaffil|. Redefine this with +% \begin{quote}|\setcounter{Maxaffil}{2}|\end{quote} +% The default is 2. +% +% \DescribeMacro{\Authfont} +% \DescribeMacro{\Affilfont} +% The author and affiliation lines can be set in different fonts, determined +% by these macros. By default they are |\normalfont|. Redefine them with +% |\renewcommand|, for example: +% \begin{quote}\begin{verbatim} +% \renewcommand\Authfont{\scshape} +% \renewcommand\Affilfont{\itshape\small} +% \end{verbatim} +% \end{quote} +% +% \DescribeMacro{\affilsep} +% The interline spacing between the author and affiliation lines is set by +% the length |\affilsep|. Change this with |\setlength|, as +% \begin{quote}|\setlength{\affilsep}{1em}|\end{quote} +% This spacing applies to both footnote and author block modes. +% +% \DescribeMacro{\Authsep} +% \DescribeMacro{\Authand} +% \DescribeMacro{\Authands} +% In footnote mode, one can change the texts that comes between the +% authors' names, between two authors, and before the last author when there +% are more than two. For example, +% \begin{quote}\begin{verbatim} +% \renewcommand\Authsep{, } +% \renewcommand\Authand{ and } +% \renewcommand\Authands{, and } +% \end{verbatim} +% \end{quote} +% This example actually shows the defaults. +% +% \section{Options during Loading}\label{opts} +% Some reconfigurations are provided for by means of options to the +% |\usepackage| command. These are: +% \begin{description} +% \item[\ttfamily blocks] +% sets |Maxaffil| to $\infty$ so that the automatic selection will always be +% author\brsl{}affiliation blocks; +% +% \item[\ttfamily noblocks] +% sets |Maxaffil| to 0 so that the automatic selection will always be +% footnote mode; +% +% \item[\ttfamily max$n$] ($n=2,6$) sets |Maxaffil| to $n$; +% +% \item[\ttfamily auth-sc] sets author font to small caps; +% +% \item[\ttfamily auth-sc-lg] sets author font to small caps, but with size +% |\large|; +% +% \item[\ttfamily auth-lg] sets author font to normal, but in size |\large|; +% +% \item[\ttfamily affil-sl] sets affiliation font to slanted; +% +% \item[\ttfamily affil-it] sets affiliation font to italic; +% +% \item[\ttfamily german] changes `and' to `und' in author lists. +% \end{description} +% +% \StopEventually{\PrintIndex\PrintChanges} +% +% \section{Options with \texttt{docstrip}} +% The source \texttt{.dtx} file is meant to be processed with +% \texttt{docstrip}, for which a number of options are available: +% \begin{description} +% \item[\ttfamily package] to produce a \texttt{.sty} package file with most +% comments removed; +% +% \item[\ttfamily subpack] (together with \texttt{package}) for coding that +% is to be included inside a larger package; even more comments are +% removed, as well as \LaTeXe{} option handling and identification; +% +% \item[\ttfamily 209] (together with \texttt{package}) for a style option +% file that will run under the older \LaTeX~2.09; +% +% \item[\ttfamily driver] to produce a driver \texttt{.drv} file that will +% print out the documentation under \LaTeXe. The documentation cannot +% be printed under \LaTeX~2.09. +% +% \end{description} +% The source file \texttt{\filename.dtx} is itself a driver file and can +% be processed directly by \LaTeXe. +% +% \section{The Coding} +% This section presents and explains the actual coding of the macros. +% It is nested between |%<*package>| and |%</package>|, which +% are indicators to \texttt{docstrip} that this coding belongs to the package +% file. +% +% The \texttt{docstrip} option |<subpack>| should only be called if the +% coding is to be included as part of another package, in which case the +% announcement text and \LaTeXe{} options are suppressed. +% +% An alternative version of this coding is provided for running as a +% style file under \LaTeX~2.09. Code lines belonging to this are +% indicated with guard |<209>|; those for LaTeXe{} only with |<!209>|. +% +% \begin{macrocode} +%<*package> +% \end{macrocode} +% +% \subsection{Basic Idea} +% +% In the standard \LaTeX\ classes, the authors and their affiliations are +% input through the |\author| command, which simply stores the argument in +% |\@author|. The text is then output by the |\maketitle| macro within a +% |tabular| environment, as +% \begin{quote}\begin{verbatim} +% \begin{tabular}[t]{c}% +% \@author +% \end{tabular} +% \end{verbatim} +% \end{quote} +% Different blocks within the |\author| text are separated by the |\and| +% command, defined as +% \begin{quote}\begin{verbatim} +% \def\and{% +% \end{tabular}% +% \hskip 1em \@plus.17fil% +% \begin{tabular}[t]{c}}% +% \end{verbatim} +% \end{quote} +% Clearly, the definition of |\and| must be compatible with the environment +% in which |\@author| is output. +% +% The \texttt{\filename} package provides a new way to enter the author and +% affiliation data, but puts the results into |\@author|, which means it can +% be used with the standard classes or with any class that has the author +% information in |\@author|. Since \texttt{\filename} controls all the font +% formatting for author and affiliation lines, |\maketitle| should not do +% this. +% +% \subsection{Configurable Commands} +% +% All internal commands are designated with |\AB@..| to avoid name conflicts +% with other packages. Commands that may be redefined for local configuration +% contain no |@| and begin with an uppercase letter, like |\Authfont|. +% +% The following allow the author and affiliation blocks to be formatted. +% These may be changed in the document or in packages that input (include) +% \texttt{\filename}. +% +% \begin{macro}{\Authfont} +% \begin{macro}{\Affilfont} +% Declarations that are to be issued for the authors and affiliations are +% defined here. Redefine these, for example, as +% \begin{quote}\begin{verbatim} +% \renewcommand\Authfont{\scshape} +% \renewcommand\Affilfont{\itshape\small} +% \end{verbatim} +% \end{quote} +% By default, they are the |\normalfont|. +% \begin{macrocode} +\newcommand\Authfont{\normalfont} +\newcommand\Affilfont{\normalfont} +%<209>\@ifundefined{normalfont}{\let\normalfont\rm}{} +% \end{macrocode} +% \end{macro}\end{macro} +% +% \begin{macro}{\Authsep} +% \begin{macro}{\Authand} +% \begin{macro}{\Authands} +% Three macros determine what comes between author names, +% \begin{macrocode} +\newcommand\Authsep{, } +% \end{macrocode} +% what comes between the last and second last names for more than two authors, +% \begin{macrocode} +\newcommand\Authands{, and } +% \end{macrocode} +% and for exactly two authors. +% \begin{macrocode} +\newcommand\Authand{ and } +% \end{macrocode} +% These could be language dependent. +% \end{macro}\end{macro}\end{macro} +% +% \begin{macro}{\affilsep} +% The vertical spacing between an author and affiliation line. The length +% |\@affilsep| comes between affiliation lines and switches between +% |\affilsep| and 0~pt as needed. +% \begin{macrocode} +\newlength{\affilsep}\setlength{\affilsep}{1em} +\newlength{\@affilsep} +% \end{macrocode} +% \end{macro} +% Also part of the local configuration is the maximum number of affiliations +% before switching to footnote mode. Redefine this with |\setcounter|. +% \begin{macrocode} +\newcounter{Maxaffil} +\setcounter{Maxaffil}{2} +% \end{macrocode} +% +% \subsection{Package Options} +% +% Options are provided to select some author and affiliation fonts, and +% certain values of |Maxaffil|, including 0 (always footnote mode) and +% infinity (always block mode). +% \begin{macrocode} +%<*!subpack&!209> +\DeclareOption{blocks}{\setcounter{Maxaffil}{\maxdimen}} +\DeclareOption{noblocks}{\setcounter{Maxaffil}{0}} +\DeclareOption{max2}{\setcounter{Maxaffil}{2}} +\DeclareOption{max3}{\setcounter{Maxaffil}{3}} +\DeclareOption{max4}{\setcounter{Maxaffil}{4}} +\DeclareOption{max5}{\setcounter{Maxaffil}{5}} +\DeclareOption{max6}{\setcounter{Maxaffil}{6}} +\DeclareOption{auth-sc}{\renewcommand\Authfont{\scshape}} +\DeclareOption{auth-sc-lg}{\renewcommand\Authfont{\large\scshape}} +\DeclareOption{auth-lg}{\renewcommand\Authfont{\large}} +\DeclareOption{affil-sl}{\renewcommand\Affilfont{\slshape}} +\DeclareOption{affil-it}{\renewcommand\Affilfont{\itshape}} +\DeclareOption{german}{\renewcommand\Authand{, und }% + \renewcommand\Authands{, und }} +\ProcessOptions +%</!subpack&!209> +% \end{macrocode} +% +% \subsection{Supporting Macros} +% +% First declare some counters and flags. The number of authors, affiliations, +% and a flag to mark a new affiliation. +% \begin{macrocode} +\newcounter{authors} +\newcounter{affil} +\newif\ifnewaffil \newaffiltrue +% \end{macrocode} +% +% \begin{macro}{\AB@authnote} +% \begin{macro}{\AB@affilnote} +% The formatting of the footnote markers in the author and affiliation lines. +% The |\textsuperscript| command must be defined for 2.09 and provided for +% earlier version of \LaTeXe\ (before 1995/06/01). +% \begin{macrocode} +\newcommand\AB@authnote[1]{\textsuperscript{\normalfont#1}} +\newcommand\AB@affilnote[1]{\textsuperscript{\normalfont#1}} +%<209>\@ifundefined{textsuperscript}{\newcommand\textsuperscript[1]{$^{#1}$}}{} +%<!209>\providecommand\textsuperscript[1]{$^{#1}$} +% \end{macrocode} +% \end{macro}\end{macro} +% +% \begin{macro}{\AB@blk@and} +% The macro that comes between author blocks. Initially this is nothing other +% than setting the author font, but will be set to |\and| after the first +% invocation. Again, everything in this definition must be robust, either +% intrinsically or with |\protect| commands. The macro |\AB@setsep| +% sets |\@affilsep| to the author-affiliation separation. +% \begin{macrocode} +\newcommand\AB@blk@and{\protect\Authfont\protect\AB@setsep} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\AB@pand} +% The `protected' version of |\and| that is inserted in |\AB@authors| between +% authors and affiliations; since it begins a new author block, it sets the +% font to the author font, and the interline spacing to the +% author\brsl{}affiliation spacing. +% \begin{macrocode} +\newcommand\AB@pand{\protect\and \protect\Authfont \protect\AB@setsep} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@sep1}\begin{macro}{\@sep2} +% The $n$th author in |\AB@authlist| is preceeded by +% |\@sep|$n$; this is defined as empty for $n$=1 and the as the +% two-author separation for $n$=2, to be altered later. +% \begin{macrocode} +\@namedef{@sep1}{} +\@namedef{@sep2}{\Authand} +% \end{macrocode} +% \end{macro}\end{macro} +% +% \begin{macro}{\AB@affilsep} +% \begin{macro}{\AB@affilsepx} +% What comes before the very first footnote affiliation, and before all +% successive affiliations. These should be separate lines within some +% tabular environment, so reset the font every time to the affiliation one. +% (Note: |\\| is robust in \LaTeXe, but not in 2.09; adding the |\protect| +% before |\\| does not hurt, though.) +% \begin{macrocode} +\newcommand\AB@affilsep{\protect\Affilfont} +\newcommand\AB@affilsepx{\protect\\\protect\Affilfont} +% \end{macrocode} +% \end{macro}\end{macro} +% +% \begin{macro}{\AB@setsep} +% \begin{macro}{\AB@resetsep} +% The current interline spacing within affiliations is |\@affilsep|; the +% initial spacing (between authors and first affiliation line) is +% |\affilsep|; switching |\@affilsep| between 0~pt and |\affilsep| is done +% with these macros. +% \begin{macrocode} +\newcommand\AB@setsep{\setlength{\@affilsep}{\affilsep}} +\newcommand\AB@resetsep{\setlength{\@affilsep}{\z@}} +% \end{macrocode} +% \end{macro}\end{macro} +% +% \begin{macro}{\AB@authlist} +% \begin{macro}{\AB@affillist} +% \begin{macro}{\AB@authors} +% There are three `lists' that are filled up with various commands: +% \begin{itemize} +% \item |\AB@authlist| containing all the authors; +% +% \item |\AB@affillist| containing all the affiliations; +% +% \item |\AB@authors| ($\equiv$|\@author|) containing the input of the +% standard \LaTeX\ |\author| command, a mixture of authors and +% affiliations, with blocks separated by |\and| commands. +% \end{itemize} +% |\AB@empty| is provided for testing the emptiness of |\AB@affillist| +% later. (Do not use |\@empty|, because that is not a `long' macro.) +% +% Here these lists are initialized. +% \begin{macrocode} +\newcommand\AB@authlist{} +\newcommand\AB@affillist{} +\newcommand\AB@authors{} +\newcommand\AB@empty{} +% \end{macrocode} +% \end{macro}\end{macro}\end{macro} +% +% \begin{macro}{\AB@author} +% \changes{1.1}{1997 Aug 28}{Initialize to existing \cs{@author}} +% \changes{1.1a}{1998 Jul 14}{Define \cs{@author} for 2.09} +% The |\AB@author| macro holds the argument of the last issued |\author| +% command, normally stored in |\@author|. Equate these now in case +% |\author| was issued before the class and/or packages were loaded, +% something that is allowed in standard \LaTeX. Of course, the new +% features with |\affil| and multiple |\author| commands will not +% function before this package is loaded. +% +% For \LaTeX~2.09, must provisionally define |\@author|. +% \begin{macrocode} +%<209>\@ifundefined{@author}{\def\@author}{} +\xdef\AB@author{\noexpand\AB@blk@and\@author} +% \end{macrocode} +% \end{macro} +% +% \subsection{User Interfacing Commands} +% +% \begin{macro}{\author} +% Three lists are maintained for authors and affiliations. In |\AB@authors|, +% the text for the author block is stored; both |\author| and |\affil| add +% their arguments to this list, with |\\| between author and affiliation, and +% |\and| between the affiliation and the next author text. If one only uses +% the |\author| command (standard \LaTeX) one must add these separators +% explicitly in the argument. +% +% In addition, both |\author| and |\affil| store their arguments in +% |\AB@authlist| and |\AB@affillist|, adding footnote marks determined either +% automatically, or by the optional arguments. +% +% Finally, |\@author| will be made up either by |AB@author|, |\AB@authors|, or +% |\AB@authlist| plus |\AB@affillist|. +% +% Consequently, |\author| and |\affil| are fairly complex. +% \begin{macrocode} +%<209>\renewcommand\author{\@ifnextchar[%] +%<209> {\@Xauthor}{\@Xauthor[]}} +%<209>\def\@Xauthor[#1]#2% +%<!209>\renewcommand\author[2][]% +% \end{macrocode} +% The flag |\ifnewaffil| is set by |\affil| to tell |\author| that a new +% author block is beginning. This flag is set to \meta{false} at the end +% if this macro. +% \begin{macrocode} + {\ifnewaffil\addtocounter{affil}{1}% + \edef\AB@thenote{\arabic{affil}}\fi +% \end{macrocode} +% Argument |#1| is the optional footnote marker; if it is present, force the +% footnote mode by setting |Maxaffil| counter to zero. +% \begin{macrocode} + \if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}% + \setcounter{Maxaffil}{0}\fi +% \end{macrocode} +% The author list in |\AB@authlist| is to have commas (|\Authsep|) between +% the names, nothing before the first one, and `and' (|\Authands|) before the +% last one. If only two names are present, they are separated by |\Authand|. +% To accomplish this, place |@sep|$n$ before author $n$ which +% is defined to be |\Authands|; at the same time, define the previous one to +% be |\Authsep|, taking care that |\@sep1| (empty) is never redefined, and +% that |\@sep2| (|\Authand|) is only redefined after the third author. Note +% that at this point in the coding, the |authors| counter is not yet +% incremented, so its value is $n-1$. +% \begin{macrocode} + \ifnum\value{authors}>1\relax + \@namedef{@sep\number\c@authors}{\Authsep}\fi + \addtocounter{authors}{1}% +% \end{macrocode} +% Put the new author text in |#2| into the lists |\AB@authors| and +% |\AB@authlist|. Because of the expansion method of getting the existing +% contents of these lists, all commands in the arguments must be robust. For +% this reason, make |\thanks| and |\footnote| robust (they normally are +% fragile). +% +% Note that every new line inserted into |\AB@authors| must contain +% formatting declarations, like |\Authfont| and |\Affilfont|. +% The newline command |\\| switches to affiliation, with extra interline +% spacing and a different font. The extra spacing is in |\@affilsep| which is +% either zero or |\affilsep|, as set by commands |\AB@resetsep| and +% |\AB@setsep|. The extra spacing is meant only to come between author and +% first affiliation lines. +% +% The newline command should behave differently in |\AB@authlist|; the +% |\authorcr| macro is adequate for this (new line and |\Authfont|). +% +% Reminder: the font declarations must be made on each new line since +% |\@author| is normally placed within a |tabular| environment where each +% line has local scope so all declarations and definitions apply only within +% it. +% \begin{macrocode} + \begingroup + \let\protect\@unexpandable@protect \let\and\AB@pand + \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}% + \@temptokena=\expandafter{\AB@authors}% + {\def\\{\protect\\[\@affilsep]\protect\Affilfont + \protect\AB@resetsep}% +% \end{macrocode} +% To allow for the standard \LaTeX\ syntax with only one |\author| command +% for everything, put the argument |#2| into |\AB@author| with the +% appropriate preamble |\AB@blk@and|. If |\affil| is never called, this +% will be the final content of |\@author|. Otherwise it will become +% |\AB@authors|. Here the previous author is |\AB@au@str| is put into +% |\AB@authors|, and then |#2| is stored for the next |\author| or |\affil| +% call. |\AB@as| is the separator between authors in one sub-block; |\AB@las| +% is the separator before the last author in a sub-block; this is entered by +% |\affil| which signals the end of a sub-block of authors. +% (This delayed entry method cannot be used for |\AB@authlist| because there +% one needs to know the very last author, but one never knows if another +% |\affil| command might come along.) +% \begin{macrocode} + \xdef\AB@author{\AB@blk@and#2}% + \ifnewaffil\gdef\AB@las{}\gdef\AB@lasx{\protect\Authand}\gdef\AB@as{}% + \xdef\AB@authors{\the\@temptokena\AB@blk@and}% + \else + \xdef\AB@authors{\the\@temptokena\AB@as\AB@au@str}% + \global\let\AB@las\AB@lasx\gdef\AB@lasx{\protect\Authands}% + \gdef\AB@as{\Authsep}% + \fi + \gdef\AB@au@str{#2}}% + \@temptokena=\expandafter{\AB@authlist}% + \let\\=\authorcr + \xdef\AB@authlist{\the\@temptokena + \protect\@nameuse{@sep\number\c@authors}% + \protect\Authfont#2\AB@authnote{\AB@note}}% + \endgroup +% \end{macrocode} +% Define |\@sep|$n$ preceeding the current author to be |\Authands|, in case +% this should turn out to be the last author. If another author comes, he +% will redefine this (see above). +% \begin{macrocode} + \ifnum\value{authors}>2\relax + \@namedef{@sep\number\c@authors}{\Authands}\fi + \newaffilfalse +} +% \end{macrocode} +% +% For \LaTeX~2.09, we must define this \LaTeXe\ macro. +% \begin{macrocode} +%<209>\def\@unexpandable@protect{\noexpand \protect \noexpand} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\authorcr} +% In the author blocks made up with the |\author| command alone, the |\\| +% command is used to start a new line and to switch to affiliation formatting. +% In order to force a new line within the author line, use |\authorcr|. +% \begin{macrocode} +\newcommand\authorcr{\protect\\ \protect\Authfont \protect\AB@setsep}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\affil} +% The affiliation information is also written into |\AB@authors| and +% |\AB@affillist|. The |\ifnewaffil| flag is set to inform |\author|, the +% `blank-or-and' macro |\AB@blk@and| is set to (protected) `and', and if +% there is an optional argument, the counter |Maxaffil| is set to zero to +% force footnote mode. +% \begin{macrocode} +%<209>\newcommand\affil{\@ifnextchar[%] +%<209> {\@Xaffil}{\@Xaffil[]}} +%<209>\def\@Xaffil[#1]#2% +%<!209>\newcommand\affil[2][]% + {\newaffiltrue\let\AB@blk@and\AB@pand + \if\relax#1\relax\def\AB@note{\AB@thenote}\else\def\AB@note{#1}% + \setcounter{Maxaffil}{0}\fi +% \end{macrocode} +% As for |\author|, the newline command must be highjacked and altered. For +% |\AB@authors|, it issues a new line and declares the affiliation font. For +% |\AB@authlist|, where each affiliation is to appear on a single line, it is +% converted into a comma. +% \begin{macrocode} + \begingroup + \let\protect\@unexpandable@protect + \def\thanks{\protect\thanks}\def\footnote{\protect\footnote}% + \@temptokena=\expandafter{\AB@authors}% + {\def\\{\protect\\\protect\Affilfont}\xdef\AB@temp{#2}}% + \xdef\AB@authors{\the\@temptokena\AB@las\AB@au@str + \protect\\[\affilsep]\protect\Affilfont\AB@temp}% + \gdef\AB@las{}\gdef\AB@au@str{}% + {\def\\{, \ignorespaces}\xdef\AB@temp{#2}}% + \@temptokena=\expandafter{\AB@affillist}% + \xdef\AB@affillist{\the\@temptokena \AB@affilsep + \AB@affilnote{\AB@note}\protect\Affilfont\AB@temp}% + \endgroup +% \end{macrocode} +% The item before each affiliation is |\AB@affilsep|, which changes from its +% initial definition to |\AB@affilsepx| after the first call. +% \begin{macrocode} + \let\AB@affilsep\AB@affilsepx +} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@author} +% Define |\@author| to be the last |\author| call if |\affil| was +% never used (standard \LaTeX), or define it to be either |\AB@authors| or a +% combination of |\AB@authlist| and |\AB@authlist| depending on number of +% affiliations. +% +% The standard classes put any footnote markers (with |\thanks| or +% |\footnote|) into |\rlap| so they overlap with punctuation. Unfortunately, +% they also overlap any other affiliation footnote markers. Thus turn off +% |\rlap| for footnote style. Since |\@author| is normally called within +% some environment, this change is local. +% \begin{macrocode} +\def\@author{} +\renewcommand\@author{\ifx\AB@affillist\AB@empty\AB@author\else + \ifnum\value{affil}>\value{Maxaffil}\def\rlap##1{##1}% + \AB@authlist\\[\affilsep]\AB@affillist + \else \AB@authors\fi\fi} +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\maketitle} +% \changes{1.3}{2001 Feb 27}{Modify standard macro} +% The standard definitions of |\maketitle| place the |\@author| text in a +% |tabular| environment, which is not appropriate for the long author list +% possible with \texttt{\filename}. Instead, use the |center| environment. +% Other packages that call \texttt{\filename} such as \texttt{mpaehead} redefine +% |\maketitle| accordingly. But if \texttt{\filename} is used on its own, this +% will not be done. Thus highjack the |\maketitle| command and redefine +% |tabular| to be |center|. +% \begin{macrocode} +\let\AB@maketitle=\maketitle +\def\maketitle + {{\renewenvironment{tabular}[2][]{\begin{center}} + {\end{center}} + \AB@maketitle}} +%</package> +% \end{macrocode} +% \end{macro} +% +% \Finale |