% \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