Skip to main content
All modules

TemplateJournalsmathcsstatistics

Oxford University Press Journals (oup-authoring-template)

OUP journal manuscript on the general Oxford class, used by IMRN, Quarterly J. of Math., J. of the LMS, Biometrika, JRSS and other Oxford journals. Pick the layout pair your journal lists.

LPPL 1.3

Loading PDF preview…

What’s inside

  • Starter files
  • main.tex5.2 KB
    %% Oxford University Press journal article (oup-authoring-template).
    %% Layout options: modern | traditional | contemporary, with large | medium | small.
    %% Check the target journal's author page for which pair it uses.
    \documentclass[unnumsec,webpdf,contemporary,large,numbered]{oup-authoring-template}
    
    \usepackage{booktabs}
    \usepackage{tikz}
    \usepackage{algorithm}
    \usepackage{algpseudocode}
    
    % The class prints a society logo on the first page; leave empty unless the journal supplies one.
    \newcommand{\societylogo}{}
    
    \theoremstyle{thmstyleone}
    \newtheorem{theorem}{Theorem}
    \newtheorem{lemma}[theorem]{Lemma}
    \newtheorem{proposition}[theorem]{Proposition}
    \theoremstyle{thmstyletwo}
    \newtheorem{example}{Example}
    \newtheorem{remark}{Remark}
    \theoremstyle{thmstylethree}
    \newtheorem{definition}{Definition}
    
    \begin{document}
    
    \journaltitle{Journal Title Here}
    \DOI{DOI added during production}
    \copyrightyear{YEAR}
    \pubyear{YEAR}
    \vol{XX}
    \issue{x}
    \access{Published: Date added during production}
    \appnotes{Paper}
    \firstpage{1}
    
    \title[Short running title]{A Streaming Algorithm for Frequency Moments with Sublinear Memory}
    
    \author[1,$\ast$]{First Author\ORCID{0000-0000-0000-0000}}
    \author[2]{Second Author}
    
    \address[1]{\orgdiv{Department of Computer Science}, \orgname{University Name}, \orgaddress{\street{Street}, \postcode{Postcode}, \state{State}, \country{Country}}}
    \address[2]{\orgdiv{Department of Mathematics}, \orgname{Institute Name}, \orgaddress{\street{Street}, \postcode{Postcode}, \country{Country}}}
    
    \corresp[$\ast$]{Corresponding author. \href{mailto:first@university.edu}{first@university.edu}}
    
    \received{Date}{0}{Year}
    \revised{Date}{0}{Year}
    \accepted{Date}{0}{Year}
    
    \abstract{We present a one-pass streaming algorithm that estimates the second
    frequency moment of a data stream to within a factor of $1 \pm \varepsilon$
    using $O(\varepsilon^{-2} \log n)$ bits of memory, and we prove a matching
    lower bound for a natural class of linear sketches.}
    \keywords{streaming algorithms, frequency moments, sketching, lower bounds}
    
    \maketitle
    
    \section{Introduction}\label{sec:intro}
    
    Estimating frequency moments of a stream is the problem that launched the
    study of streaming algorithms \citep{alon1999space}; the textbook treatment
    is \citet{muthukrishnan2005data}. We revisit the second moment and give a
    self-contained analysis of the classical sketch.
    
    \section{Preliminaries}\label{sec:prelim}
    
    \begin{definition}
    A stream is a sequence $a_1, \dots, a_m \in [n]$. Its frequency vector
    $f \in \mathbb{Z}^n$ counts occurrences, and the $k$-th frequency moment is
    $F_k = \sum_{i=1}^n f_i^k$.
    \end{definition}
    
    \begin{lemma}\label{lem:variance}
    Let $s \in \{-1, +1\}^n$ be $4$-wise independent and $Z = \langle s, f \rangle$.
    Then $\mathbb{E}[Z^2] = F_2$ and $\operatorname{Var}[Z^2] \le 2 F_2^2$.
    \end{lemma}
    
    \section{Algorithm}\label{sec:alg}
    
    \begin{algorithm}[!t]
    \caption{Second-moment sketch}\label{alg:sketch}
    \begin{algorithmic}[1]
    \Require stream $a_1, \dots, a_m$, accuracy $\varepsilon$
    \State draw $r = \lceil 8 / \varepsilon^2 \rceil$ independent $4$-wise hash functions $s_j \colon [n] \to \{-1,+1\}$
    \State $Z_j \gets 0$ for $j = 1, \dots, r$
    \For{each item $a_t$}
      \State $Z_j \gets Z_j + s_j(a_t)$ for every $j$
    \EndFor
    \State \Return median of $r$ block means of $Z_j^2$
    \end{algorithmic}
    \end{algorithm}
    
    \begin{theorem}\label{thm:main}
    Algorithm~\ref{alg:sketch} outputs $\hat F_2$ with
    $(1-\varepsilon) F_2 \le \hat F_2 \le (1+\varepsilon) F_2$ with probability
    at least $2/3$, using $O(\varepsilon^{-2} \log n)$ bits.
    \end{theorem}
    
    \begin{proof}
    By Lemma~\ref{lem:variance} and Chebyshev's inequality, a block mean of
    $8/\varepsilon^2$ estimators is within $\varepsilon F_2$ with probability
    at least $3/4$; the median trick boosts this to $2/3$ with $O(1)$ blocks.
    Each counter needs $O(\log(mn))$ bits.
    \end{proof}
    
    \section{Experiments}\label{sec:exp}
    
    Figure~\ref{fig:error} plots relative error against memory, and
    Table~\ref{tab:results} lists the numbers.
    
    \begin{figure}[!t]
    \centering
    \begin{tikzpicture}[x=1.2cm,y=1.2cm]
      \draw[->] (0,0) -- (4.5,0) node[right] {\small counters};
      \draw[->] (0,0) -- (0,3) node[above] {\small rel.\ error};
      \draw[thick] plot[smooth] coordinates {(0.4,2.6) (1.2,1.5) (2.2,0.9) (3.4,0.55) (4.2,0.45)};
      \foreach \x/\y in {0.4/2.6,1.2/1.5,2.2/0.9,3.4/0.55,4.2/0.45} \fill (\x,\y) circle (1.4pt);
    \end{tikzpicture}
    \caption{Relative error of the sketch against the number of counters.}
    \label{fig:error}
    \end{figure}
    
    \begin{table}[!t]
    \caption{Median relative error over 50 runs on a Zipf stream.}
    \label{tab:results}
    \begin{tabular*}{\columnwidth}{@{\extracolsep{\fill}}lccc@{}}
    \toprule
    Counters & 64 & 256 & 1024 \\
    \midrule
    Relative error & 0.18 & 0.09 & 0.04 \\
    Memory (KB) & 0.5 & 2.0 & 8.0 \\
    \bottomrule
    \end{tabular*}
    \end{table}
    
    \section{Conclusion}\label{sec:conc}
    
    The same argument extends to $F_k$ for $k > 2$ with polynomially larger
    sketches; closing the gap to the known lower bounds remains open.
    
    \section{Competing interests}
    No competing interest is declared.
    
    \section{Author contributions statement}
    F.A. and S.A. conceived the study, proved the results and wrote the paper.
    
    \section{Acknowledgments}
    The authors thank the anonymous reviewers.
    
    \bibliographystyle{oup-abbrvnat}
    \bibliography{references}
    
    \end{document}
    
  • Libraries and docs
  • oup-abbrvnat.bst26 KBVendored from mirrors.ctan.org on 2026-08-19.
    %% File: `oup-abbrvnat.bst'
    %% A modification of `abbrv.bst' for use with natbib package 
    %%
    %% Copyright 1993-2007 Patrick W Daly
    %% Max-Planck-Institut f\"ur Sonnensystemforschung
    %% Max-Planck-Str. 2
    %% D-37191 Katlenburg-Lindau
    %% Germany
    %% E-mail: daly@mps.mpg.de
    %%
    %% This program can be redistributed and/or modified under the terms
    %% of the LaTeX Project Public License Distributed from CTAN
    %% archives in directory macros/latex/base/lppl.txt; either
    %% version 1 of the License, or any later version.
    %%
     % Version and source file information:
     % \ProvidesFile{natbst.mbs}[2007/11/26 1.93 (PWD)]
     %
     % BibTeX `plainnat' family
     %   version 0.99b for BibTeX versions 0.99a or later,
     %   for LaTeX versions 2.09 and 2e.
     %
     % For use with the `natbib.sty' package; emulates the corresponding
     %   member of the `plain' family, but with author-year citations.
     %
     % With version 6.0 of `natbib.sty', it may also be used for numerical
     %   citations, while retaining the commands \citeauthor, \citefullauthor,
     %   and \citeyear to print the corresponding information.
     %
     % For version 7.0 of `natbib.sty', the KEY field replaces missing
     %   authors/editors, and the date is left blank in \bibitem.
     %
     % Includes field EID for the sequence/citation number of electronic journals
     %  which is used instead of page numbers.
     %
     % Includes fields ISBN and ISSN.
     %
     % Includes field URL for Internet addresses.
     %
     % Includes field DOI for Digital Object Idenfifiers.
     %
     % Works best with the url.sty package of Donald Arseneau.
     %
     % Works with identical authors and year are further sorted by
     %   citation key, to preserve any natural sequence.
     %
    ENTRY
      { address
        author
        booktitle
        chapter
        doi
        eid
        edition
        editor
        howpublished
        institution
        isbn
        issn
        journal
        key
        month
        note
        number
        organization
        pages
        publisher
        school
        series
        title
        type
        url
        volume
        year
      }
      {}
      { 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}
    { add.period$
      write$
      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 {not}
    {   { #0 }
        { #1 }
      if$
    }
    
    FUNCTION {and}
    {   'skip$
        { pop$ #0 }
      if$
    }
    
    FUNCTION {or}
    {   { pop$ #1 }
        'skip$
      if$
    }
    
    FUNCTION {new.block.checka}
    { empty$
        'skip$
        'new.block
      if$
    }
    
    FUNCTION {new.block.checkb}
    { empty$
      swap$ empty$
      and
        'skip$
        'new.block
      if$
    }
    
    FUNCTION {new.sentence.checka}
    { empty$
        'skip$
        'new.sentence
      if$
    }
    
    FUNCTION {new.sentence.checkb}
    { empty$
      swap$ empty$
      and
        'skip$
        'new.sentence
      if$
    }
    
    FUNCTION {field.or.null}
    { duplicate$ empty$
        { pop$ "" }
        'skip$
      if$
    }
    
    FUNCTION {emphasize}
    { duplicate$ empty$
        { pop$ "" }
        { "\emph{" swap$ * "}" * }
      if$
    }
    
    INTEGERS { nameptr namesleft numnames }
    
    FUNCTION {format.names}
    { '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$
                  t "others" =
                    { " et~al." * }
                    { " and " * 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 >
            { ", editors" * }
            { ", editor" * }
          if$
        }
      if$
    }
    
    FUNCTION {format.isbn}
    { isbn empty$
        { "" }
        { new.block "ISBN " isbn * }
      if$
    }
    
    FUNCTION {format.issn}
    { issn empty$
        { "" }
        { new.block "ISSN " issn * }
      if$
    }
    
    FUNCTION {format.url}
    { url empty$
        { "" }
        { new.block "URL \url{" url * "}" * }
      if$
    }
    
    FUNCTION {format.doi}
    { doi empty$
        { "" }
        { new.block "\doi{" doi * "}" * }
      if$
    }
    
    FUNCTION {format.title}
    { title empty$
        { "" }
        { title "t" change.case$ }
      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$
                  t "others" =
                    { " et~al." * }
                    { " and " * t * }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
    FUNCTION {author.editor.full}
    { author empty$
        { editor empty$
            { "" }
            { editor format.full.names }
          if$
        }
        { author format.full.names }
      if$
    }
    
    FUNCTION {author.full}
    { author empty$
        { "" }
        { author format.full.names }
      if$
    }
    
    FUNCTION {editor.full}
    { editor empty$
        { "" }
        { editor format.full.names }
      if$
    }
    
    FUNCTION {make.full.names}
    { type$ "book" =
      type$ "inbook" =
      or
        'author.editor.full
        { type$ "proceedings" =
            'editor.full
            'author.full
          if$
        }
      if$
    }
    
    FUNCTION {output.bibitem}
    { newline$
      "\bibitem[" write$
      label write$
      ")" make.full.names duplicate$ short.list =
         { pop$ }
         { * }
       if$
      "]{" * write$
      cite$ write$
      "}" write$
      newline$
      ""
      before.all 'output.state :=
    }
    
    FUNCTION {n.dashify}
    { 't :=
      ""
        { t empty$ not }
        { t #1 #1 substring$ "-" =
            { t #1 #2 substring$ "--" = not
                { "--" *
                  t #2 global.max$ substring$ 't :=
                }
                {   { t #1 #1 substring$ "-" = }
                    { "-" *
                      t #2 global.max$ substring$ 't :=
                    }
                  while$
                }
              if$
            }
            { t #1 #1 substring$ *
              t #2 global.max$ substring$ 't :=
            }
          if$
        }
      while$
    }
    
    FUNCTION {format.date}
    { year duplicate$ empty$
        { "empty year in " cite$ * warning$
           pop$ "" }
        'skip$
      if$
      month empty$
        'skip$
        { month
          " " * swap$ *
        }
      if$
      extra.label *
    }
    
    FUNCTION {format.btitle}
    { title emphasize
    }
    
    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$
        { "" }
        { "volume" volume tie.or.space.connect
          series empty$
            'skip$
            { " of " * 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 =
                { "number" }
                { "Number" }
              if$
              number tie.or.space.connect
              series empty$
                { "there's a number but no series in " cite$ * warning$ }
                { " in " * series * }
              if$
            }
          if$
        }
        { "" }
      if$
    }
    
    FUNCTION {format.edition}
    { edition empty$
        { "" }
        { output.state mid.sentence =
            { edition "l" change.case$ " edition" * }
            { edition "t" change.case$ " 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
            { "pages" pages n.dashify tie.or.space.connect }
            { "page" pages tie.or.space.connect }
          if$
        }
      if$
    }
    
    FUNCTION {format.eid}
    { eid empty$
        { "" }
        { "art." eid tie.or.space.connect }
      if$
    }
    
    FUNCTION {format.vol.num.pages}
    { volume field.or.null
      number empty$
        'skip$
        { "\penalty0 (" number * ")" * *
          volume empty$
            { "there's a number but no volume in " cite$ * warning$ }
            'skip$
          if$
        }
      if$
      pages empty$
        'skip$
        { duplicate$ empty$
            { pop$ format.pages }
            { ":\penalty0 " * pages n.dashify * }
          if$
        }
      if$
    }
    
    FUNCTION {format.vol.num.eid}
    { volume field.or.null
      number empty$
        'skip$
        { "\penalty0 (" number * ")" * *
          volume empty$
            { "there's a number but no volume in " cite$ * warning$ }
            'skip$
          if$
        }
      if$
      eid empty$
        'skip$
        { duplicate$ empty$
            { pop$ format.eid }
            { ":\penalty0 " * eid * }
          if$
        }
      if$
    }
    
    FUNCTION {format.chapter.pages}
    { chapter empty$
        'format.pages
        { type empty$
            { "chapter" }
            { type "l" change.case$ }
          if$
          chapter tie.or.space.connect
          pages empty$
            'skip$
            { ", " * format.pages * }
          if$
        }
      if$
    }
    
    FUNCTION {format.in.ed.booktitle}
    { booktitle empty$
        { "" }
        { editor empty$
            { "In " booktitle emphasize * }
            { "In " format.editors * ", " * booktitle emphasize * }
          if$
        }
      if$
    }
    
    FUNCTION {empty.misc.check}
    { author empty$ title empty$ howpublished empty$
      month empty$ year empty$ note empty$
      and and and and and
      key empty$ not and
        { "all relevant fields are empty in " cite$ * warning$ }
        'skip$
      if$
    }
    
    FUNCTION {format.thesis.type}
    { type empty$
        'skip$
        { pop$
          type "t" change.case$
        }
      if$
    }
    
    FUNCTION {format.tr.number}
    { type empty$
        { "Technical Report" }
        'type
      if$
      number empty$
        { "t" change.case$ }
        { number tie.or.space.connect }
      if$
    }
    
    FUNCTION {format.article.crossref}
    { key empty$
        { journal empty$
            { "need key or journal for " cite$ * " to crossref " * crossref *
              warning$
              ""
            }
            { "In \emph{" journal * "}" * }
          if$
        }
        { "In " }
      if$
      " \citet{" * crossref * "}" *
    }
    
    FUNCTION {format.book.crossref}
    { volume empty$
        { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
          "In "
        }
        { "Volume" volume tie.or.space.connect
          " of " *
        }
      if$
      editor empty$
      editor field.or.null author field.or.null =
      or
        { key empty$
            { series empty$
                { "need editor, key, or series for " cite$ * " to crossref " *
                  crossref * warning$
                  "" *
                }
                { "\emph{" * series * "}" * }
              if$
            }
            'skip$
          if$
        }
        'skip$
      if$
      " \citet{" * crossref * "}" *
    }
    
    FUNCTION {format.incoll.inproc.crossref}
    { editor empty$
      editor field.or.null author field.or.null =
      or
        { key empty$
            { booktitle empty$
                { "need editor, key, or booktitle for " cite$ * " to crossref " *
                  crossref * warning$
                  ""
                }
                { "In \emph{" booktitle * "}" * }
              if$
            }
            { "In " }
          if$
        }
        { "In " }
      if$
      " \citet{" * crossref * "}" *
    }
    
    FUNCTION {article}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      crossref missing$
        { journal emphasize "journal" output.check
          eid empty$
            { format.vol.num.pages output }
            { format.vol.num.eid output }
          if$
          format.date "year" output.check
        }
        { format.article.crossref output.nonnull
          eid empty$
            { format.pages output }
            { format.eid output }
          if$
        }
      if$
      format.issn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {book}
    { output.bibitem
      author empty$
        { format.editors "author and editor" output.check
          editor format.key output
        }
        { format.authors output.nonnull
          crossref missing$
            { "author and editor" editor either.or.check }
            'skip$
          if$
        }
      if$
      new.block
      format.btitle "title" output.check
      crossref missing$
        { format.bvolume output
          new.block
          format.number.series output
          new.sentence
          publisher "publisher" output.check
          address output
        }
        { new.block
          format.book.crossref output.nonnull
        }
      if$
      format.edition output
      format.date "year" output.check
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {booklet}
    { output.bibitem
      format.authors output
      author format.key output
      new.block
      format.title "title" output.check
      howpublished address new.block.checkb
      howpublished output
      address output
      format.date output
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {inbook}
    { output.bibitem
      author empty$
        { format.editors "author and editor" output.check
          editor format.key output
        }
        { format.authors output.nonnull
          crossref missing$
            { "author and editor" editor either.or.check }
            'skip$
          if$
        }
      if$
      new.block
      format.btitle "title" output.check
      crossref missing$
        { format.bvolume output
          format.chapter.pages "chapter and pages" output.check
          new.block
          format.number.series output
          new.sentence
          publisher "publisher" output.check
          address output
        }
        { format.chapter.pages "chapter and pages" output.check
          new.block
          format.book.crossref output.nonnull
        }
      if$
      format.edition output
      format.date "year" output.check
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {incollection}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      crossref missing$
        { format.in.ed.booktitle "booktitle" output.check
          format.bvolume output
          format.number.series output
          format.chapter.pages output
          new.sentence
          publisher "publisher" output.check
          address output
          format.edition output
          format.date "year" output.check
        }
        { format.incoll.inproc.crossref output.nonnull
          format.chapter.pages output
        }
      if$
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {inproceedings}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      crossref missing$
        { format.in.ed.booktitle "booktitle" output.check
          format.bvolume output
          format.number.series output
          format.pages output
          address empty$
            { organization publisher new.sentence.checkb
              organization output
              publisher output
              format.date "year" output.check
            }
            { address output.nonnull
              format.date "year" output.check
              new.sentence
              organization output
              publisher output
            }
          if$
        }
        { format.incoll.inproc.crossref output.nonnull
          format.pages output
        }
      if$
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {conference} { inproceedings }
    
    FUNCTION {manual}
    { output.bibitem
      format.authors output
      author format.key output
      new.block
      format.btitle "title" output.check
      organization address new.block.checkb
      organization output
      address output
      format.edition output
      format.date output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {mastersthesis}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      "Master's thesis" format.thesis.type output.nonnull
      school "school" output.check
      address output
      format.date "year" output.check
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {misc}
    { output.bibitem
      format.authors output
      author format.key output
      title howpublished new.block.checkb
      format.title output
      howpublished new.block.checka
      howpublished output
      format.date output
      format.issn output
      format.url output
      new.block
      note output
      fin.entry
      empty.misc.check
    }
    
    FUNCTION {phdthesis}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.btitle "title" output.check
      new.block
      "PhD thesis" format.thesis.type output.nonnull
      school "school" output.check
      address output
      format.date "year" output.check
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {proceedings}
    { output.bibitem
      format.editors output
      editor format.key output
      new.block
      format.btitle "title" output.check
      format.bvolume output
      format.number.series output
      address output
      format.date "year" output.check
      new.sentence
      organization output
      publisher output
      format.isbn output
      format.doi output
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {techreport}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      format.tr.number output.nonnull
      institution "institution" output.check
      address output
      format.date "year" output.check
      format.url output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {unpublished}
    { output.bibitem
      format.authors "author" output.check
      author format.key output
      new.block
      format.title "title" output.check
      new.block
      note "note" output.check
      format.date output
      format.url output
      fin.entry
    }
    
    FUNCTION {default.type} { misc }
    
    
    MACRO {jan} {"Jan."}
    
    MACRO {feb} {"Feb."}
    
    MACRO {mar} {"Mar."}
    
    MACRO {apr} {"Apr."}
    
    MACRO {may} {"May"}
    
    MACRO {jun} {"June"}
    
    MACRO {jul} {"July"}
    
    MACRO {aug} {"Aug."}
    
    MACRO {sep} {"Sept."}
    
    MACRO {oct} {"Oct."}
    
    MACRO {nov} {"Nov."}
    
    MACRO {dec} {"Dec."}
    
    
    
    MACRO {acmcs} {"ACM Comput. Surv."}
    
    MACRO {acta} {"Acta Inf."}
    
    MACRO {cacm} {"Commun. ACM"}
    
    MACRO {ibmjrd} {"IBM J. Res. Dev."}
    
    MACRO {ibmsj} {"IBM Syst.~J."}
    
    MACRO {ieeese} {"IEEE Trans. Softw. Eng."}
    
    MACRO {ieeetc} {"IEEE Trans. Comput."}
    
    MACRO {ieeetcad}
     {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}
    
    MACRO {ipl} {"Inf. Process. Lett."}
    
    MACRO {jacm} {"J.~ACM"}
    
    MACRO {jcss} {"J.~Comput. Syst. Sci."}
    
    MACRO {scp} {"Sci. Comput. Programming"}
    
    MACRO {sicomp} {"SIAM J. Comput."}
    
    MACRO {tocs} {"ACM Trans. Comput. Syst."}
    
    MACRO {tods} {"ACM Trans. Database Syst."}
    
    MACRO {tog} {"ACM Trans. Gr."}
    
    MACRO {toms} {"ACM Trans. Math. Softw."}
    
    MACRO {toois} {"ACM Trans. Office Inf. Syst."}
    
    MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}
    
    MACRO {tcs} {"Theoretical Comput. Sci."}
    
    
    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$
    }
    
    FUNCTION {format.lab.names}
    { 's :=
      s #1 "{vv~}{ll}" format.name$
      s num.names$ duplicate$
      #2 >
        { pop$ " et~al." * }
        { #2 <
            'skip$
            { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
                { " et~al." * }
                { " and " * s #2 "{vv~}{ll}" 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 {author.key.organization.label}
    { author empty$
        { key empty$
            { organization empty$
                { cite$ #1 #3 substring$ }
                { "The " #4 organization chop.word #3 text.prefix$ }
              if$
            }
            'key
          if$
        }
        { author format.lab.names }
      if$
    }
    
    FUNCTION {editor.key.organization.label}
    { editor empty$
        { key empty$
            { organization empty$
                { cite$ #1 #3 substring$ }
                { "The " #4 organization chop.word #3 text.prefix$ }
              if$
            }
            'key
          if$
        }
        { editor format.lab.names }
      if$
    }
    
    FUNCTION {calc.short.authors}
    { type$ "book" =
      type$ "inbook" =
      or
        'author.editor.key.label
        { type$ "proceedings" =
            'editor.key.organization.label
            { type$ "manual" =
                'author.key.organization.label
                'author.key.label
              if$
            }
          if$
        }
      if$
      'short.list :=
    }
    
    FUNCTION {calc.label}
    { calc.short.authors
      short.list
      "("
      *
      year duplicate$ empty$
      short.list key field.or.null = or
         { pop$ "" }
         'skip$
      if$
      *
      'label :=
    }
    
    FUNCTION {sort.format.names}
    { 's :=
      #1 'nameptr :=
      ""
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        {
          s nameptr "{vv{ } }{ll{ }}{  f{ }}{  jj{ }}" format.name$ 't :=
          nameptr #1 >
            {
              "   "  *
              namesleft #1 = t "others" = and
                { "zzzzz" * }
                { numnames #2 > nameptr #2 = and
                    { "zz" * year field.or.null * "   " * }
                    'skip$
                  if$
                  t sortify *
                }
              if$
            }
            { t sortify * }
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
    FUNCTION {sort.format.title}
    { 't :=
      "A " #2
        "An " #3
          "The " #4 t chop.word
        chop.word
      chop.word
      sortify
      #1 global.max$ substring$
    }
    
    FUNCTION {author.sort}
    { author empty$
        { key empty$
            { "to sort, need author or key in " cite$ * warning$
              ""
            }
            { key sortify }
          if$
        }
        { author sort.format.names }
      if$
    }
    
    FUNCTION {author.editor.sort}
    { author empty$
        { editor empty$
            { key empty$
                { "to sort, need author, editor, or key in " cite$ * warning$
                  ""
                }
                { key sortify }
              if$
            }
            { editor sort.format.names }
          if$
        }
        { author sort.format.names }
      if$
    }
    
    FUNCTION {author.organization.sort}
    { author empty$
        { organization empty$
            { key empty$
                { "to sort, need author, organization, or key in " cite$ * warning$
                  ""
                }
                { key sortify }
              if$
            }
            { "The " #4 organization chop.word sortify }
          if$
        }
        { author sort.format.names }
      if$
    }
    
    FUNCTION {editor.organization.sort}
    { editor empty$
        { organization empty$
            { key empty$
                { "to sort, need editor, organization, or key in " cite$ * warning$
                  ""
                }
                { key sortify }
              if$
            }
            { "The " #4 organization chop.word sortify }
          if$
        }
        { editor sort.format.names }
      if$
    }
    
    
    FUNCTION {presort}
    { calc.label
      label sortify
      "    "
      *
      type$ "book" =
      type$ "inbook" =
      or
        'author.editor.sort
        { type$ "proceedings" =
            'editor.organization.sort
            { type$ "manual" =
                'author.organization.sort
                'author.sort
              if$
            }
          if$
        }
      if$
      "    "
      *
      year field.or.null sortify
      *
      "    "
      *
      cite$
      *
      #1 entry.max$ substring$
      'sort.label :=
      sort.label *
      #1 entry.max$ substring$
      'sort.key$ :=
    }
    
    ITERATE {presort}
    
    SORT
    
    STRINGS { longest.label last.label next.extra }
    
    INTEGERS { longest.label.width last.extra.num number.label }
    
    FUNCTION {initialize.longest.label}
    { "" 'longest.label :=
      #0 int.to.chr$ 'last.label :=
      "" 'next.extra :=
      #0 'longest.label.width :=
      #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.longest.label}
    
    ITERATE {forward.pass}
    
    REVERSE {reverse.pass}
    
    FUNCTION {bib.sort.order}
    { sort.label  'sort.key$ :=
    }
    
    ITERATE {bib.sort.order}
    
    SORT
    
    FUNCTION {begin.bib}
    {   preamble$ empty$
        'skip$
        { preamble$ write$ newline$ }
      if$
      "\begin{thebibliography}{" number.label int.to.str$ * "}" *
      write$ newline$
      "\providecommand{\natexlab}[1]{#1}"
      write$ newline$
      "\providecommand{\url}[1]{\texttt{#1}}"
      write$ newline$
      "\expandafter\ifx\csname urlstyle\endcsname\relax"
      write$ newline$
      "  \providecommand{\doi}[1]{doi: #1}\else"
      write$ newline$
      "  \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
      write$ newline$
    }
    
    EXECUTE {begin.bib}
    
    EXECUTE {init.state.consts}
    
    ITERATE {call.type$}
    
    FUNCTION {end.bib}
    { newline$
      "\end{thebibliography}" write$ newline$
    }
    
    EXECUTE {end.bib}
    
  • oup-authoring-template.cls144 KBVendored from mirrors.ctan.org on 2026-08-19.
    %%
    %% Copyright 2026 Oxford University Press
    %%
    %% This file is part of the 'oup-authoring-template Bundle'.
    %% ---------------------------------------------
    %%
    %% It may be distributed 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.2 or later is part of all distributions of LaTeX
    %% version 1999/12/01 or later.
    %%
    %% The list of all files belonging to the 'oup-authoring-template Bundle' is
    %% given in the file `manifest.txt'.
    %%
    %% Template article for Oxford University Press's document class `oup-authoring-template'
    %% with bibliographic references
    %%
    %% Version 1.1, updated to reflect changes to OUP’s official page designs, 2022.
    %% Version 1.2, updated to reflect changes to OUP’s official page designs, 2025.
    %% Version 1.3, bug fix relating to mathcal / mathbb elements in section titles.
    %% Version 1.4, added support for author bios in front matter, removed superfluous 'numbered' declaration in \documentclass examples, commented out superfluous society logo instruction in class file.
    %% Version 1.5, bug fix relating to \societylogo instruction.
    
    \newcommand\classname{oup-authoring-template}
    \newcommand\lastmodifieddate{2026/07/14}
    \newcommand\versionnumber{1.5}
    
    \NeedsTeXFormat{LaTeX2e}[2001/06/01]
    \ProvidesClass{\classname}[\lastmodifieddate\space\versionnumber]
    
    % Are we printing crop marks?
    \newif\if@cropmarkson \@cropmarksontrue
    \newif\if@modern\global\@modernfalse
    \newif\if@traditional\global\@traditionalfalse
    \newif\if@contemporary\global\@contemporaryfalse
    %
    \newif\if@large\global\@largefalse
    \newif\if@medium\global\@mediumfalse
    \newif\if@mediumone\global\@mediumonefalse
    \newif\if@small\global\@smallfalse
    %
    \newif\if@numbib \@numbibtrue
    \newif\if@unnumsec\global\@unnumsecfalse
    \newif\if@final\global\@finalfalse
    \newif\if@weblink\global\@weblinkfalse
    \newif\if@proof\global\@prooffalse%
    \newif\if@otherarticle\global\@otherarticlefalse
    
    \if@compatibility\else
    \DeclareOption{namedate}{\PassOptionsToPackage{authoryear,round}{natbib}\global\@numbibfalse}
    \DeclareOption{numbered}{\PassOptionsToPackage{numbers,square}{natbib}\global\@numbibfalse}
    \DeclareOption{draft}{\PassOptionsToPackage{draft}{graphicx}}
    \DeclareOption{b4paper}{\PassOptionsToPackage{b4}{crop}}
    \DeclareOption{centre}{\PassOptionsToPackage{center}{crop}}
    \DeclareOption{crop}{\PassOptionsToPackage{cam}{crop}\global\@cropmarksontrue}
    \DeclareOption{nocrop}{\PassOptionsToPackage{off}{crop}\global\@cropmarksonfalse}
    \DeclareOption{info}{\PassOptionsToPackage{info}{crop}}
    \DeclareOption{noinfo}{\PassOptionsToPackage{noinfo}{crop}}
    \DeclareOption{final}{\global\@finaltrue}
    \DeclareOption{unnumsec}{\global\@unnumsectrue}
    \DeclareOption{otherarticle}{\global\@otherarticletrue}
    %
    \DeclareOption{webpdf}{\global\@weblinktrue}
    %
    \DeclareOption{modern}{\global\@moderntrue}
    \DeclareOption{traditional}{\global\@traditionaltrue}
    \DeclareOption{contemporary}{\global\@contemporarytrue}
    %
    \DeclareOption{large}{\global\@largetrue}
    \DeclareOption{medium}{\global\@mediumtrue}
    \DeclareOption{mediumone}{\global\@mediumtrue\global\@mediumonetrue}
    \DeclareOption{small}{\global\@smalltrue}
    \fi
    \ExecuteOptions{b4paper,centre,info}%
    \ProcessOptions
    
    \if@modern
      \if@large
        \setlength{\paperheight}{276truemm}
        \setlength{\paperwidth}{210truemm}
      \else
      \if@medium
        \setlength{\paperheight}{246truemm}
        \setlength{\paperwidth}{189truemm}
      \else
      \if@small
        \setlength{\paperheight}{234truemm}
        \setlength{\paperwidth}{156truemm}
      \else
        \setlength{\paperheight}{146truemm}
        \setlength{\paperwidth}{189truemm}
      \fi
      \fi
      \fi
    \else
    \if@traditional
        \if@large
        \setlength{\paperheight}{276truemm}
        \setlength{\paperwidth}{210truemm}
        \else
        \if@medium
            \setlength{\paperheight}{246truemm}
            \setlength{\paperwidth}{189truemm}
        \else
            \setlength{\paperheight}{234truemm}
            \setlength{\paperwidth}{156truemm}
        \fi
        \fi
    \else
    \if@contemporary
        \if@large
            \setlength{\paperheight}{276truemm}
            \setlength{\paperwidth}{210truemm}
        \else
        \if@medium
            \setlength{\paperheight}{246truemm}
            \setlength{\paperwidth}{189truemm}
        \else
        \if@small
            \setlength{\paperheight}{234truemm}
            \setlength{\paperwidth}{156truemm}
        \else
            \setlength{\paperheight}{246truemm}
            \setlength{\paperwidth}{189truemm}
        \fi
        \fi
        \fi
    \else
        \setlength{\paperheight}{278.83truemm}
        \setlength{\paperwidth}{215.78truemm}
    \fi\fi\fi
    
    % Load all necessary packages
    \RequirePackage{crop}
    \RequirePackage{graphicx}
    \RequirePackage{caption}
    \RequirePackage{amsmath}
    \RequirePackage{array}
    \RequirePackage{color}
    \RequirePackage{xcolor}
    \RequirePackage{amssymb}
    \RequirePackage{flushend}
    \RequirePackage{stfloats}
    \RequirePackage[figuresright]{rotating}
    \RequirePackage{chngpage}
    \RequirePackage{totcount}
    \RequirePackage{fix-cm}
    \RequirePackage[bottom]{footmisc}
    
    \def\sffamilyfont{\sffamily}
    \def\sffamilyfontitalic{\sffamily\itshape\selectfont}
    \def\sffamilyfontbold{\sffamily\bfseries\selectfont}
    \def\sffamilyfontbolditalic{\sffamily\bfseries\itshape\selectfont}
    \def\sffamilyfontcn{\sffamily\fontseries{m}\fontshape{n}\selectfont}
    \def\sffamilyfontcnitalic{\sffamily\fontseries{m}\fontshape{it}\selectfont}
    \def\sffamilyfontcnbold{\sffamily\bfseries\selectfont}
    \def\sffamilyfontcnbolditalic{\sffamily\fontseries{b}\fontshape{it}\selectfont}
    
    % Not sure if needed.
    \newcommand\@ptsize{0}
    
    % Set twoside printing
    \@twosidetrue
    
    % Marginal notes are on the outside edge
    \@mparswitchfalse
    
    \reversemarginpar
    
    \if@modern
      \if@large
        \renewcommand\normalsize{\sffamilyfont%
           \@setfontsize\normalsize{9bp}{11.5pt}%
           \abovedisplayskip 11\p@ \@plus2\p@ \@minus5\p@
           \abovedisplayshortskip \z@ \@plus3\p@
           \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
           \belowdisplayskip \abovedisplayskip
           \let\@listi\@listI}
      \else
      \if@medium
        \renewcommand\normalsize{\sffamilyfont%
           \@setfontsize\normalsize{9bp}{11.5pt}%
           \abovedisplayskip 11\p@ \@plus2\p@ \@minus5\p@
           \abovedisplayshortskip \z@ \@plus3\p@
           \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
           \belowdisplayskip \abovedisplayskip
           \let\@listi\@listI}
      \else
      \if@small
        \renewcommand\normalsize{\sffamilyfont%
           \@setfontsize\normalsize{9bp}{11.5pt}%
           \abovedisplayskip 11\p@ \@plus2\p@ \@minus5\p@
           \abovedisplayshortskip \z@ \@plus3\p@
           \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
           \belowdisplayskip \abovedisplayskip
           \let\@listi\@listI}
      \else
      \fi
      \fi
      \fi
    \else
    \if@traditional
        \if@large
            \renewcommand\normalsize{%
               \@setfontsize\normalsize{9bp}{11.75pt}%
               \abovedisplayskip 11\p@ \@plus2\p@ \@minus5\p@
               \abovedisplayshortskip \z@ \@plus3\p@
               \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
               \belowdisplayskip \abovedisplayskip
               \let\@listi\@listI}
        \else
        \if@medium
            \renewcommand\normalsize{%
               \@setfontsize\normalsize{9bp}{11.75pt}%
               \abovedisplayskip 11\p@ \@plus2\p@ \@minus5\p@
               \abovedisplayshortskip \z@ \@plus3\p@
               \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
               \belowdisplayskip \abovedisplayskip
               \let\@listi\@listI}
        \else
            \renewcommand\normalsize{%
               \@setfontsize\normalsize{9bp}{11.75bp}%
               \abovedisplayskip 11.75\p@ \@plus2\p@ \@minus5\p@
               \abovedisplayshortskip \z@ \@plus3\p@
               \belowdisplayshortskip 11.75\p@ \@plus3\p@ \@minus3\p@
               \belowdisplayskip \abovedisplayskip
               \let\@listi\@listI}
        \fi
        \fi
    \else
    \if@contemporary
        \if@large
            \renewcommand\normalsize{%
               \@setfontsize\normalsize{8bp}{11.5bp}%
               \abovedisplayskip 11.5\p@ \@plus2\p@ \@minus5\p@
               \abovedisplayshortskip \z@ \@plus3\p@
               \belowdisplayshortskip 11.5\p@ \@plus3\p@ \@minus3\p@
               \belowdisplayskip \abovedisplayskip
               \let\@listi\@listI}
        \else%
        \if@medium
            \renewcommand\normalsize{%
               \@setfontsize\normalsize{8bp}{11.5bp}%
               \abovedisplayskip 11.5\p@ \@plus2\p@ \@minus5\p@
               \abovedisplayshortskip \z@ \@plus3\p@
               \belowdisplayshortskip 11.5\p@ \@plus3\p@ \@minus3\p@
               \belowdisplayskip \abovedisplayskip
               \let\@listi\@listI}
        \else%
            \renewcommand\normalsize{%
               \@setfontsize\normalsize{8bp}{11bp}%
               \abovedisplayskip 11\p@ \@plus2\p@ \@minus5\p@
               \abovedisplayshortskip \z@ \@plus3\p@
               \belowdisplayshortskip 11\p@ \@plus3\p@ \@minus3\p@
               \belowdisplayskip \abovedisplayskip
               \let\@listi\@listI}
        \fi%
        \fi%
    \else
        \renewcommand\normalsize{%
           \@setfontsize\normalsize{8.5bp}{12pt}%
           \abovedisplayskip 11\p@ \@plus2\p@ \@minus5\p@
           \abovedisplayshortskip \z@ \@plus3\p@
           \belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@
           \belowdisplayskip \abovedisplayskip
           \let\@listi\@listI}
    \fi
    \fi
    \fi
    \normalsize
    \let\@bls\baselineskip
    
    \newcommand\small{%
        \@setfontsize\small{7}{10}%
        \abovedisplayskip 10\p@ minus 3\p@
        \belowdisplayskip \abovedisplayskip
        \abovedisplayshortskip \z@ plus 2\p@
        \belowdisplayshortskip 4\p@ plus 2\p@ minus2\p@
        \def\@listi{\topsep 4.5\p@ plus 2\p@ minus 1\p@
           \itemsep \parsep
           \topsep 4\p@ plus 2\p@ minus 2\p@}}
    
    \if@modern
        \newcommand\footnotesize{%
            \@setfontsize\footnotesize{7.5bp}{8}%
            \abovedisplayskip 6\p@ minus 3\p@
            \belowdisplayskip\abovedisplayskip
            \abovedisplayshortskip \z@ plus 3\p@
            \belowdisplayshortskip 6\p@ plus 3\p@ minus 3\p@
            \def\@listi{\topsep 3\p@ plus 1\p@ minus 1\p@
               \parsep 2\p@ plus 1\p@ minus 1\p@\itemsep \parsep}}
    \else
    \if@contemporary
        \newcommand\footnotesize{%
            \@setfontsize\footnotesize{6.5}{9.5}%
            \abovedisplayskip 6\p@ minus 3\p@
            \belowdisplayskip\abovedisplayskip
            \abovedisplayshortskip \z@ plus 3\p@
            \belowdisplayshortskip 6\p@ plus 3\p@ minus 3\p@
            \def\@listi{\topsep 3\p@ plus 1\p@ minus 1\p@
               \parsep 2\p@ plus 1\p@ minus 1\p@\itemsep \parsep}}
    \else
    \if@traditional
        \newcommand\footnotesize{%
            \@setfontsize\footnotesize{7.5bp}{9.5bp}%
            \abovedisplayskip 9.5\p@ minus 3\p@
            \belowdisplayskip\abovedisplayskip
            \abovedisplayshortskip \z@ plus 3\p@
            \belowdisplayshortskip 6\p@ plus 3\p@ minus 3\p@
            \def\@listi{\topsep 9.5\p@ plus 1\p@ minus 1\p@
               \parsep 2\p@ plus 1\p@ minus 1\p@\itemsep \parsep}}
    \fi
    \fi
    \fi
    
    \def\scriptsize{\@setfontsize\scriptsize{6.5pt}{9.5pt}}
    \def\tiny{\@setfontsize\tiny{5pt}{7pt}}
    \def\large{\@setfontsize\large{11.5pt}{12pt}}
    \def\Large{\@setfontsize\Large{14pt}{16}}
    \def\LARGE{\@setfontsize\LARGE{15pt}{17pt}}
    \def\huge{\@setfontsize\huge{22pt}{22pt}}
    \def\Huge{\@setfontsize\Huge{30pt}{30pt}}
    
    \DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
    \DeclareOldFontCommand{\sf}{\normalfont\sffamilyfont}{\mathsf}
    \DeclareOldFontCommand{\sfit}{\normalfont\sffamily\itshape}{\mathsf}
    \DeclareOldFontCommand{\sfb}{\normalfont\sffamilyfontbold}{\mathsf}
    \DeclareOldFontCommand{\sfbi}{\normalfont\sffamily\bfseries\itshape}{\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}
    
    % Crop Here
    \def\oddsideskip{48pt}%
    \def\evensideskip{56pt}%
    
    \newdimen\croppaperwidth
    \newdimen\croppaperheight
    \setlength{\croppaperwidth}{\paperwidth}
    \setlength{\croppaperheight}{\paperheight}
    \if@weblink%%
    \else%
        \addtolength{\croppaperwidth}{28truemm}%
        \addtolength{\croppaperheight}{28truemm}%
    \fi%
        \CROP@size{\croppaperwidth}{\croppaperheight}%
    %
    \if@weblink%%
    \else
    \renewcommand*\CROP@@ulc{%
        \begin{picture}(0,0)
            \unitlength\p@\thinlines
            \put(-40,0){\line(1,0){30.65}}
            \put(0,42){\line(0,-1){30.65}}
        \end{picture}%
    }
    \renewcommand*\CROP@@urc{%
        \begin{picture}(0,0)
            \unitlength\p@\thinlines
            \put(41,0){\line(-1,0){30.65}}
            \put(0,42){\line(0,-1){30.65}}
        \end{picture}%
    }
    \renewcommand*\CROP@@llc{%
        \begin{picture}(0,0)
            \unitlength\p@\thinlines
            \put(-40,0){\line(1,0){30.65}}
            \put(0,-40){\line(0,1){30.65}}
        \end{picture}%
    }
    \renewcommand*\CROP@@lrc{%
        \begin{picture}(0,0)
            \unitlength\p@\thinlines
            \put(41,0){\line(-1,0){30.65}}
            \put(0,-40){\line(0,1){30.65}}
        \end{picture}%
    }
    %
    \renewcommand*\CROP@@info{{%
        \global\advance\CROP@index\@ne
        \def\x{\discretionary{}{}{\hbox{\kern.5em--\kern.5em}}}%
        \advance\paperwidth-20\p@
        \dimen@10pt
        \ifx\CROP@pagecolor\@empty
        \else
            \advance\dimen@\CROP@overlap
        \fi
        \hb@xt@\z@{%
            \hss
            \vbox to\z@{%
                %\centering
                \hsize\paperwidth
                \vss
                \normalfont
                \normalsize
                \expandafter\csname\CROP@font\endcsname{\ifodd\c@page\hfill\else\hspace*{\evensideskip}\fi\if@proof\noindent\fboxsep1\p@\fbox{\fboxsep2\p@\fbox{\@oupdraftcopy}}\else\fi\ifodd\c@page\hspace*{\oddsideskip}\else\fi}%\noindent\fbox{\fboxsep2\p@\fbox{\@oupdraftcopy}}
                \vskip\dimen@
            }%
            \hss
        }%
    }}
    %
    \crop[cam]%
    \fi%
    %
    \newdimen\Croppdfwidth
    \newdimen\Croppdfheight
    \newdimen\Trimpdfwidth
    \newdimen\Trimpdfheight
    \Croppdfwidth=\croppaperwidth
    \Croppdfheight=\croppaperheight
    \advance\Croppdfwidth by -0.71mm
    \advance\Croppdfheight by -0.92mm
    \Trimpdfwidth=\paperwidth
    \Trimpdfheight=\paperheight
    \advance\Trimpdfwidth by -0.59mm
    \advance\Trimpdfheight by -0.88mm
    %
    \newdimen\CP@toff@wd
    \newdimen\CP@toff@ht
    %
    \newdimen\CP@boff@wd
    \newdimen\CP@boff@ht
    %
    \newdimen\CP@crop@wd
    \newdimen\CP@crop@ht
    %
    \newdimen\CP@bled@wd
    \newdimen\CP@bled@ht
    %
    \newdimen\CP@trim@wd
    \newdimen\CP@trim@ht
    %
    \def\str@yes{yes}
    \def\SetCrop#1#2{%
        \gdef\IsCropSet{yes}
        \global\CP@crop@wd=#1\relax
        \global\CP@crop@ht=#2\relax}
    \def\SetTrim#1#2{%
        \gdef\IsTrimSet{yes}
        \global\CP@trim@wd=#1\relax
        \global\CP@trim@ht=#2\relax}
    \def\SetBleed#1#2{%
        \gdef\IsBleedSet{yes}
        \global\CP@bled@wd=#1\relax
        \global\CP@bled@ht=#2\relax}
    %
    \everyjob\expandafter{%
        \the\everyjob
        \typeout{%
            \filename\space <\filedate>^^J
            Version: v\fileversion^^J
            LaTeX macros for setting Page Box parameters
        }%
      \IfFileExists{\filename.cfg}{%
            \begingroup\@@input\@filef@und\endgroup
        }{%
            \typeout{No File: \filename.cfg}%
        }%
      \IfFileExists{\jobname.cfg}{%
            \begingroup\@@input\@filef@und\endgroup
        }{%
            \typeout{No File: \jobname.cfg}%
        }%
    }
    %
    \if@weblink%%%
        \SetCrop{\Trimpdfwidth}{\Trimpdfheight}%
        \SetTrim{\Trimpdfwidth}{\Trimpdfheight}%
        \SetBleed{0mm}{0mm}%
    \else%
        \SetCrop{\Croppdfwidth}{\Croppdfheight}%
        \SetTrim{\Trimpdfwidth}{\Trimpdfheight}%
        \SetBleed{3mm}{3mm}%
    \fi
    %
    %
    \def\do@pagebox@calc{%
        \CP@toff@wd=\CP@crop@wd
        \advance\CP@toff@wd     by -\CP@trim@wd
        \divide\CP@toff@wd  by \tw@
    %
        \CP@toff@ht=\CP@crop@ht
        \advance\CP@toff@ht     by -\CP@trim@ht
        \divide\CP@toff@ht  by \tw@
    %
        \advance\CP@trim@wd     by \CP@toff@wd
        \advance\CP@trim@ht     by \CP@toff@ht
    %
        \CP@boff@wd=\CP@toff@wd
        \advance\CP@boff@wd     by -\CP@bled@wd
    %
        \CP@boff@ht=\CP@toff@ht
        \advance\CP@boff@ht     by -\CP@bled@ht
    %
        \advance\CP@bled@wd     by \CP@trim@wd
        \advance\CP@bled@ht     by \CP@trim@ht
    }
    %
    \def\pdf@page@parameters{%
        \ifx\IsCropSet\str@yes
            [{ThisPage} << /CropBox [0 0 \strip@pt\CP@crop@wd\space \strip@pt\CP@crop@ht] >> /PUT pdfmark
            [{ThisPage} << /MediaBox[0 0 \strip@pt\CP@crop@wd\space \strip@pt\CP@crop@ht] >> /PUT pdfmark
        \fi
        \ifx\IsTrimSet\str@yes
            [{ThisPage} << /TrimBox [\strip@pt\CP@toff@wd\space \strip@pt\CP@toff@ht\space \strip@pt\CP@trim@wd\space \strip@pt\CP@trim@ht] >> /PUT pdfmark
        \fi
        \ifx\IsBleedSet\str@yes
            [{ThisPage} << /BleedBox[\strip@pt\CP@boff@wd\space \strip@pt\CP@boff@ht\space \strip@pt\CP@bled@wd\space \strip@pt\CP@bled@ht] >> /PUT pdfmark
        \fi
    }
    %
    \def\shipout@PageObjects{%
        \special{ps: \pdf@page@parameters}%
    }
    %%
    \AtBeginDocument{%
        \do@pagebox@calc
        \let\org@begindvi\@begindvi
        \def\@begindvi{%
            \shipout@PageObjects
            \org@begindvi
            \global\let\@begindvi\rest@dvi@pages
        }%
    }
    \let\rest@dvi@pages\shipout@PageObjects
    % Crop End here
    
    \setlength\lineskip{1\p@}
    \setlength\normallineskip{1\p@}
    \renewcommand\baselinestretch{}
    \setlength\parskip{0\p@}
    \if@contemporary%
        \setlength\parindent{1em}%
    \else%
    \if@traditional
        \setlength\parindent{8pt}%
    \else
    \if@modern
        \setlength\parindent{12pt}%
    \else
        \setlength\parindent{12pt}%
    \fi%
    \fi%
    \fi
    %
    \setlength\smallskipamount{3\p@ \@plus 1\p@ \@minus 1\p@}
    \setlength\medskipamount{6\p@ \@plus 2\p@}
    \setlength\bigskipamount{12\p@ \@plus 4\p@ \@minus 4\p@}
    \@lowpenalty   51
    \@medpenalty  151
    \@highpenalty 301
    \clubpenalty 10000
    \widowpenalty 10000
    \displaywidowpenalty 100
    \predisplaypenalty   10000
    \postdisplaypenalty  2500
    \interlinepenalty 0
    \brokenpenalty 10000
    \lefthyphenmin=3
    \righthyphenmin=3
    
    \if@modern
      \if@large
        \setlength\headheight{16\p@}
        \setlength\topmargin{9.2mm}
        \addtolength\topmargin{-1in}
        \setlength\topskip{10\p@}
        \setlength\headsep{11.4\p@}
        \setlength\footskip{16\p@}
        \setlength\maxdepth{.5\topskip}
        \setlength\textwidth{178mm}
        \setlength\textheight{59\baselineskip}
        \setlength\marginparsep{3\p@}
        \setlength\marginparpush{3\p@}
        \setlength\marginparwidth{35\p@}
        \setlength\oddsidemargin{4pc}
        \addtolength\oddsidemargin{-1in}
        \setlength\@tempdima{\paperwidth}
        \addtolength\@tempdima{-\textwidth}
        \addtolength\@tempdima{-4pc}
        \setlength\evensidemargin{\@tempdima}
        \addtolength\evensidemargin{-1in}
        \setlength\columnsep{6mm}
        \setlength\columnseprule{0\p@}
      \else
      \if@medium
        \setlength\headheight{16\p@}
        \setlength\topmargin{24pt}
        \addtolength\topmargin{-1in}
        \setlength\topskip{10\p@}
        \setlength\headsep{10.5\p@}
        \setlength\footskip{0\p@}
        \setlength\maxdepth{.5\topskip}
        \setlength\textwidth{157mm}
        \setlength\textheight{52\baselineskip}
        \setlength\marginparsep{3\p@}
        \setlength\marginparpush{3\p@}
        \setlength\marginparwidth{35\p@}
        \setlength\oddsidemargin{17mm}
        \addtolength\oddsidemargin{-1in}
        \setlength\@tempdima{\paperwidth}
        \addtolength\@tempdima{-\textwidth}
        \addtolength\@tempdima{-17mm}
        \setlength\evensidemargin{\@tempdima}
        \addtolength\evensidemargin{-.89in}
        \setlength\columnsep{5mm}
        \setlength\columnseprule{0\p@}
      \else
      \if@small
        \setlength\headheight{16\p@}
        \setlength\topmargin{2.25pc}
        \addtolength\topmargin{-1in}
        \setlength\topskip{10\p@}
        \setlength\headsep{13.6\p@}
        \setlength\footskip{16\p@}
        \setlength\maxdepth{.5\topskip}
        \setlength\textwidth{124mm}
        \setlength\textheight{49\baselineskip}
        \setlength\marginparsep{3\p@}
        \setlength\marginparpush{3\p@}
        \setlength\marginparwidth{35\p@}
        \setlength\oddsidemargin{17mm}
        \addtolength\oddsidemargin{-1in}
        \setlength\@tempdima{\paperwidth}
        \addtolength\@tempdima{-\textwidth}
        \addtolength\@tempdima{-19.6mm}
        \setlength\evensidemargin{\@tempdima}
        \addtolength\evensidemargin{-.89in}
        \setlength\columnsep{14.5pt}
        \setlength\columnseprule{0\p@}
      \else
      \fi
      \fi
      \fi
    \else
    \if@traditional
        \if@large
            \setlength\headheight{16\p@}
            \setlength\topmargin{6.2mm}
            \addtolength\topmargin{-1in}
            \setlength\topskip{10\p@}
            \setlength\headsep{18.5\p@}
            \setlength\footskip{16\p@}
            \setlength\maxdepth{.5\topskip}
            \setlength\textwidth{178mm}
            \setlength\textheight{58\baselineskip}
            \setlength\marginparsep{3\p@}
            \setlength\marginparpush{3\p@}
            \setlength\marginparwidth{35\p@}
            \setlength\oddsidemargin{17mm}
            \addtolength\oddsidemargin{-1in}
            \setlength\@tempdima{\paperwidth}
            \addtolength\@tempdima{-\textwidth}
            \addtolength\@tempdima{-17mm}
            \setlength\evensidemargin{\@tempdima}
            \addtolength\evensidemargin{-1in}
            \setlength\columnsep{6mm}
            \setlength\columnseprule{0\p@}
        \else
       \if@medium
          \if@mediumone%RK-new
            \setlength\headheight{16\p@}
            \setlength\topmargin{5.5mm}%%%RK-new
            \addtolength\topmargin{-1in}
            \setlength\topskip{10\p@}
            \setlength\headsep{20.4\p@}%%RK-new
            \setlength\footskip{16\p@}
            \setlength\maxdepth{.5\topskip}
            \setlength\textwidth{136mm}
            \setlength\textheight{51\baselineskip}%RK-new
            \setlength\marginparsep{3\p@}
            \setlength\marginparpush{3\p@}
            \setlength\marginparwidth{35\p@}
            \setlength\oddsidemargin{28mm}%RK-new
            \addtolength\oddsidemargin{-1in}
            \setlength\@tempdima{\paperwidth}
            \addtolength\@tempdima{-\textwidth}
            \addtolength\@tempdima{-28mm}%RK-new
            \setlength\evensidemargin{\@tempdima}
            \addtolength\evensidemargin{-1in}
            \setlength\columnsep{18pt}
            \setlength\columnseprule{0\p@}
           \else
            \setlength\headheight{16\p@}
            \setlength\topmargin{5.5mm}%%%RK-new
            \addtolength\topmargin{-1in}
            \setlength\topskip{10\p@}
            \setlength\headsep{17.6\p@}%%RK-new
            \setlength\footskip{16\p@}
            \setlength\maxdepth{.5\topskip}
            \setlength\textwidth{160mm}
            \setlength\textheight{51\baselineskip}%RK-new
            \setlength\marginparsep{3\p@}
            \setlength\marginparpush{3\p@}
            \setlength\marginparwidth{35\p@}
            \setlength\oddsidemargin{16mm}%RK-new
            \addtolength\oddsidemargin{-1in}
            \setlength\@tempdima{\paperwidth}
            \addtolength\@tempdima{-\textwidth}
            \addtolength\@tempdima{-16mm}%RK-new
            \setlength\evensidemargin{\@tempdima}
            \addtolength\evensidemargin{-1in}
            \setlength\columnsep{18pt}
            \setlength\columnseprule{0\p@}
           \fi
        \else
            \setlength\headheight{16\p@}
            \setlength\topmargin{5.5mm}
            \addtolength\topmargin{-1in}
            \setlength\topskip{10\p@}
            \setlength\headsep{7.5mm}
            \setlength\footskip{16\p@}
            \setlength\maxdepth{2pt}
            \setlength\textwidth{127truemm}
            \setlength\textheight{48\baselineskip}
    %        \addtolength\textheight{-10bp}
            \setlength\marginparsep{3\p@}
            \setlength\marginparpush{3\p@}
            \setlength\marginparwidth{35\p@}
            \setlength\oddsidemargin{16mm}
            \addtolength\oddsidemargin{-1in}
            \setlength\evensidemargin{13mm}
            \addtolength\evensidemargin{-1in}
            \setlength\columnsep{18pt}
            \setlength\columnseprule{0\p@}
        \fi
        \fi
    \else
    \if@contemporary
        \if@large
            \setlength\headheight{16\p@}
            \setlength\topmargin{7.1mm}
            \addtolength\topmargin{-1in}
            \setlength\topskip{10\p@}
            \setlength\headsep{5.8mm}
            \setlength\footskip{16\p@}
            \setlength\maxdepth{2pt}%.5\topskip}
            \setlength\textwidth{185mm}
            \setlength\textheight{58\baselineskip}
    %        \addtolength\textheight{-11bp}
            \setlength\marginparsep{3\p@}
            \setlength\marginparpush{3\p@}
            \setlength\marginparwidth{35\p@}
            \setlength\oddsidemargin{12.5mm}
            \addtolength\oddsidemargin{-1in}
            \setlength\evensidemargin{12.5mm}
            \addtolength\evensidemargin{-1in}%
            \setlength\columnsep{6mm}
            \setlength\columnseprule{0\p@}
        \else
      \if@medium
        \if@mediumone
            \setlength\headheight{16\p@}
            \setlength\topmargin{9.4mm}
            \addtolength\topmargin{-1in}
            \setlength\topskip{10\p@}
            \setlength\headsep{5.5mm}
            \setlength\footskip{16\p@}
            \setlength\maxdepth{2pt}%.5\topskip}
            \setlength\textwidth{135mm}
            \setlength\textheight{49\baselineskip}
    %        \addtolength\textheight{-11bp}
            \setlength\marginparsep{3\p@}
            \setlength\marginparpush{3\p@}
            \setlength\marginparwidth{35\p@}
            \setlength\oddsidemargin{27mm}
            \addtolength\oddsidemargin{-1in}
            \setlength\evensidemargin{27mm}
            \addtolength\evensidemargin{-1in}%
            \setlength\columnsep{5mm}
            \setlength\columnseprule{0\p@}
        \else
            \setlength\headheight{16\p@}
            \setlength\topmargin{9.4mm}
            \addtolength\topmargin{-1in}
            \setlength\topskip{10\p@}
            \setlength\headsep{5.5mm}
            \setlength\footskip{16\p@}
            \setlength\maxdepth{2pt}%.5\topskip}
            \setlength\textwidth{149mm}
            \setlength\textheight{50\baselineskip}
     %       \addtolength\textheight{-11bp}
            \setlength\marginparsep{3\p@}
            \setlength\marginparpush{3\p@}
            \setlength\marginparwidth{35\p@}
            \setlength\oddsidemargin{20mm}
            \addtolength\oddsidemargin{-1in}
            \setlength\evensidemargin{20mm}
            \addtolength\evensidemargin{-1in}%
            \setlength\columnsep{5mm}
            \setlength\columnseprule{0\p@}
        \fi
      \else
      \if@small
        \setlength\headheight{16\p@}
        \setlength\topmargin{6.4mm}
        \addtolength\topmargin{-1in}
        \setlength\topskip{10\p@}
        \setlength\headsep{4.5mm}
        \setlength\footskip{16\p@}
        \setlength\maxdepth{2pt}%.5\topskip}
        \setlength\textwidth{126mm}
        \setlength\textheight{51\baselineskip}
    %    \addtolength\textheight{-11bp}
        \setlength\marginparsep{3\p@}
        \setlength\marginparpush{3\p@}
        \setlength\marginparwidth{35\p@}
        \setlength\oddsidemargin{15mm}
        \addtolength\oddsidemargin{-1in}
        \setlength\evensidemargin{15mm}
        \addtolength\evensidemargin{-1in}%
        \setlength\columnsep{14.5pt}
        \setlength\columnseprule{0\p@}
      \else
      \fi
      \fi
        \fi
    \else
    \fi
    \fi
    \fi
    
    \addtolength\textheight{\topskip}
    \if@contemporary
        \setlength\footnotesep{7\p@}
    \else
    \if@traditional
        \setlength\footnotesep{6.5\p@}
    \else
        \setlength\footnotesep{9\p@}
    \fi
    \fi
    \setlength{\skip\footins}{12\p@ \@plus 6\p@ \@minus 1\p@}
    \setcounter{totalnumber}{10}
    \setcounter{topnumber}{5}
    \setcounter{bottomnumber}{5}
    \renewcommand\topfraction{.9}
    \renewcommand\bottomfraction{.9}
    \renewcommand\textfraction{.06}
    \renewcommand\floatpagefraction{.94}
    \renewcommand\dbltopfraction{.9}
    \renewcommand\dblfloatpagefraction{.9}
    \setlength\floatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
    \setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
    \setlength\intextsep   {18\p@ \@plus 2\p@ \@minus 2\p@}
    \setlength\dblfloatsep    {12\p@ \@plus 2\p@ \@minus 2\p@}
    \setlength\dbltextfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
    
    \setlength\@fptop{0\p@}
    \setlength\@fpsep{12\p@ \@plus 1fil}
    \setlength\@fpbot{0\p@}
    
    \setlength\@dblfptop{0\p@}
    \setlength\@dblfpsep{12\p@ \@plus 1fil}
    \setlength\@dblfpbot{0\p@}
    
    \DeclareMathSizes{5}     {5}   {5}  {5}
    \DeclareMathSizes{6}     {6}   {5}  {5}
    \DeclareMathSizes{7}     {7}   {5}  {5}
    \DeclareMathSizes{8}     {8}   {6}  {5}
    \DeclareMathSizes{9}     {9}   {6.5}  {5}
    \DeclareMathSizes{10}   {10}   {7.5}  {5}
    \DeclareMathSizes{12}   {12}   {9}  {7}
    
    \def\ps@headings
      {%
      \let\@oddfoot\@empty%
      \let\@evenfoot\@empty%
      \if@traditional
        \if@large
          \def\@evenhead{\vbox{\hbox to \textwidth{\fontsize{9.5bp}{12}\selectfont%
                {\textbf{\thepage}}{\hspace*{9pt}{\textbullet}\hspace*{9pt}}{\itshape\strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}\hfill}}}%
          \def\@oddhead{\vbox{\hbox to \textwidth{\fontsize{9.5bp}{12}\selectfont%
                \hfill{{\itshape\strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}}{\hspace*{9pt}{\textbullet}\hspace*{9pt}}{\textbf{\thepage}}}%
                }}%
        \else
        \if@medium
          \def\@evenhead{\vbox{\hbox to \textwidth{\fontsize{9.5bp}{12}\selectfont
                {\fontsize{9bp}{12}\selectfont\textbf{\thepage}}{\hspace*{9pt}{\textbullet}\hspace*{9pt}}{\itshape\strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}\hfill}}}%
          \def\@oddhead{\vbox{\hbox to \textwidth{\fontsize{9.5bp}{12}\selectfont
                \hfill{{\itshape\strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}}{\hspace*{9pt}{\textbullet}\hspace*{9pt}}{\fontsize{9bp}{12}\selectfont\textbf{\thepage}}}%
                }}%
        \else
          \def\@evenhead{\hbox to \textwidth{{\textbf{\thepage}}{\hspace*{9pt}{\textbullet}\hspace*{9pt}}{\strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}\hfill}}%
          \def\@oddhead{\hbox to \textwidth{\hfill{\textit{\rightmark}, Volume \@vol, Issue \@issue}{\hspace*{9pt}{\textbullet}\hspace*{9pt}}\textbf{\thepage}}%
                }%
        \fi
        \fi
      \else
      \if@contemporary
          \def\@evenhead{\hbox to \textwidth{\sffamily\fontsize{8bp}{10bp}\selectfont%
                {{\fontseries{m}\fontsize{9bp}{10bp}\selectfont\thepage}}\hspace*{4pt}\raisebox{-1.5pt}{\rule{.3pt}{8pt}}\hspace*{4pt}{\strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}\hfill}}%
          \def\@oddhead{\hbox to \textwidth{\hfill\sffamily\fontsize{8bp}{10bp}\selectfont
                {{\strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}}\hspace*{4pt}\raisebox{-1.5pt}{\rule{.3pt}{8pt}}\hspace*{4pt}{{\fontseries{m}\fontsize{9bp}{10bp}\selectfont\thepage}}%
                }}%
      \else
      \if@modern
         \def\@evenhead{\vbox{\hbox to \textwidth{\if@medium\fontsize{6.5bp}{6.5}\selectfont\else\fontsize{8bp}{10}\selectfont\fi
            {\sffamilyfontbold{\selectfont\thepage}}\hfill\sffamilyfontitalic{\fontshape{it}\selectfont
            \strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}}\if@medium\vspace{5.5\p@}\else\vspace{8\p@}\fi\color{black!60}\rule{\textwidth}{1\p@}}}%
          \def\@oddhead{\vbox{\hbox to \textwidth{\if@medium\fontsize{6.5bp}{6.5}\selectfont\else\fontsize{8bp}{10}\selectfont\fi
            {\sffamilyfontitalic{\fontshape{it}\selectfont\strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}}\hfill{\sffamilyfontbold{\thepage}}}%
            \if@medium\vspace{5.5\p@}\else\vspace{8\p@}\fi\color{black!60}\rule{\textwidth}{1\p@}}}%
       \else
          \def\@evenhead{\vbox{\hbox to \textwidth{\fontsize{8bp}{10}\selectfont
            {\sffamilyfontbold{\selectfont\thepage}}\hfill\sffamilyfontitalic{\fontshape{it}\selectfont
            \strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}}\vspace{5\p@}\rule{\textwidth}{1\p@}}}%
          \def\@oddhead{\vbox{\hbox to \textwidth{\fontsize{8bp}{10}\selectfont
            {\sffamilyfontitalic{\fontshape{it}\selectfont\strut\@journaltitle, \@pubyear,\ Volume \@vol,\ Issue \@issue}}\hfill{\sffamilyfontbold{\thepage}}}%
            \vspace{5\p@}\rule{\textwidth}{1\p@}}}%
      \fi\fi\fi
      \def\titlemark##1{\markboth{##1}{##1}}%
      }
    %%%% If you want to include society logo please use the below option
    %\if@modern%
    %\def\societylogo{\raisebox{10pt}{\includegraphics[scale=0.4]{PNAS-Nexus-Logo-CMYK}}}%
    %\else%
    %\def\societylogo{\raisebox{-12pt}{\includegraphics[scale=0.4]{PNAS-Nexus-Logo-CMYK}}}%
    %\fi%
    %%%% If you do not want to include society logo then please use the below option
    %\def\societylogo{}%
    
    \def\ps@opening{%
      \if@modern
          \def\@oddhead{\raisebox{-10.3mm}[0pt][0pt]{\hbox to \textwidth{%{\color{black!50}\rule{1.5mm}{19mm}}\hskip2.5mm%
                  {\vbox to 19mm{\hbox{}\vfill\hbox to \if@small108mm\else122mm\fi{{%
                  \parbox{290pt}{\raggedright{{\sffamily\fontsize{6.5bp}{9.5bp}\selectfont\textit{\@journaltitle},\ \@copyrightyear, \@volume,  \thepage--\thelastpage\par\vskip0pt}}
                  {\sffamily\fontsize{6.5bp}{9.bp}\selectfont\@DOI\par%
                  \ifx\@access\@empty\else\@access\par\fi\vskip0pt
                  \ifx\@specialissue\@empty\else\@specialissue\par\fi
                  \ifx\@appnotes\@empty\else\sffamily\fontsize{7bp}{9.bp}\textbf{\@appnotes}\par\fi
                  }
                    }}%
                  }\vfill\hbox{}}}\hfill{\smash{\societylogo{}\hspace*{12pt}}\color{black!20}\rule{45pt}{55pt}}}}}%
        \def\@evenhead{\raisebox{-10.3mm}[0pt][0pt]{\hbox to \textwidth{%{\color{black!50}\rule{1.5mm}{19mm}}\hskip2.5mm%
                  {\vbox to 19mm{\hbox{}\vfill\hbox to \if@small108mm\else122mm\fi{{%
                  \parbox{290pt}{\raggedright{{\sffamily\fontsize{8bp}{10bp}\selectfont\textit{\@journaltitle},\ \@copyrightyear, \@volume, \thepage--\thelastpage\par\vskip0pt}}
                  {\sffamily\fontsize{7bp}{9bp}\selectfont\@DOI\par%
                  \ifx\@access\@empty\else\@access\par\fi\vskip0pt
                  \ifx\@specialissue\@empty\else\@specialissue\par\fi
                  \ifx\@appnotes\@empty\else\textbf{\@appnotes}\par\fi}
                    }}%
                  }\vfill\hbox{}}}\hfill{\smash{\societylogo{}\hspace*{12pt}}\color{black!20}\rule{45pt}{55pt}}}}}
      \fi
      \if@traditional
        \def\@oddhead{\raisebox{\if@large-6pt\else\if@medium-6pt\else-6pt\fi\fi}[0pt][0pt]{%
                  \hbox to \textwidth{{%
                  \parbox{0.8\textwidth}{\raggedright\fontsize{7bp}{10bp}\selectfont
                  \textit{\@journaltitle},\ \@copyrightyear, pp. \thepage--\thelastpage\par
                  \@DOI\par\ifx\@access\@empty\else\@access\par\fi%
                  \ifx\@appnotes\@empty\else\textbf{\@appnotes}\par\fi}
                    }%
                  \hfill\hbox{\smash{\societylogo{}\hspace*{12pt}}\color{black!20}\rule[-7.5pt]{55pt}{20pt}}}}}%
        \def\@evenhead{\raisebox{\if@large-6pt\else\if@medium-6pt\else-6pt\fi\fi}[0pt][0pt]{%
                  \hbox to \textwidth{{%
                  \parbox{0.8\textwidth}{\raggedright\fontsize{7bp}{10bp}\selectfont
                  \textit{\@journaltitle},\ \@copyrightyear, pp. \thepage--\thelastpage\par
                  \@DOI\par\ifx\@access\@empty\else\@access\par\fi%
                  \ifx\@appnotes\@empty\else\textbf{\@appnotes}\par\fi}
                    }%
                  \hfill\hbox{\smash{\societylogo{}\hspace*{12pt}}\color{black!20}\rule{55pt}{20pt}}}}}
      \fi
      \if@contemporary
        \def\@oddhead{\raisebox{\if@large-18.8mm\else\if@medium-19.1mm\else-17mm\fi\fi}[0pt][0pt]{\hbox to \textwidth{{\color{black!50}\rule{1.5mm}{19mm}}\hskip2.5mm%
                  {\vbox to 19mm{\vskip2.5pt\hbox to \textwidth{{%
                  \parbox{290pt}{\raggedright{{\sffamily\fontsize{8bp}{10bp}\selectfont\textit{\@journaltitle},\ \@copyrightyear, pp. \thepage--\thelastpage\par\vskip3pt}}
                  {\sffamily\fontsize{7bp}{9bp}\selectfont\@DOI\par%
                  \ifx\@access\@empty\else\@access\par\fi\vskip3pt
                  \ifx\@appnotes\@empty\else\textbf{\@appnotes}\par\fi}
                    }}%
                  \hfill\hbox{\smash{\societylogo{}\hspace*{12pt}}\color{black!20}\rule{55pt}{20pt}}\hskip4mm}\vfill\hbox{}}}}}}%
        \def\@evenhead{\raisebox{\if@large-18.8mm\else\if@medium-19.1mm\else-17mm\fi\fi}[0pt][0pt]{\hbox to \textwidth{{\color{black!50}\rule{1.5mm}{19mm}}\hskip2.5mm%
                  {\vbox to 19mm{\vskip2.5pt\hbox to \textwidth{{%
                  \parbox{290pt}{\raggedright{{\sffamily\fontsize{8bp}{10bp}\selectfont\textit{\@journaltitle},\ \@copyrightyear, pp. \thepage--\thelastpage\par\vskip3pt}}
                  {\sffamily\fontsize{7bp}{9bp}\selectfont\@DOI\par%
                  \ifx\@access\@empty\else\@access\par\fi\vskip3pt
                  \ifx\@appnotes\@empty\else\textbf{\@appnotes}\par\fi}
                    }}%
                  \hfill\hbox{\smash{\societylogo{}\hspace*{12pt}}\color{black!20}\rule{55pt}{20pt}}\hskip4mm}\vfill\hbox{}}}}}}
        \fi
    %
    \if@modern
        \def\@oddfoot{\parbox{\textwidth}{%\if@medium\if@mediumone\vspace*{0pt}\else\vspace*{-23.5pt}\fi\else\if@small\vspace*{0pt}\else\vspace*{-37.5pt}\fi\fi
    \textcolor{black!60}{\rule{\textwidth}{.5pt}}\par\vspace*{5pt}\fontsize{6.25bp}{8bp}\selectfont\@history\par\raggedright
        \fontseries{m}\selectfont$\copyright$ The Author(s) \@pubyear. Copyright and licence statements to be updated by the publisher during production.
        }}
        \def\@evenfoot{\parbox{\textwidth}{%\if@medium\if@mediumone\vspace*{0pt}\else\vspace*{-23.5pt}\fi\else\if@small\vspace*{0pt}\else\vspace*{-37.5pt}\fi\fi
    \textcolor{black!60}{\rule{\textwidth}{.5pt}}\par\vspace*{5pt}\fontsize{6.25bp}{8bp}\selectfont\@history\par\raggedright
        \fontseries{m}\selectfont$\copyright$ The Author(s) \@pubyear. Copyright and licence statements to be updated by the publisher during production.
        }}
        \else
      \def\@evenfoot{\if@contemporary\raisebox{0mm}[0pt][0pt]{\parbox{\textwidth}{\noindent\rule{\textwidth}{.5pt}\par%
      \vskip1.5pt\sffamily\fontsize{6.5bp}{9.5bp}\selectfont\@history\par\raggedright%
      \noindent\copyright\space The Author(s) \@copyrightyear. Copyright and licence statements to be updated by the publisher during production.}}%
      \else%
      \if@traditional%
        \raisebox{0mm}[0pt][0pt]{\parbox{\textwidth}{\noindent\rule{\textwidth}{.5pt}\par%
      \vskip2.5pt\fontsize{6.25bp}{8.25bp}\selectfont\@history\par\raggedright%
      \noindent\copyright\space The Author(s) \@copyrightyear. Copyright and licence statements to be updated by the publisher during production.}}%
      \fi\fi%
      }
    %
      \def\@oddfoot{\if@contemporary\raisebox{0mm}[0pt][0pt]{\parbox{\textwidth}{\noindent\rule{\textwidth}{.5pt}\par%
      \vskip1.5pt\sffamily\fontsize{6.5bp}{9.5bp}\selectfont\@history\par\raggedright%
      \noindent\copyright\space The Author(s) \@copyrightyear. Copyright and licence statements to be updated by the publisher during production.}}%
      \else%
      \if@traditional%
        \raisebox{0mm}[0pt][0pt]{\parbox{\textwidth}{\noindent\rule{\textwidth}{.5pt}\par%
      \vskip2.5pt\fontsize{6.25bp}{8.25bp}\selectfont\@history\par\raggedright%
      \noindent\copyright\space The Author(s) \@copyrightyear. Copyright and licence statements to be updated by the publisher during production.}}%
      \fi\fi%
      }
    \fi
    }
    
    % Page range
    \newif\iflastpagegiven   \lastpagegivenfalse
    \newcommand\firstpage[1]{%
      \gdef\@firstpage{#1}%
      \ifnum\@firstpage>\c@page
        \setcounter{page}{#1}%
        \ClassWarning{BIO}{Increasing pagenumber to \@firstpage}%
      \else \ifnum\@firstpage<\c@page
        \ClassWarning{BIO}{Firstpage lower than pagenumber}\fi\fi
        \xdef\@firstpage{\the\c@page}%
        }
    \def\@firstpage{1}
    \def\pagenumbering#1{%
        \global\c@page \@ne
        \gdef\thepage{\csname @#1\endcsname \c@page}%
        \gdef\thefirstpage{%
                \csname @#1\endcsname \@firstpage}%
        \gdef\thelastpage{%
                \csname @#1\endcsname \@lastpage}%
        }
    
    \newcommand\lastpage[1]{\xdef\@lastpage{#1}%
      \global\lastpagegiventrue}
    \def\@lastpage{0}
    \def\setlastpage{\iflastpagegiven\else
        \edef\@tempa{@lastpage@}%
        \expandafter
        \ifx \csname \@tempa \endcsname \relax
            \gdef\@lastpage{0}%
        \else
            \xdef\@lastpage{\@nameuse{@lastpage@}}%
            \fi
        \fi }
    \def\writelastpage{%
        \iflastpagegiven \else
        \immediate\write\@auxout%
        {\string\global\string\@namedef{@lastpage@}{\the\c@page}}%
        \fi
        }
    \def\thepagerange{%
      \ifnum\@lastpage =0 {\ \bf ???} \else
      \ifnum\@lastpage = \@firstpage \ \thefirstpage\else
      \thefirstpage--\thelastpage \fi\fi}
    
    \AtBeginDocument{\setlastpage
         \pagenumbering{arabic}%
       }
    \AtEndDocument{%
        \writelastpage
        \if@final
        \clearemptydoublepage
        \else
        \clearpage
        \fi}
    
    \newcounter{section}
    \newcounter{subsection}[section]
    \newcounter{subsubsection}[subsection]
    \newcounter{paragraph}[subsubsection]
    \newcounter{subparagraph}[paragraph]
    \newcounter{figure}
    \newcounter{table}
    
    \newenvironment{tablenotes}{\if@traditional\fontsize{7.5bp}{9.5bp}\selectfont\else%
    \if@contemporary\if@large\fontsize{6.5bp}{8.5bp}\selectfont\else\fontsize{7bp}{9bp}\selectfont\fi
    \else\if@mo
  • oup-plain.bst20 KBVendored from mirrors.ctan.org on 2026-08-19.
    % BibTeX standard bibliography style `oup-plain'
       % Version 0.99b (8-Dec-10 release) for BibTeX versions 0.99a or later.
       % Copyright (C) 1984, 1985, 1988, 2010 Howard Trickey and Oren Patashnik.
       % Unlimited copying and redistribution of this file are permitted as long as
       % it is unmodified.  Modifications (and redistribution of modified versions)
       % are also permitted, but only if the resulting file is renamed to something
       % besides btxbst.doc, oup-plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
       % This restriction helps ensure that all standard styles are identical.
       % The file btxbst.doc has the documentation for this style.
    
    ENTRY
      { address
        author
        booktitle
        chapter
        edition
        editor
        howpublished
        institution
        journal
        key
        month
        note
        number
        organization
        pages
        publisher
        school
        series
        title
        type
        volume
        year
      }
      {}
      { label }
    
    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 {output.bibitem}
    { newline$
      "\bibitem{" write$
      cite$ write$
      "}" write$
      newline$
      ""
      before.all 'output.state :=
    }
    
    FUNCTION {fin.entry}
    { add.period$
      write$
      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 {not}
    {   { #0 }
        { #1 }
      if$
    }
    
    FUNCTION {and}
    {   'skip$
        { pop$ #0 }
      if$
    }
    
    FUNCTION {or}
    {   { pop$ #1 }
        'skip$
      if$
    }
    
    FUNCTION {new.block.checka}
    { empty$
        'skip$
        'new.block
      if$
    }
    
    FUNCTION {new.block.checkb}
    { empty$
      swap$ empty$
      and
        'skip$
        'new.block
      if$
    }
    
    FUNCTION {new.sentence.checka}
    { empty$
        'skip$
        'new.sentence
      if$
    }
    
    FUNCTION {new.sentence.checkb}
    { empty$
      swap$ empty$
      and
        'skip$
        'new.sentence
      if$
    }
    
    FUNCTION {field.or.null}
    { duplicate$ empty$
        { pop$ "" }
        'skip$
      if$
    }
    
    FUNCTION {emphasize}
    { duplicate$ empty$
        { pop$ "" }
        { "{\em " swap$ * "}" * }
      if$
    }
    
    INTEGERS { nameptr namesleft numnames }
    
    FUNCTION {format.names}
    { 's :=
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        { s nameptr "{ff~}{vv~}{ll}{, jj}" format.name$ 't :=
          nameptr #1 >
            { namesleft #1 >
                { ", " * t * }
                { numnames #2 >
                    { "," * }
                    'skip$
                  if$
                  t "others" =
                    { " et~al." * }
                    { " and " * t * }
                  if$
                }
              if$
            }
            't
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
    FUNCTION {format.authors}
    { author empty$
        { "" }
        { author format.names }
      if$
    }
    
    FUNCTION {format.editors}
    { editor empty$
        { "" }
        { editor format.names
          editor num.names$ #1 >
            { ", editors" * }
            { ", editor" * }
          if$
        }
      if$
    }
    
    FUNCTION {format.title}
    { title empty$
        { "" }
        { title "t" change.case$ }
      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 {format.date}
    { year empty$
        { month empty$
            { "" }
            { "there's a month but no year in " cite$ * warning$
              month
            }
          if$
        }
        { month empty$
            'year
            { month " " * year * }
          if$
        }
      if$
    }
    
    FUNCTION {format.btitle}
    { title emphasize
    }
    
    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$
        { "" }
        { "volume" volume tie.or.space.connect
          series empty$
            'skip$
            { " of " * 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 =
                { "number" }
                { "Number" }
              if$
              number tie.or.space.connect
              series empty$
                { "there's a number but no series in " cite$ * warning$ }
                { " in " * series * }
              if$
            }
          if$
        }
        { "" }
      if$
    }
    
    FUNCTION {format.edition}
    { edition empty$
        { "" }
        { output.state mid.sentence =
            { edition "l" change.case$ " edition" * }
            { edition "t" change.case$ " 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
            { "pages" pages n.dashify tie.or.space.connect }
            { "page" pages tie.or.space.connect }
          if$
        }
      if$
    }
    
    FUNCTION {format.vol.num.pages}
    { volume field.or.null
      number empty$
        'skip$
        { "(" number * ")" * *
          volume empty$
            { "there's a number but no volume in " cite$ * warning$ }
            'skip$
          if$
        }
      if$
      pages empty$
        'skip$
        { duplicate$ empty$
            { pop$ format.pages }
            { ":" * pages n.dashify * }
          if$
        }
      if$
    }
    
    FUNCTION {format.chapter.pages}
    { chapter empty$
        'format.pages
        { type empty$
            { "chapter" }
            { type "l" change.case$ }
          if$
          chapter tie.or.space.connect
          pages empty$
            'skip$
            { ", " * format.pages * }
          if$
        }
      if$
    }
    
    FUNCTION {format.in.ed.booktitle}
    { booktitle empty$
        { "" }
        { editor empty$
            { "In " booktitle emphasize * }
            { "In " format.editors * ", " * booktitle emphasize * }
          if$
        }
      if$
    }
    
    FUNCTION {empty.misc.check}
    { author empty$ title empty$ howpublished empty$
      month empty$ year empty$ note empty$
      and and and and and
      key empty$ not and
        { "all relevant fields are empty in " cite$ * warning$ }
        'skip$
      if$
    }
    
    FUNCTION {format.thesis.type}
    { type empty$
        'skip$
        { pop$
          type "t" change.case$
        }
      if$
    }
    
    FUNCTION {format.tr.number}
    { type empty$
        { "Technical Report" }
        'type
      if$
      number empty$
        { "t" change.case$ }
        { number tie.or.space.connect }
      if$
    }
    
    FUNCTION {format.article.crossref}
    { key empty$
        { journal empty$
            { "need key or journal for " cite$ * " to crossref " * crossref *
              warning$
              ""
            }
            { "In {\em " journal * "\/}" * }
          if$
        }
        { "In " key * }
      if$
      " \cite{" * crossref * "}" *
    }
    
    FUNCTION {format.crossref.editor}
    { editor #1 "{vv~}{ll}" format.name$
      editor num.names$ duplicate$
      #2 >
        { pop$ " et~al." * }
        { #2 <
            'skip$
            { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
                { " et~al." * }
                { " and " * editor #2 "{vv~}{ll}" format.name$ * }
              if$
            }
          if$
        }
      if$
    }
    
    FUNCTION {format.book.crossref}
    { volume empty$
        { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
          "In "
        }
        { "Volume" volume tie.or.space.connect
          " of " *
        }
      if$
      editor empty$
      editor field.or.null author field.or.null =
      or
        { key empty$
            { series empty$
                { "need editor, key, or series for " cite$ * " to crossref " *
                  crossref * warning$
                  "" *
                }
                { "{\em " * series * "\/}" * }
              if$
            }
            { key * }
          if$
        }
        { format.crossref.editor * }
      if$
      " \cite{" * crossref * "}" *
    }
    
    FUNCTION {format.incoll.inproc.crossref}
    { editor empty$
      editor field.or.null author field.or.null =
      or
        { key empty$
            { booktitle empty$
                { "need editor, key, or booktitle for " cite$ * " to crossref " *
                  crossref * warning$
                  ""
                }
                { "In {\em " booktitle * "\/}" * }
              if$
            }
            { "In " key * }
          if$
        }
        { "In " format.crossref.editor * }
      if$
      " \cite{" * crossref * "}" *
    }
    
    FUNCTION {article}
    { output.bibitem
      format.authors "author" output.check
      new.block
      format.title "title" output.check
      new.block
      crossref missing$
        { journal emphasize "journal" output.check
          format.vol.num.pages output
          format.date "year" output.check
        }
        { format.article.crossref output.nonnull
          format.pages output
        }
      if$
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {book}
    { output.bibitem
      author empty$
        { format.editors "author and editor" output.check }
        { format.authors output.nonnull
          crossref missing$
            { "author and editor" editor either.or.check }
            'skip$
          if$
        }
      if$
      new.block
      format.btitle "title" output.check
      crossref missing$
        { format.bvolume output
          new.block
          format.number.series output
          new.sentence
          publisher "publisher" output.check
          address output
        }
        { new.block
          format.book.crossref output.nonnull
        }
      if$
      format.edition output
      format.date "year" output.check
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {booklet}
    { output.bibitem
      format.authors output
      new.block
      format.title "title" output.check
      howpublished address new.block.checkb
      howpublished output
      address output
      format.date output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {inbook}
    { output.bibitem
      author empty$
        { format.editors "author and editor" output.check }
        { format.authors output.nonnull
          crossref missing$
            { "author and editor" editor either.or.check }
            'skip$
          if$
        }
      if$
      new.block
      format.btitle "title" output.check
      crossref missing$
        { format.bvolume output
          format.chapter.pages "chapter and pages" output.check
          new.block
          format.number.series output
          new.sentence
          publisher "publisher" output.check
          address output
        }
        { format.chapter.pages "chapter and pages" output.check
          new.block
          format.book.crossref output.nonnull
        }
      if$
      format.edition output
      format.date "year" output.check
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {incollection}
    { output.bibitem
      format.authors "author" output.check
      new.block
      format.title "title" output.check
      new.block
      crossref missing$
        { format.in.ed.booktitle "booktitle" output.check
          format.bvolume output
          format.number.series output
          format.chapter.pages output
          new.sentence
          publisher "publisher" output.check
          address output
          format.edition output
          format.date "year" output.check
        }
        { format.incoll.inproc.crossref output.nonnull
          format.chapter.pages output
        }
      if$
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {inproceedings}
    { output.bibitem
      format.authors "author" output.check
      new.block
      format.title "title" output.check
      new.block
      crossref missing$
        { format.in.ed.booktitle "booktitle" output.check
          format.bvolume output
          format.number.series output
          format.pages output
          address empty$
            { organization publisher new.sentence.checkb
              organization output
              publisher output
              format.date "year" output.check
            }
            { address output.nonnull
              format.date "year" output.check
              new.sentence
              organization output
              publisher output
            }
          if$
        }
        { format.incoll.inproc.crossref output.nonnull
          format.pages output
        }
      if$
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {conference} { inproceedings }
    
    FUNCTION {manual}
    { output.bibitem
      author empty$
        { organization empty$
            'skip$
            { organization output.nonnull
              address output
            }
          if$
        }
        { format.authors output.nonnull }
      if$
      new.block
      format.btitle "title" output.check
      author empty$
        { organization empty$
            { address new.block.checka
              address output
            }
            'skip$
          if$
        }
        { organization address new.block.checkb
          organization output
          address output
        }
      if$
      format.edition output
      format.date output
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {mastersthesis}
    { output.bibitem
      format.authors "author" output.check
      new.block
      format.title "title" output.check
      new.block
      "Master's thesis" format.thesis.type output.nonnull
      school "school" output.check
      address output
      format.date "year" output.check
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {misc}
    { output.bibitem
      format.authors output
      title howpublished new.block.checkb
      format.title output
      howpublished new.block.checka
      howpublished output
      format.date output
      new.block
      note output
      fin.entry
      empty.misc.check
    }
    
    FUNCTION {phdthesis}
    { output.bibitem
      format.authors "author" output.check
      new.block
      format.btitle "title" output.check
      new.block
      "PhD thesis" format.thesis.type output.nonnull
      school "school" output.check
      address output
      format.date "year" output.check
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {proceedings}
    { output.bibitem
      editor empty$
        { organization output }
        { format.editors output.nonnull }
      if$
      new.block
      format.btitle "title" output.check
      format.bvolume output
      format.number.series output
      address empty$
        { editor empty$
            { publisher new.sentence.checka }
            { organization publisher new.sentence.checkb
              organization output
            }
          if$
          publisher output
          format.date "year" output.check
        }
        { address output.nonnull
          format.date "year" output.check
          new.sentence
          editor empty$
            'skip$
            { organization output }
          if$
          publisher output
        }
      if$
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {techreport}
    { output.bibitem
      format.authors "author" output.check
      new.block
      format.title "title" output.check
      new.block
      format.tr.number output.nonnull
      institution "institution" output.check
      address output
      format.date "year" output.check
      new.block
      note output
      fin.entry
    }
    
    FUNCTION {unpublished}
    { output.bibitem
      format.authors "author" output.check
      new.block
      format.title "title" output.check
      new.block
      note "note" output.check
      format.date output
      fin.entry
    }
    
    FUNCTION {default.type} { misc }
    
    MACRO {jan} {"January"}
    
    MACRO {feb} {"February"}
    
    MACRO {mar} {"March"}
    
    MACRO {apr} {"April"}
    
    MACRO {may} {"May"}
    
    MACRO {jun} {"June"}
    
    MACRO {jul} {"July"}
    
    MACRO {aug} {"August"}
    
    MACRO {sep} {"September"}
    
    MACRO {oct} {"October"}
    
    MACRO {nov} {"November"}
    
    MACRO {dec} {"December"}
    
    MACRO {acmcs} {"ACM Computing Surveys"}
    
    MACRO {acta} {"Acta Informatica"}
    
    MACRO {cacm} {"Communications of the ACM"}
    
    MACRO {ibmjrd} {"IBM Journal of Research and Development"}
    
    MACRO {ibmsj} {"IBM Systems Journal"}
    
    MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
    
    MACRO {ieeetc} {"IEEE Transactions on Computers"}
    
    MACRO {ieeetcad}
     {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
    
    MACRO {ipl} {"Information Processing Letters"}
    
    MACRO {jacm} {"Journal of the ACM"}
    
    MACRO {jcss} {"Journal of Computer and System Sciences"}
    
    MACRO {scp} {"Science of Computer Programming"}
    
    MACRO {sicomp} {"SIAM Journal on Computing"}
    
    MACRO {tocs} {"ACM Transactions on Computer Systems"}
    
    MACRO {tods} {"ACM Transactions on Database Systems"}
    
    MACRO {tog} {"ACM Transactions on Graphics"}
    
    MACRO {toms} {"ACM Transactions on Mathematical Software"}
    
    MACRO {toois} {"ACM Transactions on Office Information Systems"}
    
    MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
    
    MACRO {tcs} {"Theoretical Computer Science"}
    
    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$
    }
    
    FUNCTION {sort.format.names}
    { 's :=
      #1 'nameptr :=
      ""
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        { namesleft #0 > }
        { nameptr #1 >
            { "   " * }
            'skip$
          if$
          s nameptr "{vv{ } }{ll{ }}{  ff{ }}{  jj{ }}" format.name$ 't :=
          nameptr numnames = t "others" = and
            { "et al" * }
            { t sortify * }
          if$
          nameptr #1 + 'nameptr :=
          namesleft #1 - 'namesleft :=
        }
      while$
    }
    
    FUNCTION {sort.format.title}
    { 't :=
      "A " #2
        "An " #3
          "The " #4 t chop.word
        chop.word
      chop.word
      sortify
      #1 global.max$ substring$
    }
    
    FUNCTION {author.sort}
    { author empty$
        { key empty$
            { "to sort, need author or key in " cite$ * warning$
              ""
            }
            { key sortify }
          if$
        }
        { author sort.format.names }
      if$
    }
    
    FUNCTION {author.editor.sort}
    { author empty$
        { editor empty$
            { key empty$
                { "to sort, need author, editor, or key in " cite$ * warning$
                  ""
                }
                { key sortify }
              if$
            }
            { editor sort.format.names }
          if$
        }
        { author sort.format.names }
      if$
    }
    
    FUNCTION {author.organization.sort}
    { author empty$
        { organization empty$
            { key empty$
                { "to sort, need author, organization, or key in " cite$ * warning$
                  ""
                }
                { key sortify }
              if$
            }
            { "The " #4 organization chop.word sortify }
          if$
        }
        { author sort.format.names }
      if$
    }
    
    FUNCTION {editor.organization.sort}
    { editor empty$
        { organization empty$
            { key empty$
                { "to sort, need editor, organization, or key in " cite$ * warning$
                  ""
                }
                { key sortify }
              if$
            }
            { "The " #4 organization chop.word sortify }
          if$
        }
        { editor sort.format.names }
      if$
    }
    
    FUNCTION {presort}
    { type$ "book" =
      type$ "inbook" =
      or
        'author.editor.sort
        { type$ "proceedings" =
            'editor.organization.sort
            { type$ "manual" =
                'author.organization.sort
                'author.sort
              if$
            }
          if$
        }
      if$
      "    "
      *
      year field.or.null sortify
      *
      "    "
      *
      title field.or.null
      sort.format.title
      *
      #1 entry.max$ substring$
      'sort.key$ :=
    }
    
    ITERATE {presort}
    
    SORT
    
    STRINGS { longest.label }
    
    INTEGERS { number.label longest.label.width }
    
    FUNCTION {initialize.longest.label}
    { "" 'longest.label :=
      #1 'number.label :=
      #0 'longest.label.width :=
    }
    
    FUNCTION {longest.label.pass}
    { number.label int.to.str$ 'label :=
      number.label #1 + 'number.label :=
      label width$ longest.label.width >
        { label 'longest.label :=
          label width$ 'longest.label.width :=
        }
        'skip$
      if$
    }
    
    EXECUTE {initialize.longest.label}
    
    ITERATE {longest.label.pass}
    
    FUNCTION {begin.bib}
    { preamble$ empty$
        'skip$
        { preamble$ write$ newline$ }
      if$
      "\begin{thebibliography}{"  longest.label  * "}" * write$ newline$
    }
    
    EXECUTE {begin.bib}
    
    EXECUTE {init.state.consts}
    
    ITERATE {call.type$}
    
    FUNCTION {end.bib}
    { newline$
      "\end{thebibliography}" write$ newline$
    }
    
    EXECUTE {end.bib}
    
  • references.bib847 B
    @article{alon1999space,
      author  = {Alon, Noga and Matias, Yossi and Szegedy, Mario},
      title   = {The space complexity of approximating the frequency moments},
      journal = {Journal of Computer and System Sciences},
      volume  = {58},
      number  = {1},
      pages   = {137--147},
      year    = {1999}
    }
    
    @book{muthukrishnan2005data,
      author    = {Muthukrishnan, S.},
      title     = {Data Streams: Algorithms and Applications},
      series    = {Foundations and Trends in Theoretical Computer Science},
      publisher = {Now Publishers},
      year      = {2005}
    }
    
    @inproceedings{indyk2005optimal,
      author    = {Indyk, Piotr and Woodruff, David},
      title     = {Optimal approximations of the frequency moments of data streams},
      booktitle = {Proceedings of the 37th Annual ACM Symposium on Theory of Computing},
      pages     = {202--208},
      year      = {2005}
    }
    
  • main.pdfprebuilt · 236 KBReplaced by the first recompile.

    Binary file, seeded as-is.

  • main.synctex.gzprebuilt · 29 KBReplaced by the first recompile.

    Binary file, seeded as-is.