% \iffalse % ****** Start of file revtex4.dtx ****** % % % This file is part of the APS files in the REVTeX 4 distribution. % For version number, search on the string "%FileInfo" % % First revision by David Carlisle, % later versions by Arthur Ogawa. % % Copyright (c) 2000 The American Physical Society. % http://publish.aps.org/revtex4/ % mailto:revtex@aps.org % % % See the REVTeX 4 README file for restrictions and more information. % \fi % \iffalse %<*driver> \ProvidesFile{revtex4.dtx} % %\NeedsTeXFormat{LaTeX2e}[1996/12/01] %\ProvidesClass{revtex4} %\ProvidesFile{aps.rtx} %\ProvidesFile{rmp.rtx} %<10pt>\ProvidesFile{10pt.rtx} %<11pt>\ProvidesFile{11pt.rtx} %<12pt>\ProvidesFile{12pt.rtx} %\ProvidesPackage{revsymb} %\ProvidesFile{revtex.drv} %<*!class-pst> [2020/09/30 v4.0a (http://publish.aps.org/revtex4/ for documentation)]%FileInfo % %<*driver> \listfiles \documentclass{ltxdoc} \RequirePackage{ltxdocext}% \let\url\undefined \RequirePackage[colorlinks=true,linkcolor=blue]{hyperref}% \expandafter\ifx\csname package@font\endcsname\relax\else \expandafter\expandafter \expandafter\RequirePackage \expandafter\expandafter \expandafter{\csname package@font\endcsname}% \fi \CodelineIndex\EnableCrossrefs \begin{document} \gdef\lquote{`}\gdef\rquote{'}% %{\tracingall\showlists} \DocInput{revtex4.dtx} \end{document} % % \fi % % \GetFileInfo{revtex4.dtx} % % \title{The \classname{revtex4} document class of the American Physical Society} % \author{Arthur Ogawa% % \thanks{First revision by David Carlisle}% % }% % \date{Version \fileversion, dated \filedate}% % \newcommand\revtex{REV\TeX} % % \maketitle % % This file embodies the implementation of the APS \revtex\ 4 document class % for electronic submissions to journals. % % The distribution point for this work is % \url{http://publish.aps.org/revtex4/}, % which contains fully unpacked, prebuilt runtime files and documentation. % % \tableofcontents % % \section{Using \protect\revtex} % % The file \file{README} has retrieval and installation information. % % User documentation is presented separately in \file{revguide.tex}. % % The file \file{template.aps} is a boilerplate file. % % \StopEventually{} % % \changes{v4.a}{1998/01/16} % {Initial version} % \changes{v4.0beta 2}{1999/06/20} % {First modifications by Arthur Ogawa (mailto:ogawa@teleport.com)} % \changes{v4.0beta 3}{1999/11/13} % {New ltxgrid-based code, other bug fixes} % \changes{v4.0beta 4}{2000/05/10} % {More features and bug fixes: compatability with longtable and array packages. % Now certainly incompatible with multicol.} % \changes{v4.0beta 5}{2000/11/14} % {Bug fixes and minor new features: title block affiliations can have ancillary data, just like authors; % clearpage processing revamped, with floats staying in order; widetext ornaments.} % \changes{v4.0beta 6}{2001/02/13} % {Last bug fixes before release.} % % \section{Overview}% % \revtex\ is a \LaTeXe\ document class, aomewhat like a hybrid of % the standard \LaTeX\ \classname{book} and \classname{article} classes. % % Certain packages are (should be) loaded by this class in any case: % \classname{amssymb}, \classname{amsmath}, \classname{bm}, \classname{natbib}. % % Certain packages are automatically loaded by this class % when a corresponding class option has been invoked: % % \begin{tabular}{ll} % \textbf{\revtex\ option}&\textbf{package}\\ % \classoption{amsfonts}&\classname{amsfonts}\\ % \classoption{amssymb}&\classname{amssymb}\\ % \classoption{aps}&\classname{overcite}\\ % \end{tabular} % % Certain other packages are to be loaded by the % document through explicit use of \cmd\usepackage. % Some mentioned in the user documentation are % \classname{graphicx}, \classname{longtable}, % and \classname{bm}. % % Certain commonly used packages are known to be incompatible with % \revtex, among them \classname{multicol} and \classname{cite}. % If such a package is found to be loaded, \revtex\ issues an error message % and halts the job. % Halting might be considered severe punishment for loading an incompatible % package, but if we were to proceed, an even weirder error might be encountered % further down the road. % % This document class implements the substyle: a set of mutually % exclusive class options that, in this case, allow the % document class to address multiple societies. % It also implements a sub-substyle, giving the % journal of the given society. % The only society currently implemented is \classoption{aps}, % however, code is in place for another society, the \classoption{osa}. % % FIXME: should always load the \classname{graphicx} package. % % QUERY: since \classname{amsfonts} and \classname{amssymb} extend % syntax, why not load them in any case? % % QUERY: if you say \cmd\documentclass|[prb,osa]{revtex4}|, then % the value of \cmd\@society\ will be wrong, or? Fixed. % % Certain events occur at \cmd\AtEndOfClass\ time: % \begin{enumerate} % \item % Optionally read in packages % \classname{amsfonts}, \classname{amssymb}. % \item % Read in society substyle \file{.rtx} file. % \item % Read in type size \file{.rtx} file. % \item % Read in the job's style file, the \file{.rty} file. % \item % Define things based on \cmd\secnumarabic@sw. % \item % Install procedures to execute at the very end of the class's % \cmd\AtBeginDocument\ processing, such as % \begin{enumerate} % \item % closing out the page grid % \item % putting out the LastPage label. % \item % issuing a \cmd\bibliographystyle\ command, based on the value set % by the society substyle. % \item % setting default values for parameters used in the document. %FIXME: differentiate between class's parameters that can wait until % they are used in the document, and parameters that are used at \cmd\AtBeginDocument\ time. % \end{enumerate} % \item % Install procedures to execute the very last at \cmd\AtEndDocument\ time, % such as the \cmd\clearpage\ processing. % \end{enumerate} % % Certain events are optionally scheduled for \cmd\AtBeginDocument\ time: % \begin{enumerate} % \item % Setting default values for the Booleans and for other procedures used in formatting. % \item % In response to class options options, adjusting parameters and procedures used in formatting. % \item % Implementing the \classoption{eqsecnum} option, if required. % \item % Setting the state engine for data commands. % \item % Memorizing procedures for later use. % \item % Setting type size and area, for use by later calculations. % \end{enumerate} % % Certain events are scheduled for \cmd\class@enddocumenthook\ time: % \begin{enumerate} % \item % Print out the migrated floats or the end notes, if needed. % \item % Close out the page grid. % \item % Label the last page of the document % \item % (\classname{natbib}) prepare to read in the \file{.aux} file. % \end{enumerate} % % % \section{The installer file} % We include here a reference copy of the installer file, \file{revtex4.ins}. % It is not intended that one actually generate that file using \file{docstrip} % via the revtex4 installer file, because that would involve overwriting the % file that \TeX\ is typesetting. Instead, the installer file is provided % pre-generated. % % For the most part, the installer is simple: it generates \file{revtex4.cls} and % a collection of \file{.rtx} files from \file{revtex4.dtx}. % % However, the process of generating \file{revtex4.cls} involves the incorporation % of portions of two of the \file{ltx} series of files, \file{ltxutil.dtx}, % and \file{ltxgrid.dtx}. The former is a collection of macro definitions that % serve as the lowest level of extensions to \LaTeX, the latter implements % an alternative output routine and page gridding mechanism that provides for % multicolumn page layouts, but without the sorry limitations of the % \LaTeX\ required package, \classname{multicol}, and is also compatible with % the \classname{longtable} package (which \classname{multicol} is not). % \begin{macrocode} %<*ins> % This file requires docstrip version 2.4 or higher available from % ftp://ctan.tug.org/tex-archive/macros/latex/unpacked/docstrip.tex \input docstrip \preamble This file is part of the APS files in the REVTeX 4 distribution. For the version number, search on the string %FileInfo Copyright (c) 2000 The American Physical Society. http://publish.aps.org/revtex4/ mailto:revtex@aps.org Maintained by Arthur Ogawa (mailto:ogawa@teleport.com) under contract to the American Physical Society. See the REVTeX 4 README file for restrictions and more information. \endpreamble \keepsilent \askforoverwritefalse \generate{% \file{revtex4.cls}{% \from{revtex4.dtx}{class-pre}% \from{ltxutil.dtx}{ltxutil-krn}% \from{ltxgrid.dtx}{ltxgrid-krn}% \from{textcase.dtx}{package}% \from{revtex4.dtx}{class-pst}% }% \file{aps.rtx}{\from{revtex4.dtx}{aps}}% \file{rmp.rtx}{\from{revtex4.dtx}{rmp}}% \file{10pt.rtx}{\from{revtex4.dtx}{10pt}}% \file{11pt.rtx}{\from{revtex4.dtx}{11pt}}% \file{12pt.rtx}{\from{revtex4.dtx}{12pt}}% \file{revsymb.sty}{\from{revtex4.dtx}{revsymb}}% }% \endbatchfile % % \end{macrocode} % % % \section{Writing journal-specifc extensions to \revtex} % % With this version of \revtex, we introduce a somewhat different % scheme for adapting \revtex\ to the needs of a specific journal. % % To create a journal substyle, you create new class options in % \revtex\ for the society, say \classoption{osa}, and any of that society's journals, % one of which is, say, \classoption{josaa}, % using the code for the APS as a guide. % In particular, each of your new options should separately define \cmd\@society\ % and \cmd\@journal. That for the former will be the same for % all options relating to a particular society. % % Then, for the society, you create a corresponding \file{.rtx} % file, in our case \file{osa.rtx}. % Within that file, you override procedures and parameter assignments as you see fit. % Ideally they will be generally applicable to all of that society's % journals (see the file \file{aps.rtx} for a realization of this scheme). % Also within that file, you include a % section of code for each journal, that for josaa looks like: % \begin{verbatim} % \@ifx{\@journal\journal@josaa}{% % % }{}% % \end{verbatim} % % Thus far, the scheme is similar to that used in \revtex\ 3.1. % However, the new scheme does differ from the old in that % the \file{.rtx} file should define no syntactical extensions % to \revtex. % % \section{The \classname{revtex4} Document Class} % % \begin{macrocode} %<*class-pre> \def\class@name{revtex4}% % \end{macrocode} % % Print a banner in the log: % \begin{macrocode} \GenericInfo{}{\space Copyright (c) 2001 The American Physical Society.^^J mailto:revtex@aps.org^^J Licensed under the LPPL:^^Jhttp://www.ctan.org/tex-archive/macros/latex/base/lppl.txt^^J Arthur Ogawa ^^J Based on work by David Carlisle % \@gobble }% % \end{macrocode} % % \subsection{Compatability Processing} % % If the document has \cmd\documentstyle|{revtex4}|, % then, instead of attempting to run in compatability mode, % just complain and exit. % \changes{v4.0beta 3}{1999/11/13} % {Lose compatability mode.} % \begin{macrocode} \if@compatibility \edef\reserved@a{\errhelp{% Change your \string\documentstyle\space statement to \string\documentclass\space and rerun. }}\reserved@a \errmessage{You cannot run \class@name\space in compatability mode}% \expandafter\@@end \fi % \end{macrocode} % % % \section{Extensions to the \LaTeX\ Kernel} % I am introducing % some portions of the \classname{ltxkrnext} package % (\url{ftp://ftp.teleport.com/users/ogawa/macros/latex/contrib/supported/ltxkrnext/}). % % First, de-fang unwanted commands and turn \cmd\ProvidesPackage\ into an informative message. % \begin{macrocode} \let\DeclareOption@latex\DeclareOption \let\DeclareOption\@gobbletwo \let\ProcessOptions@latex\ProcessOptions \let\ProcessOptions\@empty \let\ProvidesPackage@latex\ProvidesPackage \def\ProvidesPackage#1[#2]{% \class@info{Incorporating package #1 [#2].}% }% % % \end{macrocode} % Now load the utility and page grid packages. % The \classname{ltxutil} and \classname{ltxgrid} packages are distributed with % \revtex. % \begin{macrocode} %\RequirePackage{ltxutil}% %\RequirePackage{ltxgrid}% % \end{macrocode} % % The \classname{textcase} package is available from % \url{CTAN:/macros/latex/contrib/supported/carlisle/textcase.dtx} and is % used at the suggestion, and by permission, of David~P. Carlisle. % \begin{quotation} % \cmd\ProvidesFile{textcase.dtx} % [1998/11/12 v0.06 Text only upper/lower case changing (DPC)] % \end{quotation} % % David, in turn, suggests that Donald Arseneau be credited for some of the ideas in % the \classname{textcase} package, so let it hereby be so understood. % % Note that David's package has a bug, which is fixed as follows: % Change: %\begin{verbatim} % \def\NoCaseChange##1{\noexpand\NoCaseChange{\noexpand##1}} %\end{verbatim} % To: %\begin{verbatim} % \def\NoCaseChange##1{\noexpand\NoCaseChange{\noexpand##1}}% %\end{verbatim} % % \begin{macrocode} %\RequirePackage{textcase}% % \end{macrocode} % % Next, restore those cammands we de-fanged: % \begin{macrocode} %<*class-pst> \let\ProvidesPackage\ProvidesPackage@latex \let\ProcessOptions\ProcessOptions@latex \let\DeclareOption\DeclareOption@latex % \end{macrocode} % And let the \classname{textcase} commands override those of \LaTeX: % \begin{macrocode} \expandafter \let\csname MakeUppercase \expandafter\endcsname \csname MakeTextUppercase \endcsname \expandafter \let\csname MakeLowercase \expandafter\endcsname \csname MakeTextLowercase \endcsname % \end{macrocode} % % Try to patch \classname{longtable}. % \begin{macrocode} \appdef\class@documenthook{% \switch@longtable }% % \end{macrocode} % % Try to provide a more robust version of \cmd\boldmath. % If Team \LaTeX\ ever gets around to fixing this problem, we will bow out. % (This relates to bug \#394.) % \begin{macrocode} \appdef\class@documenthook{% \expandafter\@ifnotrelax\csname boldmath \endcsname{}{% \expandafter\let\csname boldmath \endcsname\boldmath \expandafter\def\expandafter\boldmath\expandafter{\expandafter\protect\csname boldmath \endcsname}% }% }% % \end{macrocode} % % % % \section{Options}\label{sec:options}% % % \subsection{Define Booleans Used in Options}% % The following Booleans are used within the document class to % allow the document or the substyle to make selections % of formatting. % Because an explicit document class option always overrides a substyle, % any substyle wishing to assign a value to a flag must first test the flag to % confirm that it is still undefined. % This further means that the default value of the flag must be % assigned late, at the end of \cmd\AtBeginDocument\ time, and that % the flag may be queried no earlier than that time. % % \begin{macro}{\class@inithook} % The hook \cmd\class@inithook\ is installed into \cmd\class@documenthook, % and thereafter serves as the focal point for all code that % gives default values to the class's parameters. % % A typical code might be: % \begin{verbatim} %\appdef\class@inithook{% % \@ifxundefined\twocolumn@sw{\@booleanfalse\twocolumn@sw}{}% %}% % \end{verbatim} % which ensures that the switch \cmd\twocolumn@sw\ is never left undefined. % % \begin{macrocode} \appdef\class@documenthook{% \class@inithook }% \def\class@inithook{}% % % \end{macrocode} % \end{macro} % % \begin{macro}{\twocolumn@sw} % The boolean \cmd\twocolumn@sw\ signifies that we are to use a two-column grid. % % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\twocolumn@sw{\@booleanfalse\twocolumn@sw}{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\footinbib@sw} % The boolean \cmd\footinbib@sw\ signifies that % footnotes are to be set in the bibliography, as endnotes. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\footinbib@sw{\@booleanfalse\footinbib@sw}{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\preprintsty@sw} % The boolean \cmd\preprintsty@sw\ signifies that % the document is to be formatted in preprint style. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\preprintsty@sw{\@booleanfalse\preprintsty@sw}{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\preprint@sw} % The boolean \cmd\preprint@sw\ signifies that % the preprints (cf. \cmd\preprint) are to be formatted (usually on the title page). % The default is to do so; the option \classoption{nopreprintnumbers} % declares not to. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\preprint@sw{\@booleanfalse\preprint@sw}{}% \preprintsty@sw{\@booleantrue\preprint@sw}{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\galley@sw} % The boolean \cmd\galley@sw\ signifies that % the document is to be formatted in galley style. % % Asserting both \cmd\galley@sw\ and \cmd\preprintsty@sw\ % may produce strange formatting results, but it is not illegal. % However, it \emph{is} illegal to assert galley and any % twocolumn option. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\galley@sw{\@booleanfalse\galley@sw}{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\groupauthors@sw} % The flag \cmd\groupauthors@sw\ signifies that authors are to be grouped. % This affects the meaning of \cmd\@author@present\ and \cmd\@tempaffil. % % FIXME: apparently \cmd\@tempaffil\ and its aliases are never used. % \end{macro} % % \begin{macro}{\runinaddress@sw} % The flag \cmd\runinaddress@sw\ signifies that author addresses are to be % run in. % \end{macro} % % \begin{macro}{\@affils@sw} % If \cmd\@affils@sw\ is false, an address is never recognised as ``new'' % and is therefore always entered into the affiliation list, % stopping groups of authors at the same address being amalgamated % into the same list: % the address will be printed the same number of times it is entered. % \end{macro} % % \begin{macro}{\showPACS@sw} % \begin{macro}{\showKEYS@sw} % If \cmd\showPACS@sw\ is true, print the PACS information in the title block, % otherwise not. % Similarly for \cmd\showKEYS@sw\ and the keywords. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\showPACS@sw{\@booleanfalse\showPACS@sw}{}% \@ifxundefined\showKEYS@sw{\@booleanfalse\showKEYS@sw}{}% }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\floats@sw} % The Boolean \cmd\floats@sw\ signifies that floats are to be floated; % if false, that floats are to be deferred to the end of the document. % By default, the former. % Note that the state of this Boolean is to be changed by % the document class in response to user-selected options. % % This boolean and the assignment of its default value is done by % the \classname{ltxutil} package. % \end{macro} % % \begin{macro}{\floatp@sw} % The Boolean \cmd\floatp@sw\ signifies that endfloats are to be set one per page; % if false, that endfloats are to be set with multiple floats per page permitted. % By default, the latter. % Note that the state of this Boolean is to be changed by % the document class in response to user-selected options. % The default is established here. % \end{macro} % % \begin{macro}{\twoside@sw} % The flag \cmd\twoside@sw\ signifies that the document is to be % formatted for duplex printing. % At \cmd\AtBeginDocument\ time, we must align the value % of the kernel \cmd\newif\ switch \cmd\if@twoside\ % to that of \cmd\twoside@sw. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\twoside@sw{\@booleanfalse\twoside@sw}{}% \twoside@sw{\@twosidetrue}{\@twosidefalse}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\draft@sw} % The flag \cmd\draft@sw\ signifies that the document is to be % formatted in draft mode. % Certain packages may pay attention to the % class option \classoption{draft} that sets this Boolean. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\draft@sw{\@booleanfalse\draft@sw}{}% \draft@sw{\overfullrule 5\p@}{\overfullrule\z@}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\tightenlines@sw} % The boolean \cmd\tightenlines@sw\ signifies that % the leading is to be made standard amount. % If false, it means that the leading is to be set extra open. % Has no effect on 10pt size option. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\tightenlines@sw{\@booleanfalse\tightenlines@sw}{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\lengthcheck@sw} % The flag \cmd\lengthcheck@sw\ signifies that % the length checking is in effect. % It is up to the individual journal substyle % to alter its formatting accordingly. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\lengthcheck@sw{\@booleanfalse\lengthcheck@sw}{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\eqsecnum@sw} % The flag \cmd\eqsecnum@sw\ signifies that equations are to be % numbered with the section, e.g., ``Eq. (2.13)''. % This flag is neither set nor queried. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\eqsecnum@sw{\@booleanfalse\eqsecnum@sw}{}% \eqsecnum@sw{% \@addtoreset{equation}{section}% \def\theequation@prefix{\arabic{section}.}% }{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\byrevtex@sw} % The flag \cmd\byrevtex@sw\ signifies that the document should % bear an imprint to the effect that it was formatted by this document class. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\byrevtex@sw{\@booleanfalse\byrevtex@sw}{}% }% % \end{macrocode} % \end{macro} % % % \subsection{Declare Options}% % % \subsubsection{Checkin: for Editorial Use}% % A document class option declaring that the document is being processed by the % editorial staff. % % This option should: % \begin{itemize} % \item % put date in footer along with folio % \item % Have the effect of selecting the \classoption{preprint} class option. % \item % Have the effect of selecting the \classoption{showpacs} class option. % \item % specify that when a float is placed h or H, it will be allowed to break over pages. % (Note: be sure that if the enclosed \env{tabular} has an optional argument, you change it to [v], or remove it entirely.) % \end{itemize} % \changes{v4.0beta 3}{1999/11/13} % {New option ``checkin''} % \begin{macrocode} \DeclareOption{checkin}{% \@booleantrue\dateinRH@sw \@booleantrue\preprintsty@sw \def\@pointsize{12}% \@booleantrue\showPACS@sw \@booleantrue\showKEYS@sw \def\fp@proc@h{\allow@breaking@tables}% \def\fp@proc@H{\allow@breaking@tables}% }% \@booleanfalse\dateinRH@sw \def\checkindate{\dateinRH@sw{{\tiny(\today)}}{}}% \def\allow@breaking@tables{% \def\array@default{v}% tabular can break over pages \@booleanfalse\floats@sw % table can break over pages }% % \end{macrocode} % % \subsubsection{Preprint Style}% % \changes{v4.d}{1998/01/31} % {Rearrange the ordering so numerical ones come first. AO: David, what does this mean?} % % \changes{v4.g}{1998/06/10} % {comma not space between email and homepage} % % \changes{v4.0beta 2}{1999/06/20} % {Move this ``complex'' option to the front, where it can be overridden by ``simple'' options.} % \begin{macrocode} \DeclareOption{preprint}{% \@booleantrue\preprintsty@sw \def\@pointsize{12}% }% \DeclareOption{manuscript}{% \class@warn{Document class option manuscript is obsolete; use preprint instead}% \ExecuteOptions{preprint}% }% % \end{macrocode} % % \subsubsection{Showing PACS and keywords}% % \changes{v4.0beta 2}{1999/06/20} % {New option} % \changes{v4.0beta 5}{2000/09/20} % {New option showkeys} % \begin{macrocode} \DeclareOption{showpacs}{% \@booleantrue\showPACS@sw }% \DeclareOption{noshowpacs}{% \@booleanfalse\showPACS@sw }% \DeclareOption{showkeys}{% \@booleantrue\showKEYS@sw }% \DeclareOption{noshowkeys}{% \@booleanfalse\showKEYS@sw }% % \end{macrocode} % % \subsubsection{Balance the last page when in two-column page grid}% % If we are in a two-column page grid, we may wish to balance the columns % of the last page. This will be done automatically if the % \classoption{twocolumn} document class option is chosen. % This action will be turned off by the \classoption{nobalancelastpage}. % A complementary class option, \classoption{balancelastpage} is also provided. % \begin{macrocode} \DeclareOption{balancelastpage}{% \@booleantrue\balancelastpage@sw }% \DeclareOption{nobalancelastpage}{% \@booleanfalse\balancelastpage@sw }% \appdef\class@inithook{% \@ifxundefined\balancelastpage@sw{% \@booleantrue\balancelastpage@sw }{}% }% % \end{macrocode} % % \subsubsection{Showing preprint numbers}% % \changes{v4.0beta 4}{2000/04/10} % {New option} % \begin{macrocode} \DeclareOption{nopreprintnumbers}{\@booleanfalse\preprint@sw}% \DeclareOption{preprintnumbers}{\@booleantrue\preprint@sw}% % \end{macrocode} % % \subsubsection{Hypertext Option}% % % \changes{v4.e}{1998/01/31} % {protect against hyperref revtex kludges which are not needed now} % \changes{v4.0beta 2}{1999/06/20} % {Move this ``complex'' option to the front, where it can be overridden by ``simple'' options.} % \changes{v4.0rc4}{2001/07/23} % {hyperref is no longer loaded via class option: use a usepackage statement instead} % \begin{macrocode} \DeclareOption{hyperref}{% %\AtEndOfClass{% % \begingroup % \edef\@tempa{% % \let % \noexpand\@clsextension % \noexpand\@empty % \noexpand\RequirePackage{hyperref}% % \def\noexpand % \@clsextension{\@clsextension}% % }% % \expandafter % \endgroup % \@tempa %}% % \end{macrocode} % % If you have a hyper-foo enabled browser you may prefer this format % which does not print the URL for the home page, but just makes the % name a link, but by default print it so it works on paper. % \changes{v4.e}{1998/01/31} % {print homepage} % % \begin{macrocode} % \def\@pointsize{10}% \class@warn{Class option "hyperref" is no longer supported.^^JEmploy \string\usepackage{hyperref} instead}% }% % \end{macrocode} % % \subsubsection{Type Size}% % Use \cmd\@pointsize|=10| rather than \cmd\@ptsize|=0| to allow easy extensions % to 9pt or whatever. % Note: the three alternatives are mutually exclusive. Furthermore % if \cmd\@pointsize\ is still undefined at \cmd\AtEndOfClass\ time, % then the substyle can conclude that the user accepts the default. % \begin{macrocode} \DeclareOption{10pt}{\def\@pointsize{10}} \DeclareOption{11pt}{\def\@pointsize{11}} \DeclareOption{12pt}{\def\@pointsize{12}} % \end{macrocode} % % \subsubsection{Media Size}% % \changes{v4.0beta 2}{1999/06/20} % {Restore all media size class option of \protect\file{classes.dtx}} % \begin{macrocode} \DeclareOption{a4paper} {\setlength\paperheight {297mm}% \setlength\paperwidth {210mm}} \DeclareOption{a5paper} {\setlength\paperheight {210mm}% \setlength\paperwidth {148mm}} \DeclareOption{b5paper} {\setlength\paperheight {250mm}% \setlength\paperwidth {176mm}} \DeclareOption{letterpaper} {\setlength\paperheight {11in}% \setlength\paperwidth {8.5in}} \DeclareOption{legalpaper} {\setlength\paperheight {14in}% \setlength\paperwidth {8.5in}} \DeclareOption{executivepaper} {\setlength\paperheight {10.5in}% \setlength\paperwidth {7.25in}} \DeclareOption{landscape} {\setlength\@tempdima {\paperheight}% \setlength\paperheight {\paperwidth}% \setlength\paperwidth {\@tempdima}} % \end{macrocode} % % \subsubsection{Bibnotes}% % Frontmatter footnotes result from frontmatter commands like % \cmd\email, \cmd\homepage, \cmd\altaffiliation, and \cmd\thanks. % The default for \cmd\frontmatter@footnote@produce\ is % \cmd\frontmatter@footnote@produce@footnote, which formats the frontmatter footnotes % at the foot of the title page. The \classoption{bibnotes} class option % defers them to the bibliography. % \begin{macrocode} \DeclareOption{bibnotes}{\@booleantrue\bibnotes@sw}% \DeclareOption{nobibnotes}{\@booleanfalse\bibnotes@sw}% \appdef\class@enddocumenthook{\auto@bib}% \appdef\class@inithook{% \@ifxundefined\bibnotes@sw{\@booleanfalse\bibnotes@sw}{}% \bibnotes@sw{% \let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote }{% \let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote }% }% % \end{macrocode} % % \subsubsection{Footinbib}% % \begin{macrocode} \DeclareOption{footinbib}{\@booleantrue\footinbib@sw} \DeclareOption{nofootinbib}{\@booleanfalse\footinbib@sw} % \end{macrocode} % % \subsubsection{altaffilletter}% % % \begin{macrocode} \DeclareOption{altaffilletter}{\@booleantrue\altaffilletter@sw}% \DeclareOption{altaffilsymbol}{\@booleanfalse\altaffilletter@sw}% \appdef\class@inithook{% \@ifxundefined\altaffilletter@sw{\@booleanfalse\altaffilletter@sw}{}% }% % \end{macrocode} % % \subsubsection{superbib}% % The document may invoke superscript bibliography style. % If not, the journal substyle may make a selection. % If neither, the class itself selects a default. % This is really a quite deep nesting of defaults. % \begin{macrocode} \DeclareOption{superbib}{% \def\place@bibnumber{\place@bibnumber@sup}% }% % \end{macrocode} % % \subsubsection{citeautoscript}% % This class option allows you to automatically accomodate a change from non-superscripted, numbered references % to superscripted, bunmbered references. % % Note: you should always mark up your document with the assumption that references are \emph{not} going to be superscripted. % Otherwise this option has no hope of working properly. % % \begin{macrocode} \DeclareOption{citeautoscript}{% \@booleantrue\citeautoscript@sw }% \@booleanfalse\citeautoscript@sw % \end{macrocode} % % \subsubsection{Simplex/Duplex Pages}% % \changes{v4.e}{1998/01/31} % {4.d had twoside option setting twoside switch to false} % The complementary options \classoption{twoside} and \classoption{oneside} % assert formatting for duplex or simplex printing, respectively. % At the same time, we arrange for the selection of the page grid % with respect to the marginal column: % Because \cmd\if@reversemargin\ remains default (false), % if duplex printing, this column will always be on the (right), % if simplex printing, it will always be on the (outside). % QUERY: correct choice? % \begin{macrocode} \DeclareOption{twoside}{\@booleantrue\twoside@sw \@mparswitchfalse} \DeclareOption{oneside}{\@booleanfalse\twoside@sw\@mparswitchtrue} % \end{macrocode} % % \subsubsection{Two-Column Page Grid}% % % \begin{macro}{\twocolumn@sw} % The flag \cmd\twocolumn@sw\ signifies that the document is to be % formatted in the two-column page grid. % % If no options relating to page grid are invoked by % \cmd\AtBeginDcoument\ time, we set default values. % Up to that point, the class can check if \cmd\twocolumn@sw\ % is \cmd\undefined\ to see if any related options have been invoked. % % At \cmd\AtBeginDocument\ time, we must align the value % of the kernel \cmd\newif\ switch \cmd\if@twocolumn\ % to that of \cmd\twocolumn@sw. % % We install into \cmd\class@enddocumenthook\ % all tasks that we know must be completed at \cmd\AtEndDocument\ time. % The first thing it does is end the current paragraph. % The last is % to return us to one-column page grid. % (This task is installed as late as possible, % i.e., after items like \cmd\printtables.) % \begin{macrocode} \AtEndOfClass{% \def\clear@document{% \close@column }% \appdef\class@inithook{% \@ifxundefined\close@column{% \let\close@column\close@column@default }{}% }% }% % \end{macrocode} % \end{macro} % % The \classoption{twocolumn} class option employs the standard mechanism for % changing the column grid: the \classname{ltxgrid} package. % \begin{macrocode} \DeclareOption{twocolumn}{% \@booleantrue\twocolumn@sw }% % \end{macrocode} % % \classoption{onecolumn} specifies one-column page grid. % \begin{macrocode} \DeclareOption{onecolumn}{% \@booleanfalse\twocolumn@sw }% % \end{macrocode} % % \classoption{galley} emulates setting the galleys of % a two-column journal. % FIXME: this option should effectively set \cmd\preprintsty@sw\ false. % NOTE: it makes no sense to assert both galley and twocolumn. % % \begin{macrocode} \DeclareOption{galley}{% \ExecuteOptions{onecolumn}% \@booleantrue\galley@sw \appdef\set@pica@hook{% \advance\textwidth-\columnsep \textwidth.5\textwidth }% }% % \end{macrocode} % % % \subsubsection{raggedbottom or flushbottom}% % The class options \classoption{raggedbottom} and \classoption{flushbottom} determine whether the columns (page) % are ragged bottom or flush bottom. % Note that we do not select a default here; that is done by the journal substyle. % \begin{macrocode} \DeclareOption{raggedbottom}{\@booleantrue\raggedcolumn@sw} \DeclareOption{flushbottom}{\@booleanfalse\raggedcolumn@sw} % \end{macrocode} % % \subsubsection{tightenlines}% % This class option specifies that standard leading % is to be used to set the type. % If lacking, the leading will be loose. % % \begin{macrocode} \DeclareOption{tightenlines}{\@booleantrue\tightenlines@sw} % \end{macrocode} % % \subsubsection{lengthcheck}% % This class option specifies that the formatted document % should approach as closely as possible the % formatting of an actual journal article % to facilitate the author's performance of a length check. % % \begin{macrocode} \DeclareOption{lengthcheck}{% \@booleantrue\lengthcheck@sw \@booleantrue\twoside@sw \@booleantrue\twocolumn@sw }% % \end{macrocode} % % \subsubsection{Draft and Final}% % \begin{macrocode} \DeclareOption{draft}{% \@booleantrue\draft@sw }% \DeclareOption{final}{% \@booleanfalse\draft@sw }% % \end{macrocode} % % \subsubsection{eqsecnum}% % The \classoption{eqsecnum} class option signifies that equations are % to be numbered within sections. % \begin{macrocode} \DeclareOption{eqsecnum}{\@booleantrue\eqsecnum@sw} % \end{macrocode} % % \subsubsection{secnumarabic}% % The \classoption{secnumarabic} class option signifies that sectioning commands are % to be numbered arabic. % \begin{macrocode} \DeclareOption{secnumarabic}{\@booleantrue\secnumarabic@sw} % \end{macrocode} % The code that polls the Boolean \cmd\secnumarabic@sw\ appears % in Section~\ref{sec:secnumarabic}. % % FIXME: model fleqn after amsfonts. I no longer understand why I said this. % \begin{macrocode} \DeclareOption{fleqn}{\input{fleqn.clo}} % \end{macrocode} % % \subsubsection{floats/endfloats}% % These options control, via the Boolean \cmd\floats@sw, % whether floats are to be migrated to the end of the document. % \begin{macrocode} \DeclareOption{floats}{\@booleantrue\floats@sw\@booleanfalse\floatp@sw} \DeclareOption{endfloats}{\@booleanfalse\floats@sw\@booleanfalse\floatp@sw} \DeclareOption{endfloats*}{\@booleanfalse\floats@sw\@booleantrue\floatp@sw} \appdef\class@inithook{% \@ifxundefined\floats@sw{\@booleantrue\floats@sw}{}% \@ifxundefined\floatp@sw{\@booleantrue\floatp@sw}{}% }% % \end{macrocode} % % \subsubsection{titlepage/notitlepage}% % These options control, via \cmd\titlepage@sw, % whether the title block is to be set on a separate page. % \begin{macro}{\titlepage@sw} % The flag \cmd\titlepage@sw\ signifies that a forced % page break is to follow the title page: the article % title appears on a page by itself. % % The Boolean \cmd\titlepage@sw\ is in an odd situation: % its value is set by one or more substyles, contingent % upon the value of another Boolean. % Therefore that code must be invoked at \cmd\AtBeginDocument\ time. % Therefore we must assign the default value at the very end % of \cmd\AtBeginDocument\ processing: we use \cmd\defaults@hook. % Luckily, this Boolean does not need to be queried at % \cmd\AtBeginDocument\ time, or we'd be in dire straights. % \begin{macrocode} \DeclareOption{titlepage}{\@booleantrue\titlepage@sw} \DeclareOption{notitlepage}{\@booleanfalse\titlepage@sw} \appdef\defaults@hook{% \@ifxundefined\titlepage@sw{\@booleanfalse\titlepage@sw}{}% }% % \end{macrocode} % \end{macro} % % \subsubsection{Substyle and Sub-substyle}% % % If the society has already been assigned, % notify user that \cmd\@society\ is being overridden. % % \begin{macrocode} \def\change@society#1{% \def\@tempa{#1}% \@ifxundefined\@society{}{% \@ifx{\@tempa\@society}{}{% \class@warn{Conflicting society \@tempa<>\@society.}% }% }% \let\@society\@tempa }% % \end{macrocode} % Here are the class options relating to the APS % \begin{macrocode} \DeclareOption{aps}{\change@society{aps}\def\@journal{}}% \DeclareOption{pra}{\change@society{aps}\def\@journal{pra}}% \DeclareOption{prb}{\change@society{aps}\def\@journal{prb}}% \DeclareOption{prc}{\change@society{aps}\def\@journal{prc}}% \DeclareOption{prd}{\change@society{aps}\def\@journal{prd}}% \DeclareOption{pre}{\change@society{aps}\def\@journal{pre}}% \DeclareOption{prl}{\change@society{aps}\def\@journal{prl}}% \DeclareOption{prstab}{\change@society{aps}\def\@journal{prstab}}% \DeclareOption{rmp}{\change@society{aps}\def\@journal{rmp}}% % \end{macrocode} % Here are the class options relating to the Optical Society of America % \begin{macrocode} \DeclareOption{osa}{\change@society{osa}\def\@journal{}}% \DeclareOption{osameet}{\change@society{osa}\def\@journal{osameet}}% \DeclareOption{opex}{\change@society{osa}\def\@journal{opex}}% \DeclareOption{tops}{\change@society{osa}\def\@journal{tops}}% \DeclareOption{josa}{\change@society{osa}\def\@journal{josa}}% % \end{macrocode} % % NOTE: \file{revguide.tex} does not mention any \cmd\@journal\ options % besides \classoption{prb}. % % \begin{macro}{amsfonts} % The class option \classoption{amsfonts} has the % same effect as if the document preamble contained % a \cmd\usepackage\verb${amsfonts}$ statement. % \begin{macrocode} \DeclareOption{amsfonts}{% \def\class@amsfonts{\RequirePackage{amsfonts}}% }% \DeclareOption{noamsfonts}{% \let\class@amsfonts\@empty }% \AtEndOfClass{% \@ifxundefined\class@amsfonts{}{\class@amsfonts}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{amssymb} % The class option \classoption{amssymb} has the % same effect as if the document preamble contained % a \cmd\usepackage\verb${amssymb}$ statement. % \begin{macrocode} \DeclareOption{amssymb}{% \def\class@amssymb{\RequirePackage{amssymb}}% }% \DeclareOption{noamssymb}{% \let\class@amssymb\@empty }% \AtEndOfClass{% \@ifxundefined\class@amssymb{}{\class@amssymb}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{amsmath} % The class option \classoption{amsmath} has the % same effect as if the document preamble contained % a \cmd\usepackage\verb${amsmath}$ statement. % % We require version 1.2 (datestamped 1997/03/20) or later. % The \expandafter\cmd\csname ver@amsmath.sty\endcsname, will % % \LaTeX\ note: % Certain \LaTeX\ procedures have an arbitrary and pointless restriction that they may be used only within the preamble. % We get around this by preserving the procedures in private \cmd\csname s. % % FIXME note: it is difficult to ensure that an error summary will be printed on the console at the very end, % but \classname{ltxgrid} allows accomplishing this via an interrupt, put down at \cmd\AtEndDocument\ time. % % \begin{macrocode} \DeclareOption{amsmath}{% \def\class@amsmath{\RequirePackage{amsmath}[\ver@amsmath@prefer]}% }% \DeclareOption{noamsmath}{% \let\class@amsmath\@empty }% \AtEndOfClass{% \preserve@LaTeX \@ifxundefined\class@amsmath{}{\class@amsmath}% \appdef\class@enddocumenthook{\test@amsmath@ver}% }% \appdef\preserve@LaTeX{% \let\@ifl@aded@LaTeX\@ifl@aded \let\@ifpackageloaded@LaTeX\@ifpackageloaded \let\@pkgextension@LaTeX\@pkgextension \let\@ifpackagelater@LaTeX\@ifpackagelater \let\@ifl@ter@LaTeX\@ifl@ter \let\@ifl@t@r@LaTeX\@ifl@t@r \let\@parse@version@LaTeX\@parse@version }% \appdef\restore@LaTeX{% \let\@ifl@aded\@ifl@aded@LaTeX \let\@ifpackageloaded\@ifpackageloaded@LaTeX \let\@pkgextension\@pkgextension@LaTeX \let\@ifpackagelater\@ifpackagelater@LaTeX \let\@ifl@ter\@ifl@ter@LaTeX \let\@ifl@t@r\@ifl@t@r@LaTeX \let\@parse@version\@parse@version@LaTeX }% \def\test@amsmath@ver{% \begingroup \restore@LaTeX \@ifpackageloaded{amsmath}{% \@ifpackagelater{amsmath}{\ver@amsmath@prefer}{}{% \class@warn{% You have loaded amsmath, version "\csname ver@amsmath.sty\endcsname",\MessageBreak but this class requires version "\ver@amsmath@prefer", or later.\MessageBreak Please update your LaTeX installation. }% }% }{% }% \endgroup }% \def\ver@amsmath@prefer{2000/01/15 v2.05 AMS math features}% % \end{macrocode} % \end{macro} % % \subsubsection{Presenting Authors and Their Affiliations}% % \changes{v4.0beta 2}{1999/06/20} % {These options are now mutually exclusive. But is this correct?} % % The \classoption{runinaddress} option is the only one that sets \cmd\runinaddress@sw\ to true. % % The \classoption{unsortedaddress} option is the only one that sets \cmd\@affils@sw\ to false. % % If we take the \classoption{groupedaddress} option as the default, then we can look upon % the \classoption{superscriptaddress} option as simply turning \cmd\groupauthors@sw\ to false. % % \classoption{groupedaddress}, the default, groups authors above a common address. % In order to assert the default and still provide for proper precedence % for document-supplied options, we carry out our action at \cmd\AtBeginDocument\ time, % and only if none of the related class options were invoked. % \begin{macrocode} \DeclareOption{groupedaddress}{\clo@groupedaddress}% \def\clo@groupedaddress{% \@booleantrue\groupauthors@sw \@booleantrue\@affils@sw \@booleanfalse\runinaddress@sw }% \appdef\class@inithook{% \@ifxundefined\groupauthors@sw{\clo@groupedaddress}{}% }% % \end{macrocode} % % \classoption{unsortedaddress} is similar to \classoption{groupedaddress}, % but turns off \cmd\@affils@sw, % with the result that each address that is entered will be printed. % \begin{macrocode} \DeclareOption{unsortedaddress}{\clo@unsortedaddress}% \def\clo@unsortedaddress{% \@booleantrue\groupauthors@sw \@booleanfalse\@affils@sw \@booleanfalse\runinaddress@sw }% % \end{macrocode} % % \classoption{runinaddress} is similar to \classoption{groupedaddress}, % with the addition of the Boolean \cmd\runinaddress@sw, % which causes the authors associated with a particular address group % to be formatted in a paragraph instead of on separate lines. % \begin{macrocode} \DeclareOption{runinaddress}{\clo@runinaddress}% \def\clo@runinaddress{% \@booleantrue\groupauthors@sw \@booleantrue\@affils@sw \@booleantrue\runinaddress@sw }% % \end{macrocode} % % \classoption{superscriptaddress} presents author affiliations % as superscripts. Authors with like affiliations share the same % superscript. % % FIXME: if \cmd\groupauthors@sw\ is false, would not \cmd\@affils@sw\ be a don't care? % \begin{macrocode} \DeclareOption{superscriptaddress}{\clo@superscriptaddress}% \def\clo@superscriptaddress{% \@booleanfalse\groupauthors@sw \@booleantrue\@affils@sw \@booleanfalse\runinaddress@sw }% % \end{macrocode} % % % \subsubsection{Typeset by \revtex}% % % The class option \classoption{byrevtex} signifies that you want the % ``Typeset by \revtex'' byline to appear on your formatted output. % By default, no such byline appears. % \begin{macrocode} \DeclareOption{byrevtex}{\@booleantrue\byrevtex@sw}% % \end{macrocode} % % % \subsection{Attempt to fix float placement failure}% % % \revtex\ uses the \classname{ltxgrid} package, which provides the ability to attempt repairs when % \LaTeX's float placement mechanism is about to fail, but that facility is turned off by default. % Users should invoke the \classoption{floatfix} document class option to enable this \LaTeX\ extension. % If not, a helpful message is printed in the log, indicating how to work around the difficulty. % \begin{macrocode} \DeclareOption{floatfix}{\@booleantrue\force@deferlist@sw}% \DeclareOption{nofloatfix}{\@booleanfalse\force@deferlist@sw}% \appdef\class@inithook{% \@ifxundefined\force@deferlist@sw{\@booleanfalse\force@deferlist@sw}{}% }% % \end{macrocode} % % \begin{macro}{\@fltovf} % \begin{macro}{\@fltstk} % The \LaTeX\ kernel error message \cmd\@fltovf\ may now be a bit more helpful to the user; % likewise for the \cmd\@fltstk\ message of \classname{ltxgrid}. % \begin{macrocode} \gdef\@fltovf{% \@latex@error{% Too many unprocessed floats% \force@deferlist@sw{}{; try class option [floatfix]}% }\@ehb }% \def\@fltstk{% \@latex@warning{% A float is stuck (cannot be placed)% \force@deferlist@sw{}{; try class option [floatfix]}% }% }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ltxgrid@info@sw} % \begin{macro}{\outputdebug@sw} % The two options \classoption{ltxgridinfo} and \classoption{outputdebug} turn on informative diagnostics within the % package \classname{ltxgrid}. Only people who really want to see this output will select these class options. % Consult documentation for the \classname{ltxgrid} package to see what output the related switches enable. % \begin{macrocode} \DeclareOption{ltxgridinfo}{\@booleantrue\ltxgrid@info@sw}% \DeclareOption{outputdebug}{\@booleantrue\outputdebug@sw}% % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{Option to relax page height}% % % The \classname{ltxgrid} package can set text pages to their natural height or force them to the full % text height; the latter is the default. % If setting the pages with a variable length, % the running foot will move up or down with the natural length of the text column. % While I recommend against doing so, this option will turn that switch to the latter setting. % \begin{macrocode} \DeclareOption{raggedfooter}{\@booleanfalse\textheight@sw}% \DeclareOption{noraggedfooter}{\@booleantrue\textheight@sw}% % \end{macrocode} % % \subsection{Selecting procedure for processing abstract}% % % There are two different procedures for processing an abstract; the options % \classoption{newabstract} and \classoption{oldabstract} determine which one the user % prefers. At present, the default is to use the old, but this may change. % \begin{macrocode} \DeclareOption{newabstract}{\@booleanfalse\oldabstract@sw}% \DeclareOption{oldabstract}{\@booleantrue \oldabstract@sw}% \appdef\class@inithook{% \@ifxundefined\oldabstract@sw{\@booleanfalse\oldabstract@sw}{}% \oldabstract@sw{% \let@environment{abstract}{abstract-old}% }{}% }% % \end{macrocode} % % % % % \subsection{Default Option}% % % The default handling for a document class option is to % treat it as the name of a society and % hunt for a corresponding \file{.rtx} file to read in. % This behavior is much like the \LaTeX2.09 handling, where % one looked for a \file{.sty} file, except that % in this case, we must catch the case where multiple % unknown options are declared. % % \begin{macrocode} \DeclareOption*{% \IfFileExists{\CurrentOption\substyle@ext}{% \expandafter\change@society\expandafter{\CurrentOption}% }{% \OptionNotUsed }% }% \def\substyle@ext{.rtx}% \AtEndOfClass{% \@ifxundefined\@society{% \class@warn{No Society specified, using generic APS style}% \def\@society{aps}\def\@journal{}% }{}% \expandafter\input\expandafter{\@society\substyle@ext}% }% % \end{macrocode} % % \subsection{Class-Asserted Options}% % \changes{v4.0beta 2}{1999/06/20} % {% % Removed invocation of nonexistent class option \protect\classoption{groupauthors} % and all other class options that should only be invoked by the document. % (Otherwise precedence of class options does not work.) % } % Here we establish the default document class options. % Those of the document itself will override these. % \begin{macrocode} \ExecuteOptions{10pt} % \end{macrocode} % % \subsection{Execute Options}% % The document class options are processed in the order % they are declared in this document class file. % % Precedence is established in the following way: % % First, the single \file{.rtx} file is read in. % It may set values to any of the Booleans that represent class options, % and it may elect to do so only if that Boolean is undefined, signifying % that its corresponding document class options were absent from % the document's option list. % In this way correct precedence of class options is maintained. % % Second, the type size option is acted upon. Type size code % should not require altering the values of any of the Booleans carrying % class options. % % Next, at \cmd\AtEndOfClass\ time, certain packages are read in. % % Finally, at \cmd\AtBeginDocument\ time, the state of the Booleans determines % how the formatting will go. % % \begin{macrocode} \ProcessOptions\relax % \end{macrocode} % % % \section{Procedures Dependent Upon Options} % % Here we introduce \classname{classes.dtx} definitions for % the page styles that people will expect to be able to use. % \begin{macro}{\ps@headings} % \begin{macro}{\ps@myheadings} % \begin{macrocode} \def\ps@headings{% \let\@oddfoot\@empty\let\@evenfoot\@empty \def\@evenhead{\thepage\hfil\slshape\leftmark}% \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% \let\@mkboth\markboth \def\sectionmark##1{% \markboth {\MakeUppercase{% \ifnum \c@secnumdepth >\z@ \thesection\quad \fi ##1}}{}}% \def\subsectionmark##1{% \markright {% \ifnum \c@secnumdepth >\@ne \thesubsection\quad \fi ##1}}}% \def\ps@myheadings{% \let\@oddfoot\@empty\let\@evenfoot\@empty \def\@evenhead{\thepage\hfil\slshape\leftmark}% \def\@oddhead{{\slshape\rightmark}\hfil\thepage}% \let\@mkboth\@gobbletwo \let\sectionmark\@gobble \let\subsectionmark\@gobble }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ps@article@twoside} % \begin{macro}{\ps@article@oneside} % \begin{macro}{\ps@preprint} % \changes{v4.e}{1998/01/31} % {Move after process options, so the following test works} % \changes{v4.0beta 2}{1999/06/20} % {Defer decision until \cs{AtBeginDocument} time} % \changes{v4.0beta 3}{1999/11/13} % {Insert procedure \cs{checkindate}} % \changes{v4.0rc1}{2001/06/17} % {Running headers always as if two-sided} % \begin{macrocode} \def\ps@article{% \@provide\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil{\leftmark}}% \@provide\@oddhead{\let\\\heading@cr{\rightmark}\hfil\checkindate\quad\thepage}% \@provide\@oddfoot{}% \@provide\@evenfoot{}% \let\@mkboth\markboth \let\sectionmark\@gobble \let\subsectionmark\@gobble }% \def\ps@article@final{% \@provide\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil{\leftmark}}% \@provide\@oddhead{\let\\\heading@cr{\rightmark}\hfil\checkindate\quad\thepage}% \@provide\@oddfoot{}% \@provide\@evenfoot{}% \let\@mkboth\markboth \def\sectionmark##1{% \markboth{% \MakeTextUppercase{% \@ifnum{\c@secnumdepth >\z@}{\thesection\hskip 1em\relax}{}% ##1% }% }{}% }% \def\subsectionmark##1{% \markright {% \@ifnum{\c@secnumdepth >\@ne}{\thesubsection\hskip 1em\relax}{}% ##1% }% }% }% \appdef\class@inithook{% %\twoside@sw{% %}{% %}% }% % \end{macrocode} % % \begin{macrocode} \def\heading@cr{\unskip\space\ignorespaces}% % \end{macrocode} % % \changes{v4.0beta 3}{1999/11/13} % {Do not put by REVTeX in every page foot} % \changes{v4.0beta 3}{1999/11/13} % {Insert procedure \cs{checkindate}} % \begin{macrocode} \def\ps@preprint{% \@provide\@oddfoot{\hfil\thepage\quad\checkindate\hfil}% \@provide\@evenfoot{\hfil\thepage\quad\checkindate\hfil}% \@provide\@oddhead{}% \@provide\@evenhead{}% \let\@mkboth\@gobbletwo \let\sectionmark\@gobble \let\subsectionmark\@gobble }% % \end{macrocode} % % \begin{macrocode} \let\@oddhead\@undefined \let\@evenhead\@undefined \let\@oddfoot\@undefined \let\@evenfoot\@undefined \AtEndOfClass{% \appdef\class@documenthook{% \@provide\@oddhead{}% \@provide\@evenhead{}% \@provide\@oddfoot{}% \@provide\@evenfoot{}% }% }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\lastpage@putlabel} % Support the default meaning of \cmd\@endpage. % \changes{v4.d}{1998/01/31} % {Move after process options, so \cs{clearpage} not in scope of % twocolumn} % Name of this macro (and the \cmd\label\ key) taken from % \url{CTAN:/macros/latex/contrib/other/lastpage}% % with code optimised slightly. % \begin{macrocode} \def\lastpage@putlabel{% \if@filesw \begingroup \advance\c@page\m@ne \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}}}% \endgroup \fi }% % \end{macrocode} % Install a late hook into \cmd\class@enddocumenthook\ that % labels the last page of the document. % This is done just before the \file{.aux} file % is closed, and does not require a \cmd\shipout, because it writes % directly to the \file{.aux} file. % Note that we invoke \cmd\clearpage: this means that no more typesetting % should be done past this point. % CHECKME: are there any more things installed via % \cmd\AtEndOfClass\allowbreak\cmd\class@enddocumenthook? % \begin{macrocode} \AtEndOfClass{% \appdef\clear@document{% \clearpage \lastpage@putlabel }% }% % \end{macrocode} % \end{macro} % % % \section{Required Packages} % \url{CTAN:macros/latex/contrib/other/misc/url.sty}% % \begin{macrocode} \RequirePackage{url}% % \end{macrocode} % % \section{Incompatible Packages} % Known to be incompatible are \classname{multicol} and \classname{cite}. % The former is incompatible with \classname{ltxgrid}, which replaces it. % The latter is incompatible with \classname{natbib}, which replaces its functionality. % \begin{macrocode} \appdef\class@inithook{% \incompatible@package{cite}% \incompatible@package{multicol}% }% % \end{macrocode} % % \section{Society- and Journal-Specific Code} % % \begin{macro}{\@journal} % Journal test helper, used as % \begin{verbatim} %\@ifx{\@journal\journal@pra}{% % %\fi % \end{verbatim} % Journal code might like to further specify (if as yet undefined) or distinguish on % the following Booleans. % % Note: the journal substyle code should only alter the value of one of these Booleans if % the Boolean is \cmd\undefined. This convention is what makes the document's % options take precedence over the values set by the journal. % % FIXME: make this table an exhaustive listing of all the parameters set by % the class options. % % \begin{tabular}{ll} % \cmd\@pointsize &(10|11|12), depending on the type size\\ % \cmd\footinbib@sw &true if footnotes are to be formatted in the bibliography\\ % \cmd\preprintsty@sw &true for preprint and hyperpreprint\\ % \cmd\eqsecnum@sw &true means that equations are numbered within sections\\ % \cmd\secnumarabic@sw &true means the sections are to be numbered arabic\\ % \cmd\groupauthors@sw &true means authors listed separately for each address\\ % \cmd\preprint@sw &true means to produce the preprint numbers as part of the title block\\ % \cmd\showPACS@sw &true means to produce the PACS as part of the title block\\ % \cmd\showKEYS@sw &true means to produce the keywords as part of the title block\\ % \cmd\@affils@sw &true means each affiliation is printed, for each author\\ % \cmd\runinaddress@sw &true means author addresses are printed run-in\\ % \cmd\draft@sw &true implies that PACS will be printed\\ % \cmd\tightenlines@sw &true if preprint single spaced\\ % \cmd\lengthcheck@sw &true if length checking is in effect\\ % \cmd\byrevtex@sw &true means to announce ``typeset by \revtex''\\ % \cmd\titlepage@sw &true for title is to be set on a separate page\\ % \cmd\twocolumn@sw &true if two-column page grid\\ % \cmd\twocolumn@sw &true if we are to automatically balance the columns of the last page\\ % \cmd\twoside@sw &true means to format pages for duplex printing\\ % \cmd\floats@sw &false means floats are migrated to end of document\\ % \cmd\floatp@sw &true means endfloats are set one to a page\\ % \cmd\class@amsfonts &if \cmd\@empty, means that \classname{amsfonts} will \emph{not} be loaded\\ % \cmd\class@amssymb &if \cmd\@empty, means that \classname{amssymb} will \emph{not} be loaded\\ % \cmd\frontmatter@footnote &if \cmd\undefined, means that the default (\cmd\footnote) will be used\\ % \cmd\place@bibnumber &if \cmd\undefined, means that the default (inline) will be used\\ % \end{tabular} % % Note: if \cmd\twocolumn@sw\ and \cmd\preprintsty@sw\ are both false, % then `galley' style is in effect. The \classoption{galley} option invokes % \classoption{onecolumn}, but does not affect the \cmd\preprintsty@sw. % % Note: \cmd\paperwidth\ and \cmd\paperheight\ are not integrated into this scheme, % and should be selected by the document alone. % \end{macro} % % % \section{Front Matter} % % \subsection{The title command}% % % \begin{macro}{\title} % \begin{macro}{\do@title} % The author uses \cmd\title\ to specify the title. As in the AMS % classes, \cmd\title\ has an optional argument specifying a short form % for use in running heads. % % Once the \cmd\title\ is given, you can specify any combination of % \cmd\thanks, \cmd\email, \cmd\homepage, and \cmd\altaffiliation\ commands, % applying to the title of the document. % \begin{macrocode} \renewcommand\title[2][]{% \def\@title{#2}% \def\@shorttitle{#1}% \let\@AF@join\@title@join }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@title} % \begin{macro}{\@shorttitle} % The arguments to \cmd\title\ are saved in these internal % macros, which are set up to produce a warning if \cmd\title\ has not % been used before \cmd\maketitle. % \begin{macrocode} \appdef\class@inithook{% \def\@title{\class@warn{No title}}% \let\@shorttitle\@empty \let\@title@aux\@title@aux@cleared }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@title@join} % \begin{macro}{\@title@join@} % \begin{macro}{\@title@aux@cleared} % % \begin{macrocode} \def\@title@join{\expandafter\@title@join@\@title@aux}% \def\@title@join@#1#2{% \def\@title@aux{{\@join{\@separator}{#1}{#2}}}% }% \def\@title@aux@cleared{{}}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % % \subsection{The author, affiliation, and related commands}% % % \begin{macro}{\c@affil} % A counter to store the affiliation numbers used for the % superscript marks. This command defines \cmd\theaffil. % \begin{macrocode} \newcounter{affil} % \end{macrocode} % \end{macro} % % \subsubsection{Commands for author or collaboration}% % % \begin{macro}{\author} % Each author is given in a \emph{separate} \cmd\author\ command. % This is similar to the AMS classes, but the AMS also try to support % the \classname{article} class's \cmd\and\ command for putting multiple % authors in one \cmd\author\ command. % \revtex, however, does not support the \cmd\and\ command. % % When the \cmd\author\ command is encountered, the previous author, author group, affiliation, and affiliation group are at an end. % This procedure moves the previous author to the author group (\cmd\move@AU), % moves the previous affiliation to the affiliation group (\cmd\move@AF), % and terminates the previous author/affiliation group (\cmd\move@AUAF) as the case may require. % \begin{macrocode} \renewcommand\author{% implicit #1 \@author@def{}% implicit #2 }% % \end{macrocode} % \end{macro} % % \begin{macro}{\collaboration} % \begin{macro}{\@collaboration@} % Specify the collaboration (given after a group of authors). % % This procedure does exactly what \cmd\author\ does, and sets % a flag signifying that the \cmd\collaboration\ command was given. % % Note: earlier versions attempted to ignore the collaboration command if it was considered inappropriate. % We must not do this, however, because it throws the state machine out of kilter. % \begin{macrocode} \def\collaboration{% implicit #1 \groupauthors@sw{% \class@warn{% \string\collaboration\space is only allowed with superscriptaddress option. Use superscriptaddress in place of groupedaddress, unsortedaddress, or runinaddress% }% }{}% \@author@def{\@booleantrue\collaboration@sw}% implicit #2 }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@author@init} % \begin{macro}{\@author@cleared} % \begin{macro}{\@authorclear@sw} % \begin{macro}{\@author@def} % \begin{macro}{\@author@join@} % \begin{macro}{\@author@join} % \changes{v4.0beta 2}{1999/06/20} % {Change handling of \cs{@author} to prevent parsing problems. % (Helps in error recovery when syntax errors exist)} % % Here are all the access procedures for the author data structure. % % We define a flag value for \cmd\@author (private), % a procedure for setting \cmd\@author\ to the flag value (\cmd\@author@init), % a Boolean to test against the flag value (\cmd\@authorclear@sw), % and a procedure to add new ancillary data to the author. % \begin{macrocode} \def\@author@cleared{{}{}}% \def\@author@init{% \let\@author\@author@cleared }% \def\@authorclear@sw{\@ifx{\@author\@author@cleared}}% \appdef\class@inithook{% \@author@init }% \def\@author@def#1#2{% \move@AU\move@AF\move@AUAF \let\@AF@join\@author@join #1% \def\@author{{#2}{}}% }% \def\@author@join@#1#2#3{% \def\@author{{#1}{\@join{\@separator}{#2}{#3}}}% }% \def\@author@join{\expandafter\@author@join@\@author}% \def\@author@gobble#1#2{}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\move@AU} % Move the most recent author to the list of current authors. % If we recently did a \cmd\@author@init, this is a no-op. % If we recently encountered a \cmd\collaboration, % we preface the author with the \cmd\CO@opr \ intercollated operator, % otherwise we apply \cmd\AU@opr. % \begin{macrocode} \def\move@AU{% \@authorclear@sw{}{% \collaboration@sw{% \expandafter\appdef \expandafter\AU@grp \expandafter{% \expandafter \CO@opr \@author }% }{% \expandafter\appdef \expandafter\AU@grp \expandafter{% \expandafter \AU@opr \@author }% }% }% \@author@init \@booleanfalse\collaboration@sw }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@author@finish} % We define a procedure to terminate author/affiliation parsing just before the title block is formatted. % We detect the case where an author group is not followed by an affiliation group. % \changes{v4.0beta 6}{2001/02/13} % {Actually append AU@grp to @AAClist.} % % We first finish off any author- or affiliation groups in progress. % Next, we detect the case where there is an author group in progress, but no affiliation group. % If so, we emit a diagnositic message and act as if a \cmd\noaffiliation\ command had been given. % In any case, we finish off any author/affiliation pair that may remain. % Formatting of the title block may now proceed. % \begin{macrocode} \def\@author@finish{% \move@AU\move@AF \@ifx{\AU@grp\@empty}{}{% \@ifx{\AF@grp\@empty}{% \begingroup \let\href\@secondoftwo \let\AU@opr\@firstoftwo \let\CO@opr\@firstoftwo \class@warn{Assuming \string\noaffiliation\space for \AU@grp}% \endgroup \begingroup\@affiliation{\blankaffiliation}%\endgroup in \@affiliation \move@AF % % \appdef \@AAC@list{\AF@opr}% % \appdef@eval\@AAC@list{\AF@grp}% % \appdef@e \@AAC@list{\AU@grp}% % \let\AU@grp\@empty % \let\AF@grp\@empty }{}% }% \move@AUAF }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@join} % The procedure \cmd\@join\ inserts % a separator between two tokens, or, if the first token is % nil, elides both that token and the separator. % \begin{macrocode} \def\@join#1#2#3{% \@if@empty{#2}{#3}{#2#1#3}% }% \def\@separator{;\space}% % \end{macrocode} % \end{macro} % % \begin{macro}{\surname} % \begin{macro}{\firstname} % No-op to allow better post-processing of the file. % \begin{macrocode} \let\surname\@firstofone \let\firstname\@firstofone % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\AU@grp} % The control sequence name \cmd\AU@grp\ accretes % consecutive \cmd\author\ entries (with \cmd\AU@opr\ as the intercollated operator) % and \cmd\collaboration\ entries (with \cmd\CO@opr\ as the intercollated operator). % Ultimately, its contents are appended to the author/affiliation list \cmd\@AAC@list. % It must be initialized to \cmd\@empty. % % Note on \cmd\AU@opr\ and \cmd\CO@opr: it is essential to treat these two operators to the greatest extent possible on an equal footing. % Therefore we invariably assign values to the pair of them within the same procedure. % % \begin{macrocode} \let\AU@grp\@empty % \end{macrocode} % \end{macro} % % \begin{macro}{\and} % The original \LaTeX\ idea of using one \cmd\author\ command to capture % all authors and their address just doesn't work with multiple authors % possibly sharing addresses, so in this class disable \cmd\and. % \begin{macrocode} \renewcommand\and{\class@err{\protect\and\space is not supported}} % \end{macrocode} % \end{macro} % % % \subsubsection{Commands for affiliation}% % % \begin{macro}{\affiliation} % After each group of authors with the same address, % give that address in \cmd\affiliation. % If later in the list you have an author % with the address of an earlier author, repeat the \cmd\affiliation\ % command: the system will detect the similarity and (if using the \classoption{superscriptaddress} option) only print the % affiliation once, reusing the superscript marker. % % When the \cmd\affiliation\ command is encountered, the current author and author group (if any) are at an end. % Also, the current affiliation is at an end. % % FIXME: changes to catcode required elsewhere now? % \begin{macrocode} \def\cat@comma@active{\catcode`\,\active}% {\cat@comma@active\gdef,{\active@comma}}% \def\active@comma{,\penalty-300\relax}% \newcommand\affiliation{% \move@AU\move@AF \begingroup \cat@comma@active \@affiliation }% \def\@affiliation#1{% \endgroup \let\@AF@join\@affil@join \@affil@def{#1}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\noaffiliation} % User-level command signifying that the current group of authors has \emph{no} affiliation. % % This is implemented by acting as if the \cmd\affiliation\ command has been given, and using a % flag value of \cmd\blankaffiliation, which \cmd\@affil@group\ can recognize as a no-op. % \begin{macrocode} \newcommand\noaffiliation{% \move@AU\move@AF % \edef\AF@grp{\AF@grp}% \begingroup\@affiliation{\blankaffiliation}% % \move@AF }% \def\blankaffiliation{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@affil@cleared} % \begin{macro}{\@affil@init} % \begin{macro}{\@affilclear@sw} % \begin{macro}{\@affil@def} % \begin{macro}{\@affil@join@} % \begin{macro}{\@affil@join} % % Here are all the access procedures for the affiliation data structure. % Note the similarity to those of the \cmd\@author\ data structure. % % We define a flag value for \cmd\@affil\ (private), % a procedure for setting \cmd\@affil\ to the flag value (\cmd\@affil@init), % a Boolean to test against the flag value (\cmd\@affilclear@sw), % and a procedure to add new ancillary data to the affiliation. % \begin{macrocode} \def\@affil@cleared{{}{}}% \def\@affil@init{% \let\@affil\@affil@cleared }% \def\@affilclear@sw{\@ifx{\@affil\@affil@cleared}}% \appdef\class@inithook{% \@affil@init }% \def\@affil@def#1{\def\@affil{{#1}{}}}% \def\@affil@join@#1#2#3{% \def\@affil{{#1}{\@join{\@separator}{#2}{#3}}}% }% \def\@affil@join{\expandafter\@affil@join@\@affil}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\move@AF} % Move the most recent affiliation to the affiliation group. % If we recently did a \cmd\@affil@init, this is a no-op. % \begin{macrocode} \def\move@AF{% \@affilclear@sw{}{% % \end{macrocode} % Set the \cmd\temp@sw\ to false, then execute the affiliation list (\cmd\@AFF@list) % with the intercollated operator set to \cmd\@affil@match\ % and with \cmd\@tempa\ holding the first component of \cmd\@affil, the current affiliation, which is to be matched. % If the current affiliation has been seen before, \cmd\temp@sw\ will be set to true, % \cmd\@tempc\ will be set to the existing affiliation number, % and \cmd\@tempd\ will be set to the affiliation's ancillary data. % The Boolean \cmd\@affils@sw\ being false prevents this test from ever returning a positive result. % % This procedure uses \cmd\@tempa\ and sets \cmd\@tempc, \cmd\@tempd, and \cmd\temp@sw. % \begin{macrocode} \@booleanfalse\temp@sw \let\@tempd\@empty \@affils@sw{% \expandafter\@firstoftwodef\expandafter\@tempa\@affil \def\AFF@opr{\@affil@match\@tempa}% \@AFF@list }{}\temp@sw % \end{macrocode} % True clause: This affiliation has been seen before. % If ancillary data for the affiliation have been given but are not identical to those seen before, give a warning. % \begin{macrocode} {% \expandafter\@secondoftwodef\expandafter\@tempb\@affil \@ifx{\@tempb\@empty}{}{% \@ifx{\@tempb\@tempd}{}{% \class@warn{% Ancillary information for \@tempa\space must not be different! Please put it on the first instance% }% }% }% \appdef@eval\AF@grp\@tempc }% % \end{macrocode} % False clause: This is a new address: % increment the counter to get a unique ID for the new affiliation % and append the new number, address, and footnote to the list \cmd\@AFF@list. % \begin{macrocode} {% \@if@empty{\expandafter\@firstoftwo\@affil}{% \edef\@tempc{\z@}% }{% \stepcounter{affil}% \edef\@tempc{\theaffil}% }% \appdef \@AFF@list{\AFF@opr}% \appdef@eval\@AFF@list\@tempc \appdef@e \@AFF@list{\@affil}% \appdef@eval\AF@grp\@tempc }% % \end{macrocode} % Append the ID of the affiliation to the affiliation group of the current author group. % \begin{macrocode} \@affil@init }% }% \def\@firstoftwodef#1#2#3{% \def#1{#2}% }% \def\@secondoftwodef#1#2#3{% \def#1{#3}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\move@AUAF} % \changes{v4.h}{1998/06/25} % {Changes to support groups of affiliations} % Append \cmd\AF@grp\ and \cmd\AU@grp\ to \cmd\@AAC@list\ % % and merge any new \cmd\AF@grp\ to \cmd\@AFG@list. % \begin{macrocode} \def\move@AUAF{% % \end{macrocode} % Entire procedure is predicated on something non-trivial to move. % % If both author and affiliation are nil, bail out. % % No, try that again: % % If we have seen any affiliations, then it is time to move the current % affiliation group and author group to \cmd\@AAC@list. % If not, we are picking up authors into an author group, and we % should bail out. % \begin{macrocode} %\@ifx{\AU@grp\@empty}{\@ifx{\AF@grp\@empty}{\true@sw}{\false@sw}}{\false@sw}% \@ifx{\AF@grp\@empty}% {}{% % \end{macrocode} % First, append current affiliation group (expansion of \cmd\AF@grp) % to the author/affiliation list (\cmd\@AAC@list), % using \cmd\AF@opr\ as the intercollated operator; % also append the current authors (\cmd\AU@grp). % \begin{macrocode} \appdef \@AAC@list{\AF@opr}% \appdef@eval\@AAC@list{\AF@grp}% \appdef@e \@AAC@list{\AU@grp}% % \end{macrocode} % Next, append the current affiliation group to \cmd\@AFG@list, % (if it is not already there) % using \cmd\AFS@opr\ as the intercollated operator. % % Note that \cmd\@AFG@list\ is a list of \emph{unique} affiliation groups. % \begin{macrocode} \@ifx{\@empty\AU@grp}{}{% \@ifx{\@empty\AF@grp}{}{% \@booleanfalse\temp@sw \def\AFS@opr{\x@match\AF@grp}% \@AFG@list \temp@sw{}{% \appdef \@AFG@list{\AFS@opr}% \appdef@eval\@AFG@list{\AF@grp}% }% }% }% % \end{macrocode} % Finally, null out the macros holding the author group and affiliation group, respectively. % \begin{macrocode} \let\AU@grp\@empty \let\AF@grp\@empty }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@AAC@list} % The \cmd\@AAC@list\ macro accretes % authors (using \cmd\AU@opr\ as the intercollated operator), % collaborations (using \cmd\CO@opr\ as the intercollated operator), % and % affiliations (using \cmd\AF@opr\ as the intercollated operator). % \begin{macrocode} \appdef\class@inithook{% \let\@AAC@list\@empty }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@AFG@list} % The macro \cmd\@AFG@list\ accretes \cmd\AF@grp, % with \cmd\AFS@opr\ as the intercollated operator. % % This token list is employed when and only when \classoption{groupedaddress} is in effect. % % It must be empty at the beginning of the document. % \begin{macrocode} \appdef\class@inithook{% \let\@AFG@list\@empty }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@AFF@list} % The macro \cmd\@AFF@list\ accretes the list of affiliations % with \cmd\AFF@opr\ as the intercollated operator. % It must be empty at the beginning of the document. % % Each \cmd\affiliation\ command in the document contributes % to this list, as long as the argument of that instance of the command % is ``new''. % % Each entry in this list consists of the \cmd\AFF@opr\ intercollated operator % followed by three brace-delimited tokens, representing, in order: % \begin{enumerate} % \item % the affiliation's unique ID, a number increasing monotonically for % each new entry, % \item % the optional argument of the \cmd\affiliation\ command, % the footnote to the affiliation, and % \item % the text of the affiliation. % \end{enumerate} % % At various junctures in the code, the control sequence name % \cmd\AFF@opr\ assumes the meaning of % \cmd\@affil@footnote\ (FIXME: never used), % \cmd\@affil@group, \cmd\affil@script, % or is defined to expand to \cmd\@affil@match\cmd\@tempa. % and the list \cmd\@AFF@list\ is expanded. % \begin{macrocode} \appdef\class@inithook{% \let\@AFF@list\@empty }% % \end{macrocode} % \end{macro} % % \begin{macro}{\AF@grp} % The macro \cmd\AF@grp\ accretes affiliation IDs into an affiliation group. % It must be empty at the beginning of the document. % \begin{macrocode} \let\AF@grp\@empty % \end{macrocode} % \end{macro} % % \begin{macro}{\@affil@match} % The definition for the \cmd\AFF@opr, the intercollated operator for \cmd\@AFF@list, % when adding a new affiliation: seeks a match with any earlier affiliation. % When the affiliation list is executed, this procedure tests each entry against % the `new' affiliation (which has been stored in \cmd\@tempa). % % Uses \cmd\temp@sw, \cmd\@tempc, and \cmd\@tempd\ to communicate back: % if it returns \cmd\temp@sw\ true, a match was found, % then \cmd\@tempc\ will be the footnote number of the matching entry % and \cmd\@tempd\ will be the auxiliary information of the matching entry. % \begin{macrocode} \def\@affil@match#1#2#3#4{% \temp@sw{}{% \def\@tempifx{#3}% \@ifx{\@tempifx#1}{% \@booleantrue\temp@sw \def\@tempc{#2}% \def\@tempd{#4}% }{% }% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@tempaffil@script} % Give a superscript marker to the address, % and junk the text argument (|#2|). % \begin{macrocode} %\def\@tempaffil@script#1#2{% % ,\,#1% %}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@tempaffil@group} % % Execute if we are grouping authors above `main addresses' (\classoption{groupedaddress}). % Put temp address in a footnote, with explanatory text. % Note: this procedure uses \cmd\@tempb\ and \cmd\@tempc\ % to communicate to \cmd\AFF@opr. % \begin{macrocode} %\def\@tempaffil@group#1#2{% % \def\@tempc{#1}% % \def\@tempb{#2}% % \begingroup % \let\AFF@opr \@affil@footnote % \@AFF@list % \endgroup %}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@affil@footnote} % The alias of \cmd\AFF@opr\ when \cmd\@AFF@list\ % is executed by \cmd\@tempaffil@group. % If we find a match of the affiliation number to \cmd\@tempc, % then footnotes are formatted with the relevant content and \cmd\@tempb. % \begin{macrocode} %\def\@affil@footnote#1#2#3{% % \def\@tempifx{#1}% % \@ifx{\@tempifx\@tempc}{% % \comma@space % \expandafter\frontmatter@footnote\expandafter{\@tempb#2}% % \frontmatter@footnote{#3}% % }{% % }% %}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@AF@join} % The \cmd\csname\ \cmd\@AF@join\ is a procedure used within % \cmd\email, \cmd\homepage, \cmd\thanks, and \cmd\altaffiliation. % When such a command appears after an \cmd\author, \cmd\collaboration, or \cmd\affiliation % command, the \cmd\@AF@join\ procedure appends the argument given to the appropriate % macro. % Its default is to give an error message, since these commands are legal only within % the particular context mentioned. % \begin{macrocode} \appdef\class@inithook{% \let\@AF@join\@AF@join@error }% \def\@AF@join@error#1{% \class@warn{% \string\email, \string\homepage, \string\thanks, or \string\altaffiliation\space appears in wrong context. }% }% % \end{macrocode} % \end{macro} % % % \subsubsection{Commands for auxiliary information}% % % \begin{macro}{\email} % Just tacks the email address on to the current author or affiliation. % \begin{macrocode} \def\sanitize@url{% \@makeother\%% \@makeother\~% \@makeother\_% }% \newcommand*\email[1][Electronic address: ]{\begingroup\sanitize@url\@email{#1}}% \def\@email#1#2{% \endgroup \@AF@join{#1\href{mailto:#2}{#2}}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\homepage} % Just tacks the URL on to the current author or affiliation. % Note: group opened in \cmd\homepage\ is closed in \cmd\@homepage. % \begin{macrocode} \newcommand*\homepage[1][URL:~]{\begingroup\sanitize@url\@homepage{#1}}% \def\@homepage#1#2{% \endgroup \@AF@join{#1\url{#2}}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\url} % \begin{macro}{\href} % \begin{macrocode} \appdef\class@documenthook{% \providecommand\url{\texttt}% \providecommand\href[2]{\url{#2}}% }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\thanks} % % The operative version of \cmd\thanks\ appends an item to \cmd\@author, or \cmd\@affil's auxiliary data. % \begin{macrocode} \def\thanks{% implicit #1 \@AF@join }% % \end{macrocode} % \end{macro} % % \begin{macro}{\altaffiliation} % \changes{v4.d}{1998/01/31} % {change name from \cs{tempaffiliation}} % \changes{v4.l}{1998/09/01} % {add optional argument handling back} % Implemented more or less like \cmd\thanks\ but shares the affiliation % counter. % Optional argument may be used to give explanatory text eg % `currently staying at' % This will be placed before the address, if used in a footnote. % \begin{macrocode} \newcommand*\altaffiliation[2][]{% \@AF@join{#1#2}% }% % \end{macrocode} % \end{macro} % % % \subsubsection{Procedures for author, collaboration, and affiliation}% % % Macros that list off, say, authors, and which require punctuation, like ``A, B, and C'', will use % \cmd\set@listcomma@list, \cmd\set@listcomma@count, \cmd\@listand, and \cmd\@listcomma. % These macros use the \cmd\@tempcnta\ register to keep track of how many items remain to be listed off. % % At present, \cmd\@author@present\ will decrement that counter. % % \begin{macro}{\set@listcomma@list} % \begin{macro}{\set@listcomma@count} % \changes{v4.l}{1998/09/01} % {macro added} % Pop the author count for this collaboration. % % Note: by side effect, it assigns \cmd\@listcomma: % for a list of length two, suppress comma addition. % \begin{macrocode} \def\set@listcomma@list#1{% \expandafter\@reset@ac\expandafter#1#1{0}\@reset@ac{% \let\@listcomma\relax }{% \let\@listcomma\@listcomma@comma }% }% \def\set@listcomma@count#1{% \@ifnum{#1=\tw@}{% \let\@listcomma\relax }{% \let\@listcomma\@listcomma@comma }% }% % \end{macrocode} % Does the actual pop operation, then generates a Boolean which selects one of the two assignments for \cmd\@listcomma. % % Note: this procedure sets \cmd\@tempcnta\ to reflect the number of items to list off. % \begin{macrocode} \def\@reset@ac#1#2#3\@reset@ac{% \def#1{#3}% \@tempcnta#2\relax \@ifnum{#2=\tw@}% }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\listand} % Might need extending with penalties etc. % % Note: this procedure expects \cmd\@tempcnta\ to reflect the current number of items remaining to list off. % \begin{macrocode} \def\@listand{\@ifnum{\@tempcnta=\tw@}{\andname\space}{}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@listcomma} % This definition, with \cmd\@ne\ puts a comma before and. % % David Carlisle says: In UK English (at least) would have \cmd\tw@\ here, % which would then implement the convention of indicating conjunction with comma or ``and'', but not both. % % Note: this procedure expects \cmd\@tempcnta\ to reflect the current number of items remaining to list off. % \begin{macrocode} \def\@listcomma@comma{\@ifnum{\@tempcnta>\@ne}{,}{}}% \def\@listcomma@comma@UK{\@ifnum{\@tempcnta>\tw@}{,}{}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@collaboration@err} % This command will be executed if are in a \classoption{groupedaddress} situation and % the document contained a \cmd\collaboration\ command. % % There already has been issued a warning message explaining that \cmd\collaboration\ is wrong in this case, % so here we simply gobble. % \begin{macrocode} \def\@collaboration@err#1#2{% %\class@warn{An illegal \string\collaboration\ command has been entered!}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\doauthor} % Main control over how authors are typeset. % % |#1| is loaded by \cmd\author % % |#2| is loaded by \cmd\email, \cmd\homepage, \cmd\altaffiliation, or \cmd\thanks % % |#3| is the superscript affiliation, if at all used. % % First, the author name is formatted, followed by a comma, % then come any marks relating to affiliation (if present), % then come the homepage URL and email address, if any, with % appropriate punctuation. % \begin{macrocode} \def\doauthor#1#2#3{% \ignorespaces#1\unskip\@listcomma \def\@tempifx{#3}% \@ifx{\@tempifx\@empty}{% \def\@tempifx{#2}% \@ifx{\@tempifx\@empty}{}{\frontmatter@footnote{#2}}% }{% #3% \def\@tempifx{#2}% \@ifx{\@tempifx\@empty}{}{\comma@space\frontmatter@footnote{#2}}% }% \space \@listand }% % \end{macrocode} % \end{macro} % % \begin{macro}{\AF@opr} % DPC: The number(s) associated to the affiliation address(es). % \end{macro} % % \begin{macro}{\@thanks} % \changes{v4.d}{1998/01/31} % {\cs{comma@space} added} % Society-specific options may change this. \cmd\comma@space\ is a separator % between adjacent footnotes. % \begin{macrocode} \def\@thanks{\comma@space\footnote} % \end{macrocode} % \end{macro} % % \begin{macro}{\x@match} % Procedure \cmd\x@match\ is used as an alias \cmd\AFS@opr, % probing the list of affiliation groups % and setting a Boolean if a match is found to \#1 (usually the current affiliation group). % % Procedure \cmd\y@match\ is used as an alias to \cmd\@TBN@opr, % probing the list of unique title block footnotes for a match to the footnote text: % when the first match is found it sets a Boolean, % defining \cmd\@tempb\ to the number of that footnote. % \begin{macrocode} \def\x@match#1#2{% \temp@sw{}{% \def\@tempifx{#2}% \@ifx{\@tempifx#1}{% \@booleantrue\temp@sw }{% }% }% }% \def\y@match#1#2#3{% \temp@sw{}{% \def\@tempifx{#3}% \@ifx{\@tempifx#1}{% \@booleantrue\temp@sw \def\@tempb{#2}% }{% }% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@footnote} % Used when typesetting a title block footnote. % (Item 290: merge duplicates.) % % Maintains a list of frontmatter footnotes along with associated device. % Uniquifies each footnote by traversing the list and looking for a match to the footnote text. % If found, define \cmd\@tempb\ to the corresponding footnote device, and typeset it with \cmd\@footnotemark. % If never found, manually increment footnote counter, % determine the corresponding footnote device, and % add footnote text and device to the list of frontmatter footnotes. % % The list \cmd\@FMN@list\ is processed later in the title block production. % % Note that this method of making footnotes runs afoul of \classname{hyperref}'s patches of the \LaTeX\ kernel. % Therefore, we avoid trouble by refraining from using \cmd\@footnotemark\ and by creating our own hypertext links. % \begin{macrocode} \def\frontmatter@footnote#1{% \begingroup \@booleanfalse\temp@sw \def\@tempa{#1}% \let\@tempb\@empty \def\@TBN@opr{\y@match\@tempa}% \@FMN@list \temp@sw{% \expandafter\frontmatter@footnotemark \expandafter{\@tempb}% }{% \stepcounter\@mpfn \protected@xdef\@tempb{\the\csname c@\@mpfn\endcsname}% \expandafter\frontmatter@footnotemark \expandafter{\@tempb}% \expandafter\g@addto@macro \expandafter\@FMN@list \expandafter{% \expandafter \@TBN@opr \expandafter {\@tempb}{#1}% }% }% \endgroup }% \appdef\class@inithook{% \global\let\@FMN@list\@empty }% \def\frontmatter@footnotemark#1{% \leavevmode \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi \begingroup \hyper@linkstart {link}{frontmatter@#1}% \csname c@\@mpfn\endcsname#1\relax \def\@thefnmark{\thempfn}% \@makefnmark \hyper@linkend \endgroup \ifhmode\spacefactor\@x@sf\fi \relax }% % \end{macrocode} % \end{macro} % % % % \subsection{The keywords command}% % \begin{macro}{\keywords} % \begin{macro}{\@keywords} % Usual game, save text in a macro for processing by \cmd\maketitle. % \begin{macrocode} \def\keywords#1{% \aftermaketitle@chk{\keywords}% \gdef\@keywords{#1}% }% \def\@keywords{}% % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{The \cs{date} command and related commands}% % \begin{macro}{\date} % \begin{macro}{\received} % \begin{macro}{\revised} % \begin{macro}{\accepted} % \begin{macro}{\published} % \begin{macro}{\@date} % \begin{macro}{\@received} % \begin{macro}{\@revised} % \begin{macro}{\@accepted} % \begin{macro}{\@published} % Use the \cmd\date\ command to specify the document date, % the \cmd\received\ command to specify the date received, % \cmd\revised\ for date revised, % \cmd\accepted\ for date accepted, and % \cmd\published\ for date published. % Normally only \cmd\date\ to be used by author, % the remainder used only by editors. % % DPC: As for \cmd\keywords, but this time don't flag a warning if there is no % revision date specified. % % In each case the user-level command defines the value of a % macro which buffers the data entered by the user. % For instance, \cmd\received\ causes \cmd\@received\ to % acquire a value. % The optional argument allows the user to override the % text that will be typeset along with the date; % the default value of that text is itself % a localized macro. % \begin{macrocode} \renewcommand*\date[2][\Dated@name]{\def\@date{#1#2}}% \def\@date{}% \newcommand*\received[2][\Received@name]{\def\@received{#1#2}}% \def\@received{}% \newcommand*\revised[2][\Revised@name]{\def\@revised{#1#2}}% \def\@revised{}% \newcommand*\accepted[2][\Accepted@name]{\def\@accepted{#1#2}}% \def\@accepted{}% \newcommand*\published[2][\Published@name]{\def\@published{#1#2}}% \def\@published{}% % \end{macrocode} % % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsection{The pacs command}% % PACS, the Physics and Astronomy Classification Scheme. % \begin{macro}{\pacs} % \begin{macro}{\@pacs} % As for \cmd\keywords\ % \begin{macrocode} \def\pacs#1{% \aftermaketitle@chk{\pacs}% \gdef\@pacs{#1}% }% \def\@pacs{}%{\class@warn{No PACS numbers}}% % \end{macrocode} % \end{macro} % \end{macro} % % \subsection{The \cs{preprint} command} % % \changes{v4.g}{1998/06/10} % {multiple preprint commands} % \begin{macrocode} \def\preprint#1{\gappdef\@preprint{\preprint{#1}}}% \let\@preprint\@empty % \end{macrocode} % % \subsection{draft} % DPC: Name clash with draft option. \LaTeX\ doesn't care, but it confuses me. % % This command is a 3.1 relic, now removed. % \begin{macrocode} %\newcommand\draft{\@booleantrue\draft@sw}% % \end{macrocode} % % \subsection{The \env{abstract} environment}% % % \changes{v4.0beta 2}{1999/06/20} % {Gathered all code for the abstract environment together % and abstracted out the formatting details for journals to override.} % % \begin{macro}{\absbox} % % \begin{macrocode} \newbox\absbox % \end{macrocode} % \end{macro} % % \begin{environment}{abstract} % Abstract, as in AMS classes, must be specified \emph{before} % \cmd\maketitle. It just saves everything up in \cmd\absbox. % \changes{v4.d}{1998/01/31} % {If empty \cs{abstractname} omit spacing} % \begin{macrocode} % \changes{v4.e}{1998/01/31} % {hookify} % Note that the specifics of how the abstract is to be % formatted are set by \cmd\frontmatter@abstractwidth, % \cmd\frontmatter@abstractheading, and \cmd\frontmatter@abstractfont. % % Here we wish to set the abstract into type but save it away in a box, much like % the \cmd\minipage\ command does. % % Note that the \cmd\endabstract\ portion of the environment % begins with code that mostly duplicates \cmd\endminipage, but without the \cmd\@iiiparbox. % At the end, we simply transfer the contents of the \cmd\minipage\ % into a box of our own. % % However, we also have to end the gratuitous % paragraph begun by \cmd\minipage. % We ensure that no trace of that paragraph is left, % by absorbing the \cmd\parindent\ box. % Doing so destroys the paragraph entirely, except % for the \cmd\parskip\ glue, and that morsel is pruned, because we are at the top % of a page. % % This mechanism is vulnerable, however, because anything placed into the horizontal list % after the \cmd\parindent\ box will confound it. % And that is exactly what happens under Mik\TeX: % There seems to be an extension to the \TeX\ standard operating here which inserts a \cmd\special \ at the beginning of every paragraph. % (The mechnism is \emph{not} based on \cmd\everypar.) % % To accomodate this state of affairs, % we have a new mechanism that offers an even more complete rewrite of \env{minipage}. % % The user can elect to use this new mechanism via the \classoption{newabstract}; % likewise the old mechanism via the \classoption{oldabstract}. % % \begin{macrocode} \newenvironment{abstract}{% \aftermaketitle@chk{\begin{abstract}}% \global\setbox\absbox\vbox\bgroup \color@begingroup \columnwidth\textwidth \hsize\columnwidth \@parboxrestore \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote}\c@mpfootnote\z@ \let\@footnotetext\frontmatter@footnotetext \minipagefootnote@init \let\@listdepth\@mplistdepth \@mplistdepth\z@ \@minipagerestore \@setminipage \frontmatter@abstractheading \frontmatter@abstractfont \let\footnote\mini@note }{% \par \unskip \minipagefootnote@here \@minipagefalse %% added 24 May 89 \color@endgroup \egroup }% % \end{macrocode} % \end{environment} % % \begin{macro}{\frontmatter@footnotetext} % We reimplement \cmd\@mpfootnotetext\ under a new name (so as not to be overridden by the \classname{hyperref} package) % and extend it to accomodate hyperrefs. % % Note that this procedure is very like \classname{ltxutil}'s \cmd\mp@footnotetext, except that it % uses \texttt{p@mpfootnote} instead of \texttt{p@mpfootnote}, and % \cmd\frontmatter@makefntext\ instead of \cmd\@makefntext. % % \begin{macrocode} \long\def\frontmatter@footnotetext#1{% \minipagefootnote@pick \reset@font\footnotesize \interlinepenalty \interfootnotelinepenalty \splittopskip \footnotesep \splitmaxdepth \dp \strutbox \set@footnotewidth \@parboxrestore \protected@edef\@currentlabel{\csname p@mpfootnote\endcsname\@thefnmark}% \color@begingroup \frontmatter@makefntext{% \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox }% \color@endgroup \minipagefootnote@drop }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@abstractheading} % The default abstract head; journals will override this procedure. % \begin{macrocode} \def\frontmatter@abstractheading{% \begingroup \centering\large \abstractname \par \endgroup }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@abstractfont} % The default type specification for the body of the abstract. % Journals will override this setting. % \begin{macrocode} \def\frontmatter@abstractfont{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@abstractwidth} % The default setting is the full text width; % journals can override this setting. % \begin{macrocode} \def\frontmatter@abstractwidth{\textwidth} % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@abstract@produce} % This procedure determines how the abstract is incorporated % into the title block. We split this out in anticipation % of the need to lift the limitation that the abstract not break over pages. % % If we are in preprint style, we provide an easy pagebreak point immediately above the abstract. % This means that the abstract will either fit entirely on the same page as the title block, % or it will start a page of its own (which may itself break onto a subsequent page if necessary). % \begin{macrocode} \def\frontmatter@abstract@produce{% \par % \tracingall \preprintsty@sw{% \do@output@MVL{% \vskip\frontmatter@preabstractspace \vskip200\p@\@plus1fil \penalty-200\relax \vskip-200\p@\@plus-1fil }% }{% \addvspace{\frontmatter@preabstractspace}% }% % \leavevmode \begingroup \dimen@\baselineskip \setbox\z@\vtop{\unvcopy\absbox}% \advance\dimen@-\ht\z@\advance\dimen@-\prevdepth \@ifdim{\dimen@>\z@}{\vskip\dimen@}{}% \endgroup \unvbox\absbox \@ifx{\@empty\mini@notes}{}{\mini@notes\par}% % \par \addvspace\frontmatter@postabstractspace % \showlists % \tracingplain }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@preabstractspace} % \begin{macro}{\frontmatter@postabstractspace} % Space above and space below abstract in title block % \begin{macrocode} \def\frontmatter@preabstractspace{.5\baselineskip} \def\frontmatter@postabstractspace{.5\baselineskip} % \end{macrocode} % \end{macro} % \end{macro} % % % % \subsection{Formatting the title block}% % % \begin{environment}{titlepage} % This is \LaTeXe's \classname{article} class version, % with modifications. % \changes{v4.0beta 3}{1999/11/13} % {grid changes with ltxgrid} % \begin{macrocode} \newenvironment{titlepage}{% \twocolumn@sw{\onecolumngrid}{\newpage}% \thispagestyle{titlepage}% \setcounter{page}\@ne }{% \twocolumn@sw{\twocolumngrid}{\newpage}% \twoside@sw{}{% \setcounter{page}\@ne }% }% % \end{macrocode} % \end{environment} % % \begin{macro}{\maketitle} % \changes{v4.d}{1998/01/31} % {hookify} % Put it all together to format the title block. % \begin{macrocode} \def\maketitle{% \@author@finish \title@column\titleblock@produce \suppressfloats[t]% % \end{macrocode} % Now save some memory. % \begin{macrocode} \let\and\relax \let\affiliation\@gobble % \let\address\affiliation \let\author\@gobble \let\@AAC@list\@empty \let\@AFF@list\@empty \let\@AFG@list\@empty % \let\keywords\@gobble % \let\@keywords\@empty \let\@AF@join\@AF@join@error \let\email\@gobble \let\@address\@empty \let\maketitle\relax \let\thanks\@gobble \titlepage@sw{% \vfil \clearpage }{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\titleblock@produce} % This procedure produces the title block. % % It effectively executes inside a group % and always returns us to vertical mode. % % Note: we assume that it is OK to set the footnote counter to zero at this point. % Is this a safe assumption? % \begin{macrocode} \def\titleblock@produce{% \begingroup % \end{macrocode} % Special footnote version [of footnotes] for \cmd\thanks, % copied from \classname{article} class \cmd\maketitle. % \changes{v4.0beta 2}{1999/06/20} % {Set \cs{footnote} to \LaTeX\ standard version for this scope.} % \begin{macrocode} \let\footnote\footnote@latex \let\@makefnmark\@makefnmark@latex \let\@footnotemark\@footnotemark@latex \let\thefootnote\frontmatter@thefootnote % \let\@makefntext\frontmatter@makefntext \global\c@footnote\z@ \let\@makefnmark\frontmatter@makefnmark \frontmatter@setup \thispagestyle{titlepage}\label{FirstPage}% % \end{macrocode} % Produce the title: % \begin{macrocode} \frontmatter@title@produce % \end{macrocode} % Produce the author list: % \begin{macrocode} \groupauthors@sw{% \frontmatter@author@produce@group }{% \frontmatter@author@produce@script }% % \end{macrocode} % Produce the dates: % \begin{macrocode} \frontmatter@RRAPformat{% \expandafter\produce@RRAP\expandafter{\@date}% \expandafter\produce@RRAP\expandafter{\@received}% \expandafter\produce@RRAP\expandafter{\@revised}% \expandafter\produce@RRAP\expandafter{\@accepted}% \expandafter\produce@RRAP\expandafter{\@published}% }% % \end{macrocode} % Produce the abstract, PACS, and keywords, and end any paragraph. % \begin{macrocode} \frontmatter@abstract@produce \@pacs@produce\@pacs \@keywords@produce\@keywords \par \frontmatter@finalspace \endgroup }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@title@produce} % The default formatting procedure for the article title. % This procedure should take care of the vertical space below the title. % % Journals may override this procedure, but it is more likely that they will % use the hooks \cmd\frontmatter@title@above, \cmd\frontmatter@title@format, and \cmd\frontmatter@title@below. % % At this point, we patch into \cmd\let@mark\ so that the common markup idiom \cmd\\ is taken care of. % \begin{macrocode} \def\frontmatter@title@produce{% \begingroup \frontmatter@title@above \frontmatter@title@format \@title \@ifx{\@title@aux\@title@aux@cleared}{}{% \expandafter\frontmatter@footnote\expandafter{\@title@aux}% }% \par % \@ifx{\@shorttitle\@empty}{% % \markboth{\@title}{\@title}% % }{% % \markboth{\@shorttitle}{\@shorttitle}% %% \class@warn{Unused short title ignored}% % }% \frontmatter@title@below \endgroup }% \appdef\let@mark{\let\\\relax}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@title@above} % \begin{macro}{\frontmatter@title@format} % \begin{macro}{\frontmatter@title@below} % The default values for formatting specifications for the article title. % % The procedure \cmd\frontmatter@title@above\ should take care of the vertical space above the title; % \cmd\frontmatter@title@below\ below. % The procedure \cmd\frontmatter@title@format\ should invoke any font switches, etc. % that may apply to the title. % % Journals will override this procedure. % \begin{macrocode} \def\frontmatter@title@above{}% \def\frontmatter@title@format{}% \def\frontmatter@title@below{\addvspace{\baselineskip}}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \subsubsection{Authors and affiliations in superscriptaddress style} % % \begin{macro}{\frontmatter@author@produce@script} % \cmd\frontmatter@author@produce@script\ is an alias for \cmd\frontmatter@author@produce, % the procedure that formats the author/affiliation list. % % In this case, the authors affiliations are being superscripted % (class option \classoption{superscriptaddress}). % % This procedure must ensure that any paragraph that it starts gets ended finally. % \begin{macrocode} \def\frontmatter@author@produce@script{% \begingroup \let\@author@present\@author@present@script % \end{macrocode} % \changes{v4.l}{1998/09/01} % {Changes to add collaboration processing, which now % means doing comma/and processing on each sublist} % When the author/affiliation list \cmd\@AAC@list\ is executed, % \cmd\@tempcnt\ counts each author, % and % \cmd\@tempa\ stores a list of author indices for the current collaboration. % % Note: this procedure uses \cmd\AU@temp\ to hold a list of author counts for each collaboration. % Note: also uses \cmd\@tempcnta\ to communicate between procedures. % This usage ot \cmd\@tempcnta\ is OK, because the expansion of \cmd\@AAC@list\ will trigger only the execution of % our own procedures. % \begin{macrocode} \let\AU@temp\@empty \@tempcnta\z@ % \end{macrocode} % % We wish to know how many authors are in each collaboration, for the purposes of \cmd\listcomma\ and \cmd\listand. % % Here we assign values for the intercollated operators appearing within \cmd\@AAC@list, % then execute that macro, registering the authors in each collaboration. % Afterwards, clean up by emulating an empty collaboration. % % The result, stored in \cmd\AU@temp, is a list of brace-delmited tokens, each a number % representing the number of authors in that collaboration. % \begin{macrocode} \let\AF@opr \@gobble \def\AU@opr{\@author@count\@tempcnta}% \def\CO@opr{\@collaboration@count\AU@temp\@tempcnta}% \@AAC@list \expandafter\CO@opr\@author@cleared % \end{macrocode} % Next, present the authors and their affiliations. % % We assign values for the intercollated operators appearing within \cmd\@AAC@list. % Next, assign \cmd\@listcomma\ based on the number of authors in the first collaboration. % Then expand \cmd\@AAC@list. % % Upon completion, there will be two space tokens following the last author because of \cmd\listand\ processing; % remove them, then end the last paragraph. % % FIXME: this juncture would be a good time to effectively eliminate the unused affiliations in \cmd\@AFF@list. % \begin{macrocode} \begingroup \frontmatter@authorformat \let\AF@opr \@affilID@def \let\AU@opr \@author@present \def\CO@opr{\@collaboration@present\AU@temp}% \set@listcomma@list\AU@temp \@AAC@list \unskip\unskip \par \endgroup % \end{macrocode} % We now list out the affiliations in the order they appeared. % \begin{macrocode} \begingroup \frontmatter@above@affiliation@script % \let\@AFU@list\@empty % \let\AFS@opr \affils@present@script % \@AFG@list % \let\AF@opr \affil@present@script % \@AFU@list \let\AFF@opr \@affil@script % \say\@AFF@list \@AFF@list \frontmatter@footnote@produce \par \endgroup \endgroup }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@author@count} % This version of \cmd\AU@opr\ counts the number of authors it processes. % \begin{macrocode} \def\@author@count#1{\advance#1\@ne\@author@gobble}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@collaboration@present} % Format a collaboration. % Note that we immediately end the paragraph thus begun, because we only support % \classoption{superscriptaddress}-style processing. % % Note also that the execution of the production procedures takes place inside of a group; % for reasons of protective programming. % % Bug note: originally, the number of authors in each collaboration was stored in \cmd\@tempa, % but this exposed us to procedures in our production that modified the meaning of \cmd\@tempa. % % The last action done in this procedure is to assign \cmd\@listcomma\ based on the number of authors in the next collaboration. % \begin{macrocode} \def\@collaboration@present#1#2#3{% \par \begingroup \frontmatter@collaboration@above \@author@present{(\ignorespaces#2\unskip)}{#3}% \par \endgroup \set@listcomma@list#1% }% \def\frontmatter@collaboration@above{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@collaboration@count} % Simply register each author in this collaboration. % Note: \#1 is a \cmd\csname\ to hold the value, \#2 is the \cmd\count\ register holding the count of interest. % \begin{macrocode} \def\@collaboration@count#1#2{% \appdef@eval#1{\the#2}#2\z@ \@author@gobble }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@affilID@def} % % The \cmd\@affilID@def\ procedure, an alias of \cmd\AF@opr\ used during \cmd\frontmatter@author@produce@script\ processing, % memorizes the affiliation in \cmd\@affilID@temp. % \begin{macrocode} \def\@affilID@def{\def\@affilID@temp}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@affilID@temp} % % The macro \cmd\@affilID@temp\ is used to communicate between % \cmd\doauthor\ and instances of \cmd\AF@opr\ within the author list. % \begin{macrocode} \let\@affilID@temp\@empty % \end{macrocode} % \end{macro} % % \begin{macro}{\affils@present@script} % An alias of \cmd\AFS@opr, this procedure is applied to \cmd\@AFG@list\ and builds % \cmd\@AFU@list, a list of unique affiliations found within affiliation groups. % % \begin{macrocode} %\def\affils@present@script#1{% % \get@affil#1{}% %}% %\def\get@affil#1{% % \def\@tempa{#1}% % \@ifx{\@empty\@tempa}{}{% % \@booleanfalse\temp@sw % \def\AF@opr{\x@match\@tempa}% % \@AFU@list % \temp@sw{}{% % \appdef\@AFU@list{\AF@opr{#1}}% % }% % \get@affil % }% %}% % \end{macrocode} % \end{macro} % % \begin{macro}{\affil@present@script} % An alias of \cmd\AF@opr, this procedure is applied to \cmd\@AFU@list\ when formatting the affiliations % under \classoption{superscriptaddress}. % It in turn applies \cmd\affil@script\ to \cmd\@AFF@list, thereby formatting the affiliation % associated with this affiliation index. % % Note: it traverses the \cmd\@AFF@list\ for each entry in the \cmd\@AFU@list, thereby making this % portion of code execute in $N^{2}$ time. % \begin{macrocode} %\def\affil@present@script#1{% % \def\@tempa{#1}% % \begingroup % \frontmatter@affiliationfont % \let\AFF@opr \affil@script % \@AFF@list % \endgroup %}% % \end{macrocode} % \end{macro} % % \begin{macro}{\affil@script} % Alias of \cmd\AFF@opr, this procedure is applied to \cmd\@AFF@list\ when formatting the affiliations % under \classoption{superscriptaddress}. % It rejects all entries not matching the affiliation index held in \cmd\@tempa. % \begin{macrocode} \def\affil@script#1#2#3{% \def\@tempifx{#1}\@ifx{\@tempifx\@tempa}{% \@if@empty{#2}{}{% \par \begingroup \textsuperscript{\normalfont#1}% #2% \@if@empty{#3}{}{\frontmatter@footnote{#3}}% \par \endgroup }% }{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@affil@script} % Alias of \cmd\AFF@opr: % The affiliations are being formatted in the case % where affiliations are being superscripted: % make a list out of the affiliations with the numbers printed. % Society-specific code can change the formatting % by overriding the definition of \cmd\frontmatter@affiliationfont. % % FIXME: dead code. % \begin{macrocode} \def\@affil@script#1#2#3{% \@ifnum{#1=\z@}{}{% \par \begingroup \frontmatter@affiliationfont % \textsuperscript{\normalfont#1}% \textsuperscript{#1}% #2% \@if@empty{#3}{}{\frontmatter@footnote{#3}}% \par \endgroup }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@author@present@script} % \changes{v4.h}{1998/06/25} % {Changes to support groups of affiliations} % This version of \cmd\AU@opr\ applies to the \classoption{superscriptaddress} class option. % Need to add commas between groups % of address numbers, which are passed in the macro \cmd\@affilID@temp\ in the form % |{3}{4}{7}| if this set of authors is related to addresses, 3, 4 and 7. % \begin{macrocode} \def\@author@present@script#1#2{% \begingroup % \parskip\@author@parskip\relax \gdef\comma@space{\textsuperscript{,\,}}% % \@ifx{\@affilID@temp\@empty}{% % \doauthor{#1}{#2}{}% % }{% % \expandafter\set@count@\@affilID@temp{}{}\@@nil % \@ifnum{\count@=\z@}{% % \doauthor{#1}{#2}{}% % }{% % \doauthor{#1}{#2}{% % \textsuperscript{\expandafter\@affilcomma\@affilID@temp\relax\relax}% % }% % }% % }% \doauthor{#1}{#2}{% \let\@tempa\@empty \expandafter\@affil@present@script\@affilID@temp\relax }% \endgroup \advance\@tempcnta\m@ne }% %\def\set@count@#1#2\@@nil{% % \count@#1\relax %}% \def\@affilcomma#1#2{% \@ifx{\z@#1}{% \@ifx{\relax#2}{}{% \@affilcomma{#2}% }% }{% #1% \@ifx{\relax#2}{}{% \@ifx{\z@#2}{% \@affilcomma }{% ,\,\@affilcomma{#2}% }% }% }% }% \def\@affil@present@script#1{% \@ifx{\relax#1}{% \@ifx{\@tempa\@empty}{}{% \textsuperscript{\expandafter\@affilcomma\@tempa\relax\relax}% }% }{% \@ifx{\z@#1}{}{\appdef\@tempa{{#1}}}% \@affil@present@script }% }% \@provide\@author@parskip{\z@skip}% % \end{macrocode} % \end{macro} % % % \subsubsection{Authors and affiliations in groupedaddress style} % % \begin{macro}{\frontmatter@author@produce@group} % \cmd\frontmatter@author@produce@group\ is an alias for \cmd\frontmatter@author@produce, % the procedure that formats the author/affiliation list when \classoption{groupedaddress} is in effect. % % In this case, the authors are being grouped above their shared addresses. % How it works: the \cmd\@AFG@list, a list of all unique affiliation groups, is expanded. % For each such group, all authors belonging to that group are formatted above the affiliation group. % Collaborations are silently passed over. % % This procedure must ensure that any paragraph that it starts gets ended finally. % \begin{macrocode} \def\frontmatter@author@produce@group{% \begingroup \let\@author@present\@author@present@group \frontmatter@authorformat \let\AFS@opr \affils@present@group \let\@listcomma\relax \@AFG@list \frontmatter@footnote@produce \par \endgroup \frontmatter@authorbelow }% \@provide\frontmatter@authorbelow{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\affils@present@group} % Alias of \cmd\AFS@opr, this procedure is used on every element of % \cmd\@AFG@list, the list of unique affiliation groups, % when formatting the author/affiliation block: % It presents all authors sharing this affiliation group. % % This procedure is called via the procedure % \cmd\frontmatter@author@produce@group, an alias for \cmd\frontmatter@author@produce, % % Its use pertains to the class options % \classoption{groupedaddress}, \classoption{unsortedaddress}, and \classoption{runinaddress} % (that is, \cmd\groupauthors@sw\ is true). % % For each invocation, the entire \cmd\@AAC@list\ is run through (twice), % making this process execute in $N^{2}$ time. (Is this really true?) % \begin{macrocode} \def\affils@present@group#1{% % \end{macrocode} % Count (using \cmd\@tempcnta) the authors in the author list whose affiliation is |#1|. % % Note that \cmd\AF@temp\ is used as a storage register for the argument % of the procedure, for purposes of comparison using \cmd\ifx. % % Note: here we use \cmd\@tempcnta\ to communicate accumulate the number of authors in the current affiliation set. % % QUERY: does the value of \cmd\AF@temp\ and \cmd\AF@opr\ need to persist? % % QUERY: what value does \cmd\AU@opr\ have at this point? % ANSWER: the \cmd\@affilID@count\ and \cmd\@affilID@match\ procedures % assign meanings to \cmd\AU@opr\ and \cmd\CO@opr\ dynamically. % We initialize the two operators to \cmd\undefined\ so as to catch the % pathological cases. % \begin{macrocode} \begingroup \def\AF@temp{#1}% % 0B13 \@tempcnta\z@ \let\AU@opr \undefined % 0B13 \let\CO@opr \undefined % 0B13 \def\AF@opr{\@affilID@count\AF@temp\@tempcnta}% 0B13 \@AAC@list % \end{macrocode} % % If no authors using this affiliation group, skip it. % \begin{macrocode} \@ifnum{\@tempcnta=\z@}{}{% % \end{macrocode} % % DPC: If we have a list of length two, need to locally zap a comma. % \begin{macrocode} \begingroup \frontmatter@above@affilgroup \set@listcomma@count\@tempcnta % \end{macrocode} % Run through the author list, presenting (with \cmd\@author@present) % those authors whose affiliation matched the given one. % \begin{macrocode} \let\AU@opr \undefined % 0B13 \let\CO@opr \undefined % 0B13 \def\AF@opr{\@affilID@match\AF@temp}% \@AAC@list \endgroup % \end{macrocode} % Now that the authors have all been presented, present the affiliations, grouped. % % Note: \cmd\@tempcnta\ is used to count the number of affiliations for this set of authors. % \begin{macrocode} \begingroup \par \frontmatter@above@affiliation \frontmatter@affiliationfont \let\\\frontmatter@addressnewline \@tempcnta\z@ \@tfor\AF@temp:=#1\do{% \expandafter\@ifx\expandafter{\z@\AF@temp}{}{% \advance\@tempcnta\@ne }% }% \@ifnum{\@tempcnta=\tw@}{% \let\@listcomma\relax }{}% \def\after@address{\@listcomma\ \@listand}% \runinaddress@sw{% }{% \tightenlines@sw{% }{% \parskip\z@ %space between affilations in grouped mode }% \appdef\after@address\par }% \let\AFF@opr \@affil@group \do@affil@fromgroup\@AFF@list#1\relax \endgroup % \end{macrocode} % End of branch handling authors. % \begin{macrocode} }% % \end{macrocode} % % \begin{macrocode} \par \endgroup %\smallskip }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@affilID@count} % \begin{macro}{\@affilID@match} % % The control sequence name \cmd\AF@opr\ is placed in the % author/affiliation list (\cmd\@AAC@list) for each (new) affiliation, with that affiliation as its argument. % % The control sequence name \cmd\AF@opr\ is an alias of a procedure % to count the number of authors at a given affiliation (\cmd\@affilID@count) % or to present the given authors (\cmd\@affilID@match). % These two procedures are executed when formatting under the \classoption{groupedaddress} class option. % \begin{macrocode} \def\@affilID@count#1#2#3{% \def\@tempifx{#3}% \@ifx{\@tempifx#1}{% \def\AU@opr{\@author@count#2}% }{% \let\AU@opr \@author@gobble }% \let\CO@opr \@collaboration@err }% \def\@affilID@match#1#2{% \def\@tempifx{#2}% \@ifx{\@tempifx#1}{% \let\AU@opr \@author@present }{% \let\AU@opr \@author@gobble }% \let\CO@opr \@collaboration@err }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\do@affil@fromgroup} % Executes iteratively: % selects the next address ID to print, % and then re-execute the list of addresses to print the text of that address. % % Note: an argument of \cmd\relax\ breaks out of this iteration, % while an argument of \cmd\z@\ (\cmd\noaffiliation) is a no-op. % % Note: we have createed an $N^{2}$ computing process. % FIXME: can use hashing instead, you know. % \begin{macrocode} \def\do@affil@fromgroup#1#2{% \@ifx{\relax#2}{}{% \count@#2\relax \@ifnum{\count@=\z@}{}{#1}% \do@affil@fromgroup#1% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@affil@group} % The alias of \cmd\AFF@opr\ when the list \cmd\@AFF@list\ % is executed by \cmd\do@affil@fromgroup (\classoption{groupedaddress}): % Print the address if its number matches \cmd\count@\ (value set by \cmd\do@affil@fromgroup). % % Note that we detect a \cmd\noaffiliation\ here by the second parameter's being the token \cmd\blankaffiliation. % \begin{macrocode} \def\@affil@group#1#2#3{% \@ifnum{\count@=#1\relax}{% \@ifx{#2\blankaffiliation}{}{% #2% \@if@empty{#3}{}{% \frontmatter@footnote{#3}% }% \after@address }% \advance\@tempcnta\m@ne }{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@author@present@group} % \changes{v4.d}{1998/01/31} % {\cs{comma@space}} % This version of \cmd\AU@opr\ applies to the \classoption{groupedaddress} class option. % Traverse the list calling the \cmd\doauthor\ hook on each author. % \begin{macrocode} \def\@author@present@group#1#2{% \gdef\comma@space{\gdef\comma@space{\textsuperscript{,\,}}}% \doauthor{#1}{#2}{}% \advance\@tempcnta\m@ne }% % \end{macrocode} % \end{macro} % % % \begin{macro}{\@pacs@produce} % PACS, keywords and dates. % \changes{v4.d}{1998/01/31} % {PACS boxed to width of abstract} % \changes{v4.0beta 2}{1999/06/20} % {Separate option now controls production} % \changes{v4.0beta 5}{2000/09/20} % {Warn if no production} % \begin{macrocode} \def\@pacs@produce#1{% \showPACS@sw{% \begingroup \frontmatter@PACS@format \@pacs@name#1\par \endgroup }{% \@if@empty{#1}{}{% \class@warn{\PACS@warn}% }% }% }% \def\PACS@warn{If you want your PACS to appear in your output, use document class option showpacs}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@keywords@produce} % \changes{v4.0beta 5}{2000/09/20} % {Keywords on same footing as PACS} % \begin{macrocode} \def\@keywords@produce#1{% \showKEYS@sw{% \begingroup \frontmatter@keys@format \@keys@name#1\par \endgroup }{% \@if@empty{#1}{}{% \class@warn{If you want your keywords to appear in your output, use document class option showkeys}% }% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@footnote@produce@footnote} % \begin{macro}{\frontmatter@footnote@produce@endnote} % Produce any footnotes to appear at the bottom of the title page. % % If frontmatter footnotes have been redirected to the bibliography, this will be a no-op. % ref.: \cmd\present@bibnote. % \begin{macrocode} \def\frontmatter@footnote@produce@footnote{% \let\@TBN@opr\present@FM@footnote \@FMN@list \global\let\@FMN@list\@empty }% \def\present@FM@footnote#1#2{% \begingroup \csname c@\@mpfn\endcsname#1\relax \def\@thefnmark{\thempfn}% \frontmatter@footnotetext{#2}% \endgroup }% \def\frontmatter@footnote@produce@endnote{% }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\frontmatter@thefootnote} % The in the title block, the footnote symbol (used for alternate affiliation and sundry) % is a \cmd\@fnsymbol\ or a lowercase letter, as selected by a boolean. % \begin{macrocode} \def\frontmatter@thefootnote{% \altaffilletter@sw{\@alph}{\@fnsymbol}\c@footnote }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@makefnmark} % The default procedure for setting the footnote mark within the frontmatter. % Journals will override this procedure. % \begin{macrocode} \def\frontmatter@makefnmark{% \@textsuperscript{% \normalfont\@thefnmark }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@makefntext} % This procedure is used when setting footnotes within the title block. % \begin{macrocode} \long\def\frontmatter@makefntext#1{% \parindent 1em \noindent \Hy@raisedlink{\hyper@anchorstart{frontmatter@\the\c@footnote}\hyper@anchorend}% \@makefnmark #1% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@setup} % The default type specification for the title page. % Journals will override this definition. % \begin{macrocode} \def\frontmatter@setup{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@RRAPformat} % \begin{macro}{\punct@RRAP} % \begin{macro}{\produce@RRAP} % The procedure \cmd\frontmatter@RRAPformat\ is the formatting procedure % for the ``Received, Revised, etc.'' block on the title page. % The macro \cmd\punct@RRAP\ produces the punctuation between the entries. % Journals will override these two definitions. % % The procedure \cmd\produce@RRAP\ is fairly general, and should be used by most % journal substyles. % % The procedure \cmd\frontmatter@RRAP@format\ will be overridden by the journal. % \begin{macrocode} \def\frontmatter@RRAPformat#1{% \removelastskip \begingroup \frontmatter@RRAP@format #1\par \endgroup }% \def\punct@RRAP{; }% \def\produce@RRAP#1{% \@if@empty{#1}{}{% \@ifvmode{\leavevmode}{\unskip\punct@RRAP\ignorespaces}% #1% }% }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\frontmatter@authorformat} % The default type specification for the author list. % Journals will override this definition. % \begin{macrocode} \def\frontmatter@authorformat{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@above@affilgroup} % The default amount of space above an affiliation group % (in a \cmd\affils@present@group\ production). % Journals will override this definition. % \begin{macrocode} \def\frontmatter@above@affilgroup{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@above@affiliation} % \begin{macro}{\frontmatter@above@affiliation@script} % The \cmd\frontmatter@above@affiliation\ is the amount of space above affiliations in the \classoption{groupedaddress} % style, and \cmd\frontmatter@above@affiliation@script\ is that for \classoption{superscriptaddress}. % Journals will override this definition. % \begin{macrocode} \def\frontmatter@above@affiliation{}% \def\frontmatter@above@affiliation@script{}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\frontmatter@affiliationfont} % The default type specification for the affiliation. % Journals will override this definition. % \begin{macrocode} \def\frontmatter@affiliationfont{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@RRAP@format} % The default type specification for the dates. % Journals will override this definition. % \begin{macrocode} \def\frontmatter@RRAP@format{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@PACS@format} % Specify the formatting of the title page PACS statement. % % Journals will override. % \begin{macrocode} \def\frontmatter@PACS@format{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@keys@format} % Specify the formatting of the title page keywords statement. % % Journals will override. % \begin{macrocode} \def\frontmatter@keys@format{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@finalspace} % % \begin{macrocode} \def\frontmatter@finalspace{\addvspace{18\p@}} % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@addressnewline} % \changes{v4.h}{1998/06/25} % {new hook} % The definition of \cmd\\\ for address handling. Default puts all the `lines' % on a run-in line, separated by comma and space. % DPC: was \newline space between lines of addresss. % \begin{macrocode} \def\frontmatter@addressnewline{% \@ifhmode{\skip@\lastskip\unskip\unpenalty\break\hskip\skip@}{}% % was: \vskip-.5ex }% % \end{macrocode} % \end{macro} % % % \begin{macro}{\frontmatter@preabstractspace} % \begin{macro}{\frontmatter@postabstractspace} % Space above and space below abstract in title block % \begin{macrocode} \def\frontmatter@preabstractspace{5.5\p@} \def\frontmatter@postabstractspace{6.5\p@} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\aftermaketitle@chk} % Error-checking code. % \begin{macrocode} \def\aftermaketitle@chk#1{% \@ifx{\maketitle\relax}{% \class@err{\protect#1 must be used before \protect\maketitle}% }{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\ps@titlepage} % Default page style for title page. % Journals will override this procedure. % \begin{macrocode} \def\ps@titlepage{\ps@empty}% % \end{macrocode} % \end{macro} % %FIXME: there is a limitation to the default meaning of % \cmd\@startpage, the label ``FirstPage'' is only % defined if the document has a \cmd\maketitle\ command. % % \begin{macrocode} \def\volumeyear#1{\gdef\@volumeyear{#1}}% \def\@volumeyear{}% \def\volumenumber#1{\gdef\@volumenumber{#1}}% \def\@volumenumber{}% \def\issuenumber#1{\gdef\@issuenumber{#1}}% \def\@issuenumber{}% \def\eid#1{\gdef\@eid{#1}}% \def\@eid{}% % \def\startpage#1{\gdef\@startpage{#1}\c@page#1\relax}% \def\@startpage{\pageref{FirstPage}}% \def\endpage#1{\gdef\@endpage{#1}}% \def\@endpage{\pageref{LastPage}}% % \end{macrocode} % % % \subsection{Printing out the ``list-of'' elements}% % % FIXME: The \cmd\appendix@toc\ procedure should change the meaning % of \cmd\l@section\ so that the \cmd\section s can be appropriately formatted, % reflecting their status as appendices. % % \begin{macrocode} \def\print@toc#1{% \begingroup % \c@secnumdepth-\maxdimen \expandafter\section \expandafter*% \expandafter{% \csname#1name\endcsname }% \let\appendix\appendix@toc \@starttoc{#1}% \endgroup }% \def\appendix@toc{}% % \end{macrocode} % % % \section{Body} % % \subsection{counters} % The following definitions are probably identical to those in % \file{classes.dtx}% % \begin{macrocode} \def\labelenumi{\theenumi.} \def\theenumi{\arabic{enumi}} % \end{macrocode} % % \begin{macrocode} \def\labelenumii{(\theenumii)} \def\theenumii{\alph{enumii}} \def\p@enumii{\theenumi} % \end{macrocode} % % \begin{macrocode} \def\labelenumiii{\theenumiii.} \def\theenumiii{\roman{enumiii}} \def\p@enumiii{\theenumi(\theenumii)} % \end{macrocode} % % \begin{macrocode} \def\labelenumiv{\theenumiv.} \def\theenumiv{\Alph{enumiv}} \def\p@enumiv{\p@enumiii\theenumiii} % \end{macrocode} % % \begin{macrocode} \def\labelitemi{\textbullet} \def\labelitemii{\normalfont\bfseries\textendash} \def\labelitemiii{\textasteriskcentered} \def\labelitemiv{\textperiodcentered} % \end{macrocode} % % \begin{macrocode} \pagenumbering{arabic} % \end{macrocode} % % \subsection{float parameters} % % from the old aps.sty. (DPC: same as article I think) % AO: here, \LaTeX's standard classes fail very poorly % (the price of backward compatability): the values for % \cmd\floatpagefraction\ and \cmd\dblfloatpagefraction\ % need to be raised to avoid creating extremely short % float pages. % \begin{macrocode} \setcounter{topnumber}{2} \def\topfraction{.9} \setcounter{bottomnumber}{1} \def\bottomfraction{.9} \setcounter{totalnumber}{3} \def\textfraction{.1} \def\floatpagefraction{.9} \setcounter{dbltopnumber}{2} \def\dbltopfraction{.9} \def\dblfloatpagefraction{.9} % \end{macrocode} % % \subsection{List Environments} % % \begin{macrocode} \newenvironment{verse}{% \let\\=\@centercr \list{}{% \itemsep\z@ \itemindent -1.5em\listparindent \itemindent \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]% }{% \endlist }% % \end{macrocode} % % \begin{macrocode} \newenvironment{quotation}{% \list{}{% \listparindent 1.5em \itemindent\listparindent \rightmargin\leftmargin \parsep \z@ \@plus\p@}\item[]% }{% \endlist }% % \end{macrocode} % % \begin{macrocode} \newenvironment{quote}{% \list{}{% \rightmargin\leftmargin}\item[]% }{% \endlist }% % \end{macrocode} % % \begin{macrocode} \def\descriptionlabel#1{% \hspace\labelsep \normalfont\bfseries #1% }% % \end{macrocode} % % \begin{macrocode} \newenvironment{description}{% \list{}{% \labelwidth\z@ \itemindent-\leftmargin \let\makelabel\descriptionlabel }% }{% \endlist }% % \end{macrocode} % % \subsection{Sectioning Commands} % % \subsubsection{Counters and Their Productions}% % \begin{macrocode} \newcounter{part} \newcounter{section} \newcounter{subsection}[section] \newcounter{subsubsection}[subsection] \newcounter{paragraph}[subsubsection] \newcounter{subparagraph}[paragraph] % \end{macrocode} % % \begin{macrocode} \def\thepart {\Roman{part}} % \def\thesection {\Roman{section}} \def\p@section {} \def\thesubsection {\Alph{subsection}} \def\p@subsection {\thesection\,} \def\thesubsubsection {\arabic{subsubsection}} \def\p@subsubsection {\thesection\,\thesubsection\,} \def\theparagraph {\alph{paragraph}} \def\p@paragraph {\thesection\,\thesubsection\,\thesubsubsection\,} \def\thesubparagraph {\arabic{subparagraph}} \def\p@subparagraph {\thesection\,\thesubsection\,\thesubsubsection\,\theparagraph\,} % \end{macrocode} % % \subsubsection{The Acknowledgments Environment}% % This user-level markup produces a head introducing % the acknowledgments, and acts as a wrapper for the text. % In this implementation, it is an unnumbered section, % but appears within the toc. % % For compatiability's sake, we implement it under the alternative % spelling \env{acknowledgements}. % \changes{v4.0beta 3}{1999/11/13} % {also spelled ``acknowledgements''.} % \changes{v4.0beta 4}{2000/05/18} % {But alternative spelling is deprecated.} % \begin{macrocode} \newenvironment{acknowledgments}{% \acknowledgments@sw{% \section*{\acknowledgmentsname}% }{% \par \phantomsection \addcontentsline{toc}{section}{\protect\numberline{}\acknowledgmentsname}% }% }{% \par }% \@booleantrue\acknowledgments@sw \newenvironment{acknowledgements}{% \replace@environment{acknowledgements}{acknowledgments}% }{% \endacknowledgments }% % \end{macrocode} % % \subsubsection{Part Opener}% % section setup copied verbatim from revtex3 aps/osa. % Does not explicitly depend on pointsize options. % \begin{macrocode} \def\part{\par \addvspace{4ex}% \@afterindentfalse \secdef\@part\@spart}% % \end{macrocode} % % \begin{macrocode} \def\@part[#1]#2{% \@ifnum{\c@secnumdepth >\m@ne}{% \refstepcounter{part}% \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% }{% \addcontentsline{toc}{part}{#1}% }% \begingroup \parindent \z@ \raggedright \interlinepenalty\@M \@ifnum{\c@secnumdepth >\m@ne}{% \Large \bf \partname~\thepart% \par\nobreak }{}% \huge \bf #2% \markboth{}{}\par \endgroup \nobreak \vskip 3ex \@afterheading }% % \end{macrocode} % % \begin{macrocode} \def\@spart#1{{\parindent \z@ \raggedright \interlinepenalty\@M \huge \bf #1\par} \nobreak \vskip 3ex \@afterheading} % \end{macrocode} % % \subsubsection{Stacked Heads}% % Here are the class default definitions for sectioning commands. % A society or a journal substyle will likely override these definitions. % % In doing so, you can customize the formatting for a particular level by defining, % e.g., \cmd\@hangfrom@section\ or \cmd\@subsectioncntformat. % \begin{macrocode} \def\section{% \@startsection {section}% {1}% {\z@}% {0.8cm \@plus1ex \@minus .2ex}% {0.5cm}% {\normalfont\small\bfseries}% }% % \end{macrocode} % % \begin{macrocode} \def\subsection{% \@startsection {subsection}% {2}% {\z@}% {.8cm \@plus1ex \@minus .2ex}% {.5cm}% {\normalfont\small\bfseries}% }% % \end{macrocode} % % \begin{macrocode} \def\subsubsection{% \@startsection {subsubsection}% {3}% {\z@}% {.8cm \@plus1ex \@minus .2ex}% {.5cm}% {\normalfont\small\itshape}% }% % \end{macrocode} % % \subsubsection{Runin Heads}% % \begin{macrocode} \def\paragraph{% \@startsection {paragraph}% {4}% {\parindent}% {\z@}% {-1em}% {\normalfont\normalsize\itshape}% }% % \end{macrocode} % % \begin{macrocode} \def\subparagraph{% \@startsection {subparagraph}% {5}% {\parindent}% {3.25ex \@plus1ex \@minus .2ex}% {-1em}% {\normalfont\normalsize\bfseries}% }% % \end{macrocode} % % % \subsection{Math} % % \begin{macro}{\theequation} % We change the production of the equation counter so that % we can accomodate the \classoption{eqsecnum} option. % \begin{macrocode} \def\theequation{% \theequation@prefix\arabic{equation}% }% \def\theequation@prefix{}% % \end{macrocode} % \end{macro} % % % \subsection{Type Size-Dependent Settings} % % Note that many parameters, as well as the meaning of % \cmd\normalsize, are deferred until % \cmd\AtEndOfClass\ time. % Therefore, code elsewhere in this class \emph{should not} % assume these things' values have been set! % \begin{macrocode} \AtEndOfClass{% \expandafter\input\expandafter{\@pointsize pt\substyle@ext}% }% % \end{macrocode} % % % \subsection{All Point Sizes} % \begin{macrocode} \setcounter{secnumdepth}{4} % \end{macrocode} % % \begin{macrocode} \lineskip 1pt \normallineskip 1pt \def\baselinestretch{1}% % \end{macrocode} % % \begin{macrocode} \@lowpenalty 51 \@medpenalty 151 \@highpenalty 301 % \end{macrocode} % % \begin{macrocode} \@beginparpenalty -\@lowpenalty \@endparpenalty -\@lowpenalty \@itempenalty -\@lowpenalty % \end{macrocode} % % \begin{macrocode} \arraycolsep 3pt \tabcolsep 2pt \arrayrulewidth .4pt \doublerulesep 2pt % \end{macrocode} % % \begin{macrocode} \skip\@mpfootins = 0pt % \end{macrocode} % % \begin{macrocode} \fboxsep = 3.0pt \fboxrule = 0.4pt % \end{macrocode} % % \subsection{Figures} % \changes{v4.0beta 2}{1999/06/20} % {Processing delayed to \cs{AtBeginDocument} time} % % \begin{environment}{figure} % We define the \env{figure} environment. % Later, we will horse around with its meaning % in order to accomodate \cmd\floats@sw. % \begin{macrocode} \newenvironment{figure} {\@float{figure}} {\end@float} \newenvironment{figure*} {\@dblfloat{figure}} {\end@dblfloat} % \end{macrocode} % \end{environment} % % \begin{macro}{\@makecaption} % If caption is one line long, to be centered; if lines turn, then set justified. % \begin{macrocode} \newlength\abovecaptionskip \newlength\belowcaptionskip \setlength\abovecaptionskip{10\p@} \setlength\belowcaptionskip{2\p@} % \end{macrocode} % % \changes{v4.0beta 2}{1999/06/20} % {One-line caption sets flush left.} % \changes{v4.0beta 3}{1999/11/13} % {Prevent an inner footnote from performing twice} % \begin{macrocode} \long\def\@makecaption#1#2{% \par % \nobreak \vskip\abovecaptionskip \begingroup \small\rmfamily \sbox\@tempboxa{% \let\\\heading@cr #1: #2% }% \@ifdim{\wd\@tempboxa >\hsize}{% \begingroup \samepage \flushing \let\footnote\@footnotemark@gobble #1: #2\par \endgroup }{% \global \@minipagefalse \hb@xt@\hsize{\hfil\unhbox\@tempboxa\hfil}% }% \endgroup \vskip\belowcaptionskip }% \def\@footnotemark@gobble{% \@footnotemark \@ifnextchar[{\@gobble@opt@i}{\@gobble}% }% \def\@gobble@opt@i[#1]#2{}% \def\@mpmakefntext#1{% \flushing \parindent=1em \noindent \hb@xt@1em{\hss\@makefnmark}% #1% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\thefigure} % The figure counter and float placement defaults. % \begin{macrocode} \newcounter{figure} \renewcommand \thefigure {\@arabic\c@figure} % \end{macrocode} % Note that we give the `!' modifier by default. % This is an effort to avoid the syndrome wherein % a deferred float finds itself unqualified for % placement, thereby getting carried until \cmd\clearpage. % \begin{macrocode} \def\fps@figure{tbp} \def\ftype@figure{1} \def\ext@figure{lof} \def\fnum@figure{\figurename~\thefigure} % \end{macrocode} % \end{macro} % % \subsubsection{Deferring \env{figure} Floats}% % % We install a hook at \cmd\AtBeginDocument\ time which determines if % figures will float or will be deferred until % \cmd\printfigures\ time. % \begin{macrocode} \appdef\class@documenthook{% \do@if@floats{figure}{.fgx}% }% \appdef\class@enddocumenthook{% \printfigures\relax }% % \end{macrocode} % % \begin{macro}{\printfigures} % The user-level command \cmd\printfigures\ determines % where the figures are to appear in a document in which % \cmd\floats@sw\ is false. % If the user invokes the \classoption{endfloats} class option and fails to % insert a \cmd\printfigures\ command, % the figures will be printed at the end of the document. % If the command is given, but floats are not being deferred, % it amounts to a no-op. % \changes{v4.0beta 2}{1999/06/20} % {call \cs{print@floats}} % \changes{v4.0beta 3}{1999/11/13} % {*-form mandates pagebreak} % \begin{macrocode} \newcommand\printfigures{% \@ifstar{\true@sw}{\floatp@sw{\true@sw}{\false@sw}}% {% \print@float{figure}{\oneapage}% }{% \print@float{figure}{}% }% }% % \end{macrocode} % \end{macro} % % % \begin{macro}{\@xfloat@prep} % We patch into the procedure \cmd\@xfloat@prep. % This patch applies to all floats (not \env{figure} alone) % and makes the type center. % \begin{macrocode} \appdef\@xfloat@prep{% \appdef\@parboxrestore{\centering}% \let\@makefnmark\@makefnmark@latex \let\@footnotemark\@footnotemark@latex }% % \end{macrocode} % \end{macro} % % % \subsection{Tables} % \changes{v4.0beta 2}{1999/06/20} % {Processing delayed to \cs{AtBeginDocument} time} % % DPC: More or less taken from \file{revtex2} \file{aps.sty}, % but using dcolumn for decimal alignment. % \begin{environment}{table} % We define the \env{table} environment. % Later, we will horse around with its meaning % in order to accomodate \cmd\floats@sw. % \begin{macrocode} \newenvironment{table} {\@float{table}} {\end@float} \newenvironment{table*} {\@dblfloat{table}} {\end@dblfloat} % \end{macrocode} % \end{environment} % % \begin{macro}{\thetable} % Table counter and default float placement declarations. % \begin{macrocode} \newcounter{table} \renewcommand\thetable{\@Roman\c@table} % \end{macrocode} % Note that we give the `!' modifier by default. % This is an effort to avoid the syndrome wherein % a deferred float finds itself unqualified for % placement, thereby getting carried until \cmd\clearpage. % \begin{macrocode} \def\fps@table{tbp} \def\ftype@table{2} \def\ext@table{lot} \def\fnum@table{\tablename~\thetable} % \end{macrocode} % \end{macro} % % \begin{macro}{\table@hook} % \begin{macro}{\squeezetable} % Assign a meaning to the hook installed into float processing. % % By default floats are \cmd\small. The \cmd\squeezetable\ declaration % makes them smaller (\cmd\scriptsize). In general you can locally % redefine \cmd\table@hook\ to be whatever you like. % (DPC: |\Huge\color{magenta}|\ldots?) % \begin{macrocode} \def\table@hook{\small}% \def\squeezetable{\def\table@hook{\scriptsize}}% \appdef\@floatboxreset{\table@hook}% % \end{macrocode} % \end{macro} % \end{macro} % % \subsubsection{Deferring \env{table} Floats}% % % We install a hook at % \cmd\AtBeginDocument\ time which determines if % tables will float or will be deferred until % \cmd\printtables\ time. % % We also deal with the possibility of \env{longtable} environments. % % \begin{macrocode} \appdef\class@documenthook{% \floats@sw{}{% \let@environment{longtable@float}{longtable}% \let@environment{longtable}{longtable@write}% \let@environment{longtable*@float}{longtable*}% \let@environment{longtable*}{longtable*@write}% \let@environment{turnpage@float}{turnpage}% \let@environment{turnpage}{turnpage@write}% }% \do@if@floats{table}{.tbx}% }% \appdef\class@enddocumenthook{% \printtables\relax }% \newenvironment{longtable@write}{% \write@@float{longtable}{table}% }{% \endwrite@float }% \newenvironment{longtable*@write}{% \write@@float{longtable*}{table}% }{% \endwrite@float }% \newenvironment{turnpage@write}{% \immediate\write\tablewrite{\string\begin{turnpage}}% }{% \immediate\write\tablewrite{\string\end{turnpage}}% }% % \end{macrocode} % % \begin{macro}{\printtables} % The user-level command \cmd\printtables\ determines % where the tables are to appear in a document in which % \cmd\floats@sw\ is false. % If the user invokes the \classoption{nofloats} and fails to % insert a \cmd\printtables\ command, % the tables will be printed at the end of the document. % If the command is given, but floats are not being deferred, % it amounts to a no-op. % \changes{v4.0beta 2}{1999/06/20} % {only execute if appropriate} % \changes{v4.0beta 3}{1999/11/13} % {*-form mandates pagebreak} % \changes{v4.0beta 4}{2000/05/17} % {make longtable trigger the head, too} % \begin{macrocode} \newcommand\printtables{% \begingroup \let@environment{longtable}{longtable@float}% \let@environment{longtable*}{longtable*@float}% \let@environment{turnpage}{turnpage@anchored}% \prepdef\longtable{\trigger@float@par}% \expandafter\prepdef\csname longtable*\endcsname{\trigger@float@par}% \expandafter\prepdef\csname table@floats\endcsname{% \onecolumngrid@push }% \expandafter\appdef\csname endtable@floats\endcsname{% \onecolumngrid@pop }% \@ifstar{\true@sw}{\floatp@sw{\true@sw}{\false@sw}}% {% \print@float{table}{\oneapage}% }{% \print@float{table}{}% }% \endgroup }% \newenvironment{turnpage@anchored}{% \onecolumngrid@push \setbox\z@\vbox to\textwidth\bgroup \columnwidth\textheight }{% \vfil \egroup \rotatebox{90}{\box\z@}% \onecolumngrid@pop }% % \end{macrocode} % \end{macro} % % % % \section{Tabular} % Every tabular has a double (Scotch) rule above and below. % The column specifier ``d'' is implemented using the \classname{dcolumn} % package, if available. % FIXME: always load dcolumn! % \begin{macro}{\tabular@hook} % \begin{macro}{\endtabular@hook} % \begin{environment}{ruledtabular} % \begin{macrocode} \def\endtabular@hook{}% %\RequirePackage{dcolumn}% \appdef\class@documenthook{% \@ifpackageloaded{dcolumn}{% \newcolumntype{d}{D{.}{.}{-1}}% }{}% }% \def\toprule{\hline\hline}% \def\colrule{\hline}% \def\botrule{\hline\hline}% \newenvironment{ruledtabular}{% \def\array@default{v}% \appdef\tabular@hook{\def\@halignto{to\hsize}}% \let\tableft@skip@default\tableft@skip \let\tableft@skip\tableft@skip@float \let\tabmid@skip@default\tabmid@skip \let\tabmid@skip\tabmid@skip@float \let\tabright@skip@default\tabright@skip \let\tabright@skip\tabright@skip@float \let\array@row@pre@default\array@row@pre \let\array@row@pre\array@row@pre@float \let\array@row@pst@default\array@row@pst \let\array@row@pst\array@row@pst@float \appdef\array@row@rst{% \let\array@row@pre\array@row@pre@default \let\array@row@pst\array@row@pst@default \let\tableft@skip\tableft@skip@default \let\tabmid@skip\tabmid@skip@default \let\tabright@skip\tabright@skip@default \appdef\tabular@hook{\let\@halignto\@empty}% }% }{% }% % \end{macrocode} % \end{environment} % \end{macro} % \end{macro} % % \section{Footnote Text} % % \changes{v4.g}{1998/06/10} % {single space footnotes} % \changes{v4.0beta 2}{1999/06/20} % {% % Frank Mittelbach, has stated in \protect\classname{multicol}: % ``The kernel command \cs{@footnotetext} should not be modified.'' % Thus, I have removed David Carlisle's redefinition of that command. % Note, however, that later versions of \protect\classname{multicol} do not require % this workaround. Belt and suspenders. % }% % % \begin{macro}{\@makefntext} % \begin{macrocode} \def\@makefntext#1{% \def\baselinestretch{1}% \reset@font\footnotesize \parindent 1em% \noindent \hb@xt@1.8em{% \Hy@raisedlink{\hyper@anchorstart{footnote@\the\c@footnote}\hyper@anchorend}% \hss\@makefnmark }% #1\par }% % \end{macrocode} % \end{macro} % % % \subsection{Citations, Bibliography, Endnotes} % % \subsubsection{Bibliography} % % Load Patrick Daly's \classname{natbib} package, % \url{ftp://ctan.tug.org/macros/latex/contrib/supported/natbib} % % Note that \classname{natbib} assumes that it loads % over a document class, such as the \classname{article} class, % that has already defined \env{thebibliography} and \cmd\@listi. % % Note also that \classname{natbib} also installs a command % \cmd\NAT@set@cites\ into \cmd\AtBeginDocument\ which presumes % that the proper \cmd\bibpunct\ command has been issued. % % We have a problem with \classname{natbib} in that it does not % accomodate late binding of its package options. This means % that those options must be known at the time the package % loads. Therefore, we select \classoption{sort\&compress} % now, and thereby foreclose on alternative uses of \classname{natbib}. % % Certain societies may prefer an alternative; they are out of luck. % If you find yourself in this position, please let the author % of \classname{natbib} know that his package should be modified to % accomodate late binding of package options. % % To remedy the situation, note that the macro \cmd\NAT@sort\ controls % whether citations are left alone (\cmd\NAT@sort=0), sorted (\cmd\NAT@sort=1), or sorted and compressed (\cmd\NAT@sort=2). % Since we give \classname{natbib} the \classoption{sort\&compress} option, % if you prefer \classoption{sort}, you need only define \cmd\NAT@sort\ to be 1. % However, if you prefer the effect of having neither \classoption{sort} nor \classoption{sort\&compress}, % you must define \cmd\NAT@sort\ to be 0 and you must also define % \cmd\NAT@sort@cites: %\begin{verbatim} %\renewcommand\NAT@sort@cites[1]{\edef\NAT@cite@list{#1}}% %\end{verbatim} % % For other \classname{natbib} customizations, you may proceed as if you were going to use % the \file{natbib.cfg} file: anything that you can modify by this means is fair game. % Once \revtex\ is finished loading, you can assert any definitions for \classname{natbib} that you wish. % % \begin{macrocode} \newenvironment{thebibliography}{}{}% \let\@listi\@empty \RequirePackage[sort&compress]{natbib}[1999/05/28 7.0]% \let\NAT@thebibliography\thebibliography \let\NAT@endthebibliography\endthebibliography \let\bibliographystyle@latex\bibliographystyle % \end{macrocode} % % \begin{macro}{\NAT@citesuper} % We redefine \classname{natbib}'s procedure \cmd\NAT@citesuper, % which is executed when setting a superscript citation. % The \cmd\hspace\ is removed: in any case, it % should really be \cmd\hspace*, to prevent an unwanted pagebreak. % \begin{macrocode} \renewcommand\NAT@citesuper[3]{% \ifNAT@swa \leavevmode \unskip % \hspace{1\p@}% \textsuperscript{#1}% \if*#3*\else\ (#3)\fi \else #1% \fi \endgroup }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@makefnmark@cite} % We define a procedure that will set a footnote mark the same way that % a citation is set. If footnotes are put in the bibliography with % \cmd\footinbib@sw, then the corresponding mark should look the same % as the result of a \cmd\cite. This is how we do it. % \begin{macrocode} \def\@makefnmark@cite{\begingroup\NAT@swatrue\@cite{{\@thefnmark}}{}{}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bibliographystyle} % We arrange for the selection of bibliography style % to occur either due to the document's explicit % \cmd\bibliographystyle\ statement or % via the journal substyle. % % Note that \revtex\ is now incompatible with % any package that patches \cmd\bibliographystyle, % except for those (like \classname{natbib}) that load before here. % \begin{macrocode} \let\bibliographystyle@latex\bibliographystyle \def\bibliographystyle{\def\@bibstyle}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bibsection} % \begin{macro}{\NAT@bibsetnum} % \begin{macro}{\NAT@bibsetup} % \begin{macro}{\bibpreamble} % \begin{macro}{\newblock} % \begin{macro}{\bibnumfmt} % We define the sectioning command to use when starting the bibliography % and gently coax \classname{natbib} into using % the formatting procedures that \emph{we} want it to use. % % This way of setting up \env{thebibliography} % automatically sets the label width based on % the largest number used within the bibliography. % This scheme will not work properly using the % author/year style of bib entry, though. % % We define \cmd\bibnumfmt\ to be \cmd\place@bibnumber, which is a macro % managed by \revtex. If the document defines \cmd\bibnumfmt, then that % definition will be used instead, which is what the \classname{natbib} % package gives as its programming interface. % % And if the substyle does not give a meaning to \cmd\place@bibnumber, % we give it that of the original \cmd\bibnumfmt. % \begin{macrocode} \def\bibsection{% \@ifx@empty\refname{% \par }{% \let\@hangfroms@section\@hang@froms \section*{\refname}% \@nobreaktrue }% }% \let\NATx@bibsetnum\NAT@bibsetnum \def\NAT@bibsetnum#1{% \setlength{\topsep}{\z@}% \NATx@bibsetnum{\ref{LastBibItem}}% }% \let\NATx@bibsetup\NAT@bibsetup \def\NAT@bibsetup{% \setlength{\labelwidth}{\z@}% \setlength{\labelsep}{\z@}% \setlength{\itemindent}{\z@}% \setlength{\listparindent}{\z@}% \setlength{\topsep}{\z@}% \setlength{\parsep}{\z@}% \NATx@bibsetup }% \let\bibpreamble\@empty \def\newblock{\ }% \let\NATx@bibnumfmt\bibnumfmt \def\bibnumfmt{\place@bibnumber}% \AtEndOfClass{% \appdef\class@documenthook{% \@ifxundefined\place@bibnumber{% \let\place@bibnumber\NATx@bibnumfmt }{}% }% }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\NAT@onlinecite} % We anticipate using numerical citations. % If superscript citations are used, we nonetheless need a way to % use numerical citations as required by the author. % These should be accessible via the \cmd\citet\ command. % % Therefore we remember how to do a numerical citation % even when the superscript citation has been selected. % % Can you say ``inelegant hack''? I knew you could! % \begin{macrocode} \let\NAT@citeyear\citeyear \def\NAT@onlinecite#1{% \begingroup \let\@cite\NAT@citenum \let\NAT@mbox\mbox \let\citeyear\NAT@citeyear \def\NAT@space{ }% \cite{#1}% \endgroup }% % \end{macrocode} % \end{macro} % % \begin{macro}{+} % \begin{macro}{\textcite} % We extend \classname{natbib}'s syntax with two commands to set a citation % on the baseline (as opposed to superscripted) and as text (rather than parenthetical), respectively. % A journal substyle that makes citations be superscripted or parenthetical as the case may be, should ensure % that the author has continued access to these two styles. % % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\@onlinecite{\def\@onlinecite{\citealp}}{}% \@ifxundefined\@textcite{\def\@textcite{\citet}}{}% }% \DeclareRobustCommand\onlinecite{\@onlinecite}% \DeclareRobustCommand\textcite{\@textcite}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{environment}{thebibliography}% % \begin{macro}{\present@bibnote}% % We put a tail patch into \cmd\thebibliogrphy\ and % a headpatch into \cmd\endthebibliography. % % We also apply a fix to the \cmd\list\ procedure % so that, at least within the bibliography, % items are not formatted via \cmd\parshape, % which caused problems during column balancing. % (Other list-like environments may also require fixing, % but we will save that for another day.) % % Here we provide a default treatment for frontmatter notes % deferred to the bibliography; a journal substyle % might want to override the definition of \cmd\present@bibnote. % \begin{macrocode} \renewenvironment{thebibliography}[1]{% \NAT@thebibliography{#1}% \@clubpenalty\clubpenalty \let\@TBN@opr\present@bibnote \@FMN@list }{% \@endnotesinbib \edef\@currentlabel{\arabic{NAT@ctr}}% \label{LastBibItem}% \NAT@endthebibliography \global\let\auto@bib\@empty }% \def\present@bibnote#1#2{% \item[% \textsuperscript{% \normalfont \Hy@raisedlink{\hyper@anchorstart{frontmatter@#1}\hyper@anchorend}% \begingroup \c@footnote#1\relax \frontmatter@thefootnote \endgroup }% ]#2\par }% % \end{macrocode} % \end{macro} % \end{environment} % % \begin{macro}{\place@bibnumber@sup} % \begin{macro}{\place@bibnumber@inl} % For producing the \cmd\bibitem\ device, % we define two procedures to select from. % % Note that we could have used \classname{natbib}'s \cmd\ifNAT@super\ % switch, but it does not allow for altering the meaning of \cmd\bibnumfmt. % \begin{macrocode} \def\place@bibnumber@sup#1{\textsuperscript{#1}}% \def\place@bibnumber@inl#1{[#1]}% % \end{macrocode} % \end{macro} % \end{macro} % %% \begin{macro}{\@cite} %% \begin{macro}{\nocite} % \begin{macro}{write@bibliographystyle} % We wish to delay committing the \cmd\bibliographystyle\ until as late as possible. % The journal substyle will define a default bibliography style, and % the document's explicit \cmd\bibliographystyle\ command, if any, will override that default. %% For the sake of Bib\TeX, we must execute the \cmd\bibliographystyle\ command %% (putting a \cmd\bibstyle\ command into the auxiliary file) %% somewhere before the first \cmd\cite\ command (or any other like command), %% which puts a \cmd\citation\ command into the auxiliary file. %% %% Therefore, we headpatch the two procedures in \classname{natbib} that can result in %% the appearance in the auxiliary file of a \cmd\citation\ command. %% These two procedures are \cmd\@cite\ and \cmd\nocite. %% %% Not! % % The \cmd\bibstyle\ command may appear quite late in the \filename{.aux} file. % We now delay the automatic writing of the \cmd\bibstyle\ command to the end of the job. % % The procedure \cmd\write@bibliographystyle\ tests whether a \cmd\bibliographystyle\ command has % already been given. % If not, it effectively executes the needed \cmd\bibliographystyle\ command, then neutralizes itself % (we only need to do this once per job). % % \begin{macrocode} %\AtBeginDocument{% % \let\natbib@@cite\@cite % \def\@cite{\write@bibliographystyle\natbib@@cite}% % \let\natbib@nocite\nocite % \def\nocite{\write@bibliographystyle\natbib@nocite}% %}% \def\write@bibliographystyle{% \@ifxundefined\@bibstyle{}{% \expandafter\bibliographystyle@latex\expandafter{\@bibstyle}% }% \global\let\write@bibliographystyle\relax }% \AtEndDocument{\write@bibliographystyle}% % \end{macrocode} % \end{macro} %% \end{macro} %% \end{macro} % % \begin{macro}{\super@cite} % \begin{macro}{\super@cite@} % The \cmd\super@cite\ procedure takes the place of \cmd\@citex\ and implements the feature of the % \classoption{citeautoscript} class option. % This means that the document should be marked up as if citations were \emph{not} superscripted, % and then if you select a journal substyle that has superscripted citations, \revtex\ will do its best % to alter the formatting of the \cmd\cite s to accomodate superscript style. % % Note that the commands \cmd\onlinecite\ and \cmd\textcite\ are not affected by this procedure. % % Here's a subtle one: when is the argument of \cmd\super@cite@@\ not the same as the token \cmd\@let@token? % Answer: when the latter is \cmd\@sptoken! This case has to be handled separately. % % \begin{macrocode} \def\super@cite[#1][#2]#3{% \leavevmode \skip@\lastskip \unskip \begingroup \def\@tempa{[#1][#2]{#3}}% \super@cite@ }% \def\super@cite@{% \futurelet\@let@token\super@cite@@ }% \long\def\super@cite@@#1{% \@ifx{\@let@token\@sptoken}{% \aftergroup\@sptoken\false@sw }{% \@ifx{\@let@token.}{\true@sw}{% \@ifx{\@let@token,}{\true@sw}{% \@ifx{\@let@token'}{\true@sw}{% \@ifx{\@let@token)}{\true@sw}{% \false@sw }% }% }% }% }% {% #1% \super@cite@ }{% \expandafter\@citex@NAT\@tempa\endgroup #1% }% }% \AtBeginDocument{% \citeautoscript@sw{% \@ifx{\place@bibnumber\place@bibnumber@sup}{% \let\@citex@NAT\@citex\let\@citex\super@cite }{}% }{}% }% % \end{macrocode} % \end{macro} % \end{macro} % % % Resolve an incompatability between \classname{natbib} and \classname{listings}. % The latter package tests \cmd\chapter (which has now been \cmd\let\ to \cmd\relax\ as a side effect \classname{natbib}'s use of \LaTeX's \cmd\@ifundefined). % % We couch our fix in such terms that will not be disruptive if \cmd\chapter\ is actually defined at this point. % \begin{macrocode} \@ifx{\chapter\relax}{\let\chapter\@undefined}{}% % \end{macrocode} % % % \subsubsection{\cs{endnote}s and \cs{rtx@bibnote}s} % FIXME: check hyperref compatibility! % % \begin{macro}{\mini@note} % \begin{macro}{\save@note} % \begin{macrocode} \def\mini@note{\save@note\mini@notes}%Implicit #1 \def\save@note#1#2{% \stepcounter{footnote}% \protected@xdef\@thefnmark{\the\c@footnote}% \@footnotemark \expandafter\g@addto@macro \expandafter#1% \expandafter{% \expandafter \@@footnotetext \expandafter {\@thefnmark}{#2}% }% }% \long\def\@@footnotetext#1{\def\@thefnmark{#1}\@footnotetext}% \let\mini@notes\@empty % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\endnote} % A version of footnote that appears at the end of the document. % Actually it just appears where \cmd\printendnotes\ appears. % \begin{macrocode} \def\endnote{% \begingroup \aftergroup\@footnotemark \aftergroup\@endnotetext \@ifnextchar[{% \@xendnote }{% \stepcounter{footnote}% \protected@xdef\@tempa{\thefootnote}% \expandafter\@xendnote\expandafter[\@tempa]% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@xendnote} % \begin{macrocode} \def\@xendnote[#1]{% \begingroup \c@footnote#1\relax \unrestored@protected@xdef\@thefnmark{endnote\thefootnote}% \endgroup \endgroup }% \def\@endnotemark{% \expandafter\cite\expandafter{\@thefnmark}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\endnote@ext} % \begin{macrocode} \def\endnote@ext{.end}% % \end{macrocode} % \end{macro} % % \begin{macro}{\@endnotetext} % The commands \cmd\label, \cmd\index, and \cmd\glossary, % which are robustified for \cmd\markright\ and \cmd\addcontentsline, % are likewise robustified here. % % Note the similarity to \cmd\protected@write. % \begin{macrocode} \long\def\@endnotetext#1{% \@ifxundefined\@endnoteout{% \newwrite\@endnoteout \gdef\endnote@stream{\jobname\endnote@ext}% \immediate\openout\@endnoteout\endnote@stream\relax }{}% \begingroup \let\label\relax \let\index\relax \let\glossary\relax \let\cite \relax \let\ref \relax \let\pageref \relax \let\( \relax \let\) \relax \let\\ \relax % \let\protect\noexpand \let \protect \@unexpandable@protect \newlinechar`\^^M% % \newlinechar`\ % \immediate\write\@endnoteout{\string\@doendnote{\@thefnmark}{#1}}% \endgroup }% % \end{macrocode} % \end{macro} % % \begin{macro}{\endnotetext} % \begin{macrocode} \def\endnotetext{% \@ifnextchar[{% \@xendnotenext }{% \protected@xdef\@thefnmark{\thefootnote}% \@endnotetext }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@xendnotenext} % \begin{macrocode} \def\@xendnotenext[#1]{% \begingroup \c@footnote#1\relax \unrestored@protected@xdef\@thefnmark{\thefootnote}% \endgroup \@endnotetext }% % \end{macrocode} % \end{macro} % % \begin{macro}{\printendnotes} % \begin{macrocode} \def\printendnotes{% \@ifx{\@endnoteout\@undefined}{}{% \begingroup \c@secnumdepth-\maxdimen \section{% \notesname }% \immediate\closeout\@endnoteout \global\let\@endnoteout\@undefined \begin{enumerate}% \makeatletter \input{\endnote@stream}% \end{enumerate}% \endgroup }% }% \appdef\class@enddocumenthook{% \printendnotes }% % \end{macrocode} % \end{macro} % % \begin{macro}{\firstnote@num} % \begin{macro}{\set@firstnote} % % In \revtex, we have permanently altered the way % that the footnote counter gets reset at the beginning % of the document. % % If footnotes appear in the bibliography, we initialise % the footnote counter to number of cites (found last time) % via \cmd\set@firstnote. % % \begin{macrocode} \mathchardef\firstnote@num\z@ \appdef\class@documenthook{% \global\c@footnote\firstnote@num \appdef\maketitle{\global\c@footnote\firstnote@num}% }% \def\set@firstnote#1{% \@ifnum{\firstnote@num=#1\relax}{}{% \class@warn@end{Endnote numbers changed: rerun LaTeX}% }% \immediate\write\@mainaux{% \global\chardef\string\firstnote@num#1\relax }% }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\@endnotesinbib} % \begin{macro}{\@endnotesinbibliography} % We define a function \cmd\@endnotesinbib, % and a variant \cmd\@endnotesinbibliography. % The former is invoked at the start of % the end processing for \enve{thebibliography}; % the latter is a synonym. % % The procedure typesets the footnotes that are to % appear in the bibliography; the default is to % simply arrange for the footnote counter to be % reset at the start of the document. % % The switchover to setting footnotes in the bibliography % is done via \cmd\AtBeginDocument\ code that % changes the meaning of \cmd\footnote\ and % that substitutes the synonym for % \cmd\@endnotesinbib. % % Note that this code make the assumption that % the counter used in \env{thebibliography} is \cmd\c@NAT@ctr. % % \begin{macrocode} \def\@endnotesinbib{% \set@firstnote\z@ }% \def\@endnotesinbibliography{% \expandafter\set@firstnote\expandafter{\the\c@NAT@ctr}% \@ifx{\@endnoteout\@undefined}{}{% \immediate\closeout\@endnoteout \global\let\@endnoteout\@undefined \makeatletter \input{\endnote@stream}% }% }% \appdef\class@documenthook{% \let\@makefnmark@latex\@makefnmark \let\@footnotemark@latex\@footnotemark \footinbib@sw{% \let\footnote\endnote \let\@footnotemark\@endnotemark \let\@makefnmark\@makefnmark@cite \let\@endnotesinbib\@endnotesinbibliography \appdef\class@enddocumenthook{\auto@bib}% \let\printendnotes\relax }{}% }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\auto@bib} % Under some circumstances, we must typeset the bibliography automatically. % For instance, the document specifies footnotes in the bibliography, but contains % no bibliography. % % Note that this facility is not able to work more than once per document. % If multiple bibliographys are required (e.g., per article), it will be the responsibility of the journal style % to restore \cmd\auto@bib\ to its original meaning so it can be re-invoked. % \begin{macrocode} \def\auto@bib{% \@ifx@empty\@FMN@list{% \@ifxundefined\@endnoteout{% \false@sw }{% \true@sw }% }{% \true@sw }{% \begin{thebibliography}{}\end{thebibliography}% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@doendnote} % \begin{macrocode} \def\@doendnote#1#2{\bibitem{#1}#2} % \end{macrocode} % \end{macro} % % % % \section{Initial setup} % \changes{v4.0beta 2}{1999/06/20} % {Defer assignment until \cs{AtBeginDocument} time.} % Note that this code is executed at \cmd\AtBeginDocument\ time % in order to handle a particular timing problem. % Please do not move this code any earlier! % \begin{macrocode} \appdef\class@documenthook{% % \end{macrocode} % We assert our own page style only if nobody else has done so. % Users wishing to customize their documents will be able to invoke a \cmd\pagestyle\ % command anywhere in the preamble. % \begin{macrocode} \@ifxundefined\@evenhead{% \@ifxundefined\@oddhead{% \@ifxundefined\@oddfoot{% \@ifxundefined\@evenfoot{% \preprintsty@sw{% \ps@preprint }{% \ps@article }% }{}% }{}% }{}% }{}% \pagenumbering{arabic}% \normalsize \tabbingsep \labelsep \leftmargin\leftmargini \labelwidth\leftmargin\advance\labelwidth-\labelsep \let\@listi\@listI \@listi % \end{macrocode} % % \begin{macrocode} %\twoside@sw{}{% % \raggedbottom %}% % \end{macrocode} % We make sure that the ``environment'' component mark is set. % \begin{macrocode} \def\curr@envir{document}% \mark@envir{\curr@envir}% % \end{macrocode} % % \changes{v4.0beta 3}{1999/11/13} % {Grid changes with ltxgrid} % \changes{v4.0beta 4}{2000/04/10} % {Also alter how lists get indented.} % When setting the column grid, we have to alter the procedure % for formatting lists. Because \cmd\twocolumngrid\ requires % rebalancing columns at some points, lists must \emph{not} % involve the use of \cmd\moveleft, \cmd\moveright, or \cmd\parshape. % The alternative procedure only involves the manipulation of % \cmd\leftskip\ and \cmd\rightskip. % % FIXME: Always sloppy?? % \begin{macrocode} \twocolumn@sw{% \open@column@mlt\tw@ \set@colht \@floatplacement \@dblfloatplacement \sloppy \@booleanfalse\raggedcolumn@sw \let\set@listindent\set@listindent@ }{% \open@column@one\@ne \set@colht \@floatplacement \@dblfloatplacement \sloppy % \raggedbottom \let\set@listindent\set@listindent@parshape }% }% % \end{macrocode} % % % \section{\cs{appendix}} % % \begin{macrocode} %\newif\ifappendixon % \end{macrocode} % Note that, within appendices, % equations are numbered within sections (appendices). % \begin{macrocode} \def\appendix{% \par %\appendixontrue \setcounter{section}\z@ \setcounter{subsection}\z@ \setcounter{subsubsection}\z@ \def\thesubsection{\arabic{subsection}}% \def\thesubsubsection{\alph{subsubsection}}% \@addtoreset{equation}{section}% \def\theequation@prefix{\thesection}% \addtocontents{toc}{\protect\appendix}% \@ifstar{% \def\thesection{\unskip}% \def\theequation@prefix{A.}% }{% \def\thesection{\Alph{section}}% }% }% % \end{macrocode} % % \section{Changing the page grid} % \changes{v4.0beta 2}{1999/06/20} % {Define three separate environments, % defer assignment to \cs{AtBeginDocument} time. % } % % \subsection{Avoiding Grid Changes}% % % In preprint styles, ``wide text'' is a no-op, and the title page % processing involves no grid change. % % \begin{macro}{\title@column@default}% % \begin{macro}{\close@column@default}% % % \begin{macrocode} \def\title@column@default#1{% \minipagefootnote@init #1% \minipagefootnote@foot }% \def\close@column@default{% \newpage }% % \end{macrocode} % \end{macro} % \end{macro} % % % \subsection{Galley Style: Margin Changes}% % A variant of preprint processing. Emulate journal appearance somewhat. % % \begin{environment}{widetext@galley} % DPC: We're in galley style so do a lob sided display environment. % % QUERY: How can we be sure that we are in galley style? % ANSWER: as noted elsewhere, require both \cmd\twocolumn@sw\ and \cmd\preprintsty@sw\ to be false. % \begin{macrocode} \def\galley@outdent{\rightmargin-\columnwidth\advance\rightmargin-\columnsep}% \let\widetext@outdent\@empty \newenvironment{widetext@galley}{% \list{}{% \topsep \z@skip \listparindent \parindent \itemindent \parindent \leftmargin \z@ \parsep \z@\@plus\p@ \widetext@outdent \relax }% \item\relax }{ \endlist }% % \end{macrocode} % \end{environment} % % % \subsection{Grid Changing Via \classname{ltxgrid}}% % % In case \classoption{twocolumngrid} has been invoked, % switch column grid using the column grid-changing commands. % Supply stub definitions of those commands here. % \changes{v4.0beta 3}{1999/11/13} % {grid changes with ltxgrid} % % \begin{macro}{\title@column@grid}% % \begin{macro}{\close@column@grid}% % The title block always starts at the top of a new page. % \changes{v4.0beta 3}{1999/11/13} % {grid changes with ltxgrid} % % Note that, for the procedure \cmd\close@column@grid, % we balance columns by switching to the one-column page grid, % then we return to a two-column page grid in anticipation of the % upcoming \cmd\clearpage. % \begin{macrocode} \def\title@column@grid#1{% \minipagefootnote@init \onecolumngrid \begingroup \let\@footnotetext\frontmatter@footnotetext \let\set@footnotewidth\set@footnotewidth@ii #1% \endgroup \twocolumngrid \minipagefootnote@foot }% \def\close@column@grid{% \balancelastpage@sw{% \onecolumngrid % \twocolumngrid }{}% }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{environment}{widetext@grid} % \changes{v4.0beta 3}{1999/11/13} % {grid changes via ltxgrid procedures} % \changes{v4.0beta 5}{2000/11/21} % {adornments above and below.} % We slip into the one-column page grid % within the scope of this environment. % % Note that we set adornments above and below the \env{widettext}. % These are set as leaders, so they will disappear at a page break. % \begin{macrocode} \newenvironment{widetext@grid}{% \par\ignorespaces \setbox\widetext@top\vbox{% \vskip15\p@ \hb@xt@\hsize{% \leaders\hrule\hfil \vrule\@height6\p@ }% \vskip6\p@ }% \setbox\widetext@bot\hb@xt@\hsize{% \vrule\@depth6\p@ \leaders\hrule\hfil }% \onecolumngrid \dimen@\ht\widetext@top\advance\dimen@\dp\widetext@top \cleaders\box\widetext@top\vskip\dimen@ \let\set@footnotewidth\set@footnotewidth@ii }{% \par \setbox\widetext@bot\vbox{% \hb@xt@\hsize{\hfil\box\widetext@bot}% \vskip14\p@ }% \dimen@\ht\widetext@bot\advance\dimen@\dp\widetext@bot \cleaders\box\widetext@bot\vskip\dimen@ \twocolumngrid\global\@ignoretrue \@endpetrue }% \newbox\widetext@top \newbox\widetext@bot % \end{macrocode} % \end{environment} % % % Decide, finally, how the page grid is to be manipulated. % \begin{macrocode} \appdef\class@documenthook{% \twocolumn@sw{% \let@environment{widetext}{widetext@grid}% \let\title@column\title@column@grid \let\close@column\close@column@grid }{% \let@environment{widetext}{widetext@galley}% \preprintsty@sw{% % \end{macrocode} % Change the page grid not at all. % \begin{macrocode} }{% % \end{macrocode} % If we are galley style, change the page margin only. % \begin{macrocode} \galley@sw{% \let\widetext@outdent\galley@outdent }{% }% }% }% }% % \end{macrocode} % % \begin{macro}{\title@column} % Provide a default meaning for \cmd\title@column\ % in case it was never defined. % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\title@column{% \let\title@column\title@column@default }{}% }% % \end{macrocode} % \end{macro} % % % \section{Old font commands} % % \begin{macrocode} \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm} \DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf} \DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt} \DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf} \DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit} \DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl} \DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc} \DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal} \DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal} % \end{macrocode} % % \section{English-Language Texts} % As this class is just for English language journals, we % could hardwire these texts, % but to make it easier to use this as a % basis for the code for similar journal styles, separate out all the % fixed text strings into babel-style macros of the form % |\|\ldots|name| % % Note: for babel compatability, use version 1999/05/05 v3.6x or later. % % Some of these might need changing in the society-specific code. % % \begin{macro}{\today} % Procedure \cmd\today\ is used in the article class, but not in % this document class. % \begin{macrocode} \def\today{\ifcase\month\or January\or February\or March\or April\or May\or June\or July\or August\or September\or October\or November\or December\fi \space\number\day, \number\year} % \end{macrocode} % \end{macro} % % \begin{macro}{\notesname} % Text entity \cmd\notesname\ is used in \cmd\printendnotes. % \begin{macrocode} \def\notesname{Notes} % \end{macrocode} % \end{macro} % % \begin{macro}{\partname} % Text entity \cmd\partname\ is used in \cmd\@part. % \begin{macrocode} \def\partname{Part} % \end{macrocode} % \end{macro} % % \begin{macro}{\tocname} % Text entity \cmd\tocname\ is used in \cmd\tableofcontents, % as defined in the standard \LaTeX\ book class. % \begin{macrocode} \def\tocname{Contents} % \end{macrocode} % \end{macro} % % \begin{macro}{\lofname} % Text entity \cmd\lofname\ is used in \cmd\listoffigures, % as defined in the standard \LaTeX\ book class. % \begin{macrocode} \def\lofname{List of Figures} % \end{macrocode} % \end{macro} % % \begin{macro}{\lotname} % Text entity \cmd\lotname\ is used in \cmd\listoftables, % as defined in the standard \LaTeX\ book class. % \begin{macrocode} \def\lotname{List of Tables} % \end{macrocode} % \end{macro} % % \begin{macro}{\refname} % Text entity \cmd\refname\ is used in \env{thebibliography}. % \begin{macrocode} \def\refname{References} % \end{macrocode} % \end{macro} % % \begin{macro}{\indexname} % Text entity \cmd\indexname\ is used in \env{theindex}, % as defined in the standard \LaTeX\ book class. % \begin{macrocode} \def\indexname{Index} % \end{macrocode} % \end{macro} % % \begin{macro}{\figurename} % \changes{v4.0beta 2}{1999/06/20} % {Added localization of \cs{figuresname}} % Text entity \cmd\figurename\ is used in \env{figure}, % \cmd\figuresname\ in \cmd\printfigures. % \begin{macrocode} \def\figurename{FIG.} \def\figuresname{Figures}% % \end{macrocode} % \end{macro} % % \begin{macro}{\tablename} % \changes{v4.0beta 2}{1999/06/20} % {Added localization of \cs{tablesname}} % Text entity \cmd\tablename\ is used in \env{table}, % \cmd\tablesname\ in \cmd\printtables. % \begin{macrocode} \def\tablename{TABLE} \def\tablesname{Tables}% % \end{macrocode} % \end{macro} % % \begin{macro}{\abstractname} % Text entity \cmd\abstractname\ is used in \env{abstract}. % \begin{macrocode} \def\abstractname{Abstract} % \end{macrocode} % \end{macro} % % \begin{macro}{\appendixesname} % \begin{macro}{\appendixname} % Text entity \cmd\appendixesname\ is used in TOC. % \begin{macrocode} \def\appendixesname{Appendixes}% \def\appendixname{Appendix}% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\acknowledgmentsname} % Text entity \cmd\acknowledgmentsname\ is used in \env{acknowledgments}. % \begin{macrocode} \def\acknowledgmentsname{Acknowledgments} % \end{macrocode} % \end{macro} % % \begin{macro}{\journalname} % This should be set by the society journal options, eg `pra'. % \begin{macrocode} \def\journalname{??} % \end{macrocode} % \end{macro} % % \begin{macro}{\copyrightname} % Default layout does not assign copyright, but a journal that wants % to might use this. % \begin{macrocode} \def\copyrightname{??} % \end{macrocode} % \end{macro} % % \begin{macro}{\andname} % The text string ``and'' for use in author lists. % \begin{macrocode} \def\andname{and} % \end{macrocode} % \end{macro} % % \begin{macro}{\@pacs@name} % \begin{macro}{\@keys@name} % The text string prepended to PACS numbers, resp. to keywords. % \begin{macrocode} \def\@pacs@name{PACS numbers: }% \def\@keys@name{Keywords: }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\ppname} % The text string ``pp'' for use in page ranges. % \begin{macrocode} \def\ppname{pp} % \end{macrocode} % \end{macro} % % \begin{macro}{\numbername} % The text string ``number'' for use in article reference. % \begin{macrocode} \def\numbername{number} % \end{macrocode} % \end{macro} % % \begin{macro}{\volumename} % The text string ``volume'' for use in article reference. % \begin{macrocode} \def\volumename{volume} % \end{macrocode} % \end{macro} % % \begin{macro}{\Dated@name} % \begin{macro}{\Received@name} % \begin{macro}{\Revised@name} % \begin{macro}{\Accepted@name} % \begin{macro}{\Published@name} % These texts are used in the \cmd\date, et al. commands. % \begin{macrocode} \def\Dated@name{Dated: }% \def\Received@name{Received }% \def\Revised@name{Revised }% \def\Accepted@name{Accepted }% \def\Published@name{Published }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \section{Legacy Commands} % We deffine some commands left over from version 3.1, or give default meanings. % Some definitions can be overridden % in the document preamble or in included packages. % % Note on the namespace: command names like \cmd\REV@\emph{name} are used here, % because it is not clear that any of this code is generally useful. % \begin{macrocode} \def\address{\replace@command\address\affiliation}% \def\altaddress{\replace@command\altaddress\altaffiliation}% \newenvironment{references}{% \class@warn@end{The references environment is not supported; use thebibliography instead.} \gdef\references{\thebibliography{}}\references }{% \endthebibliography }% \def\draft{% \class@warn@end{Command \string\draft\space is obsolete;^^JInvoke option draft instead.}% \@booleantrue\draft@sw }% \def\tighten{% \class@warn@end{Command \string\tighten\space is obsolete;^^JInvoke option tightenlines instead.}% \@booleantrue\tightenlines@sw }% \def\tableline{% \noalign{% \class@warn@end{Command \string\tableline\space is obsolete;^^JUse \string\colrule\space instead.}% \global\let\tableline\colrule }% \tableline }% \def\case{\replace@command\case\frac}% \def\slantfrac{\replace@command\slantfrac\frac}% \def\tablenote{\replace@command\tablenote\footnote}% \def\tablenotemark{\replace@command\tablenotemark\footnotemark}% \def\tablenotetext{\replace@command\tablenotetext\footnotetext}% % Lose the following definition: \DeclareRobustCommand\REV@text[1]{% \relax \ifmmode \mathchoice {\hbox{{\everymath{\displaystyle }#1}}}% {\hbox{{\everymath{\textstyle }#1}}}% {\hbox{{\everymath{\scriptstyle }\let\f@size\sf@size\selectfont#1}}}% {\hbox{{\everymath{\scriptscriptstyle}\let\f@size\ssf@size\selectfont#1}}}% \glb@settings \else \mbox{#1}% \fi }% % Lose the following definition: \DeclareRobustCommand\REV@bbox[1]{% \relax \ifmmode \mathchoice {\hbox{{\everymath{\displaystyle }\boldmath$#1$}}}% {\hbox{{\everymath{\textstyle }\boldmath$#1$}}}% {\hbox{{\everymath{\scriptstyle }\boldmath$#1$}}}% {\hbox{{\everymath{\scriptscriptstyle}\boldmath$#1$}}}% \glb@settings \else \mbox{#1}% \fi }% \DeclareRobustCommand\REV@bm[1]{% \class@warn@end{To use \string\bm, please load the bm package!}% \global\let\bm\relax }% \def\FL{\obsolete@command\FL}% \def\FR{\obsolete@command\FR}% \def\narrowtext{\obsolete@command\narrowtext}% \def\mediumtext{\obsolete@command\mediumtext}% \newenvironment{quasitable}{% \let@environment{tabular}{longtable}% }{% }% % \end{macrocode} % % \begin{macro}{\text} % \begin{macro}{\bm} % \begin{macro}{\bibinfo} % \begin{macro}{\eprint} % \begin{macro}{\url} % % If not otherwise defined, give default meanings to certain commands. % \changes{v4.0beta 4}{2000/04/10} % {eprint takes an aoptional argument, syntactical only in this case.} % \begin{macrocode} \appdef\class@inithook{% \@ifxundefined\text{\let\text\REV@text}{}% \@ifxundefined\bm{\let\bm\REV@bm}{}% \providecommand\bibinfo[2]{#2}% \providecommand\eprint[2][]{#2}% \providecommand\url[1]{#1}% }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\bbox} % % \begin{macrocode} \def\bbox#1{% \class@warn@end{\string\bbox\space is obsolete,^^Jload the bm package and use \string\bm\space instead.}% \global\let\bbox\relax }% % \end{macrocode} % \end{macro} % % \begin{macro}{\mathletters} % % \begin{macrocode} \newenvironment{mathletters}{% \class@warn@end{Environment {mathletters} is obsolete;^^Jload the amsmath package and use {subequations}!}% \global\let\mathletters\@empty }{% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\eqnum} % % \begin{macrocode} \def\eqnum#1{% \class@warn@end{\string\eqnum\space is obsolete, load the amsmath package and use \string\tag!}% \global\let\eqnum\@gobble }% % \end{macrocode} % \end{macro} % % We read in the symbol definitions. % \begin{macrocode} \RequirePackage{revsymb}% \appdef\class@inithook{\revsymb@inithook}% % \end{macrocode} % % \section{Endgame for the Document Class} % % This section contains definitions related to the % end-of-class processing: % we want to control exactly what happens next. % % We provide for a ``job macro package'' that can override % definitions made by the class or any other packages it loads. % We act on the value of \cmd\secnumarabic@sw; % this code is a model for dealing with the job macro package. % We also install a the very last procedures into % \cmd\AtEndOfClass, ones that need to tail on to % any processing performed either by the % class, by any of its included packages, or % by the job macro package and any packages it may have loaded. % % \subsection{Job Macro Package} % You can create a ``job macro package'' for your document % that will be read in automatically every time % your document is processed. % Thus, if your job is a file called \file{myarticle.tex}, % then the file \file{myarticle.rty} will be read in % just the same as if you had placed a % \cmd\usepackage|{myarticle.rty}| statement % immediately following your \cmd\documentclass\ statement. % % Within your \file{.rty} file, % you can define and use control sequence names that use the |@| character % and you can override any of the definitions or assignments made % by the \revtex\ document class or the selected journal substyle. % That is, you have the power to really mess things up badly. % % If you choose to have a job macro package, you are well % advised to read the \LaTeX\ guide to document classes, % \filename{clsguide.tex} or read up on the subject % in a book line the \LaTeX\ Companion. % % The file \filename{template.rty} contains a template for % creating your own job macro package. % % \begin{macrocode} \AtEndOfClass{% \InputIfFileExists{\jobname.rty}{}{}% }% % \end{macrocode} % % \subsection{\cs{secnumarabic@sw}}\label{sec:secnumarabic} % \begin{macro}{\secnumarabic@sw} % The flag \cmd\secnumarabic@sw\ signifies that sectioning commands are % to be numbered arabic. % The effect of this command should override any settings % made by the journal substyle or by the job macro package. % However, it should be lower in precedence to definitions % appearing in the document preamble. % Therefore, we install its code into \cmd\AtEndOfClass, % but do it \emph{after} the corresponding code % for the journal substyle and the job macro package. % % Note: \cmd\thesection\ must \emph{not} be redefined, % say, at \cmd\AtBeginDocument\ time by some delayed code. % \begin{macrocode} \AtEndOfClass{% \@ifxundefined\secnumarabic@sw{\@booleanfalse\secnumarabic@sw}{}% \secnumarabic@sw{% \def\p@section {}% \def\thesection {\arabic{section}}% \def\p@subsection {}% \def\thesubsection {\thesection.\arabic{subsection}}% \def\p@subsubsection {}% \def\thesubsubsection {\thesubsection.\arabic{subsubsection}}% }{}% }% % \end{macrocode} % \end{macro} % % \subsection{Hook for default values of Booleans} % This portion of the code for this class file % \emph{must} appear at the very end. % \begin{macro}{\defaults@hook} % The procedure \cmd\defaults@hook\ should hereby % be the very last to be installed into \cmd\AtBeginDocument. % We provide it with a default in case it has not been % used up til now. % % CHECKME: is any other hook installed later than \cmd\defaults@hook? % \begin{macrocode} \AtEndOfClass{% \appdef\class@documenthook{% \defaults@hook }% }% \@ifxundefined\defaults@hook{\let\defaults@hook\@empty}{}% % \end{macrocode} % \end{macro} % % End of the class file. % \begin{macrocode} % % \end{macrocode} % % % \section{Symbols: the \texttt{revsymb} module} % We immediately define a utility command: this module's warning. % \begin{macrocode} %<*revsymb> \def\REVSYMB@warn#1{\PackageWarningNoLine{revsymb}{#1}}% % \end{macrocode} % % \begin{macro}{\lambdabar} % \begin{macrocode} \DeclareRobustCommand\lambdabar{% \bgroup \def\@tempa{% \hbox{% \raise.73\ht\z@ \hb@xt@\z@{% \kern.25\wd\z@ \vrule \@width.5\wd\z@\@height.1\p@\@depth.1\p@ \hss }% \box\z@ }% }% \mathchoice {\setbox\z@\hbox{$\displaystyle \lambda$}\@tempa}% {\setbox\z@\hbox{$\textstyle \lambda$}\@tempa}% {\setbox\z@\hbox{$\scriptstyle \lambda$}\@tempa}% {\setbox\z@\hbox{$\scriptscriptstyle\lambda$}\@tempa}% \egroup }% % \end{macrocode} % \end{macro} % % \begin{macro}{\openone} % DPC: Really should use a font that includes this glyph. % Unfortunately not in AMS ones, but is in bbold, cmbb. % (I think, must check), % \changes{v4.d}{1998/01/31} % {use font-dependent spacing} % FIXME: check for bbold. % \begin{macrocode} \DeclareRobustCommand\openone{\leavevmode\hbox{\small1\normalsize\kern-.33em1}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\corresponds} % \begin{macro}{\overdots} % \begin{macro}{\overcirc} % J\"org Knappen suggests the replacements: % replace \cmd\corresponds\ with \cmd\triangleq, source \classname{amssymb}; % replace \cmd\overcirc\ with \cmd\mathring, source \classname{latex2e}; % replace \cmd\overdots\ with \cmd\dddot, source \classname{amsmath}. % % Any use of any of these commands will result in a warning message at the end % of the log file. If the corresponding package is not loaded, a % definition will quietly be provided. % \begin{macrocode} \DeclareRobustCommand\corresponds{\replace@command\corresponds\triangleq}% \DeclareRobustCommand\overcirc{\replace@command\overcirc\mathring}% \DeclareRobustCommand\overdots{\replace@command\overdots\dddot}% \DeclareRobustCommand\REV@triangleq{% {\lower.2ex\hbox{=}}{\kern-.75em^\triangle}% }% \DeclareRobustCommand\REV@dddot[1]{% \@ontopof{#1}{\cdots}{1.0}\mathord{\box2}% }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\succsim} % \begin{macro}{\precsim} % \begin{macro}{\lesssim} % \begin{macro}{\gtrsim} % \begin{macro}{\alt} % \begin{macro}{\agt} % These version 3.1 commands are always supplied, % but the definitions in \classname{amssymb} are preferred. % \begin{macrocode} \DeclareRobustCommand\altsuccsim{\succ\kern-.9em_\sim\kern.3em}% \DeclareRobustCommand\altprecsim{\prec\kern-1em_\sim\kern.3em}% \let\REV@succsim\altsuccsim \let\REV@precsim\altprecsim \DeclareRobustCommand\REV@lesssim{\mathrel{\mathpalette\vereq{<}}}% \DeclareRobustCommand\REV@gtrsim{\mathrel{\mathpalette\vereq{>}}}% \DeclareRobustCommand\alt{\lesssim} \DeclareRobustCommand\agt{\gtrsim} \def\vereq#1#2{% \lower3\p@\vbox{% \baselineskip1.5\p@ \lineskip1.5\p@ \ialign{$\m@th#1\hfill##\hfil$\crcr#2\crcr\sim\crcr}% }% }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\tensor} % \begin{macro}{\overstar} % \begin{macro}{\loarrow} % \begin{macro}{\roarrow} % \changes{v4.0beta 2}{1999/06/20} % {AO: remove duplicates} % \begin{macrocode} \DeclareRobustCommand\tensor[1]{\@ontopof{#1}{\leftrightarrow}{1.15}\mathord{\box2}} \DeclareRobustCommand\overstar[1]{\@ontopof{#1}{\ast}{1.15}\mathord{\box2}} \DeclareRobustCommand\loarrow[1]{\@ontopof{#1}{\leftarrow}{1.15}\mathord{\box2}} \DeclareRobustCommand\roarrow[1]{\@ontopof{#1}{\rightarrow}{1.15}\mathord{\box2}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\@ontopof} % \begin{macrocode} \def\@ontopof#1#2#3{% {% \mathchoice {\@@ontopof{#1}{#2}{#3}\displaystyle \scriptstyle }% {\@@ontopof{#1}{#2}{#3}\textstyle \scriptstyle }% {\@@ontopof{#1}{#2}{#3}\scriptstyle \scriptscriptstyle}% {\@@ontopof{#1}{#2}{#3}\scriptscriptstyle\scriptscriptstyle}% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\@@ontopof} % Same as \revtex3, more or less. % \begin{macrocode} \def\@@ontopof#1#2#3#4#5{% \setbox\z@\hbox{$#4#1$}% \setbox\f@ur\hbox{$#5#2$}% \setbox\tw@\null\ht\tw@\ht\z@ \dp\tw@\dp\z@ \@ifdim{\wd\z@>\wd\f@ur}{% \setbox\f@ur\hb@xt@\wd\z@{\hss\box\f@ur\hss}% \mathord{\rlap{\raise#3\ht\z@\box\f@ur}\box\z@}% }{% \setbox\f@ur\hb@xt@.9\wd\f@ur{\hss\box\f@ur\hss}% \setbox\z@\hb@xt@\wd\f@ur{\hss$#4\relax#1$\hss}% \mathord{\rlap{\copy\z@}\raise#3\ht\z@\box\f@ur}% }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frak} % Deal with legacy \cmd\frak: % if \classname{amsfonts} not loaded, defined in such a way as to ask for that package. % Also, says to use \cmd\mathfrak\ instead. % \begin{macrocode} \DeclareRobustCommand\frak{% \REVSYMB@warn{% Command \string\frak\space unsupported:^^J% please use \string\mathfrak\space instead.% }% \global\let\frak\mathfrak \frak }% \DeclareRobustCommand\REV@mathfrak{% \REVSYMB@warn{% Command \string\mathfrak\space undefined:^^J% please specify the amsfonts or amssymb option!% }% \global\let\mathfrak\@firstofone \mathfrak }% % \end{macrocode} % \end{macro} % % \begin{macro}{\Bbb} % Deal with legacy \cmd\Bbb: % if \classname{amsfonts} not loaded, defined in such a way as to ask for that package. % Also, says to use \cmd\mathbb\ instead. % \begin{macrocode} \DeclareRobustCommand\Bbb{% \REVSYMB@warn{% Command \string\Bbb\space unsupported:^^J% please use \string\mathbb\space instead.% }% \global\let\Bbb\mathbb \Bbb }% \DeclareRobustCommand\REV@mathfrak{% \REVSYMB@warn{% Command \string\mathbb\space undefined:^^J% please specify the amsfonts or amssymb option!% }% \global\let\mathbb\@firstofone \mathbb }% % \end{macrocode} % \end{macro} % % \begin{macro}{\Bigglb} % Deal with legacy bold delimiters. % Each of the following takes an implicit argument consisting of % the delimiter to be made big and bold. % FIXME: \cmd\DeclareBoldMathCommand\ is not the right tool! % \begin{macrocode} \def\Bigglb{\REV@boldopen \Bigg}% \def\Biglb {\REV@boldopen \Big }% \def\bigglb{\REV@boldopen \bigg}% \def\biglb {\REV@boldopen \big }% \def\Biggrb{\REV@boldclose\Bigg}% \def\Bigrb {\REV@boldclose\Big }% \def\biggrb{\REV@boldclose\bigg}% \def\bigrb {\REV@boldclose\big }% \def\REV@pmb#1{% \hbox{% \setbox\z@=\hbox{#1}% \kern-.02em\copy\z@\kern-\wd\z@ \kern .04em\copy\z@\kern-\wd\z@ \kern-.02em \raise.04em\copy\z@ }% }% \def\REV@boldopen #1#2{\mathopen {\REV@pmb{$#1#2$}}}% \def\REV@boldclose#1#2{\mathclose{\REV@pmb{$#1#2$}}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\AtBeginDocument} % Package dependencies are taken care of % \cmd\AtBeginDocument\ time. % \begin{macrocode} \def\revsymb@inithook{% \@ifxundefined\dddot{\let\dddot\REV@dddot}{}% \@ifxundefined\triangleq{\let\triangleq\REV@triangleq}{}% \@ifxundefined\succsim{\let\succsim\altsuccsim}{}% \@ifxundefined\precsim{\let\precsim\altprecsim}{}% \@ifxundefined\lesssim{\let\lesssim\REV@lesssim}{}% \@ifxundefined\gtrsim {\let\gtrsim \REV@gtrsim }{}% \@ifxundefined\mathfrak{\let\mathfrak\REV@mathfrak}{}% \@ifxundefined\mathbb{\let\mathbb\REV@mathbb}{}% }% % \end{macrocode} % \end{macro} % % \begin{macrocode} % % \end{macrocode} % % \section{The \classoption{10pt} class option: the \texttt{10pt} module} % \changes{v4.0beta 2}{1999/06/20} % {AO: all code for \protect\classoption{10pt} is in this module.} % The file \file{10pt.rtx} is read in by the \classname{revtex4} document class % if \cmd\@pointsize\ has the value 10. % % \begin{macrocode} %<*10pt> % \end{macrocode} % % \begin{macrocode} \def\normalsize{% \@setfontsize\normalsize\@xpt{11.5}% \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \abovedisplayskip \belowdisplayshortskip \abovedisplayskip \let\@listi\@listI }% % \end{macrocode} % % \begin{macrocode} \def\small{% \@setfontsize\small\@ixpt{10.5}% \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \z@ \@plus2\p@ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ \def\@listi{% \leftmargin\leftmargini \topsep 4\p@ \@plus2\p@ \@minus2\p@ \parsep 2\p@ \@plus\p@ \@minus\p@ \itemsep \parsep }% }% % \end{macrocode} % % \begin{macrocode} \def\footnotesize{% \@setfontsize\footnotesize\@viiipt{9.5pt}% \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \z@ \@plus\p@ \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ \def\@listi{% \leftmargin\leftmargini \topsep 3\p@ \@plus\p@ \@minus\p@ \parsep 2\p@ \@plus\p@ \@minus\p@ \itemsep \parsep }% }% % \end{macrocode} % % \begin{macrocode} \def\scriptsize{% \@setfontsize\scriptsize\@viipt\@viiipt }% \def\tiny{% \@setfontsize\tiny\@vpt\@vipt }% \def\large{% \@setfontsize\large\@xiipt{14pt}% }% \def\Large{% \@setfontsize\Large\@xivpt{18pt}% }% \def\LARGE{% \@setfontsize\LARGE\@xviipt{22pt}% }% \def\huge{% \@setfontsize\huge\@xxpt{25pt}% }% \def\Huge{% \@setfontsize\Huge\@xxvpt{30pt}% }% % \end{macrocode} % % \begin{macrocode} %\appdef\class@documenthook{% \@ifxundefined\twoside@sw{\@booleanfalse\twoside@sw}{}% \twoside@sw{% % \oddsidemargin -.1in % \evensidemargin -.4in \oddsidemargin -20pt \evensidemargin -20pt \marginparwidth 107pt }{% \oddsidemargin -.25in \evensidemargin -.25in \marginparwidth 30pt }% %}% % \end{macrocode} % % \begin{macrocode} \marginparsep 6pt % \end{macrocode} % % \begin{macrocode} \topmargin -61pt % \end{macrocode} % % \begin{macrocode} \headheight 25pt \headsep 16pt % \end{macrocode} % % \begin{macrocode} \topskip 10pt % \end{macrocode} % % \begin{macrocode} \footskip 30pt % \end{macrocode} % % Was: 57\cmd\baselineskip + \cmd\topskip % \begin{macrocode} %\appdef\set@pica@hook{% \textheight = 56pc %}% % \end{macrocode} % % \begin{macrocode} \textwidth42.5pc % \end{macrocode} % % \begin{macrocode} \columnsep 1.5pc \columnseprule 0pt % \end{macrocode} % % \begin{macrocode} \footnotesep 1pt \skip\footins 39pt plus 4pt minus 2pt \def\footnoterule{\kern-19pt\hrule width.5in\kern18.6pt\relax}% % \end{macrocode} % % \begin{macrocode} \floatsep 12pt plus 2pt minus 2pt \textfloatsep 20pt plus 2pt minus 4pt \intextsep 12pt plus 2pt minus 2pt % \end{macrocode} % % \begin{macrocode} \dblfloatsep 12pt plus 2pt minus 2pt \dbltextfloatsep 20pt plus 2pt minus 4pt % \end{macrocode} % % \begin{macrocode} \@fptop 0pt plus 1fil \@fpsep 8pt plus 2fil \@fpbot 0pt plus 1fil \@dblfptop 0pt plus 1fil \@dblfpsep 8pt plus 2fil \@dblfpbot 0pt plus 1fil % \end{macrocode} % % \begin{macrocode} \marginparpush 5pt % \end{macrocode} % % \begin{macrocode} \parskip 0pt plus 1pt \parindent 10pt \emergencystretch8\p@ % \end{macrocode} % % \begin{macrocode} \partopsep 2pt plus 1pt minus 1pt % \end{macrocode} % % \begin{macrocode} \leftmargini 25pt \leftmarginii 22pt \leftmarginiii 18.7pt \leftmarginiv 17pt \leftmarginv 10pt \leftmarginvi 10pt % \end{macrocode} % % \begin{macrocode} \def\@listI{% \leftmargin\leftmargini \parsep 4\p@ plus2\p@ minus\p@ \topsep 8\p@ plus2\p@ minus4\p@ \itemsep 4\p@ plus2\p@ minus\p@ }% % \end{macrocode} % % \begin{macrocode} \labelsep 4pt % \end{macrocode} % % \begin{macrocode} \def\@listii{% \leftmargin\leftmarginii \labelwidth\leftmarginii \advance\labelwidth-\labelsep \topsep 4\p@ plus2\p@ minus\p@ \parsep 2\p@ plus\p@ minus\p@ \itemsep \parsep }% % \end{macrocode} % % \begin{macrocode} \def\@listiii{% \leftmargin\leftmarginiii \labelwidth\leftmarginiii \advance\labelwidth-\labelsep \topsep 2\p@ plus\p@ minus\p@ \parsep \z@ \partopsep \p@ plus\z@ minus\p@ \itemsep \topsep }% % \end{macrocode} % % \begin{macrocode} \def\@listiv{% \leftmargin\leftmarginiv \labelwidth\leftmarginiv \advance\labelwidth-\labelsep }% % \end{macrocode} % % \begin{macrocode} \def\@listv{% \leftmargin\leftmarginv \labelwidth\leftmarginv \advance\labelwidth-\labelsep }% % \end{macrocode} % % \begin{macrocode} \def\@listvi{% \leftmargin\leftmarginvi \labelwidth\leftmarginvi \advance\labelwidth-\labelsep }% % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \section{The \classoption{11pt} class option: the \texttt{11pt} module} % \changes{v4.0beta 2}{1999/06/20} % {AO: all code for \protect\classoption{11pt} is in this module.} % The file \file{11pt.rtx} is read in by the \classname{revtex4} document class % if \cmd\@pointsize\ has the value 11. % % \begin{macrocode} %<*11pt> % \end{macrocode} % % \begin{macrocode} \def\normalsize{% \@setfontsize\normalsize\@xipt{13.6}% \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \abovedisplayskip \belowdisplayshortskip \abovedisplayskip \let\@listi\@listI }% % \end{macrocode} % % \begin{macrocode} \def\small{% \@setfontsize\small\@xpt\@xiipt \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ \def\@listi{\leftmargin\leftmargini \topsep 6\p@ \@plus2\p@ \@minus2\p@ \parsep 3\p@ \@plus2\p@ \@minus\p@ \itemsep \parsep }% \belowdisplayskip \abovedisplayskip }% % \end{macrocode} % % \begin{macrocode} \def\footnotesize{% \@setfontsize\footnotesize\@ixpt{11}% \abovedisplayskip 8\p@ \@plus2\p@ \@minus4\p@ \abovedisplayshortskip \z@ \@plus\p@ \belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@ \def\@listi{\leftmargin\leftmargini \topsep 4\p@ \@plus2\p@ \@minus2\p@ \parsep 2\p@ \@plus\p@ \@minus\p@ \itemsep \parsep }% \belowdisplayskip \abovedisplayskip }% % \end{macrocode} % % \begin{macrocode} \def\scriptsize{% \@setfontsize\scriptsize\@viiipt{9.5}% }% \def\tiny{% \@setfontsize\tiny\@vipt\@viipt }% \def\large{% \@setfontsize\large\@xiipt{14}% }% \def\Large{% \@setfontsize\Large\@xivpt{18}% }% \def\LARGE{% \@setfontsize\LARGE\@xviipt{22}% }% \def\huge{% \@setfontsize\huge\@xxpt{25pt}% }% \def\Huge{% \@setfontsize\Huge\@xxvpt{30pt}% }% % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \section{The \classoption{12pt} class option: the \texttt{12pt} module} % \changes{v4.0beta 2}{1999/06/20} % {AO: all code for \protect\classoption{12pt} is in this module.} % The file \file{12pt.rtx} is read in by the \classname{revtex4} document class % if \cmd\@pointsize\ has the value 12. % % \begin{macrocode} %<*12pt> % \end{macrocode} % % \begin{macrocode} \def\normalsize{% \@setfontsize\normalsize\@xiipt{14pt}% \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \z@ plus3\p@ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ \let\@listi\@listI }% % \end{macrocode} % % \begin{macrocode} \def\small{% \@setfontsize\small\@xipt{14.5pt}% \abovedisplayskip 8\p@ \@plus3\p@ \@minus6\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ \def\@listi{% \leftmargin\leftmargini \topsep 9\p@ \@plus3\p@ \@minus5\p@ \parsep 4.5\p@ \@plus2\p@ \@minus\p@ \itemsep \parsep }% }% % \end{macrocode} % % Same baselineskip as \cmd\small\ ? % \begin{macrocode} \def\footnotesize{% \@setfontsize\footnotesize\@xpt{14.5pt}% \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \z@ \@plus3\p@ \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ \def\@listi{% \leftmargin\leftmargini \topsep 6\p@ \@plus2\p@ \@minus2\p@ \parsep 3\p@ \@plus2\p@ \@minus\p@ \itemsep \parsep }% }% % \end{macrocode} % % \begin{macrocode} \def\scriptsize{% \@setfontsize\scriptsize\@viiipt{9.5pt}% }% \def\tiny{% \@setfontsize\tiny\@vipt{7pt}% }% \def\large{% \@setfontsize\large\@xivpt{18pt}% }% \def\Large{% \@setfontsize\Large\@xviipt{22pt}% }% \def\LARGE{% \@setfontsize\LARGE\@xxpt{25pt}% }% \def\huge{% \@setfontsize\huge\@xxvpt{30pt}% }% \let\Huge=\huge % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \section{Page parameters}% % This code is common to both \classoption{11pt} and \classoption{12pt}. % % \begin{macrocode} %<*11pt|12pt> % \end{macrocode} % % \begin{macrocode} %\appdef\class@documenthook{% \@ifxundefined\twoside@sw{\@booleanfalse\twoside@sw}{}% \twoside@sw{% \oddsidemargin 0pt \evensidemargin 0pt \marginparwidth 60pt }{% \oddsidemargin 0pt \evensidemargin 0pt \marginparwidth 44pt }% %}% % \end{macrocode} % % \begin{macrocode} \marginparsep 10pt % \end{macrocode} % % \begin{macrocode} \topmargin -37pt % \end{macrocode} % % \begin{macrocode} \headheight 12pt \headsep 25pt % \end{macrocode} % % \begin{macrocode} \topskip 10pt % \end{macrocode} % % \begin{macrocode} \footskip 30pt % \end{macrocode} % % \begin{macrocode} %\appdef\set@pica@hook{% \@ifxundefined\tightenlines@sw{\@booleanfalse\tightenlines@sw}{}% \textheight=665.5\p@ \tightenlines@sw{% \def\baselinestretch{1}% }{% \def\baselinestretch{1.5}% }% %}% % \end{macrocode} % % \begin{macrocode} \textwidth 468pt % \end{macrocode} % % \begin{macrocode} \columnsep 10pt \columnseprule 0pt % \end{macrocode} % % \begin{macrocode} \footnotesep 1pt \skip\footins 25.25pt plus 4pt minus 2pt \def\footnoterule{\kern-5.25pt\hrule width.5in\kern4.85pt\relax} % \end{macrocode} % % \begin{macrocode} \floatsep 14pt plus 2pt minus 4pt \textfloatsep 20pt plus 2pt minus 4pt \intextsep 14pt plus 4pt minus 4pt % \end{macrocode} % % \begin{macrocode} \dblfloatsep 14pt plus 2pt minus 4pt \dbltextfloatsep 20pt plus 2pt minus 4pt % \end{macrocode} % % \begin{macrocode} \@fptop 0pt plus 1fil \@fpsep 10pt plus 2fil \@fpbot 0pt plus 1fil \@dblfptop 0pt plus 1fil \@dblfpsep 10pt plus 2fil% \@dblfpbot 0pt plus 1fil % \end{macrocode} % % \begin{macrocode} \marginparpush 7pt % \end{macrocode} % % \begin{macrocode} \parskip 0pt plus 1pt \parindent 15pt \emergencystretch8\p@ \partopsep 3pt plus 2pt minus 2pt % \end{macrocode} % % \begin{macrocode} \leftmargini 30pt \leftmarginii 26pt \leftmarginiii 22pt \leftmarginiv 20pt \leftmarginv 12pt \leftmarginvi 12pt % \end{macrocode} % % \begin{macrocode} \def\@listI{\leftmargin\leftmargini \parsep 5\p@ plus2.5\p@ minus\p@ \topsep 10\p@ plus4\p@ minus6\p@ \itemsep 5\p@ plus2.5\p@ minus\p@ }% % \end{macrocode} % % \begin{macrocode} \labelsep 6pt % \end{macrocode} % % \begin{macrocode} \def\@listii{\leftmargin\leftmarginii \labelwidth\leftmarginii\advance\labelwidth-\labelsep \topsep 5\p@ plus2.5\p@ minus\p@ \parsep 2.5\p@ plus\p@ minus\p@ \itemsep \parsep }% % \end{macrocode} % % \begin{macrocode} \def\@listiii{\leftmargin\leftmarginiii \labelwidth\leftmarginiii\advance\labelwidth-\labelsep \topsep 2.5\p@ plus\p@ minus\p@ \parsep \z@ \partopsep \p@ plus\z@ minus\p@ \itemsep \topsep }% % \end{macrocode} % % \begin{macrocode} \def\@listiv{\leftmargin\leftmarginiv \labelwidth\leftmarginiv\advance\labelwidth-\labelsep }% % \end{macrocode} % % \begin{macrocode} \def\@listv{\leftmargin\leftmarginv \labelwidth\leftmarginv\advance\labelwidth-\labelsep }% % \end{macrocode} % % \begin{macrocode} \def\@listvi{\leftmargin\leftmarginvi \labelwidth\leftmarginvi\advance\labelwidth-\labelsep }% % \end{macrocode} % % \begin{macrocode} % % \end{macrocode} % % \section{The \classoption{aps} class option: the \texttt{aps} module} % \changes{v4.0beta 2}{1999/06/20} % {AO: made aps.rtx part of revtex4.dtx} % The file \file{aps.rtx} is read in by the \classname{revtex4} document class % if \cmd\@society\ has the value \classoption{aps}. % % Here, code specific to APS journals is separated out from the \revtex\ document class. % (Other societies can customize \revtex\ by supplying their own \file{.rtx} file.) % % We first give some text entities (amounting to journal abbreviations), % then some APS-specific initialisations, % then code for particular APS journals. % In the latter case, the choice is % keyed off the macro \cmd\@journal. % % Note on \cmd\AtEndOfClass: % this file, like all journal substyles, is read in at \cmd\AtEndOfClass\ time, % so you should not use this command in this file. % Mote for \LaTeX\ developers: It would be an improvement in \LaTeX\ to % \cmd\let\cmd\AtEndOfClass\ to something like \cmd\@firstofone. % This change would be effected in \cmd\@onefilewithoptions. % % \begin{macrocode} %<*aps> % \end{macrocode} % % \subsection{Defend Against Forseeable Errors}% % Protect this file from being read in by anything but \revtex. % \begin{macrocode} \ifx\undefined\substyle@ext \def\@tempa{% \endinput \GenericWarning{I must be read in by REVTeX! (Bailing out)}% }% \expandafter\else \def\@tempa{}% \expandafter\fi\@tempa % \end{macrocode} % % \subsection{Abbreviations}% % The following macros constitute typing shortcuts for % certain journal names. % \begin{macrocode} \def\ao{Appl.\ Opt.\ } \def\ap{Appl.\ Phys.\ } \def\apl{Appl.\ Phys.\ Lett.\ } \def\apj{Astrophys.\ J.\ } \def\bell{Bell Syst.\ Tech.\ J.\ } \def\jqe{IEEE J.\ Quantum Electron.\ } \def\assp{IEEE Trans.\ Acoust.\ Speech Signal Process.\ } \def\aprop{IEEE Trans.\ Antennas Propag.\ } \def\mtt{IEEE Trans.\ Microwave Theory Tech.\ } \def\iovs{Invest.\ Ophthalmol.\ Vis.\ Sci.\ } \def\jcp{J.\ Chem.\ Phys.\ } \def\jmo{J.\ Mod.\ Opt.\ } \def\josa{J.\ Opt.\ Soc.\ Am.\ } \def\josaa{J.\ Opt.\ Soc.\ Am.\ A } \def\josab{J.\ Opt.\ Soc.\ Am.\ B } \def\jpp{J.\ Phys.\ (Paris) } \def\nat{Nature (London) } \def\oc{Opt.\ Commun.\ } \def\ol{Opt.\ Lett.\ } \def\pl{Phys.\ Lett.\ } \def\pra{Phys.\ Rev.\ A } \def\prb{Phys.\ Rev.\ B } \def\prc{Phys.\ Rev.\ C } \def\prd{Phys.\ Rev.\ D } \def\pre{Phys.\ Rev.\ E } \def\prl{Phys.\ Rev.\ Lett.\ } \def\rmp{Rev.\ Mod.\ Phys.\ } \def\pspie{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.\ } \def\sjqe{Sov.\ J.\ Quantum Electron.\ } \def\vr{Vision Res.\ } % \end{macrocode} % % \subsection{APS Setup}% % Here we define the default procedures for APS journals. % Individual APS journals may override these definitions. % % \subsubsection{Title block}% % % The specifics of the title block. % Apply to all APS journals; individual journals may override these settings. % % \begin{macro}{\@fnsymbol} % The \LaTeX\ kernel definition of \cmd\@fnsymbol\ is overridden. % \begin{macrocode} \def\@fnsymbol#1{% \ensuremath{% \ifcase#1\or *\or \dagger \or \ddagger \or \mathsection \or \mathparagraph\or **\or \dagger\dagger \or \ddagger\ddagger \or \mathsection \mathsection \or \mathparagraph\mathparagraph\or *{*}*\ignorespaces \or \dagger\dagger\dagger \or \ddagger\ddagger\ddagger\or \mathsection \mathsection \mathsection \or \mathparagraph\mathparagraph\mathparagraph\or \else \@ctrerr \fi }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\titlepage} % \begin{macrocode} \renewenvironment{titlepage}{% \let\wastwocol@sw\twocolumn@sw \onecolumngrid \newpage \thispagestyle{titlepage}% \c@page\z@% article sets this to one not zero??? }{% \wastwocol@sw{\twocolumngrid}{\newpage}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@abstractheading} % APS Journals all set the abstract head the same way, with no head. % However, if the user has specified the \classoption{preprint} class option, % then the abstract will have a head. % \begin{macrocode} \def\frontmatter@abstractheading{% \preprintsty@sw{% \begingroup \centering\large \abstractname \par \endgroup }{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@abstractwidth} % All APS journals set the abstract to the same width. % \begin{macrocode} \def\frontmatter@abstractwidth{400\p@}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@abstractfont} % All APS journals set the abstract body the same way. % \changes{v4.0beta 3}{1999/11/13} % {Bug 123: add parskip to the abstract.} % \begin{macrocode} \def\frontmatter@abstractfont{% \small \parindent1em\relax \adjust@abstractwidth }% \def\adjust@abstractwidth{% \dimen@\textwidth\advance\dimen@-\frontmatter@abstractwidth \divide\dimen@\tw@ \galley@sw{% \advance\rightskip\tw@\dimen@ }{% \advance\leftskip\dimen@ \advance\rightskip\dimen@ }% }% % \end{macrocode} % \end{macro} % % All APS journal preprints use separate titlepage and full-width abstract. % % Note that we defer polling the \cmd\preprintsty@sw\ Boolean until % \cmd\AtBeginDocument\ time, because the document preamble % may legitimately change the state of that variable. % \begin{macrocode} \appdef\class@documenthook{% \preprintsty@sw{% \@ifxundefined\titlepage@sw{\@booleantrue\titlepage@sw}{}% % \tightenlines@sw{% % \def\baselinestretch{1}% % }{% % \def\baselinestretch{1.5}% % }% \def\frontmatter@abstractwidth{\textwidth}% \def\frontmatter@affiliationfont{\it}% \let\section\section@preprintsty % \let\@hangfrom@section\@hangfrom@section@preprintsty \let\subsection\subsection@preprintsty \let\subsubsection\subsubsection@preprintsty }{}% }% % \end{macrocode} % % \begin{macro}{\frontmatter@authorformat} % All APS journals set the author list the same. % The leading is 11.5 points, and % there is 11.5 points of extra space above the first author line % (which amounts to the same thing as 11.5 points extra below the title) % for a total of 23 points base-to-base. % % \begin{macrocode} \def\frontmatter@authorformat{% \skip@\@flushglue \@flushglue\z@ plus.3\hsize\relax \centering \advance\baselineskip\p@ \parskip11.5\p@\relax \@flushglue\skip@ %\preprintsty@sw{}{% % \addvspace{0\p@}% %}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@above@affilgroup} % The default amount of space above affiliation. % APS Journals have 24 points b-b above an affiliation group. % \begin{macrocode} \def\frontmatter@above@affilgroup{% %\preprintsty@sw{}{% % \addvspace{11\p@}% %}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@above@affiliation} % \begin{macro}{\frontmatter@above@affiliation@script} % The default amount of space above affiliation. % APS Journals have no extra space between author group down to common affiliation. % \begin{macrocode} \def\frontmatter@above@affiliation@script{% \skip@\@flushglue \@flushglue\z@ plus.3\hsize\relax \centering \@flushglue\skip@ \addvspace{3.5\p@}% }% \def\frontmatter@above@affiliation{% \preprintsty@sw{}{% % \addvspace{12\p@}% }% }% % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\frontmatter@affiliationfont} % All APS journals set the affiliation the same. % \begin{macrocode} \def\frontmatter@affiliationfont{% \small\it }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@collaboration@above} % PRL: 1.5 points extra: 13 points base-to-base above. % \begin{macrocode} \def\frontmatter@collaboration@above{% \preprintsty@sw{% }{% \parskip1.5\p@\relax }% }% % \end{macrocode} % \end{macro} % % Set up the default APS style for title block authors and affiliations. % \begin{macrocode} \@ifxundefined\groupauthors@sw{% \clo@groupedaddress }{}% % \end{macrocode} % % \begin{macro}{\frontmatter@setup} % All APS journals set the title page using the same font and size. % However, justification varies for the title block elements, so % we assert none here. % \begin{macrocode} \def\frontmatter@setup{% \normalfont }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@title@above} % \begin{macro}{\frontmatter@title@format} % \begin{macro}{\frontmatter@title@below} % All APS journals set the article title the same. % % Note: Spacing from title to author is 23 points base-to-base. % \begin{macrocode} \def\frontmatter@title@above{\addvspace{6\p@}}% \def\frontmatter@title@format{\large\bfseries\centering\parskip\z@skip}% \def\frontmatter@title@below{}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\frontmatter@makefnmark} % All APS journals share this procedure for setting the titlepage footnote text. % \begin{macrocode} \def\@author@parskip{3\p@}% \def\frontmatter@makefnmark{% \@textsuperscript{% \normalfont\@thefnmark }% }% \def\frontmatter@authorbelow{% \addvspace{3\p@}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@RRAP@format} % All APS journals use the same format for the ``Received, Revised, etc.'' block on the title page. % % Change note: 11.5 points b-b from author/affiliation down to date. % \begin{macrocode} \def\frontmatter@RRAP@format{% \small \centering % \preprintsty@sw{}{\parskip.5ex\relax}% \everypar{\hbox\bgroup(\@gobble@leavemode@uppercase}% \def\par{\@ifvmode{}{\unskip)\egroup\@@par}}% }% \def\punct@RRAP{;\egroup\ \hbox\bgroup}% \def\@gobble@leavemode@uppercase#1#2{\expandafter\MakeTextUppercase}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@PACS@format} % % \begin{macrocode} \def\frontmatter@PACS@format{% \addvspace{11\p@}% \footnotesize \adjust@abstractwidth \parindent\z@ \parskip\z@skip \samepage }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@keys@format} % % \begin{macrocode} \def\frontmatter@keys@format{% \footnotesize \adjust@abstractwidth \parindent\z@ \samepage }% % \end{macrocode} % \end{macro} % % \begin{macro}{\ps@titlepage} % \changes{v4.g}{1998/06/10} % {multiple preprint commands} % \changes{v4.0beta 2}{1999/06/20} % {Stack \cs{preprint} args flush right at right margin.} % Title page style. Currently empty except for preprint header, % which consists of all the \cmd\preprint\ arguments, % stacked flush right at the right margin. % \changes{v4.0beta 3}{1999/11/13} % {Insert procedure \cs{checkindate}} % \begin{macrocode} \def\ps@titlepage{% \def\@oddhead{% \hfill \produce@preprints\@preprint }% \let\@evenhead\@oddhead \def\@oddfoot{% \hb@xt@\z@{\byrevtex\hss}% \hfil \preprintsty@sw{\thepage}{}% \quad\checkindate \hfil }% \let\@evenfoot\@oddfoot }% \def\byrevtex{\byrevtex@sw{Typeset by REV\TeX}{}}% % \end{macrocode} % \end{macro} % % \begin{macro}{\produce@preprints} % \changes{v4.0beta 3}{1999/11/13} % {Bug 115. If three or more preprints specified, set on single line, with commas.} % \begin{macrocode} \def\produce@preprints#1{% \preprint@sw{% \vtop to \z@{% \def\baselinestretch{1}% \small \let\preprint\preprint@count \count@\z@#1\@ifnum{\count@>\tw@}{% \hbox{% \let\preprint\preprint@hlist #1\setbox\z@\lastbox }% }{% \let\preprint\preprint@cr \halign{\hfil##\cr#1\crcr}% \par \vss }% }% }{}% }% \def\preprint@cr#1{#1\cr}% \def\preprint@count#1{\advance\count@\@ne}% \def\preprint@hlist#1{#1\hbox{, }}% % \end{macrocode} % \end{macro} % % \subsubsection{Stacked Heads}% % All APS journals put a period (.), followed by quad space, after the section number. % Also, no hanging section number. % \begin{macrocode} \def\@seccntformat#1{\csname the#1\endcsname.\quad}% \def\@hang@from#1#2#3{#1#2#3}% % \end{macrocode} % % Note that in the following, we wish to set the section head uppercase, so we use % David Carlisle's \cmd\MakeTextUppercase. However, because this procedure effectively % parses its argument (looking for things to \emph{not} translate), it has to be invoked % in such a way that the argument of the \cmd\section\ command is passed to it as its % own argument. % % To accomplish this, we use the \cmd\@hangfrom@\ hook, which was developed for this % purpose. % % \begin{macrocode} \def\section{% \@startsection {section}% {1}% {\z@}% {0.8cm \@plus1ex \@minus .2ex}% {0.5cm}% {% \normalfont\small\bfseries \centering }% }% \def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}% % \end{macrocode} % % \begin{macrocode} \def\subsection{% \@startsection {subsection}% {2}% {\z@}% {.8cm \@plus1ex \@minus .2ex}% {.5cm}% {% \normalfont\small\bfseries \centering }% }% % \end{macrocode} % % \begin{macrocode} \def\subsubsection{% \@startsection {subsubsection}% {3}% {\z@}% {.8cm \@plus1ex \@minus .2ex}% {.5cm}% {% \normalfont\small\itshape \centering }% }% % \end{macrocode} % % \subsubsection{Runin Heads}% % \begin{macrocode} \def\paragraph{% \@startsection {paragraph}% {4}% {\parindent}% {\z@}% {-1em}% {\normalfont\normalsize\itshape}% }% % \end{macrocode} % % \begin{macrocode} \def\subparagraph{% \@startsection {subparagraph}% {5}% {\parindent}% {3.25ex \@plus1ex \@minus .2ex}% {-1em}% {\normalfont\normalsize\bfseries}% }% % \end{macrocode} % % % % \begin{macro}{\section@preprintsty} % \begin{macro}{\subsection@preprintsty} % \begin{macro}{\subsubsection@preprintsty} % Here are the formatting procedures specific to the preprint style; % the only difference is that the heads are flush left instead of centered. % % \begin{macrocode} \def\section@preprintsty{% \@startsection {section}% {1}% {\z@}% {0.8cm \@plus1ex \@minus .2ex}% {0.5cm}% {% \normalfont\small\bfseries % \centering }% }% %\def\@hangfrom@section@preprintsty#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}% % \end{macrocode} % \begin{macrocode} \def\subsection@preprintsty{% \@startsection {subsection}% {2}% {\z@}% {.8cm \@plus1ex \@minus .2ex}% {.5cm}% {% \normalfont\small\bfseries % \centering }% }% % \end{macrocode} % \begin{macrocode} \def\subsubsection@preprintsty{% \@startsection {subsubsection}% {3}% {\z@}% {.8cm \@plus1ex \@minus .2ex}% {.5cm}% {% \normalfont\small\itshape % \centering }% }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % Effectively invoke the \classoption{bibnote} class option, % if \cmd\frontmatter@footnote@produce\ has not yet been set. % \begin{macrocode} \@ifxundefined\frontmatter@footnote@produce{% \let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote }{}% % \end{macrocode} % % % \subsubsection{Table of Contents}% % The toc will itself make an entry in the toc, % but we temporarily turn off toc formatting for the duration. % \begin{macrocode} \def\@pnumwidth{1.55em} \def\@tocrmarg {2.55em} \def\@dotsep{4.5pt} \setcounter{tocdepth}{3} % \end{macrocode} % % \begin{macrocode} \def\tableofcontents{% \addtocontents{toc}{\string\tocdepth@munge}% \print@toc{toc}% \addtocontents{toc}{\string\tocdepth@restore}% }% % \end{macrocode} % % \begin{macrocode} \def\tocdepth@munge{% \let\l@section@saved\l@section \let\l@section\@gobble@tw@ }% \def\@gobble@tw@#1#2{}% % \end{macrocode} % % \begin{macrocode} \def\tocdepth@restore{% \let\l@section\l@section@saved }% % \end{macrocode} % % \begin{macrocode} \def\l@part#1#2{\addpenalty{\@secpenalty}% \begingroup \set@tocdim@pagenum{#2}% % \@tempdima 3em % \parindent \z@ \rightskip\tocleft@pagenum plus 1fil\relax \skip@\parfillskip\parfillskip\z@ \addvspace{2.25em plus\p@}% \large \bf % \leavevmode\ignorespaces#1\unskip\nobreak\hskip\skip@ \hb@xt@\rightskip{\hfil\unhbox\z@}\hskip-\rightskip\hskip\z@skip \par \nobreak % \endgroup }% % \end{macrocode} % % \begin{macro}{\l@section} % Determine which TOC elements are automatically indented. % \begin{macrocode} \def\tocleft@{\z@}% \def\tocdim@min{5\p@}% \def\l@section{% \l@@sections{}{section}% Implicit #3#4 }% \def\l@f@section{% \addpenalty{\@secpenalty}% \addvspace{1.0em plus\p@}% \bf }% \def\l@subsection{% \l@@sections{section}{subsection}% Implicit #3#4 }% \def\l@subsubsection{% \l@@sections{subsection}{subsubsection}% Implicit #3#4 }% \def\l@paragraph#1#2{}% \def\l@subparagraph#1#2{}% % \end{macrocode} % \end{macro} % % Activate the auto TOC processing. % \begin{macrocode} \let\toc@pre\toc@pre@auto \let\toc@post\toc@post@auto % \end{macrocode} % % \begin{macrocode} \def\listoffigures{\print@toc{lof}}% \def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} % \end{macrocode} % % \begin{macrocode} \def\listoftables{\print@toc{lot}}% \let\l@table\l@figure % \end{macrocode} % % \subsubsection{Default column bottom}% % All APS journal styles have flush bottoms. % % Note that we defer polling the \cmd\raggedcolumn@sw\ Boolean until % \cmd\AtBeginDocument\ time, because the document preamble % may legitimately change the state of that variable. % \begin{macrocode} \appdef\class@documenthook{% \@ifxundefined\raggedcolumn@sw{\@booleantrue\raggedcolumn@sw}{}% \raggedcolumn@sw{\raggedbottom}{\flushbottom}% }% % \end{macrocode} % % % \subsubsection{Table alignment style}% % % \begin{macro}{\tableft@skip@float} % \begin{macro}{\tabmid@skip@float} % \begin{macro}{\tabright@skip@float} % \begin{macro}{\array@row@pre@float} % \begin{macro}{\array@row@pst@float} % All APS publications have the same table specification: % Scotch rules above and below, centered in column. % \begin{macrocode} \def\tableft@skip@float{\z@ plus\hsize}% \def\tabmid@skip@float{\@flushglue}% \def\tabright@skip@float{\z@ plus\hsize}% \def\array@row@pre@float{\hline\hline\noalign{\vskip\doublerulesep}}% \def\array@row@pst@float{\noalign{\vskip\doublerulesep}\hline\hline}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % % \subsubsection{Footnote formatting}% % We customize the formatting of footnotes for all APS journals. % \begin{macro}{\@makefntext} % \begin{macrocode} \def\@makefntext#1{% \def\baselinestretch{1}% \reset@font \footnotesize \leftskip1em \parindent1em \noindent\nobreak\hskip-\leftskip \hb@xt@\leftskip{% \Hy@raisedlink{\hyper@anchorstart{footnote@\the\c@footnote}\hyper@anchorend}% \hss\@makefnmark\ }% #1% \par }% % \end{macrocode} % \end{macro} % % % \subsubsection{Appendix}% % \begin{macro}{\appendix} % \begin{macro}{\@hangfrom@appendix} % \begin{macro}{\@hangfroms@appendix} % \begin{macro}{\@appendixcntformat} % \changes{v4.0beta 3}{1999/11/13} % {Bug 129: section* within appendix was producing appendixname} % \begin{macrocode} \prepdef\appendix{% \par \let\@hangfrom@section\@hangfrom@appendix \let\@hangfroms@section\@hangfroms@appendix \let\@sectioncntformat\@appendixcntformat }% \def\@hangfrom@appendix#1#2#3{% #1% \@if@empty{#2}{% #3% }{% #2\@if@empty{#3}{}{:\ #3}% }% }% \def\@hangfroms@appendix#1#2{% #1#2% }% \def\@appendixcntformat#1{\appendixname\ \csname the#1\endcsname}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \subsubsection{Bibliography}% % % Customize \revtex\ for the journal substyle; % this task requires three components: % the \BibTeX\ \file{apsrev.bst} style file, % customizing code for \file{natbib}, and % customizations of the \env{thebibliography} environment. % % \begin{macro}{\@bibstyle} % Define the argument of the \cmd\bibliographystyle\ command % (if the document does not do so). % The user must have installed a \file{.bst} file of the corresponding name. % This file will then be used by \BibTeX\ when compiling the document's \file{.bbl} file. % % The default bibliography style for the APS journal substyles, \file{apsrev.bst}, % was originally called \file{revtex.bst}, but % that name is much too generic and should be given to a \file{.bst} file that % that applies generally to any \revtex\ jounal substyle, an impossibility. % % To generate \file{apsrev.bst}, use \classname{custom-bib} version 4.0b2 or later. % Run the \file{.bst} generator, \file{makebst.tex}, and % accept all defaults, with the following exceptions: % % \begin{enumerate} % \item % ORDERING OF REFERENCES: c: seq-no (references in order of Citation); % \item % AUTHOR NAMES: i: nm-init,ed-au (Initials + surname); % \item % NUMBER OF AUTHORS: l: max 12, min 12 (there will be three prompts total); % \item % TYPEFACE FOR AUTHORS IN LIST OF REFERENCES: u: nmft,nmft-def (User defined author font); % \item % FONT FOR FIRST NAMES: u: fnm-def (First names in user defined font); % \item % EDITOR NAMES IN INCOLLECTION ETC: a: nmfted (Editors incollection like authors); % \item % DATE FORMAT: p: yr-par (Date in parentheses); % \item % SUPPRESS MONTH: x: xmth (Date is year only); % \item % TITLE OF ARTICLE: i: tit-it (Title italic) % \item % ARTICLE TITLE PRESENT: x: jtit-x (No article title); % \item % JOURNAL NAME FONT: r: jttl-rm (Journal title normal); % \item % TECHNICAL REPORT TITLE: b: trtit-b (Tech. report title like books); % \item % JOURNAL VOLUME: b: vol-bf (Volume bold); % \item % VOLUME PUNCTUATION: c: volp-com (Volume with comma); % \item % PAGE NUMBERS: f: jpg-1 (Only start page number); % \item % JOURNAL NAME PUNCTUATION: x: jnm-x (Space after journal); % \item % PUBLISHER IN PARENTHESES: d: pub-date (Publisher and date in parentheses); % \item % PUBLISHER POSITION: p: pre-pub (Publisher before chapter, pages); % \item % ISBN NUMBER: isbn: (Include ISBN for books, booklets) % \item % ISSN NUMBER: issn: (Include ISSN for periodicals) % \item % EDITOR IN COLLECTIONS: b: edby (Booktitle, edited by \dots); % \item % PUNCTUATION BETWEEN SECTIONS (BLOCKS): c: blk-com (Comma between blocks); % \item % ABBREVIATE WORD `PAGES': a: pp (`Page' abbreviated); % \item % ABBREVIATE WORD `EDITORS': a: ed (`Editor' abbreviated); % \item % OTHER ABBREVIATIONS: a: abr (Abbreviations); % \item % ABBREVIATION FOR `EDITION': a: ednx (`Edition' abbreviated as `ed'); % \item % EDITION NUMBERS: n: ord (Numerical editions); % \item % STORED JOURNAL NAMES: a: jabr (Abbreviated journal names); % \item % FONT OF `ET AL': i: etal-it (Italic et al); % \item % ADDITIONAL REVTeX DATA FIELDS: r: revdata, eprint, url, url-blk (Include REVTeX data fields collaboration, eid, eprint, numpages, url) % \item % NEW FONT SELECTION SCHEME: n: nfss (NFSS); % \item % ADDITIONAL REVTeX DATA FIELDS: y: revdata (additional data fields); % \item % REFERENCE COMPONENT TAGS: y: reference component tags; % \item % URL ADDRESS: n: URL as note; % \end{enumerate} % % A file \file{apsrev.dbj} file equivalent to the following should result: % \begin{verbatim} % \input docstrip % \preamble % ---------------------------------------- % *** REVTeX-compatible apsrev.bst *** % \endpreamble % \postamble % End of customized bst file % \endpostamble % \keepsilent % \askforoverwritefalse % \def\MBopts{\from{merlin.mbs}{% % seq-no%: Citation order (unsorted, like unsrt.bst) % ,nm-init,ed-au%: Initials + surname (J. F. Smith) % ,nmlm%: Limited authors (et al replaces missing names) % ,x10%: Maximum of 10 authors % ,m10%: Minimum of 10 authors % ,nmft,nmft-def%: User defined author font (\bibnamefont) % ,fnm-def%: First names in user defined font (\bibfnamefont) % ,nmfted%: Editors incollection like authors font % ,yr-par%: Date in parentheses as (May 1993) % ,xmth%: Date is year only % ,tit-it%: Title italic (\em) % ,jtit-x%: No article title % ,jttl-rm%: Journal name normal font % ,trtit-b%: Tech. report title like books % ,vol-bf%: Volume bold as {\bf vol}(num) % ,volp-com%: Volume with comma as vol(num), ppp % ,jpg-1%: Only start page number % ,jnm-x%: Space after journal name % ,pub-date%: Publisher and date in parentheses (Oxford, 1994) % ,pre-pub%: Publisher before chapter, pages % ,isbn%: Include ISBN for books, booklets, etc. % ,issn%: Include ISSN for periodicals % ,edby%: In booktitle, edited by .. (where .. is names) % ,blk-com%: Comma between blocks % ,pp%: `Page' abbreviated as p. or pp. % ,ed%: `Editor' abbreviated as ed. or eds. % ,abr%: Abbreviations of such words % ,ednx%: `Edition' abbreviated as `ed' % ,ord%: Numerical editions as 1st, 2nd, 3rd, etc % ,jabr%: Abbreviated journal names % ,etal-it%: Italic et al % ,revdata,eprint,url,url-blk%: Include REVTeX data fields collaboration, eid, eprint, numpages, url % ,url,url-nt%: URL as note % ,bibinfo%: Reference component tags like \bibinfo in the content of \bibitem % ,nfss%: NFSS use \textbf, \emph, not \bf, \em % }} % \generate{\file{\jobname.bst}{\MBopts}} % \endbatchfile % \end{verbatim} % % To get a banner in the \file{.blg} file, patch by hand into \file{apsrev.bst}: % \begin{verbatim} % FUNCTION {banner.log} {"REVTeX-compatible apsrev.bst 9812" warning$} % \end{verbatim} % and invoke \texttt{banner.log} from within \texttt{begin.bib} % % We ensure that the journal substyle has the first word % in the matter by installing the (default) APS code % later on (see Section~\ref{sec:aps-defaults}). % \end{macro} % % \begin{macro}{\bibpunct} % The following commands effectively establish the style in which \cmd\cite\ commands are % formatted. % You can think of them as the second needed component for the bibliography. % % Set up for numerical citations. % % The journal substyles can override these choices. % % Note that setting \cmd\NAT@sort\ at this late hour is not totally effective. % You have to give \classname{natbib} the relevant options at load time. % \begin{macrocode} \bibpunct{[}{]}{,}{n}{}{,}% % \end{macrocode} % \end{macro} % % \begin{macro}{\bibsection} % We define the sectioning command to use when starting the bibliography. % % \changes{v4.0rc1}{2001/06/18} % {grid changes with push and pop} % \begin{macrocode} \def\bibsection{% \par % \twocolumn@sw{\onecolumngrid}{}% \onecolumngrid@push \begingroup \baselineskip26\p@ % \def\@currentHref{section.bib}% \bib@device{\textwidth}{245.5\p@}% \endgroup \nobreak\@nobreaktrue \addvspace{19\p@}% \par % \twocolumn@sw{\twocolumngrid}{}% \onecolumngrid@pop }% % \end{macrocode} % \end{macro} % % \begin{macro}{\bib@device} % \begin{macro}{\bibpreamble} % \begin{macro}{\bibsep} % \begin{macro}{\newblock} % We define the sectioning command to use when starting the bibliography. % \begin{macrocode} \def\bib@device#1#2{% \hb@xt@#1{% \hfil \phantomsection \addcontentsline {toc}{section}{\protect\numberline{}\refname}% % \hyper@anchorstart {\@currentHref }% \hb@xt@#2{% \skip@\z@\@plus-1fil\relax \leaders\hrule height.25 \p@ depth.25 \p@ \hskip\z@\@plus1fil \hskip\skip@ \hskip\z@\@plus0.125fil\leaders\hrule height.375\p@ depth.375\p@ \hskip\z@\@plus0.75fil \hskip\z@\@plus0.125fil \hskip\skip@ \hskip\z@\@plus0.25 fil\leaders\hrule height.5 \p@ depth.5 \p@ \hskip\z@\@plus0.5 fil \hskip\z@\@plus0.25 fil \hskip\skip@ \hskip\z@\@plus0.375fil\leaders\hrule height.625\p@ depth.625\p@ \hskip\z@\@plus0.25fil \hskip\z@\@plus0.375fil % \hskip\skip@ % \hfil }% %\hyper@anchorend \hfil }% }% \let\bibpreamble\@empty \bibsep\z@\relax \def\newblock{\ }% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\bibfont} % We define the font switch that applies to the body of the bibliography. % % \begin{macrocode} \def\bibfont{% \small }% % \end{macrocode} % \end{macro} % % % \subsubsection{Index}% % FIXME: the following call to \cmd\twocolumn\ appears wrong if we were in two-column grid. % \changes{v4.0beta 3}{1999/11/13} % {grid changes with ltxgrid} % \changes{v4.0rc1}{2001/06/18} % {grid changes with push and pop} % \begin{macrocode} \newenvironment{theindex}{% %\let\wastwocol@sw\twocolumn@sw \columnseprule \z@ \columnsep 35\p@ \c@secnumdepth-\maxdimen \onecolumngrid@push \section{\indexname}% \thispagestyle{plain}% \parindent\z@ \parskip\z@ plus.3\p@\relax \let\item\@idxitem %\wastwocol@sw{\twocolumngrid}{}% \onecolumngrid@pop }{% %\onecolumngrid@pop }% % \def\@idxitem{\par\hangindent 40\p@} % \def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}} % \def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}} % \def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} % \end{macrocode} % % % \subsection{Journal-Specific Code}% % % For APS journals, we supply code specific to PRA, PRB, PRC, PRD, PRE, PRL, and RMP. % At present, they are identical, % with the exception of PRB's code for superscript citations. % % \begin{macrocode} \def\journal@pra{pra}% \def\journal@prb{prb}% \def\journal@prc{prc}% \def\journal@prd{prd}% \def\journal@pre{pre}% \def\journal@prl{prl}% \def\journal@prstab{prstab}% \def\journal@rmp{rmp}% % \end{macrocode} % % Note: the convention in this document class is that % the substyle must not override any explicit class options % declared by the document. % This means that the various Booleans of Section~\ref{sec:options} % may be assigned here only if they are still undefined at this point. % % For most all of the APS journals, the journal-dependent % code is relatively meager and is therefore embedded in this file. % However, the RMP code is sufficiently extensive that % splitting it out into a separate file is more convenient. % % \subsubsection{\classoption{pra}}% % \begin{macrocode} \@ifx{\@journal\journal@pra}{% % \end{macrocode} % % End of \classoption{pra} code. % \begin{macrocode} }{}% % \end{macrocode} % % \subsubsection{\classoption{prb}}% % \begin{macrocode} \@ifx{\@journal\journal@prb}{% % \end{macrocode} % PRB requires superscript citations. % We use Patrick Daly's \classname{natbib} package, % and hyperref and other packages are already set up to cope with this. % % \begin{macro}{\bibpunct} % By default, PRB selects the \classoption{bibnotes} option. % We also set up for numerical citations. % \begin{macrocode} \@ifxundefined\bibnotes@sw{\@booleantrue\bibnotes@sw}{}% \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}% \def\@onlinecite#1{\begingroup\let\@cite\NAT@citenum\citealp{#1}\endgroup}% % \end{macrocode} % \end{macro} % % Invoke \classoption{superbib} option if the document % has made no selection of its own. % \begin{macrocode} \appdef\class@documenthook{% \@ifxundefined\place@bibnumber{% \let\place@bibnumber\place@bibnumber@sup }{}% }% % \end{macrocode} % % End of \classoption{prb} code. % \begin{macrocode} }{}% % \end{macrocode} % % \subsubsection{\classoption{prc}}% % \begin{macrocode} \@ifx{\@journal\journal@prc}{% % \end{macrocode} % % End of \classoption{prc} code. % \begin{macrocode} }{}% % \end{macrocode} % % \subsubsection{\classoption{prd}}% % \begin{macrocode} \@ifx{\@journal\journal@prd}{% % \end{macrocode} % % End of \classoption{prd} code. % \begin{macrocode} }{}% % \end{macrocode} % % \subsubsection{\classoption{pre}}% % \begin{macrocode} \@ifx{\@journal\journal@pre}{% % \end{macrocode} % % End of \classoption{prd} code. % \begin{macrocode} }{}% % \end{macrocode} % % \subsubsection{\classoption{prl}}% % \begin{macrocode} \@ifx{\@journal\journal@prl}{% % \end{macrocode} % In PRL, the default is the \classoption{bibnotes} option, % and the Acknowledgments section has no head. % % However, the References head is a device that may be described as a lozenge centered on the baseline, % 71 points wide by 2 points thick, with the ends tapering to a half point in thickness. % Space above 26 points base to base, below 31 base to base. % \begin{macrocode} \@ifxundefined\bibnotes@sw{\@booleantrue\bibnotes@sw}{}% \@booleanfalse\acknowledgments@sw %\let\acknowledgmentsname\@empty \def\bibsection{% \par \begingroup \baselineskip26\p@ \bib@device{\hsize}{72\p@}% \endgroup \nobreak\@nobreaktrue \addvspace{19\p@}% }% % \end{macrocode} % Implement length checking. % Use the \classname{times} and \classname{mathtime} packages, % plus whatever other processing is required % to make the formatted output be true % to the metrics of the journal. % % Wait. Do not use mathtime after all. APS has their own way of doing math pi, involving % Adobe Mathematical Pi and other fonts. % \begin{macrocode} %\appdef\class@documenthook{% \@ifxundefined\lengthcheck@sw{\@booleanfalse\lengthcheck@sw}{}% \lengthcheck@sw{% \RequirePackage{times}% % \RequirePackage{mathtime}% }{% }% %}% % \end{macrocode} % A PRL does not have numbered sections. % \begin{macrocode} \c@secnumdepth=-\maxdimen % \end{macrocode} % Note: we defer this code until after type size file is read in. % \begin{macrocode} \appdef\set@typesize@hook{% \@ifnum{\@pointsize=10\relax}{% \lengthcheck@sw{% \def\large{% \@setfontsize\large{12.5}{14\p@}% }% \def\normalsize{% \@setfontsize\normalsize{10.5}\@xiipt \abovedisplayskip 6\p@ \@plus6\p@ \@minus5\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \abovedisplayskip \belowdisplayshortskip \abovedisplayskip \let\@listi\@listI }% \def\small{% \@setfontsize\small{9.5}\@xipt \abovedisplayskip 5\p@ \@plus5\p@ \@minus4\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \abovedisplayskip \belowdisplayshortskip \abovedisplayskip \let\@listi\@listI }% \DeclareMathSizes{12.5}{12.5}{9}{6}% \DeclareMathSizes{10.5}{10.5}{7.5}{5}% \DeclareMathSizes{9.5}{9.5}{7.0}{5}% }{% \def\normalsize{% \@setfontsize\normalsize\@xpt\@xiipt \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \abovedisplayskip \belowdisplayshortskip \abovedisplayskip \let\@listi\@listI }% }% }{}% }% %\appdef\set@pica@hook{% \@ifnum{\@pointsize=10\relax}{% \textheight = 694.0\p@ % \textheight = 55\baselineskip % \advance\textheight by \topskip }{}% %}% % \end{macrocode} % % End of \classoption{prl} code. % \begin{macrocode} }{}% % \end{macrocode} % % \subsubsection{\classoption{prstab}}% % \begin{macrocode} \@ifx{\@journal\journal@prstab}{% % \end{macrocode} % % End of \classoption{prstab} code. % \begin{macrocode} }{}% % \end{macrocode} % % \subsubsection{\classoption{rmp}}% % Read in the code from a file. % \begin{macrocode} \@ifx{\@journal\journal@rmp}{\input{\@journal\substyle@ext}}{}% % \end{macrocode} % % % \subsection{Establish APS Defaults}\label{sec:aps-defaults} % % \begin{macro}{\footinbib@sw} % All APS journals except RMP invoke the \classoption{footinbib} option. % We rely on the RMP-specific code to give a value to this switch. % \begin{macrocode} \@ifxundefined\footinbib@sw{\@booleantrue\footinbib@sw}{}% % \end{macrocode} % \end{macro} % % \begin{macro}{\place@bibnumber} % \begin{macro}{\@bibstyle} % We install code that will select the presentation for \cmd\bibitem s % and govern the \BibTeX\ processing. % If the user has not selected any related option and if % the journal substyle also has not, then the \classoption{aps} % option choses these defaults. % \begin{macrocode} \appdef\class@documenthook{% \@ifxundefined\place@bibnumber{% \let\place@bibnumber\place@bibnumber@inl }{}% \@ifxundefined\@bibstyle{% \def\@bibstyle{apsrev}% }{}% }% % \end{macrocode} % \end{macro} % \end{macro} % % % \begin{macrocode} % % \end{macrocode} % % % \section{The \classoption{rmp} journal substyle: the \texttt{rmp} module} % % The file \file{rmp.rtx} is read in by the \classname{revtex4} document class % if \cmd\@society\ has the value \classoption{aps} % and \cmd\@journal\ has the value \classoption{rmp}. % % It is read at the end of the \filename{aps.rtx}, so all definitions % and assignments in that file are operative unless overridden here. % % % \begin{macrocode} %<*rmp> % \end{macrocode} % % Protect this file from being read in by anything but \revtex. % \begin{macrocode} \ifx\undefined\substyle@ext \def\@tempa{% \endinput \GenericWarning{I must be read in by REVTeX! (Bailing out)}% }% \expandafter\else \def\@tempa{}% \expandafter\fi\@tempa % \end{macrocode} % % Protect this file from being read in as a society instead of a journal. % In such a case, \cmd\@journal\ will be \cmd\@empty. % \begin{macrocode} \@ifx@empty\@journal{% \class@warn{I have to read in the aps substyle first!}% \endinput \def\@society{aps}\def\@journal{rmp}% \expandafter\input\expandafter{\@society\substyle@ext}% }{}% % \end{macrocode} % % \subsection{Frontmatter}% % % \begin{macro}{\frontmatter@setup} % % \begin{macrocode} \def\frontmatter@setup{% \normalfont\sffamily\raggedright }% % \end{macrocode} % \end{macro} % % \begin{macro}{\PACS@warn} % Per Mark Doyle, RMP never displays the PACS, so they don't want the `use showpacs' warning spit out. % \begin{macrocode} \def\PACS@warn{RMP documents do not display PACS. Your \string\pacs\space will be ignored}% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@title@above} % \begin{macro}{\frontmatter@title@format} % \begin{macro}{\frontmatter@title@below} % % \begin{macrocode} \def\frontmatter@title@above{}% \def\frontmatter@title@format{\Large\bfseries\raggedright}% HelveticaNeue-Medium(Italic) 14pt. \def\frontmatter@title@below{\addvspace{12\p@}}% 24pt b-b down to first author % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\frontmatter@authorformat} % Set the rag to a milder value, because we want to do true ragged right % typesetting, as opposed to the \LaTeX\ default, which gives very poor results. % % Note: author font is 9.8bp. 19.2bp/14.3bp above/below. % \begin{macrocode} \def\frontmatter@authorformat{% \preprintsty@sw{\vskip0.5pc\relax}{}% \@tempskipa\@flushglue \@flushglue\z@ plus50\p@\relax \raggedright\advance\leftskip.5in\relax \@flushglue\@tempskipa \parskip\z@skip }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@affiliationfont} % The hook \cmd\frontmatter@affiliationfont\ controls the formatting of affiliations and affiliation groups. % The hook \cmd\frontmatter@above@affilgroup\ is invoked just before proceeding with author/affiliation processing. % The \cmd\frontmatter@above@affiliation\ is the amount of space above affiliations in the \classoption{groupedaddress} style, % and \cmd\frontmatter@above@affiliation@script\ is that for \classoption{superscriptaddress}. % % Note: affiliation font is 9.03/10.4bp, 14.3bp/19.2bp b-b above/below % \begin{macrocode} \def\frontmatter@affiliationfont{% Helvetica 9/10.2 \small\slshape\selectfont\baselineskip10.5\p@\relax \@tempskipa\@flushglue \@flushglue\z@ plus50\p@\relax \raggedright\advance\leftskip.5in\relax \@flushglue\@tempskipa }% \def\frontmatter@above@affilgroup{\addvspace{7.2\p@}}% additional leading above an author \def\frontmatter@above@affiliation{\addvspace{5.3\p@}}% \def\frontmatter@above@affiliation@script{}% % \end{macrocode} % \end{macro} % % Set up the default RMP style for title block authors and affiliations. % This command should effectively override the effect of the % corresponding command in the parent substyle. % \begin{macrocode} \@ifxundefined\groupauthors@sw{% \clo@groupedaddress }{}% % \end{macrocode} % % \begin{macro}{\frontmatter@RRAP@format} % Note: in RMP, if we are not in preprint mode, the date will not be produced. % % Note: Helvetica C/lc, 8.98bp, space above: 16.3bp b-b. % \begin{macrocode} \def\frontmatter@RRAP@format{% \addvspace{7.3\p@}% \small \raggedright\advance\leftskip.5in\relax % \parskip.5ex\relax % \everypar{\hbox\bgroup(\@gobble@leavemode@uppercase}% % \def\par{\@ifvmode{}{\unskip)\egroup\@@par}}% % \preprintsty@sw{}{\let\@date\@empty}% }% %\def\@gobble@leavemode@uppercase#1#2{\expandafter\MakeTextUppercase}% \def\produce@RRAP#1{% \@if@empty{#1}{}{% \@ifvmode{\leavevmode}{}% \unskip(\ignorespaces#1\unskip)\quad }% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@abstractheading} % Space above 21.8bp b-b. % \begin{macrocode} \def\frontmatter@abstractheading{% \preprintsty@sw{% \begingroup \centering\large \abstractname \par \endgroup \vspace{.5pc}% }{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@abstractfont} % TimesTen 8.93bp/9.6bp X 360bp, indented 36bp, with 21.9/37.6bp b-b above/below % \begin{macrocode} \def\frontmatter@abstractfont{% \footnotesize \hsize360\p@ \leftskip=0.5in \advance\hsize\leftskip %\rightskip=\leftskip \parindent\z@ %\hsize5.5in }% % \end{macrocode} % \end{macro} % % \begin{macro}{\frontmatter@preabstractspace} % \begin{macro}{\frontmatter@postabstractspace} % Space above and space below abstract in title block. % Should be 22/36 points base-to-base. % \begin{macrocode} \def\frontmatter@preabstractspace{7.7\p@}% \def\frontmatter@postabstractspace{24.6\p@}% % \end{macrocode} % \end{macro} % \end{macro} % % FIXME: Not done: PACS. % FIXME: TOC: Head is same as \section: HelveticaNeue 8.98. 32/22bp b-b above/below, % Body: TimesTen 8/10.5. % % \subsection{General Text}% % % If not in preprint mode, set the type size to 10/12 point. Note: s/b 11.6bp leading % \begin{macrocode} \appdef\set@typesize@hook{% \@ifxundefined\preprintsty@sw{}{% \preprintsty@sw{}{% \def\normalsize{% \@setsize\normalsize{12pt}\xpt\@xpt \abovedisplayskip 10\p@ plus2\p@ minus5\p@ \belowdisplayskip \abovedisplayskip \abovedisplayshortskip \abovedisplayskip \belowdisplayshortskip \abovedisplayskip \let\@listi\@listI }% }% }% }% % \end{macrocode} % % Footnote mods: % \begin{macrocode} \footnotesep 9.25pt \skip\footins 36pt plus 4pt minus 2pt \def\footnoterule{\kern-13pt\hrule width.5in\kern15.6pt\relax}% % \end{macrocode} % % % \subsection{Sectioning} % % \begin{macrocode} \def\thepart{\Roman{part}} % \def\thesection{\Roman{section}} \def\p@section{} \def\thesubsection{\Alph{subsection}} \def\p@subsection{\thesection.} \def\thesubsubsection{\arabic{subsubsection}} \def\p@subsubsection{\thesection.\thesubsection.} \def\theparagraph{\alph{paragraph}} \def\p@paragraph{\thesection.\thesubsection.\thesubsubsection.} \def\thesubparagraph{\arabic{subparagraph}} \def\p@subparagraph{\thesection.\thesubsection.\thesubsubsection.\theparagraph.} % \end{macrocode} % % In RMP, put a period (.), followed by nut space, after the section number. % Also, hang the section number (the \LaTeX\ default). % \begin{macrocode} \def\@seccntformat#1{\csname the#1\endcsname.\hskip0.5em\relax}% % \end{macrocode} % % Note that we wish to set the section head uppercase, so we use % David Carlisle's \cmd\MakeTextUppercase. However, because this procedure effectively % parses its argument (looking for things to \emph{not} translate), it has to be invoked % in such a way that the argument of the \cmd\section\ command is passed to it as its % own argument. % % To accomplish this, we use the \cmd\@hangfrom@\ hook, which was developed for this % purpose. % \begin{macrocode} \def\section{% \@startsection{section}{1}{\z@}{0.8cm plus1ex minus.2ex}{0.4cm}% {% \small\sffamily\bfseries\selectfont \raggedright \parindent\z@ }% }% \def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}% \def\subsection{% \@startsection{subsection}{2}{\z@}{0.8cm plus1ex minus.2ex}{0.4cm}% {% \small\sffamily\bfseries \raggedright \parindent\z@ }% }% \def\subsubsection{% \@startsection{subsubsection}{3}{\z@}{.8cm plus1ex minus.2ex}{0.4cm}% {% \small\sffamily\selectfont \raggedright \parindent\z@ }% }% \def\paragraph{% \@startsection{paragraph}{4}{\z@}{.8cm plus1ex minus.2ex}{-1em}% {% \small\slshape\selectfont \raggedright \parindent\z@ }% }% \def\subparagraph{% \@startsection{subparagraph}{4}{\parindent}{3.25ex plus1ex minus.2ex}{-1em}% {\normalsize\bfseries\selectfont}% }% % \setcounter{tocdepth}{4}% FIXME: has no effect % \end{macrocode} % % \begin{macro}{\appendix} % \begin{macro}{\@hangfrom@appendix} % \begin{macro}{\@hangfroms@appendix} % \begin{macro}{\@appendixcntformat} % \begin{macrocode} \appdef\appendix{% \let\@hangfrom@section\@hangfrom@appendix \let\@hangfroms@section\@hangfroms@appendix \let\@sectioncntformat\@appendixcntformat }% \def\@hangfrom@appendix#1#2#3{% #1% \@if@empty{#2}{% #3% }{% #2\@if@empty{#3}{}{:\ #3}% }% }% \def\@hangfroms@appendix#1#2{% #1\appendixname\@if@empty{#2}{}{:\ #2}% }% \def\@appendixcntformat#1{\appendixname\ \csname the#1\endcsname}% % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % % \subsection{Figure and Table Caption Formatting} % \begin{macro}{\@makecaption} % % \begin{macrocode} \setlength\belowcaptionskip{2\p@} \long\def\@makecaption#1#2{% \vskip\abovecaptionskip \vbox{% \flushing \small\rmfamily % \hsize\@capwidth \noindent #1\nobreak\hskip.5em plus.2em\ignorespaces#2\par }% \vskip\belowcaptionskip }% % \end{macrocode} % \end{macro} % % \subsection{Citations and Bibliography}% % % Customize \revtex\ for the journal substyle; % this task requires three components: % a \BibTeX\ \file{.bst} style file, % customizing code for \file{natbib}, and % customizations of the \env{thebibliography} environment. % % \begin{macro}{\@bibstyle} % Define the argument of the \cmd\bibliographystyle\ command % (if the document does not do so). % % The user must have installed a \file{.bst} file of the corresponding name. % This file will then be used by \BibTeX\ when compiling the document's \file{.bbl} file. % % To generate \file{apsrmp.bst}, use \classname{custom-bib} version 3.89d1 or later. % Run the \file{.bst} generator, \file{makebst.tex}, with the following options: % % \begin{enumerate} % \item % STYLE OF CITATIONS: a: ay( Author-year with some non-standard interface) % \item % AUTHOR-YEAR SUPPORT SYSTEM: nat: (Natbib for use with natbib v5.3 or later) % \item % ORDERING OF REFERENCES: *: (Alphabetical); % \item % ORDER ON VON PART: x: vonx (Sort without von part---de la Maire after Mahone) % \item % AUTHOR NAMES: a: nm-rev1 (Only first name reversed, initials---AGU style: Smith, J. F., H. K. Jones) % \item % POSITION OF JUNIOR: jnrlst (Junior comes last as Smith, John, Jr.) % \item % NUMBER OF AUTHORS: l: max 12, min 12 (three prompts in all); % \item % TYPEFACE FOR AUTHORS IN LIST OF REFERENCES: u: nmft, nmft-def (User defined author font---\cmd\bibnamefont) % \item % FONT FOR FIRST NAMES: u: fnm-def (First names in user defined font---\cmd\bibfnamefont) % \item % EDITOR NAMES IN INCOLLECTION ETC: a: nmfted (Editors incollection like authors font) % \item % FONT FOR `AND' IN LIST: r: nmand-rm (`And' in normal font---JONES and JAMES) % \item % FONT OF CITATION LABELS IN TEXT: u: lab, lab-def (User-defined citation font---\cmd\citenamefont) % \item % LABEL WHEN AUTHORS MISSING: keyxyr (Year blank when KEY replaces missing author---for natbib 7.0) % \item % DATE POSITION: b: dt-beg (Date after authors) % \item % SUPPRESS MONTH: xmth (Date is year only) % \item % DATE FORMAT: yr-com (Date preceded by comma as `, 1993') % \item % TRUNCATE YEAR: note-yr (Year text full as 1990--1993 or `in press') % \item % ARTICLE TITLE PRESENT: x: jtit-x (No article title); % \item % JOURNAL TITLE FONT: r: jttl-rm (Journal title normal); % \item % TECHNICAL REPORT TITLE: b: trtit-b (Tech. report title like books); % \item % JOURNAL VOLUME: b: vol-bf (Volume bold); % \item % VOLUME PUNCTUATION: c: volp-com (Volume with comma); % \item % PAGE NUMBERS: f: jpg-1 (Only start page number); % \item % POSITION OF PAGES: e: pp-last (Pages at end, but before any notes) % \item % NUMBER AND SERIES FOR COLLECTIONS: num-xser (Allows number without series and suppresses word ``number'') % \item % JOURNAL NAME PUNCTUATION: x: jnm-x (Space after journal); % \item % PUBLISHER IN PARENTHESES: p: pub-par (Publisher in parentheses) % \item % PUBLISHER POSITION: p: pre-pub (Publisher before chapter, pages); % \item % ISBN NUMBER: *: isbn (Include ISBN); % \item % ISSN NUMBER: *: isbn (Include ISSN for periodicals); % \item % `EDITOR' AFTER NAMES: a: edpar (`Name (editor),' in parentheses, after name, comma after) % \item % EDITOR IN COLLECTIONS: b: edby (In booktitle, edited by\dots---where \dots is names) % \item % PUNCTUATION BETWEEN SECTIONS (BLOCKS): c: blk-com (Comma between blocks); % \item % `IN' WITH JOURNAL NAMES: i: injnl (Add `in' before journal name in style for incollection) % \item % ABBREVIATE WORD `PAGES': a: pp (`Page' abbreviated); % \item % ABBREVIATE WORD `EDITORS': a: ed (`Editor' abbreviated); % \item % ABBREVIATION FOR `EDITION': a: ednx (`Edition' abbreviated as `ed'); % \item % EDITION NUMBERS: xedn (Editions as in database saving much processing memory) % \item % STORED JOURNAL NAMES: a: jabr (Abbreviated journal names); % \item % FONT OF `ET AL': i: etal-it (Italic et al); % \item % ADDITIONAL REVTeX DATA FIELDS: r: revdata, eprint, url, url-blk (Include REVTeX data fields) % \item % NEW FONT SELECTION SCHEME: n: nfss (NFSS); % \item % ADDITIONAL REVTeX DATA FIELDS: y: revdata (additional data fields); % \item % REFERENCE COMPONENT TAGS: r: bibinfo (reference component tags); % \end{enumerate} % % A file \file{apsrmp.dbj} file equivalent to the following should result: % \begin{verbatim} % \input docstrip % \preamble % ---------------------------------------- % *** REVTeX-compatible apsrmp.bst *** % \endpreamble % \postamble % End of customized bst file % \endpostamble % \keepsilent % \askforoverwritefalse % \def\MBopts{\from{merlin.mbs}{% % ay%: Author-year with some non-standard interface % ,nat%: Natbib for use with natbib v5.3 or later % ,vonx%: Sort without von part (de la Maire after Mahone) % ,nm-rev1%: Only first name reversed, initials (AGU style: Smith, J. F., H. K. Jones) % ,jnrlst%: Junior comes last as Smith, John, Jr. % ,nmlm%: Limited authors (et al replaces missing names) % ,x10%: Maximum of 10 authors % ,m10%: Minimum of 10 authors % ,nmft,nmft-def%: User defined author font (\bibnamefont) % ,fnm-def%: First names in user defined font (\bibfnamefont) % ,nmfted%: Editors incollection like authors font % ,nmand-rm%: `And' in normal font (JONES and JAMES) % ,lab,lab-def%: User defined citation font (\citenamefont) % ,keyxyr%: Year blank when KEY replaces missing author (for natbib 7.0) % ,dt-beg%: Date after authors % ,xmth%: Date is year only % ,yr-com%: Date preceded by comma as `, 1993' % ,note-yr%: Year text full as 1990--1993 or `in press' % ,jtit-x%: No article title % ,jttl-rm%: Journal name normal font % ,trtit-b%: Tech. report title like books % ,vol-bf%: Volume bold as {\bf vol}(num) % ,volp-com%: Volume with comma as vol(num), ppp % ,jpg-1%: Only start page number % ,pp-last%: Pages at end but before any notes % ,num-xser%: Allows number without series and suppresses word "number" % ,jnm-x%: Space after journal name % ,pub-par%: Publisher in parentheses % ,pre-pub%: Publisher before chapter, pages % ,isbn%: Include ISBN for books, booklets, etc. % ,issn%: Include ISSN for periodicals % ,edpar%: `Name (editor),' in parentheses, after name, comma after % ,edby%: In booktitle, edited by .. (where .. is names) % ,blk-com%: Comma between blocks % ,injnl%: Add `in' before journal name in style for incollection % ,pp%: `Page' abbreviated as p. or pp. % ,ed%: `Editor' abbreviated as ed. or eds. % ,xedn%: Editions as in database saving much processing memory % ,jabr%: Abbreviated journal names % ,etal-it%: Italic et al % ,revdata,eprint,url,url-blk%: Include REVTeX data fields collaboration, eid, eprint, numpages, url % ,bibinfo%: Reference component tags like \bibinfo in the content of \bibitem % ,nfss%: NFSS use \textbf, \emph, not \bf, \em % }} % \generate{\file{\jobname.bst}{\MBopts}} % \endbatchfile % \end{verbatim} % % \begin{macrocode} \appdef\class@documenthook{% \@ifxundefined\@bibstyle{% \def\@bibstyle{apsrmp}% }{}% }% % \end{macrocode} % \end{macro} % % \begin{macro}{\bibpunct} % The following commands effectively etablish the style in which \cmd\cite\ commands are % formatted. % You can think of them as the second needed component for the bibliography. % % Set up for author-year citations: % when \cmd\NAT@set@cites\ executes (at \envb{document} time), the \cmd\@biblabel\ will % be set to \cmd\NAT@biblabel. % % Per Karie Friedman (friedman@phys.washington.edu), multiple citations are separated by semicolons, e.g., % (Jones, 1999; Abbott and Smith, 2000; Wortley, 2001a), % and % multiple citations by the same author by commas, e.g., % Abela et al. (1995, 1997a, 1997b). % The third argument of \cmd\bibpunct\ handles the former. % % The fifth argument puts a comma after the author when the year is not in parens: % (Lee et al., 1996). % % \begin{macrocode} \bibpunct{(}{)}{;}{a}{,}{,}% % \end{macrocode} % \end{macro} % % \begin{macro}{\cite} % Per Mark Doyle, \cmd\cite\ is mapped to \cmd\citep\ in RMP. % % \begin{macrocode} \let\cite\citep % \end{macrocode} % \end{macro} % % \begin{macro}{\bibsection} % \begin{macro}{\bibpreamble} % \begin{macro}{\newblock} % \begin{macro}{\bibhang} % \begin{macro}{\bibsep} % We define the sectioning command to use when starting the bibliography. % % \begin{macrocode} \def\bibsection{% \let\@hangfroms@section\@hang@froms \section*{\refname}% \@nobreaktrue }% \let\bibpreamble\@empty \def\newblock{\ }% \bibhang10\p@ \bibsep\z@ % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\footinbib@sw} % Footnotes in bibliography are inconsistent with author-year % references, and are particularly nast under \classname{natbib}: % the packcage will automatically change to numbered references if % any \cmd\bibitem\ commands lack the optional argument. % Therefore, we must uninvoke it now, even if invoked by the document. % \begin{macrocode} \@ifxundefined\footinbib@sw{}{% \footinbib@sw{% \class@warn{% Footnotes in bibliography are incompatible with RMP.^^J% Undoing the footinbib option. }% }{}% }% \@booleanfalse\footinbib@sw % \end{macrocode} % \end{macro} % % \begin{macro}{\eprint} % RMP requires the \cmd\eprint\ field in the bib entry to be set off with the word ``eprint''. % \begin{macrocode} \def\eprint#1{eprint #1}% % \end{macrocode} % \end{macro} % % \subsection{Table of Contents} % % We set up for auto-sizing of certain TOC elements. % % To do this, we override certain definitions for % the default TOC font (\cmd\toc@@font) and spacing (\@dotsep), % and define % formatting for the needed elements (\cmd\l@\dots). % Finally, we activate the autosizing by % assigning \cmd\toc@pre\ and \cmd\toc@post. % % \begin{macro}{\toc@@font} % Set the formatting characteristics of the auto-indenting part % of the TOC. % \begin{macrocode} \def\toc@@font{% \footnotesize\rmfamily \def\\{\space\ignorespaces}% }% \def\@dotsep{5.5pt}% % \end{macrocode} % \end{macro} % % \begin{macro}{\l@section} % Determine which TOC elements are automatically indented. % \begin{macrocode} \def\tocleft@{\z@}% \def\tocdim@min{5\p@}% \def\l@section{% \l@@sections{}{section}% Implicit #3#4 }% \def\l@subsection{% \l@@sections{section}{subsection}% Implicit #3#4 }% \def\l@subsubsection{% \l@@sections{subsection}{subsubsection}% Implicit #3#4 }% %\def\l@subsubsection#1#2{}% \def\l@paragraph#1#2{}% \def\l@subparagraph#1#2{}% % \end{macrocode} % \end{macro} % % Activate the TOC processing. % \begin{macrocode} \let\toc@pre\toc@pre@auto \let\toc@post\toc@post@auto % \end{macrocode} % % % \begin{macrocode} % % \end{macrocode} % % % \Finale % %Here ends the programmer's documentation. % \endinput % \endinput