diff --git a/.readthedocs.yml b/.readthedocs.yml index 0338fe3..79192f1 100644 --- a/.readthedocs.yml +++ b/.readthedocs.yml @@ -1,9 +1,9 @@ version: 2 build: - os: ubuntu-22.04 + os: ubuntu-lts-latest tools: - python: "3.11" + python: "3.12" apt_packages: - graphviz - texlive-publishers diff --git a/aastex/_aastex.py b/aastex/_aastex.py index 2c99313..828b8f5 100644 --- a/aastex/_aastex.py +++ b/aastex/_aastex.py @@ -1,5 +1,7 @@ import dataclasses import pathlib +import shutil + import matplotlib.figure import astropy.units as u import uuid @@ -80,41 +82,48 @@ class Author(pylatex.base_classes.LatexObject): affiliation: Affiliation """The organization affiliated with the author""" - orcid: None | str = None - """The optional ORCID of the author.""" - email: None | str = None """ - The optional email address of the author. - - If this is not :obj:`None`, this author is assumed to be the corresponding - author. + The email address of the author. """ + orcid: None | str = None + """The optional ORCID of the author.""" + + corresponding: bool = False + """Whether this author is the corresponding author.""" + def dumps(self) -> str: + result = "" + + show = None + + if self.corresponding: + result += ( + pylatex.Command( + command="correspondingauthor", + arguments=self.name, + ).dumps() + + "\n" + ) + show = "show" + author = pylatex.Command( command="author", arguments=self.name, options=NoEscape(self.orcid) if self.orcid is not None else None, ).dumps() - affilation = self.affiliation.dumps() - - result = f"{author}\n{affilation}" - - if self.email is not None: - corresponding_author = pylatex.Command( - command="correspondingauthor", - arguments=self.name, - ).dumps() + email = pylatex.Command( + command="email", + arguments=self.email, + options=show, + ).dumps() - email = pylatex.Command( - command="email", - arguments=self.email, - ).dumps() + affilation = self.affiliation.dumps() - result += f"\n{corresponding_author}\n{email}" + result += f"{author}\n{email}\n{affilation}" return result @@ -261,6 +270,7 @@ class Figure( pylatex.Figure, ): marker_prefix = "fig" + # separate_paragraph = False def __init__( self, @@ -417,7 +427,7 @@ class Document(pylatex.Document): def __init__( self, default_filepath: str | pathlib.Path = "default_filepath", - documentclass: str = "aastex631", + documentclass: str = "aastex701", document_options: None | str | list[str] = None, fontenc: str = "T1", inputenc: str = "utf8", @@ -448,15 +458,7 @@ def __init__( data=data, ) self.escape = False - self.preamble.append( - NoEscape( - "\\usepackage{savesym}\n" - "\\savesymbol{tablenum}\n" - "\\usepackage{siunitx}\n" - "\\restoresymbol{SIX}{tablenum}\n" - ) - ) - self.preamble.append(pylatex.Command("bibliographystyle", "aasjournal")) + self.preamble.append(pylatex.Command("bibliographystyle", "aasjournalv7")) def set_variable_quantity( self, @@ -492,6 +494,41 @@ def set_variable_quantity( ), ) + def generate_pdf(self, filepath=None, *, clean=True, clean_tex=True, + compiler=None, compiler_args=None, silent=True,): + + base = pathlib.Path(__file__).parent + cls = base / "aastex701.cls" + bst = base / "aasjournalv7.bst" + orcid = base / "orcid-ID.png" + + filepath = pathlib.Path(filepath) + + directory = filepath.parent + directory.mkdir(parents=True, exist_ok=True) + + cls_copy = directory / cls.name + bst_copy = directory / bst.name + orcid_copy = directory / orcid.name + + shutil.copyfile(cls, cls_copy) + shutil.copyfile(bst, bst_copy) + shutil.copyfile(orcid, orcid_copy) + + super().generate_pdf( + filepath=filepath, + clean=clean, + clean_tex=clean_tex, + compiler=compiler, + compiler_args=compiler_args, + silent=silent, + ) + + if clean_tex: + cls_copy.unlink() + bst_copy.unlink() + orcid_copy.unlink() + class Bibliography(pylatex.base_classes.CommandBase): def __init__( diff --git a/aastex/_tests/test_aastex.py b/aastex/_tests/test_aastex.py index ec1bd05..5f1cb08 100644 --- a/aastex/_tests/test_aastex.py +++ b/aastex/_tests/test_aastex.py @@ -43,6 +43,7 @@ def test_dumps(self, a: aastex.Affiliation): affiliation=aastex.Affiliation("Fancy University"), orcid="0000-0000-0000-0000", email="jane.doe@tmp.com", + corresponding=True, ), ], ) diff --git a/aastex/aasjournalv7.bst b/aastex/aasjournalv7.bst new file mode 100644 index 0000000..11ae5d6 --- /dev/null +++ b/aastex/aasjournalv7.bst @@ -0,0 +1,1915 @@ +%% aasjournalv7.bst March 4, 2025 +%% +%% Revision 1.19: Aptara +%% Modified to include first initials for inline citations. +%% Full titles can be called via that "longbib" style option in +%% aastex7.cls. This version should only be used with v7+. +%% +%% AASJournal.bst June 3, 2019 +%% +%% Revision 1.18 2019/6/3 Amy Hendrickson +%% Took out `v' preceding version number in @misc +%% +%% Rewrote format.pid to implement this precedence: +%% if doi, print that, if eprint print that, if neither +%% and there is a url, use the url + +%% Took out format.url output generally because it is included in format.pid, +%% so undesirable to call for it a second time. + +%% +%% Revision 1.17 2019/3/15 Amy Hendrickson +%% Added DOI to every field where format.url was found. Kept format.url in case +%% it is needed. +%% + +%% Revision 1.16 2017/10/26 Amy Hendrickson +%% `url' only active when used in misc +%% +%% `note' is disabled in all cases; as is adsnote and adsurl. +%% +%% Repair to @misc call to aaspublisher to prevent `, ,' +%% when there is no publisher listed. +%% +%% Make correct hyperlinked content for doi, ascl, and arXiv; +%% changed definition of FUNCTION {format.eprint} to compare +%% archivePrefix with "arXiv" and when they match do +%% ' {new.block "\doarXiv{" eprint * "}" * } +%% otherwise do +%% ' {new.block "\doeprint{" eprint * "}" * } +%% +%% \dodoi, \doarXiv and \doeprint definitions are sent to the top of the .bbl file +%% with commands found in FUNCTION {begin.bib}. +%% +%% bbl.version no longer used, could be deleted. +%% +%% Version number is added when author enters: version = {number}, only in `misc' +%% +%% Removed `format.doi output' in {article} because in +%% combination with { format.pid output } we could get double doi entries +%% in the bibliography. +%% +%% Rewrote format.pid so that we can check to see if we have a doi number; in +%% which case we use that and suppress the arXiv and eprint combination. However, +%% we do Not eliminate the url field if the author has entered it. +%% +%% Deleted format.miscversion and made a simplified way to produce version in @misc +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Revision 1.16 2024/02/01 Technology Team (Aptara) +%% 1. Added first initial in text citation with author name i.e Donati,~J. {et~al.}(2020) instead of Donati,~J.-F. {et~al.}(2020) +%% 2. Added Article title field in article type refernces. + +%% Revision 1.15 2016/10/5 Amy Hendrickson +%% Changed bbl.version so that there is no longer a trailing `.' + +%% Revision 1.14 2016/9/14 Amy Hendrickson +%% Added URL field + +%% Revision 1.13 2016/8/9 Amy Hendrickson +%% Change to presort and bibsort to get multiple entries with same author/year +%% combination to be ordered in bibliography in same order as \cite{}s entered in text. + +%% Revision 1.12 2016/2/11 Amy Hendrickson +%% Changes to @misc function to specifications by Dr. August Muench. +%% Made comma appear between title and publisher whether or not there is a version number. + +%% Revision 1.11 2015/12/31 Amy Hendrickson +%% Changes to @misc function to specifications by Dr. August Muench. +%% Added version and publisher fields. + +%% Revision 1.10 2013/03/11 13:01:55 alberto +%% Reworked code to use format.pid for articles without proper +%% pagination which then leads the system to use either an eprint +%% id or a DOI; this will solve most problems with citing early +%% access articles (no volume of page available, but online). +%% Removed bibliography count from preamble since it seems to +%% confuse some versions of latex. +%% +%% Revision 1.9 2013/2/19 Erik Tollerud +%% fixes for spurious error messages due to rev 1.8 changes +%% also fixed missing publisher field printing in "book" +%% +%% Revision 1.8 2013/01/10 16:31:34 alberto +%% Added proper formatting of arXiv eprint entries output by ADS +%% (these are article records, but the eprint id is printed only +%% if no traditional page number is available). Also added support +%% for ASCL entries under the "misc" category. +%% +%% Revision 1.7 2011/11/21 13:10:12 alberto +%% Implemented new ApJ formatting rules: for papers with more than +%% 5 authors, print first 3 followed by "et al." +%% +%% Revision 1.6 2009/05/18 15:13:02 alberto +%% Fixed sorting of references with truncated lists of authors +%% in sort.format.names +%% Fix courtesy of Stephen Fegan +%% +%% Revision 1.5 2009/03/19 13:15:11 alberto +%% Truncate \bibitem entries with more than 8 authors. +%% Fix courtesy of Craig Wiegert +%% and Andrew R. Marble +%% +%% Revision 1.4 2002/06/18 16:37:48 alberto +%% Add comma after first author in two-author reference +%% Fix courtesy of Tim Robishaw +%% +%% Revision 1.3 2000/04/20 22:17:50 jbaker +%% Fixed INBOOK bug, now works essentially like BOOK. +%% +%% Revision 1.2 1998/08/30 22:35:45 jbaker +%% Added RCS keywords. +%% +%% 1998/08/12 J Baker +%% Tweaked by hand to get correct results for ApJ. Added functions from +%% astrobib. + + +%% +%% This originally was file `apj.bst', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% merlin.mbs (with options: `,ay,nat,nm-rev,nmdash,dt-beg,yr-per,note-yr,atit-u,jtit-x,jttl-rm,thtit-a,vnum-x,volp-com,jpg-1,pp-last,btit-rm,add-pub,pub-par,pre-edn,edby,edbyx,blk-com,fin-bare,ppx,ed,abr,ord,jabr,amper,em-x') +%% ---------------------------------------- +%% *** Bibliographic Style for ApJ *** +%% + %------------------------------------------------------------------- + % The original source file contains the following version information: + % \ProvidesFile{merlin.mbs}[1998/02/25 3.85a (PWD)] + % + % NOTICE: + % This file may be used for non-profit purposes. + % It may not be distributed in exchange for money, + % other than distribution costs. + % + % The author provides it `as is' and does not guarantee it in any way. + % + % Copyright (C) 1994-98 Patrick W. Daly + %------------------------------------------------------------------- + % For use with BibTeX version 0.99a or later + %------------------------------------------------------------------- + % This bibliography style file is intended for texts in ENGLISH + % This is an author-year citation style bibliography. As such, it is + % non-standard LaTeX, and requires a special package file to function properly. + % Such a package is natbib.sty by Patrick W. Daly + % The form of the \bibitem entries is + % \bibitem[Jones et al.(1990)]{key}... + % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}... + % The essential feature is that the label (the part in brackets) consists + % of the author names, as they should appear in the citation, with the year + % in parentheses following. There must be no space before the opening + % parenthesis! + % With natbib v5.3, a full list of authors may also follow the year. + % In natbib.sty, it is possible to define the type of enclosures that is + % really wanted (brackets or parentheses), but in either case, there must + % be parentheses in the label. + % The \cite command functions as follows: + % \citet{key} ==>> Jones et al. (1990) + % \citet*{key} ==>> Jones, Baker, and Smith (1990) + % \citep{key} ==>> (Jones et al., 1990) + % \citep*{key} ==>> (Jones, Baker, and Smith, 1990) + % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2) + % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990) + % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32) + % \citeauthor{key} ==>> Jones et al. + % \citeauthor*{key} ==>> Jones, Baker, and Smith + % \citeyear{key} ==>> 1990 + %--------------------------------------------------------------------- + +ENTRY + { address + archivePrefix + author + booktitle + chapter + doi + edition + editor + eprint + howpublished + institution + journal + key + month + number + organization + pages + publisher + school + series + title + misctitle + type + volume + year + version + url + } + {} + { label extra.label sort.label short.list } + +INTEGERS { output.state before.all mid.sentence after.sentence after.block } + +FUNCTION {init.state.consts} +{ #0 'before.all := + #1 'mid.sentence := + #2 'after.sentence := + #3 'after.block := +} + +STRINGS { s t } + +FUNCTION {output.nonnull} +{ 's := + output.state mid.sentence = + { ", " * write$ } + { output.state after.block = + { add.period$ write$ + newline$ + "\newblock " write$ + } + { output.state before.all = + 'write$ + { add.period$ " " * write$ } + if$ + } + if$ + mid.sentence 'output.state := + } + if$ + s +} + +FUNCTION {output} +{ duplicate$ empty$ + 'pop$ + 'output.nonnull + if$ +} + +FUNCTION {output.check} +{ 't := + duplicate$ empty$ + { pop$ "empty " t * " in " * cite$ * warning$ } + 'output.nonnull + if$ +} + +FUNCTION {fin.entry} +{ duplicate$ empty$ + 'pop$ + 'write$ + if$ + newline$ +} + +FUNCTION {new.block} +{ output.state before.all = + 'skip$ + { after.block 'output.state := } + if$ +} + +FUNCTION {new.sentence} +{ output.state after.block = + 'skip$ + { output.state before.all = + 'skip$ + { after.sentence 'output.state := } + if$ + } + if$ +} + +FUNCTION {add.blank} +{ " " * before.all 'output.state := +} + +FUNCTION {add.comma} +{ "," * } + + +FUNCTION {date.block} +{ + skip$ +} + +FUNCTION {not} +{ { #0 } + { #1 } + if$ +} + +FUNCTION {and} +{ 'skip$ + { pop$ #0 } + if$ +} + +FUNCTION {or} +{ { pop$ #1 } + 'skip$ + if$ +} + +FUNCTION {new.block.checkb} +{ empty$ + swap$ empty$ + and + 'skip$ + 'new.block + if$ +} + +FUNCTION {field.or.null} +{ duplicate$ empty$ + { pop$ "" } + 'skip$ + if$ +} + +FUNCTION {remove.irrelevant.period.comma} +{ 's := + s empty$ + { "" } + { s #-1 #3 substring$ "?,'" = + s #-1 #3 substring$ "?.'" = or + { s #-3 global.max$ substring$ "'" * } + { s #-1 #4 substring$ "?,''" = + s #-1 #4 substring$ "?.''" = or + { s #-4 global.max$ substring$ "''" * } + { s #-1 #2 substring$ "?," = + s #-1 #2 substring$ "?." = or + { s #-2 global.max$ substring$ "" * } + { s #-1 #3 substring$ "?,~" = + s #-1 #3 substring$ "?.~" = or + { s #-4 global.max$ substring$ "?~" * } + 's + if$ + } + if$ + } + if$ + } + if$ + } + if$ +} + +FUNCTION {bibinfo.check} +{ swap$ + duplicate$ missing$ + { + pop$ pop$ + "" + } + { duplicate$ empty$ + { + swap$ pop$ + } + { swap$ + "\bibinfo{" swap$ * "}{" * swap$ * "}" * + } + if$ + } + if$ +} + + +FUNCTION {emphasize} +{ skip$ } + +FUNCTION {capitalize} +{ "u" change.case$ "t" change.case$ } + +FUNCTION {space.word} +{ " " swap$ * " " * } + + % Here are the language-specific definitions for explicit words. + % Each function has a name bbl.xxx where xxx is the English word. + % The language selected here is ENGLISH +FUNCTION {bbl.and} +{ "and"} + +FUNCTION {bbl.editors} +{ "eds." } + +FUNCTION {bbl.editor} +{ "ed." } + +FUNCTION {bbl.edby} +{ "edited by" } + +FUNCTION {bbl.edition} +{ "edn." } + +FUNCTION {bbl.volume} +{ "Vol." } + +FUNCTION {bbl.version} +{ "" } + +FUNCTION {bbl.of} +{ "of" } + +FUNCTION {bbl.number} +{ "no." } + +FUNCTION {bbl.nr} +{ "no." } + +FUNCTION {bbl.in} +{ "in" } + +FUNCTION {bbl.pages} +{ "" } + +FUNCTION {bbl.page} +{ "" } + +FUNCTION {bbl.chapter} +{ "Ch." } + +FUNCTION {bbl.techrep} +{ "Tech. Rep." } + +FUNCTION {bbl.mthesis} +{ "Master's thesis" } + +FUNCTION {bbl.phdthesis} +{ "PhD thesis" } + +FUNCTION {bbl.first} +{ "1st" } + +FUNCTION {bbl.second} +{ "2nd" } + +FUNCTION {bbl.third} +{ "3rd" } + +FUNCTION {bbl.fourth} +{ "4th" } + +FUNCTION {bbl.fifth} +{ "5th" } + +FUNCTION {bbl.st} +{ "st" } + +FUNCTION {bbl.nd} +{ "nd" } + +FUNCTION {bbl.rd} +{ "rd" } + +FUNCTION {bbl.th} +{ "th" } + +MACRO {jan} {"Jan."} + +MACRO {feb} {"Feb."} + +MACRO {mar} {"Mar."} + +MACRO {apr} {"Apr."} + +MACRO {may} {"May"} + +MACRO {jun} {"Jun."} + +MACRO {jul} {"Jul."} + +MACRO {aug} {"Aug."} + +MACRO {sep} {"Sep."} + +MACRO {oct} {"Oct."} + +MACRO {nov} {"Nov."} + +MACRO {dec} {"Dec."} + +FUNCTION {eng.ord} +{ duplicate$ "1" swap$ * + #-2 #1 substring$ "1" = + { bbl.th * } + { duplicate$ #-1 #1 substring$ + duplicate$ "1" = + { pop$ bbl.st * } + { duplicate$ "2" = + { pop$ bbl.nd * } + { "3" = + { bbl.rd * } + { bbl.th * } + if$ + } + if$ + } + if$ + } + if$ +} + +INTEGERS { nameptr namesleft numnames numtrunc } + +FUNCTION {format.names} +{ 's := + #0 'numtrunc := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + numnames #5 > + { #3 'numtrunc := } + {} + if$ + { namesleft #0 > } + { s nameptr + "{vv~}{ll}{, jj}{, f.}" format.name$ + 't := + nameptr #1 > + { + nameptr #1 - numtrunc = + { + #1 'namesleft := + "others" 't := + } + {} + if$ + + namesleft #1 > + { ", " * t * } + { + numnames #1 > + { "," * } + 'skip$ + if$ + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " {et~al.}" * + } + { " \& " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.names.ed} +{ 's := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{f.~}{vv~}{ll}{, jj}" + format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " {et~al.}" * + } + { " \& " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {format.key} +{ empty$ + { key field.or.null } + { "" } + if$ +} + +FUNCTION {format.authors} +{ author empty$ + { "" } + { author format.names } + if$ +} + +FUNCTION {format.editors} +{ editor empty$ + { "" } + { editor format.names + editor num.names$ #1 > + { ", " * bbl.editors * } + { ", " * bbl.editor * } + if$ + } + if$ +} + +FUNCTION {format.in.editors} +{ editor empty$ + { "" } + { editor format.names.ed + } + if$ +} + + + +FUNCTION {format.title} +{ title empty$ + { "" } + { title add.comma remove.irrelevant.period.comma "title" bibinfo.check } + if$ +} + +FUNCTION {format.title.misc} +{ title empty$ + { "" } + { title add.comma remove.irrelevant.period.comma } + if$ +} + +FUNCTION {format.full.names} +{'s := + #1 'nameptr := + s num.names$ 'numnames := + numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv~}{ll}" format.name$ + 't := + nameptr #1 > + { + namesleft #1 > + { ", " * t * } + { + numnames #2 > + { "," * } + 'skip$ + if$ + s nameptr "{ll}" format.name$ duplicate$ "others" = + { 't := } + { pop$ } + if$ + t "others" = + { + " {et~al.}" * + } + { " \& " * t * } + if$ + } + if$ + } + 't + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ +} + +FUNCTION {author.editor.key.full} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {author.key.full} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.full.names } + if$ +} + +FUNCTION {editor.key.full} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.full.names } + if$ +} + +FUNCTION {make.full.names} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.full + { type$ "proceedings" = + 'editor.key.full + 'author.key.full + if$ + } + if$ +} + +FUNCTION {output.bibitem} +{ newline$ + "% type= " write$ type$ write$ + newline$ + "\bibitem[{" write$ + label write$ + ")" make.full.names duplicate$ short.list = + { pop$ } + { * } + if$ + "}]{" * write$ + cite$ write$ + "}" write$ + newline$ + "" + before.all 'output.state := +} + + +FUNCTION {format.url} +{ url empty$ + { "" } + { new.block "\url{" url * "}" * } + if$ +} + +FUNCTION {format.eprint} +{ eprint empty$ + { "" } + { archivePrefix empty$ + { "" } + { archivePrefix "arXiv" = + {new.block "\doarXiv{" eprint * "}" * } + {new.block "\doeprint{" eprint * "}" * } + if$} + if$ + } + if$ +} + +% Formats a persistent identifier (PID) +% (typically a DOI or an eprint id) +% You can easily swap the order of which PID +% gets picked +% + +FUNCTION {format.doi} +{ doi empty$ + { "" } + { "\dodoi{" doi * "}" * } + if$ +} + +FUNCTION {format.pid} +{ doi empty$ +{eprint empty$ + { url empty$ + { "" } + { format.url } + if$} + { format.eprint } + if$} + { format.doi } + if$ +} + +FUNCTION {n.dashify} +{ + 't := + "" + { t empty$ not } + { t #1 #1 substring$ "-" = + { t #1 #2 substring$ "--" = not + { "--" * + t #2 global.max$ substring$ 't := + } + { { t #1 #1 substring$ "-" = } + { "-" * + t #2 global.max$ substring$ 't := + } + while$ + } + if$ + } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + if$ + } + while$ +} + +FUNCTION {word.in} +{ bbl.in + " " * } + +FUNCTION {format.date} +{ year duplicate$ empty$ + { "empty year in " cite$ * "; set to ????" * warning$ + pop$ "????" } + 'skip$ + if$ + extra.label * + before.all 'output.state := + after.sentence 'output.state := +} + +FUNCTION {format.btitle} +{ title +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #3 < + { "~" } + { " " } + if$ + swap$ * * +} + +FUNCTION {either.or.check} +{ empty$ + 'pop$ + { "can't use both " swap$ * " fields in " * cite$ * warning$ } + if$ +} + +FUNCTION {format.bvolume} +{ volume empty$ + { "" } + { bbl.volume volume tie.or.space.connect + series empty$ + 'skip$ + { bbl.of space.word * series emphasize * } + if$ + "volume and number" number either.or.check + } + if$ +} + +FUNCTION {format.number.series} +{ volume empty$ + { number empty$ + { series field.or.null } + { output.state mid.sentence = + { bbl.number } + { bbl.number capitalize } + if$ + number tie.or.space.connect + series empty$ + { "there's a number but no series in " cite$ * warning$ } + { bbl.in space.word * series * } + if$ + } + if$ + } + { "" } + if$ +} + +FUNCTION {is.num} +{ chr.to.int$ + duplicate$ "0" chr.to.int$ < not + swap$ "9" chr.to.int$ > not and +} + +FUNCTION {extract.num} +{ duplicate$ 't := + "" 's := + { t empty$ not } + { t #1 #1 substring$ + t #2 global.max$ substring$ 't := + duplicate$ is.num + { s swap$ * 's := } + { pop$ "" 't := } + if$ + } + while$ + s empty$ + 'skip$ + { pop$ s } + if$ +} + +FUNCTION {convert.edition} +{ edition extract.num "l" change.case$ 's := + s "first" = s "1" = or + { bbl.first 't := } + { s "second" = s "2" = or + { bbl.second 't := } + { s "third" = s "3" = or + { bbl.third 't := } + { s "fourth" = s "4" = or + { bbl.fourth 't := } + { s "fifth" = s "5" = or + { bbl.fifth 't := } + { s #1 #1 substring$ is.num + { s eng.ord 't := } + { edition 't := } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + } + if$ + t +} + +FUNCTION {format.edition} +{ edition empty$ + { "" } + { output.state mid.sentence = + { convert.edition "l" change.case$ " " * bbl.edition * } + { convert.edition "t" change.case$ " " * bbl.edition * } + if$ + } + if$ +} + +INTEGERS { multiresult } + +FUNCTION {multi.page.check} +{ 't := + #0 'multiresult := + { multiresult not + t empty$ not + and + } + { t #1 #1 substring$ + duplicate$ "-" = + swap$ duplicate$ "," = + swap$ "+" = + or or + { #1 'multiresult := } + { t #2 global.max$ substring$ 't := } + if$ + } + while$ + multiresult +} + +FUNCTION {format.pages} +{ pages empty$ + { "" } + { pages multi.page.check +% { bbl.pages pages n.dashify tie.or.space.connect } +% { bbl.page pages tie.or.space.connect } + { pages n.dashify } + { pages } + if$ + } + if$ +} + +FUNCTION {first.page} +{ 't := + "" + { t empty$ not t #1 #1 substring$ "-" = not and } + { t #1 #1 substring$ * + t #2 global.max$ substring$ 't := + } + while$ +} + +FUNCTION {format.journal.pages} +{ pages empty$ + 'skip$ + { duplicate$ empty$ + { pop$ format.pages } + { + ", " * + pages first.page * + } + if$ + } + if$ +} + + +FUNCTION {format.vol.num.pages} +{ volume field.or.null +} + +FUNCTION {format.chapter.pages} +{ chapter empty$ + { "" } + { type empty$ + { bbl.chapter } + { type "l" change.case$ } + if$ + chapter tie.or.space.connect + } + if$ +} + +FUNCTION {format.in.ed.booktitle} +{ booktitle empty$ + { "" } + { editor empty$ + { word.in booktitle emphasize * } + { word.in booktitle emphasize * + ", " * + editor num.names$ #1 > + { bbl.editors } + { bbl.editor } + if$ + * " " * + format.in.editors * + } + if$ + } + if$ +} + +FUNCTION {format.thesis.type} +{ type empty$ + 'skip$ + { pop$ + type "t" change.case$ + } + if$ +} + +FUNCTION {format.tr.number} +{ type empty$ + { bbl.techrep } + 'type + if$ + number empty$ + { "t" change.case$ } + { number tie.or.space.connect } + if$ +} + +FUNCTION {format.article.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} + +FUNCTION {format.book.crossref} +{ volume empty$ + { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ + word.in + } + { bbl.volume volume tie.or.space.connect + bbl.of space.word * + } + if$ + " \cite{" * crossref * "}" * +} + +FUNCTION {format.incoll.inproc.crossref} +{ + word.in + " \cite{" * crossref * "}" * +} + +FUNCTION {format.publisher} +{ publisher empty$ + { "empty publisher in " cite$ * warning$ } + 'skip$ + if$ + "" + address empty$ publisher empty$ and + 'skip$ + { + add.blank "(" * + address empty$ + 'skip$ + { address * } + if$ + publisher empty$ + 'skip$ + { address empty$ + 'skip$ + { ": " * } + if$ + publisher * + } + if$ + ")" * + } + if$ + output +} + +FUNCTION {format.aaspublisher} +{ publisher empty$ + { "empty publisher in " cite$ * warning$ } + 'skip$ + if$ + "" + address empty$ publisher empty$ and + 'skip$ + { + add.blank "" * + address empty$ + 'skip$ + { address * } + if$ + publisher empty$ + 'skip$ + { address empty$ + 'skip$ + { ": " * } + if$ + publisher * + } + if$ + "" * + } + if$ + output +} + + + +STRINGS {oldname} + +FUNCTION {name.or.dash} +{ 's := + oldname empty$ + { s 'oldname := s } + { s oldname = + { "---" } + { s 'oldname := s } + if$ + } + if$ +} + +%%%%%%%% Functions added from astrobib + +FUNCTION {format.edn.btitle} % Title should be on stack. +{ duplicate$ empty$ edition empty$ or + 'skip$ + { ", " * format.edition * } + if$ +} + +FUNCTION {format.ed.booktitle} % The title should be on the stack. +{ duplicate$ empty$ + { "no book title in " cite$ * warning$ "" pop$ } + { editor empty$ + author empty$ or % Empty author means editor already given. + 'format.edn.btitle + { format.edn.btitle ", " * bbl.editor * " " * format.in.editors * } + if$ + } + if$ +} + +FUNCTION {format.full.book.spec} % The title should be on the stack. +{ series empty$ + { format.ed.booktitle + volume empty$ + { number empty$ + 'skip$ + { " there's a number but no series in " cite$ * warning$ + " No." number tie.or.space.connect * } + if$ + } + { ", Vol." volume tie.or.space.connect * + number empty$ + 'skip$ + {"Both volume and number fields in " * cite$ * warning$ } + if$ + } + if$ + } + { volume empty$ + { format.ed.booktitle ", " * series * + number empty$ + 'skip$ + { " No." number tie.or.space.connect * } + if$ + } + { series ", Vol." volume tie.or.space.connect * + ", " * swap$ format.ed.booktitle * + number empty$ + 'skip$ + {"Both volume and number fields in " * cite$ * warning$ } + if$ + } + if$ + } + if$ +} + +%%%%%%% End of functions from astrobib + +FUNCTION {article} +{ output.bibitem + format.authors "author" output.check + author format.key output + % name.or.dash + format.date "year" output.check + format.title "title" output.check + add.blank + crossref missing$ + { journal + "journal" output.check + format.vol.num.pages output + } + { format.article.crossref output.nonnull + format.pages output + } + if$ + pages empty$ + 'skip$ + { format.journal.pages } + if$ + format.pid output + fin.entry +} + +FUNCTION {book} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + %name.or.dash + } + { format.authors output.nonnull + %name.or.dash + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + title format.full.book.spec output +% format.btitle "title" output.check +% crossref missing$ +% { format.bvolume output +% format.number.series output +% format.edition output + format.publisher +% } +% { +% format.book.crossref output.nonnull +% } +% if$ + format.pages output + format.pid output + fin.entry +} + +FUNCTION {booklet} +{ output.bibitem + format.authors output + author format.key output + %name.or.dash + format.date "year" output.check + date.block + format.title "title" output.check + howpublished output + address output + format.pid output + fin.entry +} + +FUNCTION {inbook} +{ output.bibitem + author empty$ + { format.editors "author and editor" output.check + editor format.key output + %name.or.dash + } + { format.authors output.nonnull + %name.or.dash + crossref missing$ + { "author and editor" editor either.or.check } + 'skip$ + if$ + } + if$ + format.date "year" output.check + date.block + title format.full.book.spec output +% format.btitle "title" output.check +% crossref missing$ +% { +% format.bvolume output +% format.chapter.pages "chapter and pages" output.check +% format.number.series output +% format.edition output + format.publisher +% } +% { +% format.chapter.pages "chapter and pages" output.check +% format.book.crossref output.nonnull +% } +% if$ + format.pages "pages" output.check + format.pid output + fin.entry +} + +FUNCTION {incollection} +{ output.bibitem + format.authors "author" output.check + author format.key output + %name.or.dash + format.date "year" output.check + date.block + format.title "title" output.check + add.blank + bbl.in " " * booktitle format.full.book.spec * output +% crossref missing$ +% { format.in.ed.booktitle "booktitle" output.check +% format.bvolume output +% format.number.series output +% format.edition output +% format.chapter.pages output + format.publisher +% } +% { format.incoll.inproc.crossref output.nonnull +% format.chapter.pages output +% } +% if$ + format.pages "pages" output.check + format.pid output + fin.entry +} + +FUNCTION {inproceedings} +{ output.bibitem + format.authors "author" output.check + author format.key output % added + format.date "year" output.check + date.block + format.title "title" output.check + add.blank + bbl.in " " * booktitle format.full.book.spec * output +% crossref missing$ +% { format.in.ed.booktitle "booktitle" output.check +% format.bvolume output +% format.number.series output + publisher empty$ + { organization output + address output + } + { organization output + format.publisher + } + if$ +% } +% { format.incoll.inproc.crossref output.nonnull +% } +% if$ + format.pages output + format.pid output + fin.entry +} + +FUNCTION {conference} { inproceedings } + + +FUNCTION {manual} +{ output.bibitem + format.authors output + author format.key output + %name.or.dash + format.date "year" output.check + date.block + format.btitle "title" output.check + format.edition output + organization output + address output + format.pid output + fin.entry +} + +FUNCTION {mastersthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + %name.or.dash + format.date "year" output.check + date.block +% format.title "title" output.check + bbl.mthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.pid output + fin.entry +} + +FUNCTION {misc} +{output.bibitem + format.authors output + author format.key output + %name.or.dash + format.date "year" output.check + date.block +%% new + format.title.misc output +%% new + version empty$ + 'skip$ + {add.blank bbl.version version * output} + if$ +%% + howpublished output + publisher empty$ + {add.blank} + {format.aaspublisher} + if$ + format.pid output + fin.entry +} + +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + author format.key output + %name.or.dash + format.date "year" output.check + date.block + format.title "title" output.check + add.blank + bbl.phdthesis format.thesis.type output.nonnull + school "school" output.check + address output + format.pid output + fin.entry +} + +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization output + organization format.key output } + { format.editors output } + if$ +% format.editors output +% editor format.key output + %name.or.dash + format.date "year" output.check + date.block + title format.full.book.spec output +% format.btitle "title" output.check +% format.bvolume output +% format.number.series output + publisher empty$ not % No need for warning if no pub. + { format.publisher } + { editor empty$ % For empty editor, organization was already given. + 'skip$ + { organization output } + if$ + address output + } + if$ +% address output +% organization output +% publisher output + format.pages output + format.pid output + fin.entry +} + +FUNCTION {techreport} +{ output.bibitem + format.authors "author" output.check + author format.key output + %name.or.dash + format.date "year" output.check + date.block + format.title.misc "title" output.check + add.blank + format.tr.number output.nonnull + institution "institution" output.check + address output + format.pid output + fin.entry +} + +FUNCTION {unpublished} +{ output.bibitem + format.authors "author" output.check + author format.key output + %name.or.dash + format.date "year" output.check + date.block + format.title "title" output.check + add.blank + format.pid output + fin.entry +} + +FUNCTION {default.type} { misc } + +READ + +FUNCTION {sortify} +{ purify$ + "l" change.case$ +} + +INTEGERS { len } + +FUNCTION {chop.word} +{ 's := + 'len := + s #1 len substring$ = + { s len #1 + global.max$ substring$ } + 's + if$ +} + +STRINGS {z} + + +FUNCTION {first.initial} +{ 'z := + "" + { z empty$ not z #1 #1 substring$ "." = not and } + { z #1 #1 substring$ * + z #2 global.max$ substring$ 'z := + } + while$ + z empty$ + 'skip$ + { add.period$ "~" * } + if$ +} + + +FUNCTION {forname.format.string} +{ "{f.}" } + +FUNCTION {surname.format.string} +{ "{vv~}{ll}" } + + +FUNCTION {jnrname.format.string} +{ "{, jj}" } + +INTEGERS { labnameptr } + +FUNCTION {format.lab.names} +{ 's := + #1 'labnameptr := + s labnameptr forname.format.string format.name$ add.blank%first.initial + s labnameptr surname.format.string format.name$ * + s num.names$ duplicate$ + #2 > + { pop$ + " {et~al.}" * + } + { #2 < + 'skip$ + { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = + { + " {et~al.}" * + } + { " \& " * + #2 'labnameptr := + s labnameptr forname.format.string format.name$ add.blank%first.initial + s labnameptr surname.format.string format.name$ * + * } + if$ + } + if$ + } + if$ +} + +FUNCTION {author.key.label} +{ author empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {editor.key.label} +{ editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + 'key + if$ + } + { editor format.lab.names } + if$ +} + +FUNCTION {calc.short.authors} +{ type$ "book" = + type$ "inbook" = + or + 'author.editor.key.label + { type$ "proceedings" = + 'editor.key.label + 'author.key.label + if$ + } + if$ + 'short.list := +} + +FUNCTION {calc.label} +{ calc.short.authors + short.list + "(" + * + year duplicate$ empty$ + { pop$ "????" } + 'skip$ + if$ + * + 'label := +} + +FUNCTION {sort.format.names} +{ 's := + #1 'nameptr := + "" + s num.names$ 'numnames := + numnames #8 > + { s nameptr + "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" + format.name$ 't := + t sortify * + " " * + "zzzzz" * + } + { numnames 'namesleft := + { namesleft #0 > } + { s nameptr + "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" + format.name$ 't := + nameptr #1 > + { + " " * + namesleft #1 = t "others" = and + { "zzzzz" * } + { t sortify * } + if$ + } + { t sortify * } + if$ + nameptr #1 + 'nameptr := + namesleft #1 - 'namesleft := + } + while$ + } + if$ +} + +FUNCTION {sort.format.title} +{ 't := + "A " #2 + "An " #3 + "The " #4 t chop.word + chop.word + chop.word + sortify + #1 global.max$ substring$ +} + +FUNCTION {author.sort} +{ author empty$ + { key empty$ + { "to sort, need author or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {author.editor.sort} +{ author empty$ + { editor empty$ + { key empty$ + { "to sort, need author, editor, or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ + } + { author sort.format.names } + if$ +} + +FUNCTION {editor.sort} +{ editor empty$ + { key empty$ + { "to sort, need editor or key in " cite$ * warning$ + "" + } + { key sortify } + if$ + } + { editor sort.format.names } + if$ +} + +FUNCTION {presort} +{ calc.label + label sortify + " " + * + type$ "book" = + type$ "inbook" = + or + 'author.editor.sort + { type$ "proceedings" = + 'editor.sort + 'author.sort + if$ + } + if$ + #1 entry.max$ substring$ + 'sort.label := + sort.label + * + " " + * +%% August 2016 +%% commenting out this combination gets the cites right but references wrong +%% title field.or.null +%% sort.format.title +%% * +%% +%% with only this line on, we get cites right but references wrong + sort.format.title + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {presort} + +SORT + +STRINGS { last.label next.extra } + +INTEGERS { last.extra.num number.label } + +FUNCTION {initialize.extra.label.stuff} +{ #0 int.to.chr$ 'last.label := + "" 'next.extra := + #0 'last.extra.num := + #0 'number.label := +} + +FUNCTION {forward.pass} +{ last.label label = + { last.extra.num #1 + 'last.extra.num := + last.extra.num int.to.chr$ 'extra.label := + } + { "a" chr.to.int$ 'last.extra.num := + "" 'extra.label := + label 'last.label := + } + if$ + number.label #1 + 'number.label := +} + +FUNCTION {reverse.pass} +{ next.extra "b" = + { "a" 'extra.label := } + 'skip$ + if$ + extra.label 'next.extra := + extra.label + duplicate$ empty$ + 'skip$ + { "{\natexlab{" swap$ * "}}" * } + if$ + 'extra.label := + label extra.label * 'label := +} + +EXECUTE {initialize.extra.label.stuff} + +ITERATE {forward.pass} + +REVERSE {reverse.pass} + +FUNCTION {bib.sort.order} +{ sort.label + " " + * + year field.or.null sortify + * + " " + * +%% Commented out August 2016, so that multiple indentical author/year +%% combinations are entered in the order that \cite{}s are found in text. +% title field.or.null +% sort.format.title +% * + #1 entry.max$ substring$ + 'sort.key$ := +} + +ITERATE {bib.sort.order} + +SORT + +FUNCTION {begin.bib} +{ preamble$ empty$ + 'skip$ + { preamble$ write$ newline$ } + if$ + "\begin{thebibliography}{}" + write$ newline$ + "\expandafter\ifx\csname natexlab\endcsname\relax\def\natexlab#1{#1}\fi" + write$ newline$ + "\providecommand{\url}[1]{\href{#1}{#1}}" + write$ newline$ + "\providecommand{\dodoi}[1]{doi:~\href{http://doi.org/#1}{\nolinkurl{#1}}}" + write$ newline$ + "\providecommand{\doeprint}[1]{\href{http://ascl.net/#1}{\nolinkurl{http://ascl.net/#1}}}" + write$ newline$ + "\providecommand{\doarXiv}[1]{\href{https://arxiv.org/abs/#1}{\nolinkurl{https://arxiv.org/abs/#1}}}" + write$ newline$ +} + + +EXECUTE {begin.bib} + +EXECUTE {init.state.consts} + +ITERATE {call.type$} + +FUNCTION {end.bib} +{ newline$ + "\end{thebibliography}" write$ newline$ +} + +EXECUTE {end.bib} +%% End of customized bst file +%% +%% End of file `aasjournal.bst'. diff --git a/aastex/aastex701.cls b/aastex/aastex701.cls new file mode 100644 index 0000000..35127b0 --- /dev/null +++ b/aastex/aastex701.cls @@ -0,0 +1,13828 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% AASTEX701.cls %% +%% May, 2025 %% +%% %% +%% Copyright 2025 American Astronomical Society %% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% +\def\currversion{7} +% +%% +%% These files are distributed +%% WITHOUT ANY WARRANTY; without even the implied warranty of +%% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. +%% +%% \CharacterTable +%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +%% Digits \0\1\2\3\4\5\6\7\8\9 +%% Exclamation \! Double quote \" Hash (number) \# +%% Dollar \$ Percent \% Ampersand \& +%% Acute accent \' Left paren \( Right paren \) +%% Asterisk \* Plus \+ Comma \, +%% Minus \- Point \. Solidus \/ +%% Colon \: Semicolon \; Less than \< +%% Equals \= Greater than \> Question mark \? +%% Commercial at \@ Left bracket \[ Backslash \\ +%% Right bracket \] Circumflex \^ Underscore \_ +%% Grave accent \` Left brace \{ Vertical bar \| +%% Right brace \} Tilde \~}% +%% +%%% date = "9/19/2016", +%%% author = "Amy Hendrickson (mailto:amyh@texnology.com)" +%%% including +%%% 1) code from emulateapj.cls, version 01/23/15(marked below) +%%% written by Alexey Vikhlinin, which relies on RevTeX4-1 +%%% for much functionality; +%%% 2) some code from aastex (marked below) +%%% 3) Original work by Amy Hendrickson (marked below) for +%%% extensive table tools, including easy decimal entry and splitting +%%% tables horizontally into 2 or 3 pieces, for tabular and deluxetable +%%% environments; rotate tables; gridlines for use in positioning figures, +%%% track changes. + +%%% This work may be distributed and/or modified under the +%%% conditions of the LaTeX Project Public License, either version 1.3c +%%% of this license or (at your option) any later version. +%%% The latest version of this license is in +%%% http://www.latex-project.org/lppl.txt +%%% and version 1.3 or later is part of all distributions of LaTeX +%%% version 2005/12/01 or later. +% +%%% This work has the LPPL maintenance status `maintained'. +% +%%% The Current Maintainer of this work is Greg Schwarz +%%% This work consists of the file aastex.cls +% +%%% copyright = "Copyright (C) 2016--2020 American Astronomical Society +%%% +%%% This work may be distributed and/or modified under the +%%% conditions of the LaTeX Project Public License, either version 1.3 +%%% of this license or (at your option) any later version. +%%% The latest version of this license is in +%%% http://www.latex-project.org/lppl.txt +%%% and version 1.3 or later is part of all distributions of LaTeX +%%% version 2003/12/01 or later. +%%% +%%% This work has the LPPL maintenance status "maintained". +%%% +%%% The Current Maintainer of this work is the American Astronomical Society. +%%% +%%% This work consists of all files listed in the document README. +%%% +%%% address = "American Astronomical Society +%%% USA", +%%% telephone = "+1 ???", +%%% FAX = "", +%%% email = "aastex-help@aas.org", +%%% codetable = "ISO/ASCII", +%%% keywords = "latex, AAS, journal", +%%% supported = "yes", +%%% abstract = "formatter for AAS journal submissions", +%%% } +%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% +%%% date = "04/27/2024", +%%% author = "Aptara Technology Team" including +%%% 1) Based on aastex631.cls, version 01/23/15(marked below) +%%% written by Amy Hendrickson, which relies on RevTeX4-1 +%%% for much functionality; +%%% 2) To support the existing functionalities utilized the RevTeX4-2 macros +%%% +\ProvidesClass{aastex7}%%% + [2025/05/09 Version 7.0.1/AAS markup document class]% +{} +\ClassInfo{aastex}{% +^^J^^J + Original \protect\LaTeX2.09 style + by Chris Biemesderfer (chris@seagoat.com). +^^J + Adapted to \protect\LaTeXe\space + by A. Ogawa (ogawa@teleport.com)% +^^J +emulateapj.cls included, Copyright 2000-2015 Alexey Vikhlinin +^^J +Rewrite and update of emulateapj.cls, +revised and enhanced with table macros, gridlines, draft watermark,^^J +track changes, new `modern' style and much more, by Amy Hendrickson,% +^^J + (amyh@texnology.com, http://www.texnology.com) +^^J +^^J +}% + +\let\class@name\@gtempa + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% aastex.cls version 2.0 is a based on emulateapj.cls, version January 23, 2015, +%% and an older version of aastex.cls, with many additional functionalities. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Options. Document style options, and additional feature options. + +% These are the General document style options, 6 choices + +% manuscript : onecolumn, doublespace, 12pt fonts + +%% Preprints are like manuscript, except they are single spaced. +% preprint : onecolumn, single space, 12pt fonts +% preprint2 : twocolumn, single space, 12pt fonts + +%% Modern is new design developed by David Hogg and Daniel Foreman-Mackey +% modern : one column, single space, 12pt fonts, more stylish + +% twocolumn : a two column article, single space, 10pt fonts + +% Default document style option +% onecolumn : a one column article; single space, 10pt fonts + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Additional feature options: +%% +%% twocolappendix : make 2 column appendix // produces error message. +%% onecolappendix : make 1 column appendix is the default. // not needed because it is the default +%% astrosymb : Loads Astrosymb font and define \astro commands. +%% tighten : Makes baselineskip slightly smaller, only works with twocolumn option. +%% author can also use the commands \tighten, or \singlespace or \doublespace in the body of their article +%% to get this change to the baselineskip +%% times : uses times font as the default +%% linenumbers : turn on lineno package. +%% trackchanges : required to see the revision mark up and print output +%% letteredappendix: (was numbered appendix) Not needed because it is the default, will label appendix sections A, B, ... +%% Legacy command, will produce same results as lettered appendix, since we don't want more +%% than one `section 1' in article: will cause problems for cross referencing. +%% +%% anonymous : to not list authors/affiliations be listed +%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% +%% +\newif\iftwelvepoint +\newif\ifmodern +\newif\ifdoublespace +\newif\if@two@col +\newif\ifonecolstyle +\newif\ifpreprinttwo +\newif\if@two@col@app +\newif\iflongauthor +\newif\iflongbib +\newif\ifresetfootnote +\newif\ifletteredappendix +\newif\if@number@appendix@floats + + +\DeclareOption{twocolappendix}{\@two@col@apptrue} +\DeclareOption{onecolappendix}{\@two@col@appfalse}%% this is default +\DeclareOption{longauthor}{\global\longauthortrue\ExecuteOptions{unsortedaddress}} +\DeclareOption{longbib}{\global\longbibtrue} +\DeclareOption{resetfootnote}{\global\resetfootnotetrue} +\DeclareOption{astrosymb}{ + \def\astro#1{\leavevmode\hbox{\astro@font#1}}% + \def\load@astro@font{% + \iftwelvepoint + \font\astro@font=astrosym at 8pt + \else + \font\astro@font=astrosym at 7pt + \fi + }% + \AtBeginDocument{\load@astro@font} +} +\DeclareOption{letteredappendix}{\global\letteredappendixtrue + \def\AppendixApjSectionMarkInTitle#1{#1.\ } +} +\DeclareOption{numberedappendix}{\global\letteredappendixtrue + \def\AppendixApjSectionMarkInTitle#1{#1.\ } +} + +\DeclareOption{appendixfloats}{\@number@appendix@floatstrue} + + +%% Default definition for \astro, in case astrosymb option has not +%% been used: +\def\astro#1{\@latex@error{^^J^^J Please use class option `astrosymb' to +access fonts for the \string\astro\space command +^^J^^J +}\@ehc\stop} + +\newlength{\bibbaselineskip}\setlength{\bibbaselineskip}{3.075mm} +\def\apjsecfont{\normalsize} +\def\secnum@size{\small} +\def\subsecnum@size{\normalsize} + +\def\AppendixApjSectionMarkInTitle#1{\relax} + + +%%%%%%%%%%%%% +%% This option changes the baselineskips in the definitions of \normalsize etc +%% to make them a bit smaller. +\newif\iftighten +\DeclareOption{tighten}{\global\tightentrue} + +\newif\iftimes +\DeclareOption{times}{\global\timestrue} + +\newif\ifnumlines +\DeclareOption{linenumbers}{\global\numlinestrue} + +\newif\iftrack +\DeclareOption{trackchanges}{\global\tracktrue} + +\newif\ifanonymous +\DeclareOption{anonymous}{\global\anonymoustrue} + +%%%%%%%%%%%%% +% + +\iftimes + \usepackage{times} +\fi + +%%%%%%%%%%%%% + +\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 + +\def\class@err#1{\ClassError{\class@name}{#1}\@eha}% +\def\class@warn#1{\ClassWarningNoLine{\class@name}{#1}}% +\def\class@info#1{\ClassInfo{\class@name}{#1}}% + +\def\obsolete@command#1{% + \class@warn@end{Command \string#1\space is obsolete.^^JPlease remove from your document}% + \global\let#1\@empty + #1% +}% +\def\replace@command#1#2{% + \class@warn@end{Command \string#1\space is obsolete;^^JUse \string#2\space instead}% + \global\let#1#2% + #1% +}% +\def\replace@environment#1#2{% + \class@warn@end{Environment #1 is obsolete;^^JUse #2 instead}% + \glet@environment{#1}{#2}% + \@nameuse{#1}% +}% +\def\incompatible@package#1{% + \@ifpackageloaded{#1}{% + \def\@tempa{I cannot continue. You must remove the \string\usepackage\ statement that caused that package to be loaded.}% + \ClassError{\class@name}{The #1 package cannot be used with \class@name}% + \@tempa\stop + }{% + \class@info{#1 was not loaded (OK!)}% + }% +}% +\def\class@warn@end#1{% + \gappdef\class@enddocumenthook{\class@warn{#1}}% +}% +\ifx\undefined\class@name + \def\class@name{ltxutil}% + \class@warn{You should define the class name before reading in this package. Using default}% +\fi +\def\t@{to}% +\dimendef\dimen@iii\thr@@ +\def\halignt@{\halign\t@}% +\chardef\f@ur=4\relax +\chardef\cat@letter=11\relax +\chardef\other=12\relax +\def\let@environment#1#2{% + \expandafter\let + \csname#1\expandafter\endcsname\csname#2\endcsname + \expandafter\let + \csname end#1\expandafter\endcsname\csname end#2\endcsname +}% +\def\glet@environment#1#2{% + \global\expandafter\let + \csname#1\expandafter\endcsname\csname#2\endcsname + \global\expandafter\let + \csname end#1\expandafter\endcsname\csname end#2\endcsname +}% +\newcommand\tracingplain{% + \tracingonline\z@\tracingcommands\z@\tracingstats\z@ + \tracingpages\z@\tracingoutput\z@\tracinglostchars\@ne + \tracingmacros\z@\tracingparagraphs\z@\tracingrestores\z@ + \showboxbreadth5\showboxdepth3\relax %\errorstopmode + }% +\newcommand\traceoutput{% + \appdef\@resetactivechars{\showoutput}% +}% +\newcommand\say[1]{\typeout{<\noexpand#1=\meaning#1>}}% +\newcommand\saythe[1]{\typeout{<\noexpand#1=\the#1>}}% +\def\fullinterlineskip{\prevdepth\z@}% +\countdef\count@i\@ne +\countdef\count@ii\tw@ +\long\def\prepdef#1#2{% + \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}% + \toks@ii{#2}% + \edef#1{\the\toks@ii\the\toks@}% +}% +\long\def\appdef#1#2{% + \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}% + \toks@ii{#2}% + \edef#1{\the\toks@\the\toks@ii}% +}% +\long\def\gappdef#1#2{% + \@ifxundefined#1{\toks@{}}{\toks@\expandafter{#1}}% + \toks@ii{#2}% + \global\edef#1{\the\toks@\the\toks@ii}% +}% +\long\def\appdef@val#1#2{% + \appdef#1{{#2}}% +}% +\long\def\appdef@e#1#2{% + \expandafter\appdef + \expandafter#1% + \expandafter{#2}% +}% +\long\def\appdef@eval#1#2{% + \expandafter\appdef@val + \expandafter#1% + \expandafter{#2}% +}% +\toksdef\toks@ii=\tw@ +\long\def\@ifxundefined#1{\@ifx{\undefined#1}}% +\long\def\@ifnotrelax#1#2#3{\@ifx{\relax#1}{#3}{#2}}% +\long\def\@argswap#1#2{#2#1}% +\long\def\@argswap@val#1#2{#2{#1}}% +\def\@ifxundefined@cs#1{\expandafter\@ifx\expandafter{\csname#1\endcsname\relax}}% +\ifx\IfFormatAtLeastTF\undefined + \def\rvtx@ifformat@geq{\@ifl@t@r\fmtversion}% +\else + \let\rvtx@ifformat@geq\IfFormatAtLeastTF +\fi +\def\@boolean#1#2{% + \long\def#1{% + #2% \if + \expandafter\true@sw + \else + \expandafter\false@sw + \fi + }% +}% +\def\@boole@def#1#{\@boolean{#1}}% Implicit #2 +\def\@booleantrue#1{\let#1\true@sw}% +\def\@booleanfalse#1{\let#1\false@sw}% +\@boole@def\@ifx#1{\ifx#1}% +\@boole@def\@ifx@empty#1{\ifx\@empty#1}% +\@boole@def\@if@empty#1{\if!#1!}% +\def\@if@sw#1#2{#1\expandafter\true@sw\else\expandafter\false@sw#2}% +\@boole@def\@ifdim#1{\ifdim#1}% +\@boole@def\@ifeof#1{\ifeof#1}% +\@boole@def\@ifhbox#1{\ifhbox#1}% +\@boole@def\@ifhmode{\ifhmode}% +\@boole@def\@ifinner{\ifinner}% +\@boole@def\@ifmmode{\ifmmode}% +\@boole@def\@ifnum#1{\ifnum#1}% +\@boole@def\@ifodd#1{\ifodd#1}% +\@boole@def\@ifvbox#1{\ifvbox#1}% +\@boole@def\@ifvmode{\ifvmode}% +\@boole@def\@ifvoid#1{\ifvoid#1}% +\long\def\true@sw#1#2{#1}% +\long\def\false@sw#1#2{#2}% +\long\def\loopuntil#1{#1{}{\loopuntil{#1}}}% +\long\def\loopwhile#1{#1{\loopwhile{#1}}{}}% +\def\@provide#1{% + \@ifx{\undefined#1}{\true@sw}{\@ifx{\relax#1}{\true@sw}{\false@sw}}% + {\def#1}{\def\j@nk}% +}% +\rvtx@ifformat@geq{2020/10/01}% + {% + \AddToHook{begindocument/before}{\document@inithook}% + }{% + \prepdef\document{% + \endgroup + \document@inithook + \true@sw{}% + }% + } +\let\document@inithook\@empty +\appdef\document@inithook{% + \AtBeginDocument{\class@documenthook}% +}% +\AtEndDocument{% + \class@enddocumenthook +}% +\let\class@documenthook\@empty +\let\class@enddocumenthook\@empty +\rvtx@ifformat@geq{2020/10/01}{% + % +}{% + % +\def\enddocument{% + \let\AtEndDocument\@firstofone + \@enddocumenthook + \@checkend{document}% + \clear@document + \check@aux + \deadcycles\z@ + \@@end +}% +\def\check@aux{\do@check@aux}% +\def\do@check@aux{% + \@if@sw\if@filesw\fi{% + \immediate\closeout\@mainaux + \let\@setckpt\@gobbletwo + \let\@newl@bel\@testdef + \@tempswafalse + \makeatletter + \input\jobname.aux\relax + }{}% + \@dofilelist + \@ifdim{\font@submax >\fontsubfuzz\relax}{% + \@font@warning{% + Size substitutions with differences\MessageBreak + up to \font@submax\space have occured.\@gobbletwo + }% + }{}% + \@defaultsubs + \@refundefined + \@if@sw\if@filesw\fi{% + \@ifx{\@multiplelabels\relax}{% + \@if@sw\if@tempswa\fi{% + \@latex@warning@no@line{% + Label(s) may have changed. + Rerun to get cross-references right% + }% + }{}% + }{% + \@multiplelabels + }% + }{}% +}% +} +\rvtx@ifformat@geq{2020/10/01}{% + \AddToHook{enddocument}{\rvtx@enddocument@patch{}}% +}{} +\protected\long\def\rvtx@enddocument@patch#1#2\@checkend#3{% + \begingroup + \edef\x{\detokenize{#3}}% + \edef\y{\detokenize{document}}% + \expandafter\endgroup + \ifx\x\y + \expandafter\rvtx@enddocument@patch@end + \else + \expandafter\rvtx@enddocument@patch@more + \fi + {#1#2}{#3}} +\def\rvtx@enddocument@patch@more#1#2{% + \rvtx@enddocument@patch{#1\@checkend{#2}}} +\long\def\rvtx@enddocument@patch@end#1#2\clearpage#3\endgroup{% + \def\do@check@aux{#3\endgroup}% + #1% + \@checkend{#2}% + \clear@document + \check@aux} +\def\check@aux{\do@check@aux}% +\def\clear@document{% + \clearpage + \do@output@cclv{% + \Call@AfterLastShipout + }% +}% +\appdef\class@documenthook{% + \providecommand\Call@AfterLastShipout{}% +}% +\def\flushing{% + \let\\\@normalcr + \leftskip\z@skip + \rightskip\z@skip + \@rightskip\z@skip + \parfillskip\@flushglue +}% +\expandafter\DeclareRobustCommand\expandafter\@centercr\expandafter{\@centercr}% +\def\rvtx@tmpa#1{% +\def\eqnarray@LaTeX{% + \stepcounter{equation}% + \def\@currentlabel{\p@equation\theequation}% + #1% \def\@currentcounter{equation} on newer LaTeX + \global\@eqnswtrue + \m@th + \global\@eqcnt\z@ + \tabskip\@centering + \let\\\@eqncr + $$\everycr{}\halign to\displaywidth\bgroup + \hskip\@centering$\displaystyle\tabskip\z@skip{####}$\@eqnsel + &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${####}$\hfil + &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep + $\displaystyle{####}$\hfil\tabskip\@centering + &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss####\egroup + \tabskip\z@skip + \cr +}% +\long\def\eqnarray@fleqn@fixed{% + \stepcounter{equation}\def\@currentlabel{\p@equation\theequation}% + #1% \def\@currentcounter{equation} on newer LaTeX + \global\@eqnswtrue\m@th\global\@eqcnt\z@ + \tabskip\ltx@mathindent + \let\\=\@eqncr + \setlength\abovedisplayskip{\topsep}% + \ifvmode\addtolength\abovedisplayskip{\partopsep}\fi + \addtolength\abovedisplayskip{\parskip}% + \setlength\belowdisplayskip{\abovedisplayskip}% + \setlength\belowdisplayshortskip{\abovedisplayskip}% + \setlength\abovedisplayshortskip{\abovedisplayskip}% + $$% + \everycr{}% + \halignt@\linewidth\bgroup + \hskip\@centering$\displaystyle\tabskip\z@skip{####}$\@eqnsel + &\global\@eqcnt\@ne + \hskip\tw@\eqncolsep + \hfil${{}####{}}$\hfil + &\global\@eqcnt\tw@ + \hskip\tw@\eqncolsep + $\displaystyle{####}$\hfil\tabskip\@centering + &\global\@eqcnt\thr@@\hb@xt@\z@\bgroup\hss####\egroup + \tabskip\z@skip + \cr +}% +} +\rvtx@tmpa{}% older LaTeX +\@ifx{\eqnarray\eqnarray@LaTeX}{\@firstofone} + {% + \rvtx@tmpa{\def\@currentcounter{equation}}% newer LaTeX + \@ifx{\eqnarray\eqnarray@LaTeX}{\@firstofone} + {\@gobble} + } +{% + \class@info{Repairing broken LaTeX eqnarray}% + \let\eqnarray\eqnarray@fleqn@fixed + \newlength\eqncolsep + \setlength\eqncolsep\z@ + \let\eqnarray@LaTeX\relax + \let\eqnarray@fleqn@fixed\relax +}% +\def\ltx@mathindent{\@centering}% +\def\set@eqnarray@skips{}% +\def\prep@math{% + \@ifvmode{\everypar{{\setbox\z@\lastbox}}}{}% +}% +\def\prep@math@patch{% + \prepdef\equation{\prep@math}% + \prepdef\eqnarray{\prep@math}% +}% +\appdef\class@documenthook{% + \let\footnote@latex\footnote + \@ifpackageloaded{hyperref}{}{% + \let\H@@footnotetext\@footnotetext + \def\@footnotetext{\H@@footnotetext}% + \let\H@@mpfootnotetext\@mpfootnotetext + \def\@mpfootnotetext{\H@@mpfootnotetext}% + }% +}% +\def\ltx@make@current@footnote#1#2{% + \csname c@#1\endcsname#2\relax + \protected@edef\Hy@footnote@currentHref{\@currentHref-#1.\csname the#1\endcsname}% +}% +\def\thempfootnote@latex{{\itshape \@alph \c@mpfootnote }}% +\def\ltx@thempfootnote{\@alph\c@mpfootnote}% +\@ifx{\thempfootnote\thempfootnote@latex}{% + \class@info{Repairing hyperref-unfriendly LaTeX definition of \string\mpfootnote}% + \let\thempfootnote\ltx@thempfootnote +}{}% + +\long\def\@footnotetext{% + \insert\footins\bgroup + \make@footnotetext +}% +\long\def\@mpfootnotetext{% + \minipagefootnote@pick + \make@footnotetext +}% +\long\def\make@footnotetext#1{% + \set@footnotefont + \set@footnotewidth + \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@\@mpfn\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1% + \@finalstrut\strutbox\vadjust{\vskip\z@skip}% + }% + \color@endgroup + \minipagefootnote@drop +}% +\def\set@footnotefont{% + \reset@font\footnotesize + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth\dp\strutbox +}% +\def\set@footnotewidth{\set@footnotewidth@one}% +\def\robustify@contents{% + \let \label \@gobble + \let \index \@gobble + \let \glossary \@gobble + \let\footnote \@gobble + \def\({\string\(}% + \def\){\string\)}% + \def\\{\string\\}% +}% +\long\def\addtocontents#1#2{% + \protected@write\@auxout{\robustify@contents}{\string \@writefile {#1}{#2}}% +}% +\def\addcontentsline#1#2#3{% + \addtocontents{#1}{% + \protect\contentsline{#2}{#3}{\thepage}{}% + }% +}% +\def\label#1{% + \@bsphack + \protected@write\@auxout{}{% + \string\newlabel{#1}{{\@currentlabel}{\thepage}{}{}{}}% + }% + \@esphack +}% +\def\ltx@contentsline#1{% + \expandafter\@ifnotrelax\csname l@#1\endcsname{}{% + \expandafter\let\csname l@#1\endcsname\@gobbletwo + }% + \contentsline@latex{#1}% +}% +\appdef\document@inithook{% + \let\contentsline@latex\contentsline + \let\contentsline\ltx@contentsline +}% +\appdef\class@documenthook{% + \prepdef\caption{\minipagefootnote@here}% +}% +\def\minipagefootnote@init{% + \setbox\@mpfootins\box\voidb@x +}% +\def\minipagefootnote@pick{% + \global\setbox\@mpfootins\vbox\bgroup + \unvbox\@mpfootins +}% +\def\minipagefootnote@drop{% + \egroup +}% +\def\minipagefootnote@here{% + \par + \@ifvoid\@mpfootins{}{% + \vskip\skip\@mpfootins + \fullinterlineskip + \@ifinner{% + \vtop{\unvcopy\@mpfootins}% + {\setbox\z@\lastbox}% + }{}% + \unvbox\@mpfootins + }% +}% +\def\minipagefootnote@foot{% + \@ifvoid\@mpfootins{}{% + \insert\footins\bgroup\unvbox\@mpfootins\egroup + }% +}% +\def\endminipage{% + \par + \unskip + \minipagefootnote@here + \@minipagefalse %% added 24 May 89 + \color@endgroup + \egroup + \expandafter\@iiiparbox\@mpargs{\unvbox\@tempboxa}% +}% +\@booleantrue\floats@sw +\let\@xfloat@LaTeX\@xfloat +\def\@xfloat#1[#2]{% + \@xfloat@prep + \@nameuse{fp@proc@#2}% + \floats@sw{\@xfloat@LaTeX{#1}[#2]}{\@xfloat@anchored{#1}[]}% +}% + +\let\ltx@footnote@pop\@empty +\def\@xfloat@anchored#1[#2]{% + \def\@captype{#1}% + \begin@float@pagebreak + \let\end@float\end@float@anchored + \let\end@dblfloat\end@float@anchored + \hsize\columnwidth + \@parboxrestore + \@floatboxreset + \minipagefootnote@init +}% +\def\end@float@anchored{% + \minipagefootnote@here + \par\vskip\z@skip + \par + \end@float@pagebreak +}% +\def\begin@float@pagebreak{\par\addvspace\intextsep}% +\def\end@float@pagebreak{\par\addvspace\intextsep}% + +\def\triggerpar{\leavevmode\@@par}% +\def\oneapage{\def\begin@float@pagebreak{\newpage}\def\end@float@pagebreak{\newpage}}% + +\chardef\@xvi=16\relax +\mathchardef\@twopowerfourteen="4000 +\mathchardef\@twopowertwo="4 +\def\tally@float#1{% + \begingroup + \@tempcnta\count\@currbox + \divide\@tempcnta\@xxxii + \multiply\@tempcnta\@xxxii + \advance\count\@currbox-\@tempcnta + \divide\@tempcnta\@xxxii + \@ifnum{\count\@currbox>\@xvi}{% + \advance\count\@currbox-\@xvi\@booleantrue\@temp@sw + }{% + \@booleanfalse\@temp@sw + }% + \show@box@size@sw{% + \class@info{Float #1 + (\the\@tempcnta)[\@temp@sw{16+}{}\the\count\@currbox]^^J% + (\the\ht\@currbox+\the\dp\@currbox)X\the\wd\@currbox + }% + }{}% + \endgroup + \expandafter\let + \expandafter\@tempa + \csname fbox@\csname ftype@#1\endcsname\endcsname + \@ifnotrelax\@tempa{% + \@ifhbox\@tempa{% + \setbox\@tempboxa\vbox{\unvcopy\@currbox\hrule}% + \dimen@\ht\@tempboxa + \divide\dimen@\@twopowerfourteen + \@ifdim{\wd\@tempboxa<\textwidth}{% + \advance\dimen@\ht\@tempa + \global\ht\@tempa\dimen@ + }{% + \advance\dimen@\dp\@tempa + \global\dp\@tempa\dimen@ + }% + }{}% + }{}% +}% +\def\total@float#1{% + \expandafter\let + \expandafter\@tempa + \csname fbox@\csname ftype@#1\endcsname\endcsname + \@ifnotrelax\@tempa{% + \@ifhbox\@tempa{% + \@tempdima\the\ht\@tempa\divide\@tempdima\@twopowertwo\@tempcnta\@tempdima + \@tempdimb\the\dp\@tempa\divide\@tempdimb\@twopowertwo\@tempcntb\@tempdimb + \class@info{Total #1: Column(\the\@tempcnta pt), Page(\the\@tempcnta pt)}% + }{}% + }{}% +}% +\def\write@float#1{\write@@float{#1}{#1}}% +\def\endwrite@float{\@Esphack}% +\def\write@floats#1{\write@@float{#1*}{#1}}% +\def\endwrite@floats{\@Esphack}% +\def\write@@float#1#2{% + \ifhmode + \@bsphack + \fi + \chardef\@tempc\csname#2write\endcsname + \toks@{\begin{#1}}% + \def\@tempb{#1}% + \expandafter\let\csname end#1\endcsname\endwrite@float + \catcode`\^^M\active + \@makeother\{\@makeother\}\@makeother\% + \write@floatline +}% +\begingroup + \catcode`\[\the\catcode`\{\catcode`\]\the\catcode`\}\@makeother\{\@makeother\}% + \gdef\float@end@tag#1\end{#2}#3\@nul[% + \def\@tempa[#2]% + \@ifx[\@tempa\@tempb][\end[#2]][\write@floatline]% + ]% + \obeylines% + \gdef\write@floatline#1^^M[% + \begingroup% + \newlinechar`\^^M% + \toks@\expandafter[\the\toks@#1]\immediate\write\@tempc[\the\toks@]% + \endgroup% + \toks@[]% + \float@end@tag#1\end{}\@nul% + ]% +\endgroup +\def\@alph#1{\ifcase#1\or a\or b\or c\or d\else\@ialph{#1}\fi} +\def\@ialph#1{\ifcase#1\or \or \or \or \or e\or f\or g\or h\or i\or j\or + k\or l\or m\or n\or o\or p\or q\or r\or s\or t\or u\or v\or w\or x\or + y\or z\or aa\or bb\or cc\or dd\or ee\or ff\or gg\or hh\or ii\or jj\or + kk\or ll\or mm\or nn\or oo\or pp\or qq\or rr\or ss\or tt\or uu\or + vv\or ww\or xx\or yy\or zz\else\@ctrerr\fi} + +\def\init@hyperref{% + \providecommand\phantomsection{}% + \providecommand\hyper@makecurrent[1]{}% + \providecommand\Hy@raisedlink[1]{}% + \providecommand\hyper@anchorstart[1]{}% + \providecommand\hyper@anchorend{}% + \providecommand\hyper@linkstart[2]{}% + \providecommand\hyper@linkend{}% + \providecommand\@currentHref{}% +}% +\let\H@refstepcounter\refstepcounter +\appdef\document@inithook{% + \init@hyperref +}% +\def\sec@upcase#1{\relax{#1}}% +\appdef\document@inithook{% + \@ifpackageloaded{array}{\switch@array}{\switch@tabular}% + \prepdef\endtabular{\endtabular@hook}% + \@provide\endtabular@hook{}% + \prepdef\endarray{\endarray@hook}% + \@provide\endarray@hook{}% + \providecommand\array@hook{}% + \prepdef\@tabular{\tabular@hook}% + \@provide\tabular@hook{}% +}% +\def\switch@tabular{% + \let\@array@sw\@array@sw@array + \@ifx{\@array\@array@LaTeX}{% + \@ifx{\multicolumn\multicolumn@LaTeX}{% + \@ifx{\@tabular\@tabular@LaTeX}{% + \@ifx{\@tabarray\@tabarray@LaTeX}{% + \@ifx{\array\array@LaTeX}{% + \@ifx{\endarray\endarray@LaTeX}{% + \@ifx{\endtabular\endtabular@LaTeX}{% + \@ifx{\@mkpream\@mkpream@LaTeX}{% + \@ifx{\@addamp\@addamp@LaTeX}{% + \@ifx{\@arrayacol\@arrayacol@LaTeX}{% + \@ifx{\@tabacol\@tabacol@LaTeX}{% + \@ifx{\@arrayclassz\@arrayclassz@LaTeX}{% + \@ifx{\@tabclassiv\@tabclassiv@LaTeX}{% + \@ifx{\@arrayclassiv\@arrayclassiv@LaTeX}{% + \@ifx{\@tabclassz\@tabclassz@LaTeX}{% + \@ifx{\@classv\@classv@LaTeX}{% + \@ifx{\hline\hline@LaTeX}{% + \@ifx{\@tabularcr\@tabularcr@LaTeX}{% + \@ifx{\@xtabularcr\@xtabularcr@LaTeX}{% + \@ifx{\@xargarraycr\@xargarraycr@LaTeX}{% + \@ifx{\@yargarraycr\@yargarraycr@LaTeX}{% + \true@sw + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + {% + \class@info{Patching LaTeX tabular.}% + }{% + \class@info{Unrecognized LaTeX tabular. Please update this document class! (Proceeding with fingers crossed.)}% + }% + \let\@array\@array@ltx + \let\multicolumn\multicolumn@ltx + \let\@tabular\@tabular@ltx + \let\@tabarray\@tabarray@ltx + \let\array\array@ltx + \let\endarray\endarray@ltx + \let\endtabular\endtabular@ltx + \let\@mkpream\@mkpream@ltx + \let\@addamp\@addamp@ltx + \let\@arrayacol\@arrayacol@ltx + \let\@tabacol\@tabacol@ltx + \let\@arrayclassz\@arrayclassz@ltx + \let\@tabclassiv\@tabclassiv@ltx + \let\@arrayclassiv\@arrayclassiv@ltx + \let\@tabclassz\@tabclassz@ltx + \let\@classv\@classv@ltx + \let\hline\hline@ltx + \let\@tabularcr\@tabularcr@ltx + \let\@xtabularcr\@xtabularcr@ltx + \let\@xargarraycr\@xargarraycr@ltx + \let\@yargarraycr\@yargarraycr@ltx +}% +\def\switch@array{% + \@ifpackageloaded{colortbl}{\let\switch@array@info\colortbl@message}{\let\switch@array@info\array@message}% + \let\@array@sw\@array@sw@LaTeX + \@ifx{\@array\@array@array}{% + \@ifx{\@tabular\@tabular@array}{% + \@ifx{\@tabarray\@tabarray@array}{% + \@ifx{\array\array@array}{% + \@ifx{\endarray\endarray@array}{% + \@ifx{\endtabular\endtabular@array}{% + \@ifx{\@mkpream\@mkpream@array}{% + \@ifx{\@classx\@classx@array}{% + \@ifx{\insert@column\insert@column@array}{% + \@ifx{\@arraycr\@arraycr@array}{% + \@ifx{\@xarraycr\@xarraycr@array}{% + \@ifx{\@xargarraycr\@xargarraycr@array}{% + \@ifx{\@yargarraycr\@yargarraycr@array}{% + \true@sw + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }{% + \false@sw + }{% + \class@info{Patching array package.}% + }{% + \switch@array@info + }% + \let\@array \@array@array@new + \let\@@array \@array % Cosi fan tutti + \let\@tabular \@tabular@array@new + \let\@tabarray \@tabarray@array@new + \let\array \array@array@new + \let\endarray \endarray@array@new + \let\endtabular\endtabular@array@new + \let\@mkpream \@mkpream@array@new + \let\@classx \@classx@array@new + \let\@arrayacol\@arrayacol@ltx + \let\@tabacol \@tabacol@ltx + \let\insert@column\insert@column@array@new + \expandafter\let\csname endtabular*\endcsname\endtabular % Cosi fan tutti + \let\@arraycr \@arraycr@new + \let\@xarraycr \@xarraycr@new + \let\@xargarraycr\@xargarraycr@new + \let\@yargarraycr\@yargarraycr@new +}% +\def\array@message{% + \class@info{Unrecognized array package. Please update this document class! (Proceeding with fingers crossed.)}% +}% +\def\colortbl@message{% + \class@info{colortbl package is loaded. (Proceeding with fingers crossed.)}% +}% +\def\@array@sw@LaTeX{\@ifx{\\\@tabularcr}}% +\def\@array@sw@array{\@ifx{\d@llarbegin\begingroup}}% +\def\@tabular@LaTeX{% + \leavevmode + \hbox\bgroup$% $ + \let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv + \let\\\@tabularcr + \@tabarray +}% +\def\@tabular@ltx{% + \let\@acoll\@tabacoll + \let\@acolr\@tabacolr + \let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv + \let\\\@tabularcr + \@tabarray +}% +\def\@tabular@array{% + \leavevmode + \hbox\bgroup$% $ + \col@sep\tabcolsep + \let\d@llarbegin\begingroup + \let\d@llarend\endgroup + \@tabarray +}% +\def\@tabular@array@new{% + \let\@acoll\@tabacoll + \let\@acolr\@tabacolr + \let\@acol\@tabacol + \let\d@llarbegin\begingroup + \let\d@llarend\endgroup + \@tabarray +}% +\def\@tabarray@LaTeX{% + \m@th\@ifnextchar[\@array{\@array[c]}% +}% +\def\@tabarray@ltx{% + \m@th\@ifnextchar[\@array{\expandafter\@array\expandafter[\array@default]}% +}% +\def\@tabarray@array{% + \@ifnextchar[{\@@array}{\@@array[c]}% +}% +\def\@tabarray@array@new{% + \@ifnextchar[{\@@array}{\expandafter\@@array\expandafter[\array@default]}% +}% +\newcount\intertabularlinepenalty +\intertabularlinepenalty=100 +\newcount\@tbpen +\appdef\samepage{\intertabularlinepenalty\@M}% +\def\@tabularcr@LaTeX{{\ifnum 0=`}\fi \@ifstar \@xtabularcr \@xtabularcr}% +\def\@tabularcr@ltx{{\ifnum 0=`}\fi \@ifstar {\global \@tbpen \@M \@xtabularcr }{\global \@tbpen \intertabularlinepenalty \@xtabularcr }}% +\def\@xtabularcr@LaTeX{\@ifnextchar [\@argtabularcr {\ifnum 0=`{\fi }\cr }}% +\def\@xtabularcr@ltx{\@ifnextchar [\@argtabularcr {\ifnum 0=`{\fi }\cr \noalign {\penalty \@tbpen }}}% +\def\@xargarraycr@LaTeX#1{\@tempdima #1\advance \@tempdima \dp \@arstrutbox \vrule \@height \z@ \@depth \@tempdima \@width \z@ \cr}% +\def\@xargarraycr@ltx#1{\@tempdima #1\advance \@tempdima \dp \@arstrutbox \vrule \@height \z@ \@depth \@tempdima \@width \z@ \cr \noalign {\penalty \@tbpen }}% +\def\@yargarraycr@LaTeX#1{\cr \noalign {\vskip #1}}% +\def\@yargarraycr@ltx#1{\cr \noalign {\penalty \@tbpen \vskip #1}}% +\def\@arraycr@array{% + \relax + \iffalse{\fi\ifnum 0=`}\fi + \@ifstar \@xarraycr \@xarraycr +}% +\def\@arraycr@new{% + \relax + \iffalse{\fi\ifnum 0=`}\fi + \@ifstar {\global \@tbpen \@M \@xarraycr }{\global \@tbpen \intertabularlinepenalty \@xarraycr }% +}% +\def\@xarraycr@array{% + \@ifnextchar [%] + \@argarraycr {\ifnum 0=`{}\fi\cr}% +}% +\def\@xarraycr@new{% + \@ifnextchar [%] + \@argarraycr {\ifnum 0=`{}\fi\cr \noalign {\penalty \@tbpen }}% +}% +\def\@xargarraycr@array#1{% + \unskip + \@tempdima #1\advance\@tempdima \dp\@arstrutbox + \vrule \@depth\@tempdima \@width\z@ + \cr +}% +\def\@xargarraycr@new#1{% + \unskip + \@tempdima #1\advance\@tempdima \dp\@arstrutbox + \vrule \@depth\@tempdima \@width\z@ + \cr + \noalign {\penalty \@tbpen }% +}% +\def\@yargarraycr@array#1{% + \cr + \noalign{\vskip #1}% +}% +\def\@yargarraycr@new#1{% + \cr + \noalign{\penalty \@tbpen \vskip #1}% +}% +\def\array@LaTeX{% + \let\@acol\@arrayacol + \let\@classz\@arrayclassz + \let\@classiv\@arrayclassiv + \let\\\@arraycr + \let\@halignto\@empty + \@tabarray +}% +\def\array@ltx{% + \@ifmmode{}{\@badmath$}% + \let\@acoll\@arrayacol + \let\@acolr\@arrayacol + \let\@acol\@arrayacol + \let\@classz\@arrayclassz + \let\@classiv\@arrayclassiv + \let\\\@arraycr + \let\@halignto\@empty + \@tabarray +}% +\def\array@array{% + \col@sep\arraycolsep + \def\d@llarbegin{$}\let\d@llarend\d@llarbegin\gdef\@halignto{}% + \@tabarray +} +\def\array@array@new{% + \@ifmmode{}{\@badmath$}% + \let\@acoll\@arrayacol + \let\@acolr\@arrayacol + \let\@acol\@arrayacol + \def\d@llarbegin{$}% + \let\d@llarend\d@llarbegin + \gdef\@halignto{}% + \@tabarray +}% +\def\@array@LaTeX[#1]#2{% + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi\fi + \bgroup + \setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch\ht\strutbox + \@depth\arraystretch \dp\strutbox + \@width\z@}% + \@mkpream{#2}% + \edef\@preamble{% + \ialign \noexpand\@halignto + \bgroup \@arstrut \@preamble \tabskip\z@skip \cr}% + \let\@startpbox\@@startpbox \let\@endpbox\@@endpbox + \let\tabularnewline\\% + \let\par\@empty + \let\@sharp##% + \set@typeset@protect + \lineskip\z@skip\baselineskip\z@skip + \ifhmode \@preamerr\z@ \@@par\fi + \@preamble +}% +\def\@array@ltx[#1]#2{% + \@nameuse{@array@align@#1}% + \set@arstrutbox + \@mkpream{#2}% + \prepdef\@preamble{% + \tabskip\tabmid@skip + \@arstrut + }% + \appdef\@preamble{% + \tabskip\tabright@skip + \cr + \array@row@pre + }% + \let\tabularnewline\\% + \let\par\@empty + \let\@sharp##% + \set@typeset@protect + \lineskip\z@skip\baselineskip\z@skip + \tabskip\tableft@skip\relax + \ifhmode \@preamerr\z@ \@@par\fi + \everycr{}% + \expandafter\halign\expandafter\@halignto\expandafter\bgroup\@preamble +}% +\def\set@arstrutbox{% + \setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch\ht\strutbox + \@depth\arraystretch \dp\strutbox + \@width\z@ + }% +}% +\def\@array@array[#1]#2{% + \@tempdima \ht \strutbox + \advance \@tempdima by\extrarowheight + \setbox \@arstrutbox \hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \begingroup + \@mkpream{#2}% + \xdef\@preamble{\noexpand \ialign \@halignto + \bgroup \@arstrut \@preamble + \tabskip \z@ \cr}% + \endgroup + \@arrayleft + \if #1t\vtop \else \if#1b\vbox \else \vcenter \fi \fi + \bgroup + \let \@sharp ##\let \protect \relax + \lineskip \z@ + \baselineskip \z@ + \m@th + \let\\\@arraycr \let\tabularnewline\\\let\par\@empty \@preamble +}% + +\def\endarray@LaTeX{% + \crcr\egroup\egroup +}% +\def\endarray@ltx{% + \crcr\array@row@pst\egroup\egroup +}% +\def\endarray@array{% + \crcr \egroup \egroup \@arrayright \gdef\@preamble{}% +}% +\def\endarray@array@new{% + \crcr\array@row@pst\egroup\egroup % Same as \endarray@ltx + \@arrayright + \global\let\@preamble\@empty +}% +\def\endtabular@LaTeX{% + \crcr\egroup\egroup $\egroup +}% +\def\endtabular@ltx{% + \endarray +}% +\def\endtabular@array{% + \endarray $\egroup +}% +\def\endtabular@array@new{% + \endarray +}% +\@namedef{endtabular*}{\endtabular}% +\long\def\multicolumn@LaTeX#1#2#3{% + \multispan{#1}\begingroup + \@mkpream{#2}% + \def\@sharp{#3}\set@typeset@protect + \let\@startpbox\@@startpbox\let\@endpbox\@@endpbox + \@arstrut \@preamble\hbox{}\endgroup\ignorespaces +}% +\long\def\multicolumn@ltx#1#2#3{% + \multispan{#1}% + \begingroup + \@mkpream{#2}% + \def\@sharp{#3}% + \set@typeset@protect + %\let\@startpbox\@@startpbox\let\@endpbox\@@endpbox + \@arstrut + \@preamble + \hbox{}% + \endgroup + \ignorespaces +}% +\def\@array@align@t{\leavevmode\vtop\bgroup}% +\def\@array@align@b{\leavevmode\vbox\bgroup}% +\def\@array@align@c{\leavevmode\@ifmmode{\vcenter\bgroup}{$\vcenter\bgroup\aftergroup$\aftergroup\relax}}% +\def\@array@align@v{% + \@ifmmode{% + \@badmath + \vcenter\bgroup + }{% + \@ifinner{% + $\vcenter\bgroup\aftergroup$ + }{% + \@@par\bgroup + }% + }% +}% +\def\array@default{c}% +\def\array@row@rst{% + \let\@array@align@v\@array@align@c +}% +\def\array@row@pre{}% +\def\array@row@pst{}% + +\def\hline@LaTeX{% + \noalign{\ifnum0=`}\fi\hrule \@height \arrayrulewidth \futurelet + \reserved@a\@xhline +}% +\def\hline@ltx{% + \noalign{% + \ifnum0=`}\fi + \hline@rule + \futurelet\reserved@a\@xhline + % \noalign ended in \@xhline +}% +\def\@xhline@unneeded{% + \say\reserved@a + \ifx\reserved@a\hline + \vskip\doublerulesep + \vskip-\arrayrulewidth + \fi + \ifnum0=`{\fi}% +}% +\def\column@font{}% +\def\column@fil{}% +\def\body@font{}% +\def\cell@font{}% +\def\frstrut{}% +\def\lrstrut{}% +\def\@arstrut@hline{% + \relax + \@ifmmode{\copy}{\unhcopy}\@arstrutbox@hline + \@arstrut@hook +}% +\let\@arstrut@org\@arstrut +\def\@arstrut@hook{% + \global\let\@arstrut\@arstrut@org +}% +\newbox\@arstrutbox@hline +\appdef\set@arstrutbox{% + \setbox\@arstrutbox@hline\hbox{% + \setbox\z@\hbox{$0^{0}_{}$}% + \dimen@\ht\z@\advance\dimen@\@arstrut@hline@clnc + \@ifdim{\dimen@<\arraystretch\ht\strutbox}{\dimen@=\arraystretch\ht\strutbox}{}% + \vrule \@height\dimen@ + \@depth\arraystretch \dp\strutbox + \@width\z@ + }% +}% +\def\hline@rule{% + \hrule \@height \arrayrulewidth + \global\let\@arstrut\@arstrut@hline +}% +\def\tableft@skip{\z@skip}% +\def\tabmid@skip{\z@skip}%\@flushglue +\def\tabright@skip{\z@skip}% +\def\tableftsep{\tabcolsep}% +\def\tabmidsep{\tabcolsep}% +\def\tabrightsep{\tabcolsep}% +\def\cell@fil{}% +\def\pbox@hook{}% +\appdef\@arstrut{\@arstrut@hook}% +\let\@arstrut@hook\@empty +\def\@addtopreamble{\appdef\@preamble}% +\def\@mkpream@LaTeX#1{% + \@firstamptrue\@lastchclass6 + \let\@preamble\@empty + \let\protect\@unexpandable@protect + \let\@sharp\relax + \let\@startpbox\relax\let\@endpbox\relax + \@expast{#1}% + \expandafter\@tfor \expandafter + \@nextchar \expandafter:\expandafter=\reserved@a\do + {\@testpach\@nextchar + \ifcase \@chclass \@classz \or \@classi \or \@classii \or \@classiii + \or \@classiv \or\@classv \fi\@lastchclass\@chclass}% + \ifcase \@lastchclass \@acol + \or \or \@preamerr \@ne\or \@preamerr \tw@\or \or \@acol \fi +}% +\def\@mkpream@ltx#1{% + \@firstamptrue + \@lastchclass6 + \let\@preamble\@empty + \let\protect\@unexpandable@protect + \let\@sharp\relax + \@expast{#1}% + \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\reserved@a + \do{% + \expandafter\@testpach\expandafter{\@nextchar}% + \ifcase\@chclass + \@classz + \or + \@classi + \or + \@classii + \or + \@classiii + \or + \@classiv + \or + \@classv + \fi + \@lastchclass\@chclass + }% + \ifcase\@lastchclass + \@acolr % right-hand column + \or + \or + \@preamerr\@ne + \or + \@preamerr\tw@ + \or + \or + \@acolr % right-hand column + \fi +}% +\def\insert@column@array{% + \the@toks \the \@tempcnta + \ignorespaces \@sharp \unskip + \the@toks \the \count@ \relax +}% +\def\insert@column@array@new{% + \the@toks\the\@tempcnta + \array@row@rst\cell@font + \ignorespaces\@sharp\unskip + \the@toks\the\count@ + \relax +}% +\def\@mkpream@relax{% + \let\tableftsep \relax + \let\tabmidsep \relax + \let\tabrightsep \relax + \let\array@row@rst\relax + \let\cell@font \relax + \let\@startpbox \relax +}% +\def\@mkpream@array#1{% + \gdef\@preamble{}\@lastchclass 4 \@firstamptrue + \let\@sharp\relax \let\@startpbox\relax \let\@endpbox\relax + \@temptokena{#1}\@tempswatrue + \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}% + \count@\m@ne + \let\the@toks\relax + \prepnext@tok + \expandafter \@tfor \expandafter \@nextchar + \expandafter :\expandafter =\the\@temptokena \do + {\@testpach + \ifcase \@chclass \@classz \or \@classi \or \@classii + \or \save@decl \or \or \@classv \or \@classvi + \or \@classvii \or \@classviii + \or \@classx + \or \@classx \fi + \@lastchclass\@chclass}% + \ifcase\@lastchclass + \@acol \or + \or + \@acol \or + \@preamerr \thr@@ \or + \@preamerr \tw@ \@addtopreamble\@sharp \or + \or + \else \@preamerr \@ne \fi + \def\the@toks{\the\toks}% +}% +\def\@mkpream@array@new#1{% + \gdef\@preamble{}% + \@lastchclass\f@ur + \@firstamptrue + \let\@sharp\relax + \@mkpream@relax + \@temptokena{#1}\@tempswatrue + \@whilesw\if@tempswa\fi{\@tempswafalse\the\NC@list}% + \count@\m@ne + \let\the@toks\relax + \prepnext@tok + \expandafter\@tfor\expandafter\@nextchar\expandafter:\expandafter=\the\@temptokena + \do{% + \@testpach + \ifcase\@chclass + \@classz + \or + \@classi + \or + \@classii + \or + \save@decl + \or + \or + \@classv + \or + \@classvi + \or + \@classvii + \or + \@classviii + \or + \@classx + \or + \@classx + \fi + \@lastchclass\@chclass + }% + \ifcase\@lastchclass + \@acolr % right-hand column + \or + \or + \@acolr % right-hand column + \or + \@preamerr\thr@@ + \or + \@preamerr\tw@\@addtopreamble\@sharp + \or + \or + \else + \@preamerr\@ne + \fi + \def\the@toks{\the\toks}% +}% +\appdef\@mkpream@relax{% + \let\CT@setup \relax + \let\CT@color \relax + \let\CT@do@color \relax + \let\color \relax + \let\CT@column@color\relax + \let\CT@row@color \relax + \let\CT@cell@color \relax +}% +\def\@addamp@LaTeX{% + \if@firstamp\@firstampfalse\else\edef\@preamble{\@preamble &}\fi +}% +\def\@addamp@ltx{% + \if@firstamp\@firstampfalse\else\@addtopreamble{&}\fi +}% +\def\@arrayacol@LaTeX{% + \edef\@preamble{\@preamble \hskip \arraycolsep}% +}% +\def\@arrayacol@ltx{% + \@addtopreamble{\hskip\arraycolsep}% +}% +\def\@tabacoll{% + \@addtopreamble{\hskip\tableftsep\relax}% +}% +\def\@tabacol@LaTeX{% + \edef\@preamble{\@preamble \hskip \tabcolsep}% +}% +\def\@tabacol@ltx{% + \@addtopreamble{\hskip\tabmidsep\relax}% +}% +\def\@tabacolr{% + \@addtopreamble{\hskip\tabrightsep\relax}% +}% +\def\@arrayclassz@LaTeX{% + \ifcase \@lastchclass \@acolampacol \or \@ampacol \or + \or \or \@addamp \or + \@acolampacol \or \@firstampfalse \@acol \fi + \edef\@preamble{\@preamble + \ifcase \@chnum + \hfil$\relax\@sharp$\hfil \or $\relax\@sharp$\hfil + \or \hfil$\relax\@sharp$\fi}% +}% +\def\@arrayclassz@ltx{% + \ifcase\@lastchclass + \@acolampacol + \or + \@ampacol + \or + \or + \or + \@addamp + \or + \@acolampacol + \or + \@firstampfalse\@acoll + \fi + \ifcase\@chnum + \@addtopreamble{% + \hfil\array@row@rst$\relax\@sharp$\hfil + }% + \or + \@addtopreamble{% + \array@row@rst$\relax\@sharp$\hfil + }% + \or + \@addtopreamble{% + \hfil\array@row@rst$\relax\@sharp$% + }% + \fi +}% +\def\@tabclassz@LaTeX{% + \ifcase\@lastchclass + \@acolampacol + \or + \@ampacol + \or + \or + \or + \@addamp + \or + \@acolampacol + \or + \@firstampfalse\@acol + \fi + \edef\@preamble{% + \@preamble{% + \ifcase\@chnum + \hfil\ignorespaces\@sharp\unskip\hfil + \or + \hskip1sp\ignorespaces\@sharp\unskip\hfil + \or + \hfil\hskip1sp\ignorespaces\@sharp\unskip + \fi}}% +}% +\def\@tabclassz@ltx{% + \ifcase\@lastchclass + \@acolampacol + \or + \@ampacol + \or + \or + \or + \@addamp + \or + \@acolampacol + \or + \@firstampfalse\@acoll + \fi + \ifcase\@chnum + \@addtopreamble{% + {\hfil\array@row@rst\cell@font\ignorespaces\@sharp\unskip\hfil}% + }% + \or + \@addtopreamble{% + {\cell@fil\hskip1sp\array@row@rst\cell@font\ignorespaces\@sharp\unskip\hfil}% + }% + \or + \@addtopreamble{% + {\hfil\hskip1sp\array@row@rst\cell@font\ignorespaces\@sharp\unskip\cell@fil}% + }% + \fi +}% +\def\@tabclassiv@LaTeX{% + \@addtopreamble\@nextchar +}% +\def\@tabclassiv@ltx{% + \expandafter\@addtopreamble\expandafter{\@nextchar}% +}% +\def\@arrayclassiv@LaTeX{% + \@addtopreamble{$\@nextchar$}% +}% +\def\@arrayclassiv@ltx{% + \expandafter\@addtopreamble\expandafter{\expandafter$\@nextchar$}% +}% +\def\@classv@LaTeX{% + \@addtopreamble{\@startpbox{\@nextchar}\ignorespaces + \@sharp\@endpbox}% +}% +\def\@classv@ltx{% + \expandafter\@addtopreamble + \expandafter{% + \expandafter \@startpbox + \expandafter {\@nextchar}% + \pbox@hook\array@row@rst\cell@font\ignorespaces\@sharp\@endpbox + }% +}% +\def\@classx@array{% + \ifcase \@lastchclass + \@acolampacol \or + \@addamp \@acol \or + \@acolampacol \or + \or + \@acol \@firstampfalse \or + \@addamp + \fi +}% +\def\@classx@array@new{% + \ifcase \@lastchclass + \@acolampacol + \or + \@addamp \@acol + \or + \@acolampacol + \or + \or + \@firstampfalse\@acoll + \or + \@addamp + \fi +}% +\def\@xbitor@LaTeX #1{\@tempcntb \count#1 + \ifnum \@tempcnta =\z@ + \else + \divide\@tempcntb\@tempcnta + \ifodd\@tempcntb \@testtrue\fi + \fi}% +\def\@xbitor@ltx#1{% + \@tempcntb\count#1\relax + \@ifnum{\@tempcnta=\z@}{}{% + \divide\@tempcntb\@tempcnta + \@ifodd\@tempcntb{\@testtrue}{}% + }% +}% +\@ifx{\@xbitor\@xbitor@LaTeX}{% + \class@info{Repairing broken LaTeX \string\@xbitor}% +}{% + \class@info{Unrecognized LaTeX \string\@xbitor. Please update this document class! (Proceeding with fingers crossed.)}% +}% +\let\@xbitor\@xbitor@ltx +\newcommand*\@gobble@opt@one[2][]{}% +\def\@starttoc#1{% + \begingroup + \toc@pre + \makeatletter + \@input{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi + \@nobreakfalse + \toc@post + \endgroup +}% +\def\toc@pre{}% +\def\toc@post{}% +\def\toc@@font{}% + +\let\tocdim@section \leftmargini +\let\tocdim@subsection \leftmarginii +\let\tocdim@subsubsection \leftmarginiii +\let\tocdim@paragraph \leftmarginiv +\let\tocdim@appendix \leftmarginv +\let\tocdim@pagenum \leftmarginvi +\def\toc@pre@auto{% + \toc@@font + \@tempdima\z@ + \toc@setindent\@tempdima{section}% + \toc@setindent\@tempdima{subsection}% + \toc@setindent\@tempdima{subsubsection}% + \toc@setindent\@tempdima{paragraph}% + \toc@letdimen{appendix}% + \toc@letdimen{pagenum}% +}% +\def\toc@post@auto{% + \if@filesw + \begingroup + \toc@writedimen{section}% + \toc@writedimen{subsection}% + \toc@writedimen{subsubsection}% + \toc@writedimen{paragraph}% + \toc@writedimen{appendix}% + \toc@writedimen{pagenum}% + \endgroup + \fi +}% +\def\toc@setindent#1#2{% + \csname tocdim@#2\endcsname\tocdim@min\relax + \@ifundefined{tocmax@#2}{\@namedef{tocmax@#2}{\z@}}{}% + \advance#1\@nameuse{tocmax@#2}\relax + \expandafter\edef\csname tocleft@#2\endcsname{\the#1}% +}% +\def\toc@letdimen#1{% + \csname tocdim@#1\endcsname\tocdim@min\relax + \@ifundefined{tocmax@#1}{\@namedef{tocmax@#1}{\z@}}{}% + \expandafter\let\csname tocleft@#1\expandafter\endcsname\csname tocmax@#1\endcsname +}% +\def\toc@writedimen#1{% + \immediate\write\@auxout{% + \gdef\expandafter\string\csname tocmax@#1\endcsname{% + \expandafter\the\csname tocdim@#1\endcsname + }% + }% +}% +\def\l@@sections#1#2#3#4{% + \begingroup + \everypar{}% + \set@tocdim@pagenum\@tempboxa{#4}% + \global\@tempdima\csname tocdim@#2\endcsname + \leftskip\csname tocleft@#2\endcsname\relax + \dimen@\csname tocleft@#1\endcsname\relax + \parindent-\leftskip\advance\parindent\dimen@ + \rightskip\tocleft@pagenum plus 1fil\relax + \skip@\parfillskip\parfillskip\z@ + \let\numberline\numberline@@sections + \@nameuse{l@f@#2}% + \ignorespaces#3\unskip\nobreak\hskip\skip@ + \hb@xt@\rightskip{\hfil\unhbox\@tempboxa}\hskip-\rightskip\hskip\z@skip + \expandafter\par + \expandafter\aftergroup\csname tocdim@#2% + \expandafter\endcsname + \expandafter\endgroup + \the\@tempdima\relax +}% +\def\set@tocdim@pagenum#1#2{% + \setbox#1\hbox{\ignorespaces#2}% + \@ifdim{\tocdim@pagenum<\wd#1}{\global\tocdim@pagenum\wd#1}{}% +}% +\def\numberline@@sections#1{% + \leavevmode\hb@xt@-\parindent{% + \hfil + \@if@empty{#1}{}{% + \setbox\z@\hbox{#1.\kern\ltxu@dotsep}% + \@ifdim{\@tempdima<\wd\z@}{\global\@tempdima\wd\z@}{}% + \unhbox\z@ + }% + }% + \ignorespaces +}% +\def\tocdim@min{\z@}% +\def\list#1#2{% + \ifnum \@listdepth >5\relax + \@toodeep + \else + \global\advance\@listdepth\@ne + \fi + \rightmargin\z@ + \listparindent\z@ + \itemindent\z@ + \csname @list\romannumeral\the\@listdepth\endcsname + \def\@itemlabel{#1}% + \let\makelabel\@mklab + \@nmbrlistfalse + #2\relax + \@trivlist + \parskip\parsep + \set@listindent + \ignorespaces +}% +\def\set@listindent@parshape{% + \parindent\listparindent + \advance\@totalleftmargin\leftmargin + \advance\linewidth-\rightmargin + \advance\linewidth-\leftmargin + \parshape\@ne\@totalleftmargin\linewidth +}% +\def\set@listindent@{% + \parindent\listparindent + \advance\@totalleftmargin\leftmargin + \advance\rightskip\rightmargin + \advance\leftskip\@totalleftmargin +}% +\let\set@listindent\set@listindent@parshape +\providecommand\href[0]{\begingroup\@sanitize@url\@href}% +\def\@href#1{\@@startlink{#1}\endgroup\@@href}% +\def\@@href#1{#1\@@endlink}% +\providecommand \url [0]{\begingroup\@sanitize@url \@url }% +\def \@url #1{\endgroup\@href {#1}{\URL@prefix#1}}% +\providecommand \URL@prefix [0]{URL }% +\providecommand\doi[0]{\begingroup\@sanitize@url\@doi}% +\def\@doi#1{\endgroup\@@startlink{\doibase#1}doi:\discretionary {}{}{}#1\@@endlink }% +\providecommand \doibase [0]{https://doi.org/}% +\providecommand \@sanitize@url[0]{\chardef\cat@space\the\catcode`\ \@sanitize\catcode`\ \cat@space}% +\def\@@startlink#1{}% +\def\@@endlink{}% +\@ifxundefined \pdfoutput {\true@sw}{\@ifnum{\z@=\pdfoutput}{\true@sw}{\false@sw}}% +{% + \def\@@startlink@hypertext#1{\leavevmode\special{html:}}% + \def\@@endlink@hypertext{\special{html:}}% +}{% + \def\@@startlink@hypertext#1{% + \leavevmode + \pdfstartlink\pdfstartlink@attr + user{/Subtype/Link/A<>}% + \relax + }% + \def\@@endlink@hypertext{\pdfendlink}% + \def\pdfstartlink@attr{attr{/Border[0 0 1 ]/H/I/C[0 1 1]}}% +}% +\def\hypertext@enable@ltx{% + \let\@@startlink\@@startlink@hypertext + \let\@@endlink\@@endlink@hypertext +}% +\def\href@Hy{\hyper@normalise \href@ }% +\def\href@Hy@ltx{\@ifnextchar\bgroup\Hy@href{\hyper@normalise\href@}}% +\def\Hy@href#{\hyper@normalise\href@}% +\begingroup + \endlinechar=-1 % + \catcode`\^^A=14 % + \catcode`\^^M\active + \catcode`\%\active + \catcode`\#\active + \catcode`\_\active + \catcode`\$\active + \catcode`\&\active + \gdef\hyper@normalise@ltx{^^A + \begingroup + \catcode`\^^M\active + \def^^M{ }^^A + \catcode`\%\active + \let%\@percentchar + \let\%\@percentchar + \catcode`\#\active + \def#{\hyper@hash}^^A + \def\#{\hyper@hash}^^A + \@makeother\&^^A + \edef&{\string&}^^A + \edef\&{\string&}^^A + \edef\textunderscore{\string_}^^A + \let\_\textunderscore + \catcode`\_\active + \let_\textunderscore + \let~\hyper@tilde + \let\~\hyper@tilde + \let\textasciitilde\hyper@tilde + \let\\\@backslashchar + \edef${\string$}^^A + \Hy@safe@activestrue + \hyper@n@rmalise + }^^A + \catcode`\#=6 ^^A + \gdef\Hy@ActiveCarriageReturn@ltx{^^M}^^A + \gdef\hyper@n@rmalise@ltx#1#2{^^A + \def\Hy@tempa{#2}^^A + \ifx\Hy@tempa\Hy@ActiveCarriageReturn + \Hy@ReturnAfterElseFi{^^A + \hyper@@normalise{#1}^^A + }^^A + \else + \Hy@ReturnAfterFi{^^A + \hyper@@normalise{#1}{#2}^^A + }^^A + \fi + }^^A + \gdef\hyper@@normalise@ltx#1#2{^^A + \edef\Hy@tempa{^^A + \endgroup + \noexpand#1{\Hy@RemovePercentCr#2%^^M\@nil}^^A + }^^A + \Hy@tempa + }^^A + \gdef\Hy@RemovePercentCr@ltx#1%^^M#2\@nil{^^A + #1^^A + \ifx\limits#2\limits + \else + \Hy@ReturnAfterFi{^^A + \Hy@RemovePercentCr #2\@nil + }^^A + \fi + }^^A +\endgroup +\def\switch@hyperref@href{% + \expandafter\@ifx\expandafter{\csname href \endcsname\href@Hy}{ + \class@info{Repairing hyperref 6.75r \string\href}% + \let\hyper@normalise\hyper@normalise@ltx + \let\hyper@@normalise\hyper@@normalise@ltx + \let\hyper@n@rmalise\hyper@n@rmalise@ltx + \let\Hy@ActiveCarriageReturn\Hy@ActiveCarriageReturn@ltx + \let\Hy@RemovePercentCr\Hy@RemovePercentCr@ltx + \let\href\href@Hy@ltx + }{}% +}% +\appdef\document@inithook{\switch@hyperref@href}% +\def\typeout@org#1{% + \begingroup + \set@display@protect + \immediate\write\@unused{#1}% + \endgroup +}% +\long\def\typeout@ltx#1{% + \begingroup + \set@display@protect + \immediate\write\@unused{#1}% + \endgroup +}% +\@ifx{\typeout\typeout@org}{% + \let\typeout\typeout@ltx + \true@sw +}{% + \rvtx@ifformat@geq{2020/10/01}% + {\true@sw}{\false@sw}% +}% + {\class@info{Making \string\typeout\space \string\long}}% + {}% + +\typeout{% +ltxfront% + [2022/06/05 4.2f frontmatter package (AO,DPC,MD)]% \fileversion +}% + +\appdef\class@documenthook{\frontmatter@init}% + +\let\frontmatter@init\@empty +\newcommand\frontmatter@title[2][]{% +\def\@title{#2}% + \def\@shorttitle{#1}% + \let\@AF@join\@title@join +}% +\appdef\frontmatter@init{% + \def\@title{\class@warn{No title}}% + \let\@shorttitle\@empty + \let\@title@aux\@title@aux@cleared +}% +\def\@title@join{\expandafter\@title@join@\@title@aux}% +\def\@title@join@#1#2{% + \def\@title@aux{{\@join{\@separator}{#1}{#2}}}% +}% +\def\@title@aux@cleared{{}}% +\newcounter{affil}% +\newcounter{collab}% +\appdef\frontmatter@init{% + \c@affil\z@ + \c@collab\z@ +}% +\newcommand\frontmatter@author{% implicit #1 + \@author@def{}% implicit #2 +}% + +\def\collaboration{% implicit #1 + \@author@def{\@booleantrue\collaboration@sw}% implicit #2 +}% +\appdef\frontmatter@init{% + \@booleanfalse\collaboration@sw +}% +\def\@author@cleared{{}{}{}}% +\def\@author@gobble#1#2#3{}% +\def\@author@init{% + \let\@author\@author@cleared + \@booleanfalse\collaboration@sw +}% +\def\@authorclear@sw{\@ifx{\@author\@author@cleared}}% +\appdef\frontmatter@init{% + \@author@init +} +% +\def\@author@def#1#2{\@ifnextchar[{\@@author@def{#1}{#2}}{\@@author@def{#1}{#2}[\relax]}} + +\def\@@author@def#1#2[#3]{% + \frontmatterverbose@sw{\typeout{\string\author\space\string\collaboration}}{}% + \move@AU\move@AF\move@AUAF + \let\@AF@join\@author@join + #1% +\ifx#3\relax + \def\@author{{#2}{}}% + \expandafter\gdef\csname author@data@\romannumeral\the\allauthorcnt\endcsname{#2}% +\else + \def\@author{{#3}{}}% + \expandafter\gdef\csname author@data@\romannumeral\the\allauthorcnt\endcsname{#3}% +\fi +}% +\def\@author@join@#1#2#3{% + \def\@author{{#1}{\@join{\@separator}{#2}{#3}}}% +}% +\def\@author@join{\expandafter\@author@join@\@author}% +\def\move@AU{% + \@authorclear@sw{}{% + \collaboration@sw{% + \advance\c@collab\@ne + \@argswap{\CO@grp\CO@opr}% + }{% + \@argswap{\AU@grp\AU@opr}% + }% + {% + \expandafter\@argswap@val + \expandafter{\@author}% + {\expandafter\@argswap@val\expandafter{\the\c@collab}{\add@AUCO@grp}}% + }% + }% + \@author@init +}% +\def\add@AUCO@grp#1#2#3#4{% + \appdef#3{#4{#1}#2}% + \frontmatterverbose@sw{\say#3}{}% +}% +\def\@author@finish{% + \frontmatterverbose@sw{\typeout{\string\@author@finish}}{}% + \move@AU\move@AF + \@ifx{\AU@grp\@empty}{% + \@ifx{\CO@grp\@empty}% + }{% + \false@sw + }% + {}{% + \@ifx{\AF@grp\@empty}{% + \begingroup + \let\href\@secondoftwo + \let\AU@opr\@secondofthree + \let\CO@opr\@secondofthree + \let\footnote\@gobble + \@ifx{\CO@grp\@empty}{% + \class@warn{Assuming \string\noaffiliation\space for authors}% + \frontmatterverbose@sw{\say\AU@grp}% + }{% + \class@warn{Assuming \string\noaffiliation\space for collaboration}% + \frontmatterverbose@sw{\say\CO@grp}{}% + }% + \endgroup + \@affil@none\move@AF + }{}% + }% + \move@AUAF +}% +\def\@secondofthree#1#2#3{#2}% +\def\@join#1#2#3{% + \@if@empty{#2}{#3}{#2#1#3}% +}% + +\let\surname\@firstofone +\let\firstname\@firstofone +\newcommand\frontmatter@and{\class@err{\protect\and\space is not supported}} +\def\cat@comma@active{\catcode`\,\active}% +{\cat@comma@active\gdef,{\active@comma}}% +\def\active@comma{,\penalty-300\relax}% +\newcommand\affiliation{% + \frontmatterverbose@sw{\typeout{\string\affiliation}}{}% + \move@AU\move@AF + \begingroup + \cat@comma@active + \@affiliation +}% +\def\@affiliation#1{% + \endgroup + \let\@AF@join\@affil@join + \@affil@def{#1}% +}% +\newcommand\frontmatter@noaffiliation{% + \frontmatterverbose@sw{\typeout{\string\noaffiliation}}{}% + \move@AU\move@AF + \@affil@none\move@AF + \move@AUAF +}% +\def\@affil@cleared{{{}}{}}% +\def\@affil@nil{{\relax}{}}% +\appdef\frontmatter@init{% + \@affil@init +}% +\def\@affil@none{% + \let\@affil\@affil@nil +}% +\def\@affil@init{% + \let\@affil\@affil@cleared +}% +\def\@affilclear@sw{\@ifx{\@affil\@affil@cleared}}% +\def\@affil@def#1{% + \def\@affil{{#1}{}}% +}% +\def\@affil@join@#1#2#3{% + \def\@affil{{#1}{\@join{\@separator}{#2}{#3}}}% +}% +\def\@affil@join{\expandafter\@affil@join@\@affil}% +\def\move@AF{% + \@affilclear@sw{}{% + \@booleanfalse\temp@sw + \let\@tempd\@empty + \@affils@sw{% + \expandafter\@affil@addr@def\expandafter\@tempa\@affil + \def\AFF@opr{\@affil@match\@tempa}% + \@AFF@list + }{}\temp@sw + {% + \expandafter\@affil@aux@def\expandafter\@tempb\@affil + \@ifx{\@tempb\@empty}{}{% + \@ifx{\@tempb\@tempd}{}{% + \class@warn{% + Ancillary information for \@tempa\space must not be different! + Please put all of it on the first instance% + }% + }% + }% + }% + {% + \@ifx{\@affil\@affil@nil}{% + \def\@tempc{0}% + \@argswap@val{0}% + }{% + \advance\c@affil\@ne + \expandafter\def\expandafter\@tempc\expandafter{\the\c@affil}% + \expandafter\@argswap@val\expandafter{\the\c@affil}% + }% + {% + \expandafter\@argswap@val\expandafter{\the\c@collab}{% + \expandafter\@argswap@val\expandafter{\@affil}{% + \add@list@val@val@val\@AFF@list\AFF@opr + }% + }% + }% + }% + \appdef@eval\AF@grp\@tempc + \frontmatterverbose@sw{\say\AF@grp}{}% + \@affil@init + }% +}% +\def\@affil@addr@def#1#2#3{% + \def#1{#2}% +}% +\def\@affil@aux@def#1#2#3{% + \def#1{#3}% +}% +\def\add@list@val@val@val#1#2#3#4#5{% + \appdef#1{#2{#5}{#4}#3}% + \frontmatterverbose@sw{\say#1}{}% +}% +\def\@affil@match#1#2#3#4#5{% + \temp@sw{}{% + \def\@tempifx{#4}% + \@ifx{\@tempifx#1}{% + \groupauthors@sw{% + \@ifnum{#3=\c@collab}{% + \true@sw + }{% + \false@sw + }% + }{% + \true@sw + }% + }{% + \false@sw + }% + {% + \@booleantrue\temp@sw + \def\@tempc{#2}% + \def\@tempd{#5}% + }{% + }% + }% +}% +\def\move@AUAF{% + \frontmatterverbose@sw{\say\AU@grp\say\AF@grp\say\CO@grp}{}% + \@ifx{\AF@grp\@empty}{% + \@ifx{\@empty\CO@grp}{% + }{% + \appdef \@AAC@list{\AF@opr{{0}}}% + \appdef@e \@AAC@list{\CO@grp}% + \appdef@e \@AFG@list{\CO@grp}% + \let\CO@grp\@empty + }% + }{% + \appdef \@AAC@list{\AF@opr}% + \appdef@eval\@AAC@list{\AF@grp}% + \appdef@e \@AAC@list{\AU@grp}% + \@ifx{\@empty\AU@grp}{% + \@ifx{\@empty\CO@grp}% + }{% + \false@sw + }% + {% + }{% + \@booleanfalse\temp@sw + \def\AFG@opr{\x@match\AF@grp}% + \let\CO@opr\@author@gobble + \@AFG@list + \temp@sw{}{% + \appdef \@AFG@list{\AFG@opr}% + \appdef@eval\@AFG@list{\AF@grp}% + }% + \@ifx{\@empty\CO@grp}{}{% + \appdef@e \@AAC@list{\CO@grp}% + \appdef@e \@AFG@list{\CO@grp}% + \let\CO@grp\@empty + }% + }% + \let\CO@grp\@empty + \let\AU@grp\@empty + \let\AF@grp\@empty + }% + \frontmatterverbose@sw{\say\@AAC@list\say\@AFG@list}{}% +}% +\appdef\frontmatter@init{% + \let\AU@grp\@empty + \let\CO@grp\@empty + \let\AF@grp\@empty + \let\@AAC@list\@empty + \let\@AFG@list\@empty + \let\@AFF@list\@empty +}% +\appdef\frontmatter@init{% + \let\@AF@join\@AF@join@error +}% +\def\@AF@join@error#1{% + \class@warn{% + \string\email, \string\homepage, \string\thanks, or \string\altaffiliation\space + appears in wrong context. + }% +}% +\def\sanitize@url{% + \@makeother\%% + \@makeother\~% + \@makeother\_% +}% +\newcommand*\homepage[1][]{\begingroup\sanitize@url\@homepage{#1}}% +\def\@homepage#1#2{% + \endgroup + \@AF@join{#1\href{#2}{#2}}% +}% +\appdef\class@documenthook{% + \providecommand\href[1]{}% +}% +\def\frontmatter@thanks{% implicit #1 + \@AF@join +}% +\def\set@listcomma@list#1{% + \expandafter\@reset@ac\expandafter#1#1{0}\@reset@ac{% + \let\@listcomma\relax + }{% + \let\@listcomma\@listcomma@comma + }% +}% +\def\set@listcomma@count#1{% + \@ifnum{#1=\tw@}{% + \let\@listcomma\relax + }{% + \let\@listcomma\@listcomma@comma + }% +}% +\def\@reset@ac#1#2#3\@reset@ac{% + \def#1{#3}% + \@tempcnta#2\relax + \@ifnum{#2=\tw@}% +}% +\def\@listand{\@ifnum{\@tempcnta=\tw@}{\andname\space}{}}% +\def\@listcomma@comma{\@ifnum{\@tempcnta>\@ne}{,}{}}% +\def\@listcomma@comma@UK{\@ifnum{\@tempcnta>\tw@}{,}{}}% +\def\@collaboration@gobble#1#2#3{}% + +\def\x@match#1#2{% + \temp@sw{}{% + \def\@tempifx{#2}% + \@ifx{\@tempifx#1}{% + \@booleantrue\temp@sw + }{% + }% + }% +}% +\def\y@match#1#2#3{% + \temp@sw{}{% + \def\@tempifx{#3}% + \@ifx{\@tempifx#1}{% + \@booleantrue\temp@sw + \def\@tempb{#2}% + }{% + }% + }% +}% +\def\frontmatter@footnote#1{% + \begingroup + \@booleanfalse\temp@sw + \def\@tempa{#1}% + \let\@tempb\@empty + \def\@TBN@opr{\y@match\@tempa}% + \@FMN@list + \temp@sw{% + \expandafter\frontmatter@footnotemark + \expandafter{\@tempb}% + }{% + \stepcounter\@mpfn + \expandafter\expandafter + \expandafter\frontmatter@foot@mark + \expandafter\expandafter + \expandafter{% + \expandafter \the\csname c@\@mpfn\endcsname + }{#1}% + }% + \endgroup +}% +\def\frontmatter@foot@mark#1#2{% + \frontmatter@footnotemark{#1}% + \g@addto@macro\@FMN@list{\@TBN@opr{#1}{#2}}% +}% +\appdef\frontmatter@init{% + \global\let\@FMN@list\@empty +}% +\def\frontmatter@footnotemark#1{% + \leavevmode + \ifhmode\edef\@x@sf{\the\spacefactor}\nobreak\fi + \begingroup + \hyper@linkstart {link}{frontmatter.#1}% + \csname c@\@mpfn\endcsname#1\relax + \def\@thefnmark{\frontmatter@thefootnote}% + \@makefnmark + \hyper@linkend + \endgroup + \ifhmode\spacefactor\@x@sf\fi + \relax +}% +\def\keywords#1{% + \aftermaketitle@chk{\keywords}% + \gdef\@keywords{#1}% +}% +\appdef\frontmatter@init{% + \let\@keywords\@empty +}% +\newcommand*\frontmatter@date[2][\Dated@name]{\def\@date{#1#2}}% +\def\@date{}% +\newcommand*\received[2][\Received@name]{\def\@received{#1#2}}% +\def\@received{}% +\newcommand*\revised[2][\Revised@name]{\def\@revised{#1#2}}% +\def\@revised{}% +\newcommand*\accepted[2][\Accepted@name]{\def\@accepted{#1#2}}% +\def\@accepted{}% +\newcommand*\published[2][\Published@name]{\def\@published{#1#2}}% +\def\@published{}% + +\def\preprint#1{\gappdef\@preprint{\preprint{#1}}}% +\appdef\frontmatter@init{% + \let\@preprint\@empty +}% +\newbox\absbox + +\def\toclevel@abstract{1}% + +\def\addcontents@abstract{% + \phantomsection + \expandafter\def\csname Parent0\endcsname{section*.2}% + \expandafter\@argswap@val\expandafter{\abstractname}{\addcontentsline{toc}{abstract}}% +}% + +\newif\ifabstract% + +\newenvironment{frontmatter@abstract}{% + \aftermaketitle@chk{\begin{abstract}}% +\global\abstracttrue + \global\setbox\absbox\vbox\bgroup + \color@begingroup +\ifmodern + \columnwidth\textwidth + \hsize\columnwidth +\else +\hsize = 478pt +\fi + \@parboxrestore + \def\@mpfn{mpfootnote}\def\thempfn{\thempfootnote)}\c@mpfootnote\z@ % + \minipagefootnote@init + \let\set@listindent\set@listindent@ + \let\@listdepth\@mplistdepth \@mplistdepth\z@ + \let@environment{description}{frontmatter@description}% + \@minipagerestore + \@setminipage + \frontmatter@abstractheading + \frontmatter@abstractfont +\ifmodern\else\everypar={\leftskip=34pt}\fi +\ifnumlines\let\go\linenumbers\else\let\go\relax\fi\go +}{% +\ifnumlines\let\go\endlinenumbers\else\let\go\relax\fi\go + \par + \unskip + \minipagefootnote@here + \@minipagefalse + \color@endgroup +\egroup% end setbox\absbox +}% + +\long\def\frontmatter@footnotetext#1{% + \minipagefootnote@pick + \set@footnotefont + \set@footnotewidth + \@parboxrestore + \protected@edef\@currentlabel{\csname p@\@mpfn\endcsname\@thefnmark}% + \color@begingroup + \frontmatter@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox\vadjust{\vskip\z@skip}% + }% + \color@endgroup + \minipagefootnote@drop +}% +\def\ltx@no@footnote{% + \let\ltx@xfootnote\ltx@no@xfootnote\let\ltx@yfootnote\ltx@no@yfootnote + \let\ltx@xfootmark\ltx@no@xfootmark\let\ltx@yfootmark\ltx@no@yfootmark + \let\ltx@xfoottext\ltx@no@xfoottext\let\ltx@yfoottext\ltx@no@yfoottext +}% +\def\ltx@no@xfootnote[#1]#2{\ltx@no@footwarn\footnote}% +\def\ltx@no@yfootnote#1{\ltx@no@footwarn\footnote}% +\def\ltx@no@xfootmark[#1]{\ltx@no@footwarn\footnotemark}% +\def\ltx@no@yfootmark{\ltx@no@footwarn\footnotemark}% +\def\ltx@no@xfoottext[#1]#2{\ltx@no@footwarn\footnotetext}% +\def\ltx@no@yfoottext#1{\ltx@no@footwarn\footnotetext}% +\def\ltx@no@footwarn#1{% + \class@warn{% + The \string#1\space command is not legal on the title page; + using \string\thanks\space instead might suit you: consult the manual for details% + }% +}% + + +\newenvironment{frontmatter@description}{% + \list{}{% + \leftmargin\z@ + \labelwidth\z@ + \itemindent\z@ + \let\makelabel\frontmatter@descriptionlabel + }% +}{% + \endlist +}% +\def\frontmatter@descriptionlabel#1{% + \hspace\labelsep + \normalfont\bfseries + #1:% +}% + + +\appdef\frontmatter@init{\let\mini@notes\@empty}% +\let\prep@absbox\@empty +\let\post@absbox\@empty + +\def\maketitle@Hy{% + \let\Hy@saved@footnotemark\@footnotemark + \let\Hy@saved@footnotetext\@footnotetext + \let\@footnotemark\H@@footnotemark + \let\@footnotetext\H@@footnotetext + \@ifnextchar[%] + \Hy@maketitle@optarg + {% + \HyOrg@maketitle + \Hy@maketitle@end + }% +}% +\appdef\class@documenthook{\ifnumlines\nolinenumbers\fi% + \@ifx{\maketitle\maketitle@Hy}{% + \class@info{Taking \string\maketitle\space back from hyperref}% + \let\maketitle\frontmatter@maketitle + }{% + }% +}% + +\def\toclevel@title{0}% +\def\frontmatter@title@produce{% + \begingroup +\ifnumlines\nolinenumbers\fi + \frontmatter@title@above +\ifnumlines\linenumbers\fi +\def\thempfn{\hskip-12pt} + \ifx\@@email\@empty\else + \footnotetext{\hskip-11ptEmail: \@@email}\fi% + \frontmatter@title@format + \@title + \@ifx{\@title@aux\@title@aux@cleared}{}{% +\ifanonymous\else%% + \expandafter\frontmatter@footnote\expandafter{\@title@aux}% +\fi + }% + \par +\ifmodern +\vskip-42pt +\else + \frontmatter@title@below +\fi + \endgroup +}% + +\appdef\let@mark{\let\\\relax}% + +\newif\iffrontmatterfirsttime +\global\frontmatterfirsttimetrue +\let\savecentercr\@centercr + +\def\frontmatter@author@produce@script{% + \begingroup + \let\@author@present\@author@present@script + \frontmatterverbose@sw{\typeout{\string\frontmatter@author@produce@script:}\say\@AAC@list\say\@AFF@list\say\@AFG@list}{}% + \let\AU@temp\@empty + \@tempcnta\z@ + \let\AF@opr \@gobble + \def\AU@opr{\@author@count\@tempcnta}% + \def\CO@opr{\@collaboration@count\AU@temp\@tempcnta}% + \@AAC@list + \expandafter\CO@opr\@author@cleared + \begingroup + \frontmatter@authorformat + \let\AF@opr \@affilID@def + \let\AU@opr \@author@present + \def\CO@opr{\@collaboration@present\AU@temp}% + \set@listcomma@list\AU@temp + \@AAC@list + \, \unskip\unskip + \par + \endgroup +%% below + \begingroup + \frontmatter@above@affiliation@script + \let\AFF@opr \@affil@script +{\parskip=2pt +\def\@centercr{\vrule depth 3pt width0pt\vskip1sp} + \@AFF@list} +\let\@centercr\savecentercr +%% +\iffrontmatterfirsttime +\frontmatter@footnote@produce +\global\frontmatterfirsttimefalse +\fi + \par + \endgroup + \endgroup +}% + +\def\@author@count#1{% + \advance#1\@ne + \@author@gobble +}% +\def\@collaboration@present#1#2#3#4{% + \par + \begingroup + \frontmatter@collaboration@above + \@affilID@def{}% + \@tempcnta\z@ + \@author@present{}{(\ignorespaces#3\unskip)}{#4}% + \par + \endgroup + \set@listcomma@list#1% +}% + +\def\@collaboration@count#1#2{% + \appdef@eval#1{\the#2}#2\z@ + \@author@gobble +}% +\def\@affilID@def{\def\@affilID@temp}% +\let\@affilID@temp\@empty +\def\affil@script#1#2#3{% + \def\@tempifx{#1}\@ifx{\@tempifx\@tempa}{% + \@if@empty{#2}{}{% + \par + \begingroup + \def\@thefnmark{#1}\@makefnmark\ignorespaces + #2% + \@if@empty{#3}{}{\frontmatter@footnote{#3}}% + \par + \endgroup + }% + }{}% +}% + + + +\let\affil@cutoff\@ne +\def\@author@present@script#1#2#3{% + \begingroup + \gdef\comma@space{\textsuperscript{,\,}}% + \doauthor{#2}{#3}{\@affil@present@script}% + \endgroup + \advance\@tempcnta\m@ne +}% +\def\@affilcomma#1#2{% + \@ifx{\z@#1}{% + \@ifx{\relax#2}{}{% + \@affilcomma{#2}% + }% + }{% + #1% + \@ifx{\relax#2}{}{% + \@ifx{\z@#2}{% + \@affilcomma + }{% + ,\,\@affilcomma{#2}% + }% + }% + }% +}% +\def\@affil@present@script{% + \let\@tempa\@empty + \expandafter\@affil@present@script@\@affilID@temp\relax +}% +\def\@affil@present@script@#1{% + \@ifx{\relax#1}{% + \@ifx{\@tempa\@empty}{% + \aftergroup\false@sw + }{% + \textsuperscript{\expandafter\@affilcomma\@tempa\relax\relax}% + \aftergroup\true@sw + }% + }{% + \@ifnum{#1=\z@}{}{\appdef\@tempa{{#1}}}% + \@affil@present@script@ + }% +}% +\@provide\@author@parskip{\z@skip}% +\def\frontmatter@author@produce@group{% + \begingroup + \let\@author@present\@author@present@group + \frontmatter@authorformat + \frontmatterverbose@sw{\typeout{\string\frontmatter@author@produce@group:}\say\@AAC@list\say\@AFF@list\say\@AFG@list}{}% + \let\AU@temp\@empty + \set@listcomma@list\AU@temp + \def\CO@opr{\@collaboration@present\AU@temp}% + \let\AFG@opr \affils@present@group + \let\@listcomma\relax + \@AFG@list + \frontmatter@footnote@produce + \par + \endgroup + \frontmatter@authorbelow +}% +\@provide\frontmatter@authorbelow{}% +\def\affils@present@group#1{% + \begingroup + \def\AF@temp{#1}% + \@tempcnta\z@ + \let\AU@opr \@undefined + \let\CO@opr \@undefined + \def\AF@opr{\@affilID@count\AF@temp\@tempcnta}% + \@AAC@list + \@ifnum{\@tempcnta=\z@}{}{% + \begingroup + \frontmatter@above@affilgroup + \set@listcomma@count\@tempcnta + \let\AU@opr \@undefined + \let\CO@opr \@undefined + \def\AF@opr{\@affilID@match\AF@temp}% + \@AAC@list + \endgroup + \begingroup + \par + \frontmatter@above@affiliation + \frontmatter@affiliationfont + \let\\\frontmatter@addressnewline + \@tempcnta\z@ + \@tfor\AF@temp:=#1\do{% + \expandafter\@ifx\expandafter{\expandafter\z@\AF@temp}{}{% + \advance\@tempcnta\@ne + }% + }% + \@ifnum{\@tempcnta=\tw@}{% + \let\@listcomma\relax + }{}% + \def@after@address + \runinaddress@sw{% + }{% + \tightenlines@sw{}{% + \parskip\z@ + }% + \appdef\after@address\par + }% + \let\AFF@opr \@affil@group + \do@affil@fromgroup\@AFF@list#1\relax + \endgroup + }% + \par + \endgroup +}% +\def\def@after@address{\def\after@address{\@listcomma\ \@listand}}% +\def\def@after@address@empty{\let\after@address\@empty}% +\def\@affilID@count#1#2#3{% + \def\@tempifx{#3}% + \@ifx{\@tempifx#1}{% + \def\AU@opr{\@author@count#2}% + }{% + \let\AU@opr \@author@gobble + }% + \let\CO@opr \@collaboration@gobble +}% +\def\@affilID@match#1#2{% + \def\@tempifx{#2}% + \@ifx{\@tempifx#1}{% + \let\AU@opr \@author@present + }{% + \let\AU@opr \@author@gobble + }% + \let\CO@opr \@collaboration@gobble +}% +\def\do@affil@fromgroup#1#2{% + \@ifx{\relax#2}{}{% + \count@#2\relax + \@ifnum{\z@=\count@}{}{#1}% + \do@affil@fromgroup#1% + }% +}% +\def\@affil@group#1#2#3#4{% + \@ifnum{#1=\count@}{% + \def\@tempa{#3}% + \@ifx{\@tempa\blankaffiliation}{}{% + #3% + \@if@empty{#4}{}{% + \frontmatter@footnote{#4}% + }% + \after@address + }% + \advance\@tempcnta\m@ne + }{}% +}% +\def\@author@present@group#1#2#3{% + \gdef\comma@space{\gdef\comma@space{\textsuperscript{,\,}}}% + \doauthor{#2}{#3}{\@affil@present@group}% + \advance\@tempcnta\m@ne +}% +\def\@affil@present@group{% + \aftergroup\false@sw +}% + +\def\frontmatter@footnote@produce@footnote{% + \let\@TBN@opr\present@FM@footnote + \@FMN@list + \global\let\@FMN@list\@empty +}% +\def\present@FM@footnote#1#2{% + \begingroup + \csname c@\@mpfn\endcsname#1\relax + \def\@thefnmark{\frontmatter@thefootnote}% + \frontmatter@footnotetext{#2}% + \endgroup +}% +\def\frontmatter@footnote@produce@endnote{% +}% + +\appdef\frontmatter@init{% + \@ifxundefined\title@column {\let\title@column\@empty}{}% + \@ifxundefined\preprintsty@sw {\@booleanfalse\preprintsty@sw}{}% + \@ifxundefined\manuscriptsty@sw {\@booleanfalse\manuscriptsty@sw}{}% + \@ifxundefined\frontmatter@footnote@produce{\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote}{}% + \@ifxundefined\do@output@MVL {\let\do@output@MVL\@firstofone}{}% + \@ifxundefined\comma@space {\let\comma@space\@empty}{}% +}% +\def\frontmatter@thefootnote{% + \altaffilletter@sw{\@alph}{\@fnsymbol}{\csname c@\@mpfn\endcsname}% +}% +\@ifx{\altaffilletter@sw\@undefined}{\@booleantrue\altaffilletter@sw}{}% + +\def\frontmatter@RRAPformat#1{% + \removelastskip + \begingroup + \frontmatter@RRAP@format + #1\par + \endgroup +}% +\def\punct@RRAP{; }% +\def\produce@RRAP#1{% + \@if@empty{#1}{}{% + \@ifvmode{\leavevmode}{\unskip\punct@RRAP\ignorespaces}% + #1% + }% +}% +\def\frontmatter@above@affilgroup{}% +\def\frontmatter@finalspace{\vskip-24\p@} +\def\frontmatter@addressnewline{% + \@ifhmode{\skip@\lastskip\unskip\unpenalty\break\hskip\skip@}{}% + % was: \vskip-.5ex +}% + +\def\frontmatter@preabstractspace{12\p@} +\def\frontmatter@postabstractspace{12\p@} +\def\aftermaketitle@chk#1{% + \@ifx{\maketitle\relax}{% + \class@err{\protect#1 must be used before \protect\maketitle}% + }{}% +}% + +\def\volumeyear#1{\gdef\@volumeyear{#1}}% +\def\@volumeyear{}% +\def\volumenumber#1{\gdef\@volumenumber{#1}}% +\def\@volumenumber{}% +\def\issuenumber#1{\gdef\@issuenumber{#1}}% +\def\@issuenumber{}% +\def\eid#1{\gdef\@eid{#1}}% +\def\@eid{}% +\def\startpage#1{\gdef\@startpage{#1}\c@page#1\relax}% +\def\@startpage{\pageref{FirstPage}}% +\def\endpage#1{\gdef\@endpage{#1}}% +\def\@endpage{\pageref{LastPage}}% + +\def\appendix@toc{}% + +\appdef\robustify@contents{% + \let\thanks\@gobble\let\class@warn\@gobble + \def\begin{\string\begin}\def\end{\string\end}% +}% + + +\@ifxundefined\frontmatter@syntax@sw{\@booleantrue\frontmatter@syntax@sw}{}% + +\frontmatter@syntax@sw{% + \let\title \frontmatter@title + \let\author \frontmatter@author + \let\date \frontmatter@date + \@ifxundefined\@maketitle{% + \let\maketitle \frontmatter@maketitle + \@booleantrue \titlepage@sw + }{% + \let\@maketitle \frontmatter@maketitle + \prepdef\maketitle\@author@finish + }% + \let\noaffiliation \frontmatter@noaffiliation + \let\thanks@latex \thanks + \let\thanks \frontmatter@thanks + \let\and@latex \and + \let\and \frontmatter@and + \let@environment{titlepage}{frontmatter@titlepage}% + \let@environment{abstract}{frontmatter@abstract}% +}{% + \let\noaffiliation\@empty +}% + +\typeout{% +ltxgrid% + [2022/06/05 4.2f page grid package (portions licensed from W. E. Baxter web at superscript.com)]% \fileversion +}% +\newcounter{linecount} +\def\loop@line#1#2{% + \par + \hb@xt@\hsize{% + \global\advance#1\@ne + \edef\@tempa{\@ifnum{100>#1}{0}{}\@ifnum{10>#1}{0}{}\number#1}% + \@tempa\edef\@tempa{\special{line:\@tempa}}\@tempa + \vrule depth2.5\p@#2\leaders\hrule\hfil + }% +}% +\def\lineloop#1{% + \loopwhile{\loop@line\c@linecount{}\@ifnum{#1>\c@linecount}}% +}% +\def\linefoot#1{% + \loop@line\c@linecount{% + \footnote{% + #1\special{foot:#1}\vrule depth2.5\p@\leaders\hrule\hfill + }% + }% +}% +\let\@@mark\mark +\let\@@topmark\topmark +\let\@@firstmark\firstmark +\let\@@botmark\botmark +\let\@@splitfirstmark\splitfirstmark +\let\@@splitbotmark\splitbotmark +\def\@themark{{}{}{}{}}% +\def\nul@mark{{}{}{}{}\@@nul}% +\def\set@mark@netw@#1#2#3#4#5#6#7{\gdef#1{{#6}{#7}{#4}{#5}}\do@mark}% +\def\set@marktw@#1#2#3#4#5#6{\gdef#1{{#2}{#6}{#4}{#5}}\do@mark}% +\def\set@markthr@@#1#2#3#4#5#6{\gdef#1{{#2}{#3}{#6}{#5}}\do@mark}% +\def\get@mark@@ne#1#2#3#4#5\@@nul{#1}% +\def\get@mark@tw@#1#2#3#4#5\@@nul{#2}% +\def\get@mark@thr@@#1#2#3#4#5\@@nul{#3}% +\def\get@mark@f@ur#1#2#3#4#5\@@nul{#4}% +\def\mark@netw@{\expandafter\set@mark@netw@\expandafter\@themark\@themark}% +\def\marktw@{\expandafter\set@marktw@\expandafter\@themark\@themark}% +\def\markthr@@{\expandafter\set@markthr@@\expandafter\@themark\@themark}% +\def\do@mark{\do@@mark\@themark\nobreak@mark}% +\def\do@@mark#1{% + \begingroup + \let@mark + \@@mark{#1}% + \endgroup +}% +\def\let@mark{% + \let\protect\@unexpandable@protect + \let\label\relax + \let\index\relax + \let\glossary\relax +}% +\def\nobreak@mark{% + \@if@sw\if@nobreak\fi{\@ifvmode{\nobreak}{}}{}% +}% +\def\mark@envir{\markthr@@}% +\def\bot@envir{% + \expandafter\expandafter + \expandafter\get@mark@thr@@ + \expandafter\@@botmark + \nul@mark +}% +\def\markboth{\mark@netw@}% +\def\markright{\marktw@}% +\def\leftmark{% + \expandafter\expandafter + \expandafter\get@mark@@ne + \expandafter\saved@@botmark + \nul@mark +}% +\def\rightmark{% + \expandafter\expandafter + \expandafter\get@mark@tw@ + \expandafter\saved@@firstmark + \nul@mark +}% +\let\primitive@output\output +\long\def\@tempa#1\@@nil{#1}% + \toks@ +\expandafter\expandafter +\expandafter{% +\expandafter \@tempa + \the\primitive@output + \@@nil + }% +\newtoks\output@latex +\output@latex\expandafter{\the\toks@}% +\let\output\output@latex +\primitive@output{\dispatch@output}% +\def\dispatch@output{% + \let\par\@@par + \expandafter\let\expandafter\output@procedure\csname output@\the\outputpenalty\endcsname + \@ifnotrelax\output@procedure{}{% + \expandafter\def\expandafter\output@procedure\expandafter{\the\output@latex}% + }% + \expandafter\@ifx\expandafter{\csname output@-\the\execute@message@pen\endcsname\output@procedure}{% + \let\output@procedure\@message@saved + }{}% + \ltxgrid@info@sw{\class@info{\string\dispatch@output}\say\output@procedure\saythe\holdinginserts}{}% + \outputdebug@sw{\output@debug}{}% + \output@procedure +}% +\def\set@output@procedure#1#2{% + \count@\outputpenalty\advance\count@-#2% + \expandafter\let\expandafter#1\csname output@\the\count@\endcsname +}% +\def\output@debug{% + \def\@tempa{\save@message}% + \@ifx{\output@procedure\@tempa}{% + \true@sw + }{% + \@ifnum{\outputpenalty=-\save@column@insert@pen}{% + \@ifnum{\holdinginserts>\z@}% + }{% + \false@sw + }% + }% + {}{\output@debug@}% +}% +\def\output@debug@{% + \saythe\outputpenalty + \saythe\interlinepenalty + \saythe\brokenpenalty + \saythe\clubpenalty + \saythe\widowpenalty + \saythe\displaywidowpenalty + \saythe\predisplaypenalty + \saythe\interdisplaylinepenalty + \saythe\postdisplaypenalty + \saythe\badness + \say\thepagegrid + \saythe\pagegrid@col + \saythe\pagegrid@cur + \saythe\insertpenalties + \say\@@botmark + \saythe\pagegoal + \saythe\pagetotal + \saythe{\badness\@cclv}% + \say\@toplist + \say\@botlist + \say\@dbltoplist + \say\@deferlist + \trace@scroll{% + \showbox\@cclv + \showbox\@cclv@saved + \showbox\pagesofar + \showbox\csname col@1\endcsname + \showbox\footsofar + \showbox\footins + \showbox\footins@saved + \showlists + }% +}% +\@ifxundefined{\outputdebug@sw}{% + \@booleanfalse\outputdebug@sw +}{}% +\def\trace@scroll#1{\begingroup\showboxbreadth\maxdimen\showboxdepth\maxdimen\scrollmode#1\endgroup}% +\def\trace@box#1{\trace@scroll{\showbox#1}}% +\prepdef\@outputpage{\@outputpage@head}% +\let\@outputpage@head\@empty +\appdef\@outputpage{\@outputpage@tail}% +\let\@outputpage@tail\@empty +\def\show@box@size#1#2{% + \show@box@size@sw{% + \begingroup + \setbox\z@\vbox{\unvcopy#2\hrule}% + \class@info{Show box size: #1^^J% + (\the\ht\z@\space X \the\wd\z@) + \the\c@page\space\space\the\pagegrid@cur\space\the\pagegrid@col + }% + \endgroup + }{}% +}% +\def\show@text@box@size{% + \show@box@size{Text column}\@outputbox + \tally@box@size@sw{% + \@ifdim{\wd\@outputbox>\z@}{% + \dimen@\ht\@outputbox\divide\dimen@\@twopowerfourteen + \advance\dimen@-\dp\csname box@size@\the\pagegrid@col\endcsname + \@ifdim{\dimen@>\z@}{% + \advance\dimen@ \ht\csname box@size@\the\pagegrid@col\endcsname + \global\ht\csname box@size@\the\pagegrid@col\endcsname\dimen@ + \show@box@size@sw{% + \class@info{Column: \the\dimen@}% + }{}% + }{}% + }{}% + \global\dp\csname box@size@\the\pagegrid@col\endcsname\z@ + }{}% +}% +\def\show@pagesofar@size{% + \show@box@size{Page so far}\pagesofar + \dimen@\ht\pagesofar\divide\dimen@\@twopowerfourteen + \global\dp\csname box@size@1\endcsname\dimen@ + \show@box@size@sw{% + \class@info{Pagesofar: \the\dimen@}% + }{}% +}% +\@booleanfalse\tally@box@size@sw +\@booleanfalse\show@box@size@sw +\expandafter\newbox\csname box@size@1\endcsname +\expandafter\setbox\csname box@size@1\endcsname\hbox{}% +\expandafter\newbox\csname box@size@2\endcsname +\expandafter\setbox\csname box@size@2\endcsname\hbox{}% +\def\total@text{% + \@tempdima\the\ht\csname box@size@2\endcsname\divide\@tempdima\@twopowertwo\@tempcnta\@tempdima + \@tempdimb\the\ht\csname box@size@1\endcsname\divide\@tempdimb\@twopowertwo\@tempcntb\@tempdimb + \class@info{Total text: Column(\the\@tempcnta pt), Page(\the\@tempcntb pt)}% +}% +\def\natural@output{\toggle@insert{\output@holding}{\output@moving}}% +\output@latex{\natural@output}% +\def\output@holding{% + \csname output@init@\bot@envir\endcsname + \@if@exceed@pagegoal{\unvcopy\@cclv}{% + \setbox\z@\vbox{\unvcopy\@cclv}% + \outputdebug@sw{\trace@box\z@}{}% + \dimen@\ht\@cclv\advance\dimen@-\ht\z@ + \dead@cycle@repair\dimen@ + }{% + \dead@cycle + }% +}% +\def\@if@exceed@pagegoal#1{% + \begingroup + \setbox\z@\vbox{#1}% + \dimen@\ht\z@\advance\dimen@\dp\z@ + \outputdebug@sw{\saythe\dimen@}{}% + \@ifdim{\dimen@>\pagegoal}{% + \setbox\z@\vbox{\@@mark{}\unvbox\z@}% + \splittopskip\topskip + \splitmaxdepth\maxdepth + \vbadness\@M + \vfuzz\maxdimen + \setbox\tw@\vsplit\z@ to\pagegoal + \outputdebug@sw{\trace@scroll{\showbox\tw@\showbox\z@}}{}% + \setbox\tw@\vbox{\unvbox\tw@}% + \@ifdim{\ht\tw@=\z@}{% + \ltxgrid@info{Found overly large chunk while preparing to move insertions. Attempting repairs}% + \aftergroup\true@sw + }{% + \aftergroup\false@sw + }% + }{% + \aftergroup\false@sw + }% + \endgroup +}% +\def\output@moving{% + \set@top@firstmark + \@ifnum{\outputpenalty=\do@newpage@pen}{% + \setbox\@cclv\vbox{% + \unvbox\@cclv + \remove@lastbox + \@ifdim{\ht\z@=\ht\@protection@box}{\box\lastbox}{\unskip}% + }% + }{}% + \@cclv@nontrivial@sw{% + \expandafter\output@do@prep\csname output@prep@\bot@envir \endcsname + \@makecolumn\true@sw + \expandafter\output@column@do\csname output@column@\thepagegrid\endcsname + \protect@penalty\do@startcolumn@pen + \clearpage@sw{% + \protect@penalty\do@endpage@pen + }{}% + \expandafter\let\expandafter\output@post@\csname output@post@\bot@envir \endcsname + \outputdebug@sw{\say\output@post@}{}% + \@ifx{\output@post@\relax}{\output@post@document}{\output@post@}% + }{% + \void@cclv + }% + \set@colht + \global\@mparbottom\z@ + \global\@textfloatsheight\z@ +}% +\def\output@do@prep#1{% + \outputdebug@sw{\class@info{Prep: \string#1}}{}% + \@ifx{#1\relax}{\output@prep@document}{#1}% +}% +\def\output@column@do#1{% + \outputdebug@sw{\class@info{Output column: \string#1}}{}% + \@ifx{#1\relax}{\output@column@one}{#1}% +}% +\def\void@cclv{\begingroup\setbox\z@\box\@cclv\endgroup}% +\def\remove@lastbox{\setbox\z@\lastbox}% +\def\@cclv@nontrivial@sw{% + \@ifx@empty\@toplist{% + \@ifx@empty\@botlist{% + \@ifvoid\footins{% + \@ifvoid\@cclv{% + \false@sw + }{% + \setbox\z@\vbox{\unvcopy\@cclv}% + \@ifdim{\ht\z@=\topskip}{% + \setbox\z@\vbox\bgroup + \unvbox\z@ + \remove@lastbox + \dimen@\lastskip\unskip + \@ifdim{\ht\z@=\ht\@protection@box}{% + \advance\dimen@\ht\z@ + \@ifdim{\dimen@=\topskip}{% + \aftergroup\true@sw + }{% + \aftergroup\false@sw + }% + }{% + \aftergroup\false@sw + }% + \egroup + {% + \false@sw + }{% + \true@sw + }% + }{% + \@ifdim{\ht\z@=\z@}{% + \ltxgrid@info{Found trivial column. Discarding it}% + \outputdebug@sw{\trace@box\@cclv}{}% + \false@sw + }{% + \true@sw + }% + }% + }% + }{% + \true@sw + }% + }{% + \true@sw + }% + }{% + \true@sw + }% +}% +\def\protect@penalty#1{\protection@box\penalty-#1\relax}% +\newbox\@protection@box +\setbox\@protection@box\vbox to1986sp{\vfil}% +\def\protection@box{\nointerlineskip\copy\@protection@box}% +\def\dead@cycle@repair#1{% + \expandafter\do@@mark + \expandafter{% + \@@botmark + }% + \unvbox\@cclv + \nointerlineskip + \vbox to#1{\vss}% + \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}% +}% +\def\dead@cycle@repair@protected#1{% + \expandafter\do@@mark + \expandafter{% + \@@botmark + }% + \begingroup + \unvbox\@cclv + \remove@lastbox + \nointerlineskip + \advance#1-\ht\@protection@box + \vbox to#1{\vss}% + \protection@box % Reinsert protection box + \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}% + \endgroup +}% +\def\dead@cycle{% + \expandafter\do@@mark + \expandafter{% + \@@botmark + }% + \unvbox\@cclv + \@ifnum{\outputpenalty<\@M}{\penalty\outputpenalty}{}% +}% +\def\output@init@document{% + \ltxgrid@info@sw{\class@info{\string\output@init@document}}{}% + \global\vsize\vsize +}% +\def\output@prep@document{% + \ltxgrid@foot@info@sw{\class@info{\string\output@prep@document}\trace@scroll{\showbox\footins\showbox\footsofar}}{}% + \@ifvoid\footsofar{% + }{% + \global\setbox\footins\vbox\bgroup + \unvbox\footsofar + \@ifvoid\footins{}{% + \marry@baselines + \unvbox\footins + }% + \egroup + \ltxgrid@foot@info@sw{\trace@box\footins}{}% + }% +}% +\def\output@post@document{}% +\let\@opcol\@undefined + + +\def\@makecolumn#1{% + \ltxgrid@foot@info@sw{\class@info{\string\@makecolumn\string#1}}{}% + \setbox\@outputbox\vbox\bgroup + \boxmaxdepth\@maxdepth + \@tempdima\dp\@cclv + \unvbox\@cclv + \vskip-\@tempdima + \egroup + \xdef\@freelist{\@freelist\@midlist}\global\let\@midlist\@empty + \show@text@box@size + \@combinefloats + #1{% + \@combineinserts\@outputbox\footins + }{% + \combine@foot@inserts\footsofar\footins + }% + \set@adj@colht\dimen@ + \count@\vbadness + \vbadness\@M + \setbox\@outputbox\vbox to\dimen@\bgroup + \@texttop + \dimen@\dp\@outputbox + \unvbox\@outputbox + \vskip-\dimen@ + \@textbottom + \egroup + \vbadness\count@ + \global\maxdepth\@maxdepth +}% +\let\@makespecialcolbox\@undefined +\def\@combineinserts#1#2{% + \ltxgrid@foot@info@sw{\class@info{\string\@combineinserts\string#1\string#2}\trace@box#2}{}% + \setbox#1\vbox\bgroup + \unvbox#1% + \@ifvoid{#2}{}{% + \dimen@\ht#2\advance\dimen@\dp#2\advance\dimen@\skip#2% + \show@box@size{Combining inserts}#2% + \vskip\skip#2% + \setbox\z@\vbox{\footnoterule}\dimen@i\ht\z@ + \color@begingroup + \normalcolor + \cleaders\box\z@\vskip\dimen@i\kern-\dimen@i + \csname combine@insert@\the\pagegrid@col\endcsname#2% + \color@endgroup + \kern-\dimen@\kern\dimen@ + }% + \egroup + \ltxgrid@foot@info@sw{\trace@box#1}{}% +}% +\def\combine@insert@tw@#1{% + \compose@footnotes@two#1\@ifvbox{#1}{\unvbox}{\box}#1% +}% +\def\combine@insert@@ne#1{% + \compose@footnotes@one#1\@ifvbox{#1}{\unvbox}{\box}#1% +}% +\def\twocolumn@grid@setup{% + \expandafter\let\csname combine@insert@1\endcsname\combine@insert@tw@ + \expandafter\let\csname combine@insert@2\endcsname\combine@insert@@ne +}% +\def\onecolumn@grid@setup{% + \expandafter\let\csname combine@insert@1\endcsname\combine@insert@@ne + \expandafter\let\csname combine@insert@2\endcsname\combine@insert@@ne +}% +\let\columngrid@setup\onecolumn@grid@setup +\columngrid@setup +\appdef\@floatplacement{% + \global\@fpmin\@fpmin +}% +\mathchardef\pagebreak@pen=\@M +\expandafter\let\csname output@-\the\pagebreak@pen\endcsname\relax +\mathchardef\do@startcolumn@pen=10005 +\@namedef{output@-\the\do@startcolumn@pen}{\do@startcolumn}% +\def\do@startcolumn{% + \setbox\@cclv\vbox{\unvbox\@cclv\remove@lastbox\unskip}% + \clearpage@sw{\@clearfloatplacement}{\@floatplacement}% + \set@colht + \@booleanfalse\pfloat@avail@sw + \begingroup + \@colht\@colroom + \@booleanfalse\float@avail@sw + \@tryfcolumn\test@colfloat + \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}% + \endgroup + \fcolmade@sw{% + \setbox\@cclv\vbox{\unvbox\@outputbox\unvbox\@cclv}% + \outputpenalty-\pagebreak@pen + \dead@cycle + }{% + \begingroup + \let\@elt\@scolelt + \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b + \endgroup + \clearpage@sw{% + \outputpenalty\@M + }{% + \outputpenalty\do@newpage@pen + }% + \dead@cycle + }% + \check@deferlist@stuck\do@startcolumn + \set@vsize +}% +\def\@scolelt#1{\def\@currbox{#1}\@addtonextcol}% +\def\test@colfloat#1{% + \csname @floatselect@sw@\thepagegrid\endcsname#1{}{\@testtrue}% + \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}% +}% +\def\@addtonextcol{% + \begingroup + \@insertfalse + \@setfloattypecounts + \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{% + \@ifnum{\@fpstype=8 }{}{% + \@ifnum{\@fpstype=24 }{}{% + \@flsettextmin + \@reqcolroom \ht\@currbox + \advance \@reqcolroom \@textmin + \advance \@reqcolroom \vsize % take into account split insertions + \advance \@reqcolroom -\pagegoal + \@ifdim{\@colroom>\@reqcolroom}{% + \@flsetnum \@colnum + \@ifnum{\@colnum>\z@}{% + \@bitor\@currtype\@deferlist + \@if@sw\if@test\fi{}{% + \@addtotoporbot + }% + }{}% + }{}% + }% + }% + }{}% + \@if@sw\if@insert\fi{}{% + \@cons\@deferlist\@currbox + }% + \endgroup +}% +\mathchardef\do@startpage@pen=10006 +\@namedef{output@-\the\do@startpage@pen}{\do@startpage}% +\def\do@startpage{% + \setbox\@cclv\vbox{\unvbox\@cclv\remove@lastbox\unskip}% + \clearpage@sw{\@clearfloatplacement}{\@dblfloatplacement}% + \set@colht + \@booleanfalse\pfloat@avail@sw + \begingroup + \@booleanfalse\float@avail@sw + \@tryfcolumn\test@dblfloat + \float@avail@sw{\aftergroup\@booleantrue\aftergroup\pfloat@avail@sw}{}% + \endgroup + \fcolmade@sw{% + \global\setbox\pagesofar\vbox{\unvbox\pagesofar\unvbox\@outputbox}% + \@output@combined@page + }{% + \begingroup + \@booleanfalse\float@avail@sw + \let\@elt\@sdblcolelt + \let\reserved@b\@deferlist\global\let\@deferlist\@empty\reserved@b + \endgroup + \@ifdim{\@colht=\textheight}{% No luck... + \pfloat@avail@sw{% ...but a float *was* available! + \forcefloats@sw{% + \ltxgrid@warn{Forced dequeueing of floats stalled}% + }{% + \ltxgrid@warn{Dequeueing of floats stalled}% + }% + }{}% + }{}% + \outputpenalty\@M + \dead@cycle + }% + \check@deferlist@stuck\do@startpage + \set@colht +}% +\def\@output@combined@page{% + \@combinepage\true@sw + \@combinedblfloats + \@outputpage + \global\pagegrid@cur\@ne + \protect@penalty\do@startpage@pen +}% +\def\@sdblcolelt#1{\def\@currbox{#1}\@addtodblcol}% +\def\test@dblfloat#1{% + \@if@notdblfloat{#1}{\@testtrue}{}% + \@if@sw\if@test\fi{}{\aftergroup\@booleantrue\aftergroup\float@avail@sw}% +}% +\def\@if@notdblfloat#1{\@ifdim{\wd#1<\textwidth}}% +\@booleanfalse\forcefloats@sw +\def\@addtodblcol{% + \begingroup + \@if@notdblfloat{\@currbox}{% + \false@sw + }{% + \@setfloattypecounts + \@getfpsbit \tw@ + \@bitor \@currtype \@deferlist + \@if@sw\if@test\fi{% + \false@sw + }{% + \@ifodd\@tempcnta{% + \aftergroup\@booleantrue\aftergroup\float@avail@sw + \@flsetnum \@dbltopnum + \@ifnum{\@dbltopnum>\z@}{% + \@ifdim{\@dbltoproom>\ht\@currbox}{% + \true@sw + }{% + \@ifnum{\@fpstype<\sixt@@n}{% + \begingroup + \advance \@dbltoproom \@textmin + \@ifdim{\@dbltoproom>\ht\@currbox}{% + \endgroup\true@sw + }{% + \endgroup\false@sw + }% + }{% + \false@sw + }% + }% + }{% + \false@sw + }% + }{% + \false@sw + }% + }% + }% + {% + \@tempdima -\ht\@currbox + \advance\@tempdima + -\@ifx{\@dbltoplist\@empty}{\dbltextfloatsep}{\dblfloatsep}% + \global \advance \@dbltoproom \@tempdima + \global \advance \@colht \@tempdima + \global \advance \@dbltopnum \m@ne + \@cons \@dbltoplist \@currbox + }{% + \@cons \@deferlist \@currbox + }% + \endgroup +}% +\def\@tryfcolumn#1{% + \global\@booleanfalse\fcolmade@sw + \@ifx@empty\@deferlist{}{% + \global\let\@trylist\@deferlist + \global\let\@failedlist\@empty + \begingroup + \dimen@\vsize\advance\dimen@-\pagegoal\@ifdim{\dimen@>\z@}{% + \advance\@fpmin-\dimen@ + }{}% + \def\@elt{\@xtryfc#1}\@trylist + \endgroup + \fcolmade@sw{% + \global\setbox\@outputbox\vbox{\vskip \@fptop}% + \let \@elt \@wtryfc \@flsucceed + \global\setbox\@outputbox\vbox{\unvbox\@outputbox + \unskip \vskip \@fpbot + }% + \let \@elt \relax + \xdef\@deferlist{\@failedlist\@flfail}% + \xdef\@freelist{\@freelist\@flsucceed}% + }{}% + }% +}% +\def\@wtryfc #1{% + \global\setbox\@outputbox\vbox{\unvbox\@outputbox + \box #1\vskip\@fpsep + }% +}% +\def\@xtryfc#1#2{% + \@next\reserved@a\@trylist{}{}% trim \@trylist. Ugly! + \@currtype \count #2% + \divide\@currtype\@xxxii\multiply\@currtype\@xxxii + \@bitor \@currtype \@failedlist + \@testfp #2% + #1#2% + \@ifdim{\ht #2>\@colht }{\@testtrue}{}% + \@if@sw\if@test\fi{% + \@cons\@failedlist #2% + }{% + \begingroup + \gdef\@flsucceed{\@elt #2}% + \global\let\@flfail\@empty + \@tempdima\ht #2% + \def \@elt {\@ztryfc#1}\@trylist + \@ifdim{\@tempdima >\@fpmin}{% + \global\@booleantrue\fcolmade@sw + }{% + \@cons\@failedlist #2% + }% + \endgroup + \fcolmade@sw{% + \let \@elt \@gobble + }{}% + }% +}% +\def\@ztryfc #1#2{% + \@tempcnta \count#2% + \divide\@tempcnta\@xxxii\multiply\@tempcnta\@xxxii + \@bitor \@tempcnta {\@failedlist \@flfail}% + \@testfp #2% + #1#2% + \@tempdimb\@tempdima + \advance\@tempdimb \ht#2\advance\@tempdimb\@fpsep + \@ifdim{\@tempdimb >\@colht}{% + \@testtrue + }{}% + \@if@sw\if@test\fi{% + \@cons\@flfail #2% + }{% + \@cons\@flsucceed #2% + \@tempdima\@tempdimb + }% +}% +\def\newpage@prep{% + \if@noskipsec + \ifx \@nodocument\relax + \leavevmode + \global \@noskipsecfalse + \fi + \fi + \if@inlabel + \leavevmode + \global \@inlabelfalse + \fi + \if@nobreak \@nobreakfalse \everypar{}\fi + \par +}% +\def \newpage {% + \newpage@prep + \do@output@MVL{% + \vfil + \penalty-\pagebreak@pen + }% +}% +\def\clearpage{% + \newpage@prep + \do@output@MVL{% + \vfil + \penalty-\pagebreak@pen + \global\@booleantrue\clearpage@sw + \protect@penalty\do@startcolumn@pen + \protect@penalty\do@endpage@pen + }% + \do@output@MVL{% + \global\@booleanfalse\clearpage@sw + }% +}% +\def\cleardoublepage{% + \clearpage + \@if@sw\if@twoside\fi{% + \@ifodd\c@page{}{% + \null\clearpage + }% + }{}% +}% +\@booleanfalse\clearpage@sw +\mathchardef\do@endpage@pen=10007 +\@namedef{output@-\the\do@endpage@pen}{\csname end@column@\thepagegrid\endcsname}% +\mathchardef\do@newpage@pen=10001 +\expandafter\let\csname output@-\the\do@newpage@pen\endcsname\relax +\def\@clearfloatplacement{% + \global\@topnum \maxdimen + \global\@toproom \maxdimen + \global\@botnum \maxdimen + \global\@botroom \maxdimen + \global\@colnum \maxdimen + \global\@dbltopnum \maxdimen + \global\@dbltoproom \maxdimen + \global\@textmin \z@ + \global\@fpmin \z@ + \let\@testfp\@gobble + \appdef\@setfloattypecounts{\@fpstype16\advance\@fpstype\m@ne}% +}% +\let\@doclearpage\@undefined +\let\@makefcolumn\@undefined +\let\@makecol\@undefined +\def\clr@top@firstmark{% + \global\let\saved@@topmark\@undefined + \global\let\saved@@firstmark\@empty + \global\let\saved@@botmark\@empty +}% +\clr@top@firstmark +\def\set@top@firstmark{% + \@ifxundefined\saved@@topmark{\expandafter\gdef\expandafter\saved@@topmark\expandafter{\@@topmark}}{}% + \@if@empty\saved@@firstmark{\expandafter\gdef\expandafter\saved@@firstmark\expandafter{\@@firstmark}}{}% + \@if@empty\@@botmark{}{\expandafter\gdef\expandafter\saved@@botmark\expandafter{\@@botmark}}% +}% +\appdef\@outputpage@tail{% + \clr@top@firstmark +}% +\def\@float#1{% + \@ifnextchar[{% + \@yfloat\width@float{#1}% + }{% + \@ifxundefined@cs{fps@#1}{}{\expandafter\let\expandafter\fps@\csname fps@#1\endcsname}% + \expandafter\@argswap\expandafter{\expandafter[\fps@]}{\@yfloat\width@float{#1}}% + }% +}% +\def\@dblfloat#1{% + \@ifnum{\pagegrid@col=\@ne}{% + \@float{#1}% + }{% + \@ifnextchar[{% + \@yfloat\widthd@float{#1}% + }{% + \@ifxundefined@cs{fpsd@#1}{}{\expandafter\let\expandafter\fpsd@\csname fpsd@#1\endcsname}% + \expandafter\@argswap\expandafter{\expandafter[\fpsd@]}{\@yfloat\widthd@float{#1}}% + }% + }% +}% +\def\@yfloat#1#2[#3]{% + \@xfloat{#2}[#3]% + \hsize#1\linewidth\hsize + \let\set@footnotewidth\@empty + \minipagefootnote@init +}% +\def\fps@{tbp}% +\def\fpsd@{tp}% +\def\width@float{\columnwidth}% +\def\widthd@float{\textwidth}% +\def\end@float{% + \end@@float{% + \check@currbox@count + }% +}% +\def\end@dblfloat{% + \@ifnum{\pagegrid@col=\@ne}{% + \end@float + }{% + \end@@float{% + \@iffpsbit\@ne{\global\advance\count\@currbox\m@ne}{}% + \@iffpsbit\f@ur{\global\advance\count\@currbox-4\relax}{}% + \global\wd\@currbox\textwidth % Klootch + \check@currbox@count + }% + }% +}% +\def\end@@float#1{% + \minipagefootnote@here + \@endfloatbox + #1% + \@ifnum{\@floatpenalty <\z@}{% + \@largefloatcheck + \@cons\@currlist\@currbox + \@ifnum{\@floatpenalty <-\@Mii}{% + \do@output@cclv{\@add@float}% + }{% + \vadjust{\do@output@cclv{\@add@float}}% + \@Esphack + }% + }{}% +}% +\newcommand\float@end@float{% + \@endfloatbox + \global\setbox\@currbox\float@makebox\columnwidth + \let\@endfloatbox\relax + \end@float +}% +\newcommand\float@end@ltx{% + \end@@float{% + \global\setbox\@currbox\float@makebox\columnwidth + \check@currbox@count + }% +}% +\newcommand\newfloat@float[3]{% + \@namedef{ext@#1}{#3} %! + \let\float@do=\relax + \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}% + \@tempa + \floatplacement{#1}{#2}% + \@ifundefined{fname@#1}{\floatname{#1}{#1}}{} %! + \expandafter\edef\csname ftype@#1\endcsname{\value{float@type}}% + \addtocounter{float@type}{\value{float@type}} %! + \restylefloat{#1}% + \expandafter\edef\csname fnum@#1\endcsname{% + \expandafter\noexpand\csname fname@#1\endcsname{} %! + \expandafter\noexpand\csname the#1\endcsname + } + \@ifnextchar[%] + {% + \float@newx{#1}% + }{% + \@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}{}% + }% +}% +\newcommand\newfloat@ltx[3]{% + \@namedef{ext@#1}{#3}% + \let\float@do=\relax + \xdef\@tempa{\noexpand\float@exts{\the\float@exts \float@do{#3}}}% + \@tempa + \floatplacement{#1}{#2}% + \@ifundefined{fname@#1}{\floatname{#1}{#1}}{}% + \expandafter\edef\csname ftype@#1\expandafter\endcsname\expandafter{\the\c@float@type}% + \addtocounter{float@type}{\value{float@type}}% + \restylefloat{#1}% + \expandafter\edef\csname fnum@#1\endcsname{% + \expandafter\noexpand\csname fname@#1\endcsname{}% + \expandafter\noexpand\csname the#1\endcsname + } + \@ifnextchar[%] + {% + \float@newx{#1}% + }{% + \@ifundefined{c@#1}{\newcounter{#1}\@namedef{the#1}{\arabic{#1}}}{}% + }% +}% +\appdef\document@inithook{% + \@ifxundefined\newfloat{}{% + \@ifx{\float@end\float@end@float}{% + \@ifx{\newfloat\newfloat@float}{\true@sw}{\false@sw}% + }{\false@sw}% + {% + \class@warn{Repair the float package}% + \let\float@end\float@end@ltx + \let\newfloat\newfloat@ltx + }{% + \class@warn{Failed to patch the float package}% + }% + }% +}% +\def\@iffpsbit#1{% + \begingroup + \@tempcnta\count\@currbox + \divide\@tempcnta#1\relax + \@ifodd\@tempcnta{\aftergroup\true@sw}{\aftergroup\false@sw}% + \endgroup +}% +\def\check@currbox@count{% + \@ifnum{\count\@currbox>\z@}{% + \count@\count\@currbox\divide\count@\sixt@@n\multiply\count@\sixt@@n + \@tempcnta\count\@currbox\advance\@tempcnta-\count@ + \@ifnum{\@tempcnta=\z@}{% + \ltxgrid@warn{Float cannot be placed}% + }{}% + \expandafter\tally@float\expandafter{\@captype}% + }{% + }% +}% +\providecommand\minipagefootnote@init{}% +\providecommand\minipagefootnote@here{}% +\providecommand\tally@float[1]{}% +\let\@specialoutput\@undefined +\def\@add@float{% + \@pageht\ht\@cclv\@pagedp\dp\@cclv + \unvbox\@cclv + \@next\@currbox\@currlist{% + \csname @floatselect@sw@\thepagegrid\endcsname\@currbox{% + \@ifnum{\count\@currbox>\z@}{% + \advance \@pageht \@pagedp + \advance \@pageht \vsize \advance \@pageht -\pagegoal + \@addtocurcol + }{% + \@addmarginpar + }% + }{% + \@resethfps + \@cons\@deferlist\@currbox + }% + }{\@latexbug}% + \@ifnum{\outputpenalty<\z@}{% + \@if@sw\if@nobreak\fi{% + \nobreak + }{% + \addpenalty \interlinepenalty + }% + }{}% + \set@vsize +}% +\let\@reinserts\@undefined +\def \@addtocurcol {% + \@insertfalse + \@setfloattypecounts + \ifnum \@fpstype=8 + \else + \ifnum \@fpstype=24 + \else + \@flsettextmin + \advance \@textmin \@textfloatsheight + \@reqcolroom \@pageht + \ifdim \@textmin>\@reqcolroom + \@reqcolroom \@textmin + \fi + \advance \@reqcolroom \ht\@currbox + \ifdim \@colroom>\@reqcolroom + \@flsetnum \@colnum + \ifnum \@colnum>\z@ + \@bitor\@currtype\@deferlist + \if@test + \else + \@bitor\@currtype\@botlist + \if@test + \@addtobot + \else + \ifodd \count\@currbox + \advance \@reqcolroom \intextsep + \ifdim \@colroom>\@reqcolroom + \global \advance \@colnum \m@ne + \global \advance \@textfloatsheight \ht\@currbox + \global \advance \@textfloatsheight 2\intextsep + \@cons \@midlist \@currbox + \if@nobreak + \nobreak + \@nobreakfalse + \everypar{}% + \else + \addpenalty \interlinepenalty + \fi + \vskip \intextsep + \unvbox\@currbox %AO + \penalty\interlinepenalty + \vskip\intextsep + \ifnum\outputpenalty <-\@Mii \vskip -\parskip\fi + \outputpenalty \z@ + \@inserttrue + \fi + \fi + \if@insert + \else + \@addtotoporbot + \fi + \fi + \fi + \fi + \fi + \fi + \fi + \if@insert + \else + \@resethfps + \@cons\@deferlist\@currbox + \fi +}% + +\def\@addmarginpar{% + \@next\@marbox\@currlist{% + \@cons\@freelist\@marbox\@cons\@freelist\@currbox + }\@latexbug + \setbox\@marbox\hb@xt@\columnwidth{% + \csname @addmarginpar@\thepagegrid\endcsname{% + \hskip-\marginparsep\hskip-\marginparwidth + \box\@currbox + }{% + \hskip\columnwidth\hskip\marginparsep + \box\@marbox + }% + \hss + }% + \setbox\z@\box\@currbox + \@tempdima\@mparbottom + \advance\@tempdima -\@pageht + \advance\@tempdima\ht\@marbox + \@ifdim{\@tempdima >\z@}{% + \@latex@warning@no@line {Marginpar on page \thepage\space moved}% + }{% + \@tempdima\z@ + }% + \global\@mparbottom\@pageht + \global\advance\@mparbottom\@tempdima + \global\advance\@mparbottom\dp\@marbox + \global\advance\@mparbottom\marginparpush + \advance\@tempdima -\ht\@marbox + \global\setbox \@marbox + \vbox {\vskip \@tempdima + \box \@marbox}% + \global \ht\@marbox \z@ + \global \dp\@marbox \z@ + \kern -\@pagedp + \nointerlineskip + \box\@marbox + \nointerlineskip + \hbox{\vrule \@height\z@ \@width\z@ \@depth\@pagedp}% +}% +\newenvironment{turnpage}{% + \def\width@float{\textheight}% + \def\widthd@float{\textheight}% + \appdef\@endfloatbox{% + \@ifxundefined\@currbox{% + \ltxgrid@warn{Cannot rotate! Not a float}% + }{% + \setbox\@currbox\vbox to\textwidth{\vfil\unvbox\@currbox\vfil}% + \global\setbox\@currbox\vbox{\rotatebox{90}{\box\@currbox}}% + }% + }% +}{% +}% +\def\rotatebox@dummy#1#2{% + \ltxgrid@warn{You must load the graphics or graphicx package in order to use the turnpage environment}% + #2% +}% +\appdef\document@inithook{% + \@ifxundefined\rotatebox{\let\rotatebox\rotatebox@dummy}{}% +}% +\@namedef{output@-1073741824}{% + \deadcycles\z@ + \void@cclv +}% +\mathchardef\save@column@pen=10016 +\@namedef{output@-\the\save@column@pen}{\save@column}% +\let \@cclv@saved \@holdpg +\let \@holdpg \@undefined +\def\save@column{% + \@ifvoid\@cclv@saved{% + \set@top@firstmark + \global\@topmark@saved\expandafter{\@@topmark}% + }{}% + \global\setbox\@cclv@saved\vbox{% + \@ifvoid\@cclv@saved{}{% + \unvbox\@cclv@saved + \marry@baselines + }% + \unvbox\@cclv + \lose@breaks + \remove@lastbox + }% +}% +\newtoks\@topmark@saved +\def\prep@cclv{% + \void@cclv + \setbox\@cclv\box\@cclv@saved + \vbadness\@M +}% +\mathchardef\save@column@insert@pen=10017 +\@namedef{output@-\the\save@column@insert@pen}{\toggle@insert{\savecolumn@holding}{\savecolumn@moving}}% +\def\savecolumn@holding{% + \@if@exceed@pagegoal{\unvcopy\@cclv\remove@lastbox}{% + \setbox\z@\vbox{\unvcopy\@cclv\remove@lastbox}% + \outputdebug@sw{\trace@box\z@}{}% + \dimen@\ht\@cclv\advance\dimen@-\ht\z@ + \dead@cycle@repair@protected\dimen@ + }{% + \dead@cycle + }% +}% +\def\savecolumn@moving{% + \ltxgrid@info@sw{\class@info{\string\savecolumn@moving}}{}% + \@cclv@nontrivial@sw{% + \save@column + }{% + \void@cclv + }% + \@ifvoid\footins{}{% + \ltxgrid@foot@info@sw{\class@info{\string\savecolumn@moving}\trace@scroll{\showbox\footins@saved\showbox\footins}}{}% + \@ifvoid\footins@saved{% + \global\setbox\footins@saved\box\footins + }{% + \global\setbox\footins@saved\vbox\bgroup + \unvbox\footins@saved + \marry@baselines + \unvbox\footins + \egroup + }% + \ltxgrid@foot@info@sw{\trace@box\footins@saved}{}% + \protect@penalty\save@column@insert@pen + }% +}% +\newbox\footins@saved +\newbox\footins@recovered +\newbox\column@recovered +\mathchardef\save@message@pen=10018 +\@namedef{output@-\the\save@message@pen}{\save@message}% +\def\save@message{% + \void@cclv + \toks@\expandafter{\@@firstmark}% + \expandafter\gdef\expandafter\@message@saved\expandafter{\the\toks@}% + \expandafter\do@@mark\expandafter{\the\@topmark@saved}% +}% +\gdef\@message@saved{}% +\mathchardef\execute@message@pen=10019 +\@namedef{output@-\the\execute@message@pen}{\@message@saved}% +\def\execute@message{% + \@execute@message\save@column@pen +}% +\def\execute@message@insert#1{% + \@execute@message\save@column@insert@pen{% + \setbox \footins \box \footins@saved + \ltxgrid@foot@info@sw{\class@info{\string\execute@message@insert}\trace@box\footins}{}% + #1% + }% +}% +\long\def\@execute@message#1#2{% + \begingroup + \dimen@\prevdepth\@ifdim{\dimen@<\z@}{\dimen@\z@}{}% + \setbox\z@\vbox{% + \protect@penalty#1% + \protection@box + \toks@{\prep@cclv#2}% + \@@mark{\the\toks@}% + \penalty-\save@message@pen + \setbox\z@\null\dp\z@\dimen@\ht\z@-\dimen@ + \nointerlineskip\box\z@ + \penalty-\execute@message@pen + }\unvbox\z@ + \endgroup +}% +\def\do@output@cclv{\execute@message}% +\def\do@output@MVL#1{% + \@ifvmode{% + \begingroup\execute@message{\unvbox\@cclv#1}\endgroup + }{% + \@ifhmode{% + \vadjust{\execute@message{\unvbox\@cclv#1}}% + }{% + \@latexerr{\string\do@output@MVL\space cannot be executed in this mode!}\@eha + }% + }% +}% +\def\lose@breaks{% + \loopwhile{% + \count@\lastpenalty + \@ifnum{\count@=\@M}{% + \unpenalty\true@sw + }{% + \false@sw + }% + }% +}% +\def\removestuff{\do@output@MVL{\unskip\unpenalty}}% +\def\removephantombox{% + \vadjust{% + \execute@message{% + \unvbox\@cclv + \remove@lastbox + \unskip + \unskip + \unpenalty + \penalty\predisplaypenalty + \vskip\abovedisplayskip + }% + }% +}% +\def\addstuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@addstuff{#1}{#2}}}\@tempa}% +\def\@addstuff#1#2{% + \skip@\lastskip\unskip + \count@\lastpenalty\unpenalty + \@if@empty{#1}{}{\penalty#1\relax}% + \@ifnum{\count@=\z@}{}{\penalty\count@}% + \vskip\skip@ + \@if@empty{#2}{}{\vskip#2\relax}% +}% +\def\replacestuff#1#2{\edef\@tempa{\noexpand\do@output@MVL{\noexpand\@replacestuff{#1}{#2}}}\@tempa}% +\def\@replacestuff#1#2{% + \skip@\lastskip\unskip + \count@\lastpenalty\unpenalty + \@if@empty{#1}{}{% + \@ifnum{\count@>\@M}{}{% + \@ifnum{\count@=\z@}{\count@=#1\relax}{% + \@ifnum{\count@<#1\relax}{}{% + \count@=#1\relax + }% + }% + }% + }% + \@ifnum{\count@=\z@}{}{\penalty\count@}% + \@if@empty{#2}{}{% + \@tempskipa#2\relax + \@ifdim{\z@>\@tempskipa}{% + \advance\skip@-\@tempskipa + }{% + \@ifdim{\skip@>\@tempskipa}{}{% + \skip@\@tempskipa + }% + }% + }% + \vskip\skip@ +}% +\def\move@insertions{\global\holdinginserts\z@}% +\def\hold@insertions{\global\holdinginserts\@ne}% +\hold@insertions +\def\toggle@insert#1#2{% + \@ifnum{\holdinginserts>\z@}{\move@insertions#1}{\hold@insertions#2}% +}% +\def\do@columngrid#1#2{% + \par + \expandafter\let\expandafter\@tempa\csname open@column@#1\endcsname + \@ifx{\relax\@tempa}{% + \ltxgrid@warn{Unknown page grid #1. No action taken}% + }{% + \do@output@MVL{\start@column{#1}{#2}}% + }% +}% +\def\start@column#1#2{% + \def\@tempa{#1}\@ifx{\@tempa\thepagegrid}{% + \ltxgrid@info{Already in page grid \thepagegrid. No action taken}% + }{% + \expandafter\execute@message@insert + \expandafter{% + \csname shut@column@\thepagegrid\expandafter\endcsname + \csname open@column@#1\endcsname{#2}% + \set@vsize + }% + }% +}% +\def\thepagegrid{one}% +\newbox\pagesofar +\newbox\footsofar +\def\combine@foot@inserts#1#2{% + \ltxgrid@info@sw{\class@info{\string\combine@foot@inserts\string#1\string#2}}{}% + \@ifvoid#1{% + \ltxgrid@foot@info@sw{\trace@box#2}{}\global\setbox#1\box#2% + }{% + \global\setbox#1\vbox\bgroup + \ltxgrid@foot@info@sw{\trace@box#1}{}\unvbox#1% + \@ifvoid#2{}{% + \marry@baselines + \ltxgrid@foot@info@sw{\trace@box#2}{}\unvbox#2% + }% + \egroup + }% + \ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2}}{}% +}% +\newcommand\onecolumngrid{\do@columngrid{one}{\@ne}}% +\let\onecolumn\@undefined +\def\open@column@one#1{% + \ltxgrid@info@sw{\class@info{\string\open@column@one\string#1}}{}% + \unvbox\pagesofar + \@ifvoid{\footsofar}{}{% + \insert\footins\bgroup\unvbox\footsofar\egroup + \penalty\z@ + }% + \gdef\thepagegrid{one}% + \global\pagegrid@col#1% + \global\pagegrid@cur\@ne + \global\count\footins\@m + \global\divide\count\footins\tw@ + \set@column@hsize\pagegrid@col + \set@colht +}% +\def\shut@column@one{% + \ltxgrid@info@sw{\class@info{\string\shut@column@one}}{}% + \@makecolumn\false@sw + \global\setbox\pagesofar\vbox\bgroup + \recover@column\@outputbox\footsofar\column@recovered\footins@recovered + \egroup + \begingroup\setbox\z@\box\@outputbox\endgroup + \combine@foot@inserts\footsofar\footins + \set@colht +}% +\def\float@column@one{% + \@makecolumn\true@sw + \@outputpage +}% +\def\end@column@one{% + \unvbox\@cclv\remove@lastbox + \protect@penalty\do@newpage@pen +}% +\def\output@column@one{% + \@outputpage +}% +\def\@addmarginpar@one{% + \@if@sw\if@mparswitch\fi{% + \@ifodd\c@page{\false@sw}{\true@sw}% + }{\false@sw}{% + \@if@sw\if@reversemargin\fi{\false@sw}{\true@sw}% + }{% + \@if@sw\if@reversemargin\fi{\true@sw}{\false@sw}% + }% +}% +\def\@floatselect@sw@one#1{\true@sw}% +\def\onecolumngrid@push{% + \do@output@MVL{% + \@ifnum{\pagegrid@col=\@ne}{% + \global\let\restorecolumngrid\@empty + }{% + \xdef\restorecolumngrid{% + \noexpand\start@column{\thepagegrid}{\the\pagegrid@col}% + }% + \start@column{one}{\@ne}% + }% + }% +}% +\def\onecolumngrid@pop{% + \do@output@MVL{\restorecolumngrid}% +}% +\newcommand\twocolumngrid{\do@columngrid{mlt}{\tw@}}% +\let\twocolumn\@undefined +\let\@topnewpage\@undefined +\def\open@column@mlt#1{% + \ltxgrid@info@sw{\class@info{\string\open@column@mlt\string#1}}{}% + \@ifvoid{\footsofar}{}{% + \insert\footins\bgroup\unvbox\footsofar\egroup + }% + \gdef\thepagegrid{mlt}% + \global\pagegrid@col#1% + \global\pagegrid@cur\@ne + \global\count\footins\@m + \set@column@hsize\pagegrid@col + \set@colht +}% +\def\shut@column@mlt{% + \ltxgrid@info@sw{\class@info{\string\shut@column@mlt}}{}% + \@cclv@nontrivial@sw{% + \@makecolumn\false@sw + \@ifnum{\pagegrid@cur<\pagegrid@col}{% + \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox + \global\advance\pagegrid@cur\@ne + }{}% + }{% + \void@cclv + }% + \@ifnum{\pagegrid@cur>\@ne}{% + \csname balance@\the\pagegrid@col\endcsname + \grid@column\@outputbox{}% + \@combinepage\false@sw + \@combinedblfloats + \global\setbox\pagesofar\box\@outputbox + \show@pagesofar@size + }{}% + \set@colht +}% +\def\float@column@mlt{% + \@output@combined@page +}% +\def\end@column@mlt{% + \@ifx@empty\@toplist{% + \@ifx@empty\@botlist{% + \@ifx@empty\@dbltoplist{% + \@ifx@empty\@deferlist{% + \@ifnum{\pagegrid@cur=\@ne}{% + \false@sw + }{% + \true@sw + }% + }{% + \true@sw + }% + }{% + \true@sw + }% + }{% + \true@sw + }% + }{% + \true@sw + }% + % true = kick out a column and try again + {% + \@cclv@nontrivial@sw{% + \unvbox\@cclv\remove@lastbox + }{% + \unvbox\@cclv\remove@lastbox\unskip\null + }% + \protect@penalty\do@newpage@pen + \protect@penalty\do@endpage@pen + }{% + \unvbox\@cclv\remove@lastbox + }% +}% +\def\output@column@mlt{% + \@ifnum{\pagegrid@cur<\pagegrid@col}{% + \expandafter\global\expandafter\setbox\csname col@\the\pagegrid@cur\endcsname\box\@outputbox + \global\advance\pagegrid@cur\@ne + }{% + \set@adj@colht\dimen@ + \grid@column\@outputbox{}% + \@output@combined@page + }% +}% +\let\@outputdblcol\@undefined +\def\@floatselect@sw@mlt#1{\@if@notdblfloat{#1}}% +\def\@addmarginpar@mlt{% emits a boolean + \@ifnum{\pagegrid@cur=\@ne}% +}% +\def\set@footnotewidth@one{% + \hsize\columnwidth + \linewidth\hsize +}% +\def\set@footnotewidth@two{\set@footnotewidth@mlt\tw@}% +\def\set@footnotewidth@mlt#1{% + \hsize\textwidth + \advance\hsize\columnsep + \divide\hsize#1% + \advance\hsize-\columnsep + \linewidth\hsize +}% +\def\compose@footnotes@one#1{% + \ltxgrid@foot@info@sw{\class@info{\string\compose@footnotes@one\string#1}\trace@box#1}{}% +}% +\let\compose@footnotes\compose@footnotes@one +\def\compose@footnotes@two#1{% + \ltxgrid@foot@info@sw{\class@info{\string\compose@footnotes@two\string#1}\trace@box#1}{}% + \setbox\z@\box\@tempboxa + \let\recover@column\recover@column@null + \let\marry@baselines\@empty + \balance@two#1\@tempboxa + \global\setbox#1\hbox to\textwidth{\box#1\hfil\box\@tempboxa}% + \ltxgrid@foot@info@sw{\trace@box#1}{}% +}% +\let\pagegrid@cur\col@number +\let\col@number\@undefined +\newcount\pagegrid@col +\pagegrid@cur\@ne +\expandafter\let\csname col@\the\pagegrid@cur\endcsname\@leftcolumn +\let\@leftcolumn\@undefined +\pagegrid@col\tw@ +\def\pagegrid@init{% + \advance\pagegrid@cur\@ne + \@ifnum{\pagegrid@cur<\pagegrid@col}{% + \csname newbox\expandafter\endcsname\csname col@\the\pagegrid@cur\endcsname + \pagegrid@init + }{% + }% +}% +\appdef\class@documenthook{% + \pagegrid@init +}% +\def\grid@column#1#2{% + \ltxgrid@info@sw{\class@info{\string\grid@column\string#1}}{}% + \global\setbox#1\vbox\bgroup + \hb@xt@\textwidth\bgroup + \vrule\@height\z@\@width\z@\@if@empty{#2}{}{\@depth#2}% + \pagegrid@cur\@ne + \@ifnum{\pagegrid@cur<\pagegrid@col}{\loopwhile{\append@column@\pagegrid@cur\pagegrid@col}}{}% + \box@column#1% + \egroup + \vskip\z@skip + \egroup +}% +\def\append@column@#1#2{% + \expandafter\box@column\csname col@\the#1\endcsname + \hfil\vrule\@width\columnseprule\hfil + \advance#1\@ne + \@ifnum{#1<#2}% +}% +\def\box@column#1{% + \ltxgrid@info@sw{\class@info{\string\box@column\string#1}}{}% + \raise\topskip + \hb@xt@\columnwidth\bgroup + \dimen@\ht#1\@ifdim{\dimen@>\@colht}{\dimen@\@colht}{}% + \count@\vbadness\vbadness\@M + \dimen@ii\vfuzz\vfuzz\maxdimen + \ltxgrid@info@sw{\saythe\@colht\saythe\dimen@}{}% + \vtop to\dimen@\bgroup + \hrule\@height\z@ + \unvbox#1% + \raggedcolumn@skip + \egroup + \vfuzz\dimen@ii + \vbadness\count@ + \hss + \egroup +}% +\def\marry@baselines{% + \begingroup + \setbox\z@\lastbox + \@ifvoid{\z@}{% + \endgroup + }{% + \aftergroup\kern + \aftergroup-% + \expandafter\box\expandafter\z@\expandafter\endgroup\the\dp\z@\relax + }% + \vskip\marry@skip\relax +}% +\gdef\marry@skip{\z@skip}% +\def\set@marry@skip{% + \begingroup + \skip@\baselineskip\advance\skip@-\topskip + \@ifdim{\skip@>\z@}{% + \xdef\marry@skip{\the\skip@}% + }{}% + \endgroup +}% +\appdef\document@inithook{% + \@ifxundefined\raggedcolumn@sw{\@booleanfalse\raggedcolumn@sw}{}% +}% +\def\raggedcolumn@skip{% + \vskip\z@\raggedcolumn@sw{\@plus.0001fil\@minus.0001fil}{}\relax +}% +\def\@combinepage#1{% + \ltxgrid@foot@info@sw{\class@info{\string\@combinepage\string#1}}{}% + \@ifvoid\pagesofar{}{% + \setbox\@outputbox\vbox{% + \unvbox\pagesofar + \marry@baselines + \unvbox\@outputbox + }% + }% + #1{% + \@ifvoid\footsofar{}{% + \show@box@size{Combining page footnotes}\footsofar + \setbox\footins\box\footsofar + \compose@footnotes + \@combineinserts\@outputbox\footins + }% + }{% + }% +}% +\def \@cflt{% + \let \@elt \@comflelt + \setbox\@tempboxa \vbox{}% + \@toplist + \setbox\@outputbox \vbox{% + \boxmaxdepth \maxdepth + \unvbox\@tempboxa\unskip + \topfigrule\vskip \textfloatsep + \unvbox\@outputbox + }% + \let\@elt\relax + \xdef\@freelist{\@freelist\@toplist}% + \global\let\@toplist\@empty +}% +\def \@cflb {% + \let\@elt\@comflelt + \setbox\@tempboxa \vbox{}% + \@botlist + \setbox\@outputbox \vbox{% + \unvbox\@outputbox + \vskip \textfloatsep\botfigrule + \unvbox\@tempboxa\unskip + }% + \let\@elt\relax + \xdef\@freelist{\@freelist\@botlist}% + \global \let \@botlist\@empty +}% +\def\@combinedblfloats{% + \@ifx@empty\@dbltoplist{}{% + \setbox\@tempboxa\vbox{}% + \let\@elt\@comdblflelt\@dbltoplist + \let\@elt\relax\xdef\@freelist{\@freelist\@dbltoplist}% + \global\let\@dbltoplist\@empty + \setbox\@outputbox\vbox{% + \unvbox\@tempboxa\unskip + \@ifnum{\@dbltopnum>\m@ne}{\dblfigrule}{}%FIXME: how is \@dbltopnum maintained? + \vskip\dbltextfloatsep + \unvbox\@outputbox + }% + }% +}% +\def\set@column@hsize#1{% + \pagegrid@col#1% + \global\columnwidth\textwidth + \global\advance\columnwidth\columnsep + \global\divide\columnwidth\pagegrid@col + \global\advance\columnwidth-\columnsep + \global\hsize\columnwidth + \global\linewidth\columnwidth + \skip@\baselineskip\advance\skip@-\topskip + \@ifnum{\pagegrid@col>\@ne}{\set@marry@skip}{}% +}% +\def\set@colht{% + \set@adj@textheight\@colht + \global\let\enlarge@colroom\@empty + \set@colroom +}% +\def\set@adj@textheight#1{% + \ltxgrid@info@sw{\class@info{\string\set@adj@textheight\string#1}\saythe\textheight}{}% + #1\textheight + \def\@elt{\adj@page#1}% + \@booleantrue\firsttime@sw\@dbltoplist + \let\@elt\relax + \global#1#1\relax + \ltxgrid@info@sw{\saythe#1}{}% +}% +\def\set@colroom{% + \ltxgrid@info@sw{\class@info{\string\set@colroom}}{}% + \set@adj@colht\@colroom + \@if@empty\enlarge@colroom{}{% + \global\advance\@colroom\enlarge@colroom\relax + \ltxgrid@info@sw{\saythe\@colroom}{}% + }% + \@ifdim{\@colroom>\topskip}{}{% + \ltxgrid@info{Not enough room: \string\@colroom=\the\@colroom; increasing to \the\topskip}% + \@colroom\topskip + }% + \global\@colroom\@colroom + \set@vsize +}% +\def\set@vsize{% + \global\vsize\@colroom + \ltxgrid@info@sw{\class@info{\string\set@vsize\string\vsize=\string\colroom}\saythe\vsize}{}% +}% +\def\set@adj@colht#1{% + #1\@colht + \ltxgrid@info@sw{\class@info{\string\set@adj@colht\string#1-\string\pagesofar}\saythe#1}{}% + \@ifvoid\pagesofar{}{% + \advance#1-\ht\pagesofar\advance#1-\dp\pagesofar + \ltxgrid@info@sw{\class@info{\string\pagesofar}\saythe#1}{}% + }% + \def\@elt{\adj@column#1}% + \@booleantrue\firsttime@sw\@toplist + \@booleantrue\firsttime@sw\@botlist + \let\@elt\relax +}% +\def\adj@column#1#2{% + \advance#1-\ht#2% + \advance#1-\firsttime@sw{\textfloatsep\@booleanfalse\firsttime@sw}{\floatsep}% + \ltxgrid@info@sw{\class@info{\string\adj@column\string#1-\string#2}\saythe#1}{}% +}% +\def\adj@page#1#2{% + \advance#1-\ht#2% + \advance#1-\firsttime@sw{\dbltextfloatsep\@booleanfalse\firsttime@sw}{\dblfloatsep}% + \ltxgrid@info@sw{\class@info{\string\adj@page\string#1-\string#2}\saythe#1}{}% +}% +\def\set@adj@box#1#2{% + \@ifvoid#2{}{% + \advance#1-\ht#2\advance#1-\dp#2% + \@booleantrue\temp@sw + \ltxgrid@foot@info@sw{\class@info{\string\set@adj@box\string#2}\saythe#1}{}% + }% +}% +\appdef\@outputpage@tail{% + \set@colht % FIXME: needed? + \@floatplacement % FIXME: needed? + \@dblfloatplacement % FIXME: needed? +}% +\begingroup + \catcode`\1=\cat@letter + \catcode`\2=\cat@letter + \toks@{% + \setbox\footins\box\footsofar + \balance@two\col@1\@outputbox + \global\setbox\col@1\box\col@1 + \global\setbox\@outputbox\box\@outputbox + \combine@foot@inserts\footsofar\footins + }% + \aftergroup\def\aftergroup\balance@2\expandafter +\endgroup\expandafter{\the\toks@}% +\def\balance@two#1#2{% + \ltxgrid@info@sw{\class@info{\string\balance@two\string#1\string#2}}{}% + \outputdebug@sw{\trace@scroll{\showbox#1\showbox#2}}{}% + \setbox\thr@@\copy\footsofar + \setbox\@ne\vbox\bgroup + \@ifvoid{#1}{}{% + \recover@column#1\footsofar\column@recovered\footins@recovered + \@ifvoid{#2}{}{\marry@baselines}% + }% + \@ifvoid{#2}{}{% + \recover@column#2\footsofar\column@recovered\footins@recovered + }% + \egroup + \outputdebug@sw{\trace@scroll{\showbox\@ne}}{}% + \ltxgrid@foot@info@sw{\trace@scroll{\showbox\footsofar}}{}% + \dimen@\ht\@ne\divide\dimen@\tw@ + \dimen@i\dimen@ + \vbadness\@M + \vfuzz\maxdimen + \splittopskip\topskip + \loopwhile{% + \setbox\z@\copy\@ne\setbox\tw@\vsplit\z@ to\dimen@ + \remove@depth\z@\remove@depth\tw@ + \dimen@ii\ht\tw@\advance\dimen@ii-\ht\z@ + \dimen@i=.5\dimen@i + \ltxgrid@info@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}% + \@ifdim{\dimen@ii<.5\p@}{% + \@ifdim{\dimen@ii>-.5\p@}% + }{% + \false@sw + }% + {% + \true@sw + }{% + \@ifdim{\dimen@i<.5\p@}% + }% + {% + \false@sw + }% + {% + \advance\dimen@\@ifdim{\dimen@ii<\z@}{}{-}\dimen@i + \true@sw + }% + }% + \ltxgrid@info@sw{\saythe\dimen@\saythe\dimen@i\saythe\dimen@ii}{}% + \@ifdim{\ht\z@=\z@}{% + \@ifdim{\ht\tw@=\z@}% + }{% + \true@sw + }% + {% + }{% + \ltxgrid@info{Unsatifactorily balanced columns: giving up}% + \setbox\tw@\box#1% + \setbox\z@ \box#2% + \global\setbox\footsofar\box\thr@@ + }% + \setbox\tw@\vbox{\unvbox\tw@\vskip\z@skip}% + \setbox\z@ \vbox{\unvbox\z@ \vskip\z@skip}% + \set@colht + \dimen@\ht\z@\@ifdim{\dimen@<\ht\tw@}{\dimen@\ht\tw@}{}% + \@ifdim{\dimen@>\@colroom}{\dimen@\@colroom}{}% + \ltxgrid@info@sw{\saythe{\ht\z@}\saythe{\ht\tw@}\saythe\@colroom\saythe\dimen@}{}% + \setbox#1\vbox to\dimen@{\unvbox\tw@\unskip\raggedcolumn@skip}% + \setbox#2\vbox to\dimen@{% + \unvbox\z@ \unskip\raggedcolumn@skip}% + \outputdebug@sw{\trace@scroll{\showbox#1\showbox#2}}{}% +}% +\def\remove@depth#1{% + \setbox#1\vbox\bgroup + \unvcopy#1% + \setbox\z@\vbox\bgroup + \unvbox#1% + \setbox\z@\lastbox + \aftergroup\kern\aftergroup-\expandafter + \egroup + \the\dp\z@\relax + \egroup +}% +\def\recover@column#1#2#3#4{% + \ltxgrid@info@sw{\class@info{\string\recover@column\string#1\string#2\string#3\string#4}}{}% + \setbox#4\vbox{\unvcopy#1}% + \ltxgrid@foot@info@sw{\trace@scroll{\showbox#4}}{}% + \dimen@\ht#4% + \ltxgrid@foot@info@sw{\saythe\dimen@}{}% + \setbox#4\vbox\bgroup + \unvbox#4\unskip + \dimen@i\lastkern\unkern\advance\dimen@i\lastkern + \@ifdim{\dimen@i=\z@}{% + \dimen@i\lastkern\unkern + \ltxgrid@foot@info@sw{\saythe\dimen@i}{}% + \aftergroup\dimen@i + \expandafter\egroup\the\dimen@i\relax + }{% + \egroup + }% + \@ifdim{\dimen@i<\z@}{% + \advance\dimen@\dimen@i + \ltxgrid@foot@info@sw{\saythe\dimen@i\saythe\dimen@}{}% + \splittopskip\z@skip + \global\setbox#3\vsplit#4 to\dimen@ + \global\setbox#4\vbox{\unvbox#4}% + \ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2\showbox#3\showbox#4}}{}% + \global\setbox#2\vbox\bgroup\unvbox#2\vskip\z@skip\unvbox#4\egroup + }{% + \setbox#3\box#4% + \ltxgrid@foot@info@sw{\trace@scroll{\showbox#1\showbox#2\showbox#3\showbox#4}}{}% + }% + \unvbox#3% + \loopwhile{\dimen@\lastskip\@ifdim{\dimen@>\z@}{\unskip\true@sw}{\false@sw}}% +}% +\def\recover@column@null#1#2#3#4{% + \unvcopy#1% +}% +\rvtx@ifformat@geq{2020/10/01}% + {% + \AddToHook{begindocument}{% + \open@column@one\@ne + \set@colht + \@floatplacement + \@dblfloatplacement + }% + }{% + \prepdef\@begindocumenthook{% + \open@column@one\@ne + \set@colht + \@floatplacement + \@dblfloatplacement + }% + } +\def\longtable@longtable{% + \par + \ifx\multicols\@undefined\else\ifnum\col@number>\@ne\@twocolumntrue\fi\fi + \if@twocolumn\LT@err{longtable not in 1-column mode}\@ehc\fi + \begingroup + \@ifnextchar[\LT@array{\LT@array[x]}% +}% +\def\longtable@new{% + \par\if@twocolumn\onecolumngrid\fi + \@ifnextchar[\LT@array{\LT@array[x]}% +}% +\def\endlongtable@longtable{% + \crcr + \noalign{% + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}}% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \if@filesw + {\let\LT@entry\LT@entry@write\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}}}% + \fi + \ifx\LT@save@row\LT@@save@row + \else + \LT@warn{Column \@width s have changed\MessageBreak + in table \thetable}% + \LT@final@warn + \fi + \endgraf\penalty -\LT@end@pen + \endgroup + \global\@mparbottom\z@ + \pagegoal\vsize + \endgraf\penalty\z@\addvspace\LTpost + \ifvoid\footins\else\insert\footins{}\fi +}% +\def\endlongtable@new{% + \crcr + \noalign{% + \let\LT@entry\LT@entry@chop + \xdef\LT@save@row{\LT@save@row}% + }% + \LT@echunk + \LT@start + \unvbox\z@ + \LT@get@widths + \@if@sw\if@filesw\fi{% + {% + \let\LT@entry\LT@entry@write + \immediate\write\@auxout{% + \gdef\expandafter\noexpand\csname LT@\romannumeral\c@LT@tables\endcsname + {\LT@save@row}% + }% + }% + }{}% + \@ifx{\LT@save@row\LT@@save@row}{}{% + \LT@warn{% + Column \@width s have changed\MessageBreak in table \thetable + }\LT@final@warn + }% + \endgraf + \nobreak + \box\@ifvoid\LT@lastfoot{\LT@foot}{\LT@lastfoot}% + \global\@mparbottom\z@ + \endgraf + \LT@post + \ifdeluxe\else\ifdeluxestar\else\if@twocolumn\twocolumngrid\fi\fi\fi +}% +\def\LT@start@longtable{% + \let\LT@start\endgraf + \endgraf\penalty\z@\vskip\LTpre + \dimen@\pagetotal + \advance\dimen@ \ht\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \dp\ifvoid\LT@firsthead\LT@head\else\LT@firsthead\fi + \advance\dimen@ \ht\LT@foot + \dimen@ii\vfuzz + \vfuzz\maxdimen + \setbox\tw@\copy\z@ + \setbox\tw@\vsplit\tw@ to \ht\@arstrutbox + \setbox\tw@\vbox{\unvbox\tw@}% + \vfuzz\dimen@ii + \advance\dimen@ \ht + \ifdim\ht\@arstrutbox>\ht\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@\dp + \ifdim\dp\@arstrutbox>\dp\tw@\@arstrutbox\else\tw@\fi + \advance\dimen@ -\pagegoal + \ifdim \dimen@>\z@\vfil\break\fi + \global\@colroom\@colht + \ifvoid\LT@foot\else + \advance\vsize-\ht\LT@foot + \global\advance\@colroom-\ht\LT@foot + \dimen@\pagegoal\advance\dimen@-\ht\LT@foot\pagegoal\dimen@ + \maxdepth\z@ + \fi + \ifvoid\LT@firsthead\copy\LT@head\else\box\LT@firsthead\fi +\nobreak + \output{\LT@output}% +}% +\def\LT@start@new{% + \let\LT@start\endgraf + \endgraf + \markthr@@{}% + \LT@pre + \@ifvoid\LT@firsthead{\LT@top}{\hbox{\ifdim\movetableright>0pt\relax\hskip\movetableright\fi\box\LT@firsthead} +\nobreak}% + \mark@envir{longtable}% +}% + +\def\LT@end@hd@ft@longtable#1{% + \LT@echunk + \ifx\LT@start\endgraf + \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}% + \fi + \setbox#1\box\z@ + \LT@get@widths\LT@bchunk +}% +\def\LT@end@hd@ft@new#1{% + \LT@echunk + \@ifx{\LT@start\endgraf}{% + \LT@err{Longtable head or foot not at start of table}{Increase LTchunksize}% + }% + \global\setbox#1\box\z@ + \LT@get@widths + \LT@bchunk +}% +\def\LT@array@longtable[#1]#2{% + \refstepcounter{table}\stepcounter{LT@tables}% + \if l#1% + \LTleft\z@ \LTright\fill + \else\if r#1% + \LTleft\fill \LTright\z@ + \else\if c#1% + \LTleft\fill \LTright\fill + \fi\fi\fi + \let\LT@mcol\multicolumn + \let\LT@@tabarray\@tabarray + \let\LT@@hl\hline + \def\@tabarray{% + \let\hline\LT@@hl + \LT@@tabarray}% + \let\\\LT@tabularcr\let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline \let\kill\LT@kill\let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \ifx\extrarowheight\@undefined + \let\@acol\@tabacol + \let\@classz\@tabclassz \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr + \else + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox\let\LT@LL@FM@cr\@arraycr + \fi + \setbox\@arstrutbox\hbox{\vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@}% + \let\@sharp##\let\protect\relax + \begingroup + \@mkpream{#2}% + \xdef\LT@bchunk{% + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@\setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft \noexpand\halign to\hsize\bgroup + \tabskip\z@ \@arstrut \@preamble \tabskip\LTright \cr}% + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th\let\par\@empty + \everycr{}\lineskip\z@\baselineskip\z@ + \LT@bchunk}% +\def\LT@LR@l{\LTleft\z@ \LTright\fill}% +\def\LT@LR@r{\LTleft\fill \LTright\z@ }% +\def\LT@LR@c{\LTleft\fill \LTright\fill}% +\def\LT@array@new[#1]#2{% + \refstepcounter{table}\stepcounter{LT@tables}% + \table@hook + \LTleft\fill \LTright\fill + \csname LT@LR@#1\endcsname + \let\LT@mcol\multicolumn + \let\LT@@hl\hline + \prepdef\@tabarray{\let\hline\LT@@hl}% + \let\\\LT@tabularcr + \let\tabularnewline\\% + \def\newpage{\noalign{\break}}% + \def\pagebreak{\noalign{\ifnum`}=0\fi\@testopt{\LT@no@pgbk-}4}% + \def\nopagebreak{\noalign{\ifnum`}=0\fi\@testopt\LT@no@pgbk4}% + \let\hline\LT@hline + \let\kill\LT@kill + \let\caption\LT@caption + \@tempdima\ht\strutbox + \let\@endpbox\LT@endpbox + \@ifxundefined\extrarowheight{% + \let\@acol\@tabacol + \let\@classz\@tabclassz + \let\@classiv\@tabclassiv + \def\@startpbox{\vtop\LT@startpbox}% + \let\@@startpbox\@startpbox + \let\@@endpbox\@endpbox + \let\LT@LL@FM@cr\@tabularcr@LaTeX + \let\@xtabularcr\@xtabularcr@LaTeX + }{% + \advance\@tempdima\extrarowheight + \col@sep\tabcolsep + \let\@startpbox\LT@startpbox + \let\LT@LL@FM@cr\@arraycr@array + }% + \let\@acoll\@tabacoll + \let\@acolr\@tabacolr + \let\@acol\@tabacol + \setbox\@arstrutbox\hbox{% + \vrule + \@height \arraystretch \@tempdima + \@depth \arraystretch \dp \strutbox + \@width \z@ + }% + \let\@sharp##% + \let\protect\relax + \begingroup + \@mkpream{#2}% + \@mkpream@relax + \edef\@preamble{\@preamble}% + \prepdef\@preamble{% + \global\advance\c@LT@chunks\@ne + \global\LT@rows\z@ + \setbox\z@\vbox\bgroup + \LT@setprevdepth + \tabskip\LTleft + \halign to\hsize\bgroup + \tabskip\z@ + \@arstrut + }% + \appdef\@preamble{% + \tabskip\LTright + \cr + }% + \global\let\LT@bchunk\@preamble + \endgroup + \expandafter\LT@nofcols\LT@bchunk&\LT@nofcols + \LT@make@row + \m@th + \let\par\@empty + \everycr{}% + \lineskip\z@ + \baselineskip\z@ + \LT@bchunk +}% +\appdef\table@hook{}% +\def\switch@longtable{% + \@ifpackageloaded{longtable}{% + \@ifx{\longtable\longtable@longtable}{% + \@ifx{\endlongtable\endlongtable@longtable}{% + \@ifx{\LT@start\LT@start@longtable}{% + \@ifx{\LT@end@hd@ft\LT@end@hd@ft@longtable}{% + \@ifx{\LT@array\LT@array@longtable}{% + \true@sw + }{\false@sw}% + }{\false@sw}% + }{\false@sw}% + }{\false@sw}% + }{\false@sw}% + {% + \class@info{Patching longtable package}% + }{% + \class@info{Patching unrecognized longtable package. (Proceeding with fingers crossed)}% + }% + \let\longtable\longtable@new + \let\endlongtable\endlongtable@new + \let\LT@start\LT@start@new + \let\LT@end@hd@ft\LT@end@hd@ft@new + \let\LT@array\LT@array@new + \@ifpackageloaded{caption}{ + \renewenvironment{longtable*}{% + \onecolumngrid@push + \longtable + }{% + \endlongtable + \onecolumngrid@pop + }}{ + \newenvironment{longtable*}{% + \onecolumngrid@push + \longtable + }{% + \endlongtable + \onecolumngrid@pop + }}% + }{}% +}% +\def\LT@pre{\penalty\z@\vskip\LTpre}% +\def\LT@bot{\nobreak\copy\LT@foot\vfil}% +\def\LT@top{\copy\LT@head\nobreak}% +\def\LT@post{\penalty\z@\addvspace\LTpost\mark@envir{\curr@envir}}% +\def\LT@adj{% + \setbox\z@\vbox{\null}\dimen@-\ht\z@ + \setbox\z@\vbox{\unvbox\z@\LT@bot}\advance\dimen@\ht\z@ + \global\advance\vsize-\dimen@ +}% +\def\output@init@longtable{\LT@adj}% +\def\output@prep@longtable{\setbox\@cclv\vbox{\unvbox\@cclv\LT@bot}}% +\def\output@post@longtable{\LT@top}% +\let\output@init@theindex\@empty +\let\output@prep@theindex\@empty +\def\output@post@theindex{% + \@ifodd\c@page{}{% + \@ifnum{\pagegrid@cur=\@ne}{% + }% + }% +}% +\def\check@aux{\do@output@MVL{\do@check@aux}}% +\def\check@deferlist@stuck#1{% + \@ifx{\@deferlist@postshipout\@empty}{}{% + \@ifx{\@deferlist@postshipout\@deferlist}{% + \@fltstk + \clearpage@sw{% + \ltxgrid@warn{Deferred float stuck during \string\clearpage\space processing}% + }{% + \force@deferlist@stuck#1% + }% + }{% + }% + \global\let\@deferlist@postshipout\@empty + }% +}% +\appdef\@outputpage@tail{% + \global\let\@deferlist@postshipout\@deferlist +}% +\def\@next#1#2{% + \@ifx{#2\@empty}{\false@sw}{% + \expandafter\@xnext#2\@@#1#2% + \true@sw + }% +}% +\def\@xnext\@elt#1#2\@@#3#4{% + \def#3{#1}% + \gdef#4{#2}% + \def\@tempa{#4}\def\@tempb{\@freelist}% + \@ifx{\@tempa\@tempb}{% + \@ifx{#4\@empty}{% + \force@deferlist@empty%{Float register pool exhausted}% + }{}% + }{}% +}% +\def\force@deferlist@stuck#1{% + \force@deferlist@sw{% + \@booleantrue\clearpage@sw + \@booleantrue\forcefloats@sw + #1% + }{% + }% +}% +\def\force@deferlist@empty{% + \force@deferlist@sw{% + \penalty-\pagebreak@pen + \protect@penalty\do@forcecolumn@pen + }{% + }% +}% + + +\mathchardef\do@forcecolumn@pen=10009 +\@namedef{output@-\the\do@forcecolumn@pen}{\do@forcecolumn}% +\def\do@forcecolumn{% + \@booleantrue\clearpage@sw + \@booleantrue\forcefloats@sw + \do@startcolumn +}% +\def\enlargethispage{% + \@ifstar{% + \@enlargethispage{}% + }{% + \@enlargethispage{}% + }% +}% +\def\@enlargethispage#1#2{% + \begingroup + \dimen@#2\relax + \edef\@tempa{#1}% + \edef\@tempa{\noexpand\@@enlargethispage{\@tempa}{\the\dimen@}}% + \expandafter\do@output@MVL\expandafter{\@tempa}% + \endgroup +}% +\def\@@enlargethispage#1#2{% + \def\@tempa{one}% + \@ifx{\thepagegrid\@tempa}{% + \true@sw + }{% + \def\@tempa{mlt}% + \@ifx{\thepagegrid\@tempa}{% + \@ifnum{\pagegrid@cur=\@ne}{% + \gdef\enlarge@colroom{#2}% + \true@sw + }{% + \ltxgrid@warn{Too late to enlarge this page; move the command to the first column.}% + \false@sw + }% + }{% + \ltxgrid@warn{Unable to enlarge a page of this kind.}% + \false@sw + }% + }% + {% + \class@info{Enlarging page \thepage\space by #2}% + \global\advance\@colroom#2\relax + \set@vsize + }{% + }% +}% +\let\enlarge@colroom\@empty +\let\@kludgeins\@undefined +\@booleantrue\textheight@sw +\prepdef\@outputpage@head{% + \textheight@sw{% + \count@\vbadness\vbadness\@M + \dimen@\vfuzz\vfuzz\maxdimen + \setbox\@outputbox\vbox to\textheight{\unvbox\@outputbox}% + \vfuzz\dimen@ + \vbadness\count@ + }{}% +}% +\appdef\@outputpage@head{% + \@ifx{\LS@rot\@undefined}{}{\LS@rot}% +}% +\def\ltxgrid@info{% + \ltxgrid@info@sw{\class@info}{\@gobble}% +}% +\@booleanfalse\ltxgrid@info@sw +\def\ltxgrid@warn{% + \ltxgrid@warn@sw{\class@warn}{\@gobble}% +}% +\@booleantrue\ltxgrid@warn@sw +\@booleanfalse\ltxgrid@foot@info@sw +\def\def@next@handler#1#2#3{% + \advance#1\@ne\mathchardef#2\the#1% + \expandafter\def\csname output@-\the#1\endcsname{#3}% +}% +\def\def@line@handler#1#2{% + \begingroup + \@tempcnta\int@parpenalty + \advance\@tempcnta-#1% + \aftergroup\def + \expandafter\aftergroup\csname output@-\the\@tempcnta\endcsname + \endgroup{#2}% +}% +\mathchardef\int@parpenalty11012 +\def@line@handler\z@{\@handle@line@ltx{}{}{}}% +\def@line@handler\@ne{\@handle@line@ltx{}{}{\brokenpenalty@ltx}}% +\def@line@handler\tw@{\@handle@line@ltx{}{\clubpenalty@ltx}{}}% +\def@line@handler\thr@@{\@handle@line@ltx{\clubpenalty@ltx}{}{\brokenpenalty@ltx}}% +\def@line@handler\f@ur{\@handle@line@ltx{\widowpenalty@ltx}{}{}}% +\def@line@handler{5}{\@handle@line@ltx{\widowpenalty@ltx}{}{\brokenpenalty@ltx}}% +\def@line@handler{6}{\@handle@line@ltx{\widowpenalty@ltx}{\clubpenalty@ltx}{}}% +\def@line@handler{7}{\@handle@line@ltx{\widowpenalty@ltx}{\clubpenalty@ltx}{\brokenpenalty@ltx}}% +\def@line@handler{8}{\@handle@line@ltx{\displaywidowpenalty@ltx}{}{}}% +\def@line@handler{9}{\@handle@line@ltx{\displaywidowpenalty@ltx}{}{\brokenpenalty@ltx}}% +\def@line@handler{10}{\@handle@line@ltx{\displaywidowpenalty@ltx}{\clubpenalty@ltx}{}}% +\def@line@handler{11}{\@handle@line@ltx{\displaywidowpenalty@ltx}{\clubpenalty@ltx}{\brokenpenalty@ltx}}% +\def\@handle@line@ltx#1#2#3{% + \@@handle@line@ltx + \@tempcnta\lastpenalty + \@tempcntb\interlinepenalty@ltx\relax + \@if@empty{#1}{}{\advance\@tempcntb#1\relax}% + \@if@empty{#2}{}{\advance\@tempcntb#2\relax}% + \@if@empty{#3}{}{\advance\@tempcntb#3\relax}% + \penalty\@ifnum{\@tempcnta<\@tempcntb}{\@tempcntb}{\@tempcnta}% +}% +\let\@@handle@line@ltx\@empty +\@tempcnta\int@parpenalty +\def@next@handler\@tempcnta\int@postparpenalty{\reset@queues@ltx\handle@par@ltx}% +\def@next@handler\@tempcnta\int@vadjustpenalty{\handle@vadjust@ltx}% +\def@next@handler\@tempcnta\int@whatsitpenalty{\handle@whatsit@ltx}% +\def@next@handler\@tempcnta\int@predisplaypenalty{\reset@queues@ltx\@handle@display@ltx{\predisplaypenalty@ltx}}% +\def@next@handler\@tempcnta\int@interdisplaylinepenalty{\@handle@display@ltx{\interdisplaylinepenalty@ltx}}% +\def@next@handler\@tempcnta\int@postdisplaypenalty{\@handle@display@ltx{\postdisplaypenalty@ltx}}% +\def\@handle@display@ltx#1{% + \@@handle@display@ltx + \@tempcnta\lastpenalty + \@tempcntb#1% + \penalty\@ifnum{\@tempcnta<\@tempcntb}{\@tempcntb}{\@tempcnta}% +}% +\let\@@handle@display@ltx\@empty +\def\handle@par@ltx{}% +\def\set@linepenalties{% + \expandafter\def\expandafter\interlinepenalty@ltx\expandafter{\the\interlinepenalty}% + \interlinepenalty-\int@parpenalty + \expandafter\def\expandafter\brokenpenalty@ltx\expandafter{\the\brokenpenalty}% + \brokenpenalty\@ne + \expandafter\def\expandafter\clubpenalty@ltx\expandafter{\the\clubpenalty}% + \clubpenalty\tw@ + \expandafter\def\expandafter\widowpenalty@ltx\expandafter{\the\widowpenalty}% + \widowpenalty\f@ur + \expandafter\def\expandafter\displaywidowpenalty@ltx\expandafter{\the\displaywidowpenalty}% + \displaywidowpenalty8\relax +}% +\def\restore@linepenalties{% + \interlinepenalty\interlinepenalty@ltx + \brokenpenalty\brokenpenalty@ltx + \clubpenalty\clubpenalty@ltx + \widowpenalty\widowpenalty@ltx + \displaywidowpenalty\displaywidowpenalty@ltx + \relax +}% +\def\set@displaypenalties#1{% + \expandafter\def\expandafter\predisplaypenalty@ltx\expandafter{\the\predisplaypenalty}% + \expandafter\def\expandafter\interdisplaylinepenalty@ltx\expandafter{\the\interdisplaylinepenalty}% + \expandafter\def\expandafter\postdisplaypenalty@ltx\expandafter{\the\postdisplaypenalty}% + \@ifhmode{\predisplaypenalty-\int@predisplaypenalty\relax}{}% + #1{\interdisplaylinepenalty-\int@interdisplaylinepenalty\relax}{}% + #1{\postdisplaypenalty-\int@postdisplaypenalty\relax}{}% +}% +\def\enqueue@whatsit@ltx#1{% + \gappdef\g@whatsit@queue{{#1}}% + \vadjust{\penalty-\int@whatsitpenalty}% +}% +\def\handle@whatsit@ltx{% + \unvbox\@cclv + \g@pop@ltx\g@whatsit@queue\@tempa + \expandafter\do@whatsit\expandafter{\@tempa}% +}% +\def\do@whatsit#1{}% +\def\g@pop@ltx#1#2{% + \expandafter\@g@pop@ltx#1{}{}\@@#1#2% +}% +\def\@g@pop@ltx#1#2\@@#3#4{% + \gdef#3{#2}% + \def#4{#1}% +}% +\let\vspace@ltx\vspace +\let\pagebreak@ltx\pagebreak +\let\nopagebreak@ltx\nopagebreak +\let\endline@ltx\\ +\let\@arrayparboxrestore@ltx\@arrayparboxrestore +\def\@tempa#1{% +\def\@vspace@org ##1{% + \ifvmode + #1% \vskip #1 + \vskip\z@skip + \else + \@bsphack + \vadjust{\@restorepar + #1% \vskip #1 + \vskip\z@skip + }% + \@esphack + \fi +}% +\def\@vspace@ltx##1{% + \@ifvmode{% + #1% \vskip #1 + \vskip\z@skip + }{% + \@bsphack + \ex@vadjust@ltx{% + \@restorepar + \nobreak + #1% \vskip #1 + \vskip\z@skip + }% + \@esphack + }% +}% +\def\@vspacer@org##1{% + \ifvmode + \dimen@\prevdepth + \hrule \@height\z@ + \nobreak + #1%\vskip #1 + \vskip\z@skip + \prevdepth\dimen@ + \else + \@bsphack + \vadjust{\@restorepar + \hrule \@height\z@ + \nobreak + #1%\vskip #1 + \vskip\z@skip}% + \@esphack +\fi +}% +\def\@vspacer@ltx##1{% + \@ifvmode{% + \dimen@\prevdepth + \hrule\@height\z@ + \nobreak + #1%\vskip#1 + \vskip\z@skip + \prevdepth\dimen@ + }{% + \@bsphack + \ex@vadjust@ltx{% + \@restorepar + \hrule\@height\z@ + \nobreak + #1%\vskip#1 + \vskip\z@skip + }% + \@esphack + }% +}% +} +\rvtx@ifformat@geq{2020/10/01}% + {\@tempa{\@vspace@calcify{#1}}}% + {\@tempa{\vskip #1 }}% +\def\@no@pgbk@org #1[#2]{% + \ifvmode + \penalty #1\@getpen{#2}% + \else + \@bsphack + \vadjust{\penalty #1\@getpen{#2}}% + \@esphack + \fi +}% +\def\@no@pgbk@ltx#1[#2]{% + \@ifvmode{% + \penalty#1\@getpen{#2}% + }{% + \@bsphack + \ex@vadjust@ltx{% + \penalty#1\@getpen{#2}% + }% + \@esphack + }% +}% +\rvtx@ifformat@geq{2020/02/02}% +{\protected}{\long}\def\end@line@org{% + \let\reserved@e\relax + \let\reserved@f\relax + \@ifstar{% + \let\reserved@e\vadjust + \let\reserved@f\nobreak + \@xnewline + }% + \@xnewline +}% +\rvtx@ifformat@geq{2020/02/02}% +{\protected}{\long}\def\end@line@ltx{% + \let\reserved@e\relax + \let\reserved@f\relax + \@ifstar{% + \let\reserved@e\ex@vadjust@ltx + \let\reserved@f\nobreak + \@xnewline + }{% + \@xnewline + }% +}% +\def\@tempa#1{% + \def\@newline@org[##1]{% + \let\reserved@e\vadjust + \@gnewline{#1}% \vskip#1 + }% + \def\@newline@ltx[##1]{% + \let\reserved@e\ex@vadjust@ltx + \@gnewline{#1}% \vskip#1 + }% +} +\rvtx@ifformat@geq{2020/10/01}% + {\@tempa{\@vspace@calcify{#1}}}% + {\@tempa{\vskip #1}}% + \@ifx{\@vspace\@vspace@org}{% + \@ifx{\@vspacer\@vspacer@org}{% + \@ifx{\@no@pgbk\@no@pgbk@org}{% + \@ifx{\@newline\@newline@org}{% + \expandafter\@ifx\expandafter{% + \csname\rvtx@ifformat@geq{2020/02/02}% + {\expandafter\@gobble\string\\}% + {\expandafter\@gobble\string\\ }\endcsname + \end@line@org + }{% + \true@sw + }{\false@sw}% + }{\false@sw}% + }{\false@sw}% + }{\false@sw}% + }{\false@sw}% + {% + \class@info{Overriding \string\@vspace, \string\@vspacer, \string\@no@pgbk, \string\@newline, and \string\\ }% + \let\@normalcr\end@line@ltx + \expandafter\let + \csname\rvtx@ifformat@geq{2020/02/02}% + {\expandafter\@gobble\string\\}% + {\expandafter\@gobble\string\\ }\endcsname\@normalcr + \let\@newline\@newline@ltx + \let\@vspace\@vspace@ltx + \let\@vspacer\@vspacer@ltx + \let\@no@pgbk\@no@pgbk@ltx + }{% + \class@warn{% + Failed to recognize \string\@vspace, \string\@vspacer, \string\@no@pgbk, \string\@newline, and \string\\; + no patches applied. Please get a more up-to-date class, + }% + }% +\let\ex@vadjust@ltx\vadjust +\def\enqueue@vadjust@ltx#1{% + \gappdef\g@vadjust@queue{{#1}}% + \vadjust{\penalty-\int@vadjustpenalty}% +}% +\def\handle@vadjust@ltx{% + \unvbox\@cclv + \g@pop@ltx\g@vadjust@queue\@tempa + \expandafter\gappdef\expandafter\g@vadjust@line\expandafter{\@tempa}% +}% +\let\g@vadjust@line\@empty +\def\reset@queues@ltx{% + \global\let\g@whatsit@queue\@empty + \global\let\g@vadjust@queue\@empty +}% +\let\setup@hook\@empty +\appdef\document@inithook{% + \switch@longtable + \let\LT@makecaption\LT@makecaption@rtx +}% +\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 + }% + }% +}% +\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 +}% + +\@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 +}% + +\DeclareOption{modern}{\@two@colfalse\twelvepointtrue\moderntrue} +\DeclareOption{preprint2}{\@two@coltrue\preprinttwotrue\twelvepointtrue}% +\DeclareOption{manuscript}{% + \@booleantrue\manuscriptsty@sw + \global\doublespacetrue + \twelvepointtrue}% + +\@booleanfalse\manuscriptsty@sw + +\DeclareOption{preprint}{% + \@booleantrue\preprintsty@sw + \twelvepointtrue% + \@two@colfalse% + \twelvepointtrue +}% + +\DeclareOption{reprint}{% + \@booleanfalse\preprintsty@sw + \@booleantrue\twocolumn@sw + \ExecuteOptions{10pt}% +} +\@booleanfalse\preprintsty@sw +\DeclareOption{showkeys}{% + \@booleantrue\showKEYS@sw +}% +\DeclareOption{noshowkeys}{% + \@booleanfalse\showKEYS@sw +}% +\@booleantrue\showKEYS@sw + +\DeclareOption{nopreprintnumbers}{\@booleanfalse\preprint@sw}% +\DeclareOption{preprintnumbers}{\@booleantrue\preprint@sw}% +\appdef\setup@hook{% + \@ifxundefined\preprint@sw{\let\preprint@sw\preprintsty@sw}{}% +}% +\DeclareOption{hyperref}{% + \class@warn{Class option "hyperref" is no longer supported.^^JEmploy \string\usepackage{hyperref} instead}% +}% +\DeclareOption{10pt}{\def\@pointsize{10}}% +\DeclareOption{11pt}{\def\@pointsize{11}}% +\DeclareOption{12pt}{\def\@pointsize{12}}% +\let\@pointsize\@undefined +\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}% +}% +\ds@letterpaper +\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 +\DeclareOption{footinbib}{\@booleantrue\footinbib@sw} +\DeclareOption{nofootinbib}{\@booleanfalse\footinbib@sw} +\@booleanfalse\footinbib@sw +\DeclareOption{altaffilletter}{\@booleantrue\altaffilletter@sw}% +\DeclareOption{altaffilsymbol}{\@booleanfalse\altaffilletter@sw}% +\@booleanfalse\altaffilletter@sw +\DeclareOption{superbib}{% + \let\place@bibnumber\place@bibnumber@sup +}% +\def\place@bibnumber{\NATx@bibnumfmt}% +\def\place@bibnumber@sup#1{\textsuperscript{#1}}% +\def\place@bibnumber@inl#1{[#1]}% +\DeclareOption{citeautoscript}{\@booleantrue\citeautoscript@sw}% +\@booleanfalse\citeautoscript@sw +\DeclareOption{eprint}{\@booleantrue\eprint@enable@sw}% +\DeclareOption{noeprint}{\@booleanfalse\eprint@enable@sw}% +\@booleantrue\eprint@enable@sw +\DeclareOption{onecolumn}{\@booleanfalse\twocolumn@sw\onecolstyletrue}% +\DeclareOption{twocolumn}{\onecolstylefalse\@twocolumntrue\@two@coltrue\twelvepointfalse}% +\@booleanfalse\twocolumn@sw +\def\select@column@grid{% + \twocolumn@sw{% + \twocolumn@grid@setup + \open@twocolumn + }{% + \onecolumn@grid@setup + }% +}% +\appdef\class@documenthook{% + \select@column@grid +}% +\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 + }% + }% +}% +\DeclareOption{author-year}{\@booleantrue\authoryear@sw}% +\DeclareOption{numerical}{\@booleanfalse\authoryear@sw}% +\@booleanfalse\authoryear@sw +\DeclareOption{galley}{% + \ExecuteOptions{onecolumn}% + \@booleantrue\galley@sw + \@booleanfalse\preprintsty@sw + \appdef\setup@hook{% + \advance\textwidth-\columnsep + \textwidth.5\textwidth + }% +}% +\@booleanfalse\galley@sw +\DeclareOption{raggedbottom}{\@booleantrue\raggedcolumn@sw} +\DeclareOption{flushbottom}{\@booleanfalse\raggedcolumn@sw} +\@booleanfalse\raggedcolumn@sw +\appdef\setup@hook{% + \raggedcolumn@sw{\raggedbottom}{\flushbottom}% +}% +\DeclareOption{tightenlines}{\@booleantrue\tightenlines@sw} +\@booleanfalse\tightenlines@sw +\@booleanfalse\lengthcheck@sw +\DeclareOption{lengthcheck}{% + \@booleantrue\lengthcheck@sw + \ExecuteOptions{reprint}% +}% +\appdef\setup@hook{% + \lengthcheck@sw{\@booleantrue\tally@box@size@sw}{}% +}% +\appdef\setup@hook{% + \draft@sw{\overfullrule 5\p@}{\overfullrule\z@}% +}% +\DeclareOption{draft}{\@booleantrue\draft@sw}% +\DeclareOption{final}{\@booleanfalse\draft@sw}% +\@booleanfalse\draft@sw +\appdef\setup@hook{% + \eqsecnum@sw{% + \@addtoreset{equation}{section}% + \def\theequation@prefix{\arabic{section}.}% + }{}% +}% +\DeclareOption{eqsecnum}{\@booleantrue\eqsecnum@sw}% +\@booleanfalse\eqsecnum@sw + + +\DeclareOption{fleqn}{% + \input{fleqn.clo}% +}% +\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 +\DeclareOption{titlepage}{\@booleantrue\titlepage@sw} +\DeclareOption{notitlepage}{\@booleanfalse\titlepage@sw} +\@booleanfalse\titlepage@sw +\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}% + }% + }% +}% +\let\rtx@require@packages\@empty +\appdef\rtx@require@packages{% + \RequirePackage[overload]{textcase}% +}% +\DeclareOption{amsfonts}{% + \def\class@amsfonts{\RequirePackage{amsfonts}}% +}% +\DeclareOption{noamsfonts}{% + \let\class@amsfonts\@empty +}% +\appdef\rtx@require@packages{% + \@ifxundefined\class@amsfonts{}{\class@amsfonts}% +}% +\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}% + +\DeclareOption{floatfix}{\@booleantrue\force@deferlist@sw}% +\DeclareOption{nofloatfix}{\@booleanfalse\force@deferlist@sw}% +\@booleantrue\force@deferlist@sw +\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]}% + }% +}% +\DeclareOption{ltxgridinfo}{% + \@booleantrue\ltxgrid@info@sw +}% +\DeclareOption{outputdebug}{% + \@booleantrue\outputdebug@sw + \@booleantrue\ltxgrid@info@sw + \@booleantrue\ltxgrid@foot@info@sw + \traceoutput +}% +\DeclareOption{raggedfooter}{\@booleanfalse\textheight@sw}% +\DeclareOption{noraggedfooter}{\@booleantrue\textheight@sw}% +\DeclareOption{frontmatterverbose}{\@booleantrue\frontmatterverbose@sw}% +\@booleanfalse\frontmatterverbose@sw + +\DeclareOption{nomerge}{% + \appdef\setup@hook{% + \@ifnum{\NAT@merge>\z@}{\let\NAT@merge\z@}{}% + }% +}% + +\DeclareOption{hypertext}{\hypertext@enable@ltx}% +\appdef\document@inithook{\@ifpackageloaded{hyperref}{\hypertext@enable@ltx}{}}% + +\DeclareOption{frontmatterverbose}{\@booleantrue\frontmatterverbose@sw}% +\@booleanfalse\frontmatterverbose@sw + +\@booleanfalse\runinaddress@sw +\@booleantrue\@affils@sw +\@booleanfalse\groupauthors@sw + +\DeclareOption{groupedaddress}{\clo@groupedaddress}% +\def\clo@groupedaddress{% + \@booleantrue\groupauthors@sw + \@booleantrue\@affils@sw + \@booleanfalse\runinaddress@sw +}% +\DeclareOption{unsortedaddress}{\clo@unsortedaddress}% +\def\clo@unsortedaddress{% + \@booleantrue\groupauthors@sw + \@booleanfalse\@affils@sw + \@booleanfalse\runinaddress@sw +}% +\DeclareOption{runinaddress}{\clo@runinaddress}% +\def\clo@runinaddress{% + \@booleantrue\groupauthors@sw + \@booleantrue\@affils@sw + \@booleantrue\runinaddress@sw +}% +\DeclareOption{superscriptaddress}{\clo@superscriptaddress}% +\def\clo@superscriptaddress{% + \@booleanfalse\groupauthors@sw + \@booleantrue\@affils@sw + \@booleanfalse\runinaddress@sw +}% +\DeclareOption*{\OptionNotUsed}% + +\def\@fnsymbol#1{% + \ensuremath{% + \ifcase#1\or + *\or + \dagger\or + \ddagger\or + \mathsection\or + \mathparagraph\or + **\or + \dagger\dagger\or + \ddagger\ddagger\or + \mathsection\mathsection\or + \mathparagraph\mathparagraph\or + ***\or + \dagger\dagger\dagger\or + \ddagger\ddagger\ddagger\or + \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 +\clo@groupedaddress + +\newenvironment{titlepage}{% + \let\wastwocol@sw\twocolumn@sw + \onecolumngrid + \newpage + \thispagestyle{titlepage}% + \c@page\z@ +}{% + \wastwocol@sw{\twocolumngrid}{\newpage}% +}% + + +\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 +}% + +\@booleanfalse\preprintsty@sw +\@booleanfalse\titlepage@sw + + +\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{}{% + }% +}% +\def\frontmatter@collaboration@above{% + \preprintsty@sw{% + }{% + \parskip1.5\p@\relax + }% +}% +\def\frontmatter@setup{% + \normalfont +}% + +\def\@author@parskip{3\p@}% +\def\frontmatter@makefnmark{% + \@textsuperscript{% + \normalfont\@thefnmark + }% +}% +\def\frontmatter@authorbelow{% + \addvspace{3\p@}% +}% +\def\frontmatter@RRAP@format{% + \small + \centering + \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}% + + +\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{, }}% +\def\@seccntformat#1{\csname the#1\endcsname.\quad}% +\def\@hang@from#1#2#3{#1#2#3}% +\def\@hangfrom@section#1#2#3{\@hangfrom{#1#2}\MakeTextUppercase{#3}}% +\def\@hangfroms@section#1#2{#1\MakeTextUppercase{#2}}% + +\let\frontmatter@footnote@produce\frontmatter@footnote@produce@footnote +\def\@pnumwidth{1.55em}% +\def\@tocrmarg {2.55em}% +\def\@dotsep{2}% +\def\ltxu@dotsep{4.5pt}% +\setcounter{tocdepth}{3}% +\def\tableofcontents{% + \addtocontents{toc}{\string\tocdepth@munge}% + \print@toc{toc}% + \addtocontents{toc}{\string\tocdepth@restore}% +}% +\def\tocdepth@munge{% + \let\l@section@saved\l@section + \let\l@section\@gobble@tw@ +}% +\def\@gobble@tw@#1#2{}% +\def\tocdepth@restore{% + \let\l@section\l@section@saved +}% +\def\l@part#1#2{\addpenalty{\@secpenalty}% + \begingroup + \set@tocdim@pagenum\@tempboxa{#2}% + \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 +}% +\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{}% +\let\toc@pre\toc@pre@auto +\let\toc@post\toc@post@auto +\@booleanfalse\raggedcolumn@sw +\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}% + +\long\def\frontmatter@makefntext#1{% + \def\baselinestretch{1}% + \parindent1em% + \noindent + \nobreak + \Hy@raisedlink{\hyper@anchorstart{frontmatter.\expandafter\the\csname c@\@mpfn\endcsname}\hyper@anchorend}% + \@hangfrom{\hb@xt@3mm{\hss\@makefnmark}~}#1% + \par +}% + +\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}% +\@booleanfalse\authoryear@sw +\appdef\setup@hook{% + \bibpunct{[}{]}{,}{n}{}{,}% +}% + + +\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 + }% +}% +\def\bib@device#1#2{% + \hb@xt@\z@{% + \hb@xt@#1{% + \hfil + \phantomsection + \addcontentsline {toc}{section}{\protect\numberline{}\refname}% + \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 + }% + \hfil + }% + \hss + }% +}% +\appdef\setup@hook{% + \let\bibpreamble\@empty + \bibsep\z@\relax + \def\newblock{\ }% +}% +\newenvironment{theindex}{% + \columnseprule \z@ + \columnsep 35\p@ + \c@secnumdepth-\maxdimen + \onecolumngrid@push + \section{\indexname}% + \thispagestyle{plain}% + \parindent\z@ + \parskip\z@ plus.3\p@\relax + \let\item\@idxitem + \onecolumngrid@pop +}{% +}% +\def\@idxitem{\par\hangindent 40\p@}% +\def\subitem{\par\hangindent 40\p@ \hspace*{20\p@}}% +\def\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}% +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax}% + +\let\place@bibnumber\place@bibnumber@inl + + +\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 + }% + }{}% +}% + +\let\@journal\@undefined + +\marginparwidth 107pt +\marginparsep 6pt +\splittopskip\topskip +\footskip 30pt +\columnseprule 0pt + +\def\footnoterule{% + \dimen@\skip\footins\divide\dimen@\tw@ + \kern-\dimen@\hrule width.5in\kern\dimen@ +}% + +\floatsep 12pt plus 2pt minus 2pt +\intextsep 12pt plus 2pt minus 2pt +\dblfloatsep 12pt plus 2pt minus 2pt +\@fptop 0pt plus 1fil +\@fpsep 8pt plus 2fil +\@fpbot 0pt plus 1fil +\@dblfptop 0pt plus 1fil +\@dblfpsep 8pt plus 2fil +\@dblfpbot 0pt plus 1fil +\marginparpush 5pt +\parskip 0pt plus 1pt +%\parindent 10pt +\emergencystretch8\p@ +\partopsep 2pt plus 1pt minus 1pt +\leftmargini 25pt +\leftmarginii 22pt +\leftmarginiii 18.7pt +\leftmarginiv 17pt +\leftmarginv 10pt +\leftmarginvi 10pt + +\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@ +}% +\labelsep 4pt + +\def\heading@cr{\unskip\space\ignorespaces}% +\let\@oddhead\@empty +\let\@evenhead\@empty +\let\@oddfoot\@empty +\let\@evenfoot\@empty + +\def\lastpage@putlabel{% + \if@filesw + \begingroup + \advance\c@page\m@ne + \immediate\write\@auxout{\string\newlabel{LastPage}{{}{\thepage}{}{}{}}}% + \endgroup + \fi +}% +\appdef\clear@document{% + \do@output@cclv{% + \lastpage@putlabel + \tally@box@size@sw{\total@text}{}% + }% +}% +\providecommand\write@column@totals{}% +\appdef\document@inithook{% + \incompatible@package{cite}% + \incompatible@package{mcite}% + \incompatible@package{multicol}% +}% +\def\labelenumi{\theenumi.} +\def\theenumi{\arabic{enumi}} +\def\labelenumii{(\theenumii)} +\def\theenumii{\alph{enumii}} +\def\p@enumii{\theenumi} +\def\labelenumiii{\theenumiii.} +\def\theenumiii{\roman{enumiii}} +\def\p@enumiii{\theenumi(\theenumii)} +\def\labelenumiv{\theenumiv.} +\def\theenumiv{\Alph{enumiv}} +\def\p@enumiv{\p@enumiii\theenumiii} +\def\labelitemi{\textbullet} +\def\labelitemii{\normalfont\bfseries\textendash} +\def\labelitemiii{\textasteriskcentered} +\def\labelitemiv{\textperiodcentered} +\pagenumbering{arabic} +\newenvironment{verse}{% + \let\\=\@centercr + \list{}{% + \itemsep\z@ \itemindent -1.5em\listparindent \itemindent + \rightmargin\leftmargin\advance\leftmargin 1.5em}\item[]% +}{% + \endlist +}% +\newenvironment{quotation}{% + \list{}{% + \listparindent 1.5em + \itemindent\listparindent + \rightmargin\leftmargin \parsep \z@ \@plus\p@}\item[]% +}{% + \endlist +}% +\newenvironment{quote}{% + \list{}{% + \rightmargin\leftmargin}\item[]% +}{% + \endlist +}% +\def\descriptionlabel#1{% + \hspace\labelsep \normalfont\bfseries #1\unskip:% +}% +\newenvironment{description}{% + \list{}{% + \labelwidth\z@ \itemindent-\leftmargin + \let\makelabel\descriptionlabel + }% +}{% + \endlist +}% +\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 + + +\def\part{\par + \addvspace{4ex}% + \@afterindentfalse + \secdef\@part\@spart}% +\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 +}% +\def\@spart#1{{\parindent \z@ \raggedright + \interlinepenalty\@M + \huge \bf + #1\par} + \nobreak + \vskip 3ex + \@afterheading} + +\def\theequation{% + \theequation@prefix\arabic{equation}% +}% +\def\theequation@prefix{}% +\lineskip 1pt +\normallineskip 1pt +\def\baselinestretch{1}% +\@lowpenalty 51 +\@medpenalty 151 +\@highpenalty 301 +\@beginparpenalty -\@lowpenalty +\@endparpenalty -\@lowpenalty +\@itempenalty -\@lowpenalty +\arraycolsep 3pt +\tabcolsep 2pt +\arrayrulewidth .4pt +\doublerulesep 2pt +\skip\@mpfootins = 0pt +\fboxsep = 3.0pt +\fboxrule = 0.4pt +\newenvironment{figure} + {\@float{figure}} + {\end@float} +\newenvironment{figure*} + {\@dblfloat{figure}} + {\end@dblfloat} +\def\listoffigures{\print@toc{lof}}% +\def\l@figure{\@dottedtocline{1}{1.5em}{2.3em}}% +\newlength\abovecaptionskip +\newlength\belowcaptionskip +\setlength\abovecaptionskip{5\p@} +\setlength\belowcaptionskip{4\p@} + + +\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 +\newcounter{figure} +\renewcommand \thefigure {\@arabic\c@figure} +\def\fps@figure{tbp} +\def\ftype@figure{1} +\def\ext@figure{lof} +\def\fnum@figure{{\bf\figurename~\thefigure}} +\expandafter\newbox\csname fbox@\ftype@figure\endcsname +\expandafter\setbox\csname fbox@\ftype@figure\endcsname\hbox{}% +\appdef\@xfloat@prep{% + \appdef\@parboxrestore{\centering}% +}% +\newenvironment{table} + {\@float{table}} + {\end@float} +\newenvironment{table*} + {\@dblfloat{table}} + {\end@dblfloat} +\newcounter{table} +\renewcommand\thetable{\@Roman\c@table} +\def\fps@table{tbp} +\def\ftype@table{2} +\def\ext@table{lot} +\def\fnum@table{{\bf\tablename~\ifappletter\thesection\fi\thetable}} +\expandafter\newbox\csname fbox@\ftype@table\endcsname +\expandafter\setbox\csname fbox@\ftype@table\endcsname\hbox{}% +\def\listoftables{\print@toc{lot}}% +\let\l@table\l@figure +\def\table@hook{\small}% +\def\squeezetable{\def\table@hook{\scriptsize}}% +\appdef\@floatboxreset{\table@hook}% + +\newenvironment{turnpage@anchored}{% + \onecolumngrid@push + \setbox\z@\vbox to\textwidth\bgroup + \columnwidth\textheight +}{% + \vfil + \egroup + \rotatebox{90}{\box\z@}% + \onecolumngrid@pop +}% +\newenvironment{video} + {\@float{video}} + {\end@float}% +\newenvironment{video*} + {\@dblfloat{video}} + {\end@dblfloat}% +\newcounter{video} +\renewcommand \thevideo {\@arabic\c@video} +\def\ext@video{lov}% +\def\fname@video{Video}% +\def\lovname{List of Videos}% +\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}% + }% +}% +\expandafter\newbox\csname fbox@\ftype@video\endcsname +\expandafter\setbox\csname fbox@\ftype@video\endcsname\hbox{}% +\let\theHvideo\thevideo +\def\listofvideos{\print@toc{lov}}% +\let\l@video\l@figure + +\def\endtabular@hook{}% +\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}% + }% +}{% +}% +\def\@makefnmark{% + \leavevmode{% + \@textsuperscript{% + \normalfont\@thefnmark + }% + }% +}% +\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 +}% +\newcommand\rtx@citesuper[3]{% + \ifNAT@swa + \leavevmode + \unskip + \textsuperscript{\normalfont#1}% + \if*#3*\else\ (#3)\fi + \else + #1% + \fi + \endgroup +}% +\def\@makefnmark@cite{\begingroup\NAT@swatrue\@cite{{\@thefnmark}}{}{}}% + +\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}% +\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}% + }% +}% +\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}% + }% +}% + + \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 +\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 +\@ifx{\BibitemShut\NAT@BibitemShut}{% + \class@info{Repairing natbib's \string\BibitemShut}% + \let\BibitemShut\BibitemShut@ltx +}{}% + +\let\bibliographystyle@latex\bibliographystyle + +\def\NAT@bibitem@cont{% + \let\bibitem@Stop\bibitemContinue@Stop + \let\bibitem@NoStop\bibitemContinue +}% +\def\bibitemNoStop{% + \@ifx@empty\@bibitemShut{.\spacefactor\@mmm\space}{\@bibitemShut}% +}% +\def\bibitemContinue{% + \@ifx@empty\@bibitemShut{;\spacefactor\@mmm\space}{\@bibitemShut}% +}% +\def\bibitemContinue@Stop{% + \@ifx@empty\@bibitemShut{\spacefactor\@mmm\space}{\@bibitemShut}% +}% +}% +\DeclareRobustCommand\onlinecite{\@onlinecite}% +\DeclareRobustCommand\textcite{\@textcite}% + + +\def\write@bibliographystyle{% + \@ifxundefined\@bibstyle{}{% + \expandafter\bibliographystyle@latex\expandafter{\@bibstyle}% + %\bibliographystyle@sw{}{\@bibdataout@rev}% + }% + \global\let\write@bibliographystyle\relax +}% + + \AtEndDocument{\write@bibliographystyle}% + +\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 + +\appdef\class@documenthook{% + \citeautoscript@sw{% + \@ifx{\@cite\NAT@citesuper}{% + \let\NAT@@citetp\rtx@@citetp + }{}% + }{}% +}% +\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 +\def\rev@citemark#1{% + \expandafter\cite\expandafter{\@thefnmark}% +}% +\def\rev@endtext#1{% + \let\@endnotelabel\@thefnmark + \@endnotetext +}% +\def\endnote@ext{.end}% +\def\bibdata@app{Notes}% +\def\bibdata@ext{bib}% +\long\def\@endnotetext#1{% + \begingroup + \endnote@relax + \immediate\write\@bibdataout{% + @FOOTNOTE{% + \@endnotelabel,% + key="\@endnotelabel",% + note="#1"% + }% + }% + \endgroup +}% + + +\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 + \let \protect \@unexpandable@protect + \newlinechar`\^^M% + \let\begin\relax \let\end\relax +}% + + +\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 + }% + }{}% +}% +\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 + }% +}% +\appdef\class@documenthook{% + \make@footnote@endnote +}% + +\def\thepage{\@arabic\c@page}% +\appdef\setup@hook{% + \tabbingsep \labelsep + \leftmargin\leftmargini + \labelwidth\leftmargin\advance\labelwidth-\labelsep + \let\@listi\@listI + \@listi +}% +\appdef\class@documenthook{% + \global\c@page\@ne + \def\curr@envir{document}% + \mark@envir{\curr@envir}% +}% +\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@ +}% + +\def\title@column#1{% + \minipagefootnote@init + #1% + \minipagefootnote@foot +}% +\def\close@column{% + \newpage +}% + + +\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} +\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} +\def\partname{Part} +\def\tocname{Contents} +\def\lofname{List of Figures} +\def\lotname{List of Tables} +\def\refname{References} +\def\indexname{Index} +\def\figurename{Figure} +\def\figuresname{Figures}% +\def\tablename{Table} +\def\tablesname{Tables}% +\def\abstractname{Abstract} +\def\appendixesname{Appendixes}% +\def\appendixname{Appendix}% +\def\acknowledgmentsname{ACKNOWLEDGMENTS} +\def\journalname{??} +\def\copyrightname{??} +\def\andname{and} +\def\ppname{pp} +\def\numbername{number} +\def\volumename{volume} +\def\Dated@name{Dated: }% +\def\Received@name{Received }% +\def\Revised@name{Revised }% +\def\Accepted@name{Accepted }% +\def\Published@name{Published }% + +\def\address{\replace@command\address\affiliation}% +\def\altaddress{\replace@command\altaddress\altaffiliation}% + + +% +\def\tablenote{\replace@command\tablenote\footnote}% + +\DeclareRobustCommand\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 +}% +\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 +}% + +\newenvironment{quasitable}{% + \let@environment{tabular}{longtable}% +}{% +}% +\let\bm\REV@bm + +\appdef\setup@hook{% +\iflongbib + \renewcommand\bibinfo[2]{#2}% +\else + \renewcommand\bibinfo[2]{\unskip\unskip\unskip}% +\fi + \providecommand\eprint[2][]{#2}% +}% + +% +\def\REVSYMB@warn#1{\PackageWarningNoLine{revsymb}{#1}}% +\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 +}% +\DeclareRobustCommand\openone{\leavevmode\hbox{\small1\normalsize\kern-.33em1}}% +\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}% +}% +\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}% + }% +}% +\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}} +\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}% + }% +}% +\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}% + }% +}% + +\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$}}}% +\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\mathbb{\let\mathbb\REV@mathbb}{}% +}% + + +\appdef\class@documenthook{\revsymb@inithook}% +%% +\def\@startflt#1{% + \begingroup + %\toc@pre + \makeatletter + \@input{\jobname.#1}% + \if@filesw + \expandafter\newwrite\csname tf@#1\endcsname + \immediate\openout \csname tf@#1\endcsname \jobname.#1\relax + \fi + \@nobreakfalse + %\toc@post + \endgroup +}% +\def\att@TOC{toc}% +\def\print@toc#1{% + \begingroup + \expandafter\section + \expandafter*% + \expandafter{% + \csname#1name\endcsname + }% + \let\appendix\appendix@toc + \def\tempa{#1}% + \ifx\tempa\att@TOC%% + \@starttoc{#1}% + \else%% + \@startflt{#1}%% + \fi%% + \endgroup +}% + +\appdef\rtx@require@packages{% + \InputIfFileExists{\jobname.rty}{}{}% +}% + + + \iftwelvepoint + \iflongauthor + \ExecuteOptions{unsortedaddress,12pt,onecolumn,onecolappendix,letteredappendix} + \else + \ExecuteOptions{superscriptaddress,12pt,onecolumn,onecolappendix,letteredappendix} + \fi + \else %not twelvepoint + \iflongauthor + \ExecuteOptions{unsortedaddress,10pt,onecolumn,onecolappendix,letteredappendix} + \else + \ExecuteOptions{superscriptaddress,10pt,onecolumn,onecolappendix,letteredappendix} + \fi + \fi + + +\@options +\rtx@require@packages +\setup@hook + + +%%%%%%%%%%%%%%%%%%%% + +\def\blankaffiliation{~}% +\def\@eapj@cap@font{\bfseries} +\def\@eapj@figname{Figure} +\def\@eapj@tabname{Table} + +% Restore natbib package without sorting. +\def\NAT@sort{0} +\def\NAT@cmprs{0} + +% only redefine sort@cites for natbib versions < 2009 +\@ifundefined{NAT@sort@cites@}{\def\NAT@sort@cites#1{\edef\NAT@cite@list{#1}}}% + +\RequirePackage{latexsym}% +\RequirePackage{amssymb}% + +\newcommand{\bibstyle@aas}{\bibpunct{(}{)}{;}{a}{}{,}}% +\@citestyle{aas}% + +%\def\baselinestretch{1.0} + +%% Default vertical space between horizontal lines. Can change definition +%% of arraystretch in the body of the paper; either for full article or +%% for a single table. +\AtBeginDocument{\def\arraystretch{1}} + +%% needed? +\def\raggedcolumn@sw#1#2{#2} % implement flushbottom as it was in revtex4 + +\RequirePackage{epsf,graphicx} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% tighten only works with two column styles: +\if@twocolumn\else\global\tightenfalse\fi + +%%% preprint, preprint2, manuscript are 12pt +%% Modified bk12.clo +\iftwelvepoint + +\renewcommand\normalsize{% +\ifdoublespace % manuscript + \iftighten + \@setfontsize\normalsize\@xiipt{20}% + \else + \@setfontsize\normalsize\@xiipt{24}% + \fi +\else + \iftighten + \@setfontsize\normalsize\@xiipt{13}% + \else + \ifmodern + \@setfontsize\normalsize\@xiipt{16}% + \else + \@setfontsize\normalsize\@xiipt{15}% + \fi + \fi +\fi %% end doublespace/no double space + \abovedisplayskip 12\p@ \@plus3\p@ \@minus7\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6.5\p@ \@plus3.5\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} + +\normalsize + +\newcommand\small{% +\ifdoublespace % manuscript + \@setfontsize\small\@xipt{20}% +\else +\ifmodern + \@setfontsize\small\@xipt{12}% +\else + \@setfontsize\small\@xipt{13.6}% +\fi\fi +%% end doublespace/no double space + \abovedisplayskip 11\p@ \@plus3\p@ \@minus6\p@ + \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}% + \belowdisplayskip \abovedisplayskip +} + +\newcommand\footnotesize{% +\ifdoublespace % manuscriptstyle + \@setfontsize\footnotesize\@xpt{18} +\else + \ifmodern + \@setfontsize\footnotesize\@xpt{11}% + \else + \@setfontsize\footnotesize\@xpt\@xiipt +\fi\fi + \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 +} +\ifdoublespace % manuscript style +\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{14}} +\newcommand\tiny{\@setfontsize\tiny\@vipt{10}} +\newcommand\large{\@setfontsize\large\@xivpt{18}} +\newcommand\Large{\@setfontsize\Large\@xviipt{22}} +\newcommand\LARGE{\@setfontsize\LARGE\@xxpt{25}} +\newcommand\huge{\@setfontsize\huge\@xxvpt{30}} +\else +\newcommand\scriptsize{\@setfontsize\scriptsize\@viiipt{9.5}} +\newcommand\tiny{\@setfontsize\tiny\@vipt\@viipt} +\newcommand\large{\@setfontsize\large\@xivpt{22}} +\newcommand\Large{\@setfontsize\Large\@xviipt{24}} +\newcommand\LARGE{\@setfontsize\LARGE\@xxpt{28}} +\newcommand\huge{\@setfontsize\huge\@xxvpt{30}} +\fi +\let\Huge=\huge +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +\else %% not twelvepoint, now tenpoint +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% no doublespace here, because the only doublespace is in `manuscript style' which is 12pt + +\renewcommand\normalsize{% +\iftighten + \@setfontsize\normalsize\@xpt{11.5}% +\else + \@setfontsize\normalsize\@xpt{12.5}% +\fi + \abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@ + \abovedisplayshortskip \z@ \@plus3\p@ + \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} + +\normalsize + +\newcommand\small{% +\iftighten + \@setfontsize\small\@ixpt{12}% +\else + \@setfontsize\small\@ixpt{11}% +\fi + \abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@ + \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}% + \belowdisplayskip \abovedisplayskip +} + +\newcommand\footnotesize{% +\iftighten + \@setfontsize\footnotesize\@viiipt{9}% +\else + \@setfontsize\footnotesize\@viiipt{9.5}% standard eightpoint size +\fi + \abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@ + \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}% + \belowdisplayskip \abovedisplayskip +} + +%% Standard 10pt font sizes +\newcommand\scriptsize{\@setfontsize\scriptsize\@viipt\@viiipt} +\newcommand\tiny{\@setfontsize\tiny\@vpt\@vipt} +\newcommand\large{\@setfontsize\large\@xiipt{14}} +\newcommand\Large{\@setfontsize\Large\@xivpt{18}} +\newcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}} +\newcommand\huge{\@setfontsize\huge\@xxpt{25}} +\newcommand\Huge{\@setfontsize\Huge\@xxvpt{30}} + +\fi + +%% End font sizes +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +\setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@} +\setlength\medskipamount{6\p@ \@plus 2\p@ \@minus 2\p@} +\setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@} +\setlength\headheight{12\p@} + +\def\@listi{\leftmargin\leftmargini + \parsep 4\p@ \@plus2\p@ \@minus\p@ + \topsep 8\p@ \@plus2\p@ \@minus4\p@ + \itemsep4\p@ \@plus2\p@ \@minus\p@} +\let\@listI\@listi +\@listi +\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} +\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} +\def\@listiv {\leftmargin\leftmarginiv + \labelwidth\leftmarginiv + \advance\labelwidth-\labelsep} +\def\@listv {\leftmargin\leftmarginv + \labelwidth\leftmarginv + \advance\labelwidth-\labelsep} +\def\@listvi {\leftmargin\leftmarginvi + \labelwidth\leftmarginvi + \advance\labelwidth-\labelsep} + +% **************************************************** +% * TWO AND SINGLE ONE COLUMN STYLES: AV * +% **************************************************** +% + +%%%%% include atbeginend.sty by AV: + +% Copy \begin and \end to \BeginEnvironment and \EndEnvironment +\let\BeginEnvironment=\begin +\let\EndEnvironment=\end +%% \ifundefined from TeXbook +\def\IfUnDef#1{\expandafter\ifx\csname#1\endcsname\relax} +% Null command needed to eat its argument +\def\NullCom#1{} +\protected\def\begin#1{% +% if defined \BeforeBeg for this environment, execute it +\IfUnDef{BeforeBeg#1}\else\csname BeforeBeg#1\endcsname\fi% +\IfUnDef{AfterBeg#1}% This is done to skip the command for environments + % which can take arguments, like multicols; YOU MUST NOT + % USE \AfterBegin{...}{...} for such environments! + \let\SaveBegEnd=\BeginEnvironment% +\else + % Start this environment + \BeginEnvironment{#1}% + % and execute code after \begin{environment} + \csname AfterBeg#1\endcsname + \let\SaveBegEnd=\NullCom +\fi% +\SaveBegEnd{#1}% +} +\def\end#1{% +% execute code before \end{environment} +\IfUnDef{BeforeEnd#1}\else\csname BeforeEnd#1\endcsname\fi% +% close this environment +\EndEnvironment{#1}% +% and execute code after \begin{environment} +\IfUnDef{AfterEnd#1}\else\csname AfterEnd#1\endcsname\fi% +} +\long\def\BeforeBegin#1#2{\expandafter\gdef\csname BeforeBeg#1\endcsname {#2}} +\long\def\BeforeEnd #1#2{\expandafter\gdef\csname BeforeEnd#1\endcsname {#2}} +\long\def\AfterBegin #1#2{\expandafter\gdef\csname AfterBeg#1\endcsname {#2}} +\long\def\AfterEnd #1#2{\expandafter\gdef\csname AfterEnd#1\endcsname{#2}} + +%%%% end of atbeginend.sty + +% **************************************** +% * PAGE LAYOUT * +% **************************************** + +% Page size, spacing parameters, etc. + +\textwidth=7.1in +\columnsep=0.3125in +\parindent=0.125in +\voffset=-20mm +\hoffset=-7.5mm + +\topmargin=0in +\headheight=.15in +\headsep=0.5in +\oddsidemargin=0in +\evensidemargin=0in +\parskip=0cm + +\tolerance=600 % 3x "normal" value; cuts down on overfull complaints + +%% AV,MM, to have 64 lines per column, with textheight 25cm: +\textheight=64\baselineskip +\textheight=\baselinestretch\textheight +\ifdim\textheight>25.2cm\textheight=25.0cm\fi + +%% so that the margin at the bottom of the page is about equal to margin at top. -- AH +\advance\textheight -54pt + +\topskip\baselineskip +\maxdepth\baselineskip + + + +\def\eqsecnum{ + \@newctr{equation}[section] + \def\theequation{\hbox{\normalsize\arabic{section}-\arabic{equation}}}} + +%% running heads: +\def\lefthead#1{\gdef\@versohead{#1}} \lefthead{\relax} +\def\righthead#1{\ifanonymous\gdef\@rectohead{Anonymous author(s)}\else\gdef\@rectohead{#1}\fi} \righthead{\relax} +\let\shorttitle\lefthead +\let\shortauthors\righthead + +\def\ps@apjheads{\let\@mkboth\markboth + \def\@evenfoot{} + \def\@evenhead{\lower9mm\hbox to\textwidth{% + \rm\thepage\hfill\textsc{\@rectohead}\hfill}}} + \def\@oddfoot{} + \def\@oddhead{\lower9mm\hbox to\textwidth{ + \hfil\rm\textsc{\@versohead}\hfil \rm\thepage}} + +\pagestyle{apjheads} + + \@twosidetrue + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% TITLE PAGE % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newif\ifcorrespauthor +\newif\if@correspauthor + +%% October 2017, adding preprint number capability +\newcount\rptnum +\newcount\rptloopnum +\def\reportnum#1{\global\advance\rptnum by 1 +\expandafter\gdef\csname report\the\rptnum\endcsname{\hbox to +\textwidth{\hskip.75\textwidth\relax#1\relax\hfill}}} + +\def\frontmatter@title@format{\normalsize\bf\centering} +\def\frontmatter@title@below{\vskip8pt}% + +\long\def\frontmatter@title@above{ +\vbox to 0pt{\vskip-48pt\normalsize\rptloopnum=0\loop +\global\advance\rptloopnum by 1 +\expandafter\ifx\csname report\the\rptloopnum\endcsname\relax +\else +\csname report\the\rptloopnum\endcsname +\vskip1pt +\repeat +\vss +} +\ifmodern +\vglue-18pt +{\footnotesize +\raggedright +{\sc Draft version \today}\\[2pt] +{\footnotesize +Typeset using \LaTeX\ {\bf modern} style in AASTeX7.0.1} +\par\vspace*{-\baselineskip}\vspace*{0.625in} +} +\else +%% +\ifpreprinttwo +\vspace*{-\headsep}\vspace*{\headheight} +\footnotesize +{\footnotesize\textsc{\@journalinfo}}\par +{\footnotesize Typeset using \LaTeX\ {\bf preprint2} style in AASTeX7.0.1} +\par\vspace*{-\baselineskip}\vspace*{0.625in} +\else +%% +\if@twocolumn +\if@correspauthor\vspace*{-16.2pt}\fi% +\vspace*{-\headsep}\vspace*{\headheight} +\footnotesize +{\footnotesize\textsc{\@journalinfo}}\par +{\footnotesize Typeset using \LaTeX\ {\bf twocolumn} style in AASTeX7.0.1} +\par\vspace*{-\baselineskip}\vspace*{0.625in} +\else +\preprintsty@sw{ +\vspace*{-\headsep}\vspace*{\headheight} +\footnotesize +{\footnotesize\textsc{\@journalinfo}}\par +{\footnotesize Typeset using \LaTeX\ {\bf preprint} style in AASTeX7.0.1} +\par\vspace*{-\baselineskip}\vspace*{0.625in} +}{ + \manuscriptsty@sw{% + \vspace*{-\headsep}\vspace*{\headheight} + \footnotesize + {\footnotesize\textsc{\@journalinfo}}\par + {\footnotesize Typeset using \LaTeX\ {\bf manuscript} style in AASTeX7.0.1} + \par\vspace*{-\baselineskip}\vspace*{0.625in} + }{ +%% Default +\vspace*{-\headsep}\vspace*{\headheight} +\footnotesize +{\footnotesize\textsc{\@journalinfo}}\par +{\footnotesize Typeset using \LaTeX\ {\bf default} style in AASTeX7.0.1}%% default style +\par\vspace*{-\baselineskip}\vspace*{0.625in} +}} +\fi\fi\fi +%% + %% none of this command will be activated. +}% + + +\newcount\fncount +\newcount\endfncount +\long\def\tempfootnote#1{\global\advance\fncount by 1\relax% +\expandafter\gdef\csname footnote\the\fncount\endcsname{\if@two@col\hsize=.5\textwidth +\advance\hsize by -18pt +\fi\relax#1}} + +\def\tempfootnoteintitle#1{} + +\long\def\ltx@foottext#1#2{% + \begingroup +\expandafter\ltx@make@current@footnote\expandafter{\@mpfn}{#1}% +\@footnotetext{\vtop{\if@twocolumn\hsize=.5\textwidth +\advance\hsize-18pt +\fi #2\vskip2pt}}% fixed for two col style, march 15, 2019 + \endgroup +}% + + +\def\kickoutfootnotes{\c@footnote=0\relax% +\loop\advance\endfncount by 1\relax% +\expandafter\ifx\csname footnote\the\endfncount\endcsname\relax% +\else% +\def\thempfn{\fnsymbol{footnote}}% +\advance\c@footnote by 1\relax% +\unskip\footnote{\csname footnote\the\endfncount\endcsname}% +\repeat} + +%% +\renewcommand\title[2][]{% +\def\@title{\setbox0=\vbox{\let\footnote\tempfootnote #2}% +{\let\footnote\tempfootnoteintitle%\uppercase +{#2}}%% right place for kickoutfootnotes below +\kickoutfootnotes +%\ifdoublespace\vskip 3\baselineskip\fi +}% + \def\@shorttitle{#1}% + \let\@AF@join\@title@join +}% + + + +\def\frontmatter@authorformat{\small\advance\baselineskip-3pt +\parskip=0pt\scshape +\ifmodern +\vskip48pt +\centering +\leftskip=.05in plus 1fil +\rightskip=.05in plus 1 fil +\baselineskip=13pt +\else +\centering +\fi +}% + + +\def\frontmatter@affiliationfont{\normalfont\footnotesize +%% changed october 2017 +\it +\iflongauthor\else +\rightskip-12pt plus 1fil +\leftskip6pt \parindent-4pt +\fi +}% + + +\def\@separator{\\}% + +\newcounter{front@matter@foot@note}\setcounter{front@matter@foot@note}{0} + + +\def\affil@error#1{\@latex@error{^^J^^J^^J^^JThe compiler quit because AASTeX v7.0.1 requires all authors to have an affiliation. Please edit your latex file to include a \string\affiliation\space command with author "#1".^^J^^J^^J^^J}\@ehc\stop} + +\def\email@error#1{\@latex@error{^^J^^J^^J^^JThe compiler quit because AASTeX v7.0.1 requires all authors to have an email address. Please edit your latex file to include a \string\email\space command with author "#1".^^J^^J^^J^^J}\@ehc\stop} + + +\iflongauthor% +\renewcommand\affiliation[1]{% +\parskip=2pt\expandafter\gdef\csname affil@\romannumeral\the\allauthorcnt\endcsname{}% +\def\@centercr{\vrule depth 3pt width0pt\vskip1sp} + \move@AU\move@AF% +\iflongauthor\let\@listand\relax\fi + \begingroup% + \@affiliation{%\hspace*{2mm} +\ifnum\countauthors<\AuthorCollaborationLimit + #1\ifmodern\iflongauthor\baselineskip=12pt\else\vskip2pt\fi\else\baselineskip=11pt +\fi\fi +\ifnum\countauthors=\AuthorCollaborationLimit + #1\ifmodern\iflongauthor\baselineskip=12pt\else\vskip2pt\fi\else\baselineskip=11pt +\fi\fi +\iflongauthor \vskip-10pt\ifnum\countauthors>\AuthorCollaborationLimit\iftwelvepoint\vskip-3pt\else\if@twocolumn\else\vskip-6pt\fi\fi\fi% +\fi +}% +\let\@centercr\savecentercr}% +\else +%% older version +\renewcommand\affiliation[1]{% + \expandafter\gdef\csname affil@\romannumeral\the\allauthorcnt\endcsname{}% + \move@AU\move@AF% + \begingroup% + \@affiliation{% +\centering% +#1% +\ifmodern% + \baselineskip=9.5pt% +\else% + \iftwelvepoint% + \ifpreprinttwo\else% + \preprintsty@sw{}{\baselineskip19pt}% + \fi% + \else% + \baselineskip=9.5pt% + \fi% +\fi}% +}% +\fi %% end switch for longauthor + +% ABSTRACT +\def\frontmatter@abstractfont{\normalsize\parindent=9pt +}% +%% +\def\frontmatter@abstractwidth{478pt} + +\def\abstractname{ABSTRACT} + +\long\def\frontmatter@abstractheading{% + \begingroup + \centering +\ifmodern\else\hskip34pt \fi \abstractname + \vskip 1mm + \par + \endgroup +}% + +\let\abstract\frontmatter@abstract + +\def\frontmatter@abstract@produce{% + \par + %% \preprintsty@sw{% + %% \do@output@MVL{% + %% \vskip\frontmatter@preabstractspace + %% \vskip200\p@\@plus1fil + %% \penalty-200\relax + %% \vskip-200\p@\@plus-1fil + %% }% + %% }{% + \addvspace{\frontmatter@preabstractspace}% + %% }% + \begingroup + \dimen@\baselineskip + \setbox\z@\vtop{\unvcopy\absbox}% + \advance\dimen@-\ht\z@\advance\dimen@-\prevdepth + \@ifdim{\dimen@>\z@}{\vskip\dimen@}{}% + \endgroup + \begingroup + \prep@absbox +%% centered, oct 2017 +\unvbox\absbox + \post@absbox + \endgroup + \@ifx{\@empty\mini@notes}{}{\mini@notes\par}% + \addvspace\frontmatter@postabstractspace +\global\abstractfalse +\vskip12pt +}% + +\newif\ifbib + +% **************************************** +% * KEYWORDS * +% **************************************** + + +\def\@keys@name{\textit{Keywords:}\/~\mbox{}}% + +\newlength{\keys@width} +\def\frontmatter@keys@format{\ifmodern\vskip0pt\else\vspace*{0.5mm}\fi% + \settowidth{\keys@width}{\normalsize\@keys@name}% +\ifmodern\else +\rightskip=0.5in +\leftskip=34pt +\fi +\parindent=0pt% + \hangindent=\keys@width\hangafter=1\normalsize}% + +\def\@keywords@produce#1{% + \showKEYS@sw{% + \begingroup% + \frontmatter@keys@format% + \@keys@name#1 +\vrule depth 12pt width 0pt +\ifnobreakafterkeywords +\vrule depth 24pt width0pt\fi +\par + \endgroup + }{% + \@if@empty{#1}{}{% + \class@warn{If you want your keywords to appear in your output, use document class option showkeys}% + }% + }% +}% + +\let\subjectheadings=\keywords + + +% **************************************** +% * FOOTNOTES * +% **************************************** + +%% legacy notes and footnote code + +% Footnotes on the last page: user issues \lastpagefootnotes. It catches all +% footnotes and issues them before \begin{refernces} or +% \begin{\thebibliography} or \begin{appendix}, whichever comes first, +% at the end of right column. +\newcounter{lastfootnote} +\let\orig@footnote=\footnote +% +\def\spit@out@footnotes@{\addtocounter{footnote}{-\c@lastfootnote}\vspace*{-\baselineskip}\vspace*{\skip\footins}\bgroup\footnotesize\lastfootnote\par\egroup\let\footnote=\orig@footnote} +% +\let\spit@out@footnotes\relax +% +\long\def\lastpagefootnotes{% +\raggedbottom% Have to use flushbottom with revtex4-1 but it eats away + % last page footnotes +\setcounter{lastfootnote}{0} +\long\gdef\lastfootnote{\mbox{}} +\let\spit@out@footnotes\spit@out@footnotes@ +\long\def\footnote##1{\refstepcounter{lastfootnote}\footnotemark\g@addto@macro\lastfootnote{\\[\footnotesep]\refstepcounter{footnote}\mbox{}\hspace*{3mm}\textsuperscript{\thefootnote}~##1}} +% We need to mess with footnotes in appendix only if it is in a +% different mode (twocol vs onecol) than the main text +\def\mess@with@appendix@footnotes{ +\BeforeBegin{appendix}{\spit@out@footnotes\let\spit@out@footnotes\relax} +\BeforeEnd{appendix}{\spit@out@footnotes\let\spit@out@footnotes\relax} +\AfterEnd{appendix}{\let\footnote=\orig@footnote} +} + +\if@two@col + \if@two@col@app\else + \mess@with@appendix@footnotes + \fi +\fi + +\BeforeBegin{references}{\spit@out@footnotes\let\spit@out@footnotes\relax} +\BeforeBegin{thebibliography}{\spit@out@footnotes\let\spit@out@footnotes\relax} +% in case \lastpagefootnotes were given inside \begin{appendix}\end{appendix}, +\AfterEnd{references}{\let\footnote=\orig@footnote} +\AfterEnd{thebibliography}{\let\footnote=\orig@footnote} +} +\let\lastpagefootnote=\lastpagefootnotes + +%% probably not needed: +\def\notetoeditor#1{}% % We do not need notes to editor in the preprint +\def\placetable#1{}% % We do not need notes to editor in the preprint +\def\placefigure#1{}% % We do not need notes to editor in the preprint + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ifdoublespace %used for manuscript + \footnotesep 12pt + \skip\footins 36pt +\else + \footnotesep 12pt + \skip\footins 24pt +\fi + +\let\footnoterule\relax + +\def\@makefntext#1{% +\@ifnum{\pagegrid@col=\@ne}{\onecolumngrid}{}% +\leavevmode\@hangfrom{\hb@xt@3mm{\hss\@makefnmark}~}#1} + + +% **************************************** +% * SECTIONS * +% **************************************** + +\setcounter{secnumdepth}{3} + +\newcount\tempsectnum + +\newif\if@firstsection \@firstsectiontrue + + +\def\section{% +\ifanonymous\nocollaboration{0}\fi% +\if@firstsection% +%% In case no collaboration is listed: +\ifcollaborationon\else\let\doauthor\olddoauthor% +\ifanonymous \else% +\let\allauthors=\oldallauthors\fi% +\fi% +%\edef\currauthorlimit{\the\AuthorCollaborationLimit} +%\collaboration{\currauthorlimit}{} +\maketitle% +\global\@firstsectionfalse% +% \setcounter{footnote}{\thefront@matter@foot@note}% + \let\footnotetext=\old@foot@note@text% + \let\footnotemark=\old@foot@note@mark% +\ifnobreakafterkeywords% +\ifmodern\vskip24pt% +\else% +\vskip12pt\fi%% +\goodbreak% +\else% + \clearpage% +\fi% + \if@two@col% + \twocolumngrid% + \@booleantrue\twocolumn@sw% + \fi% +\fi% +\tempsectnum=\the\c@section% +\advance\tempsectnum by 1 +\xdef\cref@currentlabel{section \the\tempsectnum}% + \@startsection{section}{1}{\z@}{9pt plus 1pt minus 1pt}{4pt}{\apjsecfont\center}} + +\def\subsection{\@startsection{subsection}{2}{\z@}{9pt plus 1pt minus 1pt}{4pt}% + {\normalsize\itshape \center}} + +\def\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {2ex plus 1ex minus .2ex}{1ex plus .2ex}{\small\itshape \center}} + +\def\paragraph{\@startsection{paragraph}{4}{\z@}% + {1.5ex plus 1ex minus .2ex}{0pt}{\small\itshape}} + +\def\subparagraph{\@startsection{subparagraph}{5}{\z@}% + {1ex plus 1ex minus .2ex}{-0.5\parindent}{\small\itshape}} + + +\def\thesection{\arabic{section}} +\def\thesubsection{\thesection.\arabic{subsection}} +\def\thesubsubsection{\thesubsection.\arabic{subsubsection}} +\def\theparagraph{\thesubsubsection.\arabic{paragraph}} +\def\p@section {} +\def\p@subsection {} +\def\p@subsubsection {} +\def\p@paragraph {} +\def\p@subparagraph {} + + +\def\sec@upcase#1{\uppercase{#1}} +\def\subsec@upcase#1{\relax{#1}} + +% +% How the section number will appear in the section title - AV +\def\ApjSectionMarkInTitle#1{#1.\ } +\def\ApjSectionpenalty{\@M} + + +\def\@sect#1#2#3#4#5#6[#7]#8% +{\ifnum#2=1\setbox0=\hbox{\def\label##1{\gdef\templabel{##1}}#7}\fi +\@tempskipa #5\relax + \ifdim \@tempskipa >\z@ \begingroup + #6\relax + \ifnum #2>\c@secnumdepth \def \@svsec {}\else + \refstepcounter{#1} \edef \@svsec {\ApjSectionMarkInTitle + {\csname the#1\endcsname}}\fi + \@hangfrom {\hskip #3\relax + \ifnum #2=1{\secnum@size {\rm\@svsec~}}% + \else {\subsecnum@size {\rm\@svsec~}}\fi }% + {\interlinepenalty \@M + \ifnum #2=1\sec@upcase{#8}% + \else \subsec@upcase{#8}\fi\par}\endgroup + \csname #1mark\endcsname {#7}\addcontentsline{toc}{#1}% + {\ifnum #2>\c@secnumdepth \else \protect \numberline + {\csname the#1\endcsname }\fi #7}% + \else + \ifnum #2>\c@secnumdepth \def \@svsec {}\else + \refstepcounter{#1} \edef \@svsec {\ApjSectionMarkInTitle + {\csname the#1\endcsname}}\fi + \def \@svsechd {#6\hskip #3% + \ifnum #2=1{\secnum@size{\rm\@svsec~}}\else{\subsecnum@size{\rm\@svsec~}}\fi% + \ifnum #2=1\sec@upcase{#8}\else\subsec@upcase{#8}\fi% + \ifnum #2=4\hskip 0.4ex{\rm ---}\fi% + \csname #1mark\endcsname {#7}\addcontentsline{toc}{#1}% + {\ifnum #2>\c@secnumdepth \else \protect \numberline {\csname + the#1\endcsname }\fi #7}}\fi \@xsect {#5} \penalty \ApjSectionpenalty +%-refstepcounter is now within a group. So \@currentlabel, which is normally +%-set by \refstepcounter is hidden within a group. Need to set it manually. +\protected@edef\@currentlabel{\csname p@#1\endcsname\csname +the#1\endcsname} +\expandafter\ifx\csname templabel\endcsname\relax +\let\go\relax +\else +\def\go{\label{\templabel}}\fi\go +\let\templabel\relax +} + +\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax + \ifdim \@tempskipa>\z@ + \begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M + \sec@upcase{#5}\par}\endgroup + \else \def\@svsechd{#4\hskip #1\relax \sec@upcase{#5}}\fi + \@xsect{#3} +% MM: +\penalty \ApjSectionpenalty} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% changed to begin...end form, May 20,2020, AH +%% Acknowledgments, use \begin{acknowledgments}...\end{acknowledgments} +%% or \begin{acknowledgements}...\end{acknowledgements} + +{\catcode`#=12 +\gdef\hashmark{#}} + +\def\xacknowledgments{acknowledgments} +\def\xacknowledgements{acknowledgements} +\newbox\ackbox + +\def\acknowledgments{\@ifnextchar[{\@acknowledgments}{\@acknowledgments[acknowledgments]}}% + +\def\@acknowledgments[#1]{% +\ifx\@currenvir\xacknowledgments\let\go\relax\else +\let\go\stop +\typeout{x^^J^^J^^J^^J^^J^^J^^J^^J + ===================^^J +In AASTeX v6.3.1 the \string\acknowledgments\space command has been deprecated.^^J^^J +Instead, please use the begin/end form:^^J^^J +"\string\begin\string{acknowledgments\string}...\string\end\string{acknowledgments\string}"^^J^^J +when using acknowledgments.^^J^^J See here: +\url{https://journals.aas.org/aastexguide/\hashmark acknowledgments} +^^J^^J + for more +details.^^J + ===================^^J +}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Printed error +\vskip12pt +\hrule height 1pt +\vskip12pt +\noindent ERROR: +In AASTeX v6.3.1 the {\tt\string\acknowledgments} command has been +deprecated.\\ +Instead, please use the begin/end form:\\ +{\tt +\string\begin\string{acknowledgments\string}...\string\end\string{acknowledgments\string}}\\ +when using acknowledgments. For more details, see:\\ +\url{https://journals.aas.org/aastexguide/\hashmark acknowledgments} +% +\fi\go +%% +\ifanonymous +\global\setbox\ackbox=\vbox\bgroup +\expandafter\ifx\csname internallinenumbers\endcsname\relax\else +\begin{internallinenumbers} +\fi +\fi% +\vskip 5.8mm plus 1mm minus 1mm % +\vskip1sp +\section*{#1} +\noindent\ignorespaces} + +\def\endacknowledgments{ +\ifanonymous\expandafter\ifx\csname internallinenumbers\endcsname\relax\else +\end{internallinenumbers} +\fi +\egroup\fi%% completes ackbox +\ifanonymous +\vskip 5.8mm plus 1mm minus 1mm +\vskip1sp +%\section*{Acknowledgments} +\centerline{(Acknowledgments anonymized for review)} +\else +\unvbox\ackbox +\fi\vskip6pt} + +%%%alternate spelling +\def\acknowledgements{\@ifnextchar[{\@acknowledgements}{\@acknowledgements[acknowledgements]}}% + +\def\@acknowledgements[#1]{% +\ifx\@currenvir\xacknowledgements\let\go\relax\else +\let\go\stop +\typeout{x^^J^^J^^J^^J^^J^^J^^J^^J + ===================^^J +In AASTeX v6.3.1 the \string\acknowledgements\space command has been deprecated.^^J^^J +Please use the begin/end form:^^J^^J +"\string\begin\string{acknowledgements\string}...\string\end\string{acknowledgements\string}"^^J^^J +when using acknowledgements.^^J^^J See here: +\href{https://journals.aas.org/aastexguide/\hashmark acknowledgments} +{https://journals.aas.org/aastexguide/\hashmark acknowledgments} +^^J^^J + for more +details.^^J + ===================^^J +}% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Printed error +\vskip12pt +\hrule height 1pt +\vskip12pt +\noindent ERROR: +In AASTeX v6.3.1 the {\tt\string\acknowledgements} command has been +deprecated.\\ +Instead, please use the begin/end form:\\ +{\tt +\string\begin\string{acknowledgements\string}...\string\end\string{acknowledgements\string}}\\ +For more details, see:\\ +\url{https://journals.aas.org/aastexguide/\hashmark acknowledgments} +% +\fi\go +%% +\ifanonymous +\global\setbox\ackbox=\vbox\bgroup +\expandafter\ifx\csname internallinenumbers\endcsname\relax\else +\begin{internallinenumbers} +\fi\fi +\vskip 5.8mm plus 1mm minus 1mm +\vskip1sp +\section*{#1} +\noindent\ignorespaces} + +\def\endacknowledgements{ +\ifanonymous\expandafter\ifx\csname internallinenumbers\endcsname\relax\else +\end{internallinenumbers} +\fi +\egroup\fi%% completes ackbox +\ifanonymous +\vskip 5.8mm plus 1mm minus 1mm +\vskip1sp +%\section*{Acknowledgements} +\centerline{(Acknowledgements anonymized for review)} +\else +\unvbox\ackbox +\fi\vskip6pt} + + +\usepackage{ifthen} +\newbox\contribbox + +%\def\chkcontrib{false} +\def\chkcontrib{true} +% +\newenvironment{contribution}{% + \gdef\chkcontrib{true}% + \ifanonymous + \global\setbox\contribbox=\vbox\bgroup + \else + \section*{Author contributions} + \noindent\ignorespaces + \fi +}{\ifanonymous\egroup\vskip6pt\centerline{(Author contributions anonymized for review)}\fi\null\vskip6pt} + + + +\AtEndDocument{ +\ifthenelse{\equal{\chkcontrib}{true}}{}{% +\@latex@error{^^J^^J Please use +"\string\begin\string{contribution\string}...\string\end\string{contribution\string} in your document. +^^J^^J}\@ehc +\stop} +} +% **************************************** +% * APPENDIX * +% **************************************** + +\newcounter{remember@figure@num} +\newcounter{remember@table@num} + +% this was an environment earlier, which doesn't make sense since we don't +% do \begin{appendix}...\end{appendix}. Changed to \appendix which is how it is used. + +% numberedappendix: Needed to label appendix sections A, B, . +% appendixfloats: Needed. ?? + +\newif\ifappendixon +\def\appendix{\global\appendixontrue +\if@two@col +\onecolumngrid +\noindent\mbox{}\vrule height 24pt width0pt\hfill{\apjsecfont APPENDIX}\hfill\mbox{}\par\vskip18pt + \if@two@col@app\global\@two@coltrue\twocolumngrid \fi + % above, we want onecolumngrid to be default. Only twocolumn is asked for in documentclass option +\else +\noindent\mbox{}\vrule height 24pt width0pt\hfill{\apjsecfont APPENDIX}\hfill\mbox{}\par +\vskip18pt + \if@two@col@app\global\@two@coltrue\twocolumngrid + \fi\fi +% \vrule used for extra space; otherwise revtex4-1 sometimes eats +% away the last line before appendix + \nopagebreak\medskip\@nobreaktrue\def\ApjSectionpenalty{\@M} + \@firstsectionfalse + \setcounter{section}{0} + \setcounter{subsection}{0} + \setcounter{equation}{0} +%% +\ifletteredappendix + \def\thesection{\Alph{section}} + \def\theequation{\hbox{\Alph{section}\arabic{equation}}} +%% these are NOT supposed to reset to zero +%\setcounter{table}{0} +%\setcounter{figure}{0} +\fi +%% +\if@number@appendix@floats +% we don't want to set equations to zero in appendix, because there +% might then be two equation 1's, etc., confusing for cross referencing. +%\setcounter{equation}{0} + \def\thesection{\Alph{section}} + \def\theequation{\hbox{\Alph{section}\arabic{equation}}} + \def\section{\@startsection {section}{1}{\z@} + {10pt}{5pt}{\centering\scshape\apjsecfont}} +\else +% Do not use appendix numbers in the titles + \def\ApjSectionMarkInTitle{\AppendixApjSectionMarkInTitle} +\fi +\ifappletter +\let\savesection\section +\def\section{\resetapptablenumbers\savesection} +\fi +} +% + + +%% + +% **************************************** +% * BIBLIOGRAPHY * +% **************************************** + +\newenvironment{references}[0]{ + \onecolumngrid + \par + \vspace{10pt plus 3pt} + \noindent \makebox[\textwidth][c]{\small\scshape REFERENCES} + \par + \vspace*{4pt plus 3pt} + \set@column@hsize{2}\twocolumngrid +%% Jan29, 2021, added \ifonecolstyle, \ifpreprinttwo +\ifnumlines +\ifonecolstyle +\ifpreprinttwo\else +\advance\linenumbersep-12pt\fi\fi\fi + \parindent=0cm \parskip=0cm + \def\baselinestretch{1.0} + \footnotesize \baselineskip=\baselinestretch\bibbaselineskip plus 1pt + minus 1pt \interlinepenalty \@M + \hyphenpenalty=10000 + \frenchspacing % AV - to get right spacing after ``et al.'' + \def\refpar{\par\hangindent=1.2em\hangafter=1}} +{ + \onecolumngrid +} + +% redefine thebibliography + +% remove numbers from the reference list +\def\@biblabel#1{\relax} + +\newskip\bibskip +\bibskip=0pt plus 1pt +\let\savebibitem\bibitem +\def\bibitem{\vskip\bibskip\savebibitem} +\newdimen\bibindent + +\newenvironment{thebibliography}[1]{\global\bibtrue +\onecolumngrid +\vspace{20pt} +\goodbreak + \hbox to\textwidth{\hss\normalsize REFERENCES\hss} +\vspace{6pt}\parskip=0pt +\twocolumngrid\@twocolumntrue +\ifonecolstyle\advance\linenumbersep 12pt\fi% +%% Jan29, 2021, added \ifonecolstyle +\ifnumlines +\ifonecolstyle +\ifpreprinttwo\else +\advance\linenumbersep-12pt\fi\fi\fi +\par + \raggedright +\small +\ifmodern\else + \vspace{10pt plus 3pt}\fi +\par +\topsep=0pt + \list{}% + { + \parindent=0pt \parskip=1pt plus 1pt \parsep=0pt % AV + \bibindent=0pt % +\ifmodern\vskip-12pt +\baselineskip=13pt plus 1pt +\else +\ifdoublespace +\baselineskip=20pt +\else +\baselineskip=13pt plus 1pt \fi\fi \interlinepenalty \@M % AV + \frenchspacing % AV - to get right spacing after ``et al.'' + \hyphenpenalty=10000 + \itemindent=-1.0em % + \itemsep=0pt % + \listparindent=0pt % + \settowidth\labelwidth{0pt} % + \labelsep=0pt % + \leftmargin=1.0em + \advance\leftmargin\labelsep +%%% \usecounter{enumiv}% + \let\p@enumiv\@empty + \renewcommand\theenumiv{\relax}}% + \sloppy\clubpenalty10000\widowpenalty10000% + \sfcode`\.\@m\relax +%%%\item[] This May be necessary, but causes extra vertical space in first column +%%% of the bibliography. +} + {\def\@noitemerr + {\@latex@warning{Empty `thebibliography' environment}}% +\endlist + \onecolumngrid % to balance references +\global\bibfalse +\newpage + } + +% %% AV: + +\def\reference{\@ifnextchar\bgroup {\@reference} + {\@latexerr{Missing key on reference command} + {Each reference command should have a key corresponding to a markcite somewhere in the text}}} +\def\@reference#1{\refpar} + + + \def\journalinfo#1{\gdef\@journalinfo{#1}} + \journalinfo{Draft version \today} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Equations % +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% EQNARRAY with reduced spacing around tab characters - AV +\def\eqnarray{% + \stepcounter{equation}% + \def\@currentlabel{\p@equation\theequation}% + \global\@eqnswtrue + \setlength{\arraycolsep}{0.25\arraycolsep} + \m@th + \global\@eqcnt\z@ + \tabskip\@centering + \let\\\@eqncr + $$\everycr{}\halign to\displaywidth\bgroup + \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel + &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil + &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep + $\displaystyle{##}$\hfil\tabskip\@centering + &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup + \tabskip\z@skip + \cr + } + +% **************************************** +% * TABLES AND FIGURES * +% **************************************** + +\def\@arstrut@hline@clnc{0.5\p@}% % Klootch: magic number + +\setlength{\textfloatsep}{9pt} +\setlength{\dbltextfloatsep}{0pt} +\setcounter{topnumber}{9} +\renewcommand{\topfraction}{1.0} +\setcounter{bottomnumber}{9} +\renewcommand{\bottomfraction}{1.0} +\setcounter{totalnumber}{20} +\def\floatpagefraction{.9} +\renewcommand{\textfraction}{0.0} +\setcounter{dbltopnumber}{9} +\renewcommand{\dbltopfraction}{0.85} +\renewcommand{\dblfloatpagefraction}{0.85} + +% Copied from revtex4.cls; without it, captions are centered +\def\@xfloat@prep{% + \let\footnote\footnote@latex + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}% + \c@mpfootnote\z@ + \let\@footnotetext\@mpfootnotetext + \let\H@@footnotetext\@mpfootnotetext + \let\@makefntext\@mpmakefntext +}% + + +%%%%%%%%%%%% \cutinhead + +%% Number of \pt@ncol set when \tablecolumns{} used at beginning of +%% deluxetable. + +\def\@ptabularcr{\\} +\newcommand\cutinhead[1]{% + \noalign{\vskip 1.5ex}% + \hline + \@ptabularcr + \noalign{\vskip -1.5ex}% + \multicolumn{\pt@ncol}{c}{#1}% + \@ptabularcr + \noalign{\vskip .8ex}% + \hline + \@ptabularcr + \noalign{\vskip -2ex}% +}% + +\newcommand\sidehead[1]{% + \noalign{\vskip 1.5ex}% +% \hline +% \@ptabularcr +% \noalign{\vskip -1.5ex}% + \multicolumn{\pt@ncol}{l}{#1}% + \@ptabularcr + \noalign{\vskip .8ex}% +% \hline +% \@ptabularcr +% \noalign{\vskip -2ex}% +}% + + +%% these don't seem to be relevant: +\newcommand\figcaption{\@testopt{\@xfigcaption}{}}% +%% suggested by Joern Wilms +\def\@figcaption#1{{\def\@captype{figure}\caption{\footnotesize #1}}} +\def\@xfigcaption[#1]#2{{\def\@captype{figure}\caption{\footnotesize +#2}}} + +\def\thetable{\@arabic\c@table} +%%% Table captions without making a floating table +\def\tabcaption{\@ifnextchar[{\@xtabcaption}{\@tabcaption}} +\def\@tabcaption#1{{\def\@captype{table}\caption{#1}}} +\def\@xtabcaption[#1]#2{{\def\@captype{table}\caption{#2}}} + + + \let\fnum@ptable=\fnum@table + \def\fnum@ptablecont{{\centering{\scshape Table~\thetable}---{\itshape + Continued}}}% + \long\def\@make@caption@text#1#2{% + {\small\centering#1{\scshape #2}\par\vskip1.4ex} + }% + +\long\def\@makecaption@plano@cont#1#2{% + {\small \centering#1\par}\vskip1.4ex\relax +}% + + +%% Commands from aastex.cls: + +% This has been redefined below + +\newcommand\facility{\@testopt\@facility{[}}% +\def\@facility[#1]#2{{\vskip6pt{\large\it Facility:} #2}}% + +\newcommand\facilities{\@testopt\@facilities{[}}% +\def\@facilities[#1]#2{{\vskip6pt{\large\it Facilities:} #2}}% + + +\long\def\software{\bgroup\@testopt \@software {[}} +\def\@software[#1]#2{\vskip 6pt{ +\frenchspacing +\iftwelvepoint +\font\foo=cmr12 +\else +\font\foo=cmr10\fi +%% +\fontdimen2\foo=3pt %% Changed from 1.5pt to 3pt, March12, 2019 +%% +{\large \it Software: } +#2 +%% returning to original fontdimen +\iftwelvepoint +\fontdimen2\foo=3.91663pt +\else +\fontdimen2\foo=3.33333pt +\fi +}\egroup} + + + + + +\newcommand\object{\@testopt\@object{[}}% +\def\@object[#1]#2{#2}% +\newcommand\objectname{\@testopt\@objectname{[]}}% +\def\@objectname[#1]#2{#2}% +\newlength{\plot@width} +\def\eps@scaling{1.0}% +\newcommand\epsscale[1]{\def\eps@scaling{#1}}% +\newcommand\plotone[1]{% + \centering + \leavevmode + \setlength{\plot@width}{0.85\linewidth} + \includegraphics[width={\eps@scaling\plot@width}]{#1}% +}% +\newcommand\plottwo[2]{% + \centering + \leavevmode + \setlength{\plot@width}{0.425\linewidth} + \includegraphics[width={\eps@scaling\plot@width}]{#1}% + \hfil + \includegraphics[width={\eps@scaling\plot@width}]{#2}% +}% +\newcommand\plotfiddle[7]{% + \centering + \leavevmode + \vbox\@to#2{\rule{\z@}{#2}}% + \includegraphics[% + scale=#4, + angle=#3, + origin=c + ]{#1}% +}% + +\gdef\get@fig@number#1:->#2#3\@nil{% +\ifnum\catcode`#2=12\relax% + \def\thefigure{#2#3}% + \let\@currentlabel\thefigure% + \setcounter{figure}{\thefigure}% + \global\advance\c@figure\m@ne\relax% + \addtocounter{figure}{\m@ne}% +\else% + \def\thefigure{#2#3}% + \let\@currentlabel\thefigure% +\fi} +% +\newcommand\figurenum[1]{%\figurenum{A1} + \edef\temp{#1}% + \expandafter\get@fig@number\meaning\temp\@empty\@nil% +}% + +\newcommand\phn{\phantom{0}}% +\newcommand\phd{\phantom{.}}% +\newcommand\phs{\phantom{$-$}}% +\newcommand\phm[1]{\phantom{#1}}% +\let\la=\lesssim % For Springer A&A compliance... +\let\ga=\gtrsim +\newcommand\sq{\mbox{\rlap{$\sqcap$}$\sqcup$}}% +\newcommand\arcdeg{\mbox{$^\circ$}}% +\newcommand\arcmin{\mbox{$^\prime$}}% +\newcommand\arcsec{\mbox{$^{\prime\prime}$}}% +\newcommand\fd{\mbox{$.\!\!^{\mathrm d}$}}% +\newcommand\fh{\mbox{$.\!\!^{\mathrm h}$}}% +\newcommand\fm{\mbox{$.\!\!^{\mathrm m}$}}% +\newcommand\fs{\mbox{$.\!\!^{\mathrm s}$}}% +\newcommand\fdg{\mbox{$.\!\!^\circ$}}% +\newcommand\farcm@mss{\mbox{$.\mkern-4mu^\prime$}}% +\let\farcm\farcm@mss +\newcommand\farcs@mss{\mbox{$.\!\!^{\prime\prime}$}}% +\let\farcs\farcs@mss +\newcommand\fp{\mbox{$.\!\!^{\scriptscriptstyle\mathrm p}$}}% +\newcommand\micron{\mbox{$\mu$m}}% + + + +\newcommand\ion[2]{#1$\;${% +\ifx\@currsize\normalsize\small \else +\ifx\@currsize\small\footnotesize \else +\ifx\@currsize\footnotesize\scriptsize \else +\ifx\@currsize\scriptsize\tiny \else +\ifx\@currsize\large\normalsize \else +\ifx\@currsize\Large\large +\fi\fi\fi\fi\fi\fi +\rmfamily\@Roman{#2}}\relax}% + +\newcommand\case[2]{\mbox{$\frac{#1}{#2}$}}% +\newcommand\slantfrac{\case}% +\newcommand\onehalf{\slantfrac{1}{2}}% +\newcommand\onethird{\slantfrac{1}{3}}% +\newcommand\twothirds{\slantfrac{2}{3}}% +\newcommand\onequarter{\slantfrac{1}{4}}% +\newcommand\threequarters{\slantfrac{3}{4}}% +\newcommand\ubvr{\mbox{$U\!BV\!R$}}%% UBVR system +\newcommand\ub{\mbox{$U\!-\!B$}}% % U-B +\newcommand\bv{\mbox{$B\!-\!V$}}% % B-V +\newcommand\vr{\mbox{$V\!-\!R$}}% % V-R +\newcommand\ur{\mbox{$U\!-\!R$}}% % U-R + +%% need this change so that it works correctly in tables: +{\catcode`\$=\active +\gdef\nodata{ ~$\cdots$~ }}% + +\newcommand\diameter{\ooalign{\hfil/\hfil\crcr\mathhexbox20D}}% +\newcommand\degr{\arcdeg}% +\newcommand\Sun{\sun}% +\newcommand\Sol{\sun}% +\newcommand\sun{\odot}% +\newcommand\Mercury{\astro{\char1}}% Mercury symbol, "1" +\newcommand\Venus{\astro{\char2}}% Venus symbol, "2" +\newcommand\Earth{\earth}% +\newcommand\Terra{\earth}% +\newcommand\earth{\oplus}% +\newcommand\Mars{\astro{\char4}}% Mars symbol, "4" +\newcommand\Jupiter{\astro{\char5}}% Jupiter symbol, "5" +\newcommand\Saturn{\astro{\char6}}% Saturn symbol, "6" +\newcommand\Uranus{\astro{\char7}}% Uranus symbol, "7" +\newcommand\Neptune{\astro{\char8}}% Neptune symbol, "8" +\newcommand\Pluto{\astro{\char9}}% Pluo symbol, "9" +\newcommand\Moon{\astro{\char10}}% Moon symbol, "M" +\newcommand\Luna{\Moon}% +\newcommand\Aries{\astro{\char11}}% +\newcommand\VEq{\Aries}% vernal equinox (Aries) +\newcommand\Taurus{\astro{\char12}}% +\newcommand\Gemini{\astro{\char13}}% +\newcommand\Cancer{\astro{\char14}}% +\newcommand\Leo{\astro{\char15}}% +\newcommand\Virgo{\astro{\char16}}% +\newcommand\Libra{\astro{\char17}}% +\newcommand\AEq{\Libra}% autumnal equinox (Libra) +\newcommand\Scorpius{\astro{\char18}}% +\newcommand\Sagittarius{\astro{\char19}}% +\newcommand\Capricornus{\astro{\char20}}% +\newcommand\Aquarius{\astro{\char21}}% +\newcommand\Pisces{\astro{\char22}}% + + +\newcommand\sbond{\chem@bnd{\@sbnd}}% +\newcommand\dbond{\chem@bnd{\@dbnd}}% +\newcommand\tbond{\chem@bnd{\@tbnd}}% + + +\newcommand\aj{\ref@jnl{AJ}}% % Astronomical Journal +\newcommand\psj{\ref@jnl{PSJ}}% % Planetary Science Journal +\newcommand\araa{\ref@jnl{ARA\&A}}% % Annual Review of Astron and Astrophys +\newcommand\apj{\ref@jnl{ApJ}}% % Astrophysical Journal +\newcommand\apjl{\ref@jnl{ApJL}} % Astrophysical Journal, Letters +\newcommand\apjs{\ref@jnl{ApJS}}% % Astrophysical Journal, Supplement +\newcommand\ao{\ref@jnl{ApOpt}}% % Applied Optics +\newcommand\apss{\ref@jnl{Ap\&SS}}% % Astrophysics and Space Science +\newcommand\aap{\ref@jnl{A\&A}}% % Astronomy and Astrophysics +\newcommand\aapr{\ref@jnl{A\&A~Rv}}% % Astronomy and Astrophysics Reviews +\newcommand\aaps{\ref@jnl{A\&AS}}% % Astronomy and Astrophysics, Supplement +\newcommand\azh{\ref@jnl{AZh}}% % Astronomicheskii Zhurnal +\newcommand\baas{\ref@jnl{BAAS}}% % Bulletin of the AAS +\newcommand\icarus{\ref@jnl{Icarus}}% % Icarus +\newcommand\jaavso{\ref@jnl{JAAVSO}} % The Journal of the American Association of Variable Star Observers +\newcommand\jrasc{\ref@jnl{JRASC}}% % Journal of the RAS of Canada +\newcommand\memras{\ref@jnl{MmRAS}}% % Memoirs of the RAS +\newcommand\mnras{\ref@jnl{MNRAS}}% % Monthly Notices of the RAS +\newcommand\pra{\ref@jnl{PhRvA}}% % Physical Review A: General Physics +\newcommand\prb{\ref@jnl{PhRvB}}% % Physical Review B: Solid State +\newcommand\prc{\ref@jnl{PhRvC}}% % Physical Review C +\newcommand\prd{\ref@jnl{PhRvD}}% % Physical Review D +\newcommand\pre{\ref@jnl{PhRvE}}% % Physical Review E +\newcommand\prl{\ref@jnl{PhRvL}}% % Physical Review Letters +\newcommand\pasp{\ref@jnl{PASP}}% % Publications of the ASP +\newcommand\pasj{\ref@jnl{PASJ}}% % Publications of the ASJ +\newcommand\qjras{\ref@jnl{QJRAS}}% % Quarterly Journal of the RAS +\newcommand\skytel{\ref@jnl{S\&T}}% % Sky and Telescope +\newcommand\solphys{\ref@jnl{SoPh}}% % Solar Physics +\newcommand\sovast{\ref@jnl{Soviet~Ast.}}% % Soviet Astronomy +\newcommand\ssr{\ref@jnl{SSRv}}% % Space Science Reviews +\newcommand\zap{\ref@jnl{ZA}}% % Zeitschrift fuer Astrophysik +\newcommand\nat{\ref@jnl{Nature}}% % Nature +\newcommand\iaucirc{\ref@jnl{IAUC}}% % IAU Cirulars +\newcommand\aplett{\ref@jnl{Astrophys.~Lett.}}% % Astrophysics Letters +\newcommand\apspr{\ref@jnl{Astrophys.~Space~Phys.~Res.}}% % Astrophysics Space Physics Research +\newcommand\bain{\ref@jnl{BAN}}% % Bulletin Astronomical Institute of the Netherlands +\newcommand\fcp{\ref@jnl{FCPh}}% % Fundamental Cosmic Physics +\newcommand\gca{\ref@jnl{GeoCoA}}% % Geochimica Cosmochimica Acta +\newcommand\grl{\ref@jnl{Geophys.~Res.~Lett.}}% % Geophysics Research Letters +\newcommand\jcp{\ref@jnl{JChPh}}% % Journal of Chemical Physics +\newcommand\jgr{\ref@jnl{J.~Geophys.~Res.}}% % Journal of Geophysics Research +\newcommand\jqsrt{\ref@jnl{JQSRT}}% % Journal of Quantitiative Spectroscopy and Radiative Trasfer +\newcommand\nphysa{\ref@jnl{NuPhA}}% % Nuclear Physics A +\newcommand\physrep{\ref@jnl{PhR}}% % Physics Reports +\newcommand\physscr{\ref@jnl{PhyS}}% % Physica Scripta +\newcommand\planss{\ref@jnl{Planet.~Space~Sci.}}% % Planetary Space Science +\newcommand\procspie{\ref@jnl{Proc.~SPIE}}% % Proceedings of the SPIE + +\newcommand\actaa{\ref@jnl{AcA}}% % Acta Astronomica +\newcommand\caa{\ref@jnl{ChA\&A}}% % Chinese Astronomy and Astrophysics +\newcommand\cjaa{\ref@jnl{ChJA\&A}}% % Chinese Journal of Astronomy and Astrophysics +\newcommand\jcap{\ref@jnl{JCAP}}% % Journal of Cosmology and Astroparticle Physics +\newcommand\na{\ref@jnl{NewA}}% % New Astronomy +\newcommand\nar{\ref@jnl{NewAR}}% % New Astronomy Review +\newcommand\pasa{\ref@jnl{PASA}}% % Publications of the Astron. Soc. of Australia +\newcommand\rmxaa{\ref@jnl{RMxAA}}% % Revista Mexicana de Astronomia y Astrofisica + +%% added feb 9, 2016 +\newcommand\maps{\ref@jnl{M\&PS}}% Meteoritics and Planetary Science +\newcommand\aas{\ref@jnl{AAS Meeting Abstracts}}% American Astronomical Society Meeting Abstracts +\newcommand\dps{\ref@jnl{AAS/DPS Meeting Abstracts}}% American Astronomical Society/Division for Planetary Sciences Meeting Abstracts + + + +\let\astap=\aap +\let\apjlett=\apjl +\let\apjsupp=\apjs +\let\applopt=\ao + +\newcommand\ulap[1]{\vbox\@to\z@{{\vss#1}}}% +\newcommand\dlap[1]{\vbox\@to\z@{{#1\vss}}}% + + +\newcounter{table@save} + +%% March 25, 2019 +%% Old v5.2 way, From Greg, This allows a number like 33N to be used +%% for a table, and the cross-references will work correctly + +\AtBeginDocument{ + +\gdef\get@table@number#1:->#2#3\@nil{% +\ifnum\catcode`#2=12\relax% + \def\thetable{#2#3}% + \let\@currentlabel\thetable% + \setcounter{table}{\thetable}% + \global\advance\c@table\m@ne\relax% +\else% + \def\thetable{#2#3}% + \let\@currentlabel\thetable% +\fi} +% +\def\tablenum#1{% Clashing with siunitx + \edef\temp{#1}% + \expandafter\get@table@number\meaning\temp\@empty\@nil}% + +\let\savetablenum\tablenum +} + + +\def\tabletypesize#1{\gdef\currtabletypesize{#1} +\def\@table@type@size{#1}}% + +\tabletypesize{\small} +\let\tablefontsize=\tabletypesize % for compatibility with old documents + +\gdef\@tablecaption{} +\def\tablecaption#1{\gdef\@tablecaption{#1}} + +\def\LT@endpbox{% + \@finalstrut\@arstrutbox + \egroup + \the\LT@p@ftn + \global\LT@p@ftn{}% + \hfil} + +%% Used for longtable +\def\LT@makecaption#1#2#3{% + \LT@mcol\LT@cols c{\hbox to\z@{\hss\parbox[t]\LTcapwidth +{% +\xdef \@currentlabel{\thetable} + \sbox\@tempboxa{\small #2. +%% disable trackchanges commands here, so they aren't entered 2 times: +\let\added\relax +#3}% + \ifdim\wd\@tempboxa>\hsize + \small#2. #3% + \else + \hbox to\hsize{\hfil\box\@tempboxa\hfil}% + \fi + \endgraf\vskip\baselineskip}% + \hss}} +}%% + +\let\LT@makecaption@rtx=\LT@makecaption % to fight redefinition in Revtex-4.1 + +\def\xfigure{figure} +%% from book.cls/ used?? +\AtBeginDocument{ +\long\def\@makecaption#1#2{% + \vskip\abovecaptionskip +%% \small added to keep currtabletypesize from determining size of caption + \sbox\@tempboxa{\small +%% disable trackchanges commands here, so they aren't entered 2 times: +\let\added\relax +{\bf #1.} #2}% + \ifdim \wd\@tempboxa >\hsize +\small +\ifdigitasset% +\highlighcaption{\vbox{\hsize=.96\linewidth\unhbox\@tempboxa}} +\else% +\unhbox\@tempboxa\par +\fi% + \else + \global \@minipagefalse + \ifdigitasset% + \highlighcaption{\hb@xt@\hsize{\hfill\box\@tempboxa\hfill}} + \else% + \hb@xt@\hsize{\hfill\box\@tempboxa\hfill} + \fi% + \fi\global\digitassetfalse + \vskip\belowcaptionskip +} +%% \@ifpackageloaded{subcaption}{ +%% \long\def\caption@makecaption#1#2{% +%% \caption@nobreak +%% \caption@make@above +%% \caption@nobreak +%% \ifdigitasset% +%% \highlighcaption{\caption@@make{#1}{#2}}% +%% \else +%% \caption@@make{#1}{#2}% +%% \fi +%% \caption@nobreak +%% \caption@make@below +%% \caption@nobreak} +%% }{} +} + +\newdimen\@abovenoteskip +\newcommand\tablerefs[1]{\ifdim\@abovenoteskip=0pt\global\@abovenoteskip=10pt\fi +{\small\@tableref{\parfillskip\z@ plus1fil\relax #1\endgraf}}}% + +\global\def\tablenotemark#1{{\normalfont\textsuperscript{\currtabletypesize\it #1}}}%\normalsize #128 + + +%% this version of \tablehead doesn't seem to be used, so set to \xyztablehead{} +\def\xyztablehead#1{\@table@not@headedfalse% + \kill + \caption{\\% + \@tablecaption\gdef\@currentlabel{\thetable}(0)} + \\\hline\hline% + #1\vrule height 12pt depth 10pt width 0pt\relax +\hskip\tabcolsep\\[.7ex] + \hline\\[-1.5ex] + \endfirsthead + \caption[]{--- \emph{Continued}}\\ + \hline + \hline\\[-1.7ex] + #1\hskip\tabcolsep\\[.7ex] + \hline\\[-1.5ex] + \endhead + \hline + \endfoot% +} + +\newif\if@table@not@headed + +\newlength{\table@note@skip} +\setlength{\table@note@skip}{0.5ex} +\newlength{\deluxe@table@width} +\newlength{\@d@t@a} +\newcounter{deluxe@table@num} +\newdimen\LTcapwidth + +%% \ignorespaces necessary ++== depth 6pt was depth 3pt, == added height 12pt, nov 2017 +\def\colhead#1{\multicolumn{1}{c}{\vrule depth 6pt height 12pt width +0pt\relax#1}\ignorespaces} +\def\twocolhead#1{\multicolumn{2}{c}{\hss\vrule depth 6pt height 12pt width +0pt\relax#1\hss}\ignorespaces} +\def\nocolhead#1{\multicolumn{1}{h}{}\ignorespaces} +\def\dcolhead#1{\multicolumn{1}{c}{$\vrule depth 6pt height12pt +width0pt\relax#1$}\ignorespaces} + +%\newcounter{LT@tables} +\def\tablewidth#1{% + \ifdim#1=\z@ + \else + \gdef\@d@t@@flag{1} + \if@filesw\immediate\write\@auxout{% + \gdef\expandafter\noexpand + \csname deluxe@table@width@\romannumeral\c@LT@tables\endcsname + {#1}} + \fi + \fi +} + + +\def\save@natural@width{% + \ifnum\@d@t@@flag=0 + \setlength{\@d@t@a}{0pt}% + \let\@d@t@b=\LT@entry% + \def\LT@entry##1##2{\addtolength{\@d@t@a}{##2}% + }% + \expandafter\csname LT@\romannumeral\c@deluxe@table@num\endcsname + \setlength{\@d@t@a}{-\@d@t@a} + \tablewidth{\the\@d@t@a} + \def\LT@entry{\@d@t@b} + \fi +} + +\def\lt@expand@linewidth@one{\setlength\LTleft{0pt}\setlength\LTright{0pt}} +\def\lt@expand@linewidth@two{@{\extracolsep{0pt plus 1filll}}} + +\def\find@table@width{% +%%% set table width using aux file and command \tablewidth + \setcounter{deluxe@table@num}{\c@LT@tables} + \refstepcounter{deluxe@table@num} + \expandafter\ifx\csname deluxe@table@width@\romannumeral\c@deluxe@table@num\endcsname\relax + \def\@d@t@{0.999\linewidth} + \else + \edef\@d@t@{\expandafter\csname deluxe@table@width@\romannumeral\c@deluxe@table@num\endcsname} + \fi + \ifdim\@d@t@<\z@% then natural width is used + \setlength{\deluxe@table@width}{-\@d@t@} + \setlength{\LTcapwidth}{-\@d@t@} + \def\lt@expand@linewidth{\relax} + \def\lt@expand@linewidth@{} + \else% we will enclose table in the minipage of the given width and make + % longtable to span the full minipage width + \ifdim\@d@t@>\z@\else\def\@d@t@{0.999\linewidth}\fi + \setlength{\deluxe@table@width}{\@d@t@} + \setlength{\LTcapwidth}{\@d@t@} + \def\lt@expand@linewidth{\lt@expand@linewidth@one} + \def\lt@expand@linewidth@{\lt@expand@linewidth@two} + \fi +} + +\newlength{\abovedeluxetableskip} +\newlength{\belowdeluxetableskip} +\setlength{\abovedeluxetableskip}{0pt} +\setlength{\belowdeluxetableskip}{0pt} +\setlength{\tabcolsep}{5pt} + +\setlength\doublerulesep{1.5pt} +\newdimen\lastrowheight +\def\set@last@row@height{\setlength{\lastrowheight}{\ht\strutbox}\addtolength{\lastrowheight}{\dp\strutbox}\setlength{\lastrowheight}{-\arraystretch\lastrowheight}} + +\let\tableline=\colrule % Revtex said: Command \tableline is obsolete; Use \colrule instead.. + +%% +\newtoks\DT@p@ftn +\global\def\xtablenotetext@DT#1#2{ + \edef\@tempa{\the\DT@p@ftn\noexpand\tablenotemark{#1}~} + \global\DT@p@ftn\expandafter{\@tempa{\@table@type@size#2}\par}}% + +%%% AH %%%%%%%%%%%%%%%%%%%%% +\let\savedollar$ +\catcode`\$=\active +\let$\savedollar + +%% + +\def\resetdecimals{\global\let\zdoit\relax\global\let\ddoit\relax} + +\def\tableheadfrac#1{} +\newcount\pt@column +\newcount\pt@ncol + +\newcommand\tablecolumns[1]{% + \pt@column=#1\relax + \pt@ncol=#1\relax + \global\let\pt@addcol\@empty +}% + +%% from older version, probably can delete: +\def\@tablecom#1{% + \vspace*{\table@note@skip} +\par +{\parbox{\linewidth}{\hskip1em\rmfamily {\@eapj@cap@font Note}. --- #1}\par}% +}% +\def\@tableref#1{% + \vspace*{\table@note@skip} +\par +{\parbox{\linewidth}{\hskip1em\rmfamily {\@eapj@cap@font References}. --- #1}\par}% +}% +\def\spew@tblnotes{% + \@ifx@empty\tblref@list{}{% + \@tablenotes{\tblref@list}% + \vspace*{\table@note@skip}% + \global\let\tblref@list\@empty + }% + \@ifx@empty\tblnote@list{}{% + \@tablenotes{\tblnote@list}% + \vspace*{\table@note@skip}% + \global\let\tblnote@list\@empty + } + \the\DT@p@ftn% +}% + +%% for notes on emulateapj please see http://hea-www.harvard.edu/~alexey/emulateapj +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% End of code taken from emulateapj.cls %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%%% New as of august 2015: + +%% These commands requested AAS +\newcommand{\noprint}[1]{} +\newcommand{\figsetstart}{{\bf Fig. Set} } +\newcommand{\figsetend}{} +\newcommand{\figsetgrpstart}{} +\newcommand{\figsetgrpend}{} +\newcommand{\figsetnum}[1]{{\bf #1.}} +\newcommand{\figsettitle}[1]{ {\bf #1}} +\newcommand{\figsetgrpnum}[1]{\noprint{#1}} +\newcommand{\figsetgrptitle}[1]{\noprint{#1}} +\newcommand{\figsetplot}[1]{\noprint{#1}} +\newcommand{\figsetgrpnote}[1]{\noprint{#1}} + +\usepackage[hyphens]{url} +%% if we take away the xx before UrlBreaks we will get a url that breaks +%% at any letter or number. It might be better to break only at / however... +\expandafter\def\expandafter\xxUrlBreaks\expandafter{\UrlBreaks% save the current one + \do\a\do\b\do\c\do\d\do\e\do\f\do\g\do\h\do\i\do\j% + \do\k\do\l\do\m\do\n\do\o\do\p\do\q\do\r\do\s\do\t% + \do\u\do\v\do\w\do\x\do\y\do\z\do\A\do\B\do\C\do\D% + \do\E\do\F\do\G\do\H\do\I\do\J\do\K\do\L\do\M\do\N% + \do\O\do\P\do\Q\do\R\do\S\do\T\do\U\do\V\do\W\do\X% + \do\Y\do\Z\do\1\do\2\do\3\do\4\do\5\do\6\do\7\do\8\do\9} + + +%% for tables continuing over pages +\usepackage{longtable} + +%% for editing changes +\usepackage{xcolor} +% hyperref link defaults to "blue" (0000ff) as this matches our publisher produced pdf style +\definecolor{xlinkcolor}{cmyk}{1,1,0,0} + + +%% \PassOptionsToPackage{hyphens}{url} +%% In response to request from AAS + \usepackage[bookmarks=true, % show bookmarks bar?/ Changed March 22, 2019 for + % improved accessibility + pdfnewwindow=true, % links in new window + colorlinks=true, % false: boxed links; true: colored links + linkcolor=xlinkcolor, % color of internal links + citecolor=xlinkcolor, % color of links to bibliography +filecolor=xlinkcolor, % color of file links +urlcolor=xlinkcolor, % color of external links +final=true + ]{hyperref} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Additions to AASTeX by Amy Hendrickson, TeXnology Inc, August 17, 2015 + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Table Tools, written by Amy Hendrickson +%% for American Astronomical Society +%% August 17, 2015 +%% array package is necessary: +\usepackage{array} + +\def\@fmtversion#1-#2-#3\@nil{\gdef\@fmtyear{#1}} +\expandafter\@fmtversion\fmtversion\@nil + +\ifnum\@fmtyear > 2017\def\@endpbox{\@finalstrut\@arstrutbox \color@endgroup \egroup\hfil}\fi +%%%%%%%% +%% 1) h in table preamble will makes text in that column ignored. + +%%%%%%%% +%% 2) uppercase C L or R will make those columns in math mode. + +%%%%%%%% +%% 3) \begin{splittabular}{}...\end{splittabular} +%% `B' in the preamble will show where the table should be broken. It may +%% be used once in a preamble to break the table into two parts, or +%% two times in a preamble to break the table into three parts. + +%% The resulting table will position left half of table above right half of table. + +%% Care should be taken with \multicolumn so that it won't be broken between +%% the two parts of the table. You may need to shorten the \multicolumn argument +%% for number of columns to be appropriate to the number of columns in +%% the new split table. + +%% In this example, for instance, we start with: +%% \begin{tabular}{ccccccc} +%% \multicolumn{7}{c}{\textsc{Table 1}} +%% and change it to: +%% \begin{splittabular}{ccccBccc} +%% \multicolumn{4}{c}{\textsc{Table 1}}\\ +%% +%% If you'd like to have a table number in the second half of the table, +%% you can ask for a second multicolumn command that will position at the +%% top of the second half of the table: +%% +%% \begin{splittabular}{ccccBccc} +%% \multicolumn{4}{c}{\textsc{Table 1}}&\multicolumn{3}{c}{\textsc{Table 1, Continued}}\\ +%% +%% You can do the same for the caption, and give a Continued caption for +%% the second half of the table. Originally: +%% \multicolumn{7}{c}{\textsc{Log of \textit{HST} Observations for +%% NGC~6388}} +%% Now, changed so that we get a caption on both halves of the table: +%% \multicolumn{4}{c}{\textsc{Log of \textit{HST} Observations for +%% NGC~6388}}&\multicolumn{3}{c}{\textsc{Log of \textit{HST} Observations for +%% NGC~6388, Continued}}\\ +%% +%% Similarly, you can rearrange table notes to appear at the bottom of +%% the appropriate half of the table. For instance, starting with this, +%% which would make table notes both appear at the bottom of the top half +%% of the table: +%% \multicolumn{4}{l}{\small{$\dagger$ Average distance of data set from +%% cluster center.}}\\ +%% \multicolumn{4}{l}{$^{\rm a}$SNAP program.}\\ +%% +%% We may substitute the following: +%% \multicolumn{4}{l}{$^{\rm a}$SNAP program.}&\multicolumn{3}{l}{\small{$\dagger$ Average distance of data set from +%% cluster center.}}\\ +%% +%% Which will produce the first endnote underneath the top half of the +%% table, and the second underneath the bottom half. +%% +%% Another option would be to have both endnotes appear below the bottom +%% half of the table. Easily done: +%% &&&&\multicolumn{3}{l}{$^{\rm a}$SNAP program.}\\ +%% &&&&\multicolumn{3}{l}{\small{$\dagger$ Average distance of data set from +%% cluster center.}}\\ +%% %% %% %% %% %% %% + +%%%%%%%% +%% 4) \colnumbers will make line with column numbers automatic. It will work with splittabular +%% and splitdeluxetable as well as tabular. +%% To use: type in \colnumbers within the table whereever you'd like it to appear, typically +%% underneath the column headers, before the lines of data. + +%%%%%%%% +%% 5) Easy Decimal numbering +%% How to make decimal numbers in tables line up on the period: + +%% Use D (for decimal column) in table preamble for every decimal number. The decimal +%% numbers will use two columns, one for the left part of the decimal +%% number and one for the right part. + +%% D may be used more than once in a table preamble. + +%% If you want to type in a column header over the decimal +%% numbers, please use \multicolumn2c{} to span both columns. + +%% After the column headers, to start decimal numbering, +%% type in \decimals in the body of the table. + +%% When entering decimal numbers +%% remember to leave a space after the decimal number, before the following &. +%% For instance: &22.3 &35.96 \\ + +%% If you'd like an empty entry, please supply a period and a space: & . &. You +%% will not see the period in the resulting table. + +%% example: +% \begin{tabular}{rDD} +% \hline +% &&&\multicolumn2c{\bf More}\\ +% &\multicolumn2c{\bf Decimals}&\multicolumn2c{\bf Decimals}\\ +% \hline +% \hline +% \decimals +% one& . &34.2 \\ +% two &567.0 &21345 \\ +% three&.0 &62.5 \\ +% four&245 &5034.349923 \\ +% five&21 & \\ +% six& &21.6 +% \end{tabular} +%% +% Decimal numbering works within \begin{splittabular}...\end{splittabular} +% \begin{splitdeluxetable} and \end{splitdeluxetable} for tables broken into two +% or three parts. \colnumbers will number the columns counting both sides +% of the decimal number as one column; \tablehead{\colhead{}...} will make +% the column headers position above the two columns used for one decimal +% number as well. +% +% Decimal numbers will be in math mode so that plus and minus signs are printed +% correctly, expressions like `$\pm$ 1.2' or `\pm 1.2', will both work +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\let\savedollar$ +\catcode`\$=\active + +\let\savetabular\tabular +\let\saveendtabular\endtabular + + +\def\tabular{\catcode`\&=\active\relax\catcode`\$=\active\relax\hskip\movetableright\global\movetableright\z@\savetabular}% + +\long\gdef\eatone{\setbox0=\hbox\bgroup\savedollar\let$\relax} +\gdef\endeatone{\savedollar\egroup\hskip-2\tabcolsep} + +%% Hide, important because it allows us to split tables horizontally +\newcolumntype{h}{>\eatone c<\endeatone} + +\newcolumntype{C}{>{\bgroup\savedollar\let$\relax}c<{\savedollar\egroup}} +\newcolumntype{L}{>{\bgroup\savedollar\let$\relax}l<{\savedollar\egroup}} +\newcolumntype{R}{>{\bgroup\savedollar\let$\relax}r<{\savedollar\egroup}} %$ + +\newcolumntype{B}{>\eatone c<\endeatone} %% used for \splittabular to indicate break in + %% two or three parts of table + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Split tables into 2 or 3 parts; stack the parts +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% Process table preamble + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Count number of columns in preamble + +\newcount\colcount +\newcount\firstcolcount +\newcount\secondcolcount +\newcount\thirdcolcount +\newcount\columncount + +%% \makeatother is necessary to keep @ from being treated as a letter +%% when counting the number of columns in table. +\makeatother +\def\xD{D} +\def\xaster{*} +\newcount\howmanyDs +\newcount\firsthowmanyDs +\newcount\secondhowmanyDs + +\newif\ifD + +\def\countcols#1{\ifcat#1c +\global\advance\colcount by 1\relax\fi +%% +\def\lookforD{#1} +\ifx\lookforD\xD +\global\advance\howmanyDs by 1 +\global\advance\colcount by1\relax +\fi +%% +\futurelet\next\lookatnext +} +\makeatletter + +\def\xeatone#1{\countcols} +\def\xrelax{\relax} + +%% second conditional deals with expressions like @{} in +%% the preamble. +\def\lookatnext{\if\next\xrelax\let\go\relax +\else +\ifx\next\bgroup\let\go\xeatone\else +\let\go\countcols\fi\fi\go} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% reset line counting at \\ + +%% arraycr redefined to match revtex4-1 +\def\new@arraycr{\relax +\global\columncount=0\relax +\global\colheadcount=0\relax +\iffalse {\fi \ifnum 0=`}\fi \@ifstar {\global \@tbpen \@M \@xarraycr} +{\global \@tbpen \intertabularlinepenalty \@xarraycr}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Redefining & is necessary to get around \omit in \multicolumn, +%% which prevents @{} from being used to change the meaning of multicolumn. +%% Now column number and top or bottom table is used to determine whether +%% multicolumn should be turned on or off. +\let\saveampersand& + +\newif\iffirstbox +\newif\ifsecondbox +\newif\ifthirdbox + +\long\gdef\CheckNumberAndSwitch{\unskip\global\advance\columncount by 1\relax% +\saveampersand} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Parse and count preamble + +\def\catchfirstpreamble#1B#2Z{%firstpreamble +\def\leftpreamble{#1\relax} +\colcount=0 +\global\howmanyDs=0\relax +\expandafter\countcols\leftpreamble +\global\firstcolcount\the\colcount +\global\firsthowmanyDs\the\howmanyDs +\ifnum\firstcolcount>25 +\typeout{^^J +----------------------------------------------------- +^^J +Warning! +^^J^^J +Too many columns in first part of table! +^^J^^J +Maximum number of columns in each part of the table is 25. Each `D' counts as two columns. +^^J +----------------------------------------------------- +}\fi +\global\howmanyDs=0\relax +\global\colcount=0\relax +\newcolumntype{A}{#1}} + +\def\catchsecondpreamble#1B#2Z{%secondpreamble +\def\rightpreamble{#2\relax} +\colcount=0 +\expandafter\countcols\rightpreamble +\global\secondcolcount\colcount +\global\secondhowmanyDs\the\howmanyDs +\ifnum\secondcolcount>25 +\typeout{^^J----------------------------------------------------- +^^J +Warning! +^^J^^J +Too many columns in second part of table! +^^J^^J +Maximum number of columns in each part of the table is 25. Each `D' counts as two columns. +^^J +----------------------------------------------------- +}\fi +\global\totalcolumns=\firstcolcount +\global\advance\totalcolumns by \secondcolcount +\global\colcount=0\relax +\newcolumntype{Z}{#2}} + + +\def\catchsecondofthreepreamble#1B#2B#3Z{%secondpreamble +\def\rightpreamble{#2\relax} +\colcount=0 +\howmanyDs=0 +\expandafter\countcols\rightpreamble +\global\secondcolcount\colcount +\global\secondhowmanyDs\the\howmanyDs +\global\totalcolumns=\firstcolcount +\global\advance\totalcolumns by \secondcolcount +\global\colcount=0\relax +\newcolumntype{Z}{#2}} + + +\def\catchthirdpreamble#1B#2B#3Z{%firstpreamble +\def\thirdpreamble{#3} +\colcount=0 +\expandafter\countcols\thirdpreamble +\global\thirdcolcount\the\colcount +\global\advance\totalcolumns by \thirdcolcount +\global\colcount=0\relax +\newcolumntype{z}{#3}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Define splittabular/endsplittabular + +\newcount\PartsOfTable +\newif\ifbreaktab + +\def\checkforB #1B#2B#3B{ +%% defaults, may be used in \colnumbers +\gdef\tabfullpreamble{#1#2#3\relax} +\gdef\firstpreamble{#1} +\gdef\secondpreamble{#2} +\gdef\thirdpreamble{#3} +\ifx\thirdpreamble\empty +\global\PartsOfTable=2 +\else +\global\PartsOfTable=3 +\fi +} + +\def\lookforD#1{\def\zone{#1}\ifx\zone\xD +\global\Dtrue\else\Dfalse\fi} + +\newcount\columnoneandtwo +\newif\ifdonullmulticol + +\newcount\colnumsused +\newcount\loopnum + +\catcode`\&=\active +\let&\CheckNumberAndSwitch +\let$\savedollar + +%sss +\def\splittabular{\catcode`\&=\active +\catcode`\$=\active +\global\colnumbersonfalse +\let\colnumbers\savesplitplaincolnumbers +\let\splitdecimalcolnumbers\savesplitdecimalcolnumbers +\def\decimalcolnumbers{\splitdecimalcolnumbers} +\xsplittabular} + +\def\xsplittabular#1#2\end{{ +\global\firsttimetrue +\let&\CheckNumberAndSwitch +\let$\savedollar +%%%$ +\def\endtabular{\endarray +\global\let\zdoit\relax +\global\let\ddoit\relax +\global\Dfalse} +\setbox0=\hbox{\def\firstarg{#1}\expandafter\lookforD\firstarg} +\PartsOfTable=0 +\def\tempfullpreamble{#1BB} +\setbox0=\hbox{\expandafter\checkforB\tempfullpreamble} +%% Now PartsOfTable is either =2 or 3 +%% +\global\colnumsused=0 +\global\breaktabtrue +\global\colcount=0 +%% +\ifnum\PartsOfTable=3 +\let\multicolumn\threebreakmulticolumn +\else +\let\multicolumn\breakmulticolumn +\fi +%% +\def\one{#1Z}%% full preamble +\ifnum\PartsOfTable=3 +\expandafter\catchfirstpreamble\one +\expandafter\catchsecondofthreepreamble\one +\expandafter\catchthirdpreamble\one +\makefirstdummycolumns %f +\makeseconddummycolumns %F +\makethirddummycolumns %E +\else %% PartsOfTable=2 +\expandafter\catchfirstpreamble\one +\expandafter\catchsecondpreamble\one +\makefirstdummycolumns %f +\makeseconddummycolumns %F +\fi +%%% +\global\columncount=0 +\ifnum\PartsOfTable=3 +%% For table divided into three parts !! +\firstboxtrue\secondboxfalse\thirdboxfalse +% +\setbox\firsttablebox=\hbox{% +\begin{tabular}{AFE}% +#2\crcr +\end{tabular}} +% +\hbox to \hsize{\hss\unhbox\firsttablebox\hss} +\vskip6pt +\hrule +\vskip6pt +\global\columncount=0 +\firstboxfalse\secondboxtrue\thirdboxfalse +\ifcolnumberson +\let\colnumbers\xplain +\setbox\secondtablebox=\hbox{% +\begin{tabular}{fZE}% fZE +#2\crcr\end{tabular}} +\else +\setbox\secondtablebox=\hbox{ +\begin{tabular}{fZE}% fZE +#2 +\end{tabular}} +\fi +\hbox to \hsize{\hss\unhbox\secondtablebox\hss} +%% +\vskip6pt +\hrule +\vskip6pt +\firstboxfalse\secondboxfalse\thirdboxtrue +\global\columncount=0 +\ifcolnumberson +\let\colnumbers\xplain +\setbox\thirdtablebox=\hbox{% +\begin{tabular}{fFz}% fFz +#2\crcr\end{tabular}} +\else +\setbox\thirdtablebox=\hbox{ +\begin{tabular}{fFz}% fFz +#2 +\end{tabular}} +\fi +\hbox to \hsize{\hss\unhbox\thirdtablebox\hss} +\else +%% +%% For table divided into two parts: +%% +\global\columncount=0 +\secondboxfalse + \setbox\firsttablebox=\hbox{% +\begin{tabular}{AF}% should be AF +#2 +\end{tabular} +} + \hbox to \hsize{\hss\unhbox\firsttablebox\hss} +\vskip6pt +\hrule +\vskip6pt +\global\columncount=0 +\secondboxtrue +\ifcolnumberson +\setbox\secondtablebox=\hbox{\let\colnumbers\xplain +\begin{tabular}{fZ}% should be fZ +#2 +\end{tabular} +} +\else +\setbox\secondtablebox=\hbox{ +\begin{tabular}{fZ}% should be fZ +#2 +\end{tabular} +} +\fi +\hbox to \hsize{\hss\unhbox\secondtablebox\hss} +%% +%% end of conditional testing for 2 or 3 part table: +\fi +%\global\breaktabfalse +} +\firsthowmanyDs=0 +\secondhowmanyDs=0 +\resetdecimals +\end +} + +%yyy +\def\endsplittabular{\global\firsttimefalse\global\colnumbersonfalse +\global\let\splitplaincolnumbers\savesplitplaincolnumbers +\global\breaktabfalse} + +\long\gdef\breakmulticolumn#1#2#3{% +\multispan{#1}% +\let&\CheckNumberAndSwitch +\ifsecondbox% +\ifnum\columncount<\firstcolcount% +\global\donullmulticoltrue% +\else% +\global\donullmulticolfalse% +\fi% +%%% + \else% first box +\ifnum\columncount<\firstcolcount% +\global\donullmulticolfalse% +\else% +\global\donullmulticoltrue% +\fi% +\fi% +\ifdonullmulticol% +\global\advance\colheadcount by 1\relax +\begingroup + \def\@addamp{\if@firstamp \@firstampfalse \else + \@preamerr 5\fi}% + \@mkpream{h}\@addtopreamble\@empty + \endgroup + \def\@sharp{}% +%% comment out \@arstrut to prevent blank line where multicolumn was found +%% on other parts of the table, but not on the current part. + \@arstrut +\@preamble + \null\ignorespaces +\else% +\begingroup + \def\@addamp{\if@firstamp \@firstampfalse \else + \@preamerr 5\fi}% + \@mkpream{#2}\@addtopreamble\@empty + \endgroup + \def\@sharp{#3}% + \@arstrut \@preamble + \null\ignorespaces +\fi% +\global\donullmulticolfalse% +\global\advance\columncount by #1\relax% +\global\advance\columncount-1\relax% +} + + +\long\gdef\threebreakmulticolumn#1#2#3{% +\multispan{#1}% +\columnoneandtwo=\firstcolcount\relax% +\advance\columnoneandtwo by \secondcolcount\relax% +%% +\global\donullmulticoltrue\relax% +\iffirstbox\relax% +\ifnum\columncount<\firstcolcount% +\global\donullmulticolfalse% +\fi\relax% +\ifnum\columncount=\firstcolcount\relax% +\donullmulticoltrue\fi\relax% +\else\relax% +%% +\ifsecondbox% +\ifnum\columncount=\firstcolcount\relax% +\global\donullmulticolfalse\fi\relax% +\ifnum\columncount>\firstcolcount% +\ifnum\columncount<\columnoneandtwo\relax% +\global\donullmulticolfalse\relax% +\fi\fi\relax% +\else\relax% +%%% +\ifthirdbox% +\ifnum\columncount<\columnoneandtwo% +\global\donullmulticoltrue% +\else\relax% +\global\donullmulticolfalse% +\fi\relax% +\fi%% end if third box +\fi%% end if second box +\fi%% end if first box +%% +\ifdonullmulticol% +\begingroup\relax% +\global\advance\colheadcount by 1\relax% + \def\@addamp{\if@firstamp \@firstampfalse \else% + \@preamerr 5\fi}% + \@mkpream{h}\@addtopreamble\@empty% + \endgroup% + \def\@sharp{}% +%% comment out \@arstrut to prevent blank line where multicolumn was found +%% on other parts of the table, but not on the current part. + \@arstrut \@preamble% + \null\ignorespaces +\else% +\begingroup% + \def\@addamp{\if@firstamp \@firstampfalse \else% + \@preamerr 5\fi}% + \@mkpream{#2}\@addtopreamble\@empty% + \endgroup% + \def\@sharp{#3}% + \@arstrut \@preamble% + \null\ignorespaces +\fi% +\global\donullmulticolfalse% +\global\advance\columncount by #1\relax% +\global\advance\columncount-1\relax% +} + +%% First dummy columns is the part of the table that will not print, +%% in this case the first part to the left. +%%\makefirstdummycolumns +%% +%% and second dummy columns +%% \makeseconddummycolumns. +\gdef\makefirstdummycolumns{ +\ifcase\firstcolcount +\or% 1 +\newcolumntype{f}{h} % no D possible +%%%%%%%%%%%%%%%%%% +\or% 2 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hh}%% 0 + \or + \newcolumntype{f}{d} %% 1 + \fi +%%%%%%%%%%%%%%%%%% +\or% 3 + \ifcase\firsthowmanyDs% + \newcolumntype{f}{hhh}% 0 + \or% + \newcolumntype{f}{dh}% 1 + \fi% +%%%%%%%%%%%%%%%%%% +\or% 4 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhh} % 0 + \or + \newcolumntype{f}{dhh} % 1 + \or + \newcolumntype{f}{dd} % 2 + \fi +%%%%%%%%%%%%%%%%%% +\or% 5 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhh} % 0 + \or + \newcolumntype{f}{dhhh} % 1 + \or + \newcolumntype{f}{ddh} % 2 + \fi +%%%%%%%%%%%%%%%%%% +\or% 6 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhh} % 0 + \or + \newcolumntype{f}{dhhhh} % 1 + \or + \newcolumntype{f}{ddhh} % 2 + \or + \newcolumntype{f}{ddd} % 3 + \fi +%%%%%%%%%%%%%%% +\or % 7 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhh} % 1 + \or + \newcolumntype{f}{ddhhh} % 2 + \or + \newcolumntype{f}{dddh} % 3 + \fi +%%%%%%%%%%%%%%%%%% +\or % 8 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhh} % 2 + \or + \newcolumntype{f}{dddhh} % 3 + \or + \newcolumntype{f}{dddd} % 4 + \fi +%%%%%%%%%%%%%%%%%% +\or % 9 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhh} % 2 + \or + \newcolumntype{f}{dddhhh} % 3 + \or + \newcolumntype{f}{ddddh} % 4 + \fi +%%%%%%%%%%%%%%%%%% +\or %10 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhh} % 3 + \or + \newcolumntype{f}{ddddhh} % 4 + \or + \newcolumntype{f}{ddddd} % 5 + \fi +%%%%%%%%%%%%%%%%%% +\or % 11 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhh} % 4 + \or + \newcolumntype{f}{dddddh} % 5 + \fi +%%%%%%%%%%%%%%%%%% +\or % 12 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhh} % 4 + \or + \newcolumntype{f}{dddddhh} % 5 + \or + \newcolumntype{f}{dddddd} % 6 + \fi +%%%%%%%%%%%%%%%%%% +\or %13 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhh} % 5 + \or + \newcolumntype{f}{ddddddh} % 6 + \fi +%%%%%%%%%%%%%%%%%% +\or %14 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhh} % 5 + \or + \newcolumntype{f}{ddddddhh} % 6 + \or + \newcolumntype{f}{ddddddd} % 7 + \fi +%%%%%%%%%%%%%%%%%% +\or %15 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhh} % 6 + \or + \newcolumntype{f}{dddddddh} % 7 + \fi +%%%%%%%%%%%%%%%%%% +\or %16 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhh} % 6 + \or + \newcolumntype{f}{dddddddhh} % 7 + \or + \newcolumntype{f}{dddddddd} % 8 +\fi +%%%%%%%%%%%%%%%%%% +\or %17 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhhh} % 6 + \or + \newcolumntype{f}{dddddddhhh} % 7 + \or + \newcolumntype{f}{ddddddddh} % 8 +\fi +%%%%%%%%%%%%%%%%%% +\or %18 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhhhh} % 6 + \or + \newcolumntype{f}{ddddddhhhh} % 7 + \or + \newcolumntype{f}{ddddddddhh} % 8 + \or + \newcolumntype{f}{ddddddddd} % 9 +\fi +%%%%%%%%%%%%%%%%%% +\or %19 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhhhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhhhhh} % 6 + \or + \newcolumntype{f}{dddddddhhhhh} % 7 + \or + \newcolumntype{f}{ddddddddhhh} % 8 + \or + \newcolumntype{f}{ddddddddddh} % 9 +\fi +%%%%%%%%%%%%%%%%%% +\or %20 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhh hhhhh hhhhh hhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhhhhhh} % 6 + \or + \newcolumntype{f}{dddddddhhhhhh} % 7 + \or + \newcolumntype{f}{ddddddddhhhh} % 8 + \or + \newcolumntype{f}{dddddddddhh} % 9 + \or + \newcolumntype{f}{dddddddddd} % 10 + \fi +%%%%%%%%%%%%%%%%%% +\or %21 + \ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhh hhhhh hhhhh hhhhh h} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhhhhhhh} % 6 + \or + \newcolumntype{f}{dddddddhhhhhhh} % 7 + \or + \newcolumntype{f}{ddddddddhhhhh} % 8 + \or + \newcolumntype{f}{ddd ddd ddd hhh} % 9 + \or + \newcolumntype{f}{ddd ddd ddd d h} % 10 + \fi +%%%%%%%%%%%%%%%%%% +\or %22 +\ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhh hhhhh hhhhh hhhhh hh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhhhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhhhhhhhh} % 6 + \or + \newcolumntype{f}{dddddddhhhhhhhh} % 7 + \or + \newcolumntype{f}{ddddddddhhhhhh} % 8 + \or + \newcolumntype{f}{ddd ddd ddd hhhh} % 9 + \or + \newcolumntype{f}{ddd ddd ddd dhh} % 10 + \or + \newcolumntype{f}{ddddddddddd} % 11 + \fi +%%%%%%%%%%%%%%%%%% +\or %23 +\ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhh hhhhh hhhhh hhhhh hhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhhhhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhhhhhhhhh} % 6 + \or + \newcolumntype{f}{dddddddhhhhhhhhh} % 7 + \or + \newcolumntype{f}{ddddddddhhhhhhh} % 8 + \or + \newcolumntype{f}{ddd ddd ddd hhhhh} % 9 + \or + \newcolumntype{f}{ddddddddddhhh} % 10 + \or + \newcolumntype{f}{ddddd ddddd dh} % 11 + \fi +%%%%%%%%%%%%%%%%%% +\or %24 +\ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhh hhhhh hhhhh hhhhh hhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhhhhhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhhhhhhhhhh} % 6 + \or + \newcolumntype{f}{dddddddhhhhhhhhhh} % 7 + \or + \newcolumntype{f}{ddddddddhhhhhhhh} % 8 + \or + \newcolumntype{f}{ddd ddd ddd hhhhhh} % 9 + \or + \newcolumntype{f}{ddddddddddhhhh} % 10 + \or + \newcolumntype{f}{ddddd ddddd dhh} % 11 + \or + \newcolumntype{f}{ddddd ddddd dd} % 12 + \fi +%%%%%%%%%%%%%%%%%% +\or %25 +\ifcase\firsthowmanyDs + \newcolumntype{f}{hhhhh hhhhh hhhhh hhhhh hhhhh} % 0 + \or + \newcolumntype{f}{dhhhhhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{f}{ddhhhhhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{f}{dddhhhhhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{f}{ddddhhhhhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{f}{dddddhhhhhhhhhhhhhhh} % 5 + \or + \newcolumntype{f}{ddddddhhhhhhhhhhhhh} % 6 + \or + \newcolumntype{f}{dddddddhhhhhhhhhhh} % 7 + \or + \newcolumntype{f}{ddddddddhhhhhhhhh} % 8 + \or + \newcolumntype{f}{ddd ddd ddd hhhhhhh} % 9 + \or + \newcolumntype{f}{ddddddddddhhhhh} % 10 + \or + \newcolumntype{f}{dddddddddddhhh} % 11 + \or + \newcolumntype{f}{ddddddddddddh} % 12 + \fi +%%%%%%%%%%%%%%%%%% +\else +\typeout{^^J----------------------------------------------------- ^^J +Warning!^^J^^J +Too many Columns using in Splittabular. +^^J +25 column maximum in +each part of the table.^^J Each`T' counts as two columns. +^^J-----------------------------------------------------^^J} +\fi +} + + +%% Second dummy columns is the part of the table that will not print, +%% in this case the part to the right. +%%\makeseconddummycolumns + +\gdef\makeseconddummycolumns{% +\ifcase\secondcolcount +%0 +\or +%1 +\newcolumntype{F}{h} % no D possible +%%%%%%%%%%%%%%%%%% +\or +%2 + \ifcase\secondhowmanyDs + \newcolumntype{F}{hh}%% 0 + \or + \newcolumntype{F}{d} %% 1 + \fi +%%%%%%%%%%%%%%%%%% +\or +%3 + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhh} % 0 + \or + \newcolumntype{F}{dh} % 1 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhh} % 0 + \or + \newcolumntype{F}{dhh} % 1 + \or + \newcolumntype{F}{dd} % 2 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhh} % 0 + \or + \newcolumntype{F}{dhhh} % 1 + \or + \newcolumntype{F}{ddh} % 2 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhh} % 0 + \or + \newcolumntype{F}{dhhhh} % 1 + \or + \newcolumntype{F}{ddhh} % 2 + \or + \newcolumntype{F}{ddd} % 3 + \fi +%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhh} % 1 + \or + \newcolumntype{F}{ddhhh} % 2 + \or + \newcolumntype{F}{dddh} % 3 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhh} % 2 + \or + \newcolumntype{F}{dddhh} % 3 + \or + \newcolumntype{F}{dddd} % 4 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhh} % 2 + \or + \newcolumntype{F}{dddhhh} % 3 + \or + \newcolumntype{F}{ddddh} % 4 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhh} % 3 + \or + \newcolumntype{F}{ddddhh} % 4 + \or + \newcolumntype{F}{ddddd} % 5 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhh} % 4 + \or + \newcolumntype{F}{dddddh} % 5 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhh} % 4 + \or + \newcolumntype{F}{dddddhh} % 5 + \or + \newcolumntype{F}{dddddd} % 6 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhh} % 5 + \or + \newcolumntype{F}{ddddddh} % 6 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhh} % 5 + \or + \newcolumntype{F}{ddddddhh} % 6 + \or + \newcolumntype{F}{ddddddd} % 7 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhh} % 6 + \or + \newcolumntype{F}{dddddddh} % 7 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhh} % 6 + \or + \newcolumntype{F}{dddddddhh} % 7 + \or + \newcolumntype{F}{dddddddd} % 8 +\fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhhh} % 6 + \or + \newcolumntype{F}{dddddddhhh} % 7 + \or + \newcolumntype{F}{ddddddddh} % 8 +\fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhhhh} % 6 + \or + \newcolumntype{F}{dddddddhhhh} % 7 + \or + \newcolumntype{F}{ddddddddhh} % 8 + \or + \newcolumntype{F}{ddddddddd} % 9 +\fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhhhhhhhhhhhhhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhhhhh} % 6 + \or + \newcolumntype{F}{dddddddhhhhh} % 7 + \or + \newcolumntype{F}{ddddddddhhh} % 8 + \or + \newcolumntype{F}{dddddddddh} % 9 +\fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhh hhhhh hhhhh hhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhhhhhh} % 6 + \or + \newcolumntype{F}{dddddddhhhhhh} % 7 + \or + \newcolumntype{F}{ddddddddhhhh} % 8 + \or + \newcolumntype{F}{dddddddddhh} % 9 + \or + \newcolumntype{F}{dddddddddd} % 10 + \fi +%%%%%%%%%%%%%%%%%% +\or + \ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhh hhhhh hhhhh hhhhh h} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhhhhhhh} % 6 + \or + \newcolumntype{F}{dddddddhhhhhhh} % 7 + \or + \newcolumntype{F}{ddddddddhhhhh} % 8 + \or + \newcolumntype{F}{ddd ddd ddd hhh} % 9 + \or + \newcolumntype{F}{ddd ddd ddd d h} % 10 + \fi +%%%%%%%%%%%%%%%%%% +\or +\ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhh hhhhh hhhhh hhhhh hh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhhhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhhhhhhhh} % 6 + \or + \newcolumntype{F}{dddddddhhhhhhhh} % 7 + \or + \newcolumntype{F}{ddddddddhhhhhh} % 8 + \or + \newcolumntype{F}{ddd ddd ddd hhhh} % 9 + \or + \newcolumntype{F}{ddddddddddhh} % 10 + \or + \newcolumntype{F}{ddddddddddd} % 11 + \fi +%%%%%%%%%%%%%%%%%% +\or +\ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhh hhhhh hhhhh hhhhh hhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhhhhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhhhhhhhhh} % 6 + \or + \newcolumntype{F}{dddddddhhhhhhhhh} % 7 + \or + \newcolumntype{F}{ddddddddhhhhhhh} % 8 + \or + \newcolumntype{F}{ddd ddd ddd hhhhh} % 9 + \or + \newcolumntype{F}{ddddddddddhhh} % 10 + \or + \newcolumntype{F}{ddddd ddddd dh} % 11 + \fi +%%%%%%%%%%%%%%%%%% +\or +\ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhh hhhhh hhhhh hhhhh hhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhhhhhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhhhhhhhhhh} % 6 + \or + \newcolumntype{F}{dddddddhhhhhhhhhh} % 7 + \or + \newcolumntype{F}{ddddddddhhhhhhhh} % 8 + \or + \newcolumntype{F}{ddd ddd ddd hhhhhh} % 9 + \or + \newcolumntype{F}{ddddddddddhhhh} % 10 + \or + \newcolumntype{F}{ddddd ddddd dhh} % 11 + \or + \newcolumntype{F}{ddddd ddddd dd} % 12 + \fi +%%%%%%%%%%%%%%%%%% +\or +\ifcase\secondhowmanyDs + \newcolumntype{F}{hhhhh hhhhh hhhhh hhhhh hhhhh} % 0 + \or + \newcolumntype{F}{dhhhhhhhhhhhhhhhhhhhhhhh} % 1 + \or + \newcolumntype{F}{ddhhhhhhhhhhhhhhhhhhhhh} % 2 + \or + \newcolumntype{F}{dddhhhhhhhhhhhhhhhhhhh} % 3 + \or + \newcolumntype{F}{ddddhhhhhhhhhhhhhhhhh} % 4 + \or + \newcolumntype{F}{dddddhhhhhhhhhhhhhhh} % 5 + \or + \newcolumntype{F}{ddddddhhhhhhhhhhhhh} % 6 + \or + \newcolumntype{F}{dddddddhhhhhhhhhhh} % 7 + \or + \newcolumntype{F}{ddddddddhhhhhhhhh} % 8 + \or + \newcolumntype{F}{ddd ddd ddd hhhhhhh} % 9 + \or + \newcolumntype{F}{ddddddddddhhhhh} % 10 + \or + \newcolumntype{F}{ddddd ddddd dhhh} % 11 + \or + \newcolumntype{F}{ddddd ddddd ddh} % 12 + \fi +%%%%%%%%%%%%%%%%%% +\else +\typeout{^^J----------------------------------------------------- ^^J +Warning!^^J^^J +Too many Columns using in Splittabular. +^^J +25 column maximum in +each part of the table.^^J Each`D' counts as two columns. +^^J-----------------------------------------------------^^J} +\fi +} + +%% we don't have to worry about D's in this section, fortunately. +\gdef\makethirddummycolumns{ +\ifcase\thirdcolcount +\or\newcolumntype{E}{h} +\or\newcolumntype{E}{hh} +\or\newcolumntype{E}{hhh} +\or\newcolumntype{E}{hhhh} +\or\newcolumntype{E}{hhhhh} +\or\newcolumntype{E}{hhhhhh} +\or\newcolumntype{E}{hhhhhhh} +\or\newcolumntype{E}{hhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhhhhhhhhhh} +\or\newcolumntype{E}{hhhhhhhhhhhhhhhhhhhhhhhhh} %% up to 25 columns +\else \typeout{^^J-----------------------------------------------------^^J +Warning! +^^J^^J Too many Columns in Splittabular. +^^J +25 column maximum in +each part of the table.^^J +Each `D' counts as two columns. +^^J-----------------------------------------------------^^J}\fi +} + +%%%%%%%%%%%%%%%%% +%% Colnums + +%% defaults + +\gdef\settabnumdefaults{% +\loopnum=0\relax\loop% +\ifnum\loopnum<31\relax% +\expandafter\gdef\csname tab\the\loopnum\endcsname{% +\multicolumn1{c}{\global\advance\colnumsused by 1\relax% +(\the\colnumsused)}}% +\global\advance\loopnum by1\repeat} + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% this version of countcols is for \colnumbers +\newcount\totalcolumncount +\def\xH{h} + +\makeatother +\def\tabcountcols#1{\ifcat#1c +\global\advance\colcount by 1\relax\fi% +%% +\def\lookforD{#1}% +\ifx\lookforD\xD% +\expandafter\gdef\csname tab\the\colcount\endcsname{% +\multicolumn2{c}{\global\advance\colnumsused by 1\relax% +(\the\colnumsused)}}% +\fi% +\ifx\lookforD\xH% +\expandafter\gdef\csname tab\the\colcount\endcsname{% +\multicolumn1{h}{}}% +\fi% +%% +\futurelet\next\tablookatnext} + +\def\tabxeatone#1{\tabcountcols} + +%% second conditional deals with expressions like @{} in +%% the preamble. +\def\tablookatnext{\if\next\xrelax\let\xgo\relax\else% +\ifx\next\bgroup\let\xgo\tabxeatone\else\let\xgo\tabcountcols\fi\fi\xgo} +\makeatletter +%%%%%%%%%%%%%%% + +\newcount\totalcolumns +\newbox\firsttablebox +\newbox\secondtablebox +\newbox\thirdtablebox +\newif\ifdbreaktab + +%% A loop would be more elegant, of course, but using & in a loop +%% within a table column produces errors. +%% was\tabnumberline, now \colnumbers + +%% Is this test necessary? +%\newif\ifcolumnums + +\newif\ifcolnumberson +\def\deluxecolnumbers{\global\colnumbersontrue} + +\def\colnumbers{\omit\\\omit\xcolnumbers} +\def\xcolnumbers{\global\let\colnumbers\xcolnumbers% +\global\colnumbersontrue\let&\CheckNumberAndSwitch% +\global\colcount=0\relax% +\global\totalcolumncount=0\relax% +%% above here +\settabnumdefaults% +%% Now, change the columns that have `D' to be \multicolumn2c, by redefining +%% the \csname tab\endcsname +%% +\expandafter\tabcountcols\tabfullpreamble% +\global\totalcolumncount=\the\colcount\relax% +\global\colcount=0\relax% +\ifbreaktab\else\ifdbreaktab\else\global\colnumsused=0\relax\fi\fi% +%% +% +\ifdeluxe\ifbreaktab\\\else\\[-6pt]\fi%\hline% not above +\else% +\\[-14pt]\fi% +\ifcase\totalcolumncount% +\or% +\csname tab1\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&%% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname% +\or +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname% +\or%22 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname% +\or% 24 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname% +\or% 25 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname% +\or% 27 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname% +\or% 28 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname&\csname tab28\endcsname% +\or% 29 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname&\csname tab28\endcsname&% +\csname tab29\endcsname% +\or% 30 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname&\csname tab28\endcsname&% +\csname tab29\endcsname&\csname tab30\endcsname% +\else% +\typeout{^^J^^J +Sorry, more than 30 columns cannot be numbered with^^J +\string\colnumbers. Please number the columns manually.^^J +Thank you!^^J}\fi% +%\ifbreaktab +\\\hline% below, hline is wanted +%\else +\noalign{\vskip-8pt} +%\vrule height 28pt width0pt %the \vrule is in the line below colnumbers; + % it causes all the vrules on that line to grow to 28pt. + % The -14pt will cause the lower line to overlap the upper line. + % Complication, needed to add this vrule to Z and z in order to + % have it also work for split tabular. +%\fi +} + + + +\let\savecolnumbers\colnumbers + +\gdef\plaincolnumbers{% +\omit\\\omit% +\global\colnumbersontrue\let&\CheckNumberAndSwitch% +\global\colcount=0\relax% +\global\totalcolumncount=0\relax% +%% above here +\settabnumdefaults% +%% Now, change the columns that have `D' to be \multicolumn2c, by redefining +%% the \csname tab\endcsname +%% +\expandafter\tabcountcols\tabfullpreamble% +\global\totalcolumncount=\the\colcount\relax% +\global\colcount=0\relax% +\ifbreaktab\else\ifdbreaktab\else\global\colnumsused=0\relax\fi\fi% +%% +\\\ifcase\totalcolumncount% +\or% +\csname tab1\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&%% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname% +\or +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname% +\or%22 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname% +\or% 24 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname% +\or% 25 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname% +\or% 27 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname% +\or% 28 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname&\csname tab28\endcsname% +\or% 29 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname&\csname tab28\endcsname&% +\csname tab29\endcsname% +\or% 30 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname&\csname tab28\endcsname&% +\csname tab29\endcsname&\csname tab30\endcsname% +\else% +\typeout{^^J^^J +Sorry, more than 30 columns cannot be numbered with^^J +\string\colnumbers. Please number the columns manually.^^J +Thank you!^^J}\fi% +\\\hline% below, hline is wanted +\\\noalign{\vskip-30pt }%%%%% +%\vrule height 28pt width0pt %the \vrule is in the line below colnumbers; + % it causes all the vrules on that line to grow to 28pt. + % The -14pt will cause the lower line to overlap the upper line. + % Complication, needed to add this vrule to Z and z in order to + % have it also work for split tabular. +} + +\let\saveplaincolnumbers\plaincolnumbers + + +\def\splitplaincolnumbers{% +\omit\\\omit% +\xplain} + +\let\savesplitplaincolnumbers\splitplaincolnumbers + +\newif\iffirsttime +\firsttimetrue +\gdef\xplain{% +\global\let\plaincolnumbers\xplain% +\global\colnumbersontrue\let&\CheckNumberAndSwitch% +\global\colcount=0\relax% +\global\totalcolumncount=0\relax% +%% above here +\settabnumdefaults% +%% Now, change the columns that have `D' to be \multicolumn2c, by redefining +%% the \csname tab\endcsname +%% +\expandafter\tabcountcols\tabfullpreamble% +\global\totalcolumncount=\the\colcount\relax% +\global\colcount=0\relax% +\ifbreaktab\else\ifdbreaktab\else\global\colnumsused=0\relax\fi\fi% +%% +\iffirsttime +\\%\hline% above not wanted +\else +\\[-12pt]%\hline% above not wanted +\fi +\ifcase\totalcolumncount% +\or% +\csname tab1\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&%% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname% +\or +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname% +\or%22 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname% +\or% 24 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname% +\or% 25 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname% +\or% +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname% +\or% 27 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname% +\or% 28 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname&\csname tab28\endcsname% +\or% 29 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname&\csname tab28\endcsname&% +\csname tab29\endcsname% +\or% 30 +\csname tab1\endcsname&\csname tab2\endcsname&% +\csname tab3\endcsname&\csname tab4\endcsname&% +\csname tab5\endcsname&\csname tab6\endcsname&% +\csname tab7\endcsname&\csname tab8\endcsname&% +\csname tab9\endcsname&\csname tab10\endcsname&% +\csname tab11\endcsname&\csname tab12\endcsname&% +\csname tab13\endcsname&\csname tab14\endcsname&% +\csname tab15\endcsname&\csname tab16\endcsname&% +\csname tab17\endcsname&\csname tab18\endcsname&% +\csname tab19\endcsname&\csname tab20\endcsname&% +\csname tab21\endcsname&\csname tab22\endcsname&% +\csname tab23\endcsname&\csname tab24\endcsname&% +\csname tab25\endcsname&\csname tab26\endcsname&% +\csname tab27\endcsname&\csname tab28\endcsname&% +\csname tab29\endcsname&\csname tab30\endcsname% +\else% +\typeout{^^J^^J +Sorry, more than 30 columns cannot be numbered with^^J +\string\colnumbers. Please number the columns manually.^^J +Thank you!^^J}\fi% +\\\hline% below, hline is wanted +\iffirsttime +\\\noalign{\vskip-30pt}%% +%\noalign{\vskip-8pt} +\vrule height 28pt width0pt %the \vrule is in the line below colnumbers; + % it causes all the vrules on that line to grow to 28pt. + % The -14pt will cause the lower line to overlap the upper line. + % Complication, needed to add this vrule to Z and z in order to + % have it also work for split tabular. +\fi\global\firsttimefalse +} + +\def\decimalcolnumbers{\crcr\saveplaincolnumbers\\% +\noalign{\global\savetabskip\tabskip +\tabskip=0pt +\global\let\extracolsep\relax +\global\let\ddoit\saveddoit +\global\let\zdoit\savezdoit +\vskip-32pt +}{\vrule height28pt depth0pt width0pt}\relax} + +\def\splitdecimalcolnumbers{\\[-15pt]% +\savesplitplaincolnumbers +\global\colnumbersonfalse +\\\noalign{\vskip-32pt %!!! +\global\savetabskip\tabskip +\tabskip=0pt +\global\let\extracolsep\relax +\global\let\ddoit\saveddoit +\global\let\zdoit\savezdoit +}\vrule height 28pt width0pt %!!! +\global\let\splitdecimalcolnumbers\secondsplitdecimalcolnumbers} + +\def\secondsplitdecimalcolnumbers{\omit\\ +\plaincolnumbers +\global\colnumbersonfalse +\\\noalign{\vskip-26pt %!!! was -28pt +\global\savetabskip\tabskip +\tabskip=0pt +\global\let\extracolsep\relax +\global\let\ddoit\saveddoit +\global\let\zdoit\savezdoit +}\\\relax} + +\let\savesplitdecimalcolnumbers\splitdecimalcolnumbers + +%%AAA +\newif\ifdeluxestar +\expandafter\def\csname deluxetable*\endcsname{\deluxestartrue\bgroup\floattrue \hsize=\textwidth +\deluxetable} + +\expandafter\def\csname enddeluxetable*\endcsname{\enddeluxetable +\egroup +\ifstartlongtable\null\fi% added june 2020 +\global\colnumbersonfalse +\global\deluxedecimalsfalse +\global\deluxestarfalse +} + +\def\deluxedecimalcolnumbers{\deluxedecimalstrue\colnumbersontrue} +\def\deluxetablecaption#1{\gdef\@tablecaption{#1}} + +\newif\ifstartlongtable +\def\startlongtable{\vskip1sp\global\startlongtabletrue} + +\newif\iffloat +\def\floattable{\global\deluxestartrue\global\floattrue} + +%% for equivalent but in \begin...\end form. +\def\floatrotatetable{\global\deluxestartrue\global\floattrue} +\let\endfloatrotatetable\relax + +\newcount\deluxetablecnt +\newdimen\toprulebelowsep +\manuscriptsty@sw{ +\toprulebelowsep 30pt + }{ +\toprulebelowsep 18pt +} + +\def\deluxetable{\global\deluxetrue +\catcode`\&=\active +\catcode`\$=\active +%% Mar 30, 2019, to make label outside of \caption work correctly +{\advance\c@table by 1 +\global\advance\deluxetablecnt by 1 +\xdef\@currentlabel{\thetable}} +\let\tablecaption\deluxetablecaption +\deluxetablecaption{} +\ifstartlongtable +%% this works for both deluxetable and deluxetable*: +%% nov 2017: +\def\arraystretch{1.1} +%% March 2019 +\if@two@col\global\returntotwocoltrue\vskip1pt +\ifdeluxestar\onecolumngrid\fi\fi +%% +\ifdeluxestar +\vskip12pt +\fi +\let\go\longdeluxetable +\else +\let\go\ydeluxetable +\fi\go +} + +\def\ydeluxetable#1{% +\@ifnextchar[{\xdeluxetable{#1}}{\zdeluxetable{#1}}} + +%% +% x and z are the same, except that xdeluxetable allows optional square bracket arg, like [h]. +\def\xdeluxetable#1[#2]{\global\breaktabtrue +%% not here +\let\colnumbers\deluxecolnumbers +\global\deluxedecimalsfalse +\let\decimals\deluxedecimals +\let\decimalcolnumbers\deluxedecimalcolnumbers +\let\tablehead\ztablehead +\gdef\tabfullpreamble{#1}%<<== needed +\def\endtabular{\endarray +\global\let\zdoit\relax +\global\let\tdoit\relax +\global\Dfalse} +\global\colnumsused=0 +\global\breaktabtrue +\global\colcount=0 +%% +%%%%%%%%%%%% +\lineskiplimit=\z@ % restore default setting +\ifmodern% +\@ifundefined{total@deluxe@table@width@\romannumeral\the\deluxetablecnt}{\global\deluxesidewaystablefalse}{% + \expandafter\ifdim\csname total@deluxe@table@width@\romannumeral\the\deluxetablecnt\endcsname>465\p@% + \ifdeluxestar\else\global\deluxestarfalse\fi% + \ifcenterwidetable\global\centerwidetablefalse\else\global\deluxesidewaystabletrue\fi% + \else% + \global\deluxestartrue\global\deluxesidewaystablefalse% + \fi% + }% +\else% + \@ifundefined{total@deluxe@table@width@\romannumeral\the\deluxetablecnt}{\global\deluxesidewaystablefalse}{% + \expandafter\ifdim\csname total@deluxe@table@width@\romannumeral\the\deluxetablecnt\endcsname>255\p@% + \expandafter\ifdim\csname total@deluxe@table@width@\romannumeral\the\deluxetablecnt\endcsname>516\p@% + \ifdeluxestar\global\deluxestartrue\else\global\deluxestarfalse\fi% + \ifcenterwidetable\global\centerwidetablefalse\else\global\deluxesidewaystabletrue\fi% + \else% + \global\deluxestartrue\global\deluxesidewaystablefalse% + \fi% + \else% + \global\deluxestarfalse% + \fi% + }% +\fi% +% +\ifdeluxestar +\gdef\two{#2}\gdef\checkh{h} +\ifx\two\checkh\onecolumngrid\fi + \ifdeluxesidewaystable + \begin{sidewaystable*}\hsize=\textwidth + \else + \begin{table*}[#2]\hsize=\textwidth + \fi +\else + \begin{table}[#2] +\fi +\noindent\setbox\aassplitbox=\vtop\bgroup% +\currtabletypesize + \vspace*{\abovedeluxetableskip} +%% + +\def\startdata##1\enddata{% +\currtabletypesize +\setbox0=\hbox{ +\begin{tabular}{#1} +\pt@head +##1\end{tabular}} +\expandafter\ifx\csname @tablecaption\endcsname\empty\else +%% + \ifdigitasset + \noindent{\hbox% + to\hsize{\hss\vtop{\hsize=\wd0 + \caption{\@tablecaption}}\hss}} + \else + \noindent\hbox to\hsize{\hss\vtop{\hsize=\wd0 + \caption{\@tablecaption}}\hss} + \fi% +\vskip3pt\fi +%% not here +\global\setbox3\hbox{% +\begin{tabular}{#1}% + \hline\hline\noalign{\advance\toprulebelowsep-\f@size pt \vskip-\toprulebelowsep + }% +\pt@head% +##1\crcr% added october 2017 +\omit\\\omit\\\hline\end{tabular}} + +%\noindent\hskip-1.25em %% kludge! but seems necessary +\hbox to\hsize{\hss\copy3\hss} +\global\setbox4\vtop\bgroup\ifdeluxestar\hsize=\textwidth\else\hsize=\wd0\fi\leftskip6pt\parindent-6pt +}} + +\usepackage[figuresright]{rotating} +\setlength\rotFPtop{0\p@ \@plus 1fil} + +\newcount\zdeluxetablecnt +\newif\ifdeluxesidewaystable + +\def\zdeluxetable#1{\global\breaktabtrue +\let\colnumbers\deluxecolnumbers +\global\deluxedecimalsfalse +\let\decimals\deluxedecimals +\let\decimalcolnumbers\deluxedecimalcolnumbers +\let\tablehead\ztablehead +\gdef\tabfullpreamble{#1}%<<== needed +\def\endtabular{\endarray +\global\let\zdoit\relax +\global\let\tdoit\relax +\global\Dfalse} +\global\breaktabtrue +\global\colnumsused=0 +\global\colcount=0 +%% +\global\advance\zdeluxetablecnt\@ne% +%%%%%%%%%%%% + \lineskiplimit=\z@ % restore default setting +% +\ifmodern% +\@ifundefined{total@deluxe@table@width@\romannumeral\the\deluxetablecnt}{\global\deluxesidewaystablefalse}{% + \expandafter\ifdim\csname total@deluxe@table@width@\romannumeral\the\deluxetablecnt\endcsname>465\p@% + \ifdeluxestar\else\global\deluxestarfalse\fi% + \ifcenterwidetable\global\centerwidetablefalse\else\global\deluxesidewaystabletrue\fi% + \else% + \global\deluxestartrue\global\deluxesidewaystablefalse% + \fi% + }% +\else% + \@ifundefined{total@deluxe@table@width@\romannumeral\the\deluxetablecnt}{\global\deluxesidewaystablefalse}{% + \expandafter\ifdim\csname total@deluxe@table@width@\romannumeral\the\deluxetablecnt\endcsname>255\p@% + \expandafter\ifdim\csname total@deluxe@table@width@\romannumeral\the\deluxetablecnt\endcsname>516\p@% + \ifdeluxestar\global\deluxestartrue\else\global\deluxestarfalse\fi% + \ifcenterwidetable\global\centerwidetablefalse\else\global\deluxesidewaystabletrue\fi% + \else% + \global\deluxestartrue\global\deluxesidewaystablefalse% + \fi% + \else% + \global\deluxestarfalse% + \fi% + }% +\fi% +% +\ifdeluxestar + \ifdeluxesidewaystable + \begin{sidewaystable*}\hsize=\textwidth + \else + \begin{table*}\hsize=\textwidth + \fi +\else + \ifdeluxesidewaystable + \begin{sidewaystable}\hsize=\textwidth + \else + \begin{table} + \fi +\fi +\noindent\setbox\aassplitbox=\vtop\bgroup% +\currtabletypesize + \vspace*{\abovedeluxetableskip} +%% +\def\startdata##1\enddata{% +\currtabletypesize +\setbox0=\hbox{\colnumbersonfalse +\begin{tabular}{#1} +\pt@head %% +##1\end{tabular}}% not here +\expandafter\ifx\csname @tablecaption\endcsname\empty\else + \ifdigitasset + \noindent{\hbox% +to\hsize{\hss\vtop{\hsize=\wd0 +\caption{\@tablecaption}}\hss}} +\vskip-\baselineskip +\else + \noindent\hbox to\hsize{\hss\vtop{\hsize=\wd0 + \caption{\@tablecaption}}\hss} +\fi% +\vskip3pt\fi +\global\setbox3\hbox{% +\begin{tabular}{#1}% +\hline\hline\noalign{\advance\toprulebelowsep-\f@size pt \vskip-\toprulebelowsep}% +\pt@head% +##1\crcr%% added October 2017 +\omit\\\omit\\\hline\end{tabular}}%%<<== original +\vskip-\parskip +\noindent\hbox to\hsize{\hss\copy3\hss} +\global\setbox4\vtop\bgroup\hsize=\wd0\relax +\leftskip6pt\parindent-6pt +% +\immediate\write\@mainaux{\string\gdef\string\total@deluxe@table@width@\romannumeral\deluxetablecnt{\the\wd3}} +% +}} + +%%% +\newbox\longtablebox +\def\longdeluxetable#1{ +\global\rotateonfalse +\let\colnumbers\deluxecolnumbers +\global\deluxedecimalsfalse +\let\decimals\deluxedecimals +\let\decimalcolnumbers\deluxedecimalcolnumbers +\let\tablehead\ztablehead +\gdef\tabfullpreamble{#1}%<<== needed +\def\endtabular{\endarray +\global\let\zdoit\relax +\global\let\tdoit\relax +\global\Dfalse} +\global\colnumsused=0 +\global\colcount=0 +%% +%%%%%%%%%%%% + \lineskiplimit=\z@ % restore default setting +\let\enddeluxetable\endlongdeluxetable + \vspace*{\abovedeluxetableskip} +%% +\def\startdata##1\enddata{% +\global\setbox\longtablebox=\hbox{\currtabletypesize +\tabcolsep=3pt +\begin{tabular}{#1} +\pt@head +##1\end{tabular}} +%%% +\bgroup\centering +\def\table@hook{\currtabletypesize} + \LTcapwidth=\wd\longtablebox +%% march 2019, added [c] and these terms: +\ifcenterwidetable\global\centerwidetablefalse + \def\LT@LR@c{\LTleft=0pt minus1fill + \let\LTright\LTleft}% +\else +%% default, will center table that is narrower than text width + \def\LT@LR@c{\LTleft=0pt plus1fill + \LTright\LTleft}% +\fi +%% +% +\begin{longtable}[c]{#1}%% +\ifdim\movetableright>0pt + \noalign{\ifdim\movetableright>0pt + \global\LTleft=\movetableright + \fi} +% + \noalign{\hbox to \wd\longtablebox{ + \vtop{\hsize=.8\wd\longtablebox + \advance\baselineskip4pt + \raggedright + {\bf \fnum@table}.\vrule depth 6pt width0pt\ + \@tablecaption}\hss}\vskip-3pt }\\ + \hline + \hline\noalign{\advance\toprulebelowsep-\f@size pt \vskip-\toprulebelowsep}% + \pt@head% +\else +\caption{\hsize=\wd\longtablebox +\advance\baselineskip2pt +\@tablecaption}\\ % +\hline\hline\noalign{\advance\toprulebelowsep-\f@size pt \vskip-\toprulebelowsep}% +\pt@head% +\fi +\endfirsthead + +\noalign{\centerline{\small +\hskip\movetableright{\bf \fnum@table}\ \it(continued)}\vskip6pt} +\hline\hline +\noalign{\advance\toprulebelowsep-\f@size pt \vskip-\toprulebelowsep} +\pt@head% +\endhead + +\hline +\multicolumn{\totalcolumns}{c}{\vrule height 24pt width0pt\small\it +\fnum@table\ +continued \if@two@col\else on next page\fi}\\ +\endfoot + +\hline%\nobreak +\endlastfoot +##1 +\end{longtable} +\vglue-\LTpost +\vskip-6pt +\egroup +\global\setbox4=\vtop\bgroup +\ifdim\wd\longtablebox>\textwidth +\hsize=\textwidth +\else +\hsize=\wd\longtablebox\fi +\leftskip=6pt +\parindent=-6pt +\currtabletypesize +\global\startlongtablefalse +\global\movetableright=0pt +}% end data, endlongtable +} + +\def\endlongdeluxetable{ +%% +\vrule depth 6pt width 0pt +\vskip1sp +\egroup +\ifdim\dp4>6pt +\vglue-6pt +\vbox{\hbox to \columnwidth{\hfill +\vtop{\hsize\wd\longtablebox +\leftskip=6pt\parindent-6pt +\copy4 +}\hfill}%% +} +\fi +\vglue\ht4 +\global\colnumbersonfalse +\global\deluxedecimalsfalse +\global\rotateonfalse +%% +\relax\null%% \null is an empty hbox. +%% This keeps final page(s) of startlongtable/deluxetable +%% from begin thrown away when at end of article. +% \global\advance\c@table-1\relax +%% +% +%% march 2019 +\ifdeluxestar%Feb 2024 +\ifreturntotwocol\global\returntotwocolfalse\twocolumngrid\fi\fi +%% May 2020 +\ifappendixon +\if@two@col@app +\twocolumngrid +\else +\onecolumngrid\fi\fi +\null +}%% + + +%% bbb +%% \end{deluxetable}: +\def\enddeluxetable{% +\egroup%end box 4 +\ifdim\dp4>6pt +\hbox to\hsize{\hss\copy4\hss} +\fi +\egroup% end splitbox +\centering +\ifrotateon\global\rotateonfalse +\rotatebox{90}{\hbox to\textheight{\hfill\vbox{ +\unvbox\aassplitbox +\vspace*{\belowdeluxetableskip}}\hfill}} +\else +\centering\unvbox\aassplitbox +\vspace*{\belowdeluxetableskip} +\vspace*{24pt} +\fi +\ifdeluxestar + \ifdeluxesidewaystable + \end{sidewaystable*} + \else + \end{table*} + \fi + \global\deluxestarfalse + \if@two@col\twocolumngrid\hsize=\columnwidth\fi%% check this!! +\else + \ifdeluxesidewaystable + \end{sidewaystable} + \else + \end{table} + \fi +\fi +%\null +% added june 2020 +\gdef\colnumbers{\saveplaincolnumbers} +\global\breaktabfalse +\global\deluxefalse +\global\colnumbersonfalse +\global\deluxedecimalsfalse +\global\rotateonfalse +\startlongtablefalse +\global\movetableright=0pt +%\global\floatfalse +%\global\advance\c@table by -1\relax +%% check this!! +} + + +\newbox\aassplitbox +\newif\ifdeluxe +\def\splitdeluxetable{ +%% Mar 30, 2019, to make label outside of \caption work correctly +{\advance\c@table by 1 +\xdef\@currentlabel{\thetable}} +\global\deluxetrue\catcode`\&=\active +\catcode`\$=\active +\xsplitdeluxetable} + +\def\xsplitdeluxetable#1{ +\global\breaktabtrue +\let\colnumbers\deluxecolnumbers +\let\decimals\deluxedecimals +\global\deluxedecimalsfalse +\let\decimalcolnumbers\deluxedecimalcolnumbers +\let\tablehead\xtablehead +\gdef\tabfullpreamble{#1} +\def\endtabular{\endarray +\global\let\zdoit\relax +\global\let\tdoit\relax +\global\Dfalse} +%%% modification of emulateapj \deluxetable %%%% +\setbox0=\hbox{\def\firstarg{#1}\expandafter\lookforD\firstarg} +\gdef\temppreamble{#1\relax} +\PartsOfTable=0 +\def\tempfullpreamble{#1BB} +\setbox0=\hbox{\expandafter\checkforB\tempfullpreamble} +%% Now PartsOfTable is either =2 or 3 +%% +\gdef\one{#1Z} +\global\colnumsused=0 +\global\breaktabtrue +\global\colcount=0 +%% +\ifnum\PartsOfTable=3 +\let\multicolumn\threebreakmulticolumn +\else +\let\multicolumn\breakmulticolumn +\fi +%%%%%%%%%%%% + \lineskiplimit=\z@ % restore default setting + \gdef\tblnote@list{} + \gdef\tblref@list{} + \ifsplitstar + \begin{table*} + \else + \begin{table} + \fi +\noindent\setbox\aassplitbox=\vtop\bgroup% +\currtabletypesize + \vspace*{\abovedeluxetableskip} +\let\startdata\xstartdata} +%% \end{splitdeluxetable}: + +\newdimen\movetabledown + +\def\endsplitdeluxetable{\vskip1sp\egroup%% end box with tablenotes +\hbox to \hsize{\hss\copy4\hss} +\egroup +\vskip1pt +\ifrotateon\global\rotateonfalse +\vskip\movetabledown\rotatebox{90}{\vbox{\noindent\unvbox\aassplitbox % +\vspace*{\belowdeluxetableskip} +}}\global\movetabledown=0pt\else +\noindent\unvbox\aassplitbox +\vspace*{\belowdeluxetableskip} +\fi +\ifsplitstar + \end{table*} +\else + \end{table} +\fi +\gdef\colnumbers{\saveplaincolnumbers} +\tabletypesize{\small} +\global\breaktabfalse +\global\deluxefalse +\global\splitstarfalse +\global\colnumbersonfalse +\global\deluxedecimalsfalse +} + + +\newif\ifsplitstar +\expandafter\def\csname splitdeluxetable*\endcsname{\global\splitstartrue\splitdeluxetable} +\expandafter\def\csname endsplitdeluxetable*\endcsname{\endsplitdeluxetable\global\splitstarfalse +\global\colnumbersonfalse +\global\deluxedecimalsfalse +} + +\newdimen\maxtablewidth + +\gdef\NoTableCaption{\global\@table@not@headedtrue} + +%% For splitdeluxetable + +%%% ====================================================== %%% +\gdef\dbreaktabular{\catcode`\&=\active +\let&\CheckNumberAndSwitch\xdbreaktabular} + +\long\gdef\xdbreaktabular#1{%% #1=contents of table +{\global\maxtablewidth=0pt +\let&\CheckNumberAndSwitch +\let$\savedollar +\global\colnumsused=0 +%%$ +\global\dbreaktabtrue +\global\colcount=0 +%% +\ifnum\PartsOfTable=3 +\let\multicolumn\threebreakmulticolumn +\else +\let\multicolumn\breakmulticolumn +\fi +%% +\ifnum\PartsOfTable=3 +\expandafter\catchfirstpreamble\one +\expandafter\catchsecondofthreepreamble\one +\expandafter\catchthirdpreamble\one +\makefirstdummycolumns +\makeseconddummycolumns +\makethirddummycolumns +\else %% PartsOfTable=2 +\ifnum\PartsOfTable=2 +\expandafter\catchfirstpreamble\one +\expandafter\catchsecondpreamble\one +\makefirstdummycolumns +\makeseconddummycolumns +\fi\fi +%%% +\global\columncount=0 +\ifnum\PartsOfTable=3 +%% For table divided into three parts +\firstboxtrue\secondboxfalse\thirdboxfalse +\setbox\firsttablebox=\hbox{% +\begin{tabular}{AFE} +\ifx\csname pt@head\endcsname\relax\else +\pt@head\fi#1\crcr\end{tabular}} +\global\maxtablewidth=\wd\firsttablebox + +\noindent\hbox to \hsize{\hss\unhbox\firsttablebox\hss} +\vskip6pt +\hrule +\vskip6pt +\global\columncount=0 +\firstboxfalse\secondboxtrue\thirdboxfalse +\ifcolnumberson% +\setbox\secondtablebox=\hbox{% +\let\savecolnumbers\xcolnumbers% +\notfirsttrue% +\begin{tabular}{fZE} %fZE !!! +\ifx\csname pt@head\endcsname\relax\else% +\pt@head\fi#1\crcr\end{tabular}} +\else +%% +\setbox\secondtablebox=\hbox{% +\begin{tabular}{fZE}% +\ifx\csname pt@head\endcsname\relax\else% +\pt@head\fi\\ [-14pt]% +#1\crcr% +\end{tabular}} +\fi +\ifdim\wd\secondtablebox>\maxtablewidth +\global\maxtablewidth\wd\secondtablebox\fi + +\noindent\hbox to \hsize{\hss\unhbox\secondtablebox\hss} +%% +\vskip6pt +\hrule +\vskip6pt +\firstboxfalse\secondboxfalse\thirdboxtrue +\global\columncount=0 +\ifcolnumberson +\notfirsttrue +\setbox\thirdtablebox=\hbox{ +\let\savecolnumbers\xcolnumbers +\notfirsttrue +\begin{tabular}{fFz} +\ifx\csname pt@head\endcsname\relax\else +\pt@head\fi#1\crcr\end{tabular}} +\else +\setbox\thirdtablebox=\hbox{ +\begin{tabular}{fFz} +\ifx\csname pt@head\endcsname\relax\else +\pt@head\fi\\[-14pt] +#1 +\end{tabular}} +\fi +\ifdim\wd\thirdtablebox>\maxtablewidth +\global\maxtablewidth\wd\thirdtablebox\fi + +\noindent\hbox to \hsize{\hss\unhbox\thirdtablebox\hss} +\vskip6pt +\hrule +\else +%% Original for table divided into two parts +\global\columncount=0 +\secondboxfalse +\setbox\firsttablebox=\hbox{% +\begin{tabular}{AF} +\ifx\csname pt@head\endcsname\relax\else +\pt@head\fi% +#1\end{tabular}} +\global\maxtablewidth=\wd\firsttablebox +\hbox to \hsize{\hss\unhbox\firsttablebox\hss} +\vskip6pt +\hrule +\vskip6pt +\global\columncount=0 +\secondboxtrue +\ifcolnumberson +\setbox\secondtablebox=\hbox{% +\let\savecolnumbers\xcolnumbers +\notfirsttrue +\begin{tabular}{fZ}%% +\ifx\csname pt@head\endcsname\relax\else% +\pt@head\fi#1\crcr%%= tablecontents +\end{tabular}}% +\else +\setbox\secondtablebox=\hbox{% +\begin{tabular}{fZ}%% was 12 +\ifx\csname pt@head\endcsname\relax\else% +\pt@head\fi\\[-14pt]% +#1%%= tablecontents +\end{tabular}}\fi +\ifdim\wd\secondtablebox>\maxtablewidth +\global\maxtablewidth\wd\secondtablebox\fi + +\noindent\hbox to \hsize{\hss\unhbox\secondtablebox\hss} +\vskip6pt +\hrule +\secondboxtrue +%% +%% end of conditional testing for 2 or 3 part table: +\fi +%% +\global\dbreaktabfalse}} +%%% ====================================================== %%% + +\newif\ifnotfirst +%% +%% xstartdata, modified from \startdata in emulateapj, for splitdeluxetable +\gdef\xstartdata#1\enddata{\def\tablecontents{% +\ifcolnumberson% +\\\savecolnumbers\\[2pt]\fi% this is for top level split +\ifdeluxedecimals\savedecimals\fi% +#1}% +\currtabletypesize% +\setbox2=\vtop{\dbreaktabular{\tablecontents}}% +% +\expandafter\ifx\csname @tablecaption\endcsname\empty\else +\noindent\hbox +to\hsize{\hss\vtop{\hsize=\maxtablewidth\caption{\@tablecaption}}\hss}\vskip3pt\fi +\dbreaktabular{\tablecontents\noalign{\global\let\zdoit\relax +\global\let\ddoit\relax}} +\parindent=0pt +\global\setbox4=\vtop\bgroup% egroup in enddeluxetable +\currtabletypesize +\ifsplitstar +\hsize=\textwidth\else\hsize=245.3pt\fi +\parindent=-6pt \leftskip=6pt +} + +\def\tablecomments#1{\vskip1pt{\small\vskip1sp\indent\vrule height 11pt depth 2pt +width 0pt\currtabletypesize{\sc Note}---{#1}\vskip1pt}} + +\def\tablenotetext#1#2{\vskip1pt{\currtabletypesize\vskip1pt\indent\vrule +height 11pt depth +2pt width0pt\relax$^{\hbox to 5pt{$#1$}}$#2\vskip1pt}} + +\def\tablerefs#1{{\small\vskip3pt\indent\vrule height 11pt depth 2pt +width 0pt\currtabletypesize{\bf References}---{#1}\vskip1sp}} + +\let\tablereferences\tablerefs + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% 5. Simple entry decimal numbers + +%% extra unused args are to get rid of unnecessary commands revtex puts in +\gdef\lookfordecimal#1#2#3#4.#5 {\gdef\xone{{\let$\relax\savedollar#4\savedollar}} +\gdef\xtwo{#5}\ifx\xtwo\empty\else\gdef\xtwo{{\let$\relax\savedollar#5\savedollar}}\fi} + +%% D +\def\newdoit{\setbox0=\hbox\bgroup\zdoit} +\def\endnewdoit{\egroup\unhbox0} + +\long\gdef\zdoit#1 {\let$\relax %$ +\def\bothcols{#1 }% +\setbox0=\hbox{\let$\relax\expandafter\lookfordecimal\bothcols{}{}{}{}.{} }% $ +\xdoit} + +\global\let\savezdoit\zdoit +\let\zdoit\relax + +\gdef\xdoit{\relax\hskip\tabcolsep\relax\xone&\tabskip=0pt% +\ifx\xtwo\empty\let\go\relax\else.\def\go{\xtwo}\fi\go} + +%% d +\def\xnewdoit{\setbox0=\hbox\bgroup\ddoit} +\def\xendnewdoit{\egroup} + +\long\gdef\ddoit#1#2#3{\xxdoit} +\let\saveddoit\ddoit +\let\ddoit\relax + +%% to delete all D material: + +\gdef\xxdoit{&} + +\newcolumntype{D}{>\newdoit r<{\endnewdoit} @{}l}%% +\newcolumntype{d}{>\xnewdoit h<{\xendnewdoit} @{}h} %% + +\newdimen\savetabskip +\gdef\decimals{\noalign{\global\savetabskip\tabskip +\tabskip=0pt +\global\let\extracolsep\relax +\global\let\ddoit\saveddoit +\global\let\zdoit\savezdoit +}} + +\let\savedecimals\decimals + +%% to allow \decimals to be used before \startdata: +\newif\ifdeluxedecimals +\def\deluxedecimals{\global\deluxedecimalstrue} + +%%%%%%%%% +%% This needed to be redefined so that \colhead in \tablehead would span both parts +%% of decimal numbers. + +%% in case there isn't a table head +\let\pt@head\relax + +%% for splitdeluxetable +\def\xtablehead{\catcode`\&=\active% +\catcode`\$=\active% +\xxtablehead} + +%% +\def\xxtablehead#1{% +\let&\CheckNumberAndSwitch% +\gdef\pt@head{% +\hline\hline% +\multicolumn1c{\vrule height 12pt width0pt\relax\tempcounter=0 +\expandafter\getDs\tabfullpreamble\relax +\global\colcount=0 +\global\colheadcount=0}% +\\ +\iftwelvepoint% + \ifpreprinttwo% + \iflongrotateon\else\noalign{\vskip-6.5pt}\fi% + \else% + \ifmodern\iflongrotateon\else\noalign{\vskip-9pt}\fi% + \else% + \fi%% end ifmodern + \fi%% end ifpreprinttwo +\else% +%% not twelvepoint + \if@twocolumn% + \iflongrotateon\else\noalign{\vskip-5pt}\fi% + \else% + \ifonecolstyle% default + \iflongrotateon\noalign{\vskip2pt}\else\noalign{\advance\toprulebelowsep-\f@size pt \vskip-\toprulebelowsep}\fi% + \fi% end ifonecol + \fi%endif@twocolumn +\fi%end iftwelvepoint +#1\ifcolnumberson% +\ifnotfirst\\[-22pt]\fi +\else\\\hline\\[-8pt]\fi% space below hline for 2nd and 3rd part of split table +}% +% +} + +\def\ztablehead{\catcode`\&=\active% +\catcode`\$=\active% +\zztablehead} + +\def\zztablehead#1{\let&\CheckNumberAndSwitch% +\gdef\pt@head{% +%% this is needed: +\multicolumn1c{\vrule height12pt width0pt\relax\expandafter\getDs\tabfullpreamble\relax +\global\tempcounter=0 +\global\colcount=0 +\global\colheadcount=0}\\ +\iftwelvepoint% + \ifpreprinttwo% + \iflongrotateon\else\noalign{\vskip-6.5pt}\fi% + \else% + \ifmodern% + \iflongrotateon\else\noalign{\vskip-5pt}\fi% + \else% + \fi%% end ifmodern + \fi%% end ifpreprinttwo +\else% +%% not twelvepoint + \if@twocolumn% + \iflongrotateon\else\noalign{\vskip-5pt}\fi% + \else% + \ifonecolstyle% default + \iflongrotateon\noalign{\vskip2pt}\else\noalign{\vskip-4.5pt}\fi% + \fi% end ifonecol + \fi%endif@twocolumn +\fi%end iftwelvepoint +#1\unskip% +\ifcolnumberson\\[6pt] +\savecolnumbers\vrule height 11pt depth 4pt width 0pt\relax% +\\% +\ifdeluxedecimals\\[-14pt]% +\savedecimals\fi% +\else \vrule depth 6pt +width0pt\\\ifdeluxedecimals\savedecimals\fi\hline\fi% +}} + + +\newcount\tempcounter + +\gdef\getDs#1{\let&\CheckNumberAndSwitch +\def\lookforD{#1}% +\ifx\lookforD\xD% +\expandafter\gdef\csname col\the\tempcounter\endcsname{2}\else +\expandafter\gdef\csname col\the\tempcounter\endcsname{1}\fi +\global\advance\tempcounter by 1 +\futurelet\next\checkingpreamble} + +\gdef\checkingpreamble{\ifx\next\relax +\let\go\relax\else\let\go\getDs\fi\go} + +%%% Something like this could be used to automate the width of colheads in the tablehead, +%% making those that match the D in preamble are multicolumn2c instead of +%% multicolumn 1c. +\newcount\colheadcount +\newcommand\xcolhead[1]{\multicolumn{\expandafter\ifx\csname +col\the\colheadcount\endcsname\relax 1\else\expandafter% +\csname col\the\colheadcount\endcsname\fi}{c}{\vrule depth 4pt +width0pt\relax#1\relax\global\advance\colheadcount +by 1\relax}\ignorespaces}% +% + +%% +\extrarowheight=2pt +\def\matrixpreamble{*\c@MaxMatrixCols c} +%% this causes problem, must be fixed! +%\let\save@array@array@new\@array@array@new +\def\@array@array@new[#1]#2{% +\ifbreaktab +\else +%%% added so that we can use \colnumbers in any tabular environment +%%% and avoid error messages for breaktabular +\def\catchpreamble{#2\relax} +\gdef\tabfullpreamble{#2\relax} +{\colcount=0 +%% important fix, makes it possible to use amsmath and matrices. +\def\two{#2} +\ifx\matrixpreamble\two +\else +\expandafter\countcols\catchpreamble +\global\totalcolumns=\colcount\fi} +\fi +%%% end of additions + \@tempdima\ht\strutbox + \advance\@tempdima by\extrarowheight + \setbox\@arstrutbox\hbox{% + \vrule \@height\arraystretch\@tempdima + \@depth \arraystretch\dp\strutbox + \@width \z@ + }% + \begingroup + \@mkpream{#2}% + \xdef\@preamble{\@preamble}% + \endgroup + \prepdef\@preamble{% + \tabskip\tabmid@skip + \@arstrut + }% + \appdef\@preamble{% + \tabskip\tabright@skip + \cr + \array@row@pre + }% + \@arrayleft + \@nameuse{@array@align@#1}% + \m@th + \let\\\new@arraycr %<<== defined above, original plus reset counters + \let\tabularnewline\\% + \let\par\@empty + \let\@sharp##% + \set@typeset@protect + \lineskip\z@\baselineskip\z@ + \tabskip\tableft@skip + \everycr{}% + \expandafter\halign\expandafter\@halignto\expandafter\bgroup\@preamble +}% + +%% \rotate +\newif\ifrotateon +\def\rotate{\global\floattrue\iffloat\global\let\go\relax\global\rotateontrue\else +\global\rotateonfalse +\let\go\relax +\fi\go} + +\def\colnumbers{\plaincolnumbers} + +%% add 6pt of space between table and following text: +\let\saveendtable\endtable +\def\endtable{\vskip6pt\saveendtable} +\expandafter \let \csname endtable*\endcsname = \endtable +%% + + +%%% \movetabledown works +\newbox\rotatetablebox +\def\rotatetable{% +\clearpage +\global\startlongtabletrue\setbox\rotatetablebox=\vbox\bgroup +} + +\def\endrotatetable{\egroup +\vglue\movetabledown +\hbox to +\textwidth{\hss\rotatebox{90}{\hbox{\box\rotatetablebox}}\hss} +\global\movetabledown=0pt\relax +\global\startlongtablefalse +} + +%%% \movetabledown works +\expandafter\def\csname rotatetable*\endcsname{% +\clearpage +\global\startlongtabletrue\setbox\rotatetablebox=\vbox to +\textwidth\bgroup\vfill} + +\expandafter\def\csname endrotatetable*\endcsname{\vfill\egroup +\vbox to \textheight{\vfill +\vglue\movetabledown +\hbox to +\textwidth{\hss\rotatebox{90}{\box\rotatetablebox}\hss}\global\movetabledown=0pt\relax +\vfill} +\clearpage +\if@two@col +\twocolumngrid +\global\startlongtablefalse +} + +% +%%% \movetabledown works +\newif\iflongrotateon +\def\longrotatetable{% +\global\longrotateontrue + \if@two@col\onecolumngrid\clearpage + \fi +\clearpage + \clearpage + \begingroup +\expandafter\def\csname deluxetable*\endcsname{\deluxetable} +\expandafter\def\csname enddeluxetable*\endcsname{\enddeluxetable} +\global\floatfalse +\global\startlongtabletrue +\def\LS@rot{% + \setbox\@outputbox\vbox{\vskip\movetabledown\hbox{\rotatebox{90}{\box\@outputbox}}}} + +\let\LS@makecol=\@makecol +\let\LS@makefcolumn=\@makefcolumn + + \vsize=\textwidth + \hsize=\textheight + \linewidth=\hsize + \columnwidth=\hsize + \@colroom=\vsize + \textheight=\vsize + \@colht=\vsize + \def\@makecol{\LS@makecol\LS@rot}% + \def\@makefcolumn##1{\LS@makefcolumn{##1}\LS@rot}} + +\def\endlongrotatetable{% +\onecolumngrid %% ?? +\clearpage + \ifGin@pdftex + \pdfpageattr{/Rotate 90} + \fi + \clearpage + \endgroup + \if@two@col\twocolumngrid\fi +\clearpage +\global\longrotateonfalse +\global\movetabledown=0pt + \global\@colht=\textheight + \global\vsize=\textheight + \global\@colroom=\textheight} + +\newif\ifGin@pdftex +\Gin@pdftexfalse +\DeclareOption{pdftex}{% + \PassOptionsToPackage\CurrentOption{graphicx} + \Gin@pdftextrue +} + +\DeclareOption*{\PassOptionsToPackage\CurrentOption{graphicx}} +\ProcessOptions + +%% set &, $ catcode back to normal: + +\catcode`&=4 +\catcode`$=3 + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% end table tools $ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Gridlines for positioning multiple illustrations in +%% one figure environment. + +\def\gridline#1{\vskip6pt\hbox to\hsize{#1}\vskip6pt} + +\def\boxedfig#1#2#3{\hfill\fbox{\vbox{\parskip=0pt\relax +\hsize=#2 +\includegraphics[width=#2]{#1}\vskip2pt\vtop{\hsize=#2 +\centerline{#3}}}}\hfill} + +\def\fig#1#2#3{\hfill\vbox{\parskip=0pt\hsize=#2 +\includegraphics[width=#2]{#1}\vskip2pt\vtop{\centering +\footnotesize +\hsize=#2 +#3\vskip1pt +}}\hfill} + +\def\leftfig#1#2#3{\vbox{\parskip=0pt\relax\hsize=#2 +\includegraphics[width=#2]{#1}\vskip2pt\vtop{\hsize=#2 +\centering +#3\vskip1sp\vskip1sp}}\hfill} + +\def\rightfig#1#2#3{\hfill\vbox{\parskip=0pt\relax\hsize=#2 +\includegraphics[width=#2]{#1}\vskip2pt\vtop{\hsize=#2 +\centering#3\vskip1sp}}} + +\def\rotatefig#1#2#3#4{\hfill\vbox{\centering\parskip=0pt\hsize=#3 +\includegraphics[width=#3,angle=#1]{#2}\vskip2pt\vtop{\centering +\footnotesize +\hsize=#3 +#4\vskip1pt +}}\hfill} + +%%%%%%%%%% End Grid line Macros %%%%%%%%%% + +%%%%%%%%%% Color Editing Macros %%%%%%%%%% +\newif\ifturnoffedit +\def\turnoffedit{\global\turnoffedittrue} +\def\turnoffedits{\global\turnoffedittrue} +\let\turnoffediting\turnoffedits + +\newif\ifturnoffone +\newif\ifturnofftwo +\newif\ifturnoffthree + +\def\turnoffeditone{\turnoffonetrue} +\def\turnoffedittwo{\turnofftwotrue} +\def\turnoffeditthree{\turnoffthreetrue} + + +%% Other choices can be made, but this should be +%% standardized, so didn't make an user interface +%% to change the colors easily. + +\expandafter\def\csname editcolor1\endcsname{black}% was magenta +\expandafter\def\csname editcolor2\endcsname{black}% was blue +\expandafter\def\csname editcolor3\endcsname{black}% was violet + +\let\newgo\relax + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%% Draft watermark + +\definecolor{ltgray}{gray}{.9}% .89 +\font\bighelv=phvr at 2in % +\def\setwatermarkfontsize#1{\font\bighelv=phvr at #1} + +\def\watermark#1{\def\thewatermark{\hbox to\textwidth{\vtop to +1.1\textheight{\vss +\hskip24pt\rotatebox{60}{\hbox{\bighelv \color{ltgray} +\uppercase{#1}}}\vss}}\hss}} +\let\thewatermark\empty + +%% Used in titlepage definition, as \pagestyle{titlepage} +\def\ps@titlepage{% + \let\@mkboth\@gobbletwo +\def\@oddhead{\ifx\thewatermark\empty\hfill\else +\hbox to \textwidth{\rlap{\thewatermark}\hfill}\fi} +\let\@oddfoot\@empty +\let\@evenhead\@empty\let\@evenfoot\@empty} + +% end of watermark definitions +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\newcommand*\submitjournal[1] +{\def\@submitted{Submitted to #1}}% + +\newcount\tempallauthorcnt +\newcount\printallauthorcnt +%% this one is used &&& +\def\titleblock@produce{% + \begingroup + \ltx@footnote@pop + \def\@mpfn{mpfootnote}% + \def\thempfn{\thempfootnote}% + \c@mpfootnote\z@ + \let\@makefnmark\frontmatter@makefnmark + \frontmatter@setup + \thispagestyle{titlepage}\label{FirstPage}% +\ifmodern\leftskip=0pt\rightskip\leftskip\fi + \frontmatter@title@produce + \groupauthors@sw{% + \frontmatter@author@produce@group + }{% + \frontmatter@author@produce@script + }% + \frontmatter@RRAPformat{% +\vskip12pt + \expandafter\produce@RRAP\expandafter{\@date}% + \expandafter\produce@RRAP\expandafter{\@received}% + \expandafter\produce@RRAP\expandafter{\@revised}% + \expandafter\produce@RRAP\expandafter{\@accepted}% + \expandafter\produce@RRAP\expandafter{\@published}% + }% +\expandafter\ifx\csname @submitted\endcsname\relax\else +\vskip6pt +\expandafter\produce@RRAP\expandafter{\centerline{\@submitted\hbox +to 20pt{\hfill}}\vskip12pt}% +\fi + \frontmatter@abstract@produce + \@ifx@empty\@keywords{}{% + \@keywords@produce\@keywords + }% + \par + \frontmatter@finalspace + \tempallauthorcnt\allauthorcnt% + \ifnum\tempallauthorcnt>\z@% + \@whilenum\tempallauthorcnt>\z@\do{% + \global\advance\printallauthorcnt\@ne% + \@ifundefined{affil@\romannumeral\the\printallauthorcnt}{\affil@error{\csname author@data@\romannumeral\the\printallauthorcnt\endcsname }}{}\par% + \@ifundefined{email@\romannumeral\the\printallauthorcnt}{\email@error{\csname author@data@\romannumeral\the\printallauthorcnt\endcsname}}{}\par% + \global\advance\tempallauthorcnt\m@ne% + }% + \fi% +\endgroup% +}% + + +% needed?? +\gdef\specialbibitem#1[#2]#3#4{ +{\tt\string\bibitem}[#2]{\tt\string{\string}} +#4} + + + +%%%%%%%%%%%%%%%%%%%%%%%%% +%% Track Changes +%% Amy Hendrickson, Nov 2015 +%% Change Jan 2016, to allow list of changes +%% to give line and page numbers for more than one entry on the same line. +%% Change Feb 2016, to allow optional argument for time/date, and/or editor initials, etc. + + +\providecolor{trackchange}{cmyk}{0,0,0,1} +\providecolor{explain}{cmyk}{0,0,0,1} + +\newif\ifsilent + +\newcount\refchangenumber +\DeclareRobustCommand\added{\@ifnextchar[{\xadded}{\yadded}} + +\long\def\xadded[#1]#2{% +\iftrack +{\global\advance\refchangenumber by 1\relax% +\vtop to 0pt{\vss +\hypertarget{link\the\refchangenumber}{} +\vskip14pt}% +\ifnumlines% +%% \ifabstract\else% +%% \protected@xdef\doit{\noexpand\linelabel{\the\refchangenumber}}\doit\fi +\else% +\xdef\doit{\noexpand\label{\the\refchangenumber}{}{}{}}\doit\fi}% +{\color{trackchange}\bf [#1] #2}%% +\ifabstract\label{\the\refchangenumber}% +\expandafter\gdef\csname +changenum\the\refchangenumber\endcsname{\bf [#1] +\textcolor{trackchange}\bf\relax{#2}\global\silenttrue}% +\else\expandafter\gdef\csname +changenum\the\refchangenumber\endcsname{\bf\relax [#1] +\textcolor{trackchange}\bf\relax{\let\bibitem\specialbibitem #2}\global\silentfalse}\fi% +\else#2\fi} + + + +\long\def\yadded#1{% +\iftrack +{\global\advance\refchangenumber by 1\relax% +\vtop to 0pt{\vss +\hypertarget{link\the\refchangenumber}{} +\vskip14pt}% + \ifnumlines +\else% + \xdef\doit{\noexpand\label{\the\refchangenumber}{}{}{}}\doit% + \fi}% +{\color{trackchange}\bf #1}%% +\ifabstract% +\label{\the\refchangenumber}% +\expandafter\gdef\csname +changenum\the\refchangenumber\endcsname{\bf +\textcolor{trackchange}\bf\relax{#1}, +\global\silenttrue}\else +\expandafter\gdef\csname changenum\the\refchangenumber\endcsname{\bf +\textcolor{trackchange}{\bf\relax\let\bibitem\specialbibitem #1},% +\global\silentfalse}\fi% +\else{#1}\fi} + + + +\def\deleted{\@latex@error{=================^^J^^J!!! The deleted command no longer + allowed!^^J^^J Please use \@backslashchar added{}{}^^J^^J + Thank-you!^^J^^J=================}\@ehc\stop}% + + +\DeclareRobustCommand\replaced{\@latex@error{=================^^J^^J!!! The replaced command no longer + allowed!^^J^^J Please use \@backslashchar added{}{}^^J^^J + Thank-you!^^J^^J=================}\@ehc\stop}% + + +\def\explain{\@ifnextchar[{\xexplain}{\yexplain}} + +\def\xexplain[#1]#2{\iftrack\ {\bfseries\itshape\color{explain} [Explanation of change: +#2 (#1)]\ }\fi} + +\def\yexplain#1{\iftrack\ {\bfseries\itshape\color{explain} [Explanation of change: +#1]\ }\fi} + + +\newcount\listchangenum + +\def\listofchanges{\@latex@error{=================^^J^^J!!! The \string\listofchanges{} command no longer + allowed!^^J^^J + Thank-you!^^J^^J=================}\@ehc\stop} + + +\usepackage[normalem]{ulem} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% From earlier version of AASTeX, for usefulness and +%% backward compatibility, with some requested additions + +\let\jnl@style=\rmfamily +\def\ref@jnl#1{{\jnl@style#1}}% + +%%% +\newcommand\memsai{\ref@jnl{Mem.~Soc.~Astron.~Italiana}}% + % Mem. Societa Astronomica Italiana +%% longer version: +\newcommand\memsocai{Mem. Societ\`a Astronomica Italiana} +\newcommand\aspconf{Ast. Soc. of the Pac. Conference Series} + +\let\astap=\aap +\let\apjlett=\apjl +\let\apjsupp=\apjs +\let\applopt=\ao + +%%% More useful commands from Earlier version of Aastex: +\let\la=\lesssim % For Springer A&A compliance... +\let\ga=\gtrsim + +\let\farcm\farcm@mss +\let\farcs\farcs@mss + + +\def\chem@bnd#1{% + {% + \kern.1em\relax + \setbox\z@\hbox{M}% + \dimen@ii.8em\relax + \p@=.1em\relax + \dimen@.5\ht\z@\dimen@i-\dimen@ + \advance\dimen@1.5\p@\advance\dimen@i-1.0\p@ + #1% + \kern.1em\relax + }% + }% +\def\@sbnd{% + \advance\dimen@-1.5\p@\advance\dimen@i1.5\p@ + \vrule\@height\dimen@\@depth\dimen@i\@width\dimen@ii\nobreak + }% +\def\@dbnd{% + \advance\dimen@-0.5\p@\advance\dimen@i0.5\p@ + \vrule\@height\dimen@\@depth\dimen@i\@width\dimen@ii\nobreak + \advance\dimen@-1.5\p@\advance\dimen@i1.5\p@ + \hskip-\dimen@ii + \vrule\@height\dimen@\@depth\dimen@i\@width\dimen@ii\nobreak + }% +\def\@tbnd{% + \vrule\@height\dimen@\@depth\dimen@i\@width\dimen@ii\nobreak + \advance\dimen@-1.5\p@\advance\dimen@i1.5\p@ + \hskip-\dimen@ii + \vrule\@height\dimen@\@depth\dimen@i\@width\dimen@ii\nobreak + \advance\dimen@-1.5\p@\advance\dimen@i1.5\p@ + \hskip-\dimen@ii + \vrule\@height\dimen@\@depth\dimen@i\@width\dimen@ii\nobreak + }% + +\renewcommand\LaTeX{% + \leavevmode + L% + \raise.42ex\hbox{% + \count@=\the\fam + $\fam\count@\scriptstyle\kern-.3em A$% $ + }% + \kern-.15em\TeX +}% + +%% added Feb 2, 2016, redefining definition of \caption made with hyperref +%% package. Making \caption[] be the default, to prevent sending caption +%% text to listoftables or listoffigures, which we are not going to use +%% anyway. This change enables track changes commands to work in captions. +\def\xtable{table} +\def\caption{\numlinesfalse +\ifx\@captype\@undefined +\@latex@error {\noexpand \caption outside float}\@ehd +\expandafter \@gobble \else +\H@refstepcounter \@captype \let \Hy@tempa \@caption \@ifundefined +{float@caption}{} +{\expandafter \ifx \csname @float@c@\@captype\endcsname +\float@caption\let\Hy@tempa\Hy@float@caption\fi} +\expandafter\@firstofone\fi +{\@dblarg {\Hy@tempa \@captype}}[]} + +\def\@caption#1[#2]#3{{\small\rm\expandafter \ifx \csname if@capstart\expandafter \endcsname +\csname iftrue\endcsname \global \let \@currentHref \hc@currentHref \else \hyper@makecurrent {\@captype }\fi +\@ifundefined {NR@gettitle}{\def \@currentlabelname{\thesection\relax #2}} +{\NR@gettitle {#2}}\par +%\addcontentsline {\csname ext@#1\endcsname }{#1}{\protect \numberline {\csname the#1\endcsname }{\ignorespaces #2}} +\begingroup \@parboxrestore \if@minipage \@setminipage \fi \normalsize +\expandafter\ifx \csname if@capstart\expandafter \endcsname +\csname iftrue\endcsname \global \@capstartfalse +\@makecaption {\bf\csname fnum@#1\endcsname }{\ignorespaces #3} +\else \@makecaption {\bf\csname fnum@#1\endcsname }{\ignorespaces \ifHy@nesting +\expandafter \hyper@@anchor \expandafter {\@currentHref }{#3}\else +\Hy@raisedlink {\expandafter \hyper@@anchor \expandafter +{\@currentHref }{\relax }}{#3}\fi }\fi \par +\endgroup}} + +%% changed, March 23, 2019, took out \\ at end of definition: +\newcommand\tablebreak{\\[-11pt]\noalign{\break}} + +%% As suggested by Greg Schwarz, August Meunch, Feb 11 + +\def\dataset{\def\doi##1{https://doi.org/##1} +\@ifnextchar[{\ydataset}{\xdataset}} +\def\xdataset#1{\ydataset[]{#1}\let\doi\savedoi} +\def\ydataset[#1]#2{\def\one{#1}\ifx\one\empty +\href{#2}{[DATASET]}\else +\href{#2}{#1}\fi\let\doi\savedoi} + +%% this seems in the middle of nowhere... +\advance\columnsep6pt + +%%%%%%%%%% +%% macros to give hyperref link to authors when orcid numbers +%% are supplied with \author[0000-2345-3333-0023]{author name} + \def\lookforbracket{\ifx\next[\let\go\xauthor\else\let\go\yauthor\fi\go} + +\newcount\entriesinthiscollab +\newcount\allentries +\newif\ifseesmessage +\newcount\allauthorcnt + + +\def\author{\global\advance\allauthorcnt\@ne\relax\global\advance\entriesinthiscollab by 1\relax% + \global\advance\allentries by 1\relax\global\correspauthorfalse% + \let\ignorespacesafterend\protect\ignorespacesafterend% + \futurelet\next\lookforbracket} + + +\def\new@author@def#1#2#3{% + \move@AU\move@AF\move@AUAF + \let\@AF@join\@author@join +\ifx!#1!\relax% + \ifthenelse{\equal{#3}{yes}}{\def\@author{{#2\IfFileExists{CoFirstAuthor.png}{\hskip2pt\includegraphics[width=9pt]{CoFirstAuthor}}{}}{}}}{ +\expandafter\gdef\csname author@data@\romannumeral\the\allauthorcnt\endcsname{#2}% +\def\@author{{#2}{}}}% + % + \else% +\ifthenelse{\equal{#3}{yes}}{% + \expandafter\gdef\csname author@data@\romannumeral\the\allauthorcnt\endcsname{#2}% + \protected@xdef\@author{{\href{http://orcid.org/#1}{#2\protect\IfFileExists{Orcid-ID.png}{\hskip2pt\protect\includegraphics[width=9pt]{Orcid-ID.png}}{}}{\protect\IfFileExists{CoFirstAuthor.png}{\hskip2pt\leavevmode\protect\includegraphics[width=9pt]{CoFirstAuthor}}{}% +}}{}}}{% +\expandafter\gdef\csname author@data@\romannumeral\the\allauthorcnt\endcsname{#2}% + \protected@xdef\@author{{\href{http://orcid.org/#1}{#2% +\protect\IfFileExists{Orcid-ID.png}{% +\hskip2pt\protect\includegraphics[width=9pt]{Orcid-ID.png}}{}% +}}{}}}\fi% +}% + +\def\orciderrormessage{% +\typeout{^^J^^J [\firstarg]\space Invalid ORCID Identifier!^^J^^J The ID +should consist of four sets of four digits,^^J separated with -, ie, +0000-0012-3245-1234 or ^^J +0000-0012-3245-123X +^^J^^J +Please fix, or don't use square bracket argument with +\string\author[]\string{\string} +^^J^^J}% +} + +%% Tests to see if author gave reasonable Orcid number; +%% if not, stops processing and gives error message. +\newif\ifbadOrcid +\def\lookatOrcid #1-#2-#3-#4-{% +\def\one{#1}\def\two{#2}\def\three{#3}\def\four{#4}% +\ifx\one\empty% +\global\badOrcidtrue% +\else% +\ifx\two\empty% +\global\badOrcidtrue% +\else% +\ifx\three\empty% +\global\badOrcidtrue% +\else% +\ifx\four\empty% +\global\badOrcidtrue% +\fi\fi\fi\fi} + +\def\lookforDigits #1#2#3#4{ +\def\xone{#1}\def\xtwo{#2}\def\xthree{#3}\def\xfour{#4} +%% +\ifx\xone\empty +\global\badOrcidtrue +\else + \ifcat \xone 1\else + \global\badOrcidtrue\fi +\fi +%%% +\ifx\xtwo\empty +\global\badOrcidtrue +\else + \ifcat \xtwo 1\else + \global\badOrcidtrue\fi +\fi +%%% +\ifx\xthree\empty +\global\badOrcidtrue +\else + \ifcat \xthree 1\else + \global\badOrcidtrue\fi +\fi +%%% +\ifx\xfour\empty +\global\badOrcidtrue +\else + \ifcat \xfour 1\else + \global\badOrcidtrue\fi +\fi} + +\def\FinallookforDigits #1#2#3#4{ +\def\xone{#1}\def\xtwo{#2}\def\xthree{#3}\def\xfour{#4} +%% +\ifx\xone\empty +\global\badOrcidtrue +\else + \ifcat \xone 1\else + \global\badOrcidtrue\fi +\fi +%%% +\ifx\xtwo\empty +\global\badOrcidtrue +\else + \ifcat \xtwo 1\else + \global\badOrcidtrue\fi +\fi +%%% +\ifx\xthree\empty +\global\badOrcidtrue +\else + \ifcat \xthree 1\else + \global\badOrcidtrue\fi +\fi +%%% +\ifx\xfour\empty +\global\badOrcidtrue +\else + \ifcat \xfour 1\else + \if\xfour X + \else + \global\badOrcidtrue\fi% + \fi% +\fi} + + +%% Last digit might be X +\let\@orcid\empty +\def\@filter@audata#1=#2\@nil{% + \ifthenelse{\equal{#2}{orcid}}{\def\@orcid{#1}}{% + \ifthenelse{\equal{#2}{\space orcid}}{\def\@orcid{#1}}{% + \ifthenelse{\equal{#2}{co-firstauthor}}{}{% + \ifthenelse{\equal{#2}{\space co-firstauthor}}{}{% + \ifthenelse{\equal{#2}{suffix}}{}{% + \ifthenelse{\equal{#2}{\space suffix}}{}{% + \ifthenelse{\equal{#2}{\space gname}}{}{% + \ifthenelse{\equal{#2}{\space sname}}{}{% + \ifthenelse{\equal{#2}{sname}}{}{% + \ifthenelse{\equal{#2}{gname}}{}{\@latex@error{"#2" should be orcid, gname, sname or suffix}\@ehc}}}}}}}}}}% +} + +\def\@cofirstauthor{no} +\newcount\cofirstauthorcnt + +\def\filter@audata#1=#2\@nil{% +\@ifx{!#2!}{\ifthenelse{\equal{#1}{co-firstauthor}}{\global\advance\cofirstauthorcnt\@ne\gdef\@cofirstauthor{no}}{% +\ifthenelse{\equal{#1}{ co-firstauthor}}{\global\advance\cofirstauthorcnt\@ne\gdef\@cofirstauthor{no}}{% +\xdef\@orcid{#1}}}}{\expandafter\@filter@audata#2#1\@nil} +} + +\def\xauthor[#1]#2{\def\@cofirstauthor{no}\def\@orcid{}% +\@for\@audata:=#1\do{% + \expandafter\filter@audata\@audata=\@nil} + \ifx\@orcid\@empty% + \ifthenelse{\equal{\@cofirstauthor}{yes}}{\new@author@def{}{#2}{yes}}{\new@author@def{}{#2}{no}}% + \else% +\edef\testone{\@orcid-}\edef\firstarg{\@orcid}% +\setbox0=\hbox{\expandafter\lookatOrcid\testone {}-{}-{}-{}- +\expandafter\lookforDigits\one {}{}{}{}% +\expandafter\lookforDigits\two {}{}{}{}% +\expandafter\lookforDigits\three {}{}{}{}% +\expandafter\FinallookforDigits\four {}{}{}{}}% +%% +\ifbadOrcid\let\go\orciderrormessage +\else\let\go\relax\fi\go% +\ifbadOrcid\let\go\stop\else\let\go\relax\fi\go% + \ifthenelse{\equal{\@cofirstauthor}{yes}}{\new@author@def{\@orcid}{#2}{yes}}{\new@author@def{\@orcid}{#2}{no}}% +\fi +}%% oct 7, this doesn't seem to work + +\def\yauthor{\@author@def{}} + + +\newcount\AuthorCollaborationLimit +\let\AuthorCallLimit\AuthorCollaborationLimit +%% no limit for default +\AuthorCollaborationLimit=10000 +\newcount\largestAffilNum + +\def\lookfornumbers#1#2#3#4#5#6#7#8#9{\def\one{#1} +\def\two{#2} +\def\three{#3} +\def\four{#4} +\def\five{#5} +\def\six{#6} +\def\seven{#7} +\def\eight{#8} +\def\nine{#9} +\ifnum\one>\largestAffilNum +\global\largestAffilNum=\one\fi +%%% +\ifx\two\empty\else +\ifnum\two>\largestAffilNum +\global\largestAffilNum=\two\fi\fi +%%% +\ifx\three\empty\else +\ifnum\three>\largestAffilNum +\global\largestAffilNum=\three\fi\fi +%%% +\ifx\four\empty\else +\ifnum\four>\largestAffilNum +\global\largestAffilNum=\four\fi\fi +%%% +\ifx\five\empty\else +\ifnum\five>\largestAffilNum +\global\largestAffilNum=\five\fi\fi +%%% +\ifx\six\empty\else +\ifnum\six>\largestAffilNum +\global\largestAffilNum=\six\fi\fi +%%% +\ifx\seven\empty\else +\ifnum\seven>\largestAffilNum +\global\largestAffilNum=\seven\fi\fi +%%% +\ifx\eight\empty\else +\ifnum\eight>\largestAffilNum +\global\largestAffilNum=\eight\fi\fi +%%% +\ifx\nine\empty\else +\ifnum\nine>\largestAffilNum +\global\largestAffilNum=\nine\fi\fi +} + +%\gdef\newcomma@space{\hskip-3pt\textsuperscript{,}}% +\def\doEtAl{\rm et al.\gdef\doEtAl{\relax}} +%% ===================== +\newif\iffirsttime +\firsttimetrue +\newcount\totalentries +\newcount\docollabnum +\newcount\@docollabnum\@docollabnum\@ne +\newcount\tempauthornumber +\newcount\countauthors +\newif\ifdothis +\def\doAnd{} +\newcount\testnum + +\def\olddoauthor#1#2#3{% +\iflongauthor\vskip6pt\fi +\global\advance\countauthors by 1 +\ifnum\countauthors>\AuthorCollaborationLimit +\doEtAl +\else +\ifnum\AuthorCollaborationLimit=1 +\let\@listand\relax +\fi + \ignorespaces\leavevmode\hbox{#1\unskip\@listcomma}% nice, keeps name from breaking across lines +\fi + \begingroup +\ifnum\countauthors>\AuthorCollaborationLimit\else + #3% all affil numbers +\ifx\@affilID@temp\empty +\else% +\setbox0=\hbox{\expandafter\lookfornumbers\@affilID@temp{}{}{}{}{}{}{}{}{}}% +\fi\fi +%% #2= \altaffiliation{} or \email{} or +%% possibly anything other than author, affiliation, or collaboration + \@if@empty{#2}{\endgroup{}{}} +{\ifnum\countauthors>\AuthorCollaborationLimit\endgroup{}{}%% <<< bug fix, added \endgroup{}{} +\else +\endgroup{\comma@space}{}\frontmatter@footnote{#2}\fi}% +\ifnum\countauthors>\AuthorCollaborationLimit\else \space +\@listand\fi +}% + +\newif\ifaddspace + +\newcount\restauentries + +\def\authorcnt#1{\global\restauentries=#1} +\authorcnt{0} + + +\def\doauthor#1#2#3{% +\iflongauthor\vskip6pt\fi%%% +\ifanonymous% + \iffirsttime% + \global\firsttimefalse% + Anonymous author(s)% + \fi% +\else%% ends at end of this def +%%% +\@ifundefined{specificCollabLimit\the\@docollabnum}{% + \@ifnum{\restauentries<\z@}{\AuthorCollaborationLimit=9999}{% + \AuthorCollaborationLimit=\restauentries}% +}{% + \AuthorCollaborationLimit=\csname specificCollabLimit\the\@docollabnum\endcsname% +}% +%% this won't change until after collaboration name at end + %% end ifnum\docollabnum +%% +%%%%%%%%%%%%%%%% +\global\advance\totalentries by 1\relax% +\global\advance\countauthors by 1\relax% +%%% +\ifallauthors\global\AuthorCollaborationLimit=9999 \fi% +%%% +% +\gdef\xone{#1}% +\ifnum\countauthors < \AuthorCollaborationLimit +\global\addspacetrue +\gdef\docomma{,}\else\gdef\docomma{}\fi% ok +%%% +\ifnum\countauthors = \AuthorCollaborationLimit +\ifnum\AuthorCollaborationLimit=\@ne\gdef\doAnd{}\else +\gdef\doAnd{And }\fi% +\ifnum\tempauthornumber= 1 +\gdef\doAnd{ } \fi\fi% +%% +{\tempauthorminusone=\AuthorCollaborationLimit +\advance\tempauthorminusone by -1 +\ifnum\countauthors=\tempauthorminusone +\gdef\doAnd{And }% +\gdef\docomma{}\fi}% +%%% +\global\dothisfalse% +%% if num countauthors is less than or equal to \AuthorCollaborationLimit, print name +\ifnum\countauthors< \AuthorCollaborationLimit +%%% +\ifx\xone\empty\else% +\global\dothistrue% +%\expandafter\gdef\csname +%dothisaffil-\the\countauthors\the\docollab\endcsname{dothisone} + \ignorespaces\leavevmode\hbox{#1\unskip\docomma}% nice, keeps name from breaking across lines +\fi% +\fi% +%% +\ifnum\countauthors= \AuthorCollaborationLimit +%%% +\ifx\xone\empty\else +\global\dothistrue + \ignorespaces\leavevmode\hbox{\doAnd #1\unskip\docomma}%nice, keeps name from breaking across lines +\fi% +\fi% +%% ++++ +%% +\ifsuppressAffiliations\else% +\ifx\xone\empty\else% +\begingroup% +\ifnum\countauthors>\AuthorCollaborationLimit\else + #3% all affil numbers +\ifx\@affilID@temp\empty %% number following author +\else% +\setbox0=\hbox{\expandafter\lookfornumbers\@affilID@temp{}{}{}{}{}{}{}{}{}}% +\fi\fi% +%% #2= \altaffiliation{} or \email{} or +%% possibly anything other than author, affiliation, or collaboration + \@if@empty{#2}{\endgroup{}{}}% +{\ifnum\countauthors>\AuthorCollaborationLimit\endgroup{}{}%% <<< bug fix, added \endgroup{}{} +\else +\endgroup{\comma@space}{}\frontmatter@footnote{#2}\fi}% +\fi%% end test of empty +\fi%% end test of suppressAffiliations +%%%%%%%%%%%%%%%%%%%%%%%% +%%% Collaboration name is always used if available: +\expandafter\ifx\csname currCollabName\the\totalentries\endcsname\relax\else +%%% +%%% +%%% +%% changed locally: +{\advance\docollabnum 1 +\advance\countauthors-1 +%%% +%%% We need to test to see if more than one author in collaboration +%%% and if the number of authors is greater than the \AuthorCollaborationLimit. +%%% If both of these are true, than use `et al.' , otherwise do not: +\expandafter\ifx\csname CollabTotalAuthors\the\docollabnum\endcsname\relax +\else +\expandafter\ifnum\csname CollabTotalAuthors\the\docollabnum\endcsname < 2 %%%%% Don't use et al if there is only one author +\else +\expandafter\ifnum\csname CollabTotalAuthors\the\docollabnum\endcsname>\AuthorCollaborationLimit\relax% +\ifnum\AuthorCollaborationLimit=0\else +\vskip3pt +{\rm et al.} \vskip-3pt +\fi\fi\fi\fi% +}%% end local change to docollabnum +%%%% +\expandafter\ifx\csname currCollabName\the\totalentries\endcsname\empty +\vskip-3pt +\else +\vskip6pt +\expandafter\csname currCollabName\the\totalentries\endcsname\vskip8pt +\affiliation{testing} +\fi% +%%%%%%%% +\global\advance\@docollabnum\@ne +\global\countauthors=0 +%%% +%%% +\global\advance\docollabnum by 1 +%% Set up counters for next time through this loop: +{\advance\docollabnum by1 + \expandafter\ifx\csname specificCollabLimit\the\docollabnum\endcsname\relax + \else + \global\AuthorCollaborationLimit=\csname specificCollabLimit\the\docollabnum\endcsname + \fi% +\expandafter\ifx\csname CollabTotalAuthors\the\docollabnum\endcsname\relax +\else +\global\tempauthornumber= \csname CollabTotalAuthors\the\docollabnum\endcsname +\fi}% +\fi %% ends test to see if it is time to use collaboration name +\fi %% ends ifanonymous +% +\ifaddspace\ \fi\global\addspacefalse}% oct 7, 2020, allows multiple names to break over lines, + %but no extra space if \collaboration{1} + + +%%%% +\newcount\tempauthorminusone +%% +\def\doAllauthors#1#2#3{% +\global\suppressAffiliationsfalse +\iflongauthor\vskip6pt\fi +%%% +\ifanonymous + \iffirsttime + \global\firsttimefalse + Anonymous author(s) + \fi +\else %% ends at end of this def +%%% +\ifnum\docollabnum< 1 +%% these won't change until after collaboration name at end +\global\AuthorCollaborationLimit\expandafter\csname currCollabLimit0\endcsname +\global\tempauthornumber=\csname CollabTotalAuthors1\endcsname +\fi%% end ifnum\docollabnum +%% +%%%%%%%%%%%%%%%% +\global\advance\totalentries by 1 +\global\advance\countauthors by 1 +%%% +\ifallauthors\global\AuthorCollaborationLimit=9999 \fi +%%% +% for testing +%[author number=\the\countauthors/ temp author +%=\the\tempauthornumber] +\def\one{#1} +{\tempauthorminusone=\tempauthornumber +\advance\tempauthorminusone by -1 +\ifnum\countauthors < \tempauthornumber +\gdef\xdocomma{,}% +\else\gdef\xdocomma{}\fi% +%%% +\ifnum\countauthors = \tempauthornumber +\gdef\xdoAnd{And}\gdef\xdocomma{}% +\else\gdef\xdoAnd{}\fi% +\ifnum\tempauthornumber= 1 +\gdef\xdoAnd{}\gdef\xdocomma{}\fi% +\ifnum\countauthors=\tempauthorminusone +\gdef\xdocomma{}\fi% +} +%%% +%% if num countauthors is less than or equal to \AuthorCollaborationLimit, print name +\ifnum\countauthors< \AuthorCollaborationLimit +%%% +\ifx\one\empty\else + \ignorespaces\leavevmode\hbox{\unskip\xdoAnd\ #1\unskip\xdocomma}% nice, keeps name from breaking across lines +\fi\fi% +%% +\ifnum\countauthors= \AuthorCollaborationLimit +%%% +\ifx\one\empty\else +\ignorespaces\leavevmode\hbox{\unskip\xdoAnd\ #1\unskip\xdocomma}% nice, keeps name from breaking across lines +\fi% +\fi% +%% +\ifx\one\empty\else + \begingroup +\ifnum\countauthors>\AuthorCollaborationLimit\else + #3% all affil numbers +\ifx\@affilID@temp\empty +\else% +\setbox0=\hbox{\expandafter\lookfornumbers\@affilID@temp{}{}{}{}{}{}{}{}{}}% +\fi\fi +%% #2= \altaffiliation{} or \email{} or +%% possibly anything other than author, affiliation, or collaboration + \@if@empty{#2}{\endgroup{}{}} +{\ifnum\countauthors>\AuthorCollaborationLimit\endgroup{}{}%% <<< bug fix, added \endgroup{}{} +\else +\endgroup{\comma@space}{}\frontmatter@footnote{#2}\fi}% +\fi%% end test of empty +%%%%%%%%%%%%%%%%%%%%%%%% +%%% Collaboration name is always used if available: +\expandafter\ifx\csname currCollabName\the\totalentries\endcsname\relax\else +%%% +%% No et al in allauthors, because all authors are listed! +%% +\expandafter\ifx\csname currCollabName\the\totalentries\endcsname\empty +\else +\vskip6pt +\expandafter\csname currCollabName\the\totalentries\endcsname\vskip6pt +\fi +\global\countauthors=0 +%%% +%%% +\global\advance\docollabnum by 1 +%% Set up counters for next time through this loop: +{\advance\docollabnum by1 + \expandafter\ifx\csname specificCollabLimit\the\docollabnum\endcsname\relax + \else + \global\AuthorCollaborationLimit=\csname specificCollabLimit\the\docollabnum\endcsname + \fi +% +\expandafter\ifx\csname CollabTotalAuthors\the\docollabnum\endcsname\relax +\else +\global\tempauthornumber=\csname CollabTotalAuthors\the\docollabnum\endcsname +\fi} +\fi %% ends test to see if it is time to use collaboration name +\fi %% ends ifanonymous +}% + +%%% +%% set \affil to match \affiliation found in revtex, since authors are accustomed to using \affil{} +\let\affil\affiliation + +\newif\iffirstaffil +\firstaffiltrue + +\newcount\affilnum +%% +\def\@affil@script#1#2#3#4{% +\ifsuppressAffiliations\else +\iffirstaffil +% Oct 2017 +\vskip2pt +\global\firstaffilfalse\fi + \@ifnum{#1=\z@}{}{% + \par + \begingroup + \frontmatter@affiliationfont + \@ifnum{\c@affil<\affil@cutoff}{}{% +\def\one{#1} +%% +%% +\ifnum\one<\largestAffilNum +%% this makes the numbers + \def\@thefnmark{#1}\@makefnmark\fi +\ifnum\one=\largestAffilNum + \def\@thefnmark{#1}\@makefnmark\fi + }% +\ifnum\one<\largestAffilNum + \ignorespaces#3% +\fi +\ifnum\one=\largestAffilNum + \ignorespaces#3% +\fi + \@if@empty{#4}{}{\frontmatter@footnote{#4}}% + \par + \endgroup + }% +\fi}% + +\newif\ifnobreakafterkeywords +\def\NoNewPageAfterKeywords{\global\nobreakafterkeywordstrue} +\NoNewPageAfterKeywords +\def\NewPageAfterKeywords{\global\nobreakafterkeywordsfalse} + +%%% +\def\frontmatter@maketitle{% + \ifnumlines\linenumbers\fi + \onecolumngrid +\@author@finish +\ifthenelse{\equal{\@cofirstauthor}{yes}}{\cofirstauthor}{}% +% +\if@firstsection% not appendix, in other words + \title@column\titleblock@produce +\else +% +\global\firstaffiltrue + \title@column\secondtitleblock@produce +\fi + \suppressfloats[t]% + \let\affiliation\@gobble + \let\author\@gobble +\if@firstsection +\let\abstract\@undefined\let\endabstract\@undefined +\titlepage@sw{% +\ifnobreakafterkeywords +\else +\vfil +\clearpage +\fi + }{}% +\fi +\ifresetfootnote + \setcounter{footnote}{0}% +\else + \setcounter{footnote}{\the\c@affil}% +\fi +\immediate\write\@mainaux{\string\authorcnt{\the\allauthorcnt}} +}% + + +\let\maketitle\frontmatter@maketitle + +\def\secondtitleblock@produce{% + \begingroup + \ltx@footnote@pop + \def\@mpfn{footnote}% + \def\thempfn{\thefootnote}% + \c@footnote\z@ + \let\@makefnmark\frontmatter@makefnmark +% \frontmatter@setup + \thispagestyle{titlepage}%\label{FirstPage}% +% \frontmatter@title@produce + \groupauthors@sw{% + \frontmatter@author@produce@group + }{% + \frontmatter@author@produce@script + }% + \endgroup +}% + +%% no club or widow lines +\widowpenalty=10000 +\clubpenalty\widowpenalty +\setlength{\footnotesep}{8pt} + +\ifmodern +\setlength{\voffset}{0in} +\setlength{\hoffset}{0in} +\setlength{\textwidth}{6in} +\setlength{\textheight}{9.2in} +\setlength{\headheight}{0ex} +\setlength{\headsep}{36pt} % this is 2 lines in ``manuscript'' +\setlength{\footnotesep}{0in} +\setlength{\topmargin}{-\headsep} +\setlength{\oddsidemargin}{0.25in} +\setlength{\evensidemargin}{0.25in} +\setlength{\parindent}{0.54\baselineskip} +\sloppy\sloppypar +\fi + + +\def\tempfootmark#1{} + +\newcount\c@affilcount +\newcommand*\altaffiliation[2][]{% +\@AF@join{\ifanonymous\else +#1#2\ifmodern\baselineskip=14pt\fi +\if@two@col\hsize=.5\textwidth +\advance\hsize by -18pt +\fi\fi}% +}% + +\newif\ifcorrespauthor +\newif\if@correspauthor +\let\@correspondingauthor\empty + +\def\correspondingauthor#1{{\ifanonymous% + \else\global\@correspauthortrue\global\correspauthortrue% +\renewcommand\thefootnote{}% +\gdef\@correspondingauthor{#1}% +\footnotetext{\hskip-11ptCorresponding author: #1\ifmodern\vrule depth 5pt width 0pt\relax\fi}% +\fi}% +} + +\def\cofirstauthor{{\ifanonymous +\else\global\correspauthortrue% +\renewcommand\thefootnote{} +\@ifnum{\cofirstauthorcnt=\@ne}{ +%\footnotetext{This author share co-first authorship \ifmodern\vrule depth 5pt width 0pt\relax\fi} +}{\@ifnum{\cofirstauthorcnt>\@ne}{%\footnotetext{There are multiple co-first authors for this work\ifmodern\vrule depth 5pt width 0pt\relax\fi} +}{}} +\fi}} + + +\let\@@email\empty +\def\email{\@ifnextchar[\@email{\@email[]}} + + + +\def\@email[#1]#2{\ifanonymous +\else\ifcorrespauthor% +{\onecolumngrid\renewcommand\thefootnote{}\addtocounter{footnote}{-1}% +\footnote{\hskip-11pt\href{mailto: #2}{#2}\ifmodern\vrule depth 7pt width 0pt\relax\else\vrule depth 7pt width0pt\fi}} +\else% +\expandafter\gdef\csname email@\romannumeral\the\allauthorcnt\endcsname{}% +\ifthenelse{\equal{#1}{show}}{% +\protected@xdef\@@email{\ifx\@@email\empty#2\else\@@email, #2\fi}}{}% +\fi\fi\global\correspauthorfalse} + +\def\nocollaboration#1{% +\collaboration{#1}{\vbox to 0pt{\vss\centerline{---}\vskip2pt}} +} + +\def\xcollaboration#1#2{ +\global\advance\allentries by 1 +\expandafter\def\csname +currCollabLimit\the\allentries\endcsname{#1} +\@author@def{\@booleantrue +\collaboration@sw}{#2} +} + +\let\savelistand\@listand +\newcount\numauthors +\newcount\collabnum +\newbox\collabnamebox + +\edef\chk@all{all} +\edef\chk@All{All} + + +\newif\ifcollaborationon +\def\collaboration#1#2{\global\collaborationontrue +\global\advance\collabnum by 1 +\expandafter\xdef\csname CollabTotalAuthors\the\collabnum\endcsname{\the\entriesinthiscollab} +\edef\@temp{#1}% +\@ifx{\@temp\chk@All}{\typeout{=================^^J^^J!!! In \string\collaboration\space {All} should be in lower case {all}. + !^^J^^J + Thank-you!^^J^^J=================}\stop}{} + \@ifx{\@temp\chk@all}{ + \expandafter\xdef\csname currCollabLimit0\endcsname{\csname CollabTotalAuthors\the\collabnum\endcsname} + }{ + \expandafter\ifnum\@temp>\csname CollabTotalAuthors\the\collabnum\endcsname + \expandafter\xdef\csname currCollabLimit0\endcsname{\csname CollabTotalAuthors\the\collabnum\endcsname} + \else + \expandafter\xdef\csname currCollabLimit0\endcsname{#1} + \fi +} +\@ifx{\@temp\chk@all}{ + \expandafter\xdef\csname specificCollabLimit\the\collabnum\endcsname{\csname CollabTotalAuthors\the\collabnum\endcsname} + }{ + \expandafter\ifnum\@temp>\csname CollabTotalAuthors\the\collabnum\endcsname + \expandafter\xdef\csname specificCollabLimit\the\collabnum\endcsname{\csname CollabTotalAuthors\the\collabnum\endcsname} + \else + \expandafter\xdef\csname specificCollabLimit\the\collabnum\endcsname{#1} + \fi + } +\global\entriesinthiscollab=0 +%%Calculating the Last group of authors +\advance\expandafter\restauentries-\csname specificCollabLimit\the\collabnum\endcsname +% +\global\advance\allentries by 1 +%% +%% we should have only one of these with this number; this used to say when +%% use specificCollabLimit: +\@ifx{\@temp\chk@all}{ + \expandafter\xdef\csname currCollabLimit\the\allentries\endcsname{\csname CollabTotalAuthors\the\collabnum\endcsname} +}{ + \expandafter\ifnum\@temp>\csname CollabTotalAuthors\the\collabnum\endcsname + \expandafter\xdef\csname currCollabLimit\the\allentries\endcsname{\csname CollabTotalAuthors\the\collabnum\endcsname} + \else + \expandafter\xdef\csname currCollabLimit\the\allentries\endcsname{#1} + \fi +} +%% we should have only one of these with this number +\expandafter\gdef\csname currCollabName\the\allentries\endcsname{%\ifnum#1>0 +#2} +%% +\let\doEtAl\relax +%% not here +\@author@def{\@booleanfalse +\collaboration@sw}{}} + + +\def\and{ +\centerline{\vbox {\vrule height 12pt width0pt and\vskip2pt}} +} + + +\let\auto@bib\relax + +\newif\iffirstaffil +\firstaffiltrue +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%% These commands were in aastex earlier; I redefined. +\def\tighten{\global\tightentrue\normalsize} +\let\tightenlines=\tighten +\def\singlespace{\par\global\doublespacefalse\global\tightenfalse\normalsize} +\def\doublespace{\par\global\doublespacetrue\global\tightenfalse\normalsize} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%%%% October 2017 + +\newbox\widetext@top +\newbox\widetext@bot + +\newenvironment{widetext}{% +\if@two@col + \par\ignorespaces + \setbox\widetext@top\vbox{% + \hb@xt@\hsize{% + \leaders\hrule\hfil + \vrule\@height6\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@ + \vskip6\p@ + \prep@math@patch +\fi}{% +\if@two@col + \par + \vskip6\p@ + \setbox\widetext@bot\vbox{% + \hb@xt@\hsize{\hfil\box\widetext@bot}% + }% + \dimen@\ht\widetext@bot\advance\dimen@\dp\widetext@bot + \cleaders\box\widetext@bot\vskip\dimen@ + \vskip8.5\p@ + \twocolumngrid\global\@ignoretrue + \@endpetrue +\fi}% + + +\urlstyle{rm} + +\def\doi#1{\href{https://doi.org/#1}{https://doi.org/#1}} +\let\savedoi\doi + +\def\mdash{---} + +\newif\ifcenterwidetable +%% these two definitions are the same, but it might +%% be convenient to have both +\def\centerwidetable{\global\centerwidetabletrue} + + +%% this doesn't seem to be documented, assume we don't need it: +%\def\centernarrowtable{\global\centerwidetablefalse} + +%% default, center within width of text on both sides + \def\LT@LR@c{\LTleft=0pt plus1fill + \LTright\LTleft}% + +\def\widetable{\def\LT@LR@c{\LTleft=0pt minus1fill + \let\LTright\LTleft}} + +\newif\ifreturntotwocol + + +%%%%%%%%% +%% to help with graceful linebreaks in two column text: + \tolerance 9999% +%% sloppy defines emergencystretch to be 3 em, this is a bit +%% more conservative: + \emergencystretch 1em + \hfuzz .5\p@ + +%%%%%%%%% +%% Nominal Conversion Constants + +%% \boldmath inside the \hbox ?? +\def\nomSolarEffTemp{\leavevmode\hbox{\boldmath$\mathcal{T}^{\rm N}_{\mathrm{eff}\odot}$}} +\def\nomTerrEqRadius{\leavevmode\hbox{\boldmath$\mathcal{R}^{\rm N}_{E\mathrm e}$}} +\def\nomTerrPolarRadius{\leavevmode\hbox{\boldmath$\mathcal{R}^{\rm N}_{E\mathrm p}$}} +\def\nomJovianEqRadius{\leavevmode\hbox{\boldmath$\mathcal{R}^{\rm +N}_{J\mathrm e}$}} + \def\nomJovianPolarRadius{\leavevmode\hbox{\boldmath$\mathcal{R}^{\rm + N}_{J\mathrm p}$}} + \def\nomTerrMass{\leavevmode\hbox{\boldmath$(\mathcal{GM})^{\rm N}_{\mathrm E}$}} + \def\nomJovianMass{\leavevmode\hbox{\boldmath$(\mathcal{GM})^{\rm N}_{\mathrm J}$}} + \def\Qnom{\leavevmode\hbox{\boldmath$\mathcal{Q}^{\rm N}_{\odot}$}} +\let\Qn\Qnom + +%% Generic commands that can be given an argument: +\def\nom#1{\leavevmode\hbox{\boldmath$\mathcal{#1}^{\rm N}_{\odot}$}} +\def\Eenom#1{\leavevmode\hbox{\boldmath$\mathcal{#1}^{\rm N}_{Ee}$}} +\def\Epnom#1{\leavevmode\hbox{\boldmath$\mathcal{#1}^{\rm N}_{Ep}$}} +\def\Jenom#1{\leavevmode\hbox{\boldmath$\mathcal{#1}^{\rm N}_{Je}$}} +\def\Jpnom#1{\leavevmode\hbox{\boldmath$\mathcal{#1}^{\rm N}_{Jp}$}} + +%%%%%%%%%%%%%%%% +%% Ability to have tables, equations, figures in appendix start from 1, and use appendix section letter. + +\newif\ifappletter +\def\apptablenumbers{\global\applettertrue +\setcounter{table}{0} +\setcounter{figure}{0} +\setcounter{equation}{0} +\def\thetable{\thesection\the\c@table}% +\def\fnum@table{{\bf\tablename~\thetable}}% +\def\theHtable {\thesection\arabic{table}}% +\def\thefigure{\thesection\the\c@figure}% +\def\fnum@figure{{\bf\figurename~\thefigure}}% +\def\theHfigure {\thesection\arabic{figure}}% +}% + +%%% easier to remember than \apptablenumbers +\let\restartappendixnumbering\apptablenumbers + +\def\resetapptablenumbers{\global\c@table=0 +\global\c@figure=0 +\global\c@equation=0 +\def\thetable{\thesection\the\c@table} +\def\fnum@table{{\bf\tablename~\thetable}}% +\def\thefigure{\thesection\the\c@figure} +\def\fnum@figure{{\bf\figurename~\thefigure}}% +} + +%% written for aastex63 +\newif\ifallauthors +\def\allauthors{ +\global\allauthorstrue +\let\doauthor\doAllauthors +\ifanonymous +\vskip6pt\vskip1sp\centerline{\large\bf All Authors and +Affiliations\vrule depth 18pt width0pt}\nobreak +\centerline{Anonymous author(s)} +\else +\ifnumlines\nolinenumbers\fi +\onecolumngrid +\clearpage +{\vskip6pt\vskip1sp\centerline{\large\bf All Authors and +Affiliations\vrule depth 18pt width0pt}\nobreak +\global\docollabnum=0 +\global\totalentries=0 +\global\countauthors=0 +\maketitle +}\fi} + +\def\oldallauthors{%% this conditional keeps \allauthors from turning on +%% unless \AuthorCollaborationLimit is used: +\ifnumlines\nolinenumbers\fi +\onecolumngrid +\clearpage +\AuthorCollaborationLimit=10000 +%\largestAffilNum=10000 <<== not needed +{\vskip6pt\vskip1sp\centerline{\large\bf All Authors and +Affiliations\vrule depth 18pt width0pt}\nobreak +\maketitle +}} +\let\AllAuthors\allauthors + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% Highlight Figure +\definecolor{ltblue}{cmyk}{.5,.1,.1,0} +\newdimen\currwidth +\long\def\highlightfigure#1{ +\bgroup +\fboxrule=4pt +\fboxsep=12pt +\vskip6pt +\global\currwidth=\hsize +\global\advance\currwidth by -32pt +\noindent\hbox to\currwidth{\fcolorbox{ltblue}{white}{% +$\vcenter{\hbox to\currwidth{\hss#1\hss}}$}} +\egroup} + +\long\def\highlighcaption#1{ +\bgroup +\fboxrule=4pt +\fboxsep=2pt +\vskip4pt +\global\currwidth=\hsize +%\global\advance\currwidth by -32pt +\noindent\hbox to\currwidth{\fcolorbox{ltblue}{white}{% +$\vcenter{\hbox to\currwidth{\hss#1\hss}}$}} +\egroup} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +%% New interactive command: +%% online only tabular data +\newif\ifdigitasset +\def\digitalasset{\digitassettrue} +\def\digitasset{\@latex@error{^^J^^J Please use \string\digitalasset\string{\string}\space command instead of \string\digitasset\string{\string}\space +^^J^^J +}\@ehc\stop} + +\def\xlc{lc} +\def\xjs{js} +\def\xanimation{animation} +\newbox\interactbox +\newif\ifcorrectentries + + +\def\interactive#1#2{ +\global\correctentriesfalse\def\checkone{#1} +\ifx\checkone\xlc\correctentriestrue\fi +\ifx\checkone\xjs\correctentriestrue\fi +\ifx\checkone\xanimation \correctentriestrue\fi +\def\checktwo{#2} +\ifx\checktwo\empty\global\correctentriesfalse\fi +\ifcorrectentries\global\digitassettrue +\else\hrule height1pt\vskip12pt\bf ERROR: +The command +{\tt\string\begin\string{interactive\string}\string{\string}\string{\string}} +needs two arguments. The +first describes the interactive type and the only allowed choices are +lc, js, or animation.\\ +The second argument is the movie file or package +containing the interactive figure components. See\\ +\url{https://journals.aas.org/aastexguide/\hashmark interactivefig} for more +details. +\vskip12pt\hrule height1pt +\fi \global\currwidth\hsize +\global\advance\currwidth by -32pt +%% we need to set \currwidth here because interactbox expands +%% before highlightfigure +\global\setbox\interactbox=\vbox\bgroup\hsize=\currwidth\relax\centering +} + +\def\endinteractive{\egroup +\ifcorrectentries\copy\interactbox\fi +} + +%%%% For cases in which footnotes are called in full width environment +%% but are used in two cols. This keeps them from overwriting the +%% second column: + +\let\savefootnote\footnote +\def\onecolfootnote#1{\savefootnote{\hsize=.5\textwidth\advance\hsize +by-18pt\relax#1}} + +\def\onecolumnfootnotes{\let\footnote\onecolfootnote} + +\newdimen\movetableright + +%% for anonymous option +\newif\ifsuppressAffiliations +\def\suppressAffiliations{\global\suppressAffiliationstrue} + +%% new definition to be used in trackchanges: +\def\sout#1{\raise5pt\hbox{\underline{\vbox to +0pt{\vskip-4pt\hbox{#1\vrule height 8.5pt depth 3.5pt width0pt}\vss}}}} + +%% changes for affiliations when anonymous option is used: +\ifanonymous + \suppressAffiliationstrue + \gdef\affiliation#1{}%% + \def\xauthor[#1]#2{} + \let\yauthor\@gobble + \def\lookforbracket{\ifx\next[ + \let\go\xauthor\else\let\go\yauthor\fi\go} + \def\author{\futurelet\next\lookforbracket} +\fi + + +%%%%%%%%%%%%% +%% Line numbering + +\usepackage[mathlines,left]{lineno} +%% +\advance\linenumbersep 0pt +\ifnumlines + \linenumbers*[1] +\else + \def\thelinenumber{} +\fi + +%% Use when line numbers are on, and after \usepackage{amsmath}. +%% Will make line numbering work on math as it would without amsmath. +\def\fixmathlinenumbering{ +\let\saveopensqbracket\[ +\def\[{\saveopensqbracket\linenomath} +\let\saveequation\equation +\let\saveendequation\endequation +%% + \let\savealign\align + \let\saveendalign\endalign +%% + \let\savealigned\aligned + \let\saveendaligned\endaligned +%% +\def\align{\linenomath\savealign} + \def\endalign{\saveendalign} + \def\aligned{\linenomath\savealigned} + \def\endaligned{\linenomath\saveendaligned} +%% +\def\equation{\linenomath\saveequation} +\def\endequation{\linenomath\saveendequation} +} + +\AtBeginDocument{\expandafter\ifx\csname @amsmath@err\endcsname\relax\else\fixmathlinenumbering\fi} + +\hbadness\@M + +\newcommand{\uat}[2]{\@ifx{!#2!}{#1}{\href{http://astrothesaurus.org/uat/#2}{#1 (#2)}}} + +\def\altcaption#1{} + + +\endinput + +%% End of aastex7.cls + diff --git a/aastex/orcid-ID.png b/aastex/orcid-ID.png new file mode 100644 index 0000000..996817c Binary files /dev/null and b/aastex/orcid-ID.png differ diff --git a/docs/index.rst b/docs/index.rst index d79c182..e8cec11 100644 --- a/docs/index.rst +++ b/docs/index.rst @@ -54,7 +54,12 @@ Here is a simple example showing some of the basic features of :mod:`aastex`. 'Montana State University, Department of Physics, ' 'P.O. Box 173840, Bozeman, MT 59717, USA' ) - author = aastex.Author('Roy T. Smart', msu) + author = aastex.Author( + name='Roy T. Smart', + affiliation=msu, + email="roytsmart@gmail.com", + corresponding=True, + ) doc.append(author) # Define an acronym to be used in the body of the document