From f9ad67f025daf41bc024597529f1e65e14f7c50e Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Wed, 7 Oct 2020 21:59:05 +0000 Subject: revtex4-1 from phelype .tds.zip, now its own package git-svn-id: svn://tug.org/texlive/trunk@56590 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/source/latex/revtex/revtex4-1.dtx | 8297 -------------------- Master/texmf-dist/source/latex/revtex4-1/aip.dtx | 2059 +++++ .../source/latex/revtex4-1/revtex4-1-bst.dtx | 3783 +++++++++ .../source/latex/revtex4-1/revtex4-1.dtx | 8296 +++++++++++++++++++ 4 files changed, 14138 insertions(+), 8297 deletions(-) delete mode 100644 Master/texmf-dist/source/latex/revtex/revtex4-1.dtx create mode 100644 Master/texmf-dist/source/latex/revtex4-1/aip.dtx create mode 100644 Master/texmf-dist/source/latex/revtex4-1/revtex4-1-bst.dtx create mode 100644 Master/texmf-dist/source/latex/revtex4-1/revtex4-1.dtx (limited to 'Master/texmf-dist/source/latex') diff --git a/Master/texmf-dist/source/latex/revtex/revtex4-1.dtx b/Master/texmf-dist/source/latex/revtex/revtex4-1.dtx deleted file mode 100644 index 92df750df38..00000000000 --- a/Master/texmf-dist/source/latex/revtex/revtex4-1.dtx +++ /dev/null @@ -1,8297 +0,0 @@ -% \iffalse meta-comment balanced on line 122 -% revtex4-1.dtx: package to typeset APS, AIP, OSA, ASA, etc. journal articles -% Copyright (c) 2009 The American Physical Society. -% http://publish.aps.org/revtex4/ -% 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.3 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-1.dtx -% and the derived files -% revtex4.cls, revtex4.pdf -% Distribution: -% CTAN:macros/latex/contrib/revtex/ -% -% Unpacking: -% tex revtex4-1.dtx -% -% Documentation: -% latex revtex4-1.dtx; ... -% -% Programm calls to get the documentation (example): -% pdflatex revtex4-1.dtx -% makeindex -s gind.ist revtex4-1.idx -% makeindex -s gglo.ist -o revtex4-1.gls revtex4-1.glo -% pdflatex revtex4-1.dtx -% makeindex -s gind.ist revtex4-1.idx -% pdflatex revtex4-1.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 -% -%<*install> -%% This file will generate documentation and runtime files -%% from revtex4-1.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) - -Copyright (c) 2009 The American Physical Society. -http://publish.aps.org/revtex4/ -mailto:revtex4@aps.org - -See the REVTeX 4 README file for restrictions and more information. - -\endpreamble -\askforoverwritefalse -\keepsilent -\generate{% - \file{revtex4-1.cls}{% - \from{revtex4-1.dtx}{kernel}% - \from{ltxutil.dtx}{kernel}% - \from{ltxfront.dtx}{kernel}% - \from{ltxgrid.dtx}{kernel}% - \from{revtex4-1.dtx}{options}% - \from{ltxutil.dtx}{options}% - \from{ltxfront.dtx}{options}% - \from{ltxgrid.dtx}{options}% - \from{revtex4-1.dtx}{package}% - }% - \file{aps4-1.rtx}{\from{revtex4-1.dtx}{aps}}% - \file{apsrmp4-1.rtx}{\from{revtex4-1.dtx}{rmp}}% - \file{aps10pt4-1.rtx}{\from{revtex4-1.dtx}{10pt}}% - \file{aps11pt4-1.rtx}{\from{revtex4-1.dtx}{11pt}}% - \file{aps12pt4-1.rtx}{\from{revtex4-1.dtx}{12pt}}% - \file{revsymb4-1.sty}{\from{revtex4-1.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-1.dtx through LaTeX.} -\Msg{*} -\Msg{* Happy TeXing} -\Msg{***********************************************************} -} -\endbatchfile -% -%<*ignore> -\fi -% -% \fi -% -% \GetFileInfo{revtex4-1.dtx}\CheckSum{7177} -% -% \iffalse ltxdoc klootch -%<*package> -%%% @LaTeX-file{ -%%% filename = "revtex4-1.dtx", -%%% version = "4.1r", -%%% date = "2010/07/25", -%%% time = "20:33:00 UT-8", -%%% checksum = "7177", -%%% author = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net), -%%% commissioned by the American Physical Society. -%%% ", -%%% copyright = "Copyright (C) 1999, 2009 Arthur Ogawa, -%%% distributed under the terms of the -%%% LaTeX Project Public License, see -%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt -%%% ", -%%% address = "Arthur Ogawa, -%%% USA", -%%% telephone = "", -%%% FAX = "", -%%% email = "mailto colon arthur_ogawa at sbcglobal.net", -%%% codetable = "ISO/ASCII", -%%% keywords = "latex, page grid, main vertical list", -%%% supported = "yes", -%%% abstract = "package to change page grid, MVL", -%%% docstring = "The checksum field above generated by ltxdoc", -%%% } -% -% \fi -% -% \iffalse ltxdoc klootch -% The following references the \file{00readme.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*}{00readme.tex}" to locate it. -% \fi\input{00readme.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-1.dtx -%\end{verbatim} -% -% \subsubsection{Generated by \texttt{tex revtex4-1.dtx}}% -% Typesetting ths file under \TeX\ itself runs the installer, -% which generates the package files. -%\begin{verbatim} -%revtex4-1.cls, revtex4.ins, revtex4.drv, aps4-1.rtx, -%aps10pt4-1.rtx, aps11pt4-1.rtx, aps12pt4-1.rtx, revsymp.sty -%\end{verbatim} -% -% \subsubsection{Generated by \texttt{pdflatex revtex4-1.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]% -% -%\ProvidesClass{revtex4-1} -%\ProvidesFile{aps4-1} -%\ProvidesFile{apsrmp4-1} -%<10pt>\ProvidesFile{aps10pt4-1} -%<11pt>\ProvidesFile{aps11pt4-1} -%<12pt>\ProvidesFile{aps12pt4-1} -%\ProvidesPackage{revsymb4-1} -%<*doc> -\ProvidesFile{revtex4-1.dtx} -% -%<*!package&!options> -% - [2010/07/25/20:33:00 4.1r (http://publish.aps.org/revtex4/ for documentation)]% \fileversion -% -% \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} -%\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{00readme.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}% -\expandafter\ifx\csname package@font\endcsname\@undefined\else - \expandafter\RequirePackage\expandafter{\csname package@font\endcsname}% -\fi -% \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*}{00readme.tex} -\title{% - The \classname{revtex4-1} document class of the American Physical Society% - \protect\thanks{Work under hire to The American Physical Society.}% -}% -\author{Arthur Ogawa% - \protect\thanks{First revision of REV\TeX4.0 (unreleased) by David Carlisle}% -}% -\date{Version \fileversion, dated \filedate}% -\newcommand\revtex{REV\TeX} - -\maketitle - -This file embodies the implementation of the APS \revtex\ 4.1 document class -for electronic submissions to journals. - -The distribution point for this work is -\url{http://publish.aps.org/revtex4/}, -which contains fully unpacked, prebuilt runtime files and documentation. - -\tableofcontents - -\section{Using \protect\revtex} - -The file \file{README} has retrieval and installation information. - -User documentation is presented separately in \file{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.}% - -\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} -\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} -% -% \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}{% -% -% }{}% -% \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) 2009 The American Physical Society.^^J - mailto:revtex@aps.org^^J - Licensed under the LPPL:^^Jhttp://www.ctan.org/tex-archive/macros/latex/base/lppl.txt^^J - Arthur Ogawa ^^J - Based on work by David Carlisle % - \@gobble -}% -% \end{macrocode} -% -% \subsection{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} -% -% \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} -% -% \revtex's default for \cmd\longbibliography@sw\ is \cmd\false@sw. -% -% \begin{macrocode} -\DeclareOption{longbibliography}{\@booleantrue\longbibliography@sw}% -\DeclareOption{nolongbibliography}{\@booleanfalse\longbibliography@sw}% -\@booleanfalse\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} -% -% \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-1}% -\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}{% -% -%\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+ for every \verb+\the+'' -% 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+ be the same as \verb+\arabic{}+, -% if \verb+\theH+ 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.}% -% 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 (REVTEX41Control) is effectively a version number, -% which the \filename{.bst} can use to interpret the bib entry. -% \begin{macrocode} - @CONTROL{% - REVTEX41Control% -% \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=""}% - }% - }% -% \end{macrocode} -% Place a \cmd\citation\ into the auxiliary file corresponding to this entry. -% \begin{macrocode} - \if@filesw - \immediate\write\@auxout{\string\citation{REVTEX41Control}}% - \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 -% \let\set@footnotewidth\set@footnotewidth@two - \ltx@no@footnote - #1% - \endgroup - \twocolumngrid - \minipagefootnote@foot -}% -\def\close@column@grid{% - \balancelastpage@sw{% - \onecolumngrid -% \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{% -% \vskip15\p@ - \hb@xt@\hsize{% - \leaders\hrule\hfil - \vrule\@height6\p@ - }% -% \vskip6\p@ - }% - \setbox\widetext@bot\hb@xt@\hsize{% - \vrule\@depth6\p@ - \leaders\hrule\hfil - }% - \onecolumngrid - \vskip10\p@ - \dimen@\ht\widetext@top\advance\dimen@\dp\widetext@top - \cleaders\box\widetext@top\vskip\dimen@ -% \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}% -% \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-1}% -}% -\appdef\class@documenthook{\revsymb@inithook}% -% \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. -% -% \begin{macrocode} -\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 http://publish.aps.org/revtex4/}% - }{% - \class@warn{Outdated software expired \rtx@fin@year-\rtx@fin@month-\rtx@fin@day; please retrieve an update at http://publish.aps.org/revtex4/}% - }% - }% -% -% \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} -% -% \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} -% -% \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} -% -% \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} -% -% \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} -% -% \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} -% -% \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 initialisations, -% 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}}% -\DeclareOption{prstab}{\change@journal{prstab}}% -\DeclareOption{prstper}{\change@journal{prstper}}% -\DeclareOption{rmp}{\change@journal{rmp}}% -% \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\ao{Appl.\ Opt.}% -\def\ap{Appl.\ Phys.}% -\def\apl{Appl.\ Phys.\ Lett.}% -\def\apj{Astrophys.\ J.}% -\def\bell{Bell Syst.\ Tech.\ J.}% -\def\jqe{IEEE J.\ Quantum Electron.}% -\def\assp{IEEE Trans.\ Acoust.\ Speech Signal Process.}% -\def\aprop{IEEE Trans.\ Antennas Propag.}% -\def\mtt{IEEE Trans.\ Microwave Theory Tech.}% -\def\iovs{Invest.\ Ophthalmol.\ Vis.\ Sci.}% -\def\jcp{J.\ Chem.\ Phys.}% -\def\jmo{J.\ Mod.\ Opt.}% -\def\josa{J.\ Opt.\ Soc.\ Am.}% -\def\josaa{J.\ Opt.\ Soc.\ Am.\ A}% -\def\josab{J.\ Opt.\ Soc.\ Am.\ B}% -\def\jpp{J.\ Phys.\ (Paris)}% -\def\nat{Nature (London)}% -\def\oc{Opt.\ Commun.}% -\def\ol{Opt.\ Lett.}% -\def\pl{Phys.\ Lett.}% -\def\pra{Phys.\ Rev.\ A}% -\def\prb{Phys.\ Rev.\ B}% -\def\prc{Phys.\ Rev.\ C}% -\def\prd{Phys.\ Rev.\ D}% -\def\pre{Phys.\ Rev.\ E}% -\def\prl{Phys.\ Rev.\ Lett.}% -\def\rmp{Rev.\ Mod.\ Phys.}% -\def\pspie{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.}% -\def\sjqe{Sov.\ J.\ Quantum Electron.}% -\def\vr{Vision Res.}% -% \end{macrocode} -% -% \subsection{APS Setup}% -% Here we define the default procedures for APS journals. -% Individual APS journals may override these definitions. -% -% \subsubsection{Title block}% -% -% The specifics of the title block. -% Apply to all APS journals; individual journals may override these settings. -% -% \begin{macro}{\@fnsymbol} -% The \LaTeX\ kernel definition of \cmd\@fnsymbol\ is overridden. -% 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.} -% \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\else - \mathsection\mathsection\or - \mathparagraph\mathparagraph\or - ***\or - \dagger\dagger\dagger\or - \ddagger\ddagger\ddagger\else - \mathsection\mathsection\mathsection\or - \mathparagraph\mathparagraph\mathparagraph\or -% - \@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} -% -% 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 -\@booleantrue\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-1.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, and RMP. -% At present, they are identical, -% with the exception of PRB and RMP. -% -% 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}}% -% We define a \cmd\citealp-like procedure that uses a numerical citation; it is for use in -% the PRB journal. -% \begin{macrocode} -\def\rtx@apsprb{% - \class@info{APS journal PRB selected}% -% \end{macrocode} -% PRB requires superscript citations. -% We use Patrick Daly's \classname{natbib} package, -% and hyperref and other packages are already set up to cope with this. -% -% \begin{macro}{\bibpunct} -% By default, PRB selects the \classoption{bibnotes} option. -% We also set up for numerical citations. -% \begin{macrocode} - \let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote - \appdef\setup@hook{% - \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}% - \let\onlinecite\rev@citealpnum - }% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\pre@bibdata} -% \begin{macro}{\@endnotetext} -% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}% -% -% 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} -% \end{macro} -% -% Invoke \classoption{superbib} option. -% If the document makes a selection of its own, it will override this assignment. -% \begin{macrocode} - \let\place@bibnumber\place@bibnumber@sup -% \end{macrocode} -% -% End of \classoption{prb} code. -% \begin{macrocode} -}% -% \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{per}}% -% Here is code specific to \classoption{per}. -% \begin{macrocode} -\def\rtx@apsprstper{% - \class@info{APS journal PRST-PER selected}% -% \end{macrocode} -% To first order, PER is the same as PRB, with superscript citations. -% -% \begin{macrocode} - \rtx@apsprb -% \end{macrocode} -% Per Mark Doyle (2009-12-22), the default is longbibliography. -% \changes{4.1n}{2010/01/04}{(AO, 575) the default for journal prstper is longbibliography}% -% \begin{macrocode} - \@booleantrue\longbibliography@sw -% \end{macrocode} -% -% ``Section heads are bold, centered (Roman numeral, Latin letter)'' -% -% Article titles do not have surrounding double-quotes! -% -% End of \classoption{prb} code. -% \begin{macrocode} -}% -% \end{macrocode} -% -% \subsubsection{\classoption{prstab}}% -% There is no code specific to \classoption{prstab}. -% \begin{macrocode} -\def\rtx@apsprstab{% - \class@info{APS journal PRSTAB selected}% -}% -% \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{% - apsrev41Control% -% \end{macrocode} -% Say whether we want long bibliography style (the default), or the abbreviated style. -% \begin{macrocode} - \longbibliography@sw{% - ,author="00",editor="1",pages="1",title="0",year="0"% - }{% - ,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{apsrev41Control}}% - \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} -% -% \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. -% \begin{macrocode} -\def\PACS@warn{RMP documents do not display PACS. Your \string\pacs\space will be ignored}% -% \end{macrocode} -% \end{macro} -% -% \begin{macro}{\frontmatter@title@above} -% \begin{macro}{\frontmatter@title@format} -% \begin{macro}{\frontmatter@title@below} -% -% \begin{macrocode} -\def\frontmatter@title@above{}% -\def\frontmatter@title@format{\Large\bfseries\raggedright}% HelveticaNeue-Medium(Italic) 14pt. -\def\frontmatter@title@below{\addvspace{12\p@}}% 24pt b-b down to first author -% \end{macrocode} -% \end{macro} -% \end{macro} -% \end{macro} -% -% \begin{macro}{\frontmatter@authorformat} -% \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-1.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="",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{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} -% -% \end{macrocode} -% -% -% \Finale -% %Here ends the programmer's documentation. -% \endinput -% -\endinput diff --git a/Master/texmf-dist/source/latex/revtex4-1/aip.dtx b/Master/texmf-dist/source/latex/revtex4-1/aip.dtx new file mode 100644 index 00000000000..edfe1b17f76 --- /dev/null +++ b/Master/texmf-dist/source/latex/revtex4-1/aip.dtx @@ -0,0 +1,2059 @@ +% \iffalse meta-comment +% aip.dtx: package to change page grid, MVL. +% Copyright (c) 2008 American Institute of Physics +% mailto:tex@aip.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.3 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 aip.dtx +% and the derived files +% aip.rtx, aip.pdf, aip.ins, aip.drv. +% Distribution: +% CTAN:macros/latex/contrib/aip/ +% +% Unpacking: +% tex aip.dtx +% +% Documentation: +% latex aip.dtx; ... +% +% Programm calls to get the documentation (example): +% pdflatex aip.dtx +% makeindex -s gind.ist aip +% makeindex -s gglo.ist -o aip.gls aip.glo +% pdflatex aip.dtx +% makeindex -s gind.ist aip +% pdflatex aip.dtx +% +% Installation: +% TDS:bibtex/bst/aip/ +% TDS:doc/latex/aip/ +% TDS:source/latex/aip/ +% TDS:tex/latex/aip/ +% +% 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 +% +%<*install> +%% This file will generate documentation and runtime files +%% from aip.dtx when run through LaTeX or TeX. +%% This file requires docstrip version 2.4 or higher available from +%% ftp://ctan.tug.org/tex-archive/macros/latex/unpacked/docstrip.tex +\input docstrip +\preamble + +This is a generated file; +altering it directly is inadvisable; +instead, modify the original source file. +See the URL in the file README. + +Copyright (c) 2008 American Institute of Physics. +mailto:tex@aip.org + +Maintained by Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net) +under contract to American Institute of Physics. + +License + You may distribute this file under the conditions of the + LaTeX Project Public License 1.3 or later + (http://www.latex-project.org/lppl.txt). + + This file is distributed WITHOUT ANY WARRANTY; + without even the implied warranty of MERCHANTABILITY + or FITNESS FOR A PARTICULAR PURPOSE. + +\endpreamble +\askforoverwritefalse +\keepsilent + \generate{% + %{ignore} +% \file{aip.ins}{\from{aip.dtx}{install}}% +% \file{aip.drv}{\from{aip.dtx}{driver}}% +% \usedir{tex/latex/aip}% + \file{aip4-1.rtx}{\from{aip.dtx}{package}}% + }% +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation, please move} +\Msg{* aip.rtx} +\Msg{* into a directory searched by TeX;} +\Msg{* in a TDS-compliant installation:} +\Msg{* texmf/tex/macros/latex/aip/.} +\Msg{*} +\Msg{* To produce the documentation, + run aip.dtx through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} +\endbatchfile +% +%<*ignore> +\fi +% +% \fi +% +% \GetFileInfo{aip.dtx} +% +% \iffalse ltxdoc klootch +%<*package> +%%% @LaTeX-file{ +%%% filename = "aip.dtx", +%%% version = "4.1s", +%%% date = "2020/09/30", +%%% author = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net), +%%% commissioned by the American Institute of Physics. +%%% ", +%%% copyright = "Copyright (C) 2008 American Institute of Physics, +%%% distributed under the terms of the +%%% LaTeX Project Public License, see +%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt +%%% ", +%%% address = "AIP Journal Program +%%% American Institute of Physics, +%%% Suite 1NO1, 2 Huntington Quadrangle, +%%% Melville, NY 11747 USA", +%%% telephone = "", +%%% FAX = "", +%%% email = "mailto colon tex at aip.org", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, page grid, main vertical list", +%%% supported = "yes", +%%% abstract = "aip substyle for REVTeX", +%%% } +% +% \fi +% +% \iffalse ltxdoc klootch +% The following references the \file{README} file, +% which contains basic information about this package. +% The contents of this file are generated when +% you typeset the programmer's documentation. +% Search on "{filecontents*}{README}" to locate it. +% \fi\input{README}% +% +% \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} +%aip.dtx +%\end{verbatim} +% +% \subsubsection{Generated by \texttt{latex aip.dtx}}% +% Typesetting the source file under \LaTeX\ +% generates the readme and the installer. +%\begin{verbatim} +%README aip.ins +%\end{verbatim} +% +% \subsubsection{Generated by \texttt{tex aip.dtx}}% +% Typesetting the installer generates +% the package files. +%\begin{verbatim} +%aip.rtx +%\end{verbatim} +% +% \subsubsection{Documentation}% +% The following are the online documentation: +% \begin{verbatim} +%aip.pdf +% \end{verbatim} +% +% \subsubsection{Auxiliary}% +% The following are auxiliary files generated +% in the course of running \LaTeX: +% \begin{verbatim} +%aip.aux aip.idx aip.ind aip.log aip.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} +%<*driver|package> +\NeedsTeXFormat{LaTeX2e}[1996/12/01]% +% +% \end{macrocode} +% As desired, the following modules all +% take common version information: +% \begin{macrocode} +%\ProvidesFile{aip4-1.rtx}% +%<*driver> +\expandafter\ProvidesFile\expandafter{\jobname.dtx}% +% +% \end{macrocode} +% +% The following line contains, for once and for all, +% the version and date information. +% By various means, this information is reproduced +% consistently in all generated files and in the +% typeset documentation. +% \begin{macrocode} +%<*driver|package> +% + [2020/09/30 4.1s AIP substyle for REVTeX]% \fileversion +% +% \end{macrocode} +% +% +% \section{The driver module \texttt{driver}} +% +% This module, consisting of the present section, +% typesets the programmer's documentation, +% generating the \file{.ins} installer and \file{README} as required. +% +% 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} +%<*driver> +% \end{macrocode} +% +% \subsection{The Preamble} +% The programmers documentation is formatted +% with the \classname{ltxdoc} class with local customizations, +% and with the usual code line indexing. +% \begin{macrocode} +\documentclass{ltxdoc} +\RequirePackage{ltxdocext}% +\let\url\undefined +\RequirePackage[colorlinks=true,linkcolor=blue]{hyperref}% +\expandafter\ifx\csname package@font\endcsname\relax\else + \expandafter\expandafter + \expandafter\RequirePackage + \expandafter\expandafter + \expandafter{\csname package@font\endcsname}% +\fi +\gdef\lquote{`}\gdef\rquote{'}% +\CodelineIndex\EnableCrossrefs % makeindex -s gind.ist aip +\RecordChanges % makeindex -s gglo.ist -o aip.gls aip.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 ``Read Me'' File} +% As promised above, here is the contents of the +% ``Read Me'' file. That file serves a double purpose, +% since it also constitutes the beginining of the +% programmer's documentation. What better thing, after +% all, to have appear at the beginning of the +% typeset documentation? +% +% A good discussion of how to write a ReadMe file can be found in +% Engst, Tonya, ``Writing a ReadMe File? Read This'' +% \emph{MacTech} October 1998, p. 58. +% +% Note the appearance of the +% \cmd\StopEventually\ command, which marks the +% dividing line between the user documentation +% and the programmer documentation. +% +% The usual user will not be asked to +% do a full build, not to speak +% of the bootstrap. +% Instructions for carrying these processes +% begin the programmer's manual. +% +%\changes{4.1b}{2008/08/06}{Beta candidate b} +% \begin{macrocode} +\begin{filecontents*}[overwrite]{README} +\title{% + The \classname{aip} substyle for REV\TeX% + \protect\thanks{% + \fileversion\ \copyright 2009 American Institute of Physics + % For version number and date, + % search on "\fileversion" in the .dtx file, + % or see the end of the README file. + }% +}% + +\author{% +Arthur Ogawa\thanks{mailto:arthur\_ogawa at sbcglobal.net}% +}% +\date{Version \fileversion, dated \filedate}% +\maketitle + +This file embodies the implementation of the +AIP journal substyles for APS's \revtex\ 4.1 document class +for electronic submissions to AIP journals. + +The distribution point for this work is +\url{http://authors.aip.org/REVTEX}. +The archive contains ready-to-Install files, documentation, and full source. + +This package is also distributed via CTAN: +\url{http://www.ctan.org/pub/tex-archive/macros/latex/contrib/aip}, and as a ready-to-install image as +\url{http://www.ctan.org/pub/tex-archive/install/macros/latex/contrib/aip.tds.zip}. + +The \classname{aip} package was commissioned by the American Institute of Physics +and is distributed under the terms of the \LaTeX\ Project Public License, +the same license under which all the portions of \LaTeX\ itself is distributed. +Please see \url{http://ctan.tug.org/macros/latex/base/lppl.txt} for details. + +To use this document class, you must have a working +\TeX\ installation equipped with \LaTeXe\ +and possibly pdftex and Adobe Acrobat Reader or equivalent. + +To install, retrieve the distribution, +unpack it into a directory on the target computer, +and move the file \file{aip.rtx} +into a location in your filesystem where it will be found by \LaTeX. + +To use, read the user documentation \file{auguide.pdf}. + +\tableofcontents + +\section{Overview}% +\revtex\ is a \LaTeXe\ document class, somewhat like a hybrid of +the standard \LaTeX\ \classname{book} and \classname{article} classes. + +This document class implements the AIP society and journal substyles: +the journals represent a set of mutually exclusive class options that, in this case, allow the +document class to address multiple journals within the AIP family. +This society is obtained with class option \classoption{aip}. + +\section{Processing Instructions} + +The package file \file{aip.rtx} +is generated from this file, \file{aip.dtx}, +using the {\sc docstrip} facility of \LaTeX +via |tex aip.dtx|. +The typeset documentation that you are now reading is generated from +the same file by typesetting it with \LaTeX\ or pdftex +via |latex aip.dtx| or |pdflatex aip.dtx|. + +\subsection{Build Instructions} + +You may bootstrap this suite of files solely from \file{aip.dtx}. +Prepare by installing \LaTeXe\ (and either tex or pdftex) on your computer, +then carry out the following steps: +\begin{enumerate} +\item +Within an otherwise empty directory, +typeset \file{aip.dtx} with \LaTeX\ or pdflatex; +you will obtain the typeset documentation you are now reading, +along with +the installer \file{aip.ins}, +and the file \file{README}. + +Note: you will have to run \LaTeX\ twice, then \file{makeindex}, then +\LaTeX\ again in order to obtain a valid index and table of contents. +\item +Now typeset \file{aip.dtx} with \TeX (not \LaTeX), +thereby generating the package file \file{aip.rtx}. +\item +Install \classname{aip.rtx} +by moving it to a location +in your filesystem where it will be found by \LaTeX, +like \file{tex/latex/aip}. +\item +Install \classname{aip.pdf} +by moving it to +\file{doc/latex/aip}. +\item +Using the \file{.dbj} information herein, +generate the needed \file{.bst} files and install them in +\file{bibtex/bst/aip}. +\end{enumerate} +\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} +\begin{document}% +\newcommand\revtex{REV\TeX}% +\expandafter\DocInput\expandafter{\jobname.dtx}% +% ^^A\PrintChanges +\end{document} +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \section{AIP: A set of journal-specifc extensions to \revtex} +% +% To create a journal substyle, you create +% a \file{.rtx} file, in our case \file{aip.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 JMP looks like: +% \begin{verbatim} +% \@ifx{\@journal\journal@jmp}{% +% +% }{}% +% \end{verbatim} +% +% \section{The \classoption{aip} class option: the \texttt{aip} module} +% The file \file{aip.rtx} is read in by the \classname{revtex4} document class +% if \cmd\@society\ has the value \classoption{aip}. +% +% Here, code specific to AIP journals appears. +% +% We first give some text entities (amounting to journal abbreviations), +% then some AIP-specific initialisations, +% then code for particular AIP journals. +% In the latter case, the choice is +% keyed off the macro \cmd\@journal. +% +% Note on \cmd\AtEndOfClass: +% this file, like all journal substyles, is read in at \cmd\AtEndOfClass\ time, +% so you should not use this command in this file. +% Note for \LaTeX\ developers: It would be an improvement in \LaTeX\ to +% \cmd\let\cmd\AtEndOfClass\ to something like \cmd\@firstofone. +% This change would be effected in \cmd\@onefilewithoptions. +% +% \begin{macrocode} +%<*package> +% \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 AIP selected}% +% \end{macrocode} +% +% \subsection{Substyle Options}% +% +% Here are the class options relating to the AIP: +% \begin{macrocode} +\DeclareOption{jcp}{\change@journal{jcp}}% +\DeclareOption{pop}{\change@journal{pop}}% +\DeclareOption{rsi}{\change@journal{rsi}}% +\DeclareOption{jap}{\change@journal{jap}}% +\DeclareOption{apl}{\change@journal{apl}}% +\DeclareOption{cha}{\change@journal{cha}}% +\DeclareOption{pof}{\change@journal{pof}}% +\DeclareOption{bmf}{\change@journal{bmf}}% +\DeclareOption{rse}{\change@journal{rse}}% +\DeclareOption{jmp}{\change@journal{jmp}}% +% \end{macrocode} +% +% Option allowing for ``numerical author-year'' bibliography. +% \begin{macrocode} +\DeclareOption{author-numerical}{% + \@booleantrue\authoryear@sw + \@booleantrue\authornum@sw +}% +% \end{macrocode} +% +% Optionally allow article title in bibliography entries. +% A new switch is defined here: \cmd\aip@jtitx@sw\ signifies that +% the numbered style bibliography is to be prepared without article titles in @ARTICLE entries. +% Otherwise, such titles are incorporated if present in the \file{.bib} entry. +% By default, exclude the article titles. +% \begin{macrocode} +\DeclareOption{article-title}{% + \@booleanfalse\aip@jtitx@sw +}% +\@booleantrue \aip@jtitx@sw +% \end{macrocode} +% +% Establish default options for this society. +% +% \begin{macrocode} +\@booleanfalse\authoryear@sw +\@booleanfalse\authornum@sw +% \end{macrocode} +% +% \begin{macro}{\@bibdataout@init} +% \begin{macro}{\@bibdataout@aip} +% \changes{4.1o}{2010/02/12}{(AO, 580) Control .bst at run time.}% +% Procedure \cmd\@bibdataout@aip\ 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 (AIP) and journal. +% +% \begin{macrocode} +\appdef\@bibdataout@rev{\@bibdataout@aip}% +\def\@bibdataout@aip{% + \immediate\write\@bibdataout{% +% \end{macrocode} +% An entry that controls processing of the \filename{.bst} file has entry type \texttt{@CONTROL}. +% \begin{macrocode} + @CONTROL{% + aip41Control% +% \end{macrocode} +% Say whether we want long bibliography style (the default), or the abbreviated style. +% \begin{macrocode} + \longbibliography@sw{\true@sw}{\aip@jtitx@sw{\false@sw}{\true@sw}}% + {% + ,pages="1",title="0"% + }{% + ,pages="0",title=""% + }% + }% + }% +% \end{macrocode} +% Place a \cmd\citation\ into the auxiliary file corresponding to this entry. +% \begin{macrocode} + \if@filesw + \immediate\write\@auxout{\string\citation{aip41Control}}% + \fi +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% For AIP, the preprint style \classoption{preprint} is the default. +% \begin{macrocode} +\@booleantrue\preprintsty@sw +% \end{macrocode} +% +% \begin{macro}{\showPACS@sw} +% \begin{macro}{\showKEYS@sw} +% If \cmd\showPACS@sw\ is true, print the PACS information in the title block, +% otherwise not. +% Similarly for \cmd\showKEYS@sw\ and the keywords. +% \begin{macrocode} +\@booleantrue\showPACS@sw +\@booleantrue\showKEYS@sw +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\refname} +% +% In reprint style only, we eliminate the head above the bibliography. +% \begin{macrocode} +\appdef\setup@hook{% + \preprintsty@sw{}{% + \let\refname\@empty + }% +}% +% \end{macrocode} +% \end{macro} +% +% \subsection{AIP Setup}% +% Here we define the default procedures for AIP journals. +% Individual AIP journals may override these definitions. +% +% \subsubsection{Running header and footer}% +% +% Page style for all AIP journals. +% We assert our own page style only if nobody else has done so. +% Users wishing to customize their documents will be able to invoke a \cmd\pagestyle\ +% command anywhere in the preamble. +%FIXME: \cmd\preprintsty@sw\ is defined? +% \begin{macrocode} +\appdef\setup@hook{% + \preprintsty@sw{% + \ps@preprint + }{% + \ps@article + }% +}% +% \end{macrocode} +% +% The spc says: ``Running title must be provided on title page'', +% and that journal classes 1b and 2 have no running title. +% \begin{macrocode} +\def\ps@preprint{% + \def\@oddhead{\@runningtitle\hfil}% + \def\@evenhead{\@runningtitle\hfil}% + \def\@oddfoot{\hfil\thepage\quad\checkindate\hfil}% + \def\@evenfoot{\hfil\thepage\quad\checkindate\hfil}% + \let\@mkboth\@gobbletwo + \let\sectionmark\@gobble + \let\subsectionmark\@gobble +}% +\def\ps@article{% + \def\@evenhead{\let\\\heading@cr\thepage\quad\checkindate\hfil\@runningtitle}% + \def\@oddhead{\let\\\heading@cr\@runningtitle\hfil\checkindate\quad\thepage}% + \def\@oddfoot{}% + \def\@evenfoot{}% + \let\@mkboth\@gobbletwo + \let\sectionmark\@gobble + \let\subsectionmark\@gobble +}% +\def\@runningtitle{\@shorttitle}% +% \end{macrocode} +% +% \subsubsection{Title block}% +% +% The specifics of the title block. +% Apply to all AIP journals; individual journals may override these settings. +% +% \begin{macro}{\titlepage} +% \begin{macrocode} +\renewenvironment{titlepage}{% + \let\wastwocol@sw\twocolumn@sw + \onecolumngrid + \newpage + \thispagestyle{titlepage}% + \c@page\z@% article sets this to one not zero??? +}{% + \wastwocol@sw{\twocolumngrid}{\newpage}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\@fnsymbol} +% On the title page, footnotes are lettered with right parenthesis: ``a)''. +% \begin{macrocode} +\let\@fnsymbol@latex\@fnsymbol +\let\@fnsymbol\@alph +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\adjust@abstractwidth} +% This procedure is used by many titlepage elements to indent on the left by a particular +% amount. The author list uses \cmd\frontmatter@authorformat\ to accomplish the same. +% \begin{macrocode} +\def\adjust@abstractwidth{% + \parindent1em\relax + \advance\leftskip.5in\relax + \@totalleftmargin\leftskip + \@afterheading\@afterindentfalse +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter@abstractheading} +% AIP Journals all set the abstract head the same way, with no head. +% \begin{macrocode} +\def\frontmatter@abstractheading{}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter@abstractfont} +% All AIP journals set the abstract body the same way. +% \begin{macrocode} +\def\frontmatter@abstractfont{% +%\small + \adjust@abstractwidth +}% +% \end{macrocode} +% \end{macro} +% +% All AIP journal preprints use separate titlepage and full-width abstract. +% \begin{macrocode} +\appdef\setup@hook{% + \preprintsty@sw{% + \@booleantrue\titlepage@sw +% \def\frontmatter@affiliationfont{\it}% + \let\section\section@preprintsty +% \let\@hangfrom@section\@hangfrom@section@preprintsty + \let\subsection\subsection@preprintsty + \let\subsubsection\subsubsection@preprintsty + }{}% +}% +% \end{macrocode} +% +% \begin{macro}{\frontmatter@authorformat} +% All AIP 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@@indent{% + \skip@\@flushglue + \@flushglue\z@ plus.3\hsize\relax + \raggedright + \advance\leftskip.5in\relax + \@totalleftmargin\leftskip + \@flushglue\skip@ +}% +\def\frontmatter@authorformat{% + \frontmatter@@indent + \sffamily +%\advance\baselineskip\p@ +%\parskip11.5\p@\relax +}% +\renewcommand*\email[1][Electronic mail: ]{\begingroup\sanitize@url\@email{#1}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter@above@affilgroup} +% The default amount of space above affiliation. +% \begin{macrocode} +\def\frontmatter@above@affilgroup{% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter@above@affiliation} +% \begin{macro}{\frontmatter@above@affiliation@script} +% The default amount of space above affiliation. +% \begin{macrocode} +\def\frontmatter@above@affiliation@script{% + \frontmatter@@indent +%\addvspace{3.5\p@}% +}% +\def\frontmatter@above@affiliation{% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\frontmatter@affiliationfont} +% All AIP journals set the affiliation the same. +% Like the author, but in italic. +% \begin{macrocode} +\def\frontmatter@affiliationfont{% + \frontmatter@@indent + \preprintsty@sw{}{\small}% + \it +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter@collaboration@above} +% \begin{macrocode} +\def\frontmatter@collaboration@above{% +}% +% \end{macrocode} +% \end{macro} +% +% Set up the default AIP style for title block authors and affiliations. +% +% \begin{macro}{\frontmatter@setup} +% All AIP 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 AIP journals set the article title 12 point Times Roman, bold, flush left. +% +% \begin{macrocode} +\def\frontmatter@title@above{\addvspace{6\p@}}% +\def\frontmatter@title@format{% + \preprintsty@sw{}{\Large}% + \sffamily + \bfseries + \raggedright + \parskip\z@skip +}% +\def\frontmatter@title@below{\addvspace{3\p@}}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\frontmatter@makefnmark} +% All AIP journals share this procedure for setting the titlepage footnote text: +% superior lowercase letter, with right parenthesis. +% \begin{macrocode} +\def\@author@parskip{3\p@}% +\@booleantrue\altaffilletter@sw +\def\frontmatter@makefnmark{% + \@textsuperscript{% + \normalfont\@thefnmark%( + )% + }% +}% +\def\frontmatter@authorbelow{% + \addvspace{3\p@}% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\affil@cutoff} +% We override \cmd\affil@cutoff\ to enforce the rule that, +% if a single affiliation appears on the title page, then +% no affiliation superscript at all is produced. +% \begin{macrocode} +\let\affil@cutoff\tw@ +% \end{macrocode} +% De awa. +% \end{macro} +% +% \begin{macro}{\frontmatter@RRAP@format} +% All AIP 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{% + \addvspace{5\p@}% + \small + \raggedright + \advance\leftskip.5in\relax + \@totalleftmargin\leftskip +% \preprintsty@sw{}{\parskip.5ex\relax}% + \everypar{% + \hbox\bgroup(\@gobble@leavemode@uppercase%) + }% + \def\par{% + \@ifvmode{}{%( + \unskip)\egroup\@@par + }% + }% +}% +\def\punct@RRAP{;\egroup\ \hbox\bgroup}% +\def\@gobble@leavemode@uppercase#1#2{\expandafter\MakeTextUppercase}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter@PACS@format} +% +% \begin{macrocode} +\def\frontmatter@PACS@format{% + \addvspace{11\p@}% +% \footnotesize + \adjust@abstractwidth + \parskip\z@skip + \samepage +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter@keys@format} +% +% \begin{macrocode} +\def\frontmatter@keys@format{% +% \footnotesize + \adjust@abstractwidth + \samepage +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\ps@titlepage} +% Title page style. Currently empty except for preprint header, +% which consists of all the \cmd\preprint\ arguments, +% stacked flush right at the right margin. +% \begin{macrocode} +\def\ps@titlepage{% + \def\@oddhead{% + \@runningtitle + \hfill + \produce@preprints\@preprint + }% + \let\@evenhead\@oddhead + \def\@oddfoot{% + \hb@xt@\z@{\byrevtex\hss}% + \hfil + \preprintsty@sw{\thepage}{}% + \quad\checkindate + \hfil + }% + \let\@evenfoot\@oddfoot +}% +\def\byrevtex{\byrevtex@sw{Typeset by REV\TeX and AIP}{}}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\produce@preprints} +% \begin{macrocode} +\def\produce@preprints#1{% + \preprint@sw{% + \vtop to \z@{% + \def\baselinestretch{1}% + \small + \let\preprint\preprint@count + \count@\z@#1\@ifnum{\count@>\tw@}{% + \hbox{% + \let\preprint\preprint@hlist + #1\setbox\z@\lastbox + }% + }{% + \let\preprint\preprint@cr + \halign{\hfil##\cr#1\crcr}% + \par + \vss + }% + }% + }{}% +}% +\def\preprint@cr#1{#1\cr}% +\def\preprint@count#1{\advance\count@\@ne}% +\def\preprint@hlist#1{#1\hbox{, }}% +% \end{macrocode} +% \end{macro} +% +% \subsubsection{Lead-in paragraph}% +% +% The \env{Lead-in paragraph} environment formats the AIP ``lead paragraph''. +% To avoid introducing new syntax, we take over the \env{quotation} environment +% until the first \cmd\section\ (or other sectioning command) appears. +% +% \begin{macrocode} +\newenvironment{Lead@inParagraph}{% + \par + \bfseries + \@afterheading\@afterindentfalse +}{% + \par + \hb@xt@\hsize{\hfil\leaders\hrule\hfil\leaders\hrule\hfil\hfil}% +}% +% \end{macrocode} +% At the beginning of the document temporarily change the meaning of +% the \env{quotation} environment, restoring it once the first sectioning +% command is given. +% \begin{macrocode} +\appdef\frontmatter@init{% + \let@environment{quotation@ltx}{quotation}% + \let@environment{quotation}{Lead@inParagraph}% +}% +\appdef\@startsection@hook{% + \let@environment{quotation}{quotation@ltx}% +}% +% \end{macrocode} +% +% \subsubsection{Stacked Heads}% +% All AIP 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 + \sffamily + \bfseries + \raggedright + }% +}% +\def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}% +\def\@hangfroms@section#1#2{#1\MakeTextUppercase{#2}}% +% \end{macrocode} +% +% See, e.g., BMF\_044101\_1 (1) or BMF\_044103\_1 (1) +% \begin{macrocode} +\def\subsection{% + \@startsection + {subsection}% + {2}% + {\z@}% + {.8cm \@plus1ex \@minus .2ex}% + {.5cm}% + {% + \normalfont + \small + \sffamily + \bfseries + \raggedright + }% +}% +% \end{macrocode} +% +% See, e.g., BMF\_044104\_1 (1), JMP\_123520\_1 (48), +% \begin{macrocode} +\def\subsubsection{% + \@startsection + {subsubsection}% + {3}% + {\z@}% + {.8cm \@plus1ex \@minus .2ex}% + {.5cm}% + {% + \normalfont + \small + \sffamily + \bfseries + \itshape + \raggedright + }% +}% +% \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 + \bfseries + \raggedright + }% +}% +%\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 + \bfseries + \raggedright + }% +}% +% \end{macrocode} +% \begin{macrocode} +\def\subsubsection@preprintsty{% + \@startsection + {subsubsection}% + {3}% + {\z@}% + {.8cm \@plus1ex \@minus .2ex}% + {.5cm}% + {% + \normalfont +% \small + \itshape\bfseries + \raggedright + }% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% For examples of +% \env{theorem}, \env{proposition}, \env{lemma}, \env{remark}, \env{corollary}, \env{example}, +% and \env{proof} (with optional title), +% using independent numbering for each class, +% and with numbered and roman lists therein, +% see JMP\_122901\_1 (48). +% +% For theorems, etc, numbered by section, (and with theorems in the appendix) +% but equations numbered throughout, +% see JMP\_123301\_1 (48). +% +% For a (roman) list in text, theorem, and proof, +% see JMP\_123514\_1 (48). +% +% For numbered list in text, +% and equations numbered by section, +% see JMP\_123518\_1 (48). +% +% All AIP journals use frontmatter footnotes by default. +% \begin{macrocode} +\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote +% \end{macrocode} +% +% +% \subsubsection{Table of Contents}% +% The toc will itself make an entry in the toc, +% but we temporarily turn off toc formatting for the duration. +% \begin{macrocode} +\def\@pnumwidth{1.55em} +\def\@tocrmarg {2.55em} +\def\@dotsep{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} +% +% \begin{macrocode} +\def\l@part#1#2{\addpenalty{\@secpenalty}% + \begingroup + \set@tocdim@pagenum{#2}% +% \@tempdima 3em % + \parindent \z@ + \rightskip\tocleft@pagenum plus 1fil\relax + \skip@\parfillskip\parfillskip\z@ + \addvspace{2.25em plus\p@}% + \large \bf % + \leavevmode\ignorespaces#1\unskip\nobreak\hskip\skip@ + \hb@xt@\rightskip{\hfil\unhbox\z@}\hskip-\rightskip\hskip\z@skip + \par + \nobreak % + \endgroup +}% +% \end{macrocode} +% +% \begin{macro}{\l@section} +% Determine which TOC elements are automatically indented. +% \begin{macrocode} +\def\tocleft@{\z@}% +\def\tocdim@min{5\p@}% +\def\l@section{% + \l@@sections{}{section}% Implicit #3#4 +}% +\def\l@f@section{% + \addpenalty{\@secpenalty}% + \addvspace{1.0em plus\p@}% + \bf +}% +\def\l@subsection{% + \l@@sections{section}{subsection}% Implicit #3#4 +}% +\def\l@subsubsection{% + \l@@sections{subsection}{subsubsection}% Implicit #3#4 +}% +\def\l@paragraph#1#2{}% +\def\l@subparagraph#1#2{}% +% \end{macrocode} +% \end{macro} +% +% Activate the auto TOC processing. +% \begin{macrocode} +\let\toc@pre\toc@pre@auto +\let\toc@post\toc@post@auto +% \end{macrocode} +% +% \begin{macrocode} +\def\listoffigures{\print@toc{lof}}% +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}} +% \end{macrocode} +% +% \begin{macrocode} +\def\listoftables{\print@toc{lot}}% +\let\l@table\l@figure +% \end{macrocode} +% +% \subsubsection{Default column bottom}% +% All AIP journal styles have flush 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 AIP publications have the same table specification: +% Scotch rules above and below, centered in column. +% \begin{macrocode} +\def\tableft@skip@float{\z@ plus\hsize}% +\def\tabmid@skip@float{\@flushglue}% +\def\tabright@skip@float{\z@ plus\hsize}% +\def\array@row@pre@float{\hline\hline\noalign{\vskip\doublerulesep}}% +\def\array@row@pst@float{\noalign{\vskip\doublerulesep}\hline\hline}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% +% \subsubsection{Footnote formatting}% +% We customize the formatting of footnotes for all AIP journals. +% \begin{macro}{\@makefntext} +% \begin{macrocode} +\def\@makefntext#1{% + \def\baselinestretch{1}% + \leftskip1em% + \parindent1em% + \noindent + \nobreak\hskip-\leftskip + \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} +% \begin{macrocode} +\prepdef\appendix{% + \par + \let\@hangfrom@section\@hangfrom@appendix +%\let\@hangfroms@section\@hangfroms@appendix + \let\@sectioncntformat\@appendixcntformat +}% +\def\@hangfrom@appendix#1#2#3{% + #1% + \@if@empty{#2}{% + #3% + }{% + #2\@if@empty{#3}{}{:\ #3}% + }% +}% +\def\@hangfroms@appendix#1#2{% + #1#2% +}% +\def\@appendixcntformat#1{\appendixname\ \csname the#1\endcsname}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \subsubsection{Bibliography}% +% +% Customize the \revtex\ for the AIP society. +% this task requires three components: +% the \BibTeX\ \file{aipnum.bst} and \file{aipauth.bst} style files, +% customizing code for \file{natbib}, and +% customizations of the \env{thebibliography} environment. +% +% \begin{macro}{\@bibstyle} +% Define the argument of the \cmd\bibliographystyle\ command. +% The user must have installed a \file{.bst} file of the corresponding name. +% This file will then be used by \BibTeX\ when compiling the document's \file{.bbl} file. +% +% The default bibliography style for the AIP journal substyles are \file{aipnum.bst} and \file{aipauth.bst}. +% To generate them, 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: +% +% \begin{enumerate} +% \item +% ORDERING OF REFERENCES: c: seq-no (references in order of Citation); +% \item +% AUTHOR NAMES: i: nm-init,ed-au (Initials + surname); +% \item +% NUMBER OF AUTHORS: l: max 12, min 12 (there will be three prompts total); +% \item +% TYPEFACE FOR AUTHORS IN LIST OF REFERENCES: u: nmft,nmft-def (User defined author font); +% \item +% FONT FOR FIRST NAMES: u: fnm-def (First names in user defined font); +% \item +% EDITOR NAMES IN INCOLLECTION ETC: a: nmfted (Editors incollection like authors); +% \item +% DATE FORMAT: p: yr-par (Date in parentheses); +% \item +% SUPPRESS MONTH: x: xmth (Date is year only); +% \item +% TITLE OF ARTICLE: i: tit-it (Title italic) +% \item +% ARTICLE TITLE PRESENT: x: jtit-x (No article title); +% \item +% JOURNAL NAME FONT: r: jttl-rm (Journal title normal); +% \item +% TECHNICAL REPORT TITLE: b: trtit-b (Tech. report title like books); +% \item +% JOURNAL VOLUME: b: vol-bf (Volume bold); +% \item +% VOLUME PUNCTUATION: c: volp-com (Volume with comma); +% \item +% PAGE NUMBERS: f: jpg-1 (Only start page number); +% \item +% JOURNAL NAME PUNCTUATION: x: jnm-x (Space after journal); +% \item +% PUBLISHER IN PARENTHESES: d: pub-date (Publisher and date in parentheses); +% \item +% PUBLISHER POSITION: p: pre-pub (Publisher before chapter, pages); +% \item +% ISBN NUMBER: isbn: (Include ISBN for books, booklets) +% \item +% ISSN NUMBER: issn: (Include ISSN for periodicals) +% \item +% EDITOR IN COLLECTIONS: b: edby (Booktitle, edited by \dots); +% \item +% PUNCTUATION BETWEEN SECTIONS (BLOCKS): c: blk-com (Comma between blocks); +% \item +% ABBREVIATE WORD `PAGES': a: pp (`Page' abbreviated); +% \item +% ABBREVIATE WORD `EDITORS': a: ed (`Editor' abbreviated); +% \item +% OTHER ABBREVIATIONS: a: abr (Abbreviations); +% \item +% ABBREVIATION FOR `EDITION': a: ednx (`Edition' abbreviated as `ed'); +% \item +% EDITION NUMBERS: n: ord (Numerical editions); +% \item +% STORED JOURNAL NAMES: a: jabr (Abbreviated journal names); +% \item +% FONT OF `ET AL': i: etal-it (Italic et al); +% \item +% ADDITIONAL REVTeX DATA FIELDS: r: revdata, eprint, url, url-blk (Include REVTeX data fields collaboration, eid, eprint, numpages, url) +% \item +% NEW FONT SELECTION SCHEME: n: nfss (NFSS); +% \item +% ADDITIONAL REVTeX DATA FIELDS: y: revdata (additional data fields); +% \item +% REFERENCE COMPONENT TAGS: y: reference component tags; +% \item +% URL ADDRESS: n: URL as note; +% \end{enumerate} +% +% A file \file{aipnum.dbj} file equivalent to the following should result: +% \begin{verbatim} +%\input docstrip +%\preamble +%---------------------------------------- +%*** REVTeX-compatible aipnum4-1.bst 2009-10-08 *** +%\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{% +% lang,%: Use language field to switch hyphenation patterns for title +% pres,pres-bf,%: Presentation, speaker bold face +% seq-no,%: Citation order (unsorted, like unsrt.bst) +% vonx,%: Sort without von part (de la Maire after Mahone) +% nm-init,ed-au,%: Initials + surname (J. F. Smith) +% 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 +% yr-par,%: Date in parentheses as (May 1993) +% 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 +% 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,%: Publisher before volume, chapter, pages +% pre-edn,%: Edition before publisher +% 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{aipnum4-1.bst}{\MBopts}} +%\endbatchfile +% \end{verbatim} +% +% Between the two files \file{aipnum.dbj} and \file{aipauth.dbj}, +% the differences are limited: +% \file{aipnum.dbj} has two lines lacking in \file{aipauth.dbj}: +% \begin{verbatim} +% seq-no,%: Citation order (unsorted, like unsrt.bst) +% nm-init,ed-au,%: Initials + surname (J. F. Smith) +% \end{verbatim} +% thus, the ``numbered citation'' bibliography is sorted by citation order, and +% the names are give first inital, then last name. +% +% Likewise, \file{aipauth.dbj} has one line lacking in \file{aipnum.dbj}: +% \begin{verbatim} +% nm-rev,%: Surname + comma + initials (Smith, J. F.) +% \end{verbatim} +% Thus, the ``author-year'' bibliography is sorted by author name, and +% names are given last name first, followed by initials. +% +% We ensure that the journal substyle has the first word +% in the matter by installing the (default) AIP code +% later on (see Section~\ref{sec:aip-defaults}). +% \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 +% (we use \cmd\refname). +% \begin{macrocode} +\def\refname{References}% +\def\rtx@bibsection{% + \@ifx@empty\refname{% + \par\vspace{6\p@ plus 6\p@}% + }{% +% \end{macrocode} +% The following line has been commented out: +% \begin{verbatim} +% \let\@hangfroms@section\@hang@froms +% \end{verbatim} +% \begin{macrocode} + \expandafter\section\expandafter*\expandafter{\refname}% + \@nobreaktrue + }% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\bibpreamble} +% \begin{macro}{\bibsep} +% \begin{macro}{\newblock} +% \begin{macrocode} +\let\bibpreamble\@empty +\appdef\setup@hook{% + \bibsep\z@\relax +}% +\def\newblock{\ }% +% \end{macrocode} +% \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{% + \preprintsty@sw{}{\footnotesize}% + \@clubpenalty\clubpenalty + \labelsep\z@ + }% +}% +\let\place@bibnumber\place@bibnumber@sup +% \end{macrocode} +% \end{macro} +% +% +% \subsubsection{Index}% +% \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 +}{% +}% +% +\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} +% +% +% \subsubsection{Typesize Processing}% +% The formatting specification for the preprint option is: +% Times Roman 12 pt, double spacing, with 1-inch margins on letter paper. +% Paragraphs indented ``five spaces''. +% Display math on standard indent, with equation number flush right in parenthesis, with subequations roman. +% +% That for reprint option is to format similar to the printed journal; with most journals +% set (approximately analyzed) 10-point, 2-column grid, letter paper. +% \begin{macrocode} +\expandafter\def\csname rtx@aip10pt\endcsname{% + \let\@currname@class\@currname + \def\@currname{aps10pt\substyle@post}% + \class@info{Reading file \@currname.\substyle@ext}% + \input{\@currname.\substyle@ext}% + \let\@currname\@currname@class + \class@info{Overriding 10pt}% + \aipreprint +}% +\expandafter\def\csname rtx@aip11pt\endcsname{\csname rtx@aip12pt\endcsname}% +\expandafter\def\csname rtx@aip12pt\endcsname{% + \let\@currname@class\@currname + \def\@currname{aps12pt\substyle@post}% + \class@info{Reading file \@currname.\substyle@ext}% + \input{\@currname.\substyle@ext}% + \let\@currname\@currname@class + \class@info{Overriding 12pt}% + \aippreprint +}% +% \end{macrocode} +% +% \begin{macro}{\today} +% Procedure \cmd\today\ is used in the article class, but not in +% this document class. +% \begin{macrocode} +\def\today{% + \number\day\space + \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\year +}% +% \end{macrocode} +% \end{macro} +% +% \subsection{A. Running Title} +% User-provided running title \cmd\@shorttitle\ to be set. +% +% \subsection{B. Equation numbering, figure and table numbering} +% Equations can be numbered throughout, or by section, with appendix equations prepended by the appendix label. +% Figures and tables are numbered throughout. +% +% +% \subsection{C. Title} +% Title page may break above abstract, within author list. +% Title notes are signified by superior letter followed by right parenthesis. +% +% \subsection{D. Author footnote} +% Set short line above these footnotes. +% +% \subsection{E. Author} +% Class option \classoption{superscriptaddress} is standard. +% \begin{macrocode} + \clo@superscriptaddress +% \end{macrocode} +% +% \subsection{F. Affiliations} +% Set italic. +% +% \subsection{G. Received date} +% +% +% \subsection{H. Abstract} +% Single paragraph, no indent. +% +% \subsection{J. Lead Paragraph} +% Set boldface, flush left before main text, single paragraph. +% Separated from text by a short centered rule. +% +% \subsection{K. Headings} +% Use labels: ROMAN, LETTER, arabic, letter. +% Set ALLCAPS, boldface; Initial cap, boldface; Initial cap, bold-italic; Initial cap, italic. +% +% Theorem, proof title followed by colon. Follow author. +% +% \subsection{L. Text Footnotes} +% Not permitted; use endnotes. +% +% \subsection{M. Citations and Bibliography} +% Numerical \filename{aipnum.bst}, author-year \filename{aipauth.bst}, and numbered author-year \filename{aipnumauth.bst} are the available choices. +% Numerical is standard, with all styles permitted in journal classes 3a and 4b. +% +% +% \subsection{N. References} +% +% Article Title usage: +% +% Article title required in all journals with "unpublished", "to be published", "in press" and "submitted" refs. +% +% Exceptions: +% +% Journal classes 1a,1b,2,4a: +% +% Article title not allowed in published references, except in the case of "in press" or submitted" (see sample references below). +% +% Journal class 3a: +% +% Article title allowed but not required in author-year references (use must be consistent within a single manuscript). +% +% Journal class 3b: +% +% Article title required in all journal references and report references. +% +% Journal class 4b: +% +% Article title allowed in journal references in author-year mode. +% +% \subsection{O. Examples of Numerical References} +% +% +% \subsection{P. References in Author-year mode} +% +% +% \subsection{Q. Numbered Author-year References} +% +% +% \subsection{R. Tables} +% Placed within text (floated), labeled with Roman numeral. +% +% Table caption placed above table, followed by space, +% two double lines, space, table column headings, space, +% single line, table contents, two double lines. +% +% Footnotes labeled with superior lower-case letter, set below table contents. +% +% \subsection{S. Figures} +% Placed within text (floated), labeled with arabic numbers. +% +% Caption set below figure. A citation to be set inline, not superscripted. +% +% \subsection{Society defaults}% +% +% After this society file is read in, we will process the +% \cmd\@journal- and \cmd\@pointsize-specific code. +% Here we define the defaults. +% +% We select \textbf{Chaos} as the default journal substyle, because it is +% the most permissive in terms of bibliography and citation style, +% and it is formatted in two column in the reprint style. +% +% \begin{macrocode} +\def\@journal@default{cha}% +\def\@pointsize@default{12}% +% \end{macrocode} +% +% \subsection{Journal-Specific Code}% +% +% For AIP journals, we supply code specific to JCP, POP, RSI, JAP, APL, CHA, POF, BMF, RSE, JMP. +% +% \subsubsection{\classoption{jcp}}% +%A member of the journal class 1a. +% \begin{macrocode} +\def\rtx@aipjcp{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Journal class 1a uses the (superscript) numerical citation style by default. +% \begin{macrocode} + \@booleanfalse\authoryear@sw +% \end{macrocode} +% +% End of \classoption{jcp} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{pop}}% +%A member of the journal class 1a. +% \begin{macrocode} +\def\rtx@aippop{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Journal class 1a uses the (superscript) numerical citation style by default. +% \begin{macrocode} + \@booleanfalse\authoryear@sw +% \end{macrocode} +% +% End of \classoption{pop} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{rsi}}% +%A member of the journal class 1a. +% \begin{macrocode} +\def\rtx@aiprsi{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Journal class 1a uses the (superscript) numerical citation style by default. +% \begin{macrocode} + \@booleanfalse\authoryear@sw +% \end{macrocode} +% +% End of \classoption{rsi} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{jap}}% +%Sole member of the journal class 1b. +% +% No running title. +% \begin{macrocode} +\def\rtx@aipjap{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Journal class 1b uses the (superscript) numerical citation style by default. +% \begin{macrocode} + \@booleanfalse\authoryear@sw + \let\@runningtitle\@empty +% \end{macrocode} +% +% End of \classoption{jap} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{apl}}% +%Sole member of the journal class 2. +% +% No running title. +% \begin{macrocode} +\def\rtx@aipapl{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Journal class 2 uses the (superscript) numerical citation style by default. +% \begin{macrocode} + \@booleanfalse\authoryear@sw + \let\@runningtitle\@empty +% \end{macrocode} +% +% End of \classoption{apl} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{cha}}% +%Sole member of the journal class 3a. +% \begin{macrocode} +\def\rtx@aipcha{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Article titles are allowed. +% \begin{macrocode} + \@booleanfalse\aip@jtitx@sw +% \end{macrocode} +% +% End of \classoption{cha} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{pof}}% +%Sole member of the journal class 3b. +% \begin{macrocode} +\def\rtx@aippof{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Journal class 3b uses the (superscript) numerical citation style by default. +% Article titles are required, so we include them if available, +% but if absent, we can do no more than make a warning in the \file{.blg}. +% \begin{macrocode} + \@booleanfalse\authoryear@sw + \@booleanfalse\aip@jtitx@sw +% \end{macrocode} +% +% End of \classoption{pof} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{bmf}}% +% A member of the journal class 4a, +% the Biomicrofluidics journal is single column. +% \begin{macrocode} +\def\rtx@aipbmf{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Journal class 4a uses the (superscript) numerical citation style by default. +% Journal is formatted in a single column. +% \begin{macrocode} + \@booleanfalse\authoryear@sw + \@booleanfalse\twocolumn@sw +% \end{macrocode} +% +% End of \classoption{bmf} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{rse}}% +%A member of the journal class 4a. +% \begin{macrocode} +\def\rtx@aiprse{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Journal class 4a uses the (superscript) numerical citation style by default. +% \begin{macrocode} + \@booleanfalse\authoryear@sw +% \end{macrocode} +% +% End of \classoption{rse} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{jmp}}% +% Sole member of the journal class 4b, Journal of Mathematical Physics is single column. +% For an example of \env{itemize}, see JMP\_122901\_1 (48). +% \begin{macrocode} +\def\rtx@aipjmp{% + \typeout{Using journal substyle \@journal.}% +% \end{macrocode} +% Article titles are allowed. +% Journal is formatted in a single column. +% \begin{macrocode} + \@booleanfalse\aip@jtitx@sw + \@booleanfalse\twocolumn@sw +% \end{macrocode} +% +% End of \classoption{jmp} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsection{Establish AIP Defaults\label{sec:aip-defaults}} +% +% \begin{macro}{\footinbib@sw} +% All AIP journals invoke the \classoption{footinbib} option. +% \begin{macrocode} +\@booleantrue\footinbib@sw +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\place@bibnumber} +% \begin{macro}{\@bibstyle} +% \begin{macro}{\bibpunct} +% We install code that will +% govern the style in which \cmd\cite\ commands are +% formatted, +% select the presentation for \cmd\bibitem s +% and control the \BibTeX\ processing. +% +% Note that a journal substyle may override these settings. +% Likewise, document preamble may itself invoke \cmd\bibpunct\ or \cmd\bibliographystyle, +% thereby overriding these settings and those of the journal substyle. +% +% The numbered citations of \file{aipnum} and \file{aipauthnum} +% are compatible with \classoption{footinbib} and +% the compression and coalescing features of \classname{natbib}, +% while \file{aipauth}'s author-year citations are not. +% Therefore, we de-select such options if we are selecting author-year citations. +% +% Note on \classname{natbib} presets: +% \file{aipnum} and \file{aipauthnum} uses the Chicago \cmd\bibpunct\ style; +% while \file{aipauth} uses that of Nature. +% +% Note on \cmd\NAT@mcite: if not using numerical citations, we set \cmd\NAT@mcite\ +% to a lower value, to turn off the mcite semantics of \classname{natbib}. +% \begin{macrocode} +\let\place@bibnumber\place@bibnumber@sup +\appdef\setup@hook{% + \authoryear@sw{% + \aip@jtitx@sw{% + \def\@bibstyle{aipauth\substyle@post}% + }{% + \def\@bibstyle{aipauth\substyle@post}% + }% + \authornum@sw{% + \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}% + \let\onlinecite\rev@citealpnum + }{% + \bibhang10\p@ + \bibpunct{(%) + }{%( + )}{; }{a}{,}{,}% + \@booleanfalse\footinbib@sw + \let\NAT@mcite\@ne + \let\NAT@sort\z@ + \def\NAT@cmprs{\z@}% + \let\NAT@def@citea\rtx@def@citea + \let\NAT@def@citea@close\rtx@def@citea@close + }% + }{% + \aip@jtitx@sw{% + \def\@bibstyle{aipnum\substyle@post}% + }{% + \def\@bibstyle{aipnum\substyle@post}% + }% + \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}% + \let\onlinecite\rev@citealpnum + }% +}% +\def\make@footnote@endnote{% + \footinbib@sw{% + \authoryear@sw{\authornum@sw{\false@sw}{\true@sw}}{\false@sw}% + {}{% + \ltx@footnote@push + \def\thempfn{Note\thefootnote}% + \let\ltx@footmark\rev@citemark + \let\ltx@foottext\rev@endtext + \appdef\class@enddocumenthook{\auto@bib}% + \let\printendnotes\relax + }% + }{}% +}% +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\aipreprint}% +% We want to override \filename{aps10pt.rtx}. +% \begin{macrocode} +\def\aipreprint{% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\aippreprint}% +% We want to override \filename{aps12pt.rtx}. +% \begin{macrocode} +\def\aippreprint{% +}% +% \end{macrocode} +% \end{macro} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \Finale +% %Here ends the programmer's documentation. +% \endinput +% +\endinput diff --git a/Master/texmf-dist/source/latex/revtex4-1/revtex4-1-bst.dtx b/Master/texmf-dist/source/latex/revtex4-1/revtex4-1-bst.dtx new file mode 100644 index 00000000000..c0fd3c6da84 --- /dev/null +++ b/Master/texmf-dist/source/latex/revtex4-1/revtex4-1-bst.dtx @@ -0,0 +1,3783 @@ +% \iffalse meta-comment balanced on line 122 +% revtex4-1-bst.dtx: Package to extract .bst files for RevTeX +% Copyright (c) 2020 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 Phelype Oleinik. +% +% This work consists of the main source file revtex4-1-bst.dtx +% and the derived files +% aipauth4-1.bst, aipnum4-1.bst, apsrev4-1.bst, apsrmp4-1.bst +% Distribution: +% CTAN:macros/latex/contrib/revtex/ +% +% Unpacking: +% tex revtex4-1-bst.dtx +% +% Installation: +% TDS:bibtex/bst/revtex/ +% +%<*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 +% +%<*install> +%% This file will generate documentation and runtime files +%% from revtex4-1-bst.dtx when run through TeX. +\input docstrip +\nopreamble +\edef\defaultpostamble{% + \MetaPrefix\space End of customized bst file^^J% + \MetaPrefix ^^J% + \MetaPrefix\space End of file `\outFileName'.% +} +\askforoverwritefalse +\keepsilent +\generate{% + \file{aipauth4-1.bst}{\from{revtex4-1-bst.dtx}{aipauth}}% + \file{aipnum4-1.bst}{\from{revtex4-1-bst.dtx}{aipnum}}% + \file{apsrev4-1.bst}{\from{revtex4-1-bst.dtx}{apsrev}}% + \file{apsrmp4-1.bst}{\from{revtex4-1-bst.dtx}{apsrmp}}% +}% +\ifToplevel{ +\Msg{***********************************************************} +\Msg{*} +\Msg{* To finish the installation, please move} +\Msg{* *.bst } +\Msg{* into a directory searched by TeX;} +\Msg{* in a TDS-compliant installation:} +\Msg{* texmf/bibtex/bst/revtex/.} +\Msg{*} +\Msg{* Happy BibTeXing} +\Msg{***********************************************************} +} +\endbatchfile +% +%<*ignore> +\fi +% +% \fi +% +% \GetFileInfo{revtex4-1-bst.dtx} +% +% \StopEventually{} +% \iffalse ltxdoc klootch +%<*package> +%%% @LaTeX-file{ +%%% filename = "revtex4-1-bst.dtx", +%%% version = "4.1s", +%%% date = "2020/10/06", +%%% author = "Phelype Oleinik (mailto: phelype.oleinik at latex-project.org), +%%% commissioned by the American Physical Society. +%%% ", +%%% copyright = "Copyright (C) 2020 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 +%%% ", +%%% email = "mailto colon revtex at aps.org", +%%% codetable = "ISO/ASCII", +%%% keywords = "", +%%% supported = "yes", +%%% abstract = "", +%%% } +% +% \fi +% +% \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-1-bst.dtx +%\end{verbatim} +% +% \subsubsection{Generated by \texttt{tex revtex4-1-bst.dtx}}% +% Typesetting ths file under \TeX\ itself runs the installer, +% which generates the bibliography style files. +%\begin{verbatim} +%aipauth4-1.bst, aipnum4-1.bst, +%apsrev4-1.bst, apsrmp4-1.bst +%\end{verbatim} +% +% \section{Code common to all modules}% +% +% \begin{macrocode} +%<*aipauth|aipnum|apsrev|apsrmp> +%% +%%% This is file `aipauth4-1.bst', +%%% This is file `aipnum4-1.bst', +%%% This is file `apsrev4-1.bst', +%%% This is file `apsrmp4-1.bst', +%% generated with the docstrip utility. +%% +% \end{macrocode} +% +% Well, this is now a lie, of course: +% \begin{macrocode} +%% The original source files were: +%% +%<*aipauth> +%% merlin.mbs (with options: `head,ay,nat,lang,pres,pres-bf,vonx,nm-rev,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% physjour.mbs (with options: `ay,nat,lang,pres,pres-bf,vonx,nm-rev,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% geojour.mbs (with options: `ay,nat,lang,pres,pres-bf,vonx,nm-rev,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% photjour.mbs (with options: `ay,nat,lang,pres,pres-bf,vonx,nm-rev,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% merlin.mbs (with options: `tail,ay,nat,lang,pres,pres-bf,vonx,nm-rev,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% ---------------------------------------- +%% *** REVTeX-compatible aipauth4-1.bst 2010-07-25 *** +% +%<*aipnum> +%% merlin.mbs (with options: `head,ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% physjour.mbs (with options: `ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% geojour.mbs (with options: `ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% photjour.mbs (with options: `ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% merlin.mbs (with options: `tail,ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,mcite,mct-1,mct-x3,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,blkyear,yr-par,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% ---------------------------------------- +%% *** REVTeX-compatible aipnum4-1.bst 2010-07-25 *** +% +%<*apsrev> +%% merlin.mbs (with options: `head,ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% physjour.mbs (with options: `ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% geojour.mbs (with options: `ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% photjour.mbs (with options: `ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% merlin.mbs (with options: `tail,ay,nat,lang,pres,pres-bf,seq-no,vonx,nm-init,ed-au,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,blkyear,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-x,volp-com,jpg-1,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-date,ay-empty-pub-parens-x,pre-pub,pre-edn,doi-link,doi,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% ---------------------------------------- +%% *** REVTeX-compatible Phys Rev 2010-07-25 *** +% +%<*apsrmp> +%% merlin.mbs (with options: `head,ay,nat,lang,pres,pres-bf,vonx,nm-rev1,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,dt-beg,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-sp,volp-com,jpg-1,pp-last,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-par,ay-empty-pub-parens-x,pre-edn,school-par,doi-link,doi,bkedcap,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,and-com,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% physjour.mbs (with options: `ay,nat,lang,pres,pres-bf,vonx,nm-rev1,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,dt-beg,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-sp,volp-com,jpg-1,pp-last,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-par,ay-empty-pub-parens-x,pre-edn,school-par,doi-link,doi,bkedcap,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,and-com,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% geojour.mbs (with options: `ay,nat,lang,pres,pres-bf,vonx,nm-rev1,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,dt-beg,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-sp,volp-com,jpg-1,pp-last,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-par,ay-empty-pub-parens-x,pre-edn,school-par,doi-link,doi,bkedcap,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,and-com,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% photjour.mbs (with options: `ay,nat,lang,pres,pres-bf,vonx,nm-rev1,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,dt-beg,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-sp,volp-com,jpg-1,pp-last,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-par,ay-empty-pub-parens-x,pre-edn,school-par,doi-link,doi,bkedcap,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,and-com,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% merlin.mbs (with options: `tail,ay,nat,lang,pres,pres-bf,vonx,nm-rev1,jnrlst,nmft,nmft-def,fnm-def,nmfted,nmand-rm,lab,lab-def,and-rm,keyxyr,dt-beg,yr-par,dtrev,date-nil-x,tit-qq,inproceedings-chapter,jtit-x,inproceedings-chapter,article-booktitle,article-series,jttl-rm,journal-address,book-bt,thesis-title-o,trtit-b,techreport-institution-par,vol-bf,vnum-sp,volp-com,jpg-1,pp-last,book-editor-booktitle,inbook-editor-booktitle,bookaddress,num-xser,number-cap,chapter-cap,series-number,numser-booktitle,ser-vol,ser-rm,volume-cap,ser-ed,jnm-x,pg-bk,book-chapter-pages,pub-par,ay-empty-pub-parens-x,pre-edn,school-par,doi-link,doi,bkedcap,edby,blk-com,fin-endbibitem,pp,ed,abr,ednx,ord,jabr,and-com,etal-it,revdata,eprint,url,url-blk,translation,SLACcitation,numpages-x,url,url-prefix-x,bibinfo,bibfield,nfss,,{}') +%% ---------------------------------------- +%% *** REVTeX-compatible RMP 2010-07-25 *** +% +%% +%% Copyright 1994-2007 Patrick W Daly + % =============================================================== + % IMPORTANT NOTICE: + % This bibliographic style (bst) file has been generated from one or + % more master bibliographic style (mbs) files, listed above. + % + % This generated file can be redistributed and/or modified under the terms + % of the LaTeX Project Public License Distributed from CTAN + % archives in directory macros/latex/base/lppl.txt; either + % version 1 of the License, or any later version. + % =============================================================== + % Name and version information of the main mbs file: + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is an author-year citation style bibliography. As such, it is + % non-standard LaTeX, and requires a special package file to function properly. + % Such a package is natbib.sty by Patrick W. Daly + % The form of the \bibitem entries is + % \bibitem[Jones et al.(1990)]{key}... + % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... + % The essential feature is that the label (the part in brackets) consists + % of the author names, as they should appear in the citation, with the year + % in parentheses following. There must be no space before the opening + % parenthesis! + % With natbib v5.3, a full list of authors may also follow the year. + % In natbib.sty, it is possible to define the type of enclosures that is + % really wanted (brackets or parentheses), but in either case, there must + % be parentheses in the label. + % The \cite command functions as follows: + % \citet{key} ==>> Jones et al. (1990) + % \citet*{key} ==>> Jones, Baker, and Smith (1990) + % \citep{key} ==>> (Jones et al., 1990) + % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) + % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) + % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32) + % \citeauthor{key} ==>> Jones et al. + % \citeauthor*{key} ==>> Jones, Baker, and Smith + % \citeyear{key} ==>> 1990 + %--------------------------------------------------------------------- +% +% +% \subsection{The Frontmatter File} +% As promised above, here is the contents of the frontmatter file. +% This file doesn't have any documentation, so just stop early. +% \begin{macrocode} +%<*ignore> +\stop +\changes{4.2e}{2020/10/03}{(PHO) Initial version---Put all .bst files in a single .dtx} +% +% \end{macrocode} +% +% \begin{macrocode} +%<*aipauth|aipnum|apsrev|apsrmp> +% \end{macrocode} +% +% \begin{macrocode} + +%FUNCTION {id.bst} {"merlin.mbs aipauth4-1.bst 2010-07-25 4.21a (PWD, AO, DPC) hacked"} +%FUNCTION {id.bst} {"merlin.mbs aipnum4-1.bst 2010-07-25 4.21a (PWD, AO, DPC) hacked"} +%FUNCTION {id.bst} {"merlin.mbs apsrev4-1.bst 2010-07-25 4.21a (PWD, AO, DPC) hacked"} +%FUNCTION {id.bst} {"merlin.mbs apsrmp4-1.bst 2010-07-25 4.21a (PWD, AO, DPC) hacked"} +ENTRY +{ + address + archive + archivePrefix + author + bookaddress + booktitle + chapter + collaboration + doi + edition + editor + eid + eprint + howpublished + institution + isbn + issn + journal + key + language + month + note + number + organization + pages + primaryClass + publisher + school + SLACcitation + series + title + translation + type + url + volume + year +}{ +}{ + label + extra.label sort.label + short.list +} + +INTEGERS +{ + output.state before.all + after.word after.punctuation + after.sentence after.block +} + +INTEGERS +{ + punctuation.state punctuation.no punctuation.space punctuation.yes +} + +STRINGS { bibfield output.bibfield } + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {non.stop} +{ duplicate$ + "}" * add.period$ + #-1 #1 substring$ "." = +} + +INTEGERS { arith.mulitplier arith.multiplicand } + +FUNCTION {multiply} +{ + 'arith.multiplicand := + 'arith.mulitplier := + #0 + { arith.mulitplier #0 > } + { arith.multiplicand + + arith.mulitplier #1 - 'arith.mulitplier := + } + while$ +} + +FUNCTION {chr.to.hex} +{ + chr.to.int$ + duplicate$ "0" chr.to.int$ - + duplicate$ duplicate$ #0 < swap$ #9 > or not + { swap$ pop$ } + { pop$ + duplicate$ "A" chr.to.int$ - + duplicate$ duplicate$ #0 < swap$ #5 > or not + { swap$ pop$ #10 + } + { pop$ + duplicate$ "a" chr.to.int$ - + duplicate$ duplicate$ #0 < swap$ #5 > or not + { swap$ pop$ #10 + } + { pop$ + pop$ #-1 + } + if$ + } + if$ + } + if$ +} + +INTEGERS { arith.accumulator } + +FUNCTION {str.to.hex} +{ #0 'arith.accumulator := + { duplicate$ empty$ not } + { duplicate$ #1 #1 substring$ chr.to.hex + duplicate$ #0 < + { pop$ pop$ "" + } + { arith.accumulator #16 multiply + 'arith.accumulator := + #2 global.max$ substring$ + } + if$ + } + while$ + pop$ arith.accumulator +} + +FUNCTION {diagn.cmntlog} +{ + duplicate$ top$ "%" swap$ * write$ newline$ +} + +INTEGERS { control.key control.author control.editor control.title control.pages control.eprint control.year } + +INTEGERS { control.author.jnrlst control.author.dotless control.author.nospace control.author.initials control.author.nocomma control.author.first control.author.reversed } + +FUNCTION { control.init } +{ + #0 + 'control.key := + #0 +% #1 + +% #1 + +% #2 + + #8 + +% #64 + +% #64 + + 'control.author := +% #0 +% #0 +% #1 +% #1 + 'control.author.jnrlst := + #0 + 'control.author.dotless := + #0 + 'control.author.nospace := + #1 + 'control.author.initials := + #0 + 'control.author.nocomma := +% #0 +% #1 + 'control.author.first := +% #1 +% #0 +% #0 +% #1 + 'control.author.reversed := +% #0 +% #1 +% #1 +% #0 + 'control.editor := + #-1 + 'control.title := + #0 + 'control.pages := + #0 + 'control.eprint := + #1 + 'control.year := +} + +FUNCTION {warning.dependency} +{ + " (dependency: " * swap$ * ") set " * swap$ int.to.str$ * warning$ +} + +FUNCTION {control.check} +{ + control.editor + { + "editor formatted same as author" + control.author.reversed { + duplicate$ #0 swap$ "reversed" warning.dependency + #0 'control.author.reversed := + } 'skip$ if$ + control.author.first { + duplicate$ #0 swap$ "first" warning.dependency + #0 'control.author.first := + } 'skip$ if$ + control.author.nocomma { + duplicate$ #0 swap$ "nocomma" warning.dependency + #0 'control.author.nocomma := + } 'skip$ if$ + pop$ + } 'skip$ if$ + control.author.reversed 'skip$ + { + "not reversed" + control.author.nospace { + duplicate$ #0 swap$ "nospace" warning.dependency + #0 'control.author.nospace := + } 'skip$ if$ + control.author.jnrlst 'skip$ { + duplicate$ #1 swap$ "jnrlst" warning.dependency + #1 'control.author.jnrlst := + } if$ + control.author.initials { + duplicate$ ", initials" * + control.author.dotless { + duplicate$ #0 swap$ "dotless" warning.dependency + #0 'control.author.dotless := + } 'skip$ if$ + pop$ + } 'skip$ if$ + pop$ + } + if$ + control.author.initials 'skip$ { + "not initials" + control.author.nocomma { + duplicate$ #0 swap$ "nocomma" warning.dependency + #0 'control.author.nocomma := + } 'skip$ if$ + control.author.nospace { + duplicate$ #0 swap$ "nospace" warning.dependency + #0 'control.author.nospace := + } 'skip$ if$ + control.author.dotless 'skip$ { + duplicate$ #1 swap$ "dotless" warning.dependency + #1 'control.author.dotless := + } if$ + pop$ + } if$ +} + +FUNCTION {control.parse} +{ + duplicate$ duplicate$ missing$ + { + pop$ pop$ pop$ + } + { empty$ + { + pop$ #-1 + }{ + str.to.hex + } + if$ + swap$ := + } + if$ +} + +FUNCTION {control.dump} +{ + duplicate$ missing$ { pop$ "N/A" } 'skip$ if$ + "{" swap$ * "}, " * + * +} + +INTEGERS { decode.threshold } + +FUNCTION {control.decode} +{ + - duplicate$ + #0 < + { + skip$ pop$ swap$ #0 + } + { + swap$ pop$ swap$ #1 + } + if$ + swap$ := +} + +FUNCTION {control.author.decode} +{ + control.author + duplicate$ duplicate$ #0 < swap$ #128 < not or + { + int.to.str$ "(" swap$ * ")" * + "Control cannot interpret author " swap$ * + warning$ + }{ + 'control.author.jnrlst swap$ duplicate$ #64 control.decode + 'control.author.dotless swap$ duplicate$ #32 control.decode + 'control.author.nospace swap$ duplicate$ #16 control.decode + 'control.author.initials swap$ duplicate$ #8 control.decode + 'control.author.nocomma swap$ duplicate$ #4 control.decode + 'control.author.first swap$ duplicate$ #2 control.decode + 'control.author.reversed swap$ duplicate$ #1 control.decode + duplicate$ #0 = + 'skip$ + { + "Control: residue of author" + "(" swap$ * ")" * * + warning$ + } + if$ + pop$ + } + if$ +} + +FUNCTION {control.setup} +{ + type$ cite$ "{" swap$ * "}, " * * + "control.key" key control.dump * + "control.author" author control.dump * + "control.editor" editor control.dump * + "control.title" title control.dump * + "control.pages" pages control.dump * + "control.year" year control.dump * + "control.eprint" eprint control.dump * + top$ + 'control.key key control.parse + 'control.author author control.parse + 'control.editor editor control.parse + 'control.title title control.parse + 'control.pages pages control.parse + 'control.year year control.parse + 'control.eprint eprint control.parse + control.author.decode +} + +FUNCTION {control.pass} +{ type$ "control" = 'control.setup 'skip$ if$ +} + +FUNCTION {control.presort} +{ +} + +FUNCTION {control.forward} +{ +} + +FUNCTION {control.reverse} +{ +} + +FUNCTION {control.sort} +{ +} + +FUNCTION {control.longest.label} +{ +} + +FUNCTION {control.key.bib} +{ + "Control: key " + control.key + duplicate$ "(" swap$ int.to.str$ * ") " * swap$ + pop$ * + diagn.cmntlog +} + +FUNCTION {control.author.bib} +{ + "Control: author " + control.author "(" swap$ int.to.str$ * ")" * * + control.author.reversed { " reversed" * }{} if$ + control.author.first { " first" * }{} if$ + control.author.nocomma { " nocomma" * }{} if$ + control.author.initials { " initials" * }{} if$ + control.author.nospace { " nospace" * }{} if$ + control.author.dotless { " dotless" * }{} if$ + control.author.jnrlst { " jnrlst" * }{} if$ + diagn.cmntlog +} + +FUNCTION {control.editor.bib} +{ + "Control: editor formatted " + control.editor + duplicate$ "(" swap$ int.to.str$ * ") " * swap$ + duplicate$ #0 < { + pop$ + "disabled!" + } { + #0 > { + "identically to author" + } { + "differently from author" + } if$ + } if$ * * + diagn.cmntlog +} + +FUNCTION {control.title.bib} +{ + "Control: production of article title " + control.title + duplicate$ "(" swap$ int.to.str$ * ") " * swap$ + duplicate$ #0 < { + pop$ + "disabled" + } { + #0 > { + "required" + } { + "allowed" + } if$ + } if$ * * + diagn.cmntlog +} + +FUNCTION {control.pages.bib} +{ + "Control: page " + control.pages + duplicate$ "(" swap$ int.to.str$ * ") " * swap$ + duplicate$ #0 < { + pop$ + "none" + } { + #0 > { + "range" + } { + "single" + } if$ + } if$ * * + diagn.cmntlog +} + +FUNCTION {control.year.bib} +{ + "Control: year " + control.year + duplicate$ "(" swap$ int.to.str$ * ") " * swap$ + duplicate$ #0 < { + pop$ + "disabled!" + } { + #0 > { + "truncated" + } { + "verbatim" + } if$ + } if$ * * + diagn.cmntlog +} + +FUNCTION {control.eprint.bib} +{ + "Control: production of eprint " + control.eprint + duplicate$ "(" swap$ int.to.str$ * ") " * swap$ + #0 < { "disabled" } { "enabled" } if$ * * + diagn.cmntlog +} + +FUNCTION {control.bib} +{ + control.key.bib + control.author.bib + control.editor.bib + control.title.bib + control.pages.bib + control.year.bib + control.eprint.bib +} + +FUNCTION {init.state.consts} +{ + #0 'before.all := + #1 'after.word := + #2 'after.punctuation := + #3 'after.sentence := + #4 'after.block := + #0 'punctuation.no := + #1 'punctuation.space := + #2 'punctuation.yes := + "" 'bibfield := + "" 'output.bibfield := +} + +STRINGS { s t} +FUNCTION {block.punctuation} +{ "" + "," * +} + +FUNCTION {word.space} +{ + "\ " +} + +FUNCTION {show.stackstring.one}{ + "(" * + output.state int.to.str$ * + "," * punctuation.state int.to.str$ * + ")" * top$ + duplicate$ "1(" swap$ * ")" * top$ +} + +FUNCTION {show.stackstring.two}{ + "(" * + output.state int.to.str$ * + "," * punctuation.state int.to.str$ * + ")" * top$ + swap$ + duplicate$ "1(" swap$ * ")" * top$ + swap$ + duplicate$ "2(" swap$ * ")" * top$ +} + +FUNCTION {bibfield.command}{ "\bibfield "} + +FUNCTION {output.nonnull} +{ + swap$ + output.state after.word = + { + block.punctuation * + word.space * + } + { + output.state after.punctuation = + { + word.space * + } + { + output.state after.block = output.state after.sentence = or + { + add.period$ + "\EOS\ " * + }{ + } + if$ + } + if$ + } + if$ + output.bibfield duplicate$ empty$ 'pop$ + { + bibfield.command + " {" * swap$ * "} {" * swap$ * "}" * + } + if$ + write$ + bibfield 'output.bibfield := "" 'bibfield := + output.state after.block = + { + newline$ + "\newblock " write$ + } + 'skip$ + if$ + punctuation.state duplicate$ + punctuation.yes 'punctuation.state := + punctuation.no = + { pop$ before.all } + { punctuation.yes = { after.word }{ after.punctuation } if$ } + if$ + 'output.state := +} + +FUNCTION {output} +{ duplicate$ empty$ + { + pop$ + "" 'bibfield := + } + 'output.nonnull + if$ +} + +FUNCTION {output.nopunct} +{ + punctuation.no 'punctuation.state := + output.nonnull +} + +FUNCTION {output.check} +{ swap$ + duplicate$ empty$ + { pop$ "empty " swap$ * " in " * cite$ * warning$ } + { swap$ pop$ output.nonnull } + if$ +} + +FUNCTION {bbl.open} { "\BibitemOpen " } + +FUNCTION {bbl.shut} { "\BibitemShut " } + +FUNCTION {bibitem.shut.stop} { bbl.shut "{Stop}%" * } + +FUNCTION {bibitem.shut.nostop} { bbl.shut "{NoStop}%" * } + +FUNCTION {bibitem.shut} +{ + non.stop + { + bibitem.shut.nostop * + }{ + bibitem.shut.stop * + } + if$ +} + +FUNCTION {html.itag} { + "p" +} + +FUNCTION {html.ltag} { + "" +} + +FUNCTION {output.SLACcitation} +{ SLACcitation empty$ + 'skip$ + { + newline$ + SLACcitation write$ + } + if$ +} + +FUNCTION {fin.entry} +{ + bibitem.shut + write$ + output.SLACcitation +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.block.comma} +{ +} + +FUNCTION {new.sentence} +{ output.state after.block = output.state before.all = or + 'skip$ + { after.sentence 'output.state := } + if$ +} + +FUNCTION {new.sentence.comma} +{ +} + +FUNCTION {sentence.or.colon} +{ + new.sentence +} + +FUNCTION {add.blank} +{ + word.space * + before.all 'output.state := +} + +FUNCTION {no.blank.or.punct} +{ + "\hspace {0pt}" * + before.all 'output.state := +} + +FUNCTION {date.block} +{ + new.block.comma + skip$ +} + +STRINGS {z} +FUNCTION {remove.dots} +{ + control.author.dotless { + 'z := + "" + { z empty$ not } + { z #1 #1 substring$ + z #2 global.max$ substring$ 'z := + duplicate$ "." = 'pop$ + { * } + if$ + } + while$ + } 'skip$ if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {emphasize} +{ + duplicate$ empty$ + { pop$ "" } + { + "\emph {" swap$ * "}" * + } + if$ +} + +FUNCTION {bolden} +{ duplicate$ empty$ + { pop$ "" } + { "\textbf {" swap$ * "}" * } + if$ +} + +FUNCTION {bib.name.font} +{ + duplicate$ empty$ + { pop$ "" } + { + "\bibnamefont {" swap$ * "}" * + } + if$ +} + +FUNCTION {bib.fname.font} +{ + duplicate$ empty$ + { pop$ "" } + { + "\bibfnamefont {" swap$ * "}" * + } + if$ +} + +FUNCTION {cite.name.font} +{ + duplicate$ empty$ + { pop$ "" } + { + "\citenamefont {" swap$ * "}" * + } + if$ +} + +FUNCTION {tie.or.space.prefix} +{ duplicate$ text.length$ #3 < + { "~" } + { word.space } + if$ + swap$ +} + +FUNCTION {capitalize} +{ + "u" change.case$ "t" change.case$ +} + +FUNCTION {space.word} +{ word.space swap$ * word.space * } + + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH + +FUNCTION {bbl.and} +{ + "and" +} + +FUNCTION {bbl.etal} +{ + "et~al." +} + +FUNCTION {bbl.editors} +{ + "eds." +} + +FUNCTION {bbl.editor} +{ + "ed." +} + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ + "ed." +} + +FUNCTION {bbl.volume} +{ + "vol." +} + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ + "no." +} + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ + "pp." +} + +FUNCTION {bbl.page} +{ + "p." +} + +FUNCTION {bbl.eidpp} +{ "pages" } + +FUNCTION {bbl.chapter} +{ + "chap." +} + +FUNCTION {bbl.techrep} +{ + "Tech. Rep." +} + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "Ph.D. thesis" } + +FUNCTION {bbl.first} +{ + "1st" +} + +FUNCTION {bbl.second} +{ + "2nd" +} + +FUNCTION {bbl.third} +{ + "3rd" +} + +FUNCTION {bbl.fourth} +{ + "4th" +} + +FUNCTION {bbl.fifth} +{ + "5th" +} + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +FUNCTION {bbl.url.prefix} +{ + "\urlprefix " +} + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + + %------------------------------------------------------------------- + % Begin module: + % \ProvidesFile{physjour.mbs}[2002/01/14 2.2 (PWD)] +MACRO {aa}{"Astron. \& Astrophys."} +MACRO {aasup}{"Astron. \& Astrophys. Suppl. Ser."} +MACRO {aj} {"Astron. J."} +MACRO {aph} {"Acta Phys."} +MACRO {advp} {"Adv. Phys."} +MACRO {ajp} {"Amer. J. Phys."} +MACRO {ajm} {"Amer. J. Math."} +MACRO {amsci} {"Amer. Sci."} +MACRO {anofd} {"Ann. Fluid Dyn."} +MACRO {am} {"Ann. Math."} +MACRO {ap} {"Ann. Phys. (NY)"} +MACRO {adp} {"Ann. Phys. (Leipzig)"} +MACRO {ao} {"Appl. Opt."} +MACRO {apl} {"Appl. Phys. Lett."} +MACRO {app} {"Astroparticle Phys."} +MACRO {apj} {"Astrophys. J."} +MACRO {apjsup} {"Astrophys. J. Suppl."} +MACRO {apss} {"Astrophys. Space Sci."} +MACRO {araa} {"Ann. Rev. Astron. Astrophys."} +MACRO {baas} {"Bull. Amer. Astron. Soc."} +MACRO {baps} {"Bull. Amer. Phys. Soc."} +MACRO {cmp} {"Comm. Math. Phys."} +MACRO {cpam} {"Commun. Pure Appl. Math."} +MACRO {cppcf} {"Comm. Plasma Phys. \& Controlled Fusion"} +MACRO {cpc} {"Comp. Phys. Comm."} +MACRO {cqg} {"Class. Quant. Grav."} +MACRO {cra} {"C. R. Acad. Sci. A"} +MACRO {fed} {"Fusion Eng. \& Design"} +MACRO {ft} {"Fusion Tech."} +MACRO {grg} {"Gen. Relativ. Gravit."} +MACRO {ieeens} {"IEEE Trans. Nucl. Sci."} +MACRO {ieeeps} {"IEEE Trans. Plasma Sci."} +MACRO {ijimw} {"Interntl. J. Infrared \& Millimeter Waves"} +MACRO {ip} {"Infrared Phys."} +MACRO {irp} {"Infrared Phys."} +MACRO {jap} {"J. Appl. Phys."} +MACRO {jasa} {"J. Acoust. Soc. America"} +MACRO {jcp} {"J. Comp. Phys."} +MACRO {jetp} {"Sov. Phys.--JETP"} +MACRO {jfe} {"J. Fusion Energy"} +MACRO {jfm} {"J. Fluid Mech."} +MACRO {jmp} {"J. Math. Phys."} +MACRO {jne} {"J. Nucl. Energy"} +MACRO {jnec} {"J. Nucl. Energy, C: Plasma Phys., Accelerators, Thermonucl. Res."} +MACRO {jnm} {"J. Nucl. Mat."} +MACRO {jpc} {"J. Phys. Chem."} +MACRO {jpp} {"J. Plasma Phys."} +MACRO {jpsj} {"J. Phys. Soc. Japan"} +MACRO {jsi} {"J. Sci. Instrum."} +MACRO {jvst} {"J. Vac. Sci. \& Tech."} +MACRO {nat} {"Nature"} +MACRO {nature} {"Nature"} +MACRO {nedf} {"Nucl. Eng. \& Design/Fusion"} +MACRO {nf} {"Nucl. Fusion"} +MACRO {nim} {"Nucl. Inst. \& Meth."} +MACRO {nimpr} {"Nucl. Inst. \& Meth. in Phys. Res."} +MACRO {np} {"Nucl. Phys."} +MACRO {npb} {"Nucl. Phys. B"} +MACRO {nt/f} {"Nucl. Tech./Fusion"} +MACRO {npbpc} {"Nucl. Phys. B (Proc. Suppl.)"} +MACRO {inc} {"Nuovo Cimento"} +MACRO {nc} {"Nuovo Cimento"} +MACRO {pf} {"Phys. Fluids"} +MACRO {pfa} {"Phys. Fluids A: Fluid Dyn."} +MACRO {pfb} {"Phys. Fluids B: Plasma Phys."} +MACRO {pl} {"Phys. Lett."} +MACRO {pla} {"Phys. Lett. A"} +MACRO {plb} {"Phys. Lett. B"} +MACRO {prep} {"Phys. Rep."} +MACRO {pnas} {"Proc. Nat. Acad. Sci. USA"} +MACRO {pp} {"Phys. Plasmas"} +MACRO {ppcf} {"Plasma Phys. \& Controlled Fusion"} +MACRO {phitrsl} {"Philos. Trans. Roy. Soc. London"} +MACRO {prl} {"Phys. Rev. Lett."} +MACRO {pr} {"Phys. Rev."} +MACRO {physrev} {"Phys. Rev."} +MACRO {pra} {"Phys. Rev. A"} +MACRO {prb} {"Phys. Rev. B"} +MACRO {prc} {"Phys. Rev. C"} +MACRO {prd} {"Phys. Rev. D"} +MACRO {pre} {"Phys. Rev. E"} +MACRO {ps} {"Phys. Scripta"} +MACRO {procrsl} {"Proc. Roy. Soc. London"} +MACRO {rmp} {"Rev. Mod. Phys."} +MACRO {rsi} {"Rev. Sci. Inst."} +MACRO {science} {"Science"} +MACRO {sciam} {"Sci. Am."} +MACRO {sam} {"Stud. Appl. Math."} +MACRO {sjpp} {"Sov. J. Plasma Phys."} +MACRO {spd} {"Sov. Phys.--Doklady"} +MACRO {sptp} {"Sov. Phys.--Tech. Phys."} +MACRO {spu} {"Sov. Phys.--Uspeki"} +MACRO {st} {"Sky and Telesc."} + % End module: physjour.mbs + %------------------------------------------------------------------- + % Begin module: + % \ProvidesFile{geojour.mbs}[2002/07/10 2.0h (PWD)] +MACRO {aisr} {"Adv. Space Res."} +MACRO {ag} {"Ann. Geophys."} +MACRO {anigeo} {"Ann. Geofis."} +MACRO {angl} {"Ann. Glaciol."} +MACRO {andmet} {"Ann. d. Meteor."} +MACRO {andgeo} {"Ann. d. Geophys."} +MACRO {andphy} {"Ann. Phys.-Paris"} +MACRO {afmgb} {"Arch. Meteor. Geophys. Bioklimatol."} +MACRO {atph} {"Atm\'osphera"} +MACRO {aao} {"Atmos. Ocean"} +MACRO {ass}{"Astrophys. Space Sci."} +MACRO {atenv} {"Atmos. Environ."} +MACRO {aujag} {"Aust. J. Agr. Res."} +MACRO {aumet} {"Aust. Meteorol. Mag."} +MACRO {blmet} {"Bound.-Lay. Meteorol."} +MACRO {bams} {"Bull. Amer. Meteorol. Soc."} +MACRO {cch} {"Clim. Change"} +MACRO {cdyn} {"Clim. Dynam."} +MACRO {cbul} {"Climatol. Bull."} +MACRO {cap} {"Contrib. Atmos. Phys."} +MACRO {dsr} {"Deep-Sea Res."} +MACRO {dhz} {"Dtsch. Hydrogr. Z."} +MACRO {dao} {"Dynam. Atmos. Oceans"} +MACRO {eco} {"Ecology"} +MACRO {empl}{"Earth, Moon and Planets"} +MACRO {envres} {"Environ. Res."} +MACRO {envst} {"Environ. Sci. Technol."} +MACRO {ecms} {"Estuarine Coastal Mar. Sci."} +MACRO {expa}{"Exper. Astron."} +MACRO {geoint} {"Geofis. Int."} +MACRO {geopub} {"Geofys. Publ."} +MACRO {geogeo} {"Geol. Geofiz."} +MACRO {gafd} {"Geophys. Astrophys. Fluid Dyn."} +MACRO {gfd} {"Geophys. Fluid Dyn."} +MACRO {geomag} {"Geophys. Mag."} +MACRO {georl} {"Geophys. Res. Lett."} +MACRO {grl} {"Geophys. Res. Lett."} +MACRO {ga} {"Geophysica"} +MACRO {gs} {"Geophysics"} +MACRO {ieeetap} {"IEEE Trans. Antenn. Propag."} +MACRO {ijawp} {"Int. J. Air Water Pollut."} +MACRO {ijc} {"Int. J. Climatol."} +MACRO {ijrs} {"Int. J. Remote Sens."} +MACRO {jam} {"J. Appl. Meteorol."} +MACRO {jaot} {"J. Atmos. Ocean. Technol."} +MACRO {jatp} {"J. Atmos. Terr. Phys."} +MACRO {jastp} {"J. Atmos. Solar-Terr. Phys."} +MACRO {jce} {"J. Climate"} +MACRO {jcam} {"J. Climate Appl. Meteor."} +MACRO {jcm} {"J. Climate Meteor."} +MACRO {jcy} {"J. Climatol."} +MACRO {jgr} {"J. Geophys. Res."} +MACRO {jga} {"J. Glaciol."} +MACRO {jh} {"J. Hydrol."} +MACRO {jmr} {"J. Mar. Res."} +MACRO {jmrj} {"J. Meteor. Res. Japan"} +MACRO {jm} {"J. Meteor."} +MACRO {jpo} {"J. Phys. Oceanogr."} +MACRO {jra} {"J. Rech. Atmos."} +MACRO {jaes} {"J. Aeronaut. Sci."} +MACRO {japca} {"J. Air Pollut. Control Assoc."} +MACRO {jas} {"J. Atmos. Sci."} +MACRO {jmts} {"J. Mar. Technol. Soc."} +MACRO {jmsj} {"J. Meteorol. Soc. Japan"} +MACRO {josj} {"J. Oceanogr. Soc. Japan"} +MACRO {jwm} {"J. Wea. Mod."} +MACRO {lao} {"Limnol. Oceanogr."} +MACRO {mwl} {"Mar. Wea. Log"} +MACRO {mau} {"Mausam"} +MACRO {meteor} {"``Meteor'' Forschungsergeb."} +MACRO {map} {"Meteorol. Atmos. Phys."} +MACRO {metmag} {"Meteor. Mag."} +MACRO {metmon} {"Meteor. Monogr."} +MACRO {metrun} {"Meteor. Rundsch."} +MACRO {metzeit} {"Meteor. Z."} +MACRO {metgid} {"Meteor. Gidrol."} +MACRO {mwr} {"Mon. Weather Rev."} +MACRO {nwd} {"Natl. Weather Dig."} +MACRO {nzjmfr} {"New Zeal. J. Mar. Freshwater Res."} +MACRO {npg} {"Nonlin. Proc. Geophys."} +MACRO {om} {"Oceanogr. Meteorol."} +MACRO {ocac} {"Oceanol. Acta"} +MACRO {oceanus} {"Oceanus"} +MACRO {paleoc} {"Paleoceanography"} +MACRO {pce} {"Phys. Chem. Earth"} +MACRO {pmg} {"Pap. Meteor. Geophys."} +MACRO {ppom} {"Pap. Phys. Oceanogr. Meteor."} +MACRO {physzeit} {"Phys. Z."} +MACRO {pps} {"Planet. Space Sci."} +MACRO {pss} {"Planet. Space Sci."} +MACRO {pag} {"Pure Appl. Geophys."} +MACRO {qjrms} {"Quart. J. Roy. Meteorol. Soc."} +MACRO {quatres} {"Quat. Res."} +MACRO {rsci} {"Radio Sci."} +MACRO {rse} {"Remote Sens. Environ."} +MACRO {rgeo} {"Rev. Geophys."} +MACRO {rgsp} {"Rev. Geophys. Space Phys."} +MACRO {rdgeo} {"Rev. Geofis."} +MACRO {revmeta} {"Rev. Meteorol."} +MACRO {sgp}{"Surveys in Geophys."} +MACRO {sp} {"Solar Phys."} +MACRO {ssr} {"Space Sci. Rev."} +MACRO {tellus} {"Tellus"} +MACRO {tac} {"Theor. Appl. Climatol."} +MACRO {tagu} {"Trans. Am. Geophys. Union (EOS)"} +MACRO {wrr} {"Water Resour. Res."} +MACRO {weather} {"Weather"} +MACRO {wafc} {"Weather Forecast."} +MACRO {ww} {"Weatherwise"} +MACRO {wmob} {"WMO Bull."} +MACRO {zeitmet} {"Z. Meteorol."} + % End module: geojour.mbs + %------------------------------------------------------------------- + % Begin module: + % \ProvidesFile{photjour.mbs}[1999/02/24 2.0b (PWD)] + +MACRO {appopt} {"Appl. Opt."} +MACRO {bell} {"Bell Syst. Tech. J."} +MACRO {ell} {"Electron. Lett."} +MACRO {jasp} {"J. Appl. Spectr."} +MACRO {jqe} {"IEEE J. Quantum Electron."} +MACRO {jlwt} {"J. Lightwave Technol."} +MACRO {jmo} {"J. Mod. Opt."} +MACRO {josa} {"J. Opt. Soc. America"} +MACRO {josaa} {"J. Opt. Soc. Amer.~A"} +MACRO {josab} {"J. Opt. Soc. Amer.~B"} +MACRO {jdp} {"J. Phys. (Paris)"} +MACRO {oc} {"Opt. Commun."} +MACRO {ol} {"Opt. Lett."} +MACRO {phtl} {"IEEE Photon. Technol. Lett."} +MACRO {pspie} {"Proc. Soc. Photo-Opt. Instrum. Eng."} +MACRO {sse} {"Solid-State Electron."} +MACRO {sjot} {"Sov. J. Opt. Technol."} +MACRO {sjqe} {"Sov. J. Quantum Electron."} +MACRO {sleb} {"Sov. Phys.--Leb. Inst. Rep."} +MACRO {stph} {"Sov. Phys.--Techn. Phys."} +MACRO {stphl} {"Sov. Techn. Phys. Lett."} +MACRO {vr} {"Vision Res."} +MACRO {zph} {"Z. f. Physik"} +MACRO {zphb} {"Z. f. Physik~B"} +MACRO {zphd} {"Z. f. Physik~D"} + +MACRO {CLEO} {"CLEO"} +MACRO {ASSL} {"Adv. Sol.-State Lasers"} +MACRO {OSA} {"OSA"} + % End module: photjour.mbs +%% Copyright 1994-2007 Patrick W Daly +MACRO {acmcs} {"ACM Comput. Surv."} + +MACRO {acta} {"Acta Inf."} + +MACRO {cacm} {"Commun. ACM"} + +MACRO {ibmjrd} {"IBM J. Res. Dev."} + +MACRO {ibmsj} {"IBM Syst.~J."} + +MACRO {ieeese} {"IEEE Trans. Software Eng."} + +MACRO {ieeetc} {"IEEE Trans. Comput."} + +MACRO {ieeetcad} + {"IEEE Trans. Comput. Aid. Des."} + +MACRO {ipl} {"Inf. Process. Lett."} + +MACRO {jacm} {"J.~ACM"} + +MACRO {jcss} {"J.~Comput. Syst. Sci."} + +MACRO {scp} {"Sci. Comput. Program."} + +MACRO {sicomp} {"SIAM J. Comput."} + +MACRO {tocs} {"ACM Trans. Comput. Syst."} + +MACRO {tods} {"ACM Trans. Database Syst."} + +MACRO {tog} {"ACM Trans. Graphic."} + +MACRO {toms} {"ACM Trans. Math. Software"} + +MACRO {toois} {"ACM Trans. Office Inf. Syst."} + +MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."} + +MACRO {tcs} {"Theor. Comput. Sci."} + +FUNCTION {bibinfo.command} { "\bibinfo " } + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ + pop$ "" + }{ + duplicate$ empty$ + { + swap$ pop$ + }{ + swap$ + bibinfo.command "{" * swap$ * "} {" * swap$ * "}" * + } + if$ + } + if$ +} + +FUNCTION {bibinfo.warn} +{ swap$ + duplicate$ missing$ + { + swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ + "" + }{ + duplicate$ empty$ + { + swap$ "empty " swap$ * " in " * cite$ * warning$ + }{ + swap$ + bibinfo.command " {" * swap$ * "} {" * swap$ * "}" * + } + if$ + } + if$ +} + +FUNCTION {archiv.base} +{ + "http://arxiv.org/abs" +} + +FUNCTION {archiv.prefix.base} +{ + "arXiv" +} + +FUNCTION {eprint.command} +{ + "\Eprint " +} + +FUNCTION {format.eprint} +{ + eprint duplicate$ empty$ + control.eprint #0 < + or + { pop$ "" } + { + duplicate$ + "" + archive duplicate$ empty$ { pop$ archiv.base } 'skip$ if$ * + "/" * + swap$ * + "{" swap$ * "} " * + swap$ + "" + archivePrefix duplicate$ empty$ { pop$ "" } { ":" * } if$ * + swap$ * + primaryClass duplicate$ empty$ { pop$ "" } { " [" swap$ * "]" * } if$ * + "{" swap$ * "} " * + * + eprint.command swap$ * + } + if$ +} + +FUNCTION {format.translation} +{ translation duplicate$ empty$ + 'skip$ + { "" + "\translation{" * swap$ * "}" * + punctuation.space 'punctuation.state := + } + if$ +} + +FUNCTION {format.url} +{ + url duplicate$ empty$ + { pop$ "" } + { + "\url " + "{" * swap$ * "}" * + } + if$ +} + +INTEGERS { nameptr namesleft numnames } + +FUNCTION {check.speaker} +{ key empty$ 'skip$ + { key nameptr int.to.str$ = + { + bolden + } + 'skip$ + if$ + } + if$ +} + +STRINGS { bibinfo} + +FUNCTION {format.names.fname} +{ + control.author.initials { + control.author.dotless { + control.author.nospace { + "f{}" + } { + "f{~}" + } if$ + } { + control.author.nospace { + "f{.}." + } { + "f." + } if$ + } if$ + } { + "ff" + } if$ +} + +FUNCTION {bracify} +{ + "{" swap$ * "}" * +} + +FUNCTION {name.comma} +{ + control.author.nocomma 'skip$ { "," swap$ * } if$ +} + +FUNCTION {format.names.format.onefont} +{ + "{vv~}{ll}" + nameptr #1 > + control.author.first + and + control.author.reversed not + or + { + control.author.initials { + "f" + control.author.dotless 'skip$ { + "." * + } if$ + "~" * + } { + "ff" + } if$ + bracify + swap$ + } { + format.names.fname + " " swap$ * + name.comma + bracify + } + if$ + "jj" + " " swap$ * + name.comma + bracify + control.author.jnrlst 'skip$ 'swap$ if$ + * * +} + +FUNCTION {format.names.onefont} +{ + s nameptr format.names.format.onefont format.name$ + remove.dots + bib.name.font +} + +FUNCTION {format.names.morfont} +{ s nameptr + "{vv~}{ll}" format.name$ bib.name.font + nameptr #1 > + control.author.first + and + control.author.reversed not + or + { + s nameptr + control.author.initials { + "f" % default: name + surname + comma junior + } { + "ff" + } if$ + control.author.dotless 'skip$ { + "." * % nm-init % Initials. + surname (J. F. Smith) control.author.initials + } if$ + bracify + format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + swap$ + * + s nameptr + "{jj}" format.name$ duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } { + "," * + s nameptr + format.names.fname + "jj" + " " + name.comma + control.author.jnrlst { + swap$ * skip$ + } { + skip$ * swap$ + } if$ + bracify swap$ bracify swap$ + * + format.name$ + remove.dots + duplicate$ empty$ 'skip$ + { bib.fname.font " " swap$ * } + if$ + } if$ + * +} + +FUNCTION {names.punctuate} +{ + "," * + " " * +} + +FUNCTION {format.names} +{ 'bibinfo := + duplicate$ empty$ { pop$ "" } { + duplicate$ num.names$ + duplicate$ 'numnames := + 'namesleft := + 's := + #1 'nameptr := + "" + { namesleft #0 > } + { + format.names.morfont + bibinfo bibinfo.check + type$ "presentation" = + 'check.speaker + 'skip$ + if$ + 't := + nameptr #1 > not + { + t * + } { + namesleft #1 > + { + names.punctuate + t * + } { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ +%<*!apsrmp> + numnames #2 > + 'names.punctuate + 'skip$ + if$ +% +% names.punctuate + t "others" = + { + " " * + bbl.etal + emphasize + * + } { + bbl.and + space.word * + t * + } + if$ + } + if$ + } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ +} + +FUNCTION {format.names.ed.onefont} +{ + s nameptr + control.author.initials { + control.author.dotless { + control.author.nospace { + "{f{}~}{vv~}{ll}{ jj}" % nm-rvx|nm-rvcx + } { + "{f{~}~}{vv~}{ll}{ jj}" % nm-rv + } if$ + } { + control.author.nospace { + "{f{.}.~}{vv~}{ll}{ jj}" % nm-rvv|nm-rvvc + }{ + "{f.~}{vv~}{ll}{, jj}" % nm-init|nm-rev|nm-rev1 + } if$ + } if$ + } { + "{ff~}{vv~}{ll}{, jj}" + } if$ + format.name$ + remove.dots + bib.name.font +} + +FUNCTION {format.names.ed.morfont} +{ + control.author.reversed { % + control.author.initials { % + control.author.dotless { % + s nameptr + control.author.nospace { % nm-rvx nm-rvcx + "{f{}}" + } { % nm-rv + "{f{~}}" + } if$ + format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ + remove.dots + duplicate$ empty$ 'skip$ + { bib.fname.font " " swap$ * } + if$ + } { % !control.author.dotless + s nameptr + control.author.nospace { % nm-rvv + "{ff}" + } { % nm-rev nm-rev1 + "{f.}" + } if$ + format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ + duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } if$ + } { % Full names !control.author.initials nm-revf nm-revv1 + s nameptr + "{ff}" + format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ + duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } if$ + } { % !control.author.reversed nm-init + s nameptr + "{f.}" + format.name$ duplicate$ empty$ 'skip$ + { tie.or.space.prefix bib.fname.font swap$ * } + if$ + s nameptr + "{vv~}{ll}" format.name$ bib.name.font * + s nameptr + "{jj}" format.name$ + duplicate$ empty$ 'skip$ + { bib.fname.font ", " swap$ * } + if$ + } if$ + * +} + +FUNCTION {format.names.ed} +{ + control.editor #0 > { + format.names + } { + 'bibinfo := + duplicate$ empty$ 'skip$ { + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + format.names.ed.morfont + bibinfo bibinfo.check + 't := + nameptr #1 > + { + namesleft #1 > + { + names.punctuate + t * + }{ + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + numnames #2 > + 'names.punctuate + 'skip$ + if$ + t "others" = + { + " " * bbl.etal emphasize * + }{ + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } if$ + } if$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author "author" format.names + duplicate$ empty$ 'skip$ + { collaboration "collaboration" bibinfo.check + duplicate$ empty$ 'skip$ + { " (" swap$ * ")" * } + if$ + * + } + if$ + "author" 'bibfield := +} + +FUNCTION {get.bbl.editor} +{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ +} + +FUNCTION {format.editors} +{ editor "editor" format.names duplicate$ empty$ 'skip$ + { + "," * + word.space * + get.bbl.editor +% capitalize + * + } + if$ +} + +FUNCTION {format.isbn.output} +{ +} + +FUNCTION {format.issn.output} +{ +} + +FUNCTION {doi.base} +{ + "http://dx.doi.org/" +} + +FUNCTION {doi.base.command} +{ + "\doibase " +} + +FUNCTION {noop.command} +{ + "\href@noop " +} + +FUNCTION {href.command} +{ + "\href " +} + +FUNCTION {link.tag.open} +{ + doi duplicate$ empty$ + { + pop$ + url duplicate$ empty$ + { + pop$ "" noop.command + }{ + href.command + } + if$ + } + { + doi.base.command swap$ * + href.command + } + if$ + "{" * swap$ * "} {" * +} + +FUNCTION {link.tag.shut} +{ + "}" +} + +FUNCTION {link.open} +{ + link.tag.open output.nopunct +} + +FUNCTION {link.shut} +{ + link.tag.shut * +} + +FUNCTION {add.doi} +{ + link.tag.open swap$ * link.tag.shut * +} + +FUNCTION {select.language} +{ duplicate$ empty$ + 'pop$ + { language empty$ + 'skip$ + { "{\selectlanguage {" language * "}" * swap$ * "}" * } + if$ + } + if$ +} + +FUNCTION {format.note} +{ + note empty$ + { "" } + { note #1 #1 substring$ + duplicate$ "{" = + 'skip$ + { + output.state after.word = output.state after.punctuation = or + { "l" } + { "u" } + if$ change.case$ + } + if$ + note #2 global.max$ substring$ * "note" bibinfo.check + } + if$ +} + +FUNCTION {bbl.enquote} +{ + "\enquote " +} + +FUNCTION {string.enquote} +{ + punctuation.no 'punctuation.state := + non.stop { + block.punctuation + } { "" } if$ + swap$ pop$ + * + bbl.enquote "{" * swap$ * "}" * + word.space * +} + +FUNCTION {format.title} +{ title + duplicate$ empty$ 'skip$ { "t" change.case$ } if$ + duplicate$ "title" bibinfo.check swap$ + duplicate$ empty$ 'pop$ + { + punctuation.yes 'punctuation.state := + string.enquote + select.language + } + if$ +} + +FUNCTION {end.quote.title} +{ title empty$ + 'skip$ + { before.all 'output.state := } + if$ +} + +FUNCTION {format.name.apply} +{ + s nameptr + "{vv~}{ll}" + format.name$ + cite.name.font +} + +FUNCTION {format.full.names} +{ + 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { format.name.apply + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { + 't := + } + 'pop$ + if$ + t "others" = + { + " " * bbl.etal + emphasize * + }{ + numnames #2 > { "," * }{ skip$ } if$ + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {make.full.names} +{ + key editor author + type$ "proceedings" = + type$ "book" = + type$ "inbook" = + or { pop$ }{ { pop$ "" }{ swap$ pop$ "" swap$ } if$ } if$ + duplicate$ empty$ + { pop$ + duplicate$ empty$ + { pop$ + duplicate$ empty$ + { pop$ + cite$ #1 #3 substring$ + }{ + skip$ + } + if$ + } + { swap$ pop$ format.full.names } + if$ + } + { swap$ pop$ swap$ pop$ format.full.names } + if$ +} + +FUNCTION {year.bibitem} +{ + year duplicate$ empty$ + { pop$ "" +% "????" * + }{ + skip$ + } if$ + extra.label * +} + +FUNCTION {output.bibitem} +{ + newline$ + "" + label + * ")" * + make.full.names duplicate$ short.list = + { pop$ }{ * } if$ + bracify + "[" swap$ * "]" * + cite$ bracify "%" * + * + "\bibitem " + swap$ * + write$ newline$ + " " + duplicate$ bbl.open * write$ newline$ + before.all 'output.state := + punctuation.yes 'punctuation.state := +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + }{ + { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + }{ + t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ + bbl.in + word.space * +} + +FUNCTION {date.encapsulate} +{ + duplicate$ empty$ + 'skip$ + { + before.all 'output.state := + " (" swap$ * ")" * + } + if$ +} + +FUNCTION {format.date} +{ + year "year" bibinfo.check duplicate$ empty$ + { +%<*apsrmp> + "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" +% + } + 'skip$ + if$ + extra.label * + date.encapsulate +} + +FUNCTION {format.date.output.check} +{ + format.date + "year" output.check +} + +FUNCTION {format.date.output} +{ + format.date.output.check +} + +FUNCTION {format.btitle} +{ + booktitle duplicate$ empty$ { pop$ + title + } 'skip$ if$ + "title" bibinfo.check + duplicate$ empty$ 'skip$ + { + emphasize + select.language + } + if$ +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {editor.check.book} +{ editor empty$ 'skip$ + { + "can't use both author and editor fields in " cite$ * + ": try using @inbook instead" * + warning$ + } + if$ +} + +FUNCTION {format.bvolume} +{ volume duplicate$ empty$ + { pop$ "" } + { + "volume and number" number either.or.check + bbl.volume + capitalize + swap$ + tie.or.space.prefix "volume" bibinfo.check * * + series "series" bibinfo.check duplicate$ empty$ 'pop$ + { + ", " + * swap$ * + } + if$ + } + if$ +} + +FUNCTION {format.number} +{ + bbl.number + output.state after.word = output.state after.punctuation = or + #1 or + #0 and + 'skip$ + { capitalize } + if$ + number tie.or.space.prefix "number" bibinfo.check * * +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { + series empty$ + { + number "number" bibinfo.check + }{ + format.number + series "series" bibinfo.check + word.space * swap$ * + } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {convert.edition} +{ extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num + { s + eng.ord + 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition duplicate$ empty$ 'skip$ + { + convert.edition + output.state after.word = output.state after.punctuation = or + { "l" } + { "t" } + if$ change.case$ + "edition" bibinfo.check + word.space * bbl.edition * + } + if$ +} + +INTEGERS { multiresult } +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages duplicate$ empty$ + 'skip$ + { duplicate$ multi.page.check + { + bbl.pages swap$ + n.dashify + }{ + bbl.page swap$ + } + if$ + tie.or.space.prefix + "pages" bibinfo.check + * * + } + if$ +} + +FUNCTION {first.page} +{ 't := + "" + { t empty$ not t #1 #1 substring$ "-" = not and } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + while$ +} + +FUNCTION {format.book.pages} +{ + pages duplicate$ empty$ 'skip$ + { + "pages" bibinfo.check word.space bbl.pages * * + } + if$ +} + +FUNCTION {volnum.punct} +{ + "," + word.space * +} + +FUNCTION {format.journal.pages} +{ pages duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ + { pop$ pop$ format.pages } + { volnum.punct * + swap$ + control.pages duplicate$ #0 < { + pop$ pop$ + }{ + #0 > + { + n.dashify + }{ + first.page + } if$ + } if$ + "pages" bibinfo.check + * + } + if$ + } + if$ +} + +FUNCTION {format.journal.eid} +{ eid "eid" bibinfo.check + duplicate$ empty$ 'pop$ + { swap$ duplicate$ empty$ 'skip$ + { volnum.punct * } + if$ + swap$ * + } + if$ +} + +FUNCTION {eid.or.pages} +{ + eid empty$ + { format.journal.pages } + { format.journal.eid } + if$ +} + +FUNCTION {format.ser.vol.num} +{ + series "series" bibinfo.check output + volume field.or.null + duplicate$ empty$ 'skip$ + { + "volume" bibinfo.check + } + if$ + bolden +%<*apsrmp> + number "number" bibinfo.check duplicate$ empty$ 'skip$ + { + swap$ duplicate$ empty$ + { "there's a number but no volume in " cite$ * warning$ } + 'skip$ + if$ + swap$ + "~(" swap$ * ")" * + } + if$ * +% +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { +% format.pages +% "" + } + { type empty$ + { + bbl.chapter + capitalize + }{ + type + capitalize + "type" bibinfo.check + } + if$ + chapter tie.or.space.prefix + "chapter" bibinfo.check + * * +%<*!apsrmp> + pages empty$ + 'skip$ + { ", " * format.pages * } + if$ +% + } + if$ +} + +FUNCTION {format.booktitle} +{ + booktitle duplicate$ "booktitle" bibinfo.check swap$ + duplicate$ empty$ 'pop$ + { + punctuation.yes 'punctuation.state := + pop$ emphasize + select.language + } + if$ +} + +FUNCTION {format.editor.in} +{ + editor "editor" format.names.ed duplicate$ empty$ 'skip$ + { + bbl.edby + word.space * swap$ * + } + if$ +} + +FUNCTION {output.article.booktitle} +{ + format.booktitle + "booktitle" 'bibfield := + output + bookaddress "address" bibinfo.check duplicate$ empty$ 'pop$ + { + "address" 'bibfield := + output.nonnull after.punctuation 'output.state := + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ + format.booktitle duplicate$ empty$ 'pop$ + { + add.doi + word.in swap$ * output.nonnull + bookaddress "address" bibinfo.check output + format.number.series "series and number" bibinfo.check output + format.bvolume output + format.editor.in "editor" bibinfo.check output + } + if$ +} + +FUNCTION {format.in.ed.booktitle.inbook} +{ + format.booktitle duplicate$ empty$ 'pop$ + { + add.doi + word.in swap$ * output.nonnull + bookaddress "address" bibinfo.check output + format.number.series "series and number" bibinfo.check output + format.bvolume output + author empty$ 'skip$ + { format.editor.in "editor" bibinfo.check output } + if$ + } + if$ +} + +FUNCTION {format.thesis.type} +{ type duplicate$ empty$ + 'pop$ + { swap$ pop$ + "t" change.case$ "type" bibinfo.check + } + if$ +} + +FUNCTION {format.tr.number} +{ number "number" bibinfo.check + type duplicate$ empty$ + { pop$ bbl.techrep } + 'skip$ + if$ + "type" bibinfo.check + swap$ duplicate$ empty$ + { pop$ "t" change.case$ } + { tie.or.space.prefix * * } + if$ +} + +FUNCTION {format.article.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume duplicate$ empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + pop$ word.in + } + { bbl.volume + swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * + } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} + +FUNCTION {format.org.or.pub} +{ 't := + "" + address "address" bibinfo.check + duplicate$ empty$ + { pop$ t } + { t duplicate$ empty$ + { pop$ } + { + "," word.space * + * swap$ * + } + if$ + } + if$ + * +%<*!apsrmp> + year duplicate$ empty$ + { + "empty year in " cite$ * + warning$ + pop$ "" + } + 'skip$ + if$ + duplicate$ empty$ + { pop$ } + { + "year" bibinfo.check + swap$ + duplicate$ empty$ + { pop$ } + { + "," * + word.space * + swap$ * + } + if$ + } + if$ +% + duplicate$ empty$ 'skip$ { + "" + "(" * swap$ * ")" * + after.punctuation 'output.state := + punctuation.space 'punctuation.state := + } if$ +} + +FUNCTION {format.publisher.address} +{ publisher "publisher" bibinfo.warn format.org.or.pub +} + +FUNCTION {format.organization.address} +{ organization "organization" bibinfo.check format.org.or.pub +} + +FUNCTION {format.organization.publisher.address} +{ + publisher empty$ + { format.organization.address } + { organization "organization" bibinfo.check output + format.publisher.address + } + if$ +} + +FUNCTION {format.school.address.output} +{ + school "school" bibinfo.warn + address "address" bibinfo.check + duplicate$ empty$ 'skip$ + { + swap$ + duplicate$ empty$ 'skip$ + { + ", " * + } + if$ + swap$ + } + if$ + * +% duplicate$ empty$ 'skip$ { "(" swap$ * ")" * } if$ after.punctuation 'output.state := + output +} + +FUNCTION {article.title.produce} +{ + control.title duplicate$ #0 < + { pop$ + }{ + format.title + "title" 'bibfield := + swap$ #0 > + { + "title" output.check + }{ + output + } if$ + new.block.comma + } if$ +} + +FUNCTION {control} +{ +} + +FUNCTION {article} +{ output.bibitem + format.authors + booktitle empty$ { + "author" output.check + }{ output } if$ + author format.key output +% new.block.comma +% format.date.output.check date.block + article.title.produce + output.article.booktitle + crossref missing$ + { + link.open + journal + "journal" bibinfo.warn + "journal" 'bibfield := + output + add.blank + format.ser.vol.num + output + eid.or.pages +% format.date.output.check + pages empty$ { + doi output + } 'skip$ if$ + link.shut + }{ + format.article.crossref output.nonnull +% format.pages output +% eid.or.pages + } + if$ + format.issn.output + new.block.comma + new.sentence.comma + format.note output + format.eprint output + format.translation output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { + format.editors "author and editor" output.check + editor format.key output + }{ + format.authors output.nonnull +%% crossref missing$ { editor.check.book } 'skip$ if$ + } + if$ +% new.block.comma +% format.date.output.check date.block + link.open + format.btitle + "title" output.check + link.shut + format.edition output + author empty$ + { + } + { + format.editor.in output + editor format.key output + } + if$ + format.number.series output + crossref missing$ + { + format.bvolume output + new.block.comma + format.publisher.address output + }{ + new.block.comma + format.book.crossref output.nonnull +% format.date.output.check + } + if$ + format.isbn.output + format.chapter.pages + output + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output +% new.block.comma +% format.date.output date.block + link.open + format.title + "title" output.check + link.shut + new.block.comma + howpublished "howpublished" bibinfo.check output + address "address" bibinfo.check output +% format.date.output + format.isbn.output + format.book.pages output + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {footnote} +{ output.bibitem + format.note output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { + format.editors "editor" output.check + editor format.key output + }{ + format.authors output.nonnull + author format.key output + } + if$ +% new.block.comma +% format.date.output.check date.block + + format.title output + new.block.comma + + crossref missing$ + { + format.in.ed.booktitle.inbook +% format.publisher.address output + format.chapter.pages +% "chapter and pages" +% "chapter" + output.check + new.block.comma + format.edition output + new.block.comma +% format.publisher.address output + }{ + format.chapter.pages +% "chapter and pages" +% "chapter" + output.check + new.block.comma + format.book.crossref output.nonnull +% format.date.output.check + } + if$ + crossref missing$ + { format.isbn.output } + 'skip$ + if$ +% format.pages "pages" output.check + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output +% new.block.comma +% format.date.output.check date.block + article.title.produce + crossref missing$ + { + format.in.ed.booktitle +% format.publisher.address output + format.edition output + format.chapter.pages output +% format.publisher.address output + format.isbn.output + }{ + format.incoll.inproc.crossref output.nonnull + format.chapter.pages output + } + if$ +% format.pages "pages" output.check + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output +% new.block.comma +% format.date.output.check date.block + article.title.produce + crossref missing$ + { + format.in.ed.booktitle + format.organization.publisher.address output +% format.chapter.pages output + format.isbn.output + format.issn.output + }{ + format.incoll.inproc.crossref output.nonnull +% format.chapter.pages output + } + if$ +% format.chapter.pages "chapter and pages" output.check +% format.pages "pages" output.check + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {conference} { inproceedings } +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output +% new.block.comma +% format.date.output date.block + link.open + format.btitle + "title" output.check + link.shut + organization "organization" bibinfo.check output + address "address" bibinfo.check output + format.edition output +% format.date.output + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output +% new.block.comma +% format.date.output.check date.block + format.btitle + output + new.block.comma + link.open + bbl.mthesis + format.thesis.type + output.nonnull + link.shut + format.school.address.output +% format.date.output.check + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {misc} +{ output.bibitem + format.authors output + author format.key output +% format.date.output +% new.block.comma +% date.block + link.open + format.title + output + link.shut + new.block.comma + howpublished "howpublished" bibinfo.check output +% format.date.output + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output +% new.block.comma +% format.date.output.check date.block + format.btitle + output + new.block.comma + link.open + bbl.phdthesis + format.thesis.type + output.nonnull + link.shut + format.school.address.output +% format.date.output.check + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {presentation} +{ output.bibitem + format.authors output + author format.key output + new.block.comma + link.open + format.title + output + link.shut + new.block.comma + format.organization.address "organization and address" output.check + month "month" output.check + year "year" output.check + new.block.comma + new.sentence.comma + format.note output + new.sentence + type missing$ 'skip$ + {"(" type capitalize * ")" * output} + if$ + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + format.editors output + editor format.key output +% new.block.comma +% format.date.output.check date.block + link.open + format.btitle + "title" output.check + link.shut + bookaddress "address" bibinfo.check output + format.number.series output + format.bvolume output + format.organization.publisher.address output + format.isbn.output + format.issn.output + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output +% new.block.comma +% format.date.output.check date.block + link.open +% format.title +% format.btitle + "title" output.check + link.shut + new.block.comma + format.tr.number + output.nonnull + institution "institution" bibinfo.warn + format.org.or.pub output + new.block.comma + new.sentence.comma + format.note output + format.eprint output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output +% new.block.comma +% format.date.output date.block + link.open + format.title + "title" output.check + link.shut +% format.date.output + new.block.comma + new.sentence.comma + format.note "note" output.check + format.eprint output + fin.entry +} + +FUNCTION {default.type} { misc } + +READ + +EXECUTE {control.init} + +ITERATE {control.pass} + +EXECUTE {control.check} + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +FUNCTION {cite.name.font.apply} +{ + word.space * bbl.etal + emphasize + * +} + +%<*!apsrev&!apsrmp> +FUNCTION {format.lab.names} +{ 's := + "" 't := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { + format.name.apply + 't := + nameptr #1 > + { + nameptr + #2 + = + numnames + #3 + > and + { + "others" 't := + #1 'namesleft := + } + 'skip$ + if$ + namesleft #1 > + { ", " * t * } + { + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + cite.name.font.apply + }{ + numnames #2 > { "," * } 'skip$ if$ + bbl.and + space.word * t * + } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +% +%<*apsrev|apsrmp> +FUNCTION {format.lab.names} +{ 's := + "" 't := + #1 'nameptr := + format.name.apply + s num.names$ duplicate$ + #2 > + { pop$ + cite.name.font.apply + }{ + #2 < + 'skip$ + { + s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + cite.name.font.apply + }{ + bbl.and space.word * + s #2 "{vv~}{ll}" format.name$ + cite.name.font + * + } + if$ + } + if$ + } + if$ +} + +% +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ + calc.short.authors + short.list + year duplicate$ empty$ +% short.list key field.or.null = or + { + pop$ "" +% "????" * + }{ + control.year #0 > { purify$ #-1 #4 substring$ } 'skip$ if$ + } + if$ + "(" swap$ * + * 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{ll{ }}" + control.author.initials { + "{ f{ }}" * + }{ + "{ ff{ }}" * + } if$ + "{ jj{ }}" * + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { + t sortify * + } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {year.sort.key} +{ + year +} + +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} + +INTEGERS { seq.num } + +FUNCTION {init.seq} +{ #0 'seq.num :=} + +EXECUTE {init.seq} + +FUNCTION {int.to.fix} +{ "000000000" swap$ int.to.str$ * + #-1 #10 substring$ +} + +FUNCTION {label.presort} +{ + calc.label + label sortify + " " + * +%<*!aipauth&!apsrmp> + seq.num #1 + 'seq.num := + seq.num int.to.fix +% +%<*aipauth|apsrmp> + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ +% + 'sort.label := + sort.label + * + " " + * + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +FUNCTION {presort.pass} +{ type$ "control" = 'control.presort 'label.presort if$ +} + +ITERATE {presort.pass} + +SORT + +STRINGS { last.label next.extra } + +INTEGERS { last.extra.num number.label } + +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {label.forward} +{ + last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {label.reverse} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +EXECUTE {initialize.extra.label.stuff} + +FUNCTION {forward.pass} +{ type$ "control" = 'control.forward 'label.forward if$ +} + +ITERATE {forward.pass} + +FUNCTION {reverse.pass} +{ type$ "control" = 'control.reverse 'label.reverse if$ +} + +REVERSE {reverse.pass} + +FUNCTION {sortkey.sort} +{ sort.label + " " + * + year.sort.key + field.or.null sortify + * + " " + * + title field.or.null sort.format.title + * + #1 entry.max$ substring$ + 'sort.key$ := +} + +FUNCTION {bib.sort.pass} +{ type$ "control" = 'control.sort 'sortkey.sort if$ +} + +ITERATE {bib.sort.pass} + +SORT + +FUNCTION {init.bib.eprint} +{ + "\texttt {" + pop$ + "\providecommand \url [0]{\begingroup\@sanitize@url \@url }%" write$ newline$ + "\providecommand \@url [1]{\endgroup\@href {#1}{" "}}%" bbl.url.prefix swap$ * * write$ newline$ + "\providecommand " " [0]{URL }%" bbl.url.prefix swap$ * * write$ newline$ + eprint.command "\providecommand " swap$ * "[0]{\href }%" * write$ newline$ +} + +FUNCTION {init.bib.doi} +{ + "\providecommand \doibase [0]{" doi.base "}%" * * write$ newline$ +} + +FUNCTION {init.bib.hypertex} +{ + "\providecommand " noop.command "[0]{\@secondoftwo}%" * * write$ newline$ + "\providecommand " href.command "[0]{\begingroup \@sanitize@url \@href}%" * * write$ newline$ + "\providecommand \@href[1]{\@@startlink{#1}\@@href}%" write$ newline$ + "\providecommand \@@href[1]{\endgroup#1\@@endlink}%" write$ newline$ + "\providecommand \@sanitize@url [0]{\catcode `\\12\catcode `\$12\catcode `\&12\catcode `\#12\catcode `\^12\catcode `\_12\catcode `\%12\relax}%" write$ newline$ + "\providecommand \@@startlink[1]{}%" write$ newline$ + "\providecommand \@@endlink[0]{}%" write$ newline$ +} + +FUNCTION {init.bib.namefont} +{ + "\providecommand \bibnamefont [1]{#1}%" write$ newline$ + "\providecommand \bibfnamefont [1]{#1}%" write$ newline$ + "\providecommand \citenamefont [1]{#1}%" write$ newline$ +} + +FUNCTION {init.bib.quote} +{ + "\providecommand " bbl.enquote * " [1]{" * + "``" "''" + "#1" swap$ "}%" * * * * write$ newline$ +} + +FUNCTION {init.bib.ay} +{ + "\providecommand \natexlab [1]{#1}%" + write$ newline$ +} + +FUNCTION {init.bib.bibinfo} +{ + bibinfo.command "\providecommand " swap$ * " [0]{\@secondoftwo}%" * write$ newline$ + bibfield.command "\providecommand " swap$ * " [0]{\@secondoftwo}%" * write$ newline$ +} + +FUNCTION {init.bib.lang} +{ + "\providecommand \selectlanguage [0]{\@gobble}%" write$ newline$ +} + +FUNCTION {init.bib.endbibitem} +{ + "\providecommand " bbl.open * "[0]{}%" * write$ newline$ + "\providecommand \bibitemStop [0]{}%" write$ newline$ + "\providecommand \bibitemNoStop [0]{.\EOS\space}%" write$ newline$ + "\providecommand \EOS [0]{\spacefactor3000\relax}%" write$ newline$ +} + +FUNCTION {init.bib.translation} +{ + "\providecommand \translation [1]{[#1]}%" write$ newline$ +} + +FUNCTION {warn.bib} +{ +} + +FUNCTION {init.bib} +{ + warn.bib + "\makeatletter" write$ newline$ + "\providecommand \@ifxundefined [1]{%" write$ newline$ + " \@ifx{#1\undefined}" write$ newline$ + "}%" write$ newline$ + "\providecommand \@ifnum [1]{%" write$ newline$ + " \ifnum #1\expandafter \@firstoftwo" write$ newline$ + " \else \expandafter \@secondoftwo" write$ newline$ + " \fi" write$ newline$ + "}%" write$ newline$ + "\providecommand \@ifx [1]{%" write$ newline$ + " \ifx #1\expandafter \@firstoftwo" write$ newline$ + " \else \expandafter \@secondoftwo" write$ newline$ + " \fi" write$ newline$ + "}%" write$ newline$ + init.bib.ay + init.bib.quote + init.bib.namefont + init.bib.hypertex + init.bib.eprint + init.bib.doi + init.bib.lang + init.bib.bibinfo + init.bib.translation + init.bib.endbibitem + "\providecommand " bbl.shut * " [1]{\csname bibitem#1\endcsname}%" * write$ newline$ + "\let\auto@bib@innerbib\@empty" write$ newline$ + "%" write$ +} + +FUNCTION {begin.bib} +{ + id.bst diagn.cmntlog + control.bib + preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{" + number.label int.to.str$ + * "}%" * + write$ newline$ + init.bib +} + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}%" + write$ newline$ +} + +EXECUTE {end.bib} + +% \end{macrocode} +% +% \begin{macrocode} +% +% \end{macrocode} +% +% \endinput +% +% \Finale diff --git a/Master/texmf-dist/source/latex/revtex4-1/revtex4-1.dtx b/Master/texmf-dist/source/latex/revtex4-1/revtex4-1.dtx new file mode 100644 index 00000000000..9fce075351e --- /dev/null +++ b/Master/texmf-dist/source/latex/revtex4-1/revtex4-1.dtx @@ -0,0 +1,8296 @@ +% \iffalse meta-comment balanced on line 122 +% revtex4-1.dtx: package to typeset APS, AIP, OSA, ASA, etc. journal articles +% Copyright (c) 2009 The American Physical Society. +% http://publish.aps.org/revtex4/ +% 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.3 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-1.dtx +% and the derived files +% revtex4.cls, revtex4.pdf +% Distribution: +% CTAN:macros/latex/contrib/revtex/ +% +% Unpacking: +% tex revtex4-1.dtx +% +% Documentation: +% latex revtex4-1.dtx; ... +% +% Programm calls to get the documentation (example): +% pdflatex revtex4-1.dtx +% makeindex -s gind.ist revtex4-1.idx +% makeindex -s gglo.ist -o revtex4-1.gls revtex4-1.glo +% pdflatex revtex4-1.dtx +% makeindex -s gind.ist revtex4-1.idx +% pdflatex revtex4-1.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 +% +%<*install> +%% This file will generate documentation and runtime files +%% from revtex4-1.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) + +Copyright (c) 2009 The American Physical Society. +http://publish.aps.org/revtex4/ +mailto:revtex4@aps.org + +See the REVTeX 4 README file for restrictions and more information. + +\endpreamble +\askforoverwritefalse +\keepsilent +\generate{% + \file{revtex4-1.cls}{% + \from{revtex4-1.dtx}{kernel}% + \from{ltxutil.dtx}{kernel}% + \from{ltxfront.dtx}{kernel}% + \from{ltxgrid.dtx}{kernel}% + \from{revtex4-1.dtx}{options}% + \from{ltxutil.dtx}{options}% + \from{ltxfront.dtx}{options}% + \from{ltxgrid.dtx}{options}% + \from{revtex4-1.dtx}{package}% + }% + \file{aps4-1.rtx}{\from{revtex4-1.dtx}{aps}}% + \file{apsrmp4-1.rtx}{\from{revtex4-1.dtx}{rmp}}% + \file{aps10pt4-1.rtx}{\from{revtex4-1.dtx}{10pt}}% + \file{aps11pt4-1.rtx}{\from{revtex4-1.dtx}{11pt}}% + \file{aps12pt4-1.rtx}{\from{revtex4-1.dtx}{12pt}}% + \file{revsymb4-1.sty}{\from{revtex4-1.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-1.dtx through LaTeX.} +\Msg{*} +\Msg{* Happy TeXing} +\Msg{***********************************************************} +} +\endbatchfile +% +%<*ignore> +\fi +% +% \fi +% +% \GetFileInfo{revtex4-1.dtx} +% +% \iffalse ltxdoc klootch +%<*package> +%%% @LaTeX-file{ +%%% filename = "revtex4-1.dtx", +%%% version = "4.1s", +%%% date = "2020/09/30", +%%% author = "Arthur Ogawa (mailto:arthur_ogawa at sbcglobal.net), +%%% commissioned by the American Physical Society. +%%% ", +%%% copyright = "Copyright (C) 1999, 2009 Arthur Ogawa, +%%% distributed under the terms of the +%%% LaTeX Project Public License, see +%%% ftp://ctan.tug.org/macros/latex/base/lppl.txt +%%% ", +%%% address = "Arthur Ogawa, +%%% USA", +%%% telephone = "", +%%% FAX = "", +%%% email = "mailto colon arthur_ogawa at sbcglobal.net", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, page grid, main vertical list", +%%% supported = "yes", +%%% abstract = "package to change page grid, MVL", +%%% } +% +% \fi +% +% \iffalse ltxdoc klootch +% The following references the \file{00readme.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*}{00readme.tex}" to locate it. +% \fi\input{00readme.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-1.dtx +%\end{verbatim} +% +% \subsubsection{Generated by \texttt{tex revtex4-1.dtx}}% +% Typesetting ths file under \TeX\ itself runs the installer, +% which generates the package files. +%\begin{verbatim} +%revtex4-1.cls, revtex4.ins, revtex4.drv, aps4-1.rtx, +%aps10pt4-1.rtx, aps11pt4-1.rtx, aps12pt4-1.rtx, revsymp.sty +%\end{verbatim} +% +% \subsubsection{Generated by \texttt{pdflatex revtex4-1.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]% +% +%\ProvidesClass{revtex4-1} +%\ProvidesFile{aps4-1} +%\ProvidesFile{apsrmp4-1} +%<10pt>\ProvidesFile{aps10pt4-1} +%<11pt>\ProvidesFile{aps11pt4-1} +%<12pt>\ProvidesFile{aps12pt4-1} +%\ProvidesPackage{revsymb4-1} +%<*doc> +\ProvidesFile{revtex4-1.dtx} +% +%<*!package&!options> +% + [2020/09/30 4.1s (http://publish.aps.org/revtex4/ for documentation)]% \fileversion +% +% \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} +%\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{00readme.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}% +\makeatletter +\@ifundefined{package@font}{}% + {\expandafter\RequirePackage\expandafter{\csname package@font\endcsname}} +\makeatother +% \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*}[overwrite]{00readme.tex} +\title{% + The \classname{revtex4-1} document class of the American Physical Society% + \protect\thanks{Work under hire to The American Physical Society.}% +}% +\author{Arthur Ogawa% + \protect\thanks{First revision of REV\TeX4.0 (unreleased) by David Carlisle}% +}% +\date{Version \fileversion, dated \filedate}% +\newcommand\revtex{REV\TeX} + +\maketitle + +This file embodies the implementation of the APS \revtex\ 4.1 document class +for electronic submissions to journals. + +The distribution point for this work is +\url{http://publish.aps.org/revtex4/}, +which contains fully unpacked, prebuilt runtime files and documentation. + +\tableofcontents + +\section{Using \protect\revtex} + +The file \file{README} has retrieval and installation information. + +User documentation is presented separately in \file{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.1s}{2020/09/19}{(PHO) Adapt patches to \cs{document} and \cs{enddocument} to the 2020-10-01 \LaTeX{} release.}% + +\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} +\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} +% +% \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}{% +% +% }{}% +% \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) 2009 The American Physical Society.^^J + mailto:revtex@aps.org^^J + Licensed under the LPPL:^^Jhttp://www.ctan.org/tex-archive/macros/latex/base/lppl.txt^^J + Arthur Ogawa ^^J + Based on work by David Carlisle % + \@gobble +}% +% \end{macrocode} +% +% \subsection{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} +% +% \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} +% +% \revtex's default for \cmd\longbibliography@sw\ is \cmd\false@sw. +% +% \begin{macrocode} +\DeclareOption{longbibliography}{\@booleantrue\longbibliography@sw}% +\DeclareOption{nolongbibliography}{\@booleanfalse\longbibliography@sw}% +\@booleanfalse\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} +% +% \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-1}% +\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}{% +% +%\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+ for every \verb+\the+'' +% 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+ be the same as \verb+\arabic{}+, +% if \verb+\theH+ 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.}% +% 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 (REVTEX41Control) is effectively a version number, +% which the \filename{.bst} can use to interpret the bib entry. +% \begin{macrocode} + @CONTROL{% + REVTEX41Control% +% \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=""}% + }% + }% +% \end{macrocode} +% Place a \cmd\citation\ into the auxiliary file corresponding to this entry. +% \begin{macrocode} + \if@filesw + \immediate\write\@auxout{\string\citation{REVTEX41Control}}% + \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 +% \let\set@footnotewidth\set@footnotewidth@two + \ltx@no@footnote + #1% + \endgroup + \twocolumngrid + \minipagefootnote@foot +}% +\def\close@column@grid{% + \balancelastpage@sw{% + \onecolumngrid +% \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{% +% \vskip15\p@ + \hb@xt@\hsize{% + \leaders\hrule\hfil + \vrule\@height6\p@ + }% +% \vskip6\p@ + }% + \setbox\widetext@bot\hb@xt@\hsize{% + \vrule\@depth6\p@ + \leaders\hrule\hfil + }% + \onecolumngrid + \vskip10\p@ + \dimen@\ht\widetext@top\advance\dimen@\dp\widetext@top + \cleaders\box\widetext@top\vskip\dimen@ +% \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}% +% \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-1}% +}% +\appdef\class@documenthook{\revsymb@inithook}% +% \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. +% +% \begin{macrocode} +\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 http://publish.aps.org/revtex4/}% + }{% + \class@warn{Outdated software expired \rtx@fin@year-\rtx@fin@month-\rtx@fin@day; please retrieve an update at http://publish.aps.org/revtex4/}% + }% + }% +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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 initialisations, +% 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}}% +\DeclareOption{prstab}{\change@journal{prstab}}% +\DeclareOption{prstper}{\change@journal{prstper}}% +\DeclareOption{rmp}{\change@journal{rmp}}% +% \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\ao{Appl.\ Opt.}% +\def\ap{Appl.\ Phys.}% +\def\apl{Appl.\ Phys.\ Lett.}% +\def\apj{Astrophys.\ J.}% +\def\bell{Bell Syst.\ Tech.\ J.}% +\def\jqe{IEEE J.\ Quantum Electron.}% +\def\assp{IEEE Trans.\ Acoust.\ Speech Signal Process.}% +\def\aprop{IEEE Trans.\ Antennas Propag.}% +\def\mtt{IEEE Trans.\ Microwave Theory Tech.}% +\def\iovs{Invest.\ Ophthalmol.\ Vis.\ Sci.}% +\def\jcp{J.\ Chem.\ Phys.}% +\def\jmo{J.\ Mod.\ Opt.}% +\def\josa{J.\ Opt.\ Soc.\ Am.}% +\def\josaa{J.\ Opt.\ Soc.\ Am.\ A}% +\def\josab{J.\ Opt.\ Soc.\ Am.\ B}% +\def\jpp{J.\ Phys.\ (Paris)}% +\def\nat{Nature (London)}% +\def\oc{Opt.\ Commun.}% +\def\ol{Opt.\ Lett.}% +\def\pl{Phys.\ Lett.}% +\def\pra{Phys.\ Rev.\ A}% +\def\prb{Phys.\ Rev.\ B}% +\def\prc{Phys.\ Rev.\ C}% +\def\prd{Phys.\ Rev.\ D}% +\def\pre{Phys.\ Rev.\ E}% +\def\prl{Phys.\ Rev.\ Lett.}% +\def\rmp{Rev.\ Mod.\ Phys.}% +\def\pspie{Proc.\ Soc.\ Photo-Opt.\ Instrum.\ Eng.}% +\def\sjqe{Sov.\ J.\ Quantum Electron.}% +\def\vr{Vision Res.}% +% \end{macrocode} +% +% \subsection{APS Setup}% +% Here we define the default procedures for APS journals. +% Individual APS journals may override these definitions. +% +% \subsubsection{Title block}% +% +% The specifics of the title block. +% Apply to all APS journals; individual journals may override these settings. +% +% \begin{macro}{\@fnsymbol} +% The \LaTeX\ kernel definition of \cmd\@fnsymbol\ is overridden. +% 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.} +% \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\else + \mathsection\mathsection\or + \mathparagraph\mathparagraph\or + ***\or + \dagger\dagger\dagger\or + \ddagger\ddagger\ddagger\else + \mathsection\mathsection\mathsection\or + \mathparagraph\mathparagraph\mathparagraph\or +% + \@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} +% +% 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 +\@booleantrue\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-1.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, and RMP. +% At present, they are identical, +% with the exception of PRB and RMP. +% +% 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}}% +% We define a \cmd\citealp-like procedure that uses a numerical citation; it is for use in +% the PRB journal. +% \begin{macrocode} +\def\rtx@apsprb{% + \class@info{APS journal PRB selected}% +% \end{macrocode} +% PRB requires superscript citations. +% We use Patrick Daly's \classname{natbib} package, +% and hyperref and other packages are already set up to cope with this. +% +% \begin{macro}{\bibpunct} +% By default, PRB selects the \classoption{bibnotes} option. +% We also set up for numerical citations. +% \begin{macrocode} + \let\frontmatter@footnote@produce\frontmatter@footnote@produce@endnote + \appdef\setup@hook{% + \bibpunct{}{}{,}{s}{}{\textsuperscript{,}}% + \let\onlinecite\rev@citealpnum + }% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\pre@bibdata} +% \begin{macro}{\@endnotetext} +% \changes{4.1a}{2008/01/18}{(AO, 457) Endnotes to be sorted in with numerical citations.}% +% +% 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} +% \end{macro} +% +% Invoke \classoption{superbib} option. +% If the document makes a selection of its own, it will override this assignment. +% \begin{macrocode} + \let\place@bibnumber\place@bibnumber@sup +% \end{macrocode} +% +% End of \classoption{prb} code. +% \begin{macrocode} +}% +% \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{per}}% +% Here is code specific to \classoption{per}. +% \begin{macrocode} +\def\rtx@apsprstper{% + \class@info{APS journal PRST-PER selected}% +% \end{macrocode} +% To first order, PER is the same as PRB, with superscript citations. +% +% \begin{macrocode} + \rtx@apsprb +% \end{macrocode} +% Per Mark Doyle (2009-12-22), the default is longbibliography. +% \changes{4.1n}{2010/01/04}{(AO, 575) the default for journal prstper is longbibliography}% +% \begin{macrocode} + \@booleantrue\longbibliography@sw +% \end{macrocode} +% +% ``Section heads are bold, centered (Roman numeral, Latin letter)'' +% +% Article titles do not have surrounding double-quotes! +% +% End of \classoption{prb} code. +% \begin{macrocode} +}% +% \end{macrocode} +% +% \subsubsection{\classoption{prstab}}% +% There is no code specific to \classoption{prstab}. +% \begin{macrocode} +\def\rtx@apsprstab{% + \class@info{APS journal PRSTAB selected}% +}% +% \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{% + apsrev41Control% +% \end{macrocode} +% Say whether we want long bibliography style (the default), or the abbreviated style. +% \begin{macrocode} + \longbibliography@sw{% + ,author="00",editor="1",pages="1",title="0",year="0"% + }{% + ,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{apsrev41Control}}% + \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} +% +% \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. +% \begin{macrocode} +\def\PACS@warn{RMP documents do not display PACS. Your \string\pacs\space will be ignored}% +% \end{macrocode} +% \end{macro} +% +% \begin{macro}{\frontmatter@title@above} +% \begin{macro}{\frontmatter@title@format} +% \begin{macro}{\frontmatter@title@below} +% +% \begin{macrocode} +\def\frontmatter@title@above{}% +\def\frontmatter@title@format{\Large\bfseries\raggedright}% HelveticaNeue-Medium(Italic) 14pt. +\def\frontmatter@title@below{\addvspace{12\p@}}% 24pt b-b down to first author +% \end{macrocode} +% \end{macro} +% \end{macro} +% \end{macro} +% +% \begin{macro}{\frontmatter@authorformat} +% \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-1.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="",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{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} +% +% \end{macrocode} +% +% +% \Finale +% %Here ends the programmer's documentation. +% \endinput +% +\endinput -- cgit v1.2.3