8385 lines
285 KiBLFS
TeX
8385 lines
285 KiBLFS
TeX
% \iffalse meta-comment balanced on line 122
|
|
% revtex4-2.dtx: package to typeset APS, AIP, SOR, ASA, etc. journal articles
|
|
% Copyright (c) 2019 American Physical Society.
|
|
% https://journals.aps.org/revtex/
|
|
% mailto:revtex@aps.org
|
|
%
|
|
% Disclaimer
|
|
% This file is distributed WITHOUT ANY WARRANTY;
|
|
% without even the implied warranty of
|
|
% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
|
|
% License
|
|
% You may distribute this file under the conditions of the
|
|
% LaTeX Project Public License 1.3c or later
|
|
% (http://www.latex-project.org/lppl.txt).
|
|
% ReadMe
|
|
% For the documentation and more detailed instructions for
|
|
% installation, typeset this document with \LaTeX.
|
|
% Maintenance Status
|
|
% This work has the LPPL maintenance status "maintained";
|
|
% Current Maintainer of this work is Arthur Ogawa.
|
|
%
|
|
% This work consists of the main source file revtex4-2.dtx
|
|
% and the derived files
|
|
% revtex4-2.cls, revtex4-2.pdf
|
|
% Distribution:
|
|
% CTAN:macros/latex/contrib/revtex/
|
|
%
|
|
% Unpacking:
|
|
% tex revtex4-2.dtx
|
|
%
|
|
% Documentation:
|
|
% latex revtex4-2.dtx; ...
|
|
%
|
|
% Programm calls to get the documentation (example):
|
|
% pdflatex revtex4-2.dtx
|
|
% makeindex -s gind.ist revtex4-2.idx
|
|
% makeindex -s gglo.ist -o revtex4-2.gls revtex4-2.glo
|
|
% pdflatex revtex4-2.dtx
|
|
% makeindex -s gind.ist revtex4-2.idx
|
|
% pdflatex revtex4-2.dtx
|
|
%
|
|
% Installation:
|
|
% TDS:bibtex/bst/revtex/
|
|
% TDS:doc/latex/revtex/
|
|
% TDS:tex/latex/revtex/
|
|
% TDS:source/latex/revtex/
|
|
%
|
|
% Thanks, Heiko!
|
|
% This method of letting a single .dtx file serve as both
|
|
% documentation (via latex) and installer (via tex) follows
|
|
% the example of Heiko Oberdiek. Thanks!
|
|
%<*ignore>
|
|
\begingroup
|
|
\def\x{LaTeX2e}%
|
|
\expandafter\endgroup
|
|
\ifcase
|
|
0\expandafter\ifx\csname processbatchFile\endcsname\relax\else1\fi\ifx\fmtname\x\else 1\fi
|
|
\relax
|
|
\else
|
|
\csname fi\endcsname
|
|
%</ignore>
|
|
%<*install>
|
|
%% This file will generate documentation and runtime files
|
|
%% from revtex4-2.dtx when run through 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
|
|
|
|
Original version by David Carlisle
|
|
Modified by Arthur Ogawa (mailto:arthur_ogawa at sbcglobal dot net)
|
|
|
|
Version (4.2a, unreleased)
|
|
Modified by Aptara on behalf of American Physical Society and American Institute of Physics
|
|
|
|
Version (4.2b,4.2c)
|
|
Modified by Mark Doyle, American Physical Society (mailto:revtex at aps.org)
|
|
|
|
Version (4.2d--4.2f)
|
|
Modified by Phelype Oleinik for the American Physical Society (mailto:phelype.oleinik at latex-project.org)
|
|
|
|
Copyright (c) 2019--2022 American Physical Society.
|
|
https://journals.aps.org/revtex/
|
|
mailto:revtex@aps.org
|
|
|
|
See the REVTeX 4.2 README-REVTEX file for restrictions and more information.
|
|
|
|
\endpreamble
|
|
\askforoverwritefalse
|
|
\keepsilent
|
|
\generate{%
|
|
\file{revtex4-2.cls}{%
|
|
\from{revtex4-2.dtx}{kernel}%
|
|
\from{ltxutil.dtx}{kernel}%
|
|
\from{ltxfront.dtx}{kernel}%
|
|
\from{ltxgrid.dtx}{kernel}%
|
|
\from{revtex4-2.dtx}{options}%
|
|
\from{ltxutil.dtx}{options}%
|
|
\from{ltxfront.dtx}{options}%
|
|
\from{ltxgrid.dtx}{options}%
|
|
\from{revtex4-2.dtx}{package}%
|
|
}%
|
|
\file{aps4-2.rtx}{\from{revtex4-2.dtx}{aps}}%
|
|
\file{apsrmp4-2.rtx}{\from{revtex4-2.dtx}{rmp}}%
|
|
\file{aps10pt4-2.rtx}{\from{revtex4-2.dtx}{10pt}}%
|
|
\file{aps11pt4-2.rtx}{\from{revtex4-2.dtx}{11pt}}%
|
|
\file{aps12pt4-2.rtx}{\from{revtex4-2.dtx}{12pt}}%
|
|
\file{revsymb4-2.sty}{\from{revtex4-2.dtx}{revsymb}}%
|
|
}%
|
|
\ifToplevel{
|
|
\Msg{***********************************************************}
|
|
\Msg{*}
|
|
\Msg{* To finish the installation, please move}
|
|
\Msg{* *.cls, *.rtx, and *.sty }
|
|
\Msg{* into a directory searched by TeX;}
|
|
\Msg{* in a TDS-compliant installation:}
|
|
\Msg{* texmf/tex/macros/latex/revtex/.}
|
|
\Msg{*}
|
|
\Msg{* To produce the documentation,
|
|
run revtex4-2.dtx through LaTeX.}
|
|
\Msg{*}
|
|
\Msg{* Happy TeXing}
|
|
\Msg{***********************************************************}
|
|
}
|
|
\endbatchfile
|
|
%</install>
|
|
%<*ignore>
|
|
\fi
|
|
%</ignore>
|
|
% \fi
|
|
%
|
|
% \GetFileInfo{revtex4-2.dtx}
|
|
%
|
|
% \StopEventually{}
|
|
% \iffalse ltxdoc klootch
|
|
%<*package>
|
|
%%% @LaTeX-file{
|
|
%%% filename = "revtex4-2.dtx",
|
|
%%% version = "4.2f",
|
|
%%% date = "2022/06/05",
|
|
%%% author = "Mark Doyle (mailto: revtex at aps.org), Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net),
|
|
%%% commissioned by the American Physical Society.
|
|
%%% ",
|
|
%%% copyright = "Copyright (C) 1999, 2009 Arthur Ogawa, Version 4.2 Copyright (C) 2019 American Physical Society
|
|
%%% distributed under the terms of the
|
|
%%% LaTeX Project Public License 1.3c, see
|
|
%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt
|
|
%%% ",
|
|
%%% address = "Mark Doyle,
|
|
%%% USA",
|
|
%%% telephone = "",
|
|
%%% FAX = "",
|
|
%%% email = "mailto colon revtex at aps.org",
|
|
%%% codetable = "ISO/ASCII",
|
|
%%% keywords = "",
|
|
%%% supported = "yes",
|
|
%%% abstract = "",
|
|
%%% }
|
|
%</package>
|
|
% \fi
|
|
%
|
|
% \iffalse ltxdoc klootch
|
|
% The following references the \file{README-REVTEX.tex} file,
|
|
% which contains the frontmatter for the programmer's docs.
|
|
% The contents of this file are generated when
|
|
% you typeset this file with LaTeX.
|
|
% Search on "{filecontents*}{README-REVTEX.tex}" to locate it.
|
|
% \fi\input{README-REVTEX.tex}%
|
|
%
|
|
% \subsection{Bill of Materials}
|
|
%
|
|
% Following is a list of the files in this distribution arranged
|
|
% according to provenance.
|
|
%
|
|
% \subsubsection{Primary Source}%
|
|
% One single file generates all.
|
|
%\begin{verbatim}
|
|
%revtex4-2.dtx
|
|
%\end{verbatim}
|
|
%
|
|
% \subsubsection{Generated by \texttt{tex revtex4-2.dtx}}%
|
|
% Typesetting ths file under \TeX\ itself runs the installer,
|
|
% which generates the package files.
|
|
%\begin{verbatim}
|
|
%revtex4-2.cls, revtex4.ins, revtex4.drv, aps4-2.rtx,
|
|
%aps10pt4-2.rtx, aps11pt4-2.rtx, aps12pt4-2.rtx, revsymp.sty
|
|
%\end{verbatim}
|
|
%
|
|
% \subsubsection{Generated by \texttt{pdflatex revtex4-2.dtx}}%
|
|
% Typesetting the source file under \LaTeX\
|
|
% generates the documentation.
|
|
%\begin{verbatim}
|
|
%revtex4.pdf,
|
|
%\end{verbatim}
|
|
%
|
|
% \subsubsection{Auxiliary}%
|
|
% The following are auxiliary files generated
|
|
% in the course of running \LaTeX:
|
|
% \begin{verbatim}
|
|
%revtex4.aux revtex4.idx revtex4.ind revtex4.log revtex4.toc
|
|
% \end{verbatim}
|
|
%
|
|
% \section{Code common to all modules}%
|
|
%
|
|
% The following may look a bit klootchy, but we
|
|
% want to require only one place in this file
|
|
% where the version number is stated,
|
|
% and we also want to ensure that the version
|
|
% number is embedded into every generated file.
|
|
%
|
|
% Now we declare that
|
|
% these files can only be used with \LaTeXe.
|
|
% An appropriate message is displayed if
|
|
% a different \TeX{} format is used.
|
|
% \begin{macrocode}
|
|
%<*doc|kernel|aps|rmp|revsymb>
|
|
\NeedsTeXFormat{LaTeX2e}[1996/12/01]%
|
|
%</doc|kernel|aps|rmp|revsymb>
|
|
%<kernel>\ProvidesClass{revtex4-2}
|
|
%<aps>\ProvidesFile{aps4-2}
|
|
%<rmp>\ProvidesFile{apsrmp4-2}
|
|
%<10pt>\ProvidesFile{aps10pt4-2}
|
|
%<11pt>\ProvidesFile{aps11pt4-2}
|
|
%<12pt>\ProvidesFile{aps12pt4-2}
|
|
%<revsymb>\ProvidesPackage{revsymb4-2}
|
|
%<*doc>
|
|
\ProvidesFile{revtex4-2.dtx}
|
|
%</doc>
|
|
%<*!package&!options>
|
|
%<version>
|
|
[2022/06/05 4.2f (https://journals.aps.org/revtex/ for documentation)]% \fileversion
|
|
%</!package&!options>
|
|
% \end{macrocode}
|
|
% The current class name is remembered in \cmd\class@name.
|
|
% This is something of a klootch, relying as it does on knowledge of the implementation of \cmd\ProvidesPackage.
|
|
% \begin{macrocode}
|
|
%<kernel>\let\class@name\@gtempa
|
|
% \end{macrocode}
|
|
%
|
|
% \section{The driver module \texttt{driver}}
|
|
%
|
|
% This module, consisting of the present section,
|
|
% typesets the programmer's documentation,
|
|
% generating the \file{README-REVTEX.txt} and sample document as needed.
|
|
%
|
|
% Because the only uncommented-out lines of code at the beginning of
|
|
% this file constitute the \file{driver} module itself,
|
|
% we can simply typeset the \file{.dtx} file directly,
|
|
% and there is thus rarely any need to
|
|
% generate the ``driver'' {\sc docstrip} module.
|
|
% Module delimiters are nonetheless required so that
|
|
% this code does not find its way into the other modules.
|
|
%
|
|
% The \enve{document} command concludes the typesetting run.
|
|
%
|
|
% \begin{macrocode}
|
|
%<*doc>
|
|
% \end{macrocode}
|
|
% The driver uses packages \file{ltxdoc.sty}, \file{ltxdocext.sty},
|
|
% \file{hyperref.sty}, and whatever font package has been selected.
|
|
% \begin{macrocode}
|
|
\documentclass{ltxdoc}
|
|
\RequirePackage{ltxdocext}%
|
|
\let\url\undefined
|
|
\RequirePackage[colorlinks=true,linkcolor=blue]{hyperref}%
|
|
% \end{macrocode}
|
|
% We ask for the usual indices and glossaries.
|
|
% \begin{macrocode}
|
|
\CodelineIndex\EnableCrossrefs % makeindex -s gind.ist revtex4
|
|
\RecordChanges % makeindex -s gglo.ist -o revtex4.gls revtex4.glo
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{Docstrip and info directives}
|
|
% We use so many {\sc docstrip} modules that we set the
|
|
% \texttt{StandardModuleDepth} counter to 1.
|
|
% \begin{macrocode}
|
|
\setcounter{StandardModuleDepth}{1}
|
|
% \end{macrocode}
|
|
% The following command retrieves the date and version information
|
|
% from this file.
|
|
% \begin{macrocode}
|
|
\expandafter\GetFileInfo\expandafter{\jobname.dtx}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsection{The Frontmatter File}
|
|
% As promised above, here is the contents of the frontmatter file.
|
|
% \begin{macrocode}
|
|
\begin{filecontents*}{README-REVTEX.tex}
|
|
\title{%
|
|
The \classname{revtex4-2} document class of the American Physical Society%
|
|
\protect\thanks{Work under hire to American Physical Society. Version \fileversion\ \copyright\ 2019 American Physical Society}%
|
|
}%
|
|
\author{Arthur Ogawa and Mark Doyle%
|
|
\protect\thanks{First revision of REV\TeX4.0 (unreleased) by David Carlisle, all released versions of 4.0 and 4.1 by Art Ogawa, 4.2a (unreleased) by Aptara, 4.2b,c by Mark Doyle}%
|
|
}%
|
|
\date{Version \fileversion, dated \filedate}%
|
|
\newcommand\revtex{REV\TeX}
|
|
|
|
\maketitle
|
|
|
|
This file embodies the implementation of the APS \revtex\ 4.2 document class
|
|
for electronic submissions to journals.
|
|
|
|
The distribution point for this work is
|
|
\url{https://journals.aps.org/revtex/},
|
|
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{auguide.tex}.
|
|
|
|
The file \file{template.aps} is a boilerplate file.
|
|
|
|
\changes{4.0a}{1998/01/16}{Initial version}
|
|
\changes{4.0a}{1998/01/31}{Move after process options, so \cs{clearpage} not in scope of twocolumn}
|
|
\changes{4.0a}{1998/01/31}{Rearrange the ordering so numerical ones come first. AO: David, what does this mean?}
|
|
\changes{4.0a}{1998/01/31}{use font-dependent spacing}
|
|
\changes{4.0a}{1998/01/31}{4.0d had twoside option setting twoside switch to false}
|
|
\changes{4.0a}{1998/01/31}{Move after process options, so the following test works}
|
|
\changes{4.0a}{1998/01/31}{print homepage}
|
|
\changes{4.0a}{1998/01/31}{protect against hyperref revtex kludges which are not needed now}
|
|
\changes{4.0a}{1998/06/10}{multiple preprint commands}
|
|
\changes{4.0a}{1998/06/10}{comma not space between email and homepage}
|
|
\changes{4.0a}{1998/06/10}{single space footnotes}
|
|
\changes{4.0b}{1999/06/20}{First modifications by Arthur Ogawa (mailto:arthur\_ogawa at sbcglobal dot net)}
|
|
\changes{4.0b}{1999/06/20}{Added localization of \cs{figuresname}}
|
|
\changes{4.0b}{1999/06/20}{Added localization of \cs{tablesname}}
|
|
\changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{10pt} is in this module.}
|
|
\changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{11pt} is in this module.}
|
|
\changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{12pt} is in this module.}
|
|
\changes{4.0b}{1999/06/20}{AO: made aps.rtx part of revtex4.dtx}
|
|
\changes{4.0b}{1999/06/20}{AO: remove duplicates}
|
|
\changes{4.0b}{1999/06/20}{call \cs{print@floats}}
|
|
\changes{4.0b}{1999/06/20}{Defer assignment until \cs{AtBeginDocument} time.}
|
|
\changes{4.0b}{1999/06/20}{Defer decision until \cs{AtBeginDocument} time}
|
|
\changes{4.0b}{1999/06/20}{Define three separate environments, defer assignment to \cs{AtBeginDocument} time.}
|
|
\changes{4.0b}{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.}%
|
|
\changes{4.0b}{1999/06/20}{Move this ``complex'' option to the front, where it can be overridden by ``simple'' options.}
|
|
\changes{4.0b}{1999/06/20}{New option}
|
|
\changes{4.0b}{1999/06/20}{One-line caption sets flush left.}
|
|
\changes{4.0b}{1999/06/20}{only execute if appropriate}
|
|
\changes{4.0b}{1999/06/20}{Processing delayed to \cs{AtBeginDocument} time}
|
|
\changes{4.0b}{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.)}
|
|
\changes{4.0b}{1999/06/20}{Restore all media size class option of \protect\file{classes.dtx}}
|
|
\changes{4.0b}{1999/06/20}{Stack \cs{preprint} args flush right at right margin.}
|
|
\changes{4.0c}{1999/11/13}{(AO, 115) If three or more preprints specified, set on single line, with commas.}
|
|
\changes{4.0c}{1999/11/13}{(AO, 129) section* within appendix was producing appendixname}
|
|
\changes{4.0c}{1999/11/13}{*-form mandates pagebreak}
|
|
\changes{4.0c}{1999/11/13}{also spelled ``acknowledgements''.}
|
|
\changes{4.0c}{1999/11/13}{Do not put by REVTeX in every page foot}
|
|
\changes{4.0c}{1999/11/13}{grid changes via ltxgrid procedures}
|
|
\changes{4.0c}{1999/11/13}{grid changes with ltxgrid}
|
|
\changes{4.0c}{1999/11/13}{Insert procedure \cs{checkindate}}
|
|
\changes{4.0c}{1999/11/13}{Lose compatability mode.}
|
|
\changes{4.0c}{1999/11/13}{New ltxgrid-based code, other bug fixes}
|
|
\changes{4.0c}{1999/11/13}{New option ``checkin''}
|
|
\changes{4.0c}{1999/11/13}{Prevent an inner footnote from performing twice}
|
|
\changes{4.0d}{2000/04/10}{Also alter how lists get indented.}
|
|
\changes{4.0d}{2000/04/10}{eprint takes an optional argument, syntactical only in this case.}
|
|
\changes{4.0d}{2000/04/10}{New option}
|
|
\changes{4.0d}{2000/05/10}{More features and bug fixes: compatability with longtable and array packages. Now certainly incompatible with multicol.}
|
|
\changes{4.0d}{2000/05/17}{make longtable trigger the head, too}
|
|
\changes{4.0d}{2000/05/18}{But alternative spelling is deprecated.}
|
|
\changes{4.0e}{2000/09/20}{New option showkeys}
|
|
\changes{4.0e}{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{4.0e}{2000/11/21}{adornments above and below.}
|
|
\changes{4.0f}{2001/02/13}{Last bug fixes before release.}
|
|
\changes{4.0rc1}{2001/06/17}{Running headers always as if two-sided}
|
|
\changes{4.0rc1}{2001/06/18}{grid changes with push and pop}
|
|
\changes{4.0rc1}{2001/06/18}{grid changes with push and pop}
|
|
\changes{4.0rc4}{2001/07/23}{hyperref is no longer loaded via class option: use a usepackage statement instead}
|
|
\changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
|
|
\changes{4.1a}{2008/01/18}{(AO, 451) ``Cannot have more than 256 cites in a document''}%
|
|
\changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
|
|
\changes{4.1a}{2008/01/18}{(AO, 460) ``Proper style is "FIG. 1. ..." (no colon)''}%
|
|
\changes{4.1a}{2008/01/18}{(AO, 478) \cs{ds@letterpaper}, so that ``letterpaper really is the default''}%
|
|
\changes{4.1a}{2008/01/18}{(AO, 488) Change processing of options to allow an unused option to specify society and journal}%
|
|
\changes{4.1a}{2008/01/19}{(AO, 461) Change the csname revtex uses from @dotsep to ltxu@dotsep. The former is understood in mu. (What we wanted was a dimension.)}%
|
|
\changes{4.1a}{2008/01/19}{For natbib versions before 8.21, \cs{NAT@sort} was consulted only as natbib was being read in. Now it is fully dynamic.}
|
|
\changes{4.1b}{2008/05/29}{The csname substyle@ext is now defined without a dot (.), to be compatible with \LaTeX usage (see @clsextension and @pkgextension).}
|
|
\changes{4.1b}{2008/06/01}{(AO) Implement bibnotes through \cs{frontmatter@footnote@produce} instead of \cs{bibnotes@sw}}%
|
|
\changes{4.1b}{2008/06/01}{Add option reprint, opposite of preprint, and preferred alternative to twocolumn}
|
|
\changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
|
|
\changes{4.1b}{2008/06/30}{(AO) Structure the Abstract using the \texttt{bibliography} environment}
|
|
\changes{4.1b}{2008/07/01}{(AO) coordinate \cs{if@twoside} with \cs{twoside@sw}}
|
|
\changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
\changes{4.1b}{2008/07/01}{(AO) No longer need to test \cs{chapter} as of \texttt{natbib} version 8.2}
|
|
\changes{4.1b}{2008/07/01}{(AO) No longer use \cs{secnumarabic@sw}, instead use \cs{setup@secnums}}
|
|
\changes{4.1b}{2008/07/01}{(AO) Provide more diagnostics when \cs{@society} is assigned.}
|
|
\changes{4.1b}{2008/07/01}{(AO) provide option longbibliography}
|
|
\changes{4.1b}{2008/07/01}{Add \cs{@hangfroms@section}}
|
|
\changes{4.1b}{2008/07/01}{Break out \cs{@caption@fignum@sep}}
|
|
\changes{4.1b}{2008/07/01}{Class option galley sets \cs{preprintsty@sw} to false}
|
|
\changes{4.1b}{2008/07/01}{Code relating to new syntax for frontmatter has been placed in \file{ltxfront.dtx}}
|
|
\changes{4.1b}{2008/07/01}{Package textcase is now simply a required package}
|
|
\changes{4.1b}{2008/07/01}{Procedures \cs{@parse@class@options@society} and \cs{@parse@class@options@journal} and friends}
|
|
\changes{4.1b}{2008/07/01}{Read in all required packages together}
|
|
\changes{4.1b}{2008/07/01}{Remove options newabstract and oldabstract}
|
|
\changes{4.1b}{2008/08/01}{Section numbering via procedures \cs{secnums@rtx} and \cs{secnums@arabic}.}
|
|
\changes{4.1b}{2008/08/04}{As with author formatting, rag the right more, and assign \cs{@totalleftmargin}. Also neutralize \cs{def@after@address}.}%
|
|
\changes{4.1b}{2008/08/04}{Rag the right even more: .8\cs{hsize}. Also, assign \cs{@totalleftmargin}.}%
|
|
\changes{4.1b}{2008/08/04}{The \texttt{rmp} journal substyle selects \texttt{groupedaddress} by default.}%
|
|
\changes{4.1b}{2008/08/04}{Use \cs{setup@hook} to initialize all.}
|
|
\changes{4.1c}{2008/08/15}{Document class option longbibliography via \cs{substyle@post}}
|
|
\changes{4.1d}{2009/03/27}{Definition of \cs{ @fnsymbol} follows fixltx2e.sty}
|
|
\changes{4.1e}{2008/06/29}{(AO, 455) be nice to a list within the abstract}
|
|
\changes{4.1f}{2009/07/07}{(AO, 513) Add class option linenumbers: number the lines a la \classname{lineno}}
|
|
\changes{4.1f}{2009/07/07}{(AO, 516) Merged references are separated with a semicolon}
|
|
\changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
|
|
\changes{4.1f}{2009/07/11}{(AO, 521) Lonely bibliography head}%
|
|
\changes{4.1f}{2009/07/11}{(AO, 522) Warn if software is expired}%
|
|
\changes{4.1f}{2009/07/15}{(AO, 523) Add class option nomerge, to turn off new natbib 8.3 syntax}
|
|
\changes{4.1f}{2009/07/20}{(AO, 524) Makes no sense if citations are superscript numbers and so are footnotes}
|
|
\changes{4.1f}{2009/10/05}{(AO, 530) \cs{@fnsymbol}: Failed to import fixltx2e.sty technology. Return to LaTeX core.}
|
|
\changes{4.1g}{2009/10/07}{(AO, 525) Remove phantom paragraph above display math that is given in vertical mode}%
|
|
\changes{4.1g}{2009/10/07}{(AO, 538) \cs{MakeTextUppercase} inappropriately expands the double backslash}
|
|
\changes{4.1h}{2009/10/09}{(AO) Remove expiry code in the release software}%
|
|
\changes{4.1i}{2009/10/23}{(AO, 541) Defer assignment of \cs{cite} until after natbib loads}
|
|
\changes{4.1j}{2009/10/24}{(AO, 549) Repairing natbib's \cs{BibitemShut} and \cs{bibAnnote}}
|
|
\changes{4.1j}{2009/10/25}{(AO, 545) hypertext capabilities off by default; enable with \classoption{hypertext}}
|
|
\changes{4.1j}{2009/10/25}{(AO, 552) Repair spacing in \cs{onlinecite}}
|
|
\changes{4.1k}{2009/11/06}{(AO, 554) give the \cs{newlabel} command syntax appropriate to the hyperref package}
|
|
\changes{4.1n}{2009/11/06}{(AO, 565) restore 4.0 behavior: invoking class option preprint implies class option preprintnumbers}
|
|
\changes{4.1n}{2009/11/30}{(AO, 566) restore 4.0 behavior: flush column bottoms}
|
|
\changes{4.1n}{2009/12/05}{(AO, 569) Use of \classname{hyperref} interferes with column balancing of last page}%
|
|
\changes{4.1n}{2009/12/09}{(AO, 569) execute the after-last-shipout procedures from within the safety of the output routine}%
|
|
\changes{4.1n}{2010/01/02}{(AO, 571) Interface \cs{set@footnotewidth} for determining the set width of footnotes}%
|
|
\changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
|
|
\changes{4.1n}{2009/12/13}{(AO, 573) arrange to load \classname{lineno} after any other packages.}%
|
|
\changes{4.1n}{2010/01/04}{(AO, 575) the default for journal prstper is longbibliography}%
|
|
\changes{4.1n}{2010/01/04}{(AO, 576) In .bst files, remove support for the annote field}%
|
|
\changes{4.1n}{2010/01/02}{(AO) fine-tune spacing above and below widetext}%
|
|
\changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
|
|
\changes{4.1n}{2010/01/02}{(AO, 572) \cs{@makefntext} and \cs{frontmatter@makefntext} must be defined harmoniously}%
|
|
\changes{4.1o}{2010/02/02}{(AO, 575) Automatically incorporate the (Bib\TeX-generated) .bbl into an explicit \env{thebibliography}}%
|
|
\changes{4.1o}{2010/02/05}{(AO, 549) Remove patch to natbib, which is now at version 8.31a}
|
|
\changes{4.1o}{2010/02/07}{(AO, 578) accommodate the possible space character preceding \cs{BibitemShut}.}
|
|
\changes{4.1o}{2010/02/05}{(AO, 579) Endnote shall comprise their own Bib\TeX\ entry type: @FOOTNOTE.}
|
|
\changes{4.1o}{2010/02/10}{(AO, 580) Provide a document class option to turn off production of eprint field in bibliography.}
|
|
\changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}%
|
|
\changes{4.1o}{2010/02/09}{(AO, 581) Handle case: merged references, with first ending in a stop character.}
|
|
\changes{4.1p}{2010/02/24}{(AO, 583) Provide interface to \classname{ltxgrid} \cs{onecolumn@grid@setup} and \cs{twocolumn@grid@setup}}
|
|
\changes{4.1p}{2010/02/24}{(AO, 584) Per MD, remove trailing space character from each journal abbreviation: it had caused an extraneous space in the .bbl}
|
|
\changes{4.1q}{2010/04/01}{(AO, 586) When .bbl is pasted into the document, prevent automatic bibliography inclusion.}%
|
|
\changes{4.1q}{2010/04/13}{(AO, 588) Only write \revtex-specific BibTeX .bib data if the .bst style is set by REVTeX.}%
|
|
\changes{4.1r}{2010/06/22}{(AO, 595) Provide \cs{lovname} along with other List of Videos definitions.}%
|
|
\changes{4.2a}{2014/12/31}{(Aptara, MD) Added initial support for SOR and AAPM journals, additional journals for APS, and additional journals and proceedings for AIP, unreleased.}%
|
|
\changes{4.2a}{2014/12/31}{(Aptara) Make prb style to follow other Phys. Rev. journals.}%
|
|
\changes{4.2a}{2014/12/31}{(Aptara) Corrected indentation for tableofcontents appearing along with listoffigure/listoftable.}%
|
|
\changes{4.2a}{2017/11/21}{(MD) Make long bibliography style the default now.}%
|
|
\changes{4.2a}{2017/11/28}{(MD) Add call to normalsize to be a good citizen and allow booktabs.sty to work properly}.%
|
|
\changes{4.2b}{2018/12/26}{(MD) Make titles in bibliography default, prb style to follow other Phys. Rev. journals, add a unified physrev option as well as prx and prapplied options. Corrected indentation for tableofcontents appearing along with listoffigure/listoftable.}%
|
|
\changes{4.2b}{2017/11/21}{(MD) Update options for new titles without "Special Topics" and make prper match style of other journal options}%
|
|
\changes{4.2b}{2017/11/21}{(MD) Add options for new APS journals and a generic physrev option for future-proofing}%
|
|
\changes{4.2b}{2017/11/22}{(MD) Change default to not use a title page - it seems antiquated}%
|
|
\changes{4.2b}{2017/11/22}{(MD) MD - not sure why these parameters were different previously. Made them match except for title.}%
|
|
\changes{4.2b}{2017/11/22}{(MD) PACS are obsolete altogether now}%
|
|
\changes{4.2b}{2018/12/26}{(MD) Improve control over display of e-print ids in bibliography.}%
|
|
|
|
\end{filecontents*}
|
|
% \end{macrocode}
|
|
%
|
|
% \subsection{The Document Body}
|
|
%
|
|
% Here is the document body, containing only a
|
|
% \cmd\DocInput\ directive---referring to this very file.
|
|
% This very cute self-reference is a common \classname{ltxdoc} idiom.
|
|
% \begin{macrocode}
|
|
%%\newcommand\revtex{REV\TeX}% TeXSupport
|
|
\begin{document}%
|
|
\expandafter\DocInput\expandafter{\jobname.dtx}%
|
|
\PrintChanges
|
|
\end{document}
|
|
% \end{macrocode}
|
|
% And that is the end of the driver for the programmer's documentation.
|
|
% \begin{macrocode}
|
|
%</doc>
|
|
% \end{macrocode}
|
|
%
|
|
% \section{Overview}%
|
|
% \revtex\ is a \LaTeXe\ document class, somewhat 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}, \classname{hyperref},
|
|
% 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.
|
|
% Any society may create a substyle;
|
|
% this file generates one for \classoption{aps}.
|
|
%
|
|
% FIXME: should always load the \classname{graphicx} package. No, allow user to load whichever graphics package is desired.
|
|
%
|
|
% QUERY: since \classname{amsfonts} and \classname{amssymb} extend
|
|
% syntax, why not load them in any case?
|
|
%
|
|
% Certain processing occurs at the endgame for reading in \revtex, thereby establishing
|
|
% precedence for assignments to \LaTeX's (and \revtex's) parameters:
|
|
% \begin{enumerate}
|
|
% \item
|
|
% Figure out which society is operative and read in the indicated \file{.rtx} file.
|
|
% \item
|
|
% Figure out which journal option is operative and execute the indicated journal command. This may lead to reading in a journal substyle \file{.rtx} file.
|
|
% \item
|
|
% Figure out which pointsize is operative and execute the indicateded pointsize command. This may lead to reading in a pointsize \file{.rtx} file.
|
|
% \item
|
|
% Execute all of the document's options, in the order declared within the document.
|
|
% \item
|
|
% Read in all required packages (like \classname{natbib}, \classname{amsfonts}, \classname{amssymb}), that were determined by class, society, and journal.
|
|
% \item
|
|
% The last required package, if existing, is the document's style file, the \file{.rty} file.
|
|
% Note that the \file{.rty} file can override the assignments of \revtex, society, journal, and required packages, and even load its own packages.
|
|
% It can also, via appendations to \cmd\setup@hook, override the setup code itself.
|
|
% \item
|
|
% Execute all of the setup code accumulated. Such code can be queued by \revtex\ itself, by the society, by the journal, or by the pointsize.
|
|
% \item
|
|
% At this point, \revtex\ has completed the process of inputting itself,
|
|
% and \LaTeX\ will now execute the \cmd\AtEndOfClass\ procedures.
|
|
% \end{enumerate}
|
|
%
|
|
% \revtex\ will have enqueued code to execute at \cmd\AtBeginDocument\ time,
|
|
% in two different queues.
|
|
% \cmd\document@inithook\ executes immediately upon encountering the \cmd\begin\env{document} statement,
|
|
% \cmd\class@documenthook\ at the end of all the code enqueued via \cmd\AtBeginDocument.
|
|
% \begin{enumerate}
|
|
% \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{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}{%
|
|
% <code specific to the 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}
|
|
% Above, we took
|
|
% advantage of 1) the \LaTeX\ definition of \cmd\ProvidesPackage\ and
|
|
% 2) that the line of code immediately afterwards follows the \cmd\ProvidesClass\ statement above.
|
|
% \begin{macrocode}
|
|
%<*kernel>
|
|
% \end{macrocode}
|
|
%
|
|
% Print a banner in the log:
|
|
% \begin{macrocode}
|
|
\GenericInfo{}{\space
|
|
Copyright (c) 2019 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 <arthur_ogawa at sbcglobal dot net>^^J
|
|
Based on work by David Carlisle <david at dcarlisle.demon.co.uk>^^J
|
|
Version (4.2d--4.2f): Modified by Mark Doyle and Phelype Oleinik^^J
|
|
\@gobble
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsection{Compatibility Processing}
|
|
%
|
|
% If the document has \cmd\documentstyle|{revtex4}|,
|
|
% then, instead of attempting to run in compatability mode,
|
|
% just complain and exit.
|
|
% \changes{4.0c}{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}
|
|
%
|
|
% \begin{macrocode}
|
|
%</kernel>
|
|
% \end{macrocode}
|
|
%
|
|
% Here, we incorporate the utility, frontmatter, and page grid packages.
|
|
% The \classname{ltxutil}, \classname{ltxfront}, and \classname{ltxgrid} source are distributed with
|
|
% \revtex.
|
|
%
|
|
% Here begins the \file{options} \textsc{docstrip} module.
|
|
% \begin{macrocode}
|
|
%<*options>
|
|
% \end{macrocode}
|
|
%
|
|
% \subsection{Hooks}
|
|
%
|
|
% \begin{macro}{\setup@hook}
|
|
% The procedure
|
|
% \cmd\setup@hook\
|
|
% serves as the vehicle for all code that
|
|
% gives values to the class's parameters once all the
|
|
% society, journal, options, and packages have been processed.
|
|
%
|
|
% Arrange for journal substyles to set their own default values.
|
|
% \begin{macrocode}
|
|
\let\setup@hook\@empty
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% After preamble processing is complete,
|
|
% detect whether package \classname{longtable} has been loaded and patch it.
|
|
% \begin{macrocode}
|
|
\appdef\document@inithook{%
|
|
\switch@longtable
|
|
\let\LT@makecaption\LT@makecaption@rtx
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\LT@makecaption}
|
|
% We override the caption processing method of the \classname{longtable} package:
|
|
% space below the caption is created via strut instead of whitespace.
|
|
% \begin{macrocode}
|
|
\def\LT@makecaption@rtx#1#2#3{%
|
|
\LT@mcol\LT@cols c{%
|
|
\hbox to\z@{%
|
|
\hss
|
|
\parbox[t]\LTcapwidth{%
|
|
\sbox\@tempboxa{#1{#2: }#3\unskip\nobreak\vrule\@width\z@\@height\z@\@depth .5\baselineskip}%
|
|
\ifdim\wd\@tempboxa>\hsize
|
|
#1{#2: }#3\unskip\nobreak\vrule\@width\z@\@height\z@\@depth .5\baselineskip
|
|
\else
|
|
\hbox to\hsize{\hfil\box\@tempboxa\hfil}%
|
|
\fi
|
|
\endgraf
|
|
}%
|
|
\hss
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\robust@boldmath}
|
|
% Robustify the \cmd\boldmath command.
|
|
% If Team \LaTeX\ (or any package) ever gets around to fixing this problem,
|
|
% we will bow out. (This fix relates to bug \#394.)
|
|
% \begin{macrocode}
|
|
\def\protectdef@boldmath{%
|
|
\expandafter\@ifnotrelax\csname boldmath \endcsname{}{%
|
|
\class@info{Robustifying \string\LaTeX's \string\boldmath\space command}%
|
|
\expandafter\let\csname boldmath \endcsname\boldmath
|
|
\expandafter\def\expandafter\boldmath\expandafter{\expandafter\protect\csname boldmath \endcsname}%
|
|
}%
|
|
}%
|
|
\appdef\document@inithook{%
|
|
\protectdef@boldmath
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \section{Compatability with the geometry package}
|
|
%
|
|
% The \classname{geometry} package of Hideo Umeki provides a way to
|
|
% specify the metrics of the media and page layout.
|
|
% We want to ensure that \revtex\ does not foreclose on the use of
|
|
% this or any other such package, nor to interfere with
|
|
% explicit assignments of such metric parameters within the
|
|
% document preamble.
|
|
%
|
|
% The \LaTeX\ parameters (resp. \TeX\ primitives) set by \classname{geometry} are:
|
|
% \cmd\paperwidth, \cmd\paperheight,
|
|
% \cmd\textwidth, \cmd\textheight,
|
|
% \cmd\topmargin, \cmd\headheight, \cmd\headsep,
|
|
% \cmd\footskip, \cmd\skip\cmd\footins,
|
|
% \cmd\marginparwidth, \cmd\marginparsep,
|
|
% \cmd\oddsidemargin, \cmd\evensidemargin,
|
|
% \cmd\columnsep,
|
|
% \cmd\hoffset, \cmd\voffset, \cmd\mag,
|
|
% \cmd\if@twocolumn, \cmd\if@twoside, \cmd\if@mparswitch, \cmd\if@reversemargin,
|
|
%
|
|
% \revtex's assignments can be overridden by
|
|
% any package or other statement in the document preamble,
|
|
% so it should be compatible.
|
|
%
|
|
%FIXME: one parameter is rendered semantically void (by \file{ltxgrid.dtx}):
|
|
% \cmd\if@twocolumn.
|
|
%
|
|
% \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.
|
|
% An explicit document class option overrides an assignment made by a substyle.
|
|
%
|
|
% \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{4.0c}{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}%
|
|
%
|
|
% \begin{macro}{\preprintsty@sw}
|
|
% The boolean \cmd\preprintsty@sw\ signifies that
|
|
% the document is to be formatted in preprint style.
|
|
% \changes{4.0a}{1998/01/31}{Rearrange the ordering so numerical ones come first. AO: David, what does this mean?}
|
|
% \changes{4.0a}{1998/06/10}{comma not space between email and homepage}
|
|
% \changes{4.0b}{1999/06/20}{Move this ``complex'' option to the front, where it can be overridden by ``simple'' options.}
|
|
% \changes{4.1b}{2008/06/01}{Add option reprint, opposite of preprint, and preferred alternative to twocolumn}
|
|
% \begin{macrocode}
|
|
\DeclareOption{preprint}{%
|
|
\@booleantrue\preprintsty@sw
|
|
\ExecuteOptions{12pt}%
|
|
}%
|
|
\DeclareOption{reprint}{%
|
|
\@booleanfalse\preprintsty@sw
|
|
\@booleantrue\twocolumn@sw
|
|
\ExecuteOptions{10pt}%
|
|
}%
|
|
\DeclareOption{manuscript}{%
|
|
\class@warn{Document class option manuscript is obsolete; use preprint instead}%
|
|
\ExecuteOptions{preprint}%
|
|
}%
|
|
\@booleanfalse\preprintsty@sw
|
|
% \end{macrocode}
|
|
% \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.
|
|
% \subsubsection{Showing PACS and keywords}%
|
|
% \changes{4.0b}{1999/06/20}{New option}
|
|
% \changes{4.0e}{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
|
|
}%
|
|
\@booleanfalse\showPACS@sw
|
|
\@booleanfalse\showKEYS@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Balance the last page when in two-column page grid}%
|
|
%
|
|
% \begin{macro}{\balancelastpage@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% 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
|
|
}%
|
|
\@booleantrue\balancelastpage@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Showing preprint numbers}%
|
|
%
|
|
% \begin{macro}{\preprint@sw}
|
|
% \changes{4.0d}{2000/04/10}{New option}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% \changes{4.1n}{2009/11/06}{(AO, 565) restore 4.0 behavior: default value of \cs{preprint@sw} follows \cs{preprintsty@sw}}
|
|
% The boolean \cmd\preprint@sw\ signifies that
|
|
% the preprints (cf. \cmd\preprint) are to be formatted (usually on the title page).
|
|
% The option \classoption{preprintnumbers} declares to do so,
|
|
% \classoption{nopreprintnumbers} declares not to;
|
|
% the default is to follow \cmd\preprintsty@sw.
|
|
% \begin{macrocode}
|
|
\DeclareOption{nopreprintnumbers}{\@booleanfalse\preprint@sw}%
|
|
\DeclareOption{preprintnumbers}{\@booleantrue\preprint@sw}%
|
|
\appdef\setup@hook{%
|
|
\@ifxundefined\preprint@sw{\let\preprint@sw\preprintsty@sw}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Hypertext Option}%
|
|
%
|
|
% \changes{4.0a}{1998/01/31}{protect against hyperref revtex kludges which are not needed now}
|
|
% \changes{4.0b}{1999/06/20}{Move this ``complex'' option to the front, where it can be overridden by ``simple'' options.}
|
|
% \changes{4.0rc4}{2001/07/23}{hyperref is no longer loaded via class option: use a usepackage statement instead}
|
|
% \begin{macrocode}
|
|
\DeclareOption{hyperref}{%
|
|
% \end{macrocode}
|
|
% The following code had been commented out, it is now truly a comment:
|
|
% \begin{verbatim}
|
|
%\AtEndOfClass{%
|
|
% \begingroup
|
|
% \edef\@tempa{%
|
|
% \let
|
|
% \noexpand\@clsextension
|
|
% \noexpand\@empty
|
|
% \noexpand\RequirePackage{hyperref}%
|
|
% \def\noexpand
|
|
% \@clsextension{\@clsextension}%
|
|
% }%
|
|
% \expandafter
|
|
% \endgroup
|
|
% \@tempa
|
|
%}%
|
|
% \def\@pointsize{10}%
|
|
% \end{verbatim}
|
|
%
|
|
% 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{4.0a}{1998/01/31}{print homepage}
|
|
%
|
|
% \begin{macrocode}
|
|
\class@warn{Class option "hyperref" is no longer supported.^^JEmploy \string\usepackage{hyperref} instead}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{Type Size}%
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% Use \cmd\@pointsize|=10| rather than \cmd\@ptsize|=0| to allow easy extensions
|
|
% to 9pt or whatever.
|
|
% Note: the three alternatives are mutually exclusive.
|
|
%
|
|
% At this point, the parameter \cmd\@pointsize\ is set to \cmd\undefined:
|
|
% a society \emph{must} give it a definition.
|
|
% \begin{macrocode}
|
|
\DeclareOption{10pt}{\def\@pointsize{10}}%
|
|
\DeclareOption{11pt}{\def\@pointsize{11}}%
|
|
\DeclareOption{12pt}{\def\@pointsize{12}}%
|
|
\let\@pointsize\@undefined
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{Media Size}%
|
|
%
|
|
% \begin{macro}{\paperheight}
|
|
% \begin{macro}{\paperwidth}
|
|
% \changes{4.0b}{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}
|
|
%
|
|
% \changes{4.1a}{2008/01/18}{(AO, 478) \cs{ds@letterpaper}, so that ``letterpaper really is the default''}%
|
|
% Effectively select \classoption{letterpaper}.
|
|
% \begin{macrocode}
|
|
\ds@letterpaper
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Bibnotes}%
|
|
%
|
|
% \begin{macro}{\frontmatter@footnote@produce}
|
|
% 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.
|
|
% \changes{4.1b}{2008/06/01}{(AO) Implement bibnotes through \cs{frontmatter@footnote@produce} instead of \cs{bibnotes@sw}}%
|
|
% \begin{macrocode}
|
|
\DeclareOption{bibnotes}{\let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote}%
|
|
\DeclareOption{nobibnotes}{\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote}%
|
|
\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote
|
|
\appdef\class@enddocumenthook{\auto@bib}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Footinbib}%
|
|
%
|
|
% \begin{macro}{\footinbib@sw}
|
|
% The boolean \cmd\footinbib@sw\ signifies that
|
|
% text footnotes are to be set in the bibliography, as endnotes.
|
|
%
|
|
% The document may set the value one way or the other via
|
|
% the following two class options.
|
|
% \begin{macrocode}
|
|
\DeclareOption{footinbib}{\@booleantrue\footinbib@sw}
|
|
\DeclareOption{nofootinbib}{\@booleanfalse\footinbib@sw}
|
|
% \end{macrocode}
|
|
% The default value is \cmd\false@sw, and the society or journal
|
|
% may override the default.
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% \begin{macrocode}
|
|
\@booleanfalse\footinbib@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{altaffilletter}%
|
|
%
|
|
% \begin{macro}{\altaffilletter@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% Determine the procedure \cmd\thefootnote\ used in frontmatter:
|
|
% the footnote symbol used in titlepage footnotes.
|
|
% \begin{macrocode}
|
|
\DeclareOption{altaffilletter}{\@booleantrue\altaffilletter@sw}%
|
|
\DeclareOption{altaffilsymbol}{\@booleanfalse\altaffilletter@sw}%
|
|
\@booleanfalse\altaffilletter@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{superbib}%
|
|
%
|
|
% \begin{macro}{\place@bibnumber}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% The procedure \cmd\place@bibnumber\ produces the number
|
|
% at the head of the \cmd\bibitem, in the bibliography.
|
|
% By default, it has the \cmd\bibnumfmt\ meaning assigned by the \classname{natbib} package.
|
|
% It may be overridden by society, journal, or by the document options.
|
|
%
|
|
% \begin{macrocode}
|
|
\DeclareOption{superbib}{%
|
|
\let\place@bibnumber\place@bibnumber@sup
|
|
}%
|
|
\def\place@bibnumber{\NATx@bibnumfmt}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \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}
|
|
%
|
|
% \subsubsection{citeautoscript}%
|
|
% \begin{macro}{\citeautoscript@sw}
|
|
% 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}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Variants on the Bibliography Style}%
|
|
% \changes{4.1b}{2008/07/01}{(AO) provide option longbibliography}
|
|
%
|
|
% \revtex\ anticipates that a society or journal will provide two related Bib\TeX bibliography style variants,
|
|
% designating one as the default.
|
|
% A pair of document class options \classoption{longbibliography} and \classoption{nolongbibliography}
|
|
% allows the user to explicitly select between them.
|
|
% \begin{macro}{\longbibliography@sw}
|
|
%
|
|
%\changes{4.2a}{2017/11/21}{(MD) Make long bibliography style the default now.}
|
|
% \revtex's default for \cmd\longbibliography@sw\ is \cmd\true@sw.
|
|
%
|
|
% \begin{macrocode}
|
|
\DeclareOption{longbibliography}{\@booleantrue\longbibliography@sw}%
|
|
\DeclareOption{nolongbibliography}{\@booleanfalse\longbibliography@sw}%
|
|
\@booleantrue\longbibliography@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\eprint@enable@sw}
|
|
% \changes{4.1o}{2010/02/10}{(AO, 580) Provide a document class option to turn off production of eprint field in bibliography.}
|
|
%
|
|
% The document class options \classoption{eprint} and \classoption{noeprint}
|
|
% give the user the ability to turn off production of the \texttt{eprint} field in the bibliography.
|
|
% \begin{macrocode}
|
|
\DeclareOption{eprint}{\@booleantrue\eprint@enable@sw}%
|
|
\DeclareOption{noeprint}{\@booleanfalse\eprint@enable@sw}%
|
|
\@booleantrue\eprint@enable@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Simplex/Duplex Pages}%
|
|
%
|
|
% \begin{macro}{\twoside@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) coordinate \cs{if@twoside} with \cs{twoside@sw}}
|
|
% The flag \cmd\twoside@sw\ signifies that the document is to be
|
|
% formatted for duplex printing.
|
|
% After the preamble is processed, we align the value
|
|
% of the kernel \cmd\newif\ switch \cmd\if@twoside\
|
|
% to that of \cmd\twoside@sw.
|
|
% \cmd\if@twoside\ itself is used in the kernel's
|
|
% \cmd\cleardoublepage\ and \cmd\@outputpage\ procedures.
|
|
% \begin{macrocode}
|
|
\@booleanfalse\twoside@sw
|
|
\appdef\document@inithook{%
|
|
\twoside@sw{\@twosidetrue}{\@twosidefalse}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \changes{4.0a}{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?
|
|
%FIXME: assign \cmd\if@mparswitch\ later (and protect the assignment, too).
|
|
% \begin{macrocode}
|
|
\DeclareOption{twoside}{\@booleantrue \twoside@sw\@mparswitchfalse}%
|
|
\DeclareOption{oneside}{\@booleanfalse\twoside@sw\@mparswitchtrue}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Two-Column Page Grid}%
|
|
%
|
|
% \begin{macro}{\twocolumn@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% \changes{4.1p}{2010/02/24}{(AO, 583) Provide interface to \classname{ltxgrid} \cs{onecolumn@grid@setup} and \cs{twocolumn@grid@setup}}
|
|
% 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.
|
|
%
|
|
% \classoption{onecolumn} specifies one-column page grid.
|
|
% The \classoption{twocolumn} class option employs the standard mechanism for
|
|
% changing the column grid: the \classname{ltxgrid} package.
|
|
% \begin{macrocode}
|
|
\DeclareOption{onecolumn}{\@booleanfalse\twocolumn@sw}%
|
|
\DeclareOption{twocolumn}{\@booleantrue\twocolumn@sw}%
|
|
\@booleanfalse\twocolumn@sw
|
|
% \end{macrocode}
|
|
% The column grid is determined by the state of the switch \cmd\twocolumn@sw
|
|
% and is effected at \cmd\class@documenthook\ time.
|
|
% The society or journal file may re-define \cmd\select@column@grid\
|
|
% to accomodate, e.g., more than two choices for the page grid.
|
|
%
|
|
% Note that \cmd\open@column@two\ adds items to the Main Vertical List,
|
|
% so constitutes the true beginning of the document.
|
|
%
|
|
% Note also that if the selected column grid is a one-column grid,
|
|
% there is nothing to do, because \classname{ltxgrid} has already
|
|
% set that up via \cmd\@begindocumenthook.
|
|
% \begin{macrocode}
|
|
\def\select@column@grid{%
|
|
\twocolumn@sw{%
|
|
\twocolumn@grid@setup
|
|
\open@twocolumn
|
|
}{%
|
|
\onecolumn@grid@setup
|
|
% \end{macrocode}
|
|
% \begin{verbatim}
|
|
% \open@onecolumn
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
}%
|
|
}%
|
|
\appdef\class@documenthook{%
|
|
\select@column@grid
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\clear@document}
|
|
% \changes{4.1n}{2009/12/05}{(AO, 569) Use of \classname{hyperref} interferes with column balancing of last page}%
|
|
%
|
|
% We install into \cmd\class@enddocumenthook\
|
|
% a trap for the procedure \cmd\clearpage\ that attempts to end the current page.
|
|
% This procedure needs to be headpatched with \cmd\close@column\ to end the current page grid.
|
|
%
|
|
% This procedure is executed after all typesetting is complete
|
|
% i.e., after items like \cmd\printtables, as well as all commands queued up by \cmd\AtEndDocument.
|
|
%
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\let\clearpage@ltx\clearpage
|
|
\prepdef\clear@document{\let\clearpage\clearpage@ltx\let\clear@document\@empty\close@column}%
|
|
\appdef\class@documenthook{%
|
|
\appdef\class@enddocumenthook{%
|
|
\let\clearpage\clear@document
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\authoryear@sw}
|
|
% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
|
|
% The boolean \cmd\authoryear@sw\ signifies that we are to use author-year citations rather than numerical citations.
|
|
%
|
|
% The \classoption{author-year} class option selects ``'author-year'' citations;
|
|
% \classoption{numerical} selectes ``numerical'' citations.
|
|
% The former is the default.
|
|
% \begin{macrocode}
|
|
\DeclareOption{author-year}{\@booleantrue\authoryear@sw}%
|
|
\DeclareOption{numerical}{\@booleanfalse\authoryear@sw}%
|
|
\@booleanfalse\authoryear@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}
|
|
% \end{macrocode}
|
|
% \classoption{galley} emulates setting the galleys of
|
|
% a two-column journal.
|
|
% CHANGED: this option should effectively set \cmd\preprintsty@sw\ false.
|
|
% NOTE: it makes no sense to assert both galley and twocolumn.
|
|
% \changes{4.1b}{2008/07/01}{Class option galley sets \cs{preprintsty@sw} to false}
|
|
%
|
|
% \begin{macrocode}
|
|
\DeclareOption{galley}{%
|
|
\ExecuteOptions{onecolumn}%
|
|
\@booleantrue\galley@sw
|
|
\@booleanfalse\preprintsty@sw
|
|
\appdef\setup@hook{%
|
|
\advance\textwidth-\columnsep
|
|
\textwidth.5\textwidth
|
|
}%
|
|
}%
|
|
\@booleanfalse\galley@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{raggedbottom or flushbottom}%
|
|
% \begin{macro}{\raggedcolumn@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% 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}
|
|
\@booleanfalse\raggedcolumn@sw
|
|
\appdef\setup@hook{%
|
|
\raggedcolumn@sw{\raggedbottom}{\flushbottom}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \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{macro}{\tightenlines@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% 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}
|
|
\DeclareOption{tightenlines}{\@booleantrue\tightenlines@sw}
|
|
\@booleanfalse\tightenlines@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{lengthcheck}%
|
|
%
|
|
% \begin{macro}{\lengthcheck@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% 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}
|
|
\@booleanfalse\lengthcheck@sw
|
|
% \end{macrocode}
|
|
% 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.
|
|
%
|
|
%FIXME: society or journal may have its own definition of this option.
|
|
% \begin{macrocode}
|
|
\DeclareOption{lengthcheck}{%
|
|
\@booleantrue\lengthcheck@sw
|
|
\ExecuteOptions{reprint}%
|
|
}%
|
|
% \end{macrocode}
|
|
% In addition, if length checking is in effect, we will enable
|
|
% the tally of text length.
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\lengthcheck@sw{\@booleantrue\tally@box@size@sw}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Draft and Final}%
|
|
%
|
|
% \begin{macro}{\draft@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% The flag \cmd\draft@sw\ signifies that the document is to be
|
|
% formatted in draft mode.
|
|
%
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\draft@sw{\overfullrule 5\p@}{\overfullrule\z@}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% Certain packages may pay attention to the
|
|
% class option \classoption{draft} that sets this Boolean.
|
|
% \begin{macrocode}
|
|
\DeclareOption{draft}{\@booleantrue\draft@sw}%
|
|
\DeclareOption{final}{\@booleanfalse\draft@sw}%
|
|
\@booleanfalse\draft@sw
|
|
% \end{macrocode}
|
|
%
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{eqsecnum}%
|
|
%
|
|
% \begin{macro}{\eqsecnum@sw}
|
|
% The flag \cmd\eqsecnum@sw\ signifies that equations are to be
|
|
% numbered with the section, e.g., ``Eq. (2.13)''.
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\eqsecnum@sw{%
|
|
\@addtoreset{equation}{section}%
|
|
\def\theequation@prefix{\arabic{section}.}%
|
|
}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% The \classoption{eqsecnum} class option signifies that equations are
|
|
% to be numbered within sections.
|
|
% \begin{macrocode}
|
|
\DeclareOption{eqsecnum}{\@booleantrue\eqsecnum@sw}%
|
|
\@booleanfalse\eqsecnum@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{secnumarabic}%
|
|
% \changes{4.1b}{2008/07/01}{(AO) No longer use \cs{secnumarabic@sw}, instead use \cs{setup@secnums}}
|
|
% The \classoption{secnumarabic} class option signifies that sectioning commands are
|
|
% to be numbered arabic:
|
|
% the procedure \cmd\secnums@arabic\ is executed as the default.
|
|
% Otherwise, the procedure \cmd\secnums@rtx\ determines things.
|
|
% The society or journal may redefine either procedure,
|
|
% and may change the definition of \cmd\setup@secnums\ itself,
|
|
% thereby establishing a different default.
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\setup@secnums
|
|
}%
|
|
\DeclareOption{secnumarabic}{%
|
|
\def\setup@secnums{\secnums@arabic}%
|
|
}%
|
|
\def\setup@secnums{\secnums@rtx}%
|
|
% \end{macrocode}
|
|
% The code that defines \cmd\secnums@rtx\ and \cmd\secnums@arabic\ appears
|
|
% in Section~\ref{sec:secnumarabic}.
|
|
%
|
|
% \begin{macro}{fleqn}
|
|
% FIXME: model fleqn after amsfonts. I no longer understand why I said this.
|
|
% \file{fleqn.clo} is not a package, so it can simply be \cmd\input.
|
|
% \begin{macrocode}
|
|
\DeclareOption{fleqn}{%
|
|
\input{fleqn.clo}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{floats/endfloats}%
|
|
%
|
|
% \begin{macro}{\floats@sw}
|
|
% \begin{macro}{\floatp@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% 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.
|
|
%
|
|
% 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.
|
|
%
|
|
% 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}
|
|
\@booleantrue\floats@sw
|
|
\@booleantrue\floatp@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \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}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% 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.
|
|
%
|
|
% \begin{macrocode}
|
|
\DeclareOption{titlepage}{\@booleantrue\titlepage@sw}
|
|
\DeclareOption{notitlepage}{\@booleanfalse\titlepage@sw}
|
|
\@booleanfalse\titlepage@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Substyle and Sub-substyle}%
|
|
%
|
|
% \begin{macro}{\change@society}
|
|
% \begin{macro}{\change@journal}
|
|
% \changes{4.1b}{2008/07/01}{(AO) Provide more diagnostics when \cs{@society} is assigned.}
|
|
% If the society or, resp., journal has already been assigned,
|
|
% notify user whether it is being overridden.
|
|
%
|
|
% \begin{macrocode}
|
|
\def\change@society#1{%
|
|
\def\@tempa{#1}%
|
|
\@ifxundefined\@society{%
|
|
\class@info{Selecting society \@tempa}%
|
|
\let\@society\@tempa
|
|
}{%
|
|
\@ifx{\@tempa\@society}{}{%
|
|
\class@warn{Conflicting society \@tempa<>\@society; not selected}%
|
|
}%
|
|
}%
|
|
}%
|
|
\def\change@journal#1{%
|
|
\def\@tempa{#1}%
|
|
\@ifxundefined\@journal{%
|
|
\class@info{Selecting journal \@tempa}%
|
|
\let\@journal\@tempa
|
|
}{%
|
|
\@ifx{\@tempa\@journal}{}{%
|
|
\class@warn{Conflicting journal \@tempa<>\@journal; not selected}%
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% Here had been the class options relating to the APS.
|
|
% Now that all societies are on an equal footing, this code is in the
|
|
% respective \file{.rtx} file.
|
|
% \begin{macrocode}
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{Optical Society of America}%
|
|
% Here are the class options relating to the Optical Society of America.
|
|
%
|
|
% Note: as of 2008, the only OSA module being distributed by ctan is \file{osajnl.rtx}.
|
|
% The class options declared here are, I think, unused.
|
|
% \begin{macrocode}
|
|
\DeclareOption{osa}{\change@society{osa}\let\@journal\@undefined}%
|
|
\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}
|
|
%
|
|
% \begin{macro}{\rtx@require@packages}
|
|
% \changes{4.1b}{2008/07/01}{Read in all required packages together}
|
|
% The procedure \cmd\rtx@require@packages\ accumulates all \cmd\RequirePackage\ statements
|
|
% in the course of loading the document class.
|
|
% Carrying out these operations at that time is needed:
|
|
% \cmd\ProcessOptions\ must be executed first.
|
|
% \begin{macrocode}
|
|
\let\rtx@require@packages\@empty
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\MakeUppercase}
|
|
% \begin{macro}{\MakeLowercase}
|
|
% \changes{4.1b}{2008/07/01}{Package textcase is now simply a required package}
|
|
% \changes{4.1b}{2008/07/01}{Read in all required packages together}
|
|
% \changes{4.1g}{2009/10/07}{(AO, 538) \cs{MakeTextUppercase} inappropriately expands the double backslash}
|
|
% We load the \classname{textcase} package of David Carlisle.
|
|
% Now that its bug of long standing has been repaired, we no longer need to doctor it up.
|
|
% And, because its loading has been deferred until \cmd\rtx@require@packages\ time,
|
|
% we no longer override \LaTeX\ here. Instead, the \classname{textcase} package
|
|
% will be asked to do that.
|
|
% \begin{macrocode}
|
|
\appdef\rtx@require@packages{%
|
|
\RequirePackage[overload]{textcase}%
|
|
}%
|
|
% \end{macrocode}
|
|
% The following code used to
|
|
% let the \classname{textcase} commands override those of \LaTeX:
|
|
% \begin{verbatim}
|
|
%\appdef\setup@hook{%
|
|
% \expandafter
|
|
% \let\csname MakeUppercase \expandafter\endcsname
|
|
% \csname MakeTextUppercase \endcsname
|
|
% \expandafter
|
|
% \let\csname MakeLowercase \expandafter\endcsname
|
|
% \csname MakeTextLowercase \endcsname
|
|
% }%
|
|
% \end{verbatim}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{amsfonts}
|
|
% \changes{4.1b}{2008/07/01}{Read in all required packages together}
|
|
% 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
|
|
}%
|
|
\appdef\rtx@require@packages{%
|
|
\@ifxundefined\class@amsfonts{}{\class@amsfonts}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{amssymb}
|
|
% \changes{4.1b}{2008/07/01}{Read in all required packages together}
|
|
% 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
|
|
}%
|
|
\appdef\rtx@require@packages{%
|
|
\@ifxundefined\class@amssymb{}{\class@amssymb}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{amsmath}
|
|
% \changes{4.1b}{2008/07/01}{Read in all required packages together}
|
|
% 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
|
|
}%
|
|
\appdef\rtx@require@packages{%
|
|
\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{4.1b}{2008/07/01}{Code relating to new syntax for frontmatter has been placed in \file{ltxfront.dtx}}
|
|
% Class options for presenting authors and their affiliations are now defined in
|
|
% \file{ltxfront.dtx}.
|
|
%
|
|
% \begin{macrocode}
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{Typeset by \revtex}%
|
|
%
|
|
% \begin{macro}{\byrevtex@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% The flag \cmd\byrevtex@sw\ signifies that the document should
|
|
% bear an imprint to the effect that it was formatted by this document class.
|
|
%
|
|
% 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}%
|
|
\@booleanfalse\byrevtex@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsection{Attempt to fix float placement failure}%
|
|
%
|
|
% \begin{macro}{\force@deferlist@sw}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% \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}%
|
|
\@booleanfalse\force@deferlist@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \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
|
|
%\@booleantrue\ltxgrid@foot@info@sw
|
|
}%
|
|
\DeclareOption{outputdebug}{%
|
|
\@booleantrue\outputdebug@sw
|
|
\@booleantrue\ltxgrid@info@sw
|
|
\@booleantrue\ltxgrid@foot@info@sw
|
|
\traceoutput
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \subsection{Option to relax page height}%
|
|
%
|
|
% \begin{macro}{\textheight@sw}
|
|
% 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}
|
|
% \end{macro}
|
|
%
|
|
% \subsection{Selecting procedure for processing abstract}%
|
|
% \changes{4.1b}{2008/07/01}{Remove options newabstract and oldabstract}
|
|
% Code defining options \classoption{newabstract} and \classoption{oldabstract} has been removed.
|
|
%
|
|
% \subsection{Option to turn on diagnostics in the frontmatter}%
|
|
%
|
|
% \begin{macro}{\frontmatterverbose@sw}
|
|
% \changes{4.1b}{2008/07/01}{Code relating to new syntax for frontmatter has been placed in \file{ltxfront.dtx}}
|
|
% A diagnostic option, not for the average enduser, which reveals
|
|
% the workings of the frontmatter.
|
|
% This code interfaces to that of \file{ltxfront.dtx}.
|
|
% \begin{macrocode}
|
|
\DeclareOption{frontmatterverbose}{\@booleantrue\frontmatterverbose@sw}%
|
|
\@booleanfalse\frontmatterverbose@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\linenumbers@sw}
|
|
% \changes{4.1f}{2009/07/07}{(AO, 513) Add class option linenumbers: number the lines a la \classname{lineno}}
|
|
% \changes{4.1n}{2009/12/13}{(AO, 573) arrange to load \classname{lineno} after any other packages.}%
|
|
% An option to number the lines of type in the output in the manner of \classname{lineno}.
|
|
%
|
|
% At present, we use that very package to implement this functionality.
|
|
% This means that users may modify the workings of that package per its documentation (which see).
|
|
%
|
|
% However, compatibility with \classname{amsmath} requires that \classname{lineno} be loaded afterwards.
|
|
% Therefore, we defer loading of this package until after the preamble is completed.
|
|
% \begin{macrocode}
|
|
\DeclareOption{linenumbers}{%
|
|
\appdef
|
|
\class@documenthook{%
|
|
\RequirePackage{lineno}[2005/11/02 v4.41]%
|
|
\linenumbersep4pt\relax
|
|
\linenumbers\relax
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% By default, line numbering is off.
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\NAT@merge}
|
|
% \changes{4.1f}{2009/07/15}{(AO, 523) Add class option nomerge, to turn off new natbib 8.3 syntax}
|
|
% Add class option nomerge, to turn off natbib 8.3 syntax for citation key.
|
|
% The default value of REVTeX 4.1 for \cmd\NAT@merge is \cmd\thr@@, which turns on
|
|
% the new syntax along with its semantics.
|
|
% Legacy documents that would be incompatible with the new syntax can be successfully processed
|
|
% with class option \classoption{nomerge}.
|
|
% \begin{macrocode}
|
|
\DeclareOption{nomerge}{%
|
|
\appdef\setup@hook{%
|
|
\@ifnum{\NAT@merge>\z@}{\let\NAT@merge\z@}{}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsection{Default Option, Society, Journal, and pointsize}%
|
|
%
|
|
% \changes{4.1a}{2008/01/18}{(AO, 488) Change processing of options to allow an unused option to specify society and journal}%
|
|
% This change will not break OSA documents because that society is still built in to revtex4.
|
|
%
|
|
% \begin{macro}{\@parse@class@options@society}
|
|
% \begin{macro}{\@parse@class@options@}
|
|
% \changes{4.1b}{2008/07/01}{Procedures \cs{@parse@class@options@society} and \cs{@parse@class@options@journal} and friends}
|
|
% The procedure \cmd\@parse@class@options@society\ parses the options passed to this document class
|
|
% for the \cmd\@society.
|
|
% It is like \cmd\ProcessOptions*\ in that it accesses
|
|
% \cmd\@ptionlist\{\cmd\@currname.\cmd\@currext\}.
|
|
% Any undefined option is considered: if there is a corresponding \file{.rtx} file,
|
|
% it will change the society accordingly
|
|
% and define a placeholder class option for the society thus found
|
|
% (thus preventing a spurious "option not found" message).
|
|
%
|
|
% The procedure \cmd\@parse@class@options@\ parses the document's options
|
|
% for any that set the \cmd\csname\ provided.
|
|
% \begin{macrocode}
|
|
\def\@parse@class@options@society{%
|
|
\edef\@tempa{\@ptionlist{\@currname.\@currext}}%
|
|
\expandafter\@for\expandafter\CurrentOption\expandafter:\expandafter=\@tempa\do{%
|
|
\expandafter\@ifnotrelax\csname ds@\CurrentOption\endcsname{}{%
|
|
\IfFileExists{\CurrentOption\substyle@post.\substyle@ext}{%
|
|
\expandafter\change@society\expandafter{\CurrentOption}%
|
|
\expandafter\let\csname ds@\CurrentOption\endcsname\@empty
|
|
}{}%
|
|
}%
|
|
}%
|
|
}%
|
|
\def\@parse@class@options@#1{%
|
|
\edef\@tempa{\@ptionlist{\@currname.\@currext}}%
|
|
\expandafter\@for\expandafter\CurrentOption\expandafter:\expandafter=\@tempa\do{%
|
|
\expandafter\@ifnotrelax\csname ds@\CurrentOption\endcsname{%
|
|
\begingroup\csname ds@\CurrentOption\endcsname
|
|
\@ifxundefined#1{%
|
|
\endgroup
|
|
}{%
|
|
\expandafter\endgroup\expandafter\def\expandafter#1\expandafter{#1}%
|
|
}%
|
|
}{}%
|
|
}%
|
|
}%
|
|
\def\@parse@class@options@journal{%
|
|
\edef\@tempa{\@ptionlist{\@currname.\@currext}}%
|
|
\expandafter\@for\expandafter\CurrentOption\expandafter:\expandafter=\@tempa\do{%
|
|
\expandafter\@ifnotrelax\csname ds@\CurrentOption\endcsname{%
|
|
\begingroup
|
|
\csname ds@\CurrentOption\endcsname
|
|
\@ifxundefined\@journal{%
|
|
\endgroup
|
|
}{%
|
|
\expandafter\endgroup\expandafter\def\expandafter\@journal\expandafter{\@journal}%
|
|
}%
|
|
}{}%
|
|
}%
|
|
}%
|
|
\def\@parse@class@options{%
|
|
\edef\@tempa{\@ptionlist{\@currname.\@currext}}%
|
|
\expandafter\@for\expandafter\CurrentOption\expandafter:\expandafter=\@tempa\do{%
|
|
\expandafter\@ifnotrelax\csname ds@\CurrentOption\endcsname{%
|
|
\begingroup
|
|
\csname ds@\CurrentOption\endcsname
|
|
\@ifxundefined\@pointsize{%
|
|
\endgroup
|
|
}{%
|
|
\expandafter\endgroup\expandafter\def\expandafter\@pointsize\expandafter{\@pointsize}%
|
|
}%
|
|
}{%
|
|
\IfFileExists{\CurrentOption\substyle@post.\substyle@ext}{%
|
|
\expandafter\change@society\expandafter{\CurrentOption}%
|
|
\expandafter\let\csname ds@\CurrentOption\endcsname\@empty
|
|
}{}%
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \changes{4.1j}{2009/10/25}{(AO, 545) hypertext capabilities off by default; enable with \classoption{hypertext}}
|
|
% The class option \classoption{hypertext} enables the built-in hypertext capabilities,
|
|
% which coincide with those of \classname{custom-bib}-generated BIBTeX styles
|
|
% using the guard code \texttt{hypertext}.
|
|
%
|
|
% Note that APS has these capabilities turned off by default;
|
|
% Loading the hyperref package turns them on.
|
|
% \begin{macrocode}
|
|
\DeclareOption{hypertext}{\hypertext@enable@ltx}%
|
|
\appdef\document@inithook{\@ifpackageloaded{hyperref}{\hypertext@enable@ltx}{}}%
|
|
% \end{macrocode}
|
|
%
|
|
% The default handling for a document class option depends upon whether the \cmd\@society\ is
|
|
% defined.
|
|
%
|
|
% If not, then hunt for a \file{.rtx} file with that name.
|
|
% If it exists, then we will take this option as the name of the society,
|
|
% otherwise, declare the option as not used.
|
|
%
|
|
% (This behavior is similar to the \LaTeX2.09 handling, where
|
|
% one looked for a \file{.sty} file, except that
|
|
% in this case, we must provide for journal substyles that may be
|
|
% defined in the society file, or have their own journal substyle file.)
|
|
%
|
|
% At the point where the class file is finished loading,
|
|
% we then read in the society file.
|
|
% That file can define further class options, such as the journal substyle.
|
|
%
|
|
% For users, this will mean that they can specify the society and journal simply
|
|
% by specifying first the former and then the latter among their document class options.
|
|
% The society \emph{must} have a corresponding \file{.rtx}.
|
|
%
|
|
% \changes{4.1b}{2008/05/29}{The csname substyle@ext is now defined without a dot (.), to be compatible with \LaTeX usage (see @clsextension and @pkgextension).}
|
|
%
|
|
% \begin{macrocode}
|
|
%</options>
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
%<*package>
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\@process@society}
|
|
% \begin{macro}{\@process@journal}
|
|
% \begin{macro}{\@process@pointsize}
|
|
% \begin{macrocode}
|
|
\def\substyle@post{4-2}%
|
|
\def\substyle@ext{rtx}%
|
|
\DeclareOption*{\OptionNotUsed}%
|
|
% \end{macrocode}
|
|
% A society substyle may define its own options, via \cmd\DeclareOption.
|
|
%
|
|
% At the end of this document class, we process the society file,
|
|
% using \file{aps.rtx} if none has been specified in the document.
|
|
% \begin{macrocode}
|
|
\def\@process@society#1{%
|
|
\@ifxundefined\@society{%
|
|
\class@warn{No Society specified, using default society #1}%
|
|
\def\@society{#1}\let\@journal\@undefined
|
|
}{}%
|
|
\expandafter\input\expandafter{\@society\substyle@post.\substyle@ext}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% A society substyle can encompass any number of journal substyles;
|
|
% we use the following procedure to invoke the proper one.
|
|
% \begin{macrocode}
|
|
\def\@process@journal#1{%
|
|
\@ifxundefined\@journal{%
|
|
\class@warn{No journal specified, using default #1}%
|
|
\def\@journal{#1}%
|
|
}{}%
|
|
\expandafter\expandafter
|
|
\expandafter\rtx@do@substyle
|
|
\expandafter\expandafter
|
|
\expandafter{\expandafter\@society\@journal}%
|
|
}%
|
|
\def\rtx@do@substyle#1{%
|
|
\InputIfFileExists{#1\substyle@post.\substyle@ext}{}{\csname rtx@#1\endcsname}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% Document class options \classoption{10pt}, \classoption{11pt}, and \classoption{12pt}
|
|
% are implemented by \revtex\ itself and determine \cmd\@pointsize.
|
|
% These provide formatting settings appropriate to the society's journals.
|
|
%
|
|
% If not specified by the document, a value \cmd\@pointsize@default\ is used.
|
|
% This default can be set by the journal. Here, the society sets its default.
|
|
% \begin{macrocode}
|
|
\def\@process@pointsize#1{%
|
|
\@ifxundefined\@pointsize{%
|
|
\def\@pointsize{#1}%
|
|
\class@warn{No type size specified, using default \@pointsize}%
|
|
}{}%
|
|
\expandafter\expandafter
|
|
\expandafter\rtx@do@substyle
|
|
\expandafter\expandafter
|
|
\expandafter{\expandafter\@society\@pointsize pt}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \subsection{Class-Asserted Options}%
|
|
% \changes{4.0b}{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.
|
|
%
|
|
% \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}
|
|
% \begin{macro}{\ps@article@final}
|
|
% \begin{macro}{\ps@preprint}
|
|
% \changes{4.0a}{1998/01/31}{Move after process options, so the following test works}
|
|
% \changes{4.0b}{1999/06/20}{Defer decision until \cs{AtBeginDocument} time}
|
|
% \changes{4.0c}{1999/11/13}{Insert procedure \cs{checkindate}}
|
|
% \changes{4.0rc1}{2001/06/17}{Running headers always as if two-sided}
|
|
% \begin{macrocode}
|
|
\def\ps@article{%
|
|
\def\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil{\leftmark}}%
|
|
\def\@oddhead{\let\\\heading@cr{\rightmark}\hfil\checkindate\quad\thepage}%
|
|
\def\@oddfoot{}%
|
|
\def\@evenfoot{}%
|
|
\let\@mkboth\markboth
|
|
\let\sectionmark\@gobble
|
|
\let\subsectionmark\@gobble
|
|
}%
|
|
\def\ps@article@final{%
|
|
\def\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil{\leftmark}}%
|
|
\def\@oddhead{\let\\\heading@cr{\rightmark}\hfil\checkindate\quad\thepage}%
|
|
\def\@oddfoot{}%
|
|
\def\@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%
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\def\heading@cr{\unskip\space\ignorespaces}%
|
|
% \end{macrocode}
|
|
%
|
|
% \changes{4.0c}{1999/11/13}{Do not put by REVTeX in every page foot}
|
|
% \changes{4.0c}{1999/11/13}{Insert procedure \cs{checkindate}}
|
|
% \begin{macrocode}
|
|
\def\ps@preprint{%
|
|
\def\@oddfoot{\hfil\thepage\quad\checkindate\hfil}%
|
|
\def\@evenfoot{\hfil\thepage\quad\checkindate\hfil}%
|
|
\def\@oddhead{}%
|
|
\def\@evenhead{}%
|
|
\let\@mkboth\@gobbletwo
|
|
\let\sectionmark\@gobble
|
|
\let\subsectionmark\@gobble
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\let\@oddhead\@empty
|
|
\let\@evenhead\@empty
|
|
\let\@oddfoot\@empty
|
|
\let\@evenfoot\@empty
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\lastpage@putlabel}
|
|
% Support the default meaning of \cmd\@endpage.
|
|
% \changes{4.0a}{1998/01/31}{Move after process options, so \cs{clearpage} not in scope of twocolumn}
|
|
% \changes{4.1k}{2009/11/06}{(AO, 554) give the \cs{newlabel} command syntax appropriate to the hyperref package}
|
|
% 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 procedure into document endgame processing 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 assume no further \cmd\shipout s will be done past this point.
|
|
% \changes{4.1n}{2009/12/09}{(AO, 569) execute the after-last-shipout procedures from within the safety of the output routine}%
|
|
% \begin{macrocode}
|
|
\appdef\clear@document{%
|
|
\do@output@cclv{%
|
|
\lastpage@putlabel
|
|
\tally@box@size@sw{\total@text}{}%
|
|
}%
|
|
}%
|
|
\providecommand\write@column@totals{}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \section{Required Packages}
|
|
% \url{CTAN:macros/latex/contrib/other/misc/url.sty}%
|
|
% \begin{macrocode}
|
|
\appdef\rtx@require@packages{%
|
|
\RequirePackage{url}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \section{Incompatible Packages}
|
|
%
|
|
% We wait until after the preamble is processed, then check for any packages
|
|
% that might have been loaded which we know to be incompatible with \revtex.
|
|
%
|
|
% The \classname{multicol} package is incompatible with \classname{ltxgrid}, which replaces it.
|
|
% The \classname{cite} package is incompatible with \classname{natbib}, which replaces its functionality.
|
|
% The functionality of the \classname{mcite} package is provided by \classname{natbib}.
|
|
% \begin{macrocode}
|
|
\appdef\document@inithook{%
|
|
\incompatible@package{cite}%
|
|
\incompatible@package{mcite}%
|
|
\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}{%
|
|
% <journal-specific setup>
|
|
%\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\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{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}
|
|
%
|
|
% \changes{4.1b}{2008/06/30}{(AO) Structure the Abstract using the \texttt{bibliography} environment}
|
|
% \begin{macrocode}
|
|
\def\descriptionlabel#1{%
|
|
\hspace\labelsep \normalfont\bfseries #1\unskip:%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\newenvironment{description}{%
|
|
\list{}{%
|
|
\labelwidth\z@ \itemindent-\leftmargin
|
|
\let\makelabel\descriptionlabel
|
|
}%
|
|
}{%
|
|
\endlist
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsection{Sectioning Commands\label{sec:secnumarabic}}
|
|
%
|
|
% \subsubsection{Sectioning Commands and Their Productions}%
|
|
% The following counters are defined by LaTeX's standard document classes.
|
|
% We do likewise, then assign flag values to the productions, awaiting
|
|
% overrides.
|
|
% \begin{macrocode}
|
|
\newcounter{part}%
|
|
\let\thepart\@undefined
|
|
\newcounter{section}%
|
|
\let\thesection\@undefined
|
|
\newcounter{subsection}[section]%
|
|
\let\thesubsection\@undefined
|
|
\newcounter{subsubsection}[subsection]%
|
|
\let\thesubsubsection\@undefined
|
|
\newcounter{paragraph}[subsubsection]%
|
|
\let\theparagraph\@undefined
|
|
\newcounter{subparagraph}[paragraph]%
|
|
\let\thesubparagraph\@undefined
|
|
% \end{macrocode}
|
|
% The procedure invoked by \cmd\setup@secnums\ provides meanings for these productions.
|
|
%
|
|
% \begin{macro}{\secnums@rtx}
|
|
% \begin{macro}{\secnums@arabic}
|
|
% These two procedures define the meanings of each of the productions
|
|
% of the counters of the sectioning commands,
|
|
% but only if nothing else has defined it.
|
|
% \begin{macrocode}
|
|
\def\secnums@rtx{%
|
|
\@ifxundefined\thepart{%
|
|
\def\thepart{\Roman{part}}%
|
|
}{}%
|
|
\@ifxundefined\thesection{%
|
|
\def\thesection {\Roman{section}}%
|
|
\def\p@section {}%
|
|
}{}%
|
|
\@ifxundefined\thesubsection{%
|
|
\def\thesubsection {\Alph{subsection}}%
|
|
\def\p@subsection {\thesection\,}%
|
|
}{}%
|
|
\@ifxundefined\thesubsubsection{%
|
|
\def\thesubsubsection {\arabic{subsubsection}}%
|
|
\def\p@subsubsection {\thesection\,\thesubsection\,}%
|
|
}{}%
|
|
\@ifxundefined\theparagraph{%
|
|
\def\theparagraph {\alph{paragraph}}%
|
|
\def\p@paragraph {\thesection\,\thesubsection\,\thesubsubsection\,}%
|
|
}{}%
|
|
\@ifxundefined\thesubparagraph{%
|
|
\def\thesubparagraph {\arabic{subparagraph}}%
|
|
\def\p@subparagraph {\thesection\,\thesubsection\,\thesubsubsection\,\theparagraph\,}%
|
|
}{}%
|
|
}%
|
|
\def\secnums@arabic{%
|
|
\@ifxundefined\thepart{%
|
|
\def\thepart {\Roman{part}}%
|
|
}{}%
|
|
\@ifxundefined\thesection{%
|
|
\def\thesection {\Roman{section}}%
|
|
\def\p@section {}%
|
|
}{}%
|
|
\@ifxundefined\thesubsection{%
|
|
\def\thesubsection {\thesection.\arabic{subsection}}%
|
|
\def\p@subsection {}%
|
|
}{}%
|
|
\@ifxundefined\thesubsubsection{%
|
|
\def\thesubsubsection {\thesubsection.\arabic{subsubsection}}%
|
|
\def\p@subsubsection {}%
|
|
}{}%
|
|
\@ifxundefined\theparagraph{%
|
|
\def\theparagraph {\thesubsubsection.\arabic{paragraph}}%
|
|
\def\p@paragraph {}%
|
|
}{}%
|
|
\@ifxundefined\thesubparagraph{%
|
|
\def\thesubparagraph {\theparagraph.\arabic{subparagraph}}%
|
|
\def\p@subparagraph {}%
|
|
}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \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{4.0c}{1999/11/13}{also spelled ``acknowledgements''.}
|
|
% \changes{4.0d}{2000/05/18}{But alternative spelling is deprecated.}
|
|
% \begin{macrocode}
|
|
\newenvironment{acknowledgments}{%
|
|
\acknowledgments@sw{%
|
|
\expandafter\section\expandafter*\expandafter{\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}
|
|
%
|
|
% \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{4.0b}{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{macrocode}
|
|
\def\listoffigures{\print@toc{lof}}%
|
|
\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}%
|
|
% \end{macrocode}
|
|
%
|
|
% \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{4.0b}{1999/06/20}{One-line caption sets flush left.}
|
|
% \changes{4.0c}{1999/11/13}{Prevent an inner footnote from performing twice}
|
|
% \changes{4.1a}{2008/01/18}{(AO, 460) ``Proper style is "FIG. 1. ..." (no colon)''}%
|
|
% There is a hook \cmd\@caption@fignum@sep\ for determining
|
|
% the separator following the float number, e.g., ``Fig.1''.
|
|
% Formerly, we had defined it to be ``: '', now the colon has been replace by a period (full stop).
|
|
% \begin{macrocode}
|
|
\long\def\@makecaption#1#2{%
|
|
\par
|
|
% \nobreak
|
|
\vskip\abovecaptionskip
|
|
\begingroup
|
|
\small\rmfamily
|
|
\sbox\@tempboxa{%
|
|
\let\\\heading@cr
|
|
\@make@capt@title{#1}{#2}%
|
|
}%
|
|
\@ifdim{\wd\@tempboxa >\hsize}{%
|
|
\begingroup
|
|
\samepage
|
|
\flushing
|
|
\let\footnote\@footnotemark@gobble
|
|
\@make@capt@title{#1}{#2}\par
|
|
\endgroup
|
|
}{%
|
|
\global \@minipagefalse
|
|
\hb@xt@\hsize{\hfil\unhbox\@tempboxa\hfil}%
|
|
}%
|
|
\endgroup
|
|
\vskip\belowcaptionskip
|
|
}%
|
|
\def\@make@capt@title#1#2{%
|
|
\@ifx@empty\float@link{\@firstofone}{\expandafter\href\expandafter{\float@link}}%
|
|
{#1}\@caption@fignum@sep#2%
|
|
}%
|
|
\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%
|
|
}%
|
|
\def\@caption@fignum@sep{. }%
|
|
\def\setfloatlink{\def\float@link}%
|
|
\let\float@link\@empty
|
|
% \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}
|
|
% We allocate a box register for use in tallying the column inches of floats of this type.
|
|
% \begin{macrocode}
|
|
\expandafter\newbox\csname fbox@\ftype@figure\endcsname
|
|
\expandafter\setbox\csname fbox@\ftype@figure\endcsname\hbox{}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \subsubsection{Deferring \env{figure} Floats}%
|
|
%
|
|
% We determine if figures are to float or be deferred until \cmd\printfigures\ time.
|
|
% If so, we open the stream that will receive the deferred document portions.
|
|
% \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{4.0b}{1999/06/20}{call \cs{print@floats}}
|
|
% \changes{4.0c}{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
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \subsection{Tables}
|
|
% \changes{4.0b}{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}
|
|
% We allocate a box register for use in tallying the column inches of floats of this type.
|
|
% \begin{macrocode}
|
|
\expandafter\newbox\csname fbox@\ftype@table\endcsname
|
|
\expandafter\setbox\csname fbox@\ftype@table\endcsname\hbox{}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macrocode}
|
|
\def\listoftables{\print@toc{lot}}%
|
|
\let\l@table\l@figure
|
|
% \end{macrocode}
|
|
%
|
|
% \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}%
|
|
%
|
|
% After all packages are loaded, we decide
|
|
% if tables will float or will be deferred until \cmd\printtables\ time.
|
|
%
|
|
% We also deal with the possibility of \env{longtable} environments.
|
|
%
|
|
% \begin{macrocode}
|
|
\def\set@table@environments{%
|
|
\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\document@inithook{%
|
|
\set@table@environments
|
|
}%
|
|
\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{4.0b}{1999/06/20}{only execute if appropriate}
|
|
% \changes{4.0c}{1999/11/13}{*-form mandates pagebreak}
|
|
% \changes{4.0d}{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}
|
|
%
|
|
%
|
|
% \subsection{Videos}
|
|
%\changes{4.1r}{2010/06/22}{(AO, 595) Provide \cs{lovname} along with other List of Videos definitions.}%
|
|
%
|
|
% \begin{environment}{video}
|
|
% We define the \env{video} environment analogously to the
|
|
% \env{figure} and \env{table} environments; it is intended to contain a video.
|
|
%
|
|
% \begin{macrocode}
|
|
\newenvironment{video}
|
|
{\@float{video}}
|
|
{\end@float}%
|
|
\newenvironment{video*}
|
|
{\@dblfloat{video}}
|
|
{\end@dblfloat}%
|
|
% \end{macrocode}
|
|
% \end{environment}
|
|
%
|
|
% \begin{macro}{\thevideo}
|
|
% The video counter, float placement defaults, strings.
|
|
% \begin{macrocode}
|
|
\newcounter{video}
|
|
\renewcommand \thevideo {\@arabic\c@video}
|
|
% \end{macrocode}
|
|
%
|
|
% File extension and localizable strings.
|
|
% \begin{macrocode}
|
|
\def\ext@video{lov}%
|
|
\def\fname@video{Video}%
|
|
\def\lovname{List of Videos}%
|
|
% \end{macrocode}
|
|
%
|
|
% Float type and default placement.
|
|
% \begin{macrocode}
|
|
\def\fps@video{tbp}%
|
|
\def\ftype@video{4}%
|
|
\def\fnum@video{\fname@video~\thevideo}%
|
|
\appdef\document@inithook{%
|
|
\@ifxundefined\c@float@type{}{%
|
|
\global\setcounter{float@type}{8}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% We allocate a box register for use in tallying the column inches of floats of this type.
|
|
% \begin{macrocode}
|
|
\expandafter\newbox\csname fbox@\ftype@video\endcsname
|
|
\expandafter\setbox\csname fbox@\ftype@video\endcsname\hbox{}%
|
|
% \end{macrocode}
|
|
% The documentation for the \classname{hyperref} package, \file{hyperref.dtx} states:
|
|
% ``classes or package which introduce new elements need to define
|
|
% an equivalent \verb+\theH<name>+ for every \verb+\the<name>+''
|
|
% We do accordingly here.
|
|
% \begin{macrocode}
|
|
\let\theHvideo\thevideo
|
|
% \end{macrocode}
|
|
% But \file{hyperref.dtx} goes on to say,
|
|
% ``We do make a trap to make \verb+\theH<name>+ be the same as \verb+\arabic{<name>}+,
|
|
% if \verb+\theH<name>+ is not defined\ldots''
|
|
% However, it's not doing that right now (as of 6.77u),
|
|
% and I cannot find any such code in there anymore.
|
|
% \end{macro}
|
|
%
|
|
% \begin{macrocode}
|
|
\def\listofvideos{\print@toc{lov}}%
|
|
\let\l@video\l@figure
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{Deferring \env{video} Floats}%
|
|
%
|
|
% We determine if videos are to float or be deferred until \cmd\printvideos\ time.
|
|
% If so, we open the stream that will receive the deferred document portions.
|
|
% \begin{macrocode}
|
|
\appdef\class@documenthook{%
|
|
\do@if@floats{video}{.vdx}%
|
|
}%
|
|
\appdef\class@enddocumenthook{%
|
|
\printvideos\relax
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\printvideos}
|
|
% The user-level command \cmd\printvideos\ determines
|
|
% where the videos 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\printvideos\ command,
|
|
% the videos 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.
|
|
% \begin{macrocode}
|
|
\newcommand\printvideos{%
|
|
\@ifstar{\true@sw}{\floatp@sw{\true@sw}{\false@sw}}%
|
|
{%
|
|
\print@float{video}{\oneapage}%
|
|
}{%
|
|
\print@float{video}{}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \section{Tabular}
|
|
% Every APS 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{}%
|
|
% \end{macrocode}
|
|
% \begin{verbatim}
|
|
%\RequirePackage{dcolumn}%
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
\appdef\document@inithook{%
|
|
\@ifpackageloaded{dcolumn}{%
|
|
\expandafter\@ifnotrelax\csname NC@find@d\endcsname{}{%
|
|
\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{4.0a}{1998/06/10}{single space footnotes}
|
|
% \changes{4.0b}{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{macro}{\@makefnmark}
|
|
% We customize the presentation of the footnote mark: it will not be italic.
|
|
% \begin{macrocode}
|
|
\def\@makefntext#1{%
|
|
\def\baselinestretch{1}%
|
|
\parindent1em%
|
|
\noindent
|
|
\hb@xt@1.8em{%
|
|
\hss\@makefnmark
|
|
}%
|
|
#1%
|
|
\par
|
|
}%
|
|
\def\@makefnmark{%
|
|
\hbox{%
|
|
\@textsuperscript{%
|
|
\normalfont\@thefnmark
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \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.
|
|
%
|
|
% 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 \cmd\let \cmd\NAT@sort\ to be \cmd\@ne.
|
|
% However, if you prefer the effect of having neither \classoption{sort} nor \classoption{sort\&compress},
|
|
% you must \cmd\let \cmd\NAT@sort\ to be \cmd\z@ and you must also define
|
|
% \cmd\let\cmd\NAT@cmprs\ to be \cmd\z@.
|
|
%
|
|
% As of version 8.2, \classname{natbib} now no longer binds at the point where it is read in.
|
|
% This means that we can freely change \cmd\NAT@sort, \cmd\NAT@cmprs, and the new
|
|
% \cmd\NAT@merge. Henceforth, we require that this later version be used.
|
|
%
|
|
% 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{macro}{\rev@citet}
|
|
% \begin{macro}{\rev@citealp}
|
|
% \begin{macro}{\rev@citealpnum}
|
|
% We define variants on \classname{natbib}'s commands \cmd\citet, \cmd\citealp, and \cmd\citealpnum.
|
|
% \cmd\rev@citealpnum\ uses a numerical citation.
|
|
% \cmd\rev@citealp\ and \cmd\rev@citealpnum\ are the aliases of \cmd\onlinecite,
|
|
% \cmd\rev@citet\ that of \cmd\textcite.
|
|
%
|
|
% In each case, we invoke \cmd\rtx@swap@citea\ to effect different productions between
|
|
% multiple arguments to the \cmd\cite\ command.
|
|
%
|
|
% \cmd\rev@citealpnum\ provides textual citations where superscript citations are the default.
|
|
% 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.
|
|
% \begin{macrocode}
|
|
\expandafter\DeclareRobustCommand
|
|
\expandafter\rev@citet
|
|
\expandafter{%
|
|
\expandafter\begingroup
|
|
\expandafter\rtx@swap@citea
|
|
\expandafter\g@bblefirsttoken
|
|
\csname citet \endcsname
|
|
}%
|
|
\expandafter\DeclareRobustCommand
|
|
\expandafter\rev@citealp
|
|
\expandafter{%
|
|
\expandafter\begingroup
|
|
\expandafter\rtx@swap@citea
|
|
\expandafter\g@bblefirsttoken
|
|
\csname citealp \endcsname
|
|
}%
|
|
\expandafter\DeclareRobustCommand
|
|
\expandafter\rev@citealpnum
|
|
\expandafter{%
|
|
\expandafter\begingroup
|
|
\expandafter\rtx@swap@citenum
|
|
\expandafter\g@bblefirsttoken
|
|
\csname citealp \endcsname
|
|
}%
|
|
\def\rtx@swap@citenum{%
|
|
\rtx@swap@citea
|
|
\let\@cite\NAT@citenum
|
|
\let\NAT@mbox\mbox
|
|
\let\citeyear\NAT@citeyear
|
|
\let\NAT@space\NAT@spacechar
|
|
}%
|
|
\def\g@bblefirsttoken{%
|
|
\expandafter\true@sw
|
|
\expandafter\@empty
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\rtx@citesuper}
|
|
% We prepare to 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}
|
|
\newcommand\rtx@citesuper[3]{%
|
|
\ifNAT@swa
|
|
\leavevmode
|
|
\unskip
|
|
% \hspace{1\p@}%
|
|
\textsuperscript{\normalfont#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}{\rtx@bibsection}
|
|
% Prepare to override \classname{natbib}'s definition of \cmd\bibsection.
|
|
% \begin{macrocode}
|
|
\def\rtx@bibsection{%
|
|
\@ifx@empty\refname{%
|
|
\par
|
|
}{%
|
|
% \let\@hangfroms@section\@hang@froms
|
|
\expandafter\section\expandafter*\expandafter{\refname}%
|
|
\@nobreaktrue
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\rtx@swap@citea}
|
|
% \begin{macro}{\rtx@def@citea}
|
|
% \begin{macro}{\rtx@def@citea@close}
|
|
% \begin{macro}{\rtx@def@citea@box}
|
|
% The procedures |\rtx@def@citea|, |\rtx@def@citea@close|, and |\rtx@def@citea@box|
|
|
% can take over the management of \classname{natbib}'s |\@citea| macro to effect more sophisticated
|
|
% behavior of the punctuation between textual citations. The switch is performed by \cmd\rtx@swap@citea.
|
|
%
|
|
% \changes{4.1j}{2009/10/25}{(AO, 552) Repair spacing in \cs{onlinecite}}
|
|
% In these procedures, we use \cmd\count@\ to count the number of arguments of the \cmd\cite\ command,
|
|
% and we use \cmd\c@NAT@ctr\ to keep track of which argument we are processing.
|
|
% The latter counter is created by \classname{natbib} and used there solely in bibliography processing,
|
|
% where it keeps track of the reference number.
|
|
% We take over its use in these macros, but only locally; therefore these procedures should work properly, even within the bibliography.
|
|
%FIXME: check whether this is true!
|
|
%
|
|
% Because we are using a scratch counter \cmd\count@, we are vulnerable to other \TeX\ programmers
|
|
% who patch in to \classname{natbib}'s processing and who might use that counter at the same time we are doing so.
|
|
% This is a potential source of trouble for us.
|
|
%FIXME: store the value of \cmd\count@\ in a private \cmd\csname!
|
|
%
|
|
% Note that \cmd\rtx@def@citea\ begins the same as \cmd\NAT@def@citea, which it replaces,
|
|
% then makes further decisions based on the values of the counters.
|
|
%
|
|
% Note also that, in \classname{natbib}, the replacement part of \cmd\NAT@def@citea@close\ could be rewritten as
|
|
% \cmd\NAT@def@citea\cmd\prepdef\cmd\@citea\verb+{+\cmd\NAT@@close\verb+}+, which
|
|
% would them obviate the need for us to override its meaning.
|
|
%
|
|
% Note, too, the effect of \cmd\rtx@def@citea@box, which replaces \cmd\NAT@def@citea@box,
|
|
% is almost the same as the latter, except the entire \cmd\@citea\ is given as the argument
|
|
% of \cmd\NAT@mbox.
|
|
%
|
|
% Finally, bear in mind that the English (and some American editors) do not place a comma
|
|
% before the ``and''; our procedures do (but they could be rewritten with that convention).
|
|
% \begin{macrocode}
|
|
\def\rtx@swap@citea{%
|
|
\let\NAT@def@citea\rtx@def@citea
|
|
\let\NAT@def@citea@close\rtx@def@citea@close
|
|
\let\NAT@def@citea@box\rtx@def@citea@box
|
|
}%
|
|
\def\rtx@def@citea{%
|
|
\def\@citea{\NAT@separator\NAT@space}%
|
|
\advance\c@NAT@ctr\@ne
|
|
\@ifnum{\count@>\tw@}{%
|
|
\@ifnum{\c@NAT@ctr=\count@}{\appdef\@citea{\NAT@conj\NAT@space}}{}%
|
|
}{%
|
|
\def\@citea{\NAT@space\NAT@conj\NAT@space}%
|
|
}%
|
|
}%
|
|
\def\rtx@def@citea@close{%
|
|
\rtx@def@citea
|
|
\prepdef\@citea{\NAT@@close}%
|
|
}%
|
|
\def\rtx@def@citea@box{%
|
|
\rtx@def@citea@close
|
|
\expandafter\def\expandafter\@citea\expandafter{\expandafter\NAT@mbox\expandafter{\@citea}}%
|
|
}%
|
|
\def\NAT@conj{and}%
|
|
% \end{macrocode}
|
|
%
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\BibitemShut}
|
|
% \begin{macro}{\bibAnnote}
|
|
% \changes{4.1j}{2009/10/24}{(AO, 549) Repairing natbib's \cs{BibitemShut} and \cs{bibAnnote}}
|
|
% \changes{4.1o}{2010/02/05}{(AO, 549) Remove patch to natbib, which is now at version 8.31a}
|
|
% \changes{4.1o}{2010/02/07}{(AO, 578) accommodate the possible space character preceding \cs{BibitemShut}.}
|
|
% We remember a temporary patch to \classname{natbib}'s definition of \cmd\BibitemShut.
|
|
% \begin{macrocode}
|
|
\def\NAT@BibitemShut#1{%
|
|
\def\@bibstop{#1}%
|
|
\let\bibitem@Stop\bibitemStop
|
|
\let\bibitem@NoStop\bibitemNoStop
|
|
\@ifx{\bibitemShut\relax}{\let\@bibitemShut\@empty}{%
|
|
\expandafter\def\expandafter\@bibitemShut\expandafter{\bibitemShut}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% The following is a bug fix to \classname{natbib} version 8.31b.
|
|
% \begin{macrocode}
|
|
\def\BibitemShut@ltx#1{%
|
|
\unskip
|
|
\def\@bibstop{#1}%
|
|
\let\bibitem@Stop\bibitemStop
|
|
\let\bibitem@NoStop\bibitemNoStop
|
|
\@ifx{\bibitemShut\relax}{\let\@bibitemShut\@empty}{%
|
|
\expandafter\def\expandafter\@bibitemShut\expandafter{\bibitemShut}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{verbatim}
|
|
%\providecommand{\bibAnnote}[3]{%
|
|
% \BibitemShut{#1}%
|
|
% \def\@tempa{#3}\@ifx{\@tempa\@empty}{}{%
|
|
% \begin{quotation}\noindent
|
|
% \textsc{Key:}\ #2\\\textsc{Annotation:}\ \@tempa
|
|
% \end{quotation}%
|
|
% }%
|
|
% \ignorespaces
|
|
%}%
|
|
%\def\@bibitemShut{}%
|
|
% \end{verbatim}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \begin{macrocode}
|
|
\newenvironment{thebibliography}{}{}%
|
|
\let\@listi\@empty
|
|
\appdef\rtx@require@packages{%
|
|
\RequirePackage[sort&compress]{natbib}[2009/11/07 8.31a (PWD, AO)]%
|
|
\let@environment{NAT@thebibliography}{thebibliography}%
|
|
\let@environment{thebibliography}{rtx@thebibliography}%
|
|
\let\bibliographystyle@latex\bibliographystyle
|
|
\let\NAT@citesuper\rtx@citesuper
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\NAT@bibsetnum}
|
|
% \begin{macro}{\NAT@bibsetup}
|
|
% \begin{macro}{\bibpreamble}
|
|
% \begin{macro}{\newblock}
|
|
% \begin{macro}{\bibnumfmt}
|
|
% \begin{macro}{\NAT@merge}
|
|
% 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.
|
|
%
|
|
% We set \cmd\NAT@merge\ to \cmd\tw@, which turns on \classname{natbib}'s
|
|
% \classname{mcite} capabilities. This is the default setting.
|
|
% If numerical citations are not to be used, then \cmd\NAT@merge\
|
|
% should be set to \cmd\@ne\ (syntax is still enabled, but semantics are turned off).
|
|
% \begin{macrocode}
|
|
\let\bibsection\rtx@bibsection
|
|
\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}%
|
|
\let\NAT@merge\thr@@
|
|
\let\NAT@citeyear\citeyear
|
|
\let\onlinecite\rev@citealp
|
|
\let\textcite\rev@citet
|
|
% \end{macrocode}
|
|
% The following is needed until \classname{natbib} is at 8.31b.
|
|
% \begin{macrocode}
|
|
\@ifx{\BibitemShut\NAT@BibitemShut}{%
|
|
\class@info{Repairing natbib's \string\BibitemShut}%
|
|
\let\BibitemShut\BibitemShut@ltx
|
|
}{}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\bibliographystyle}
|
|
% \changes{4.1q}{2010/04/01}{(AO, 586) When .bbl is pasted into the document, prevent automatic bibliography inclusion.}%
|
|
% \changes{4.1q}{2010/04/13}{(AO, 588) Only write \revtex-specific BibTeX .bib data if the .bst style is set by REVTeX.}%
|
|
% 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 incompatible with
|
|
% any package that patches \cmd\bibliographystyle.
|
|
% Since \classname{natbib} does this, we need a fix.
|
|
%
|
|
% The Boolean \cmd\bibliographystyle@sw\ signifies that the document contains explicit
|
|
% \cmd\bibliographystyle\ markup. If, on the contrary, the bibliography style is set by
|
|
% the the society or the journal, then no explicit \cmd\bibliographystyle\ command appears in the document instance.
|
|
% In this case \cmd\bibliographystyle@sw\ will be \cmd\false@sw.
|
|
% \begin{macrocode}
|
|
\let\bibliographystyle@latex\bibliographystyle
|
|
\def\bibliographystyle{\@booleantrue\bibliographystyle@sw\def\@bibstyle}%
|
|
\@booleanfalse\bibliographystyle@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \changes{4.1j}{2009/11/03}{(AO, 551) Punctuation at end of reference when optional arguments to the cite key are given.}
|
|
% The following had been bug fixes to \classname{natbib} version 8.31a.
|
|
% \begin{verbatim}
|
|
%\def\bibitemStop{\@bibitemShut}%
|
|
%\def\NAT@bibitem@cont{%
|
|
% \let\bibitem@Stop\bibitemContinue
|
|
% \let\bibitem@NoStop\bibitemContinue
|
|
%}%
|
|
% \end{verbatim}
|
|
% The following are alterations to \classname{natbib} version 8.31a to
|
|
% accommodate the possible space character preceding \cmd\BibitemShut,
|
|
% and to handle the case of merged references, where the first ends with a stop character.
|
|
% \changes{4.1o}{2010/02/07}{(AO, 578) accommodate the possible space character preceding \cs{BibitemShut}.}
|
|
% \changes{4.1o}{2010/02/09}{(AO, 581) Handle case: merged references, with first ending in a stop character.}
|
|
% \begin{macrocode}
|
|
\def\NAT@bibitem@cont{%
|
|
\let\bibitem@Stop\bibitemContinue@Stop
|
|
\let\bibitem@NoStop\bibitemContinue
|
|
}%
|
|
% \end{macrocode}
|
|
% \begin{macrocode}
|
|
\def\bibitemNoStop{%
|
|
\@ifx@empty\@bibitemShut{.\spacefactor\@mmm\space}{\@bibitemShut}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \begin{macrocode}
|
|
\def\bibitemContinue{%
|
|
\@ifx@empty\@bibitemShut{;\spacefactor\@mmm\space}{\@bibitemShut}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \begin{macrocode}
|
|
\def\bibitemContinue@Stop{%
|
|
\@ifx@empty\@bibitemShut{\spacefactor\@mmm\space}{\@bibitemShut}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \changes{4.1k}{2009/11/11}{(AO, 561) remove dead code relating to \cs{bibitemContinue}}
|
|
% We used to customize one of the productions of \classname{natbib}, but no longer.
|
|
% \begin{verbatim}
|
|
%\let\bibitemContinue\bibitemContinue@rtx
|
|
% \end{verbatim}
|
|
%
|
|
% Here ends the code to be executed at \cmd\rtx@require@packages\ time.
|
|
% \begin{macrocode}
|
|
}%
|
|
% \end{macrocode}
|
|
% \changes{4.1f}{2009/07/07}{(AO, 516) Merged references are separated with a semicolon}
|
|
% Redefine a macro of \classname{natbib} so that merged references are separated with a semicolon.
|
|
% \changes{4.1k}{2009/11/11}{(AO, 561) remove dead code relating to \cs{bibitemContinue}}
|
|
% \begin{verbatim}
|
|
% \def\bibitemContinue@rtx{;\spacefactor\@mmm\space}%
|
|
% \end{verbatim}
|
|
%
|
|
% \begin{macro}{\onlinecite}
|
|
% \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.
|
|
%
|
|
% Note that the society or journal substyle override the meanings of \cmd\@onlinecite\ or
|
|
% \cmd\@textcite\ given here.
|
|
%
|
|
% \begin{macrocode}
|
|
\DeclareRobustCommand\onlinecite{\@onlinecite}%
|
|
\DeclareRobustCommand\textcite{\@textcite}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\bibliography}
|
|
% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
|
|
% Provide a hook for supplying Bib\TeX\ a bibliographic database that may contain, say,
|
|
% footnotes.
|
|
%
|
|
% Note that Bib\TeX\ chokes if the argument of the \cmd\bibdata\ command has null fields,
|
|
% hence these tests.
|
|
% \begin{macrocode}
|
|
\let\bibliography@latex\bibliography
|
|
\def\bibliography#1{%
|
|
\auto@bib@empty
|
|
\begingroup
|
|
\let\auto@bib@innerbib\@empty
|
|
\@ifx@empty{\pre@bibdata}{%
|
|
\bibliography@latex{#1}%
|
|
}{%
|
|
\@if@empty{#1}{%
|
|
\expandafter\bibliography@latex\expandafter{\pre@bibdata}%
|
|
}{%
|
|
\expandafter\bibliography@latex\expandafter{\pre@bibdata,#1}%
|
|
}%
|
|
}%
|
|
\endgroup
|
|
}%
|
|
\let\pre@bibdata\@empty
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{environment}{rtx@thebibliography}%
|
|
% \begin{macro}{\present@bibnote}%
|
|
% \changes{4.1f}{2009/07/11}{(AO, 521) Lonely bibliography head}%
|
|
% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
|
|
% \changes{4.1o}{2010/02/02}{(AO, 575) Automatically incorporate the (Bib\TeX-generated) .bbl into an explicit \env{thebibliography}}%
|
|
% \changes{4.1q}{2010/04/01}{(AO, 586) When .bbl is pasted into the document, prevent automatic bibliography inclusion.}%
|
|
% We put a tail patch into \cmd\thebibliogrphy\ and
|
|
% a headpatch into \cmd\endthebibliography.
|
|
%
|
|
% 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.
|
|
%
|
|
% We make provisions for the case where there are no \cmd\bibitem s
|
|
% for the bibliography: we produce no bibliography head at all.
|
|
%
|
|
% \begin{macrocode}
|
|
\newenvironment{rtx@thebibliography}[1]{%
|
|
\NAT@thebibliography{#1}%
|
|
\let\@TBN@opr\present@bibnote
|
|
\@FMN@list
|
|
}{%
|
|
% \end{macrocode}
|
|
% The following line was commented out:
|
|
% \begin{verbatim}
|
|
%\@endnotesinbib
|
|
% \end{verbatim}
|
|
% The \cmd\auto@bib@innerbib\ directive has been moved from the begin processing to the end processing.
|
|
% This means that the content of the \env{thebibliography} environment can itself prevent the
|
|
% automatic reading in of the .bbl file. This would be needed when the user has pasted in the
|
|
% content of the .bbl file into the document itself, something required by APS and AIP editorial direction.
|
|
% \begin{macrocode}
|
|
\auto@bib@innerbib
|
|
\edef\@currentlabel{\arabic{NAT@ctr}}%
|
|
\label{LastBibItem}%
|
|
\endNAT@thebibliography
|
|
\aftergroup\auto@bib@empty
|
|
}%
|
|
\def\present@bibnote#1#2{%
|
|
\item[%
|
|
\textsuperscript{%
|
|
\normalfont
|
|
\Hy@raisedlink{\hyper@anchorstart{frontmatter.#1}\hyper@anchorend}%
|
|
\begingroup
|
|
\csname c@\@mpfn\endcsname#1\relax
|
|
\frontmatter@thefootnote
|
|
\endgroup
|
|
}%
|
|
]#2\par
|
|
% \end{macrocode}
|
|
% The following line was commented out:
|
|
% \begin{verbatim}
|
|
%\global\let\NAT@bibitem@first@sw\@secondoftwo
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{environment}
|
|
%
|
|
% \begin{macro}{write@bibliographystyle}
|
|
% \changes{4.1q}{2010/04/13}{(AO, 588) Only write \revtex-specific BibTeX .bib data if the .bst style is set by REVTeX.}%
|
|
% 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.
|
|
%
|
|
% The \cmd\bibstyle\ command is allowed appear quite late in the \file{.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).
|
|
%
|
|
% If the document lacks explicit \cmd\bibliographystyle\ markup, we execute
|
|
% \cmd\@bibdataout@rev, a hook for \revtex-aware processing.
|
|
% \begin{macrocode}
|
|
\def\write@bibliographystyle{%
|
|
\@ifxundefined\@bibstyle{}{%
|
|
\expandafter\bibliographystyle@latex\expandafter{\@bibstyle}%
|
|
\bibliographystyle@sw{}{\@bibdataout@rev}%
|
|
}%
|
|
\global\let\write@bibliographystyle\relax
|
|
}%
|
|
\AtEndDocument{\write@bibliographystyle}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\rtx@@citetp}
|
|
% \begin{macro}{\rtx@citex}
|
|
% \begin{macro}{\super@cite@let}
|
|
% \begin{macro}{\super@cite@end}
|
|
% \begin{macro}{\super@cite@swap}
|
|
% We wish to extend \classname{natbib} to move spaces and citations around
|
|
% a superscript-style citation, imitating Donald Arseneau's \classname{cite} package
|
|
% with the \classoption{super}.
|
|
%
|
|
% The \cmd\rtx@@citetp\ procedure is substituted for \cmd\NAT@@citetp;
|
|
% it then calls the \cmd\rtx@citex\ procedure and implements the features of the
|
|
% \classoption{citeautoscript} class option.
|
|
% In the end, \cmd\@citex\ is called with its customary parameters.
|
|
%
|
|
% 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.
|
|
%
|
|
% Only citations set as superscript are affected by this procedure,
|
|
% because we check \cmd\@cite\ against \cmd\NAT@citesuper.
|
|
%
|
|
% Here's a subtle point: when is the argument of \cmd\super@cite@swap\ not the same as the token \cmd\@let@token?
|
|
% Answer: when the latter is \cmd\@sptoken! This case has to be handled separately.
|
|
%
|
|
% Note that whether a punctuation is movable is determined by the definition
|
|
% of a particular control sequence name.
|
|
% A society or journal can alter things: to remove a character from the set,
|
|
% do, say, \cmd\expandafter \cmd\let \cmd\csname \texttt{rtx@automove;} \cmd\endcsname \cmd\relax.
|
|
% To add a character to the set, do, say, \cmd\expandafter \cmd\let \cmd\csname \texttt{rtx@automove;} \cmd\endcsname \cmd\@empty.
|
|
%
|
|
% Implementation note: due to a \TeX\ peculiarity, we have to check for the case
|
|
% where \cmd\@let@token\ is a space token \emph{before} we parse forward.
|
|
% At issue is the corner case where an end of file is at hand. If we
|
|
% were to let \cmd\super@cite@swap\ parse forward, we would encounter a \TeX\ end-of-file
|
|
% error. Note that the test will be true in many distinct cases:
|
|
% the file ends, the next character is a line terminator, the next character is a space.
|
|
% \begin{macrocode}
|
|
\def\rtx@@citetp[#1]{\@ifnextchar[{\rtx@citex[#1]}{\rtx@citex[][#1]}}%
|
|
\def\rtx@citex[#1][#2]#3{%
|
|
\begingroup
|
|
\def\@tempa{[#1][#2]{#3}}%
|
|
\@ifx{\@cite\NAT@citesuper}{%
|
|
\leavevmode
|
|
\skip@\lastskip
|
|
\unskip
|
|
\super@cite@let
|
|
}{%
|
|
\super@cite@end
|
|
}%
|
|
}%
|
|
\def\super@cite@let{%
|
|
\futurelet\@let@token\super@cite@check
|
|
}%
|
|
\def\super@cite@end{%
|
|
\aftergroup\@citex\expandafter\endgroup\@tempa
|
|
}%
|
|
\def\super@cite@check{%
|
|
\@ifx{\@let@token\@sptoken}{%
|
|
\super@cite@end
|
|
}{%
|
|
\super@cite@swap
|
|
}%
|
|
}%
|
|
\long\def\super@cite@swap#1{%
|
|
\expandafter\@ifx\expandafter{\csname rtx@automove#1\endcsname\@empty}{%
|
|
#1%
|
|
\super@cite@let
|
|
}{%
|
|
\super@cite@end
|
|
#1%
|
|
}%
|
|
}%
|
|
\expandafter\let\csname rtx@automove.\endcsname\@empty
|
|
\expandafter\let\csname rtx@automove,\endcsname\@empty
|
|
\expandafter\let\csname rtx@automove:\endcsname\@empty
|
|
\expandafter\let\csname rtx@automove;\endcsname\@empty
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% The following must execute only after \classname{natbib} is loaded and has set
|
|
% up its parameters (which it does at \cmd\AtBeginDocument\ time).
|
|
% If superscript citations have been selected, and
|
|
% if the \classoption{citeautoscript} class option has been selected,
|
|
% we patch into \classname{natbib}'s mechanism to migrate punctuation around the
|
|
% citation, as in class \classname{cite} with the \classoption{superscript} option.
|
|
% \begin{macrocode}
|
|
\appdef\class@documenthook{%
|
|
\citeautoscript@sw{%
|
|
\@ifx{\@cite\NAT@citesuper}{%
|
|
\let\NAT@@citetp\rtx@@citetp
|
|
}{}%
|
|
}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% 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.
|
|
%
|
|
% \changes{4.1b}{2008/07/01}{(AO) No longer need to test \cs{chapter} as of \texttt{natbib} version 8.2}
|
|
% \begin{verbatim}
|
|
%\@ifx{\chapter\relax}{\let\chapter\@undefined}{}%
|
|
% \end{verbatim}
|
|
%
|
|
%
|
|
% \subsubsection{\cs{endnote}s and \cs{rtx@bibnote}s}
|
|
%
|
|
% \begin{macro}{\mini@note}
|
|
% \begin{macro}{\save@note}
|
|
% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
|
|
% QUERY: how do footnotes get thrown to the bibliography. \cmd\footinbib@sw\ appears to be irrelevant.
|
|
% \begin{macrocode}
|
|
\def\mini@note{\save@note\mini@notes}%Implicit #2
|
|
\def\save@note#1#2{%
|
|
\stepcounter\@mpfn
|
|
\protected@xdef\@thefnmark{\thempfn}%
|
|
\@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 in the bibliography, or where \cmd\printendnotes\ appears.
|
|
% \begin{verbatim}
|
|
%\def\@endnote{%
|
|
% \begingroup
|
|
% \aftergroup\@footnotemark
|
|
% \aftergroup\@endnotetext
|
|
% \@ifnextchar[{%
|
|
% \@xendnote
|
|
% }{%
|
|
% \stepcounter{footnote}%
|
|
% \protected@xdef\@tempa{\thefootnote}%
|
|
% \expandafter\@xendnote\expandafter[\the\c@footnote]%
|
|
% }%
|
|
%}%
|
|
% \end{verbatim}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\@xendnote}
|
|
% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
|
|
% \begin{verbatim}
|
|
%\def\unused@xendnote[#1]{%
|
|
% \begingroup
|
|
% \c@footnote#1\relax
|
|
% \end{macrocode}
|
|
% New for 4.1
|
|
% \begin{macrocode}
|
|
% \unrestored@protected@xdef\@endnotelabel{Note\thefootnote}%
|
|
% \authoryear@sw{%
|
|
% \unrestored@protected@xdef\@thefnmark{\noexpand\ref{\@endnotelabel}}%
|
|
% }{%
|
|
% \unrestored@protected@xdef\@thefnmark{\@endnotelabel}%
|
|
% }%
|
|
% \end{macrocode}
|
|
% Was:
|
|
% \unrestored@protected@xdef\@thefnmark{endnote\thefootnote}%
|
|
% End 4.1 changes
|
|
% \begin{macrocode}
|
|
% \endgroup
|
|
% \endgroup
|
|
%}%
|
|
%\def\@endnotemark{%
|
|
% \expandafter\cite\expandafter{\@thefnmark}%
|
|
%}%
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
\def\rev@citemark#1{%
|
|
\expandafter\cite\expandafter{\@thefnmark}%
|
|
}%
|
|
\def\rev@endtext#1{%
|
|
\let\@endnotelabel\@thefnmark
|
|
\@endnotetext
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\endnote@ext}
|
|
% \begin{macro}{\bibdata@app}
|
|
% \begin{macro}{\bibdata@ext}
|
|
% The macro \cmd\endnote@ext\ is the file extension for the auxiliary file holding footnotes.
|
|
% The \cmd\bibdata@app\ and \cmd\bibdata@ext\ macros are used to form the name of a
|
|
% Bib\TeX\ database file holding footnotes.
|
|
% \begin{macrocode}
|
|
\def\endnote@ext{.end}%
|
|
\def\bibdata@app{Notes}%
|
|
\def\bibdata@ext{bib}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\@endnotetext}
|
|
% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
|
|
% The procedure \cmd\@endnotetext\ writes a Bib\TeX\ .bib file for the purpose
|
|
% of insering a footnote into the (numbered, unsorted) bibliography.
|
|
%
|
|
% We need to define \cmd\pre@bibdata\ to be
|
|
% \cmd\jobname\cmd\endnote@ext, and we probably should define \cmd\endnote@ext\ to
|
|
% be something like ``Notes.bib''.
|
|
%
|
|
% In each case, the material to be written out requires robustification, provided by \cmd\endnote@relax.
|
|
% The commands \cmd\label, \cmd\index, and \cmd\glossary,
|
|
% which are robustified for \cmd\markright\ and \cmd\addcontentsline,
|
|
% are likewise robustified here.
|
|
%
|
|
% Procedure \cmd\@endnotetext@note\ is the alias for \cmd\@endnotetext\ when the endnotes are to be
|
|
% processed separately from the bibliography (generally true when citations are not sorted).
|
|
% \begin{verbatim}
|
|
%\long\def\unused@endnotetext@note#1{%
|
|
% \@ifxundefined\@endnoteout{%
|
|
% \newwrite\@endnoteout
|
|
% \gdef\endnote@stream{\jobname\endnote@ext}%
|
|
% \immediate\openout\@endnoteout\endnote@stream\relax
|
|
% }{}%
|
|
% \begingroup
|
|
% \endnote@relax
|
|
% \immediate\write\@endnoteout{\string\@doendnote{\@endnotelabel}{#1}}%
|
|
% \endgroup
|
|
%}%
|
|
% \end{verbatim}
|
|
%
|
|
% \cmd\@doendnote\ is obsolete.
|
|
% \begin{verbatim}
|
|
%\def\@doendnote#1#2{\bibitem{#1}#2}%
|
|
% \end{verbatim}
|
|
%
|
|
% \changes{4.1o}{2010/02/05}{(AO, 579) Endnote shall comprise their own Bib\TeX\ entry type: @FOOTNOTE.}
|
|
% Procedure \cmd\@endnotetext\ is the operative procedure\ when the endnotes are to be
|
|
% collated in with the other references, typically true when numerical citations are being used.
|
|
% The technique involves writing a .bib file (\cmd\@bibdataout) with each endnote typed as
|
|
% a \texttt{@FOOTNOTE} entry.
|
|
%
|
|
% Timing note: doing \cmd\openout\ should be deferred until the beginning of the document,
|
|
% as is done here. This allows one to make a format (\filename{.fmt}) file out of this class.
|
|
% \begin{macrocode}
|
|
\long\def\@endnotetext#1{%
|
|
\begingroup
|
|
\endnote@relax
|
|
\immediate\write\@bibdataout{%
|
|
@FOOTNOTE{%
|
|
\@endnotelabel,%
|
|
% \end{macrocode}
|
|
% The \texttt{key} field is recommended in cases where there is no author (see \filename{btxdoc}).
|
|
% \begin{macrocode}
|
|
key="\@endnotelabel",%
|
|
% \end{macrocode}
|
|
% The \texttt{note} field is simply the content of the footnote.
|
|
% \begin{macrocode}
|
|
note="#1"%
|
|
}%
|
|
}%
|
|
\endgroup
|
|
}%
|
|
\newwrite\@bibdataout
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\endnote@relax}
|
|
% At \cmd\AtBeginDocument\ time, we open the job's \filename{.bib} file.
|
|
%
|
|
% Procedure \cmd\endnote@relax\ robustifies commands that ought not to be expanded when
|
|
% the endnote is written out.
|
|
% Note the similarity between \cmd\endnote@relax\ and \cmd\protected@write.
|
|
% \begin{macrocode}
|
|
\def\endnote@relax{%
|
|
\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~\relax
|
|
% \end{macrocode}
|
|
% \begin{verbatim}
|
|
%\let\protect\noexpand
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
\let \protect \@unexpandable@protect
|
|
\newlinechar`\^^M%
|
|
% \end{macrocode}
|
|
% \begin{verbatim}
|
|
%\newlinechar`\ %
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
\let\begin\relax \let\end\relax
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\@bibdataout@init}
|
|
% \begin{macro}{\@bibdataout@aps}
|
|
% \changes{4.1o}{2010/02/10}{(AO, 580) Provide a document class option to turn off production of eprint field in bibliography.}
|
|
% \changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}%
|
|
% \changes{4.1q}{2010/04/13}{(AO, 588) Only write \revtex-specific BibTeX .bib data if the .bst style is set by REVTeX.}%
|
|
%\changes{4.2b}{2018/12/26}{(MD) Improve control over display of e-print ids in bibliography.}%
|
|
% At \cmd\AtBeginDocument\ time, we open the job's \filename{.bib} file.
|
|
% The hook is available for use by a society to place its own @CONTROL record in the \cmd\@bibdataout\ stream.
|
|
% \begin{macrocode}
|
|
\appdef\class@documenthook{\@bibdataout@init}%
|
|
\def\@bibdataout@init{%
|
|
\immediate\openout\@bibdataout\pre@bibdata.\bibdata@ext\relax
|
|
}%
|
|
\def\@bibdataout@rev{%
|
|
\immediate\write\@bibdataout{%
|
|
% \end{macrocode}
|
|
% The entry that controls processing of the \filename{.bst} file has entry type \texttt{@CONTROL}.
|
|
% The citation key (REVTEX42Control) is effectively a version number,
|
|
% which the \filename{.bst} can use to interpret the bib entry.
|
|
% \begin{macrocode}
|
|
@CONTROL{%
|
|
REVTEX42Control%
|
|
% \end{macrocode}
|
|
% Say if we want the \texttt{eprint} field disabled. Otherwise accept the default of the \filename{.bst}.
|
|
% \begin{macrocode}
|
|
\eprint@enable@sw{}{,eprint="1"}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% Place a \cmd\citation\ into the auxiliary file corresponding to this entry.
|
|
% \begin{macrocode}
|
|
\if@filesw
|
|
\immediate\write\@auxout{\string\citation{REVTEX42Control}}%
|
|
\fi
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\printendnotes}
|
|
% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
|
|
% We have removed the endnotes facility from REVTeX, so the \cmd\printendnotes\ command now does nothing.
|
|
%
|
|
% Moving footnotes to the bibliogrphy is now accomplished through
|
|
% the automatic generation of a job BiB\TeX\ database (called \cmd\pre@bibdata) containing the footnotes.
|
|
% \begin{macrocode}
|
|
\def\printendnotes{%
|
|
\class@warn{The \string\printendnotes\space command no longer serves any function. Please remove it from your document.}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\@endnotesinbib}
|
|
% \begin{macro}{\@endnotesinbibliography}
|
|
% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
|
|
% 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.
|
|
%
|
|
% Note that this code make the assumption that
|
|
% the counter used in \env{thebibliography} is \cmd\c@NAT@ctr.
|
|
% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
|
|
%
|
|
% Here is the sole place where \cmd\footinbib@sw\ has an effect, other code simple assigning its value.
|
|
% If it is false, or \cmd\authoryear@sw\ is true, then footnotes are handled by the default mechanism.
|
|
% \begin{macrocode}
|
|
\def\make@footnote@endnote{%
|
|
\footinbib@sw{%
|
|
\authoryear@sw{}{%
|
|
\ltx@footnote@push
|
|
\def\thempfn{Note\thefootnote}%
|
|
\let\ltx@footmark\rev@citemark
|
|
\let\ltx@foottext\rev@endtext
|
|
% \end{macrocode}
|
|
% The endnotes facility has been removed.
|
|
% Also, there is no need to queue up \cmd\auto@bib\ here, since it is always queued up elsewhere.
|
|
% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
|
|
% \begin{verbatim}
|
|
% \appdef\class@enddocumenthook{\auto@bib}%
|
|
% \let\printendnotes\relax
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
}%
|
|
}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\def\ltx@footnote@push{%
|
|
\let\ltx@footmark@latex\ltx@footmark
|
|
\let\ltx@foottext@latex\ltx@foottext
|
|
\let\thempfn@latex\thempfn
|
|
\def\ltx@footnote@pop{%
|
|
\let\ltx@footmark\ltx@footmark@latex
|
|
\let\ltx@foottext\ltx@foottext@latex
|
|
\let\thempfn\thempfn@latex
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% The switchover to setting footnotes in the bibliography
|
|
% changes the meaning of \cmd\footnote\ and
|
|
% substitutes the synonym for \cmd\@endnotesinbib.
|
|
%
|
|
% We arrange for the procedure \cmd\make@footnote@endnote\ to be executed
|
|
% at \cmd\class@documenthook\ time (we mustn't do this earlier because
|
|
% the meaning of \cmd\@footnotemark\ must not be changed before then,
|
|
% for the sake of \file{ltxutil.dtx}).
|
|
% \begin{macrocode}
|
|
\appdef\class@documenthook{%
|
|
\make@footnote@endnote
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\auto@bib}
|
|
% \begin{macro}{\auto@bib@empty}
|
|
% \begin{macro}{\test@bbl@sw}
|
|
% \begin{macro}{\bibitem@set}
|
|
% \begin{macro}{\auto@bib@innerbib}
|
|
% \begin{macro}{\thebibliography@nogroup}
|
|
% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
|
|
% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
|
|
% \changes{4.1o}{2010/02/02}{(AO, 575) Automatically incorporate the (Bib\TeX-generated) .bbl into an explicit \env{thebibliography}}%
|
|
% Under some circumstances, we must typeset the bibliography automatically.
|
|
% If the document requires footnotes to be set in the bibliography (effectively, class option \texttt{footinbib}),
|
|
% or that frontmatter footnotes be set in the bibliography (effectively, class option \texttt{bibnotes}),
|
|
% but contains no explicit \cmd\bibliography\ statement.
|
|
%
|
|
% 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.
|
|
%
|
|
% In procedure \cmd\auto@bib, we first test for the presence of frontmatter footnotes deferred to the bibliography.
|
|
% If none, we further test for the presence of \cmd\bibitem\ commands in the job's \filename{.bbl} file.
|
|
% If either condition is met, we ask for a bibliography.
|
|
% We know that the document itself lacks a \cmd\bibliography\ statement,
|
|
% so we know the argument of the \cmd\bibliography\ that we will issue.
|
|
% \begin{macrocode}
|
|
\def\auto@bib{%
|
|
\@ifx@empty\@FMN@list{%
|
|
\footinbib@sw{%
|
|
\@ifnum{\csname c@\@mpfn\endcsname>\z@}{%
|
|
\true@sw
|
|
}{%
|
|
\test@bbl@sw
|
|
}%
|
|
}{%
|
|
\test@bbl@sw
|
|
}%
|
|
}{%
|
|
\true@sw
|
|
}%
|
|
{%
|
|
\bibliography{}%
|
|
}{}%
|
|
}%
|
|
\def\auto@bib@empty{%
|
|
\let\auto@bib\@empty
|
|
}%
|
|
% \end{macrocode}
|
|
% Testing the \filename{.bbl} file involves defanging all expected commands
|
|
% and processing that file inside a box register (that will be simply discarded).
|
|
% We provide a new meaning for the \cmd\bibitem\ command: it queues a Boolean.
|
|
% \begin{macrocode}
|
|
\def\test@bbl@sw{%
|
|
\setbox\z@\vbox\bgroup
|
|
\let\providecommand\providecommand@j@nk
|
|
\let\bibfield\@gobbletwo
|
|
\let\bibinfo\@gobbletwo
|
|
\let\translation\@gobble
|
|
\let\BibitemOpen\@empty
|
|
\let\bibitemStop\@empty
|
|
\let\bibitemNoStop\@empty
|
|
\let\EOS\@empty
|
|
\let\BibitemShut\@gobble
|
|
\let\bibAnnoteFile\@gobbletwo
|
|
\let\bibAnnote\@gobblethree
|
|
\let\textbf\@gobble
|
|
\let\emph\@gobble
|
|
\@booleanfalse\bibitem@sw
|
|
\let\bibitem\bibitem@set
|
|
\auto@bib@innerbib
|
|
\bibitem@sw{\aftergroup\true@sw}{\aftergroup\false@sw}%
|
|
\egroup
|
|
}%
|
|
% \end{macrocode}
|
|
% The \cmd\bibitem@set\ is an alias for \cmd\bibitem\ for the purpose of detecting a non-trivial bibliography.
|
|
% \begin{macrocode}
|
|
\newcommand\bibitem@set[1][]{%
|
|
\bibitem@sw{}{%
|
|
\@booleantrue\bibitem@sw
|
|
\aftergroup\@booleantrue\aftergroup\bibitem@sw
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% The \cmd\auto@bib@innerbib\ procedure reads in the \filename{.bbl} file (if it exists)
|
|
% within a context where its \env{thebibliography} environment does nothing, not even establishing a group.
|
|
% \begin{macrocode}
|
|
\def\auto@bib@innerbib{%
|
|
\begingroup
|
|
\let@environment{thebibliography}{thebibliography@nogroup}%
|
|
\bibliography{}%
|
|
\endgroup
|
|
}%
|
|
% \end{macrocode}
|
|
% Environment \env{thebibliography@nogroup} is an alias of the \env{thebibliography} environment that cancels itself.
|
|
% It assumes that it is called within a \env{thebibliography} environment.
|
|
% \begin{macrocode}
|
|
\def\thebibliography@nogroup#1{%
|
|
\endgroup
|
|
\def\@currenvir{thebibliography}%
|
|
}%
|
|
\def\endthebibliography@nogroup{\begingroup}%
|
|
% \end{macrocode}
|
|
% The following should be part of \filename{ltxutil}.
|
|
% \begin{macrocode}
|
|
\long\def \@gobblethree #1#2#3{}%
|
|
\def\providecommand@j@nk#1[#2]{%
|
|
\@ifnum{#2=\z@}{\def\j@nk}{%
|
|
\@ifnum{#2=\@ne}{\def\j@nk##1}{%
|
|
\@ifnum{#2=\tw@}{\def\j@nk##1##2}{%
|
|
\@ifnum{#2=\thr@@}{\def\j@nk##1##2##3}{%
|
|
}%
|
|
}%
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \section{Initial setup}
|
|
%
|
|
% The standard LaTeX document classes execute certain commands
|
|
% that are best deferred until \cmd\class@documenthook\ time.
|
|
% Here, we effectively split \cmd\pagenumbering\ into two halves,
|
|
% with a default definition for \cmd\thepage
|
|
% and an initialization of \cmd\c@page\ at \cmd\class@documenthook\ time.
|
|
%
|
|
% The meaning of \cmd\thepage\ can be overridden by society, journal, or
|
|
% anywhere within the document pramble, and the counter itself will be
|
|
% preset at the beginning of the document.
|
|
% \begin{macrocode}
|
|
\def\thepage{\@arabic\c@page}%
|
|
% \end{macrocode}
|
|
% \changes{4.0b}{1999/06/20}{Defer assignment until \cs{AtBeginDocument} time.}
|
|
% Note that this code is executed at \cmd\setup@hook\ time
|
|
% to allow for the possibility of overrides by packages like \classname{geometry}.
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\tabbingsep \labelsep
|
|
\leftmargin\leftmargini
|
|
\labelwidth\leftmargin\advance\labelwidth-\labelsep
|
|
\let\@listi\@listI
|
|
\@listi
|
|
}%
|
|
% \begin{macrocode}
|
|
%
|
|
% We ensure that the ``environment'' component mark (implemented by \file{ltxgrid.dtx})
|
|
% is initialized properly (via a hook, itself defined via \file{ltxutil.dtx}).
|
|
% \begin{macrocode}
|
|
\appdef\class@documenthook{%
|
|
\global\c@page\@ne
|
|
\def\curr@envir{document}%
|
|
\mark@envir{\curr@envir}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\open@onecolumn}%
|
|
% \begin{macro}{\open@column@two}%
|
|
% \changes{4.0c}{1999/11/13}{Grid changes with ltxgrid}
|
|
% \changes{4.0d}{2000/04/10}{Also alter how lists get indented.}
|
|
% When setting the column grid, we have to override the procedure
|
|
% for formatting lists.
|
|
% Because \cmd\twocolumngrid\ requires rebalancing columns at some points,
|
|
% typesetting must employ only the manipulation of
|
|
% \cmd\leftskip\ and \cmd\rightskip, and must avoid the use of
|
|
% \cmd\moveleft, \cmd\moveright, and \cmd\parshape.
|
|
%
|
|
% It is one of the stranger features of \TeX\ that these two separate
|
|
% mechanisms exist. The latter three have the effect of adding things to the
|
|
% Main Vertical List that cannot be removed and later added back with all their
|
|
% properties intact.
|
|
%
|
|
% In detail, \cmd\moveleft, say, adds a box to the MVL with
|
|
% its reference point shifted horizontally by some amount relative to the
|
|
% reference point of the enclosing list. If that box is removed from the
|
|
% MVL (via a \cmd\lastbox\ operation in the output routine), and later
|
|
% thrown back to the MVL, the shift of the box will have been ``forgotten'' by \TeX.
|
|
% This is a bug, but not one ``acceptible to D. E. Knuth'', so it will never be fixed.
|
|
%
|
|
% \begin{macrocode}
|
|
\def\open@onecolumn{%
|
|
\open@column@one\@ne
|
|
\set@colht
|
|
\@floatplacement
|
|
\@dblfloatplacement
|
|
}%
|
|
\def\open@twocolumn{%
|
|
\open@column@mlt\tw@
|
|
\set@colht
|
|
\@floatplacement
|
|
\@dblfloatplacement
|
|
\sloppy
|
|
\let\set@listindent\set@listindent@
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \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{4.0b}{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}%
|
|
% \begin{macro}{\close@column}%
|
|
% Provide default meanings for \cmd\title@column\ and \cmd\close@column,
|
|
% in case they were never defined.
|
|
% Note that the society or journal substyle may define
|
|
% \cmd\title@column\ or \cmd\close@column: this code will not override.
|
|
% \begin{macrocode}
|
|
\def\title@column#1{%
|
|
\minipagefootnote@init
|
|
#1%
|
|
\minipagefootnote@foot
|
|
}%
|
|
\def\close@column{%
|
|
\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 that both \cmd\twocolumn@sw\ and \cmd\preprintsty@sw\ 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{4.0c}{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{4.0c}{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.
|
|
% \begin{macrocode}
|
|
\def\title@column@grid#1{%
|
|
\minipagefootnote@init
|
|
\onecolumngrid
|
|
\begingroup
|
|
\let\@footnotetext\frontmatter@footnotetext
|
|
%<ignore> \let\set@footnotewidth\set@footnotewidth@two
|
|
\ltx@no@footnote
|
|
#1%
|
|
\endgroup
|
|
\twocolumngrid
|
|
\minipagefootnote@foot
|
|
}%
|
|
\def\close@column@grid{%
|
|
\balancelastpage@sw{%
|
|
\onecolumngrid
|
|
%<ignore> \twocolumngrid
|
|
}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{environment}{widetext@grid}
|
|
% \changes{4.0c}{1999/11/13}{grid changes via ltxgrid procedures}
|
|
% \changes{4.0e}{2000/11/21}{adornments above and below.}
|
|
% \changes{4.1g}{2009/10/07}{(AO, 525) Remove phantom paragraph above display math that is given in vertical mode}%
|
|
% 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.
|
|
% \changes{4.1n}{2010/01/02}{(AO) fine-tune spacing above and below widetext}%
|
|
% \begin{macrocode}
|
|
\newenvironment{widetext@grid}{%
|
|
\par\ignorespaces
|
|
\setbox\widetext@top\vbox{%
|
|
%<ignore> \vskip15\p@
|
|
\hb@xt@\hsize{%
|
|
\leaders\hrule\hfil
|
|
\vrule\@height6\p@
|
|
}%
|
|
%<ignore> \vskip6\p@
|
|
}%
|
|
\setbox\widetext@bot\hb@xt@\hsize{%
|
|
\vrule\@depth6\p@
|
|
\leaders\hrule\hfil
|
|
}%
|
|
\onecolumngrid
|
|
\vskip10\p@
|
|
\dimen@\ht\widetext@top\advance\dimen@\dp\widetext@top
|
|
\cleaders\box\widetext@top\vskip\dimen@
|
|
%<ignore> \let\set@footnotewidth\set@footnotewidth@two
|
|
\vskip6\p@
|
|
\prep@math@patch
|
|
}{%
|
|
\par
|
|
\vskip6\p@
|
|
\setbox\widetext@bot\vbox{%
|
|
\hb@xt@\hsize{\hfil\box\widetext@bot}%
|
|
%<ignore> \vskip14\p@
|
|
}%
|
|
\dimen@\ht\widetext@bot\advance\dimen@\dp\widetext@bot
|
|
\cleaders\box\widetext@bot\vskip\dimen@
|
|
\vskip8.5\p@
|
|
\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}
|
|
\def\set@page@grid{%
|
|
\twocolumn@sw{%
|
|
% \end{macrocode}
|
|
% The following two assignments determine what procedures are to be executed when
|
|
% the footnote set width is calculated, and how footnotes are to be composed at the bottom of the page.
|
|
% A society or journal wishing to do otherwise will override this code.
|
|
% \begin{macrocode}
|
|
\let\set@footnotewidth\set@footnotewidth@two
|
|
\let\compose@footnotes\compose@footnotes@two
|
|
\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
|
|
}{}%
|
|
}%
|
|
}%
|
|
}%
|
|
\appdef\setup@hook{\set@page@grid}%
|
|
% \end{macrocode}
|
|
%
|
|
% \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\ had been used in \cmd\printendnotes.
|
|
% \changes{4.1f}{2009/07/10}{(AO, 520) Automatically produce \cs{bibliography} command when needed}%
|
|
% However, we have removed the endnotes facility from REVTeX.
|
|
%
|
|
% \begin{verbatim}
|
|
%\def\notesname{Notes}
|
|
% \end{verbatim}
|
|
% \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{4.0b}{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{4.0b}{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 define 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{4.0d}{2000/04/10}{eprint takes an optional argument, syntactical only in this case.}
|
|
%FIXME: \cmd\bibinfo?
|
|
% \begin{macrocode}
|
|
\let\text\REV@text
|
|
\let\bm\REV@bm
|
|
\appdef\setup@hook{%
|
|
\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}
|
|
\appdef\rtx@require@packages{%
|
|
\RequirePackage{revsymb4-2}%
|
|
}%
|
|
\appdef\class@documenthook{\revsymb@inithook}%
|
|
% \end{macrocode}
|
|
%
|
|
%
|
|
% \section{Corrected Indentation for \texttt{tableofcontents}}
|
|
% \changes{4.2a}{2014/12/31}{(MD, Aptara) Make titles in bibliography default, prb style to follow other Phys. Rev. journals, add a unified physrev option as well as prx, prapplied, prmaterials, prfluids, prab, and prper options. Corrected indentation for tableofcontents appearing along with listoffigure/listoftable.}%
|
|
%
|
|
% Corrected indentation for \texttt{tableofcontents}, when appearing with \texttt{listoffigure} or \texttt{listoftable}.
|
|
%
|
|
% \begin{macrocode}
|
|
%%
|
|
\def\@startflt#1{%
|
|
\begingroup
|
|
%\toc@pre
|
|
\makeatletter
|
|
\@input{\jobname.#1}%
|
|
\if@filesw
|
|
\expandafter\newwrite\csname tf@#1\endcsname
|
|
\immediate\openout \csname tf@#1\endcsname \jobname.#1\relax
|
|
\fi
|
|
\@nobreakfalse
|
|
%\toc@post
|
|
\endgroup
|
|
}%
|
|
\def\att@TOC{toc}%
|
|
\def\print@toc#1{%
|
|
\begingroup
|
|
\expandafter\section
|
|
\expandafter*%
|
|
\expandafter{%
|
|
\csname#1name\endcsname
|
|
}%
|
|
\let\appendix\appendix@toc
|
|
\def\tempa{#1}%
|
|
\ifx\tempa\att@TOC%%
|
|
\@starttoc{#1}%
|
|
\else%%
|
|
\@startflt{#1}%%
|
|
\fi%%
|
|
\endgroup
|
|
}%
|
|
%%
|
|
% \end{macrocode}
|
|
%
|
|
%
|
|
% \section{Patches for lineno.sty}
|
|
%
|
|
% The \classname{lineno} package detects the case where the package has been loaded
|
|
% and the document invokes \cmd\linelabel, but the \cmd\linenumbers\ command has not been
|
|
% issued: it treats this case as an error.
|
|
%
|
|
% It is wrong for validity of document syntax to be dependent upon package semantics:
|
|
% we make the condition a warning rather than an error.
|
|
%
|
|
% \begin{macrocode}
|
|
\def\@LN@LLerror@org{%
|
|
\PackageError{lineno}{%
|
|
\string\linelabel\space without \string\linenumbers
|
|
}{%
|
|
Just see documentation. (New feature v4.11)%
|
|
}%
|
|
\@gobble
|
|
}%
|
|
\def\@LN@LLerror@ltx{%
|
|
\PackageWarning{lineno}{%
|
|
To make the \string\linelabel\space command work, you must issue the \string\linenumbers\ command
|
|
}%
|
|
\@gobble
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% If appropriate, enable line numbering within the abstract.
|
|
%
|
|
% This mechanism applies generally:
|
|
% Create the box in a context in which the meaning of \cmd\par\ has been patched by \classname{lineno},
|
|
% then \cmd\unvbox\ the box in a context where \cmd\set@linepenalties\ has been executed, and
|
|
% follow up with \cmd\@linenumberpar, which forces a visit to the output routine just there.
|
|
% Note that here, we have to de-fang \cmd\@LN@parpgbrk, which would otherwise causes the appearance
|
|
% of a box with depth -1000 points. Go figure.
|
|
% \begin{macrocode}
|
|
\appdef\class@documenthook{%
|
|
\@ifx{\@LN@LLerror\@LN@LLerror@org}{%
|
|
\class@info{Overriding \string\@LN@LLerror}%
|
|
\let\@LN@LLerror\@LN@LLerror@ltx
|
|
}{}%
|
|
\@ifpackageloaded{lineno}{%
|
|
\@ifxundefined{\set@linepenalties}{}{%
|
|
\def\prep@absbox{\set@linepenalties}%
|
|
\def\post@absbox{\let\@LN@parpgbrk\@empty\@linenumberpar}%
|
|
}%
|
|
}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% One may well ask: how to obtain line numbering within an alignment in a float?
|
|
% This objective, along with line numbering within footnotes, would require extraordinary measures.
|
|
% The float would have to be thrown onto the MVL in order to acquire its line numbers, but
|
|
% that fragment of MVL would then have to be protected from being shipped out.
|
|
% The question of how to coordinate those lines' numbers with those of lines in the MVL would
|
|
% also require dealing with.
|
|
%
|
|
% \section{Endgame for the Document Class}
|
|
%
|
|
% We provide for a ``job macro package'' that can override
|
|
% definitions and assignments made by the class or any other packages it loads.
|
|
%
|
|
% \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,
|
|
% \file{clsguide.tex} or read up on the subject
|
|
% in a book like the \LaTeX\ Companion.
|
|
%
|
|
% The file \file{template.rty} contains a template for
|
|
% creating your own job macro package.
|
|
%
|
|
% \begin{macrocode}
|
|
\appdef\rtx@require@packages{%
|
|
\InputIfFileExists{\jobname.rty}{}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsection{Endgame Processing for the Document Class}
|
|
%
|
|
% The remaining steps in processing the document class involve
|
|
% determining the needed society, journal, and pointsize from
|
|
% the document's class options and inputting the needed files or
|
|
% executing the indicated procedures.
|
|
%
|
|
% Note that the society file is expected to declare options that will
|
|
% allow us to determine the journal involved, and the society and journal
|
|
% themselves determine the which pointsize options are declared, along with
|
|
% their meanings.
|
|
%
|
|
% Note also that required packages are read in only after the document options
|
|
% have been processed, because the latter can affect the former.
|
|
%
|
|
% Finally, the setup code is executed: this is code that depends on the
|
|
% meanings of the switches we define and on the code within the packages we load.
|
|
%
|
|
% Note that there are other hooks in use: \cmd\document@inithook, which is
|
|
% executed right at the beginning of the document, and \cmd\class@documenthook,
|
|
% which serves as a vehicle for any \cmd\AtBeginDocument\ code we might wish to
|
|
% execute.
|
|
%
|
|
%FIXME: use \cmd\class@documenthook\ only for things that bear on the MVL;
|
|
% use \cmd\document@inithook\ for all patches to procedures defined within the preamble.
|
|
%
|
|
% Remember that \classname{natbib} changes its state at \cmd\AtBeginDocument\ time,
|
|
% so we have to install our own code at a later point in the processing.
|
|
%
|
|
% We determine the proper \cmd\@society\ by examining the document's class options.
|
|
% \begin{macrocode}
|
|
\@parse@class@options@society
|
|
% \end{macrocode}
|
|
%
|
|
% Then, we input the society's substyle
|
|
% (which may in turn lead to loading a journal substyle or a pointsize substyle).
|
|
% The substyle should not assume the value of any class option:
|
|
% instead, it should install code into \cmd\setup@hook.
|
|
% \begin{macrocode}
|
|
\@process@society{aps}%
|
|
% \end{macrocode}
|
|
%
|
|
% Now that the society has defined the class options relating to journals,
|
|
% and has defined \cmd\@journal@default, we can process the journal substyle.
|
|
% We parse the options for one that sets \cmd\@journal.
|
|
% \begin{macrocode}
|
|
\@parse@class@options@\@journal
|
|
% \end{macrocode}
|
|
% And we process the journal.
|
|
% Note that \emph{it is an error} for a society file to fail to define
|
|
% \cmd\@journal@default.
|
|
%
|
|
% \begin{macrocode}
|
|
\expandafter\@process@journal\expandafter{\@journal@default}%
|
|
% \end{macrocode}
|
|
%
|
|
% Now that the society and journal have finished defining any options relating to
|
|
% point size, we process the class options for any that set \cmd\@pointsize.
|
|
% \begin{macrocode}
|
|
\@parse@class@options@\@pointsize
|
|
% \end{macrocode}
|
|
% And we process the pointsize.
|
|
% Note that it is an error for the society and journal to leave \cmd\@pointsize@default\
|
|
% undefined at this point, however, the journal may have overriden the assignment of the society.
|
|
%
|
|
% \begin{macrocode}
|
|
\expandafter\@process@pointsize\expandafter{\@pointsize@default}%
|
|
% \end{macrocode}
|
|
%
|
|
% Next, we process the class options for once and all.
|
|
% Doing so sets values for some of the Booleans that were introduced along with
|
|
% the \cmd\DeclareOption\ statements above.
|
|
%
|
|
%CHANGE: We process the options in the order declared in the document; this
|
|
% gives the document greater control.
|
|
%
|
|
% \begin{macrocode}
|
|
\@options
|
|
% \end{macrocode}
|
|
%
|
|
% Now that the class options have been processed, we can load all the
|
|
% packages that we know need loading.
|
|
% \begin{macrocode}
|
|
\rtx@require@packages
|
|
% \end{macrocode}
|
|
%
|
|
% At this point, the society substyle, the journal substyle, and the
|
|
% pointsize have all been processed, along with the document class options.
|
|
% Some of these have left things for later; we do these now.
|
|
%
|
|
% \begin{macro}{\setup@hook}
|
|
%
|
|
% This portion of the code for this class file
|
|
% \emph{must} appear at the very end:
|
|
% The procedure
|
|
% \cmd\setup@hook\
|
|
% should be executed at the very end of the class file.
|
|
% Any code that relies on the value of any of the \texttt{@sw} switches
|
|
% or will patch the code of one of the required packages
|
|
% should be executed here.
|
|
%\changes{4.2a}{2017/11/28}{(MD) Add call to \normalsize to be a good citizen and allow booktabs.sty to work properly}
|
|
%
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{\normalsize}%
|
|
\setup@hook
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% Warn if past maturation date. This code to be enabled only in beta software.
|
|
% \changes{4.1f}{2009/07/11}{(AO, 522) Warn if software is expired}%
|
|
% \changes{4.1h}{2009/10/09}{(AO) Remove expiry code in the release software}%
|
|
% \begin{macrocode}
|
|
%<*ignore>
|
|
\def\rtx@fin@year{2010}%
|
|
\def\rtx@fin@month{01}%
|
|
\def\rtx@fin@day{01}%
|
|
\def\rtx@fin@warn{%
|
|
\@ifnum{\rtx@fin@year>\the\year\relax}{\true@sw}{%
|
|
\@ifnum{\rtx@fin@month>\the\month\relax}{\true@sw}{%
|
|
\@ifnum{\rtx@fin@day>\the\day\relax}{\true@sw}{%
|
|
\false@sw
|
|
}%
|
|
}%
|
|
}%
|
|
{%
|
|
\class@info{Beta software expires \rtx@fin@year-\rtx@fin@month-\rtx@fin@day; updates available at https://journals.aps.org/revtex/}%
|
|
}{%
|
|
\class@warn{Outdated software expired \rtx@fin@year-\rtx@fin@month-\rtx@fin@day; please retrieve an update at https://journals.aps.org/revtex/}%
|
|
}%
|
|
}%
|
|
%</ignore>
|
|
% \end{macrocode}
|
|
% In shipping (non-beta) software, the following line should be commented out.
|
|
% \changes{4.1f}{2009/07/11}{(AO, 522) Warn if software is expired}%
|
|
% \begin{verbatim}
|
|
%\appdef\class@enddocumenthook{\rtx@fin@warn}%
|
|
% \end{verbatim}
|
|
%
|
|
% End of the class file.
|
|
% \begin{macrocode}
|
|
%</package>
|
|
% \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{4.0a}{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{4.0b}{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}{\revsymb@inithook}
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% Package dependencies are taken care of at \cmd\setup@hook\ 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}
|
|
%</revsymb>
|
|
% \end{macrocode}
|
|
%
|
|
% \section{The \classoption{10pt} class option: the \texttt{10pt} module}
|
|
% \changes{4.0b}{1999/06/20}{AO: all code for \protect\classoption{10pt} is in this module.}
|
|
% The file \file{aps10pt.rtx} is read in by the \classname{revtex4} document class
|
|
% if \cmd\@pointsize\ has the value 10.
|
|
%
|
|
% \begin{macrocode}
|
|
%<*10pt>
|
|
% \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
|
|
\class@info{RevTeX pointsize 10pt selected}%
|
|
% \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}
|
|
%
|
|
% The values of these margin parameters are dependent upon
|
|
% \cmd\twoside@sw; any society or journal that
|
|
% has its own preferences should override these assignments
|
|
% by doing \cmd\appdef\cmd\setup@hook.
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\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}
|
|
%
|
|
% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
|
|
% \begin{macrocode}
|
|
\topskip 10pt
|
|
\splittopskip\topskip
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\footskip 30pt
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\textheight = 56pc
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\textwidth42.5pc
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\columnsep 1.5pc
|
|
\columnseprule 0pt
|
|
% \end{macrocode}
|
|
%
|
|
% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
|
|
% \begin{macrocode}
|
|
\footnotesep 1pt
|
|
\skip\footins 39pt plus 4pt minus 12pt
|
|
\def\footnoterule{%
|
|
\dimen@\skip\footins\divide\dimen@\tw@
|
|
\kern-\dimen@\hrule width.5in\kern\dimen@
|
|
}%
|
|
% \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}
|
|
%</10pt>
|
|
% \end{macrocode}
|
|
%
|
|
% \section{The \classoption{11pt} class option: the \texttt{11pt} module}
|
|
% \changes{4.0b}{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}
|
|
%
|
|
% \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
|
|
\class@info{RevTeX pointsize 11pt selected}%
|
|
% \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}
|
|
%</11pt>
|
|
% \end{macrocode}
|
|
%
|
|
% \section{The \classoption{12pt} class option: the \texttt{12pt} module}
|
|
% \changes{4.0b}{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}
|
|
%
|
|
% \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
|
|
\class@info{RevTeX pointsize 12pt selected}%
|
|
% \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}
|
|
%</12pt>
|
|
% \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\setup@hook{%
|
|
\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}
|
|
%
|
|
% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
|
|
% \begin{macrocode}
|
|
\topskip 10pt
|
|
\splittopskip\topskip
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\footskip 30pt
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\textheight=665.5\p@
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\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}
|
|
%
|
|
% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
|
|
% \begin{macrocode}
|
|
\footnotesep 1pt
|
|
\skip\footins 25.25pt plus 4pt minus 12pt
|
|
\def\footnoterule{%
|
|
\dimen@\skip\footins\divide\dimen@\f@ur
|
|
\kern-\dimen@\hrule width.5in\kern\dimen@
|
|
}%
|
|
% \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}
|
|
%</11pt|12pt>
|
|
% \end{macrocode}
|
|
%
|
|
% \section{The \classoption{aps} class extension: the \texttt{aps} module}
|
|
% \changes{4.0b}{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.)
|
|
%
|
|
% This class extension file is a model for a class extension you might write yourself.
|
|
%
|
|
% First, incorporate a \cmd\ProvidesFile\ command with an optional argument giving
|
|
% the version information, e.g.,
|
|
% \begin{verbatim}
|
|
% \ProvidesFile{foo}[2001/09/11 v1.1 Docinfo]%
|
|
% \end{verbatim}
|
|
%
|
|
% Within the society substyle, there are two things we must do as well:
|
|
% define the default journal,
|
|
% \begin{verbatim}
|
|
% \def\@journal@default{pra}%
|
|
% \end{verbatim}
|
|
% And do likewise for the point size:
|
|
% \begin{verbatim}
|
|
% \def\@pointsize@default{10}%
|
|
% \end{verbatim}
|
|
%
|
|
% We first define some text entities (amounting to journal abbreviations),
|
|
% then some APS-specific initializations,
|
|
% then code for particular APS journals.
|
|
% In the latter case, the choice is
|
|
% keyed off the macro \cmd\@journal.
|
|
%
|
|
% \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
|
|
\class@info{RevTeX society APS selected}%
|
|
% \end{macrocode}
|
|
%
|
|
% Here are the class options relating to the APS:
|
|
% \begin{macrocode}
|
|
\DeclareOption{pra}{\change@journal{pra}}%
|
|
\DeclareOption{prb}{\change@journal{prb}}%
|
|
\DeclareOption{prc}{\change@journal{prc}}%
|
|
\DeclareOption{prd}{\change@journal{prd}}%
|
|
\DeclareOption{pre}{\change@journal{pre}}%
|
|
\DeclareOption{prl}{\change@journal{prl}}%
|
|
%\changes{4.2b}{2017/11/21}{(MD) Update options for new titles without "Special Topics" and make prper match style of other journal options}
|
|
\DeclareOption{prab}{\change@journal{prab}}%
|
|
\DeclareOption{prper}{\change@journal{prper}}%
|
|
\DeclareOption{rmp}{\change@journal{rmp}}%
|
|
%\changes{4.2b}{2017/11/21}{(MD) Add options for new APS journals and a generic physrev option for future-proofing}
|
|
\DeclareOption{prx}{\change@journal{prx}}%
|
|
\DeclareOption{prapplied}{\change@journal{prapplied}}%
|
|
\DeclareOption{prmaterials}{\change@journal{prmaterials}}%
|
|
\DeclareOption{prfluids}{\change@journal{prfluids}}%
|
|
\DeclareOption{physrev}{\change@journal{physrev}}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsection{Abbreviations}%
|
|
% \changes{4.1p}{2010/02/24}{(AO, 584) Per MD, remove trailing space character from each journal abbreviation: it had caused an extraneous space in the .bbl}
|
|
% The following macros constitute typing shortcuts for
|
|
% certain journal names.
|
|
% \begin{macrocode}
|
|
\def\adv{AIP Advances}%
|
|
\def\ao{Appl.\ Opt.}%
|
|
\def\ap{Appl.\ Phys.}%
|
|
\def\apl{Appl.\ Phys.\ Lett.}%
|
|
\def\apm{Appl.\ Phys.\ Lett.\ Mater.}%
|
|
\def\apj{Astrophys.\ J.}%
|
|
\def\bell{Bell Syst.\ Tech.\ J.}%
|
|
\def\bmf{Biomicrofluidics}%
|
|
\def\cha{Chaos}%
|
|
\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\jap{J.\ Appl.\ Phys.}%
|
|
\def\jmp{J.\ Math.\ 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\jpr{J.\ Phys.\ Chem.\ Ref.\ Data}%
|
|
\def\ltp{Low.\ Temp.\ Phys.}%
|
|
\def\nat{Nature (London)}%
|
|
\def\oc{Opt.\ Commun.}%
|
|
\def\ol{Opt.\ Lett.}%
|
|
\def\pl{Phys.\ Lett.}%
|
|
\def\pop{Phys.\ Plasmas}%
|
|
\def\pof{Phys.\ Fluids}%
|
|
\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\rsi{Rev.\ Sci.\ Instrum.}%
|
|
\def\rse{J.\ Renewable Sustainable Energy}%
|
|
\def\pspie{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.}%
|
|
\def\sjqe{Sov.\ J.\ Quantum Electron.}%
|
|
\def\vr{Vision Res.}%
|
|
\def\sd{Structural\ Dynamics}%
|
|
\def\jor{J.\ Rheol.}%
|
|
\def\cp{AIP\ Conference\ Proceedings}%
|
|
% \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.
|
|
% The definition in \filename{fixltx2e.sty} serves as a guide to the new way to symbol,
|
|
% working in both text- and math modes.
|
|
%
|
|
% \filename{fixltx2e.sty} duplicates some features of \filename{ltxgrid} and \filename{ltxutil},
|
|
% however, so it may be incompatible with \revtex.
|
|
% In case it is not loaded, we must provide a meaning for \cmd\TextOrMath,
|
|
% which that package makes robust.
|
|
% I believe that it is \cmd\@fnsymbol\ itself that ought to be robustified.
|
|
% e\TeX\ further complicates matters; we do not especially accomodate it.
|
|
%
|
|
% \changes{4.1d}{2009/03/27}{Definition of \cs{ @fnsymbol} follows fixltx2e.sty}
|
|
%
|
|
% Not! \cmd\TextOrMath\ must be made robust in any case (Bug 530). I return things to follow
|
|
% core \LaTeXe\ (\filename{latex.ltx}).
|
|
% \changes{4.1f}{2009/10/05}{(AO, 530) \cs{@fnsymbol}: Failed to import fixltx2e.sty technology. Return to LaTeX core.}
|
|
% \changes{4.2f}{2022/06/05}{(PHO) \cs{@fnsymbol}: Correct \cs{ifcase} nesting logic.}
|
|
% \begin{macrocode}
|
|
\def\@fnsymbol#1{%
|
|
\ensuremath{%
|
|
\ifcase#1\or
|
|
*\or
|
|
\dagger\or
|
|
\ddagger\or
|
|
\mathsection\or
|
|
\mathparagraph\or
|
|
% \|\or
|
|
**\or
|
|
\dagger\dagger\or
|
|
\ddagger\ddagger\or
|
|
\mathsection\mathsection\or
|
|
\mathparagraph\mathparagraph\or
|
|
***\or
|
|
\dagger\dagger\dagger\or
|
|
\ddagger\ddagger\ddagger\or
|
|
\mathsection\mathsection\mathsection\or
|
|
\mathparagraph\mathparagraph\mathparagraph
|
|
\else
|
|
\@ctrerr
|
|
\fi
|
|
}%
|
|
}%
|
|
\appdef\document@inithook{%
|
|
\@ifxundefined\TextOrMath{%
|
|
\DeclareRobustCommand\TextOrMath{\@ifmmode{\false@sw}{\true@sw}}%
|
|
}{}%
|
|
}%
|
|
\let\thefootnote@latex\thefootnote
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% We assign the default titlepage style for APS; a journal or document instance
|
|
% may override by invoking one of the other \cmd\clo@... procedures defined in \revtex.
|
|
% \begin{macrocode}
|
|
\clo@groupedaddress
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\titlepage}
|
|
% \begin{macrocode}
|
|
\renewenvironment{titlepage}{%
|
|
\let\wastwocol@sw\twocolumn@sw
|
|
\onecolumngrid
|
|
\newpage
|
|
\thispagestyle{titlepage}%
|
|
\c@page\z@
|
|
% \end{macrocode}
|
|
% A comment: ``article.cls sets this to one not zero?''
|
|
% \begin{macrocode}
|
|
}{%
|
|
\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{4.0c}{1999/11/13}{(AO, 123) add parskip to the abstract.}
|
|
% \changes{4.1e}{2008/06/29}{(AO, 455) be nice to a list within 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@
|
|
}%
|
|
\@totalleftmargin\leftskip
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%\changes{4.2b}{2017/11/22}{(MD) Change default to not use a title page - it seems antiquated}
|
|
% All APS journal preprints use separate titlepage and full-width abstract.
|
|
%
|
|
% In effect, we establish a society default value for \cmd\preprintsty@sw,
|
|
% and for \cmd\titlepage@sw.
|
|
% \begin{macrocode}
|
|
\@booleanfalse\preprintsty@sw
|
|
\@booleanfalse\titlepage@sw
|
|
% \end{macrocode}
|
|
%
|
|
% We choose the page style for all APS journals.
|
|
% The journal may override by inserting its own code in \cmd\setup@hook.
|
|
% Users wishing to customize their documents will be able to invoke a \cmd\pagestyle\
|
|
% command anywhere in the preamble; it will override the assignments here.
|
|
%
|
|
% Here is the big switch for APS preprints. Note that \cmd\preprintsty@sw
|
|
% is also consulted in various procedures, but we assume its value does
|
|
% not change after \cmd\setup@hook\ time.
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\preprintsty@sw{%
|
|
\ps@preprint
|
|
\def\frontmatter@abstractwidth{\textwidth}%
|
|
\def\frontmatter@affiliationfont{\it}%
|
|
\let\section\section@preprintsty
|
|
% \end{macrocode}
|
|
% The following line of code had been commented out at this point.
|
|
% \begin{verbatim}
|
|
% \let\@hangfrom@section\@hangfrom@section@preprintsty
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
\let\subsection\subsection@preprintsty
|
|
\let\subsubsection\subsubsection@preprintsty
|
|
}{%
|
|
\ps@article
|
|
}%
|
|
}%
|
|
% \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@
|
|
% \end{macrocode}
|
|
% The following line of code had been commented out at this point.
|
|
% \begin{verbatim}
|
|
%\preprintsty@sw{}{%
|
|
% \addvspace{0\p@}%
|
|
%}%
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
}%
|
|
% \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{%
|
|
% \end{macrocode}
|
|
% The following line of code had been commented out at this point.
|
|
% \begin{verbatim}
|
|
%\preprintsty@sw{}{%
|
|
% \addvspace{11\p@}%
|
|
%}%
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
}%
|
|
% \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{}{%
|
|
% \end{macrocode}
|
|
% The following line of code had been commented out at this point.
|
|
% \begin{verbatim}
|
|
% \addvspace{12\p@}%
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
}%
|
|
}%
|
|
% \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}
|
|
%
|
|
% \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
|
|
% \end{macrocode}
|
|
% The following line of code had been commented out at this point.
|
|
% \begin{verbatim}
|
|
% \preprintsty@sw{}{\parskip.5ex\relax}%
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
\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{4.0a}{1998/06/10}{multiple preprint commands}
|
|
% \changes{4.0b}{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{4.0c}{1999/11/13}{Insert procedure \cs{checkindate}}
|
|
% \begin{macrocode}
|
|
\def\ps@titlepage{%
|
|
\def\@oddhead{%
|
|
\hfill
|
|
\preprint@sw{%
|
|
\expandafter\produce@preprints\expandafter{\@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{4.0c}{1999/11/13}{(AO, 115) If three or more preprints specified, set on single line, with commas.}
|
|
% \begin{macrocode}
|
|
\def\produce@preprints#1{%
|
|
\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}}%
|
|
\def\@hangfroms@section#1#2{#1\MakeTextUppercase{#2}}%
|
|
% \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}
|
|
%
|
|
% By default, APS journals set titlepage notes as footnotes.
|
|
% \begin{verbatim}
|
|
\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote
|
|
% \end{verbatim}
|
|
%
|
|
% \subsubsection{Table of Contents}%
|
|
% The toc will itself make an entry in the toc,
|
|
% but we temporarily turn off toc formatting for the duration.
|
|
% \changes{4.1a}{2008/01/19}{(AO, 461) Change the csname revtex uses from @dotsep to ltxu@dotsep. The former is understood in mu. (What we wanted was a dimension.)}%
|
|
% \begin{macrocode}
|
|
\def\@pnumwidth{1.55em}%
|
|
\def\@tocrmarg {2.55em}%
|
|
\def\@dotsep{2}%
|
|
\def\ltxu@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}
|
|
%
|
|
% The following definition of \cmd\l@part\ is a variant on
|
|
% the definition of \cmd\l@@sections\ in \file{ltxutil.dtx}.
|
|
% \begin{macrocode}
|
|
\def\l@part#1#2{\addpenalty{\@secpenalty}%
|
|
\begingroup
|
|
\set@tocdim@pagenum\@tempboxa{#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\@tempboxa}\hskip-\rightskip\hskip\z@skip
|
|
\par
|
|
\nobreak %
|
|
\endgroup
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\l@section}
|
|
% Determine which TOC elements are automatically indented.
|
|
%
|
|
% We set the TOC to the standard of RMP.
|
|
% If APS has its own specification, we will code it, and RMP must override.
|
|
% \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}
|
|
%
|
|
% \subsubsection{Default column bottom}%
|
|
% All APS journal styles have flush bottoms.
|
|
%\changes{4.1n}{2009/11/30}{(AO, 566) restore 4.0 behavior: flush column bottoms}
|
|
% \begin{macrocode}
|
|
\@booleanfalse\raggedcolumn@sw
|
|
% \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}%
|
|
% \changes{4.1n}{2010/01/02}{(AO, 572) \cs{@makefntext} and \cs{frontmatter@makefntext} must be defined harmoniously}%
|
|
% We customize the formatting of footnotes for all APS journals.
|
|
% \begin{macro}{\@makefntext}
|
|
% \begin{macrocode}
|
|
\long\def\@makefntext#1{%
|
|
\def\baselinestretch{1}%
|
|
\leftskip1em%
|
|
\parindent1em%
|
|
\noindent
|
|
\nobreak\hskip-\leftskip
|
|
\hb@xt@\leftskip{%
|
|
\hss\@makefnmark\ %
|
|
}%
|
|
#1%
|
|
\par
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \begin{macro}{\frontmatter@makefntext}
|
|
% We ensure that frontmatter footnotes format similarly to body footnotes.
|
|
% But we provide our own hypertext anchor, otherwise not provided.
|
|
% \changes{4.1n}{2010/01/02}{(AO, 572) Independent footnote counter for title block. Abstract footnote counter shared with body.}%
|
|
% \begin{macrocode}
|
|
\long\def\frontmatter@makefntext#1{%
|
|
\def\baselinestretch{1}%
|
|
\leftskip1em%
|
|
\parindent1em%
|
|
\noindent
|
|
\nobreak\hskip-\leftskip
|
|
\Hy@raisedlink{\hyper@anchorstart{frontmatter.\expandafter\the\csname c@\@mpfn\endcsname}\hyper@anchorend}%
|
|
\hb@xt@\leftskip{%
|
|
\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{4.0c}{1999/11/13}{(AO, 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}%
|
|
% \changes{4.1n}{2010/01/04}{(AO, 576) In .bst files, remove support for the annote field}%
|
|
%
|
|
% Customize \revtex\ for the journal substyle;
|
|
% this task requires three components:
|
|
% the \BibTeX\ \file{apsrev.bst} and \file{apsrmp.bst} style files, 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{apsrev.bst}, use \classname{custom-bib} version 4.21 or later.
|
|
% Run the \file{.bst} generator, \file{makebst.tex}, and
|
|
% accept all defaults, with the following exceptions:
|
|
%
|
|
% \def\QandA#1#2#3{\item#1: \textbf{#2}: \texttt{#3}---}%
|
|
% \def\CandE#1{\item\relax\texttt{#1}---}%
|
|
% \begin{enumerate}
|
|
% \QandA{LANGUAGE FIELD}{l}{lang}Use language field to switch hyphenation patterns for title
|
|
% \QandA{PRESENTATIONS}{b}{pres,pres-bf}Presentation, speaker bold face
|
|
% \QandA{ORDERING OF REFERENCES}{c}{seq-no}Citation order (unsorted, like unsrt.bst)
|
|
% \QandA{ORDER ON VON PART}{x}{vonx}Sort without von part (de la Maire after Mahone)
|
|
% \QandA{AUTHOR NAMES}{i}{nm-init,ed-au}Initials + surname (J. F. Smith)
|
|
% \QandA{POSITION OF JUNIOR}{*}{jnrlst}Junior comes last as Smith, John, Jr.
|
|
% \QandA{TYPEFACE FOR AUTHORS IN LIST OF REFERENCES}{u}{nmft,nmft-def}User defined author font (\cmd\bibnamefont)
|
|
% \QandA{FONT FOR FIRST NAMES}{u}{fnm-def}First names in user defined font (\cmd\bibfnamefont)
|
|
% \QandA{EDITOR NAMES IN INCOLLECTION ETC}{a}{nmfted}Editors incollection like authors font
|
|
% \QandA{FONT FOR `AND' IN LIST}{r}{nmand-rm}`And' in normal font (JONES and JAMES)
|
|
% \QandA{FONT OF CITATION LABELS IN TEXT}{u}{lab,lab-def}User defined citation font (\cmd\citenamefont)
|
|
% \QandA{FONT FOR `AND' IN CITATIONS}{r}{and-rm}Cited `and' in normal font
|
|
% \QandA{DATE FORMAT}{*}{yr-par}Date in parentheses as (May 1993)
|
|
% \QandA{DATE EMPTY}{-}{date-nil-x}If date is empty, then do not produce the surrounding punctuation (parens, brackets, colon, comma)
|
|
% \QandA{TITLE OF ARTICLE}{d}{tit-qq}Title and punctuation in double quotes (``Title,'' ..)
|
|
% \QandA{INPROCEEDINGS CHAPTER AND PAGES, LIKE INBOOK}{-}{inproceedings-chapter}produce pages after chapter, just as in InBook
|
|
% \QandA{TITLE PRESENT IN ARTICLE, INCOLLECTION, AND INPROCEEDINGS}{x}{jtit-x}Title is ignored
|
|
% \QandA{INPROCEEDINGS CHAPTER AND PAGES, LIKE INBOOK}{y}{inproceedings-chapter}produce pages after chapter, just as in InBook
|
|
% \QandA{ARTICLE BOOKTITLE PRESENT}{}{article-booktitle}format booktitle
|
|
% \QandA{ARTICLE SERIES PRESENT}{}{article-series}article can has series
|
|
% \QandA{JOURNAL NAME FONT}{r}{jttl-rm}Journal name normal font
|
|
% \QandA{JOURNAL NAME WITH ADDRESS}{y}{journal-address}Include address field (in parentheses) along with journal name
|
|
% \QandA{BOOK TITLE FIELDS}{y}{book-bt}Field `booktitle', or if absent field `title', is book title
|
|
% \QandA{THESIS TITLE OPTIONAL}{}{thesis-title-o}Title is optional: no warning issued if empty
|
|
% \QandA{TECHNICAL REPORT TITLE}{b}{trtit-b}Tech. report title like books
|
|
% \QandA{TECHNICAL REPORT INSTITUTION}{}{techreport-institution-par}format tech report institution like book publisher
|
|
% \QandA{JOURNAL VOLUME}{b}{vol-bf}Volume bold as {\bf vol}(num)
|
|
% \QandA{JOURNAL VOL AND NUMBER}{x}{vnum-x}Journal vol, without number as 34
|
|
% \QandA{VOLUME PUNCTUATION}{c}{volp-com}Volume with comma as vol(num), ppp
|
|
% \QandA{PAGE NUMBERS}{f}{jpg-1}Only start page number
|
|
% \QandA{BOOK EDITOR W/O AUTHOR}{}{book-editor-booktitle}Book permits empty author, produces title before editor in this case
|
|
% \QandA{INBOOK PERMITS TITLE, BOOKTITLE, AUTHOR, EDITOR}{a}{inbook-editor-booktitle}Allow using both title/booktitle, both author/editor
|
|
% \QandA{CONFERENCE ADDRESS FOR BOOK, INBOOK, INCOLLECTION, INPROCEEDINGS, PROCEEDINGS}{a}{bookaddress}Italic booktitle followed by bookaddress in roman
|
|
% \QandA{NUMBER AND SERIES FOR BOOK, INBOOK, INCOLLECTION, INPROCEEDINGS, PROCEEDINGS}{*}{num-xser}Allows number without series and suppresses word "number"
|
|
% \QandA{WORD NUMBER CAPITALIZED FOR NUMBER AND SERIES}{c}{number-cap}Capitalize word `number' as: "Number 123"
|
|
% \QandA{WORD CHAPTER CAPITALIZED}{c}{chapter-cap}Capitalize word `chapter' as: `Chapter 42'
|
|
% \QandA{COMBINING NUMBER AND SERIES}{x}{series-number}Series number as: `Springer Lecture Notes No. 125'
|
|
% \QandA{POSITION OF NUMBER AND SERIES}{b}{numser-booktitle}After book title and conference address, and before editors
|
|
% \QandA{VOLUME AND SERIES FOR BOOKS/COLLECTIONS}{s}{ser-vol}Series, vol. 23
|
|
% \QandA{VOLUME AND SERIES FORMATTING}{y}{ser-rm}format series roman , even when used with volume
|
|
% \QandA{WORD VOLUME CAPITALIZED FOR VOLUME AND SERIES}{y}{volume-cap}Capitalize word `volume', as: `Volume 7 in Lecture Series'
|
|
% \QandA{POSITION OF VOLUME AND SERIES FOR INCOLLECTION, INBOOK, AND INPROCEEDINGS}{e}{ser-ed}Series and volume after booktitle and before editors
|
|
% \QandA{JOURNAL NAME PUNCTUATION}{x}{jnm-x}Space after journal name
|
|
% \QandA{PAGES IN BOOK}{*}{pg-bk,book-chapter-pages}As chapter and page: chapter 42, page 345
|
|
% \QandA{PUBLISHER IN PARENTHESES}{d}{pub-date}Publisher with address and date in parentheses (Oxford, 1994)
|
|
% \QandA{EMPTY PUBLISHER PARENTHESES}{y}{ay-empty-pub-parens-x}eliminate parentheses altogether if nothing inside
|
|
% \QandA{PUBLISHER POSITION}{}{pre-pub}Publisher before volume, chapter, pages
|
|
% \QandA{}{}{pre-edn}Edition before publisher
|
|
% \QandA{}{p}{pre-pub,pre-edn}Edition, publisher, volume, chapter, pages
|
|
% \QandA{ISBN NUMBER}{*}{isbn}Include ISBN for books, booklets, etc.
|
|
% \QandA{ISSN NUMBER}{*}{issn}Include ISSN for periodicals
|
|
% \QandA{DOI NUMBER}{a}{doi-link,doi}Doi forms a link to the publication, anchored to the volume or title
|
|
% \QandA{EDITOR IN COLLECTIONS}{b}{edby}In booktitle, edited by .. (where .. is names)
|
|
% \QandA{PUNCTUATION BETWEEN SECTIONS (BLOCKS)}{c}{blk-com}Comma between blocks
|
|
% \QandA{FINAL PUNCTUATION}{c}{fin-endbibitem}Command at end instead of period
|
|
% \QandA{ABBREVIATE WORD `PAGES'}{a}{pp}`Page' abbreviated as p. or pp.
|
|
% \QandA{ABBREVIATE WORD `EDITORS'}{a}{ed}`Editor' abbreviated as ed. or eds.
|
|
% \QandA{OTHER ABBREVIATIONS}{a}{abr}Abbreviations of such words
|
|
% \QandA{ABBREVIATION FOR `EDITION'}{a}{ednx}`Edition' abbreviated as `ed'
|
|
% \QandA{EDITION NUMBERS}{n}{ord}Numerical editions as 1st, 2nd, 3rd, etc
|
|
% \QandA{STORED JOURNAL NAMES}{a}{jabr}Abbreviated journal names
|
|
% \QandA{FONT OF `ET AL'}{i}{etal-it}Italic et al
|
|
% \QandA{ADDITIONAL REVTeX DATA FIELDS}{r}{revdata,eprint,url,url-blk,translation}Include REVTeX data fields collaboration, eid, eprint, archive, url, translation
|
|
% \QandA{SLACcitation FIELD}{}{SLACcitation}Produce SLACcitation field
|
|
% \QandA{NUMPAGES DATA FIELD}{*}{numpages-x}Do not include numpages field
|
|
% \QandA{URL ADDRESS}{*}{url,url-prefix-x}URL without prefix (default: `URL ')
|
|
% \QandA{REFERENCE COMPONENT TAGS}{b}{bibinfo}Reference component tags like \cmd\bibinfo in the content of \cmd\bibitem
|
|
% \QandA{ELEMENT TAGS}{b}{bibfield}Element tags like \cmd\bibfield in the content of \cmd\bibitem
|
|
% \QandA{COMPATIBILITY WITH PLAIN TEX}{*}{nfss}Use LaTeX commands which may not work with Plain TeX
|
|
% \end{enumerate}
|
|
%
|
|
% A file \file{apsrev.dbj} file equivalent to the following should result:
|
|
% \begin{verbatim}
|
|
%\input docstrip
|
|
%\preamble
|
|
%----------------------------------------
|
|
%*** REVTeX-compatible Phys Rev 2010-02-12 ***
|
|
%\endpreamble
|
|
%\postamble
|
|
%End of customized bst file
|
|
%\endpostamble
|
|
%\keepsilent
|
|
%\askforoverwritefalse
|
|
%\def\MBopts{\from{merlin.mbs}{%
|
|
% head,\MBopta}
|
|
%\from{physjour.mbs}{\MBopta}
|
|
%\from{geojour.mbs}{\MBopta}
|
|
%\from{photjour.mbs}{\MBopta}
|
|
%\from{merlin.mbs}{tail,\MBopta}}
|
|
%\def\MBopta{%
|
|
% ay,%: Author-year with some non-standard interface
|
|
% nat,%: Natbib for use with natbib v5.3 or later
|
|
% lang,%: Use language field to switch hyphenation patterns for title
|
|
% pres,pres-bf,%: Presentation, speaker bold face
|
|
% seq-no,%: Citation order (unsorted, only meaningful for numericals)
|
|
% vonx,%: Sort without von part (de la Maire after Mahone)
|
|
% nm-init,ed-au,%: Initials + surname (J. F. Smith)
|
|
% jnrlst,%: Junior comes last as Smith, John, Jr.
|
|
% 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)
|
|
% and-rm,%: Cited `and' in normal font
|
|
% keyxyr,%: Year blank when KEY replaces missing author (for natbib 7.0)
|
|
% blkyear,%: Missing date left blank
|
|
% yr-par,%: Year in parentheses as (1993)
|
|
% dtrev,%: Date as year month
|
|
% date-nil-x,%: If date is empty, then do not produce the surrounding punctuation (parens, brackets, colon, comma)
|
|
% tit-qq,%: Title and punctuation in double quotes (``Title,'' ..)
|
|
% inproceedings-chapter,%: produce pages after chapter, just as in InBook
|
|
% jtit-x,%: Title is ignored
|
|
% inproceedings-chapter,%: produce pages after chapter just as in InBook
|
|
% article-booktitle,%: format booktitle
|
|
% article-series,%: article can has series
|
|
% jttl-rm,%: Journal name normal font
|
|
% journal-address,%: Include address field (in parentheses) along with journal name
|
|
% book-bt,%: Field `booktitle', or if absent field `title', is book title
|
|
% thesis-title-o,%: Title is optional: no warning issued if empty
|
|
% trtit-b,%: Tech. report title like books
|
|
% techreport-institution-par,%: format tech report institution like book publisher
|
|
% vol-bf,%: Volume bold as {\bf vol}(num)
|
|
% vnum-x,%: Journal vol, without number as 34
|
|
% volp-com,%: Volume with comma as vol(num), ppp
|
|
% jpg-1,%: Only start page number
|
|
% book-editor-booktitle,%: Book permits empty author, produces title before editor in this case
|
|
% inbook-editor-booktitle,%: Allow using both title/booktitle, both author/editor
|
|
% bookaddress,%: Italic booktitle followed by bookaddress in roman
|
|
% num-xser,%: Allows number without series and suppresses word "number"
|
|
% number-cap,%: Capitalize word `number' as: "Number 123"
|
|
% chapter-cap,%: Capitalize word `chapter' as: `Chapter 42'
|
|
% series-number,%: Series number as: `Springer Lecture Notes No. 125'
|
|
% numser-booktitle,%: After book title and conference address, and before editors
|
|
% ser-vol,%: Series, vol. 23
|
|
% ser-rm,%: format series roman , even when used with volume
|
|
% volume-cap,%: Capitalize word `volume', as: `Volume 7 in Lecture Series'
|
|
% ser-ed,%: Series and volume after booktitle and before editors
|
|
% jnm-x,%: Space after journal name
|
|
% pg-bk,book-chapter-pages,%: As chapter and page: chapter 42, page 345
|
|
% pub-date,%: Publisher with address and date in parentheses (Oxford, 1994)
|
|
% ay-empty-pub-parens-x,%: eliminate parentheses altogether if nothing inside
|
|
% pre-pub,pre-edn,%: Edition, publisher, volume, chapter, pages
|
|
% isbn,%: Include ISBN for books, booklets, etc.
|
|
% issn,%: Include ISSN for periodicals
|
|
% doi-link,doi,%: Doi forms a link to the publication, anchored to the volume or title
|
|
% edby,%: In booktitle, edited by .. (where .. is names)
|
|
% blk-com,%: Comma between blocks
|
|
% fin-endbibitem,%: Command at end instead of period
|
|
% 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,translation,%: Include REVTeX data fields collaboration, eid, eprint, archive, url, translation
|
|
% SLACcitation,%: Produce SLACcitation field
|
|
% numpages-x,%: Do not include numpages field
|
|
% url,url-prefix-x,%: URL without prefix (default: `URL ')
|
|
% bibinfo,%: Reference component tags like \bibinfo in the content of \bibitem
|
|
% bibfield,%: Element tags like \bibfield in the content of \bibitem
|
|
% nfss,%: Use LaTeX commands which may not work with Plain TeX
|
|
%,{%
|
|
% }}
|
|
%\generate{\file{apsrev4-2.bst}{\MBopts}}
|
|
%\endbatchfile
|
|
% \end{verbatim}
|
|
%
|
|
% \subsubsection{Comparing apsrev.bst and apsrmp.bst}\label{sec:CompRevRmp}
|
|
% These two bibliographic styles differ as follows:
|
|
% \file{apsrev.dbj} has the following guard codes, which \file{apsrmp.dbj} does not:
|
|
% \begin{itemize}
|
|
% \CandE{seq-no}%
|
|
% Citation order (unsorted, like unsrt.bst)
|
|
% \CandE{nm-init,ed-au}%
|
|
% Initials + surname (J. F. Smith)
|
|
% \CandE{blkyear}%
|
|
% Missing date left blank
|
|
% \CandE{date-nil-x}%
|
|
% If date is empty, then do not produce the surrounding punctuation (parens, brackets, colon, comma)
|
|
% \CandE{inproceedings-chapter}%
|
|
% produce pages after chapter, just as in InBook
|
|
% \CandE{techreport-institution-par}%
|
|
% format tech report institution like book publisher
|
|
% \CandE{vnum-x}%
|
|
% Journal vol, without number as `34'
|
|
% \CandE{pub-date}%
|
|
% Publisher with address and date in parentheses (Oxford, 1994)
|
|
% \CandE{pre-pub}%
|
|
% Edition, publisher, volume, chapter, pages. Note that both use guard code pre-edn.
|
|
% \end{itemize}
|
|
%
|
|
% \file{apsrmp.dbj} has the following guard codes, which \file{apsrev.dbj} does not:
|
|
% \begin{itemize}
|
|
% \CandE{nm-rev1}%
|
|
% Only first name reversed, initials (AGU style: Smith, J. F., H. K. Jones)
|
|
% \CandE{dt-beg}%
|
|
% Date after authors
|
|
% \CandE{vnum-sp}%
|
|
% Journal vol (num) as `34 (2)'
|
|
% \CandE{pp-last}%
|
|
% Pages at end, but before any notes
|
|
% \CandE{pub-par}%
|
|
% Publisher in parentheses
|
|
% \CandE{school-par}%
|
|
% School/address in parens: `(school, address)'
|
|
% \CandE{bkedcap}%
|
|
% `Name Editor,' as above, editor upper case
|
|
% \CandE{and-com}%
|
|
% Comma even with 2 authors as `Tom, and Harry'
|
|
%
|
|
% \end{itemize}
|
|
%
|
|
% 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}{\authoryear@sw}
|
|
% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
|
|
% Numerical citations: default value of \cmd\authoryear@sw\ is false.
|
|
% \begin{macrocode}
|
|
\@booleanfalse\authoryear@sw
|
|
% \end{macrocode}
|
|
% \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 APS numerical citations (once the packages are loaded).
|
|
% The journal substyle can override these choices.
|
|
%
|
|
% Note that, prior to \classname{natbib} version 8.21, changing \cmd\NAT@sort\ at this late hour would not be totally effective;
|
|
% you would have to give \classname{natbib} the relevant options at load time.
|
|
% From version 8.21 on, \cmd\NAT@sort\ and \cmd\NAT@cmprs\ are not bound at all.
|
|
% \changes{4.1a}{2008/01/19}{For natbib versions before 8.21, \cs{NAT@sort} was consulted only as natbib was being read in. Now it is fully dynamic.}
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\bibpunct{[}{]}{,}{n}{}{,}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\pre@bibdata}
|
|
%
|
|
% Set up to write endnotes to a .bib file; its data will be incorporated into the bibliography.
|
|
% \begin{macrocode}
|
|
\def\pre@bibdata{\jobname\bibdata@app}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\bibsection}
|
|
% We define the sectioning command to use when starting the bibliography.
|
|
%
|
|
% \changes{4.0rc1}{2001/06/18}{grid changes with push and pop}
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\def\bibsection{%
|
|
\par
|
|
\onecolumngrid@push
|
|
\begingroup
|
|
\baselineskip26\p@
|
|
\bib@device{\textwidth}{245.5\p@}%
|
|
\endgroup
|
|
\nobreak\@nobreaktrue
|
|
\addvspace{19\p@}%
|
|
\par
|
|
\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@\z@{%
|
|
\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
|
|
}%
|
|
\hss
|
|
}%
|
|
}%
|
|
\appdef\setup@hook{%
|
|
\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}
|
|
\appdef\setup@hook{%
|
|
\def\bibfont{%
|
|
\small
|
|
\@clubpenalty\clubpenalty
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
%
|
|
% \subsubsection{Index}%
|
|
% FIXME: the following call to \cmd\twocolumn\ appears wrong if we were in two-column grid.
|
|
% \changes{4.0c}{1999/11/13}{grid changes with ltxgrid}
|
|
% \changes{4.0rc1}{2001/06/18}{grid changes with push and pop}
|
|
% \begin{macrocode}
|
|
\newenvironment{theindex}{%
|
|
\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
|
|
\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- and Pointsize-Specific Code}%
|
|
%
|
|
% After this substyle is read in, we will execute the code specific to the selected
|
|
% journal: execute the society/journal \file{.rtx} file if it exists, or
|
|
% execute the society/journal macro (if the latter is not defined, it will \cmd\relax\ out).
|
|
% Here we define the default journal.
|
|
% \begin{macrocode}
|
|
\def\@journal@default{pra}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsection{Typesize-Specific Code}%
|
|
%
|
|
% After this society file is read in, we will process the \cmd\@pointsize-specific
|
|
% code. Here we define the default.
|
|
% \begin{macrocode}
|
|
\def\@pointsize@default{10}%
|
|
% \end{macrocode}
|
|
%
|
|
% Note: the convention in \revtex\ and its substyles 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 the APS, we supply code specific to journals PRA, PRB, PRC, PRD, PRE, PRL, PRX, PRAPPLIED, PRMATERIALS, PRFLUIDS, PRAB (was PRSTAB), PRPER (was PRSTPER), and RMP.
|
|
% At present, they are identical,
|
|
% with the exception of PRL and RMP.
|
|
% We also introduce a new generic physrev style now that all of the Phys. Rev. journals
|
|
% are identical
|
|
% In 4.2, we make the inclusion of titles in the bibliography the default
|
|
%
|
|
% 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}}%
|
|
% There is no code specific to \classoption{pra}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apspra{%
|
|
\class@info{APS journal PRA selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prb}}%
|
|
% There is no code specific to \classoption{prb}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprb{%
|
|
\class@info{APS journal PRB selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prc}}%
|
|
% There is no code specific to \classoption{prc}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprc{%
|
|
\class@info{APS journal PRC selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prd}}%
|
|
% There is no code specific to \classoption{prd}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprd{%
|
|
\class@info{APS journal PRD selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{pre}}%
|
|
% There is no code specific to \classoption{pre}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apspre{%
|
|
\class@info{APS journal PRE selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prl}}%
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprl{%
|
|
\class@info{APS journal PRL selected}%
|
|
% \end{macrocode}
|
|
% In PRL, the default is the \classoption{bibnotes} option,
|
|
% and the Acknowledgments section has no head.
|
|
%
|
|
% 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.
|
|
%FIXME: this code may confound \classname{geometry}
|
|
% \begin{macrocode}
|
|
\let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote
|
|
\@booleanfalse\acknowledgments@sw
|
|
\appdef\setup@hook{%
|
|
\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.
|
|
%
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\lengthcheck@sw{%
|
|
\RequirePackage{times}%
|
|
% \end{macrocode}
|
|
% Wait. Do not use mathtime after all. APS has their own way of doing math pi, involving
|
|
% Adobe Mathematical Pi and other fonts.
|
|
% \begin{verbatim}
|
|
% \RequirePackage{mathtime}%
|
|
% \end{verbatim}
|
|
% \begin{macrocode}
|
|
}{}%
|
|
}%
|
|
% \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\setup@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
|
|
}%
|
|
}%
|
|
}{}%
|
|
}%
|
|
\textheight = 694.0\p@
|
|
% \end{macrocode}
|
|
%
|
|
% End of \classoption{prl} code.
|
|
% \begin{macrocode}
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prper}}%
|
|
% There is no code specific to \classoption{prper}
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprper{%
|
|
\class@info{APS journal PRPER selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prab}}%
|
|
% There is no code specific to \classoption{prab}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprab{%
|
|
\class@info{APS journal PRAB selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prx}}%
|
|
% There is no code specific to \classoption{prx}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprx{%
|
|
\class@info{APS journal PRX selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prapplied}}%
|
|
% There is no code specific to \classoption{prapplied}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprapplied{%
|
|
\class@info{APS journal PRApplied selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prmaterials}}%
|
|
% There is no code specific to \classoption{prmaterials}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprmaterials{%
|
|
\class@info{APS journal PRMaterials selected}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{prfluids}}%
|
|
% PRFluids uses a one-column format for journal format, but if authors want this, they should use the onecolumn option and not the reprint option.
|
|
% Parsing of documentclass options is rather involved and hard to control precisely enough to have the correct behavior using the reprint option.
|
|
% \begin{macrocode}
|
|
\def\rtx@apsprfluids{%
|
|
\class@info{APS journal PRFluids selected}%
|
|
\@booleanfalse\titlepage@sw
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{physrev}}%
|
|
% There is no code specific to \classoption{physrev}.
|
|
% \begin{macrocode}
|
|
\def\rtx@apsphysrev{%
|
|
\class@info{APS unified Physical Review journal style selected}%
|
|
% \begin{macrocode}
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsubsection{\classoption{rmp}}%
|
|
% If this option has been selected, we will read in the needed code from the file \file{apsrmp.rtx}.
|
|
%
|
|
% \subsection{Establish APS Defaults}\label{sec:aps-defaults}
|
|
%
|
|
% \begin{macro}{\footinbib@sw}
|
|
% All APS journals except RMP effectively invoke the \classoption{footinbib} option.
|
|
% We rely on the RMP-specific code to override this assignment.
|
|
% \begin{macrocode}
|
|
\@booleantrue\footinbib@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\@bibdataout@init}
|
|
% \begin{macro}{\@bibdataout@aps}
|
|
% \changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}%
|
|
% Procedure \cmd\@bibdataout@aps\ has the job of writing the control record into the
|
|
% job's \cmd\jobname\filename{.bib} file, where it will adjust the options to \filename{.bst} processing.
|
|
% It is installed into the initialization procedure \cmd\@bibdataout@init, and its meaning
|
|
% is set by the society (APS) and journal.
|
|
% For all but RMP, we select the Physical Review style.
|
|
% For the latter case, we change the meaning, per the code in \file{apsrmp.rtx}.
|
|
%
|
|
% \begin{macrocode}
|
|
\appdef\@bibdataout@rev{\@bibdataout@aps}%
|
|
\def\@bibdataout@aps{%
|
|
\immediate\write\@bibdataout{%
|
|
% \end{macrocode}
|
|
% An entry that controls processing of the \filename{.bst} file has entry type \texttt{@CONTROL}.
|
|
% \begin{macrocode}
|
|
@CONTROL{%
|
|
apsrev42Control%
|
|
% \end{macrocode}
|
|
% Say whether we want long bibliography style (the default), or the abbreviated style.
|
|
% \changes{4.2b}{2017/11/22}{(MD) MD - not sure why these parameters were different previously. Made them match except for title.}%
|
|
% Use binary flags on control.* flags in bst file to set appropriate parameters
|
|
% author = 08 corresponds to initials, jrnlst
|
|
% editor = 1 corresponds to format identical to authors
|
|
% title = 0 means to include title in journal references if present; title ="" means omit the title even if present (this should be the only difference between long and short bib styles)
|
|
% year = 1 corresponds to truncate
|
|
% page = 0 corresponds to using single page number rather than a range
|
|
% \begin{macrocode}
|
|
\longbibliography@sw{%
|
|
,author="08",editor="1",pages="0",title="0",year="1"%
|
|
}{%
|
|
,author="08",editor="1",pages="0",title="",year="1"%
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% Place a \cmd\citation\ into the auxiliary file corresponding to this entry.
|
|
% \begin{macrocode}
|
|
\if@filesw
|
|
\immediate\write\@auxout{\string\citation{apsrev42Control}}%
|
|
\fi
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \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.
|
|
% \begin{macrocode}
|
|
\let\place@bibnumber\place@bibnumber@inl
|
|
\def\@bibstyle{apsrev\substyle@post}%
|
|
% \end{macrocode}
|
|
% \begin{verbatim}
|
|
%\appdef\setup@hook{%
|
|
% \longbibliography@sw{%
|
|
% \appdef\@bibstyle{long}%
|
|
% }{}%
|
|
%}%
|
|
% \end{verbatim}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \subsection{APS Sanity Checking}\label{sec:aps-sanity}
|
|
% \changes{4.1f}{2009/07/20}{(AO, 524) Makes no sense if citations are superscript numbers and so are footnotes}
|
|
%
|
|
% Rule: if \cmd\place@bibnumber\ is \cmd\place@bibnumber@sup\
|
|
% (citations are numbered and set superscript),
|
|
% then it makes no sense for \cmd\footinbib@sw\ to be \cmd\false@sw\
|
|
% (footnotes set in the bibliography, as endnotes).
|
|
% If both conditions prevailed, then the document would have footnotes
|
|
% and citations both as superscript arabic numbers, but independently numbered,
|
|
% which would be confusing.
|
|
%
|
|
% Any society that provides for both superscript numbered citations as well as for
|
|
% numbered footnotes should check for this same condition, and deal with it.
|
|
%
|
|
% Note: an alternative would be for footnotes to use the same sequence of footnote devices
|
|
% that are used by the frontmatter footnotes
|
|
% (\cmd\frontmatter@thefootnote\ instead of arabic numbers).
|
|
%
|
|
% In this case, we would want to refrain from resetting \cmd\c@footnote\ at the end of
|
|
% the title page formatting.
|
|
% We would also want to treat body footnotes identically to frontmatter footnotes:
|
|
% the assignments in \cmd\titleblock@produce\ would persist throughout the document.
|
|
%
|
|
% But APS do not choose to go that route.
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\@ifx{\place@bibnumber\place@bibnumber@sup}{%
|
|
\footinbib@sw{}{%
|
|
\class@warn{Citations are superscript numbers: footnotes must be endnotes; changing to that configuration}%
|
|
\@booleantrue\footinbib@sw
|
|
}%
|
|
}{}%
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
% Here ends the substyle for society APS.
|
|
% \begin{macrocode}
|
|
%</aps>
|
|
% \end{macrocode}
|
|
%
|
|
%
|
|
% \section{The \classoption{rmp} journal substyle: the \texttt{rmp} module}
|
|
%
|
|
% The file \file{apsrmp.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 \file{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 undefined.
|
|
% \begin{macrocode}
|
|
\@ifxundefined\@journal{%
|
|
% \end{macrocode}
|
|
% One alternative: abort the document.
|
|
% Another alternative: try to recover: force load the aps society file
|
|
% \begin{macrocode}
|
|
\class@warn{Please specify the REVTeX options [aps,rmp]!}%
|
|
\@@end
|
|
}{}%
|
|
% \end{macrocode}
|
|
% Log the journal substyle.
|
|
% \begin{macrocode}
|
|
\class@info{APS journal RMP selected}%
|
|
% \end{macrocode}
|
|
%
|
|
% \subsection{Frontmatter}%
|
|
%
|
|
% We assign the titlepage style for RMP; a document instance
|
|
% may override by invoking one of the class options of \revtex.
|
|
% \begin{macrocode}
|
|
\clo@groupedaddress
|
|
% \end{macrocode}
|
|
%
|
|
% \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.
|
|
%\changes{4.2b}{2017/11/22}{(MD) PACS are obsolete altogether now}%
|
|
% \begin{macrocode}
|
|
\def\PACS@warn{RMP documents do not display PACS and PACS are obsolete. 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}
|
|
% \changes{4.1b}{2008/08/04}{Rag the right even more: .8\cs{hsize}. Also, assign \cs{@totalleftmargin}.}%
|
|
% \changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
|
|
% 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@ plus.8\hsize
|
|
\raggedright\advance\leftskip.5in\relax
|
|
\@flushglue\@tempskipa
|
|
\parskip\z@skip
|
|
\@totalleftmargin\leftskip
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\frontmatter@affiliationfont}
|
|
% \changes{4.1b}{2008/08/04}{As with author formatting, rag the right more, and assign \cs{@totalleftmargin}. Also neutralize \cs{def@after@address}.}%
|
|
% \changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
|
|
% 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@ plus.8\hsize
|
|
\raggedright\advance\leftskip.5in\relax
|
|
\@flushglue\@tempskipa
|
|
\@totalleftmargin\leftskip
|
|
\let\def@after@address\def@after@address@empty
|
|
}%
|
|
\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.
|
|
% We assign the titlepage style for RMP; a document instance
|
|
% may override by invoking one of the class options of \revtex.
|
|
% \changes{4.1b}{2008/08/04}{The \texttt{rmp} journal substyle selects \texttt{groupedaddress} by default.}%
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
%
|
|
% This command should override the effect of the
|
|
% corresponding command in the society substyle,
|
|
% and any document class option bearing on same will in turn override.
|
|
% \begin{macrocode}
|
|
\clo@groupedaddress
|
|
% \end{macrocode}
|
|
%
|
|
% \begin{macro}{\frontmatter@RRAP@format}
|
|
% \changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
|
|
% 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
|
|
\@totalleftmargin\leftskip
|
|
}%
|
|
\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
|
|
% \changes{4.1b}{2008/06/29}{(AO, 455) Be nice to a list within the abstract (assign \cs{@totalleftmargin}).}
|
|
% \begin{macrocode}
|
|
\def\frontmatter@abstractfont{%
|
|
\footnotesize
|
|
\hsize360\p@
|
|
\leftskip=0.5in
|
|
\parindent\z@
|
|
\@totalleftmargin\leftskip
|
|
}%
|
|
% \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}%
|
|
%
|
|
% \changes{4.1b}{2008/07/01}{(AO) make settings at class time instead of deferring them to later.}
|
|
% If not in preprint mode, RMP sets the type size to 10/12 point. Note: s/b 11.6bp leading
|
|
%FIXME: define \cmd\normalsize\ only if nobody else has done so.
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
\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:
|
|
% \changes{4.1n}{2010/01/02}{(AO, 571) class file must set \cs{splittopskip}; fine tune \cs{skip}\cs{footins}; \cs{footnoterule} defined in terms of \cs{skip}\cs{footins}}%
|
|
% \begin{macrocode}
|
|
\footnotesep 9.25pt
|
|
\skip\footins 36pt plus 4pt minus 12pt
|
|
\def\footnoterule{%
|
|
\dimen@\skip\footins\divide\dimen@\thr@@
|
|
\kern-\dimen@\hrule width.5in\kern\dimen@
|
|
}%
|
|
% \end{macrocode}
|
|
%
|
|
%
|
|
% \subsection{Sectioning}
|
|
% \changes{4.1b}{2008/08/04}{Use \cs{setup@hook} to initialize all.}
|
|
% \changes{4.1b}{2008/08/01}{Section numbering via procedures \cs{secnums@rtx} and \cs{secnums@arabic}.}
|
|
%
|
|
% We override the meaning of \cmd\secnums@rtx.
|
|
% The class option \classoption{secnumarabic} will continue to work.
|
|
% \begin{macrocode}
|
|
\def\secnums@rtx{%
|
|
\@ifxundefined\thepart{%
|
|
\def\thepart{\Roman{part}}%
|
|
}{}%
|
|
\@ifxundefined\thesection{%
|
|
\def\thesection {\Roman{section}}%
|
|
\def\p@section {}%
|
|
}{}%
|
|
\@ifxundefined\thesubsection{%
|
|
\def\thesubsection {\Alph{subsection}}%
|
|
\def\p@subsection {\thesection.}%
|
|
}{}%
|
|
\@ifxundefined\thesubsubsection{%
|
|
\def\thesubsubsection {\arabic{subsubsection}}%
|
|
\def\p@subsubsection {\thesection.\thesubsection.}%
|
|
}{}%
|
|
\@ifxundefined\theparagraph{%
|
|
\def\theparagraph {\alph{paragraph}}%
|
|
\def\p@paragraph {\thesection.\thesubsection.\thesubsubsection.}%
|
|
}{}%
|
|
\@ifxundefined\thesubparagraph{%
|
|
\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.
|
|
% \changes{4.1b}{2008/07/01}{Add \cs{@hangfroms@section}}
|
|
% \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\@hangfroms@section#1#2{#1\MakeTextUppercase{#2}}%
|
|
\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}
|
|
% \changes{4.1b}{2008/07/01}{Add \cs{@hangfroms@section}}
|
|
% \begin{macrocode}
|
|
\appdef\appendix{%
|
|
\let\@hangfrom@section\@hangfrom@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}
|
|
% \changes{4.1b}{2008/07/01}{Break out \cs{@caption@fignum@sep}}
|
|
%
|
|
% \begin{macrocode}
|
|
\setlength\belowcaptionskip{2\p@}
|
|
\long\def\@makecaption#1#2{%
|
|
\vskip\abovecaptionskip
|
|
\vbox{%
|
|
\flushing
|
|
\small\rmfamily
|
|
\noindent
|
|
#1\@caption@fignum@sep#2\par
|
|
}%
|
|
\vskip\belowcaptionskip
|
|
}%
|
|
\def\@caption@fignum@sep{\nobreak\hskip.5em plus.2em\ignorespaces}%
|
|
% \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:
|
|
%
|
|
% \def\QandA#1#2#3{\item#1: \textbf{#2}: \texttt{#3}---}%
|
|
% \def\CandE#1{\item\relax\texttt{#1}---}%
|
|
% \begin{enumerate}
|
|
% \QandA{STYLE OF CITATIONS}{a}{ay}Author-year with some non-standard interface
|
|
% \QandA{AUTHOR}{*}{nat}Natbib for use with natbib v5.3 or later
|
|
% \QandA{LANGUAGE FIELD}{l}{lang}Use language field to switch hyphenation patterns for title
|
|
% \QandA{PRESENTATIONS}{b}{pres,pres-bf}Presentation, speaker bold face
|
|
% \QandA{ORDER ON VON PART }{x}{vonx}Sort without von part (de la Maire after Mahone)
|
|
% \QandA{AUTHOR NAMES}{a}{nm-rev1}Only first name reversed, initials (AGU style: Smith, J. F., H. K. Jones)
|
|
% \QandA{POSITION OF JUNIOR }{*}{jnrlst}Junior comes last as Smith, John, Jr.
|
|
% \QandA{TYPEFACE FOR AUTHORS IN LIST OF REFERENCES}{u}{nmft,nmft-def}User defined author font (\cmd\bibnamefont)
|
|
% \QandA{FONT FOR FIRST NAMES }{u}{fnm-def}First names in user defined font (\cmd\bibfnamefont)
|
|
% \QandA{EDITOR NAMES IN INCOLLECTION ETC}{a}{nmfted}Editors incollection like authors font
|
|
% \QandA{FONT FOR `AND' IN LIST}{r}{nmand-rm}`And' in normal font (JONES and JAMES)
|
|
% \QandA{FONT OF CITATION LABELS IN TEXT }{u}{lab,lab-def}User defined citation font (\cmd\citenamefont)
|
|
% \QandA{FONT FOR `AND' IN CITATIONS }{r}{and-rm}Cited `and' in normal font
|
|
% \QandA{LABEL WHEN AUTHORS MISSING }{*}{keyxyr}Year blank when KEY replaces missing author (for natbib 7.0)
|
|
% \QandA{DATE POSITION}{b}{dt-beg}Date after authors
|
|
% \QandA{DATE FORMAT }{m}{yr-com}Date preceded by comma as `, 1993'
|
|
% \QandA{INCLUDE MONTHS}{m}{aymth}Include month in date
|
|
% \QandA{REVERSED DATE }{r}{dtrev}Date as year month
|
|
% \QandA{TRUNCATE YEAR }{*}{note-yr}Year text full as 1990--1993 or `in press'
|
|
% \QandA{TITLE OF ARTICLE}{d}{tit-qq}Title and punctuation in double quotes (``Title,'' ..)
|
|
% \QandA{TITLE PRESENT IN ARTICLE, INCOLLECTION, AND INPROCEEDINGS}{x}{jtit-x}Title is ignored
|
|
% \QandA{INPROCEEDINGS CHAPTER AND PAGES, LIKE INBOOK}{y}{inproceedings-chapter}produce pages after chapter just as in InBook
|
|
% \QandA{ARTICLE BOOKTITLE PRESENT}{?}{article-booktitle}format booktitle
|
|
% \QandA{ARTICLE SERIES PRESENT}{?}{article-series}article can has series
|
|
% \QandA{JOURNAL NAME FONT}{r}{jttl-rm}Journal name normal font
|
|
% \QandA{JOURNAL NAME WITH ADDRESS}{y}{journal-address}Include address field (in parentheses) along with journal name
|
|
% \QandA{BOOK TITLE FIELDS}{y}{book-bt}Field `booktitle', or if absent field `title', is book title
|
|
% \QandA{THESIS TITLE OPTIONAL}{?}{thesis-title-o}Title is optional: no warning issued if empty
|
|
% \QandA{TECHNICAL REPORT TITLE}{b}{trtit-b}Tech. report title like books
|
|
% \QandA{JOURNAL VOLUME}{b}{vol-bf}Volume bold as {\bf vol}(num)
|
|
% \QandA{JOURNAL VOL AND NUMBER}{s}{vnum-sp}Journal vol (num) as 34 (2)
|
|
% \QandA{VOLUME PUNCTUATION}{c}{volp-com}Volume with comma as vol(num), ppp
|
|
% \QandA{PAGE NUMBERS}{f}{jpg-1}Only start page number
|
|
% \QandA{POSITION OF PAGES}{e}{pp-last}Pages at end but before any notes
|
|
% \QandA{BOOK EDITOR W/O AUTHOR}{}{book-editor-booktitle}Book permits empty author, produces title before editor in this case
|
|
% \QandA{INBOOK PERMITS TITLE, BOOKTITLE, AUTHOR, EDITOR}{a}{inbook-editor-booktitle}Allow using both title/booktitle, both author/editor
|
|
% \QandA{CONFERENCE ADDRESS FOR BOOK, INBOOK, INCOLLECTION, INPROCEEDINGS, PROCEEDINGS}{a}{bookaddress}Italic booktitle followed by bookaddress in roman
|
|
% \QandA{NUMBER AND SERIES FOR BOOK, INBOOK, INCOLLECTION, INPROCEEDINGS, PROCEEDINGS}{*}{num-xser}Allows number without series and suppresses word "number"
|
|
% \QandA{WORD NUMBER CAPITALIZED FOR NUMBER AND SERIES}{c}{number-cap}Capitalize word `number' as: "Number 123"
|
|
% \QandA{WORD CHAPTER CAPITALIZED}{c}{chapter-cap}Capitalize word `chapter' as: `Chapter 42'
|
|
% \QandA{COMBINING NUMBER AND SERIES}{x}{series-number}Series number as: `Springer Lecture Notes No. 125'
|
|
% \QandA{POSITION OF NUMBER AND SERIES}{b}{numser-booktitle}After book title and conference address, and before editors
|
|
% \QandA{VOLUME AND SERIES FOR BOOKS}{s}{ser-vol}Series, vol. 23
|
|
% \QandA{VOLUME AND SERIES FORMATTING}{y}{ser-rm}format series roman , even when used with volume
|
|
% \QandA{WORD VOLUME CAPITALIZED FOR VOLUME AND SERIES}{y}{volume-cap}Capitalize word `volume', as: `Volume 7 in Lecture Series'
|
|
% \QandA{POSITION OF VOLUME AND SERIES FOR INCOLLECTION, INBOOK, AND INPROCEEDINGS}{e}{ser-ed}Series and volume after booktitle and before editors
|
|
% \QandA{JOURNAL NAME PUNCTUATION}{x}{jnm-x}Space after journal name
|
|
% \QandA{PAGES IN BOOK}{*}{pg-bk,book-chapter-pages}As chapter and page: chapter 42, page 345
|
|
% \QandA{PUBLISHER IN PARENTHESES}{p}{pub-par}Publisher in parentheses
|
|
% \QandA{EMPTY PUBLISHER PARENTHESES}{y}{ay-empty-pub-parens-x}eliminate parentheses altogether if nothing inside
|
|
% \QandA{PUBLISHER POSITION}{e}{pre-edn}Edition before publisher
|
|
% \QandA{SCHOOL}{p}{school-par}school/address in parens: `(school, address)'
|
|
% \QandA{ISBN NUMBER}{*}{isbn}Include ISBN for books, booklets, etc.
|
|
% \QandA{ISSN NUMBER}{*}{issn}Include ISSN for periodicals
|
|
% \QandA{DOI NUMBER}{a}{doi-link,doi}Doi forms a link to the publication, anchored to the volume or title
|
|
% \QandA{`EDITOR' AFTER NAMES}{a}{bkedcap}`Name Editor,' as above, editor upper case
|
|
% \QandA{EDITOR IN COLLECTIONS}{b}{edby}In booktitle, edited by .. (where .. is names)
|
|
% \QandA{PUNCTUATION BETWEEN SECTIONS }{c}{blk-com}Comma between blocks
|
|
% \QandA{FINAL PUNCTUATION}{c}{fin-endbibitem}Command at end instead of period
|
|
% \QandA{ABBREVIATE WORD `PAGES' }{a}{pp}`Page' abbreviated as p. or pp.
|
|
% \QandA{ABBREVIATE WORD `EDITORS'}{a}{ed}`Editor' abbreviated as ed. or eds.
|
|
% \QandA{OTHER ABBREVIATIONS}{a}{abr}Abbreviations of such words
|
|
% \QandA{ABBREVIATION FOR `EDITION' }{a}{ednx}`Edition' abbreviated as `ed'
|
|
% \QandA{EDITION NUMBERS}{n}{ord}Numerical editions as 1st, 2nd, 3rd, etc
|
|
% \QandA{STORED JOURNAL NAMES}{a}{jabr}Abbreviated journal names
|
|
% \QandA{COMMA BEFORE `AND'}{c}{and-com}Comma even with 2 authors as `Tom, and Harry'
|
|
% \QandA{FONT OF `ET AL'}{i}{etal-it}Italic et al
|
|
% \QandA{ADDITIONAL REVTeX DATA FIELDS}{r}{revdata,eprint,url,url-blk,translation}Include REVTeX data fields collaboration, eid, eprint, archive, url, translation
|
|
% \QandA{SLACcitation FIELD}{?}{SLACcitation}Produce SLACcitation field
|
|
% \QandA{NUMPAGES DATA FIELD}{*}{numpages-x}Do not include numpages field
|
|
% \QandA{REFERENCE COMPONENT TAGS}{b}{bibinfo}Reference component tags like \cmd\bibinfo\ in the content of \cmd\bibitem
|
|
% \QandA{ELEMENT TAGS}{b}{bibfield}Element tags like \cmd\bibfield\ in the content of \cmd\bibitem
|
|
% \QandA{COMPATIBILITY WITH PLAIN TEX}{*}{nfss}Use LaTeX commands which may not work with Plain TeX
|
|
% \end{enumerate}
|
|
%
|
|
% A file \file{apsrmp.dbj} file equivalent to the following should result:
|
|
% \begin{verbatim}
|
|
%\input docstrip
|
|
%\preamble
|
|
%----------------------------------------
|
|
%*** REVTeX-compatible RMP 2010-02-12 ***
|
|
%\endpreamble
|
|
%\postamble
|
|
%End of customized bst file
|
|
%\endpostamble
|
|
%\keepsilent
|
|
%\askforoverwritefalse
|
|
%\def\MBopts{\from{merlin.mbs}{%
|
|
% head,\MBopta}
|
|
%\from{physjour.mbs}{\MBopta}
|
|
%\from{geojour.mbs}{\MBopta}
|
|
%\from{photjour.mbs}{\MBopta}
|
|
%\from{merlin.mbs}{tail,\MBopta}}
|
|
%\def\MBopta{%
|
|
% ay,%: Author-year with some non-standard interface
|
|
% nat,%: Natbib for use with natbib v5.3 or later
|
|
% lang,%: Use language field to switch hyphenation patterns for title
|
|
% pres,pres-bf,%: Presentation, speaker bold face
|
|
% 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.
|
|
% 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)
|
|
% and-rm,%: Cited `and' in normal font
|
|
% keyxyr,%: Year blank when KEY replaces missing author (for natbib 7.0)
|
|
% dt-beg,%: Date after authors
|
|
% yr-par,%: Year in parentheses as (1993)
|
|
% dtrev,%: Date as year month
|
|
% date-nil-x,%: If date is empty, then do not produce the surrounding punctuation (parens, brackets, colon, comma)
|
|
% tit-qq,%: Title and punctuation in double quotes (``Title,'' ..)
|
|
% inproceedings-chapter,%: produce pages after chapter, just as in InBook
|
|
% jtit-x,%: Title is ignored
|
|
% inproceedings-chapter,%: produce pages after chapter just as in InBook
|
|
% article-booktitle,%: format booktitle
|
|
% article-series,%: article can has series
|
|
% jttl-rm,%: Journal name normal font
|
|
% journal-address,%: Include address field (in parentheses) along with journal name
|
|
% book-bt,%: Field `booktitle', or if absent field `title', is book title
|
|
% thesis-title-o,%: Title is optional: no warning issued if empty
|
|
% trtit-b,%: Tech. report title like books
|
|
% techreport-institution-par,%: format tech report institution like book publisher
|
|
% vol-bf,%: Volume bold as {\bf vol}(num)
|
|
% vnum-sp,%: Journal vol (num) as 34 (2)
|
|
% volp-com,%: Volume with comma as vol(num), ppp
|
|
% jpg-1,%: Only start page number
|
|
% pp-last,%: Pages at end but before any notes
|
|
% book-editor-booktitle,%: Book permits empty author, produces title before editor in this case
|
|
% inbook-editor-booktitle,%: Allow using both title/booktitle, both author/editor
|
|
% bookaddress,%: Italic booktitle followed by bookaddress in roman
|
|
% num-xser,%: Allows number without series and suppresses word "number"
|
|
% number-cap,%: Capitalize word `number' as: "Number 123"
|
|
% chapter-cap,%: Capitalize word `chapter' as: `Chapter 42'
|
|
% series-number,%: Series number as: `Springer Lecture Notes No. 125'
|
|
% numser-booktitle,%: After book title and conference address, and before editors
|
|
% ser-vol,%: Series, vol. 23
|
|
% ser-rm,%: format series roman , even when used with volume
|
|
% volume-cap,%: Capitalize word `volume', as: `Volume 7 in Lecture Series'
|
|
% ser-ed,%: Series and volume after booktitle and before editors
|
|
% jnm-x,%: Space after journal name
|
|
% pg-bk,book-chapter-pages,%: As chapter and page: chapter 42, page 345
|
|
% pub-par,%: Publisher in parentheses
|
|
% ay-empty-pub-parens-x,%: eliminate parentheses altogether if nothing inside
|
|
% pre-edn,%: Edition before publisher
|
|
% school-par,%: school/address in parens: `(school, address)'
|
|
% isbn,%: Include ISBN for books, booklets, etc.
|
|
% issn,%: Include ISSN for periodicals
|
|
% doi-link,doi,%: Doi forms a link to the publication, anchored to the volume or title
|
|
% bkedcap,%: `Name Editor,' as above, editor upper case
|
|
% edby,%: In booktitle, edited by .. (where .. is names)
|
|
% blk-com,%: Comma between blocks
|
|
% fin-endbibitem,%: Command at end instead of period
|
|
% 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
|
|
% and-com,%: Comma even with 2 authors as `Tom, and Harry'
|
|
% etal-it,%: Italic et al
|
|
% revdata,eprint,url,url-blk,translation,%: Include REVTeX data fields collaboration, eid, eprint, archive, url, translation
|
|
% SLACcitation,%: Produce SLACcitation field
|
|
% numpages-x,%: Do not include numpages field
|
|
% url,url-prefix-x,%: URL without prefix (default: `URL ')
|
|
% bibinfo,%: Reference component tags like \bibinfo in the content of \bibitem
|
|
% bibfield,%: Element tags like \bibfield in the content of \bibitem
|
|
% nfss,%: Use LaTeX commands which may not work with Plain TeX
|
|
%,{%
|
|
% }}
|
|
%\generate{\file{apsrmp4-2.bst}{\MBopts}}
|
|
%\endbatchfile
|
|
% \end{verbatim}
|
|
%
|
|
% For a comparison between apsrmp.bst and apsrev.bst, see Section~\ref{sec:CompRevRmp}.
|
|
%
|
|
% \changes{4.1c}{2008/08/15}{Document class option longbibliography via \cs{substyle@post}}
|
|
% \begin{macrocode}
|
|
\def\@bibstyle{apsrmp\substyle@post}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\authoryear@sw}
|
|
% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}%
|
|
% Author-year citations: default value of \cmd\authoryear@sw\ is true.
|
|
% \begin{macrocode}
|
|
\@booleantrue\authoryear@sw
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\@bibdataout@rmp}
|
|
% \changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}%
|
|
% When the journal is RMP, the meaning of the procedure \cmd\@bibdataout@aps\ needs to be different
|
|
% because of the way the author names are formatted. In other respects, it is the same.
|
|
% \begin{macrocode}
|
|
\def\@bibdataout@aps{%
|
|
\immediate\write\@bibdataout{%
|
|
% \end{macrocode}
|
|
% An entry that controls processing of the \filename{.bst} file has entry type \texttt{@CONTROL}.
|
|
% This entry's cite key is \texttt{apsrmp41Control}, which serves as a version number.
|
|
% \begin{macrocode}
|
|
@CONTROL{%
|
|
apsrmp41Control%
|
|
% \end{macrocode}
|
|
% Say whether we want long bibliography style (the default), or the abbreviated style.
|
|
% \begin{macrocode}
|
|
\longbibliography@sw{%
|
|
,author="03",editor="0",pages="1",title="0",year="0"%
|
|
}{%
|
|
,author="0B",editor="0",pages="0",title="0",year="1"% TeXSupport
|
|
}%
|
|
}%
|
|
}%
|
|
% \end{macrocode}
|
|
% Place a \cmd\citation\ into the auxiliary file corresponding to this entry.
|
|
% \begin{macrocode}
|
|
\if@filesw
|
|
\immediate\write\@auxout{\string\citation{apsrmp41Control}}%
|
|
\fi
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\bibpunct}
|
|
% \begin{macro}{\bibsection}
|
|
% \begin{macro}{\bibpreamble}
|
|
% \begin{macro}{\newblock}
|
|
% \begin{macro}{\bibhang}
|
|
% \begin{macro}{\bibsep}
|
|
% \begin{macro}{\cite}
|
|
% 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 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).
|
|
%
|
|
% Incidently, this \cmd\bibpunct\ command specifies the \classname{natbib} default values.
|
|
%
|
|
% We define the sectioning command to use when starting the bibliography.
|
|
%
|
|
% We change \classname{natbib}'s \cmd\NAT@def@citea\ procedure to effect more elaborate
|
|
% punctuation for RMP: see item 473:
|
|
% \cmd\cite\ order punctuation: ``If possible, \cmd\textcite should put the word 'and' between two citations and before the last citation in a list of 3 or more.''
|
|
%
|
|
% \begin{macrocode}
|
|
\appdef\setup@hook{%
|
|
% \end{macrocode}
|
|
%
|
|
% We define the punctuation to use in the \cmd\cite\ command's production.
|
|
%
|
|
% \begin{macrocode}
|
|
\bibpunct{(%)
|
|
}{%(
|
|
)}{;}{a}{,}{,}%
|
|
% \end{macrocode}
|
|
%
|
|
% We define the sectioning command to use when starting the bibliography.
|
|
%
|
|
% \begin{macrocode}
|
|
\def\bibsection{%
|
|
\expandafter\section\expandafter*\expandafter{\refname}%
|
|
\@nobreaktrue
|
|
}%
|
|
\let\bibpreamble\@empty
|
|
\def\newblock{\ }%
|
|
\bibhang10\p@
|
|
\bibsep\z@
|
|
% \end{macrocode}
|
|
%
|
|
% Per Mark Doyle, \cmd\cite\ is mapped to \cmd\citep\ in RMP.
|
|
% \changes{4.1i}{2009/10/23}{(AO, 541) Defer assignment of \cs{cite} until after natbib loads}
|
|
% \begin{macrocode}
|
|
\let\cite\citep
|
|
% \end{macrocode}
|
|
%
|
|
% End of code to be delayed until after \classname{natbib} loads.
|
|
% \begin{macrocode}
|
|
}%
|
|
% \end{macrocode}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
% \end{macro}
|
|
%
|
|
% \begin{macro}{\footinbib@sw}
|
|
% Footnotes in bibliography are consistent only with numbered citations,
|
|
% and are particularly nasty 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.
|
|
% The same is quietly done with
|
|
% \classname{natbib}'s \classoption{mcite} and \classoption{compress} options.
|
|
%
|
|
% \changes{4.1f}{2009/07/15}{(AO, 523) Add class option nomerge, to turn off new natbib 8.3 syntax}
|
|
% (AO 523) I changed the code that alters \cmd\NAT@merge\ so that it will not override
|
|
% when \cmd\NAT@merge\ has been set to \cmd\z@.
|
|
% \begin{macrocode}
|
|
\@booleanfalse\footinbib@sw
|
|
\appdef\setup@hook{%
|
|
\footinbib@sw{%
|
|
\class@warn{%
|
|
Footnotes in bibliography are incompatible with RMP.^^J%
|
|
Undoing the footinbib option.
|
|
}%
|
|
\@booleanfalse\footinbib@sw
|
|
}{}%
|
|
\@ifnum{\NAT@merge>\@ne}{\let\NAT@merge\@ne}{}%
|
|
\def\NAT@cmprs{\z@}%
|
|
}%
|
|
% \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 the definitions for
|
|
% the default TOC font (\cmd\toc@@font),
|
|
% 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}
|
|
% \changes{4.1a}{2008/01/19}{(AO, 461) Change the csname revtex uses from @dotsep to ltxu@dotsep. The former is understood in mu. (What we wanted was a dimension.)}%
|
|
% Set the formatting characteristics of the auto-indenting part
|
|
% of the TOC.
|
|
% \begin{macrocode}
|
|
\def\toc@@font{%
|
|
\footnotesize\rmfamily
|
|
\def\\{\space\ignorespaces}%
|
|
}%
|
|
\def\ltxu@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}
|
|
%</rmp>
|
|
% \end{macrocode}
|
|
%
|
|
%
|
|
% \Finale
|
|
% %Here ends the programmer's documentation.
|
|
% \endinput
|
|
%
|
|
\endinput
|