this is for holding javascript data
Jiahao Chen Add main LaTeX article file and makefile
over 8 years ago
Commit id: b73b7e6ca1111aa1a8720f71cceec8857ed148ee
deletions | additions
diff --git a/Makefile b/Makefile
new file mode 100644
index 0000000..04defe5
--- /dev/null
+++ b/Makefile
...
MAIN=main
pdf: include.tex
latexmk -pdf $(MAIN)
include.tex: layout.md
cut -f1 -d. layout.md | sed 's/^/\\include\{/' | sed 's/$$/\}/' > include.tex
clean:
rm -vf *.bbl *.blg *.aux *.fls *.fdb_latexmk *.log *.out *.toc $(MAIN).pdf include.tex
diff --git a/main.tex b/main.tex
new file mode 100644
index 0000000..6e39ebe
--- /dev/null
+++ b/main.tex
...
% SIAM Article Template
\documentclass[review]{siamart}
% Information that is shared between the article and the supplement
% (title and author information, macros, packages, etc.) goes into
% ex_shared.tex. If there is no supplement, this file can be included
% directly.
\input{ex_shared}
% Optional PDF information
\ifpdf
\hypersetup{
pdftitle={\TheTitle},
pdfauthor={\TheAuthors}
}
\fi
% The next statement enables references to information in the
% supplement. See the xr-hyperref package for details.
\externaldocument{ex_supplement}
% FundRef data to be entered by SIAM
%
%
%
%
%
%
%
%
%
%
%
\begin{document}
\maketitle
% REQUIRED
\begin{abstract}
This is an example SIAM \LaTeX\ article. This can be used as a
template for new articles. Abstracts must be able to stand alone
and so cannot contain citations to the paper's references,
equations, etc. An abstract must consist of a single paragraph and
be concise. Because of online formatting, abstracts must appear as
plain as possible. Any equations should be inline.
\end{abstract}
% REQUIRED
\begin{keywords}
example, \LaTeX
\end{keywords}
% REQUIRED
\begin{AMS}
68Q25, 68R10, 68U05
\end{AMS}
\section{Introduction}
The introduction introduces the context and summarizes the
manuscript. It is importantly to clearly state the contributions of
this piece of work. The next two paragraphs are text filler,
generated by the \texttt{lipsum} package.
\lipsum[2-3]
% The outline is not required, but we show an example here.
The paper is organized as follows. Our main results are in
\cref{sec:main}, our new algorithm is in \cref{sec:alg}, experimental
results are in \cref{sec:experiments}, and the conclusions follow in
\cref{sec:conclusions}.
\section{Main results}
\label{sec:main}
We interleave text filler with some example theorems and theorem-like
items.
\lipsum[4]
Here we state our main result as \cref{thm:bigthm}; the proof is
deferred to \cref{sec:proof}.
\begin{theorem}[$LDL^T$ Factorization \cite{GoVa13}]\label{thm:bigthm}
If $A \in \mathbb{R}^{n \times n}$ is symmetric and the principal
submatrix $A(1:k,1:k)$ is nonsingular for $k=1:n-1$, then there
exists a unit lower triangular matrix $L$ and a diagonal matrix
\begin{displaymath}
D = \diag(d_1,\dots,d_n)
\end{displaymath}
such that $A=LDL^T$. The factorization is unique.
\end{theorem}
\lipsum[6]
\begin{theorem}[Mean Value Theorem]\label{thm:mvt}
Suppose $f$ is a function that is continuous on the closed interval
$[a,b]$. and differentiable on the open interval $(a,b)$.
Then there exists a number $c$ such that $a < c < b$ and
\begin{displaymath}
f'(c) = \frac{f(b)-f(a)}{b-a}.
\end{displaymath}
In other words,
\begin{displaymath}
f(b)-f(a) = f'(c)(b-a).
\end{displaymath}
\end{theorem}
Observe that \cref{thm:bigthm,thm:mvt,cor:a} correctly mix references
to multiple labels.
\begin{corollary}\label{cor:a}
Let $f(x)$ be continuous and differentiable everywhere. If $f(x)$
has at least two roots, then $f'(x)$ must have at least one root.
\end{corollary}
\begin{proof}
Let $a$ and $b$ be two distinct roots of $f$.
By \cref{thm:mvt}, there exists a number $c$ such that
\begin{displaymath}
f'(c) = \frac{f(b)-f(a)}{b-a} = \frac{0-0}{b-a} = 0.
\end{displaymath}
\end{proof}
Note that it may require two \LaTeX\ compilations for the proof marks
to show.
Display matrices can be rendered using environments from \texttt{amsmath}:
\begin{equation}\label{eq:matrices}
S=\begin{bmatrix}1&0\\0&0\end{bmatrix}
\quad\text{and}\quad
C=\begin{pmatrix}1&1&0\\1&1&0\\0&0&0\end{pmatrix}.
\end{equation}
Equation \cref{eq:matrices} shows some example matrices.
We calculate the Fr\'{e}chet derivative of $F$ as follows:
\begin{subequations}
\begin{align}
F'(U,V)(H,K)
&= \langle R(U,V),H\Sigma V^{T} + U\Sigma K^{T} -
P(H\Sigma V^{T} + U\Sigma K^{T})\rangle \label{eq:aa} \\
&= \langle R(U,V),H\Sigma V^{T} + U\Sigma K^{T}\rangle
\nonumber \\
&= \langle R(U,V)V\Sigma^{T},H\rangle +
\langle \Sigma^{T}U^{T}R(U,V),K^{T}\rangle. \label{eq:bb}
\end{align}
\end{subequations}
\Cref{eq:aa} is the first line, and \cref{eq:bb} is the last line.
\section{Algorithm}
\label{sec:alg}
\lipsum[40]
Our analysis leads to the algorithm in \cref{alg:buildtree}.
\begin{algorithm}
\caption{Build tree}
\label{alg:buildtree}
\begin{algorithmic}
\STATE{Define $P:=T:=\{ \{1\},\ldots,\{d\}$\}}
\WHILE{$\#P > 1$}
\STATE{Choose $C^\prime\in\mathcal{C}_p(P)$ with $C^\prime := \operatorname{argmin}_{C\in\mathcal{C}_p(P)} \varrho(C)$}
\STATE{Find an optimal partition tree $T_{C^\prime}$ }
\STATE{Update $P := (P{\setminus} C^\prime) \cup \{ \bigcup_{t\in C^\prime} t \}$}
\STATE{Update $T := T \cup \{ \bigcup_{t\in\tau} t : \tau\in T_{C^\prime}{\setminus} \mathcal{L}(T_{C^\prime})\}$}
\ENDWHILE
\RETURN $T$
\end{algorithmic}
\end{algorithm}
\lipsum[41]
\section{Experimental results}
\label{sec:experiments}
\lipsum[50]
\Cref{fig:testfig} shows some example results. Additional results are
available in the supplement in \cref{tab:foo}.
\begin{figure}[htbp]
\centering
\label{fig:a}\includegraphics{lexample_fig1}
\caption{Example figure using external image files.}
\label{fig:testfig}
\end{figure}
\lipsum[51]
\section{Discussion of \texorpdfstring{{\boldmath$Z=X \cup Y$}}{Z = X union Y}}
\lipsum[76]
\section{Conclusions}
\label{sec:conclusions}
Some conclusions here.
\appendix
\section{An example appendix}
\lipsum[71]
\section*{Acknowledgments}
We would like to acknowledge the assistance of volunteers in putting
together this example manuscript and supplement.
\bibliographystyle{siamplain}
\bibliography{bibliography/biblio}
\end{document}
diff --git a/siamart.cls b/siamart.cls
new file mode 100644
index 0000000..e5989ac
--- /dev/null
+++ b/siamart.cls
...
%%
%% This is file `siamart.cls', based on article.cls
%% Revision of siam macros for use with LaTeX 2e
%%
%% August 2015
%%
%% Major overhaul including hyperlinks, clever cross-references, and
%% supplemental file support.
%%
%% You are not allowed to change this file.
%%
%% You are allowed to distribute this file under the condition that
%% it is distributed together with all of the files in the siam macro
%% distribution. These are:
%%
%% * siamart.cls: Main LaTeX class file (this file)
%% * siamplain.bst: Bibliographic style file for BibTeX
%% * docsiamart.tex: Produces documentation
%% * docsiamart.pdf: Documentation
%% * references.bib: BibTeX database for documentation and examples
%% * ex_article.tex: Template for article
%% * ex_supplement.tex: Template for supplement
%% * ex_shared.tex: Template for article/supplement shared info
%%
%% If you receive only some of these files from someone, complain!
%%
%% You are NOT ALLOWED to distribute this file alone. You are NOT
%% ALLOWED to take money for the distribution or use of either this
%% file or a changed version, except for a nominal charge for copying
%% etc.
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
\NeedsTeXFormat{LaTeX2e}[1995/06/01]
%%
%% >>tgk>> --- Modified Summer 2015 ---
%%
% [[[TODO: Update date and version in next line]]]
\ProvidesClass{siamart}[2015/09/01 v1.0 LaTeX document e-class]
%%
%% <
%%
\RequirePackage[leqno]{amsmath}[2.14]
\newcommand\@ptsize{}
\newif\if@restonecol
\newif\if@titlepage
\@titlepagefalse
%%
%% >>tgk>> --- Removed Summer 2015 ---
%%
% \newif\if@oneeqnum
% \@oneeqnumfalse
% \newif\if@onetabnum
% \@onetabnumfalse
% \newif\if@onefignum
% \@onefignumfalse
% \newif\if@onethmnum
% \@onethmnumfalse
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Support for "review" class option to turn on features like line
%% numbers for paper under review.
\newif\if@review
\@reviewfalse
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Support for "supplement" class option to change title and labels
%% appropriately for supplemental materials.
\newif\if@supplement
\@supplementfalse
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Support for "hidelinks" class option to hide hyperlinks.
\newif\if@hidelinks
\@hidelinksfalse
%%
%% <
%%
%_%_%_%_%
\newif\if@translated
\@translatedfalse
%_%_%_%_%
%\newif\if@openbib
%\@openbibfalse
\DeclareOption{a4paper}
{\setlength\paperheight {297mm}%
\setlength\paperwidth {210mm}}
\DeclareOption{a5paper}
{\setlength\paperheight {210mm}%
\setlength\paperwidth {148mm}}
\DeclareOption{b5paper}
{\setlength\paperheight {250mm}%
\setlength\paperwidth {176mm}}
\DeclareOption{letterpaper}
{\setlength\paperheight {11in}%
\setlength\paperwidth {8.5in}}
\DeclareOption{legalpaper}
{\setlength\paperheight {14in}%
\setlength\paperwidth {8.5in}}
\DeclareOption{executivepaper}
{\setlength\paperheight {10.5in}%
\setlength\paperwidth {7.25in}}
\DeclareOption{landscape}
{\setlength\@tempdima {\paperheight}%
\setlength\paperheight {\paperwidth}%
\setlength\paperwidth {\@tempdima}}
\DeclareOption{10pt}{\renewcommand\@ptsize{0}}
\DeclareOption{11pt}{\renewcommand\@ptsize{1}}
\DeclareOption{12pt}{\renewcommand\@ptsize{2}}
\DeclareOption{twoside}{\@twosidetrue \@mparswitchtrue}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Support for new class options
\DeclareOption{review}{\@reviewtrue}
\DeclareOption{supplement}{\@supplementtrue}
\DeclareOption{hidelinks}{\@hidelinkstrue}
%%
%% <
%%
\DeclareOption{final}{\setlength\overfullrule{0pt}}
\DeclareOption{notitlepage}{\@titlepagefalse}
\DeclareOption{onecolumn}{\@twocolumnfalse}
\DeclareOption{twocolumn}{\@twocolumntrue}
%%
%% >>tgk>> --- Removed Summer 2015 ---
%%
% \DeclareOption{leqno}{\input{leqno.clo}}
% \DeclareOption{subeqn}{\input{subeqn.clo}}
% \DeclareOption{oneeqnum}{\@oneeqnumtrue} % added 7.19.96
% \DeclareOption{onetabnum}{\@onetabnumtrue} % added 7.19.96
% \DeclareOption{onefignum}{\@onefignumtrue} % added 7.19.96
% \DeclareOption{onethmnum}{\@onethmnumtrue} % added 7.29.96
%%
%% <
%%
\DeclareOption{translated}{\@translatedtrue} % jan 7 2004
%\DeclareOption{openbib}{\@openbibtrue}
\ExecuteOptions{letterpaper,10pt,twoside,onecolumn,leqno,draft,notitlepage}
\ProcessOptions
%
% eliminate siam10.clo altogether:
%%%%%%%%%%%%%%%%%\input{siam1\@ptsize.clo}
\renewcommand{\normalsize}{%
\@setfontsize\normalsize\@xpt\@xiipt
\abovedisplayskip 10\p@ \@plus2\p@ \@minus5\p@
\abovedisplayshortskip \z@ \@plus3\p@ %5\p@ \@plus1\p@ \@minus2.5\p@
\belowdisplayshortskip 6\p@ \@plus3\p@ \@minus3\p@ %5\p@ \@plus1\p@ \@minus2.5\p@
\belowdisplayskip \abovedisplayskip
\let\@listi\@listI}
\normalsize
\newcommand{\small}{%
\@setfontsize\small\@ixpt{11}%
\abovedisplayskip 8.5\p@ \@plus3\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus2\p@
\belowdisplayshortskip 4\p@ \@plus2\p@ \@minus2\p@
\def\@listi{\leftmargin\leftmargini
\topsep \z@ %4\p@ \@plus2\p@ \@minus2\p@
\parsep \z@ %2\p@ \@plus\p@ \@minus\p@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
\newcommand{\footnotesize}{%
\@setfontsize\footnotesize\@viiipt{9.5}%
\abovedisplayskip 6\p@ \@plus2\p@ \@minus4\p@
\abovedisplayshortskip \z@ \@plus\p@ %\abovedisplayskip
\belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@ %\belowdisplayskip
\def\@listi{\leftmargin\leftmargini
\topsep \z@
\parsep \z@
\itemsep \parsep}%
\belowdisplayskip \abovedisplayskip
}
\newcommand{\scriptsize}{\@setfontsize\scriptsize\@viipt\@viiipt}
\newcommand{\tiny}{\@setfontsize\tiny\@vpt\@vipt}
\newcommand{\large}{\@setfontsize\large\@xiipt{14}}
\newcommand{\Large}{\@setfontsize\Large\@xivpt{18}}
\newcommand{\LARGE}{\@setfontsize\LARGE\@xviipt{22}}
\newcommand{\huge}{\@setfontsize\huge\@xxpt{25}}
\newcommand{\Huge}{\@setfontsize\Huge\@xxvpt{30}}
\if@twocolumn
\setlength\parindent{1em}
\else
\setlength\parindent{.25in}
\fi
\setlength\headheight{10\p@}
\setlength\headsep {.2in}
%\setlength\topskip {10\p@}
\setlength\footskip{.2in}
\if@compatibility
\setlength\maxdepth{4\p@}
\else
\setlength\maxdepth{.5\topskip}
\fi
\setlength\@maxdepth\maxdepth
\if@compatibility
\if@twocolumn
\setlength\textwidth{410\p@}
\else
\setlength\textwidth{5.125in}
\fi
\else
\if@twocolumn
\setlength\textwidth{410\p@}
\else
\setlength\textwidth{5.125in}
\fi
\fi
%\if@compatibility\else
% \@settopoint\textwidth
%\fi
\if@compatibility
\setlength\textheight{8.25in}
\else
\setlength\textheight{8.25in}
\fi
%\addtolength\textheight{\topskip}
\if@compatibility
\if@twoside
% \setlength\oddsidemargin {.5in}
% \setlength\evensidemargin {.5in}
\setlength\marginparwidth {1.25in}
\else
% \setlength\oddsidemargin {.5in}
% \setlength\evensidemargin {.5in}
\setlength\marginparwidth {1.25in}
\fi
\if@twocolumn
\setlength\oddsidemargin {30\p@}
\setlength\evensidemargin {30\p@}
\setlength\marginparwidth {48\p@}
\fi
\else
\if@twoside
% \setlength\oddsidemargin {.5in}
% \setlength\evensidemargin {.5in}
\setlength\marginparwidth {1.25in}
\else
% \setlength\oddsidemargin {.5in}
% \setlength\evensidemargin {.5in}
\setlength\marginparwidth {1.25in}
\fi
\@settopoint\oddsidemargin
\@settopoint\marginparwidth
\fi
\if@twocolumn
\setlength\marginparsep {10\p@}
\else
\setlength\marginparsep{11\p@}
\fi
\setlength\marginparpush{5\p@}
\if@compatibility
\setlength\topmargin{\z@}
\else
\setlength\topmargin {\z@}
% \@settopoint\topmargin
\fi
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Fix to make bookmarks show up when using pdflatex (+hypertex).
\setcounter{tocdepth}{3}
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% First step to adding the ntheorem package for theorems, etc. Second
%% step is further down below. Need to split them because this needs
%% to be loaded *before* cleveref and lineno.
\RequirePackage[amsmath,thmmarks,hyperref]{ntheorem}[1.33]
%%
%% <
%%
\setlength\footnotesep{6.65\p@}
\skip\footins 13\p@ \@plus 4\p@ \@minus 2\p@
\setlength\floatsep {12\p@ \@plus 2\p@ \@minus 2\p@}
\setlength\textfloatsep{20\p@ \@plus 2\p@ \@minus 4\p@}
\setlength\intextsep {12\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@ \@plus 1fil}
\setlength\@fpsep{8\p@ \@plus 2fil}
\setlength\@fpbot{0\p@ \@plus 1fil}
\setlength\@dblfptop{0\p@ \@plus 1fil}
\setlength\@dblfpsep{8\p@ \@plus 2fil}
\setlength\@dblfpbot{0\p@ \@plus 1fil}
\setlength\partopsep{\z@}
\def\@listI{\leftmargin\leftmargini
\parsep \z@
\topsep \z@
\itemsep \parsep}
\let\@listi\@listI
\@listi
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep \z@
\parsep \z@
\itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep \z@
\parsep \z@
\partopsep \z@
\itemsep \topsep}
\def\@listiv {\leftmargin\leftmarginiv
\labelwidth\leftmarginiv
\advance\labelwidth-\labelsep}
\def\@listv {\leftmargin\leftmarginv
\labelwidth\leftmarginv
\advance\labelwidth-\labelsep}
\def\@listvi {\leftmargin\leftmarginvi
\labelwidth\leftmarginvi
\advance\labelwidth-\labelsep}
%
\setlength\lineskip{1\p@}
\setlength\normallineskip{1\p@}
\renewcommand\baselinestretch{}
%%
%% >>tgk>> Modified Summer 2015
%%
\setlength\parskip{0\p@}
%%
%% <
%%
\@lowpenalty 51
\@medpenalty 151
\@highpenalty 301
\setcounter{topnumber}{2}
\renewcommand\topfraction{.9}
\setcounter{bottomnumber}{1}
\renewcommand\bottomfraction{.1}
\setcounter{totalnumber}{3}
\renewcommand\textfraction{.1}
\renewcommand\floatpagefraction{.91}
\setcounter{dbltopnumber}{2}
\renewcommand\dbltopfraction{.7}
\renewcommand\dblfloatpagefraction{.5}
%\renewcommand{\ps@plain}{\let\@mkboth\@gobbletwo%
% \renewcommand{\@oddhead}{}%
% \renewcommand{\@evenhead}{}%
% \renewcommand{\@evenfoot}{\hfil\footnotesize\textrm{\thepage}\hfil}%
% \renewcommand{\@oddfoot}{\@evenfoot}}
%
% \def\copyrightfooter#1{\gdef\@copyrightfooter{#1}}
% \gdef\@copyrightfooter{}
%
%%%add copyright footer, per SIAM
% \renewcommand{\ps@plain}{\let\@mkboth\@gobbletwo%
% \renewcommand{\@oddhead}{}%
% \renewcommand{\@evenhead}{}%
% \renewcommand{\@evenfoot}{\hfil\vtop{\hsize\textwidth\centering\footnotesize\textrm{\thepage}\\[4pt] \@copyrightfooter}\hfil}%
% \renewcommand{\@oddfoot}{\@evenfoot}}
\newlength{\fromfoliotocopyright}
\setlength{\fromfoliotocopyright}{.75in}
\newcommand{\footercopyright}{}
\newcommand{\f@@terwithc@pyright}[1]{\raisebox{0pt}[\height][0pt]{\vtop{%
\hbox to \textwidth{\normalfont\footnotesize\hfil\rule{0pt}{14.4pt}#1\hfil}%
\vskip\fromfoliotocopyright%
\hbox to \textwidth{\normalfont\normalsize\hfil\footercopyright\hfil}%
}}%
}
\renewcommand{\ps@plain}{\let\@mkboth\@gobbletwo%
\renewcommand{\@oddhead}{}%
\renewcommand{\@evenhead}{}%
\renewcommand{\@evenfoot}{\f@@terwithc@pyright{\thepage}}%
\renewcommand{\@oddfoot}{\@evenfoot}}
\def\ps@headings{%
\renewcommand{\@oddfoot}{\hfil\vtop{\hsize\textwidth\centering\footnotesize\textrm{\strut}\\[4pt] \@copyrightfooter}\hfil}\let\@evenfoot\@oddfoot%
\def\@evenhead{\rlap{\thepage}\hfil\upshape\footnotesize\leftmark\hfil}% %!
\def\@oddhead{\hbox{}\hfil{\upshape\footnotesize\rightmark}\hfil\llap{\thepage}}% %!
\let\@mkboth\markboth
\def\sectionmark##1{%
\markboth {\uppercase{\ifnum \c@secnumdepth >\z@
\thesection.\hskip 1em\relax\fi
##1}}{}}%
\def\subsectionmark##1{%
\markright {\ifnum \c@secnumdepth >\@ne
\thesubsection\hskip 1em\relax \fi
##1}}}
%\def\ps@myheadings{%
% \renewcommand{\@oddfoot}{\hfil\vtop{\hsize\textwidth\centering\footnotesize\textrm{\strut}\\[4pt] \@copyrightfooter}\hfil}\let\@evenfoot\@oddfoot%
% \def\@evenhead{\rlap{\thepage}\hfil\upshape\footnotesize\leftmark\hfil}% %!
% \def\@oddhead{\hbox{}\hfil{\upshape\footnotesize\rightmark}\hfil\llap{\thepage}}% %!
% \let\@mkboth\@gobbletwo
% \let\sectionmark\@gobble
% \let\subsectionmark\@gobble
% }
\def\ps@myheadings{%
\def\@evenfoot{\f@@terwithc@pyright{}}%
\let\@oddfoot\@evenfoot
\def\@evenhead{\rlap{\thepage}\hfil\upshape\footnotesize\leftmark\hfil}% %!
\def\@oddhead{\hbox{}\hfil{\upshape\footnotesize\rightmark}\hfil\llap{\thepage}}% %!
\let\@mkboth\@gobbletwo
\let\sectionmark\@gobble
\let\subsectionmark\@gobble
}
\newcommand\maketitle{\par
\begingroup\def\@fnsymbol##1{\ensuremath{\ifcase##1\or *\or \dagger\or \ddagger\or
\mathsection\or \mathparagraph\or \|\or \#\or \dagger\dagger
\or \ddagger\ddagger\else\@ctrerr\fi}}
\renewcommand{\thefootnote}{\fnsymbol{footnote}}%
\def\@makefnmark{\hbox to\z@{$\m@th^{\@thefnmark}$\hss}}%
\long\def\@makefntext##1{\parindent 1em\noindent
\hbox to1.8em{\hss$\m@th^{\@thefnmark}$}##1}%
\if@twocolumn
\ifnum \col@number=\@ne
\@maketitle
\else
\twocolumn[\@maketitle]%
\fi
\else
\global\@topnum\z@ % Prevents figures from going at top of page.
\@maketitle
\fi
\thispagestyle{plain}\@thanks
\endgroup
\setcounter{footnote}{0}%
\let\maketitle\relax\let\@maketitle\relax
\gdef\@thanks{}\gdef\@author{}\gdef\@title{}\let\thanks\relax}
%_%_%_%_%
%_%_%_%_% Macros for subtitle (subauthor?), altered slugline/slugger for translated version
%_%_%_%_%
\long\def\subtitle#1{\gdef\@subtitle{\par\vskip8pt\footnotesize#1}}
\def\@subtitle{}
%
\long\def\supertitle#1{\gdef\@supertitle{\par\bfseries#1\vskip17.5pt\par}}
\def\@supertitle{}
%_%_%_%_%
%_%_%_%_%
%_%_%_%_%
%
\def\@translation{}
%
\def\copyrightlineone#1{\gdef\@copyrightlineone{#1}}
\def\copyrightlinetwo#1{\gdef\@copyrightlinetwo{#1}}
\def\@copyrightlineone{Society for Industrial and Applied Mathematics}
\def\@copyrightlinetwo{}
\def\slugger#1#2#3#4#5{\gdef\@slugger{\thispagestyle{plain}%
\vspace*{-36pt}
{\sixptsize\baselineskip10pt
\noindent
\expandafter\csname#1\endcsname.\hspace*{\fill}
{\scriptsize{\copyright}} #2 \@copyrightlineone\vspace*{-1.2mm}\\
Vol.\ #3, No.\ #4, pp.\ #5
\hspace*{\fill} \@translation\@copyrightlinetwo\par}
\normalsize\vskip19.7pt}}
%
\if@translated
\newcommand\tpa{T{\fiveptsize HEORY}~P{\fiveptsize ROBAB.}~A{\fiveptsize PPL}}% added 1/7/04
\def\@translation{Translated from Russian Journal}
\else%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcommand\tpa{T{\fiveptsize HEORY}~P{\fiveptsize ROBAB.}~A{\fiveptsize PPL}}% added 1/7/04
\fi
%
\def\@slugger{}
\def\@slugline{}
%_%_%_%_%
%_%_%_%_%
%_%_%_%_%
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Support for "supplement" class option, to change the title and labels.
\def\siampretitle{}
\def\siamprelabel{}
\if@supplement
\def\siampretitle{Supplementary Materials: }
\def\siamprelabel{S}
\fi
%%
%% <
%%
\def\@maketitle{%
\null
\@slugger
\begin{center}%
\@supertitle%
%%
%% >>tgk>> --- Modified Summer 2015 ---
%%
%% Support for supplementary materials
{\bfseries\MakeUppercase{\siampretitle}\@ucnothanks{\@title}\par}%
%%
%% <
%%
\vskip .075in%
{\footnotesize
\spaceskip=1.5\fontdimen2\the\font
\def\and{\ \scriptsize AND }
\@tempswafalse\expandafter\@doauth\@author\and\relax}%
\@subtitle%
\end{center}%
\par
\vskip .11in}
\def\@ucnothanks#1{\expandafter\@ucnt#1\thanks\relax}
%%
%% >>tgk>> --- Modified Summer 2015 ---
%%
%% Fixed capitalization to work with macro for title
\def\@ucnt#1\thanks{\uppercase\expandafter{#1}\futurelet\@tempa\@ucnta}
%%
%% <
%%
\def\@ucnta{\ifx\@tempa\relax\else\@ucntb\fi}
\def\@ucntb#1\thanks\relax{\thanks{#1}}
\def\@doauth#1\and{\let\@nextdoa=\@doauth
\def\@tempc{\@ucnothanks{#1}}
\futurelet\@tempa\@doautha}
\def\@doautha{\ifx\@tempa\relax
\if@tempswa {\and}\fi
\let\@nextdoa=\relax
\else
\if@tempswa \gdef\and{,\ \scriptsize AND }, \fi
\fi
\@tempc\unskip\@tempswatrue\@nextdoa}
\let\and=\relax
\newcommand{\sixptsize}{%
\@setfontsize\sixptsize{6}{8}}
%%create five-point size
\newcommand{\fiveptsize}{%
\@setfontsize\fiveptsize{5}{7}}
\newcommand\simac{SIAM J{\fiveptsize OURNAL} M{\fiveptsize ACRO}}
\newcommand\siap{SIAM J.\ A{\fiveptsize PPL}.\ M{\fiveptsize ATH}}
\newcommand\sicomp{SIAM J.\ C{\fiveptsize OMPUT}}
\newcommand\sicon{SIAM J.\ C{\fiveptsize ONTROL} O{\fiveptsize PTIM}}
\newcommand\sidma{SIAM J.\ D{\fiveptsize ISCRETE} M{\fiveptsize ATH}}
\newcommand\sima{SIAM J.\ M{\fiveptsize ATH}.\ A{\fiveptsize NAL}}
\newcommand\simax{SIAM J.\ M{\fiveptsize ATRIX} A{\fiveptsize NAL}.\ A{\fiveptsize PPL}}
\newcommand\sinum{SIAM J.\ N{\fiveptsize UMER}.\ A{\fiveptsize NAL}}
\newcommand\siopt{SIAM J.\ O{\fiveptsize PTIM}}
\newcommand\sisc{SIAM J.\ S{\fiveptsize CI}.\ C{\fiveptsize OMPUT}}
\newcommand\sirev{SIAM R{\fiveptsize EV}}
\newcommand\mms{M{\fiveptsize ULTISCALE}~M{\fiveptsize ODEL}.~S{\fiveptsize IMUL}} % Added 9/17/02
\setcounter{secnumdepth}{3}
\newcounter {section}
\newcounter {subsection}[section]
\newcounter {subsubsection}[subsection]
\newcounter {paragraph}[subsubsection]
\newcounter {subparagraph}[paragraph]
%%
%% >>tgk>> --- Modified Summer 2015 ---
%%
%% Adding supplement support.
\renewcommand\thesection {\siamprelabel\arabic{section}}
%%
%% <
%%
\renewcommand\thesubsection {\thesection.\arabic{subsection}}
\renewcommand\thesubsubsection {\thesubsection.\arabic{subsubsection}}
\renewcommand\theparagraph {\thesubsubsection.\arabic{paragraph}}
\renewcommand\thesubparagraph {\theparagraph.\arabic{subparagraph}}
\def\nopunct{\def\@mypunct{}}
\gdef\@mypunct{.}
\def\punct{\gdef\@mypunct{.}}
\def\@sect#1#2#3#4#5#6[#7]#8{\ifnum #2>\c@secnumdepth
\def\@svsec{}\else
\refstepcounter{#1}\edef\@svsec{\csname the#1\endcsname.\hskip .5em }\fi
\@tempskipa #5\relax
\ifdim \@tempskipa>\z@
\begingroup #6\relax
\@hangfrom{\hskip #3\relax\@svsec}{\interlinepenalty \@M #8\par}
\endgroup
\csname #1mark\endcsname{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}\else
\def\@svsechd{#6\hskip #3\@svsec #8\@mypunct\csname #1mark\endcsname
{#7}\addcontentsline
{toc}{#1}{\ifnum #2>\c@secnumdepth \else
\protect\numberline{\csname the#1\endcsname}\fi
#7}}\fi
\@xsect{#5}}
\def\@ssect#1#2#3#4#5{\@tempskipa #3\relax
\ifdim \@tempskipa>\z@
\begingroup #4\@hangfrom{\hskip #1}{\interlinepenalty \@M
#5\@mypunct\par}\endgroup
\else \def\@svsechd{#4\hskip #1\relax #5\@mypunct}\fi
\@xsect{#3}}
\newcommand\section{\@startsection{section}{1}{.25in}%
{1.3ex \@plus .5ex \@minus .2ex}%
{-.5em \@plus -.1em}%
{\reset@font\normalsize\bfseries}}
\newcommand\subsection{\@startsection{subsection}{2}{.25in}%
{1.3ex\@plus .5ex \@minus .2ex}%
{-.5em \@plus -.1em}%
{\reset@font\normalsize\bfseries}}
\newcommand\subsubsection{\@startsection{subsubsection}{3}{.25in}%
{1.3ex\@plus .5ex \@minus .2ex}%
{-.5em \@plus -.1em}%
{\reset@font\normalsize\bfseries}}
\newcommand\paragraph{\@startsection{paragraph}{4}{.25in}%
{\parskip}%
{-.5em plus -.1em}%
{\reset@font\normalsize\itshape}}
\newcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}%
{\parskip}%
{-.5em plus -.1em}%
{\reset@font\normalsize\itshape}}
\if@twocolumn
\setlength\leftmargini {2em}
\else
\setlength\leftmargini {0.5in}
\fi
\setlength\leftmarginii {22pt}
\setlength\leftmarginiii {18.7pt}
\setlength\leftmarginiv {17pt}
\if@twocolumn
\setlength\leftmarginv {.5em}
\setlength\leftmarginvi {.5em}
\else
\setlength\leftmarginv {10pt}
\setlength\leftmarginvi {10pt}
\fi
\setlength \leftmargin{\leftmargini}
\setlength \labelsep {.5em}
\setlength \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty -\@lowpenalty
\@itempenalty -\@lowpenalty
\renewcommand\theenumi{\arabic{enumi}}
\renewcommand\theenumii{\alph{enumii}}
\renewcommand\theenumiii{\roman{enumiii}}
\renewcommand\theenumiv{\Alph{enumiv}}
\newcommand\labelenumi{\textup{\theenumi.}}
\newcommand\labelenumii{\textup{(\theenumii)}}
\newcommand\labelenumiii{\textup{\theenumiii.}}
\newcommand\labelenumiv{\textup{\theenumiv.}}
\renewcommand\p@enumii{\theenumi}
\renewcommand\p@enumiii{\theenumi\theenumii}
\renewcommand\p@enumiv{\p@enumiii\theenumiii}
\newcommand\labelitemi{$\m@th\bullet$}
\newcommand\labelitemii{\normalfont\bfseries --}
\newcommand\labelitemiii{$\m@th\ast$}
\newcommand\labelitemiv{$\m@th\cdot$}
\newenvironment{description}
{\list{}{\labelwidth\z@ \itemindent-\leftmargin
\let\makelabel\descriptionlabel}}
{\endlist}
\newcommand\descriptionlabel[1]{\hspace\labelsep
\normalfont\bfseries #1}
\newcounter{rmnum}
\newenvironment{romannum}
{\begin{list}{{\upshape (\roman{rmnum})}}{\usecounter{rmnum}
\setlength{\leftmargin}{0pt}
\setlength{\itemindent}{42pt}}}{\end{list}}
\newcounter{muni}
\newenvironment{remunerate}
{\begin{list}{{\upshape \arabic{muni}.}}{\usecounter{muni}
\setlength{\leftmargin}{0pt}
\setlength{\itemindent}{38pt}}}{\end{list}}
\newenvironment{@abssec}[1]{%
\if@twocolumn
\section*{#1}%
\else
\vspace{.05in}\footnotesize
\parindent .2in
{\upshape\bfseries #1. }\ignorespaces
\fi}
{\if@twocolumn\else\par\vspace{.1in}\fi}
\newenvironment{@doisec}[1]{%
\if@twocolumn
\section*{#1}%
\else
\vspace{.05in}\footnotesize
\parindent .2in
{\upshape\bfseries #1. }\ignorespaces\ignorespaces
\fi}
{\if@twocolumn\else\par\vspace{.1in}\fi}
\newenvironment{abstract}{\begin{@abssec}{\abstractname}}{\end{@abssec}}
\newenvironment{keywords}{\begin{@abssec}{\keywordsname}}{\end{@abssec}}
\newenvironment{keyword}{\begin{@abssec}{\keywordname}}{\end{@abssec}}
\newenvironment{AMS}{\begin{@abssec}{\AMSname}}{\end{@abssec}}
\newenvironment{AM}{\begin{@abssec}{\AMname}}{\end{@abssec}}
%\newenvironment{PII}{\begin{@abssec}{\PIIname}}{\end{@abssec}}
\newenvironment{DOI}{\begin{@doisec}{\DOIname}}{\end{@doisec}}
\newenvironment{verse}
{\let\\=\@centercr
\list{}{\itemsep \z@
\itemindent -1.5em%
\listparindent\itemindent
\rightmargin \leftmargin
\advance\leftmargin 1.5em}%
\item[]}
{\endlist}
\newenvironment{quotation}
{\list{}{\listparindent 1.5em%
\itemindent \listparindent
\rightmargin \leftmargin
\parsep \z@ \@plus\p@}%
\item[]}
{\endlist}
\newenvironment{quote}
{\list{}{\rightmargin\leftmargin}%
\item[]}
{\endlist}
%\def\@begintheorem#1#2{\vspace{\abovedisplayskip}\par\bgroup{\scshape #1\ #2. }\it\ignorespaces}
%\def\@opargbegintheorem#1#2#3{\par\bgroup%
% {\scshape #1\ #2\ ({\upshape #3}). }\it\ignorespaces}
%\def\@endtheorem{\egroup\vspace{\belowdisplayskip}}
%\def\proof{\par{\it Proof}. \ignorespaces}
%
%\def\endproof{\vbox{\hrule height0.6pt\hbox{%
% \vrule height1.3ex width0.6pt\hskip0.8ex
% \vrule width0.6pt}\hrule height0.6pt
% }}
\newlength{\@sectionspace}
\setlength{\@sectionspace}{1.3ex \@plus .5ex \@minus .2ex} %the space added before a new section
\newlength{\@negsectionspace}
\setlength{\@negsectionspace}{-1.3ex \@plus -.5ex \@minus -.2ex} %its negation
%%
%% >>tgk>> --- Removed Summer 2015 ---
%%
%\newcommand{\insertsectionspace}{\addvspace{\@sectionspace}}
%\newcommand{\removesectionspace}{\vspace{\@negsectionspace}} %I didn't end up needing these, but they might be needed somewhere
%
% \def\@begintheorem#1#2{\par\addvspace{\@sectionspace}{\scshape #1\ #2. }\itshape\ignorespaces}
%
% \def\@opargbegintheorem#1#2#3{\par\addvspace{\@sectionspace}{\scshape #1\ #2\ ({\upshape #3}). }\itshape\ignorespaces}
%
% \def\@endtheorem{\par\addvspace{\@sectionspace}}
%
% \def\proof{\par\addvspace{\@sectionspace}\textit{Proof}. \ignorespaces}
%
% \newcommand{\@proofbox}{\vbox{\hrule height0.6pt\hbox{\vrule height1.3ex width0.6pt\hskip0.8ex\vrule width0.6pt}\hrule height0.6pt}}
%
% \def\endproof{\ifmmode\@proofbox\else\@proofbox\par\addvspace{\@sectionspace}\fi}
%
% \if@onethmnum
% \newtheorem{theorem}{Theorem}
% \newtheorem{lemma}[theorem]{Lemma}
% \newtheorem{corollary}[theorem]{Corollary}
% \newtheorem{proposition}[theorem]{Proposition}
% \newtheorem{definition}[theorem]{Definition}
% \else
% \newtheorem{theorem}{Theorem}[section]
% \newtheorem{lemma}[theorem]{Lemma}
% \newtheorem{corollary}[theorem]{Corollary}
% \newtheorem{proposition}[theorem]{Proposition}
% \newtheorem{definition}[theorem]{Definition}
% \fi
%%
%% <
%%
% FROM FIXUP.STY
% We now redefine the eqnarray environment to correct the space around
% the operator. Any changes to the definition in LaTeX itself
% will cause the `Warning: unable...'
% message to appear. If this happens it will be necessary to update the
% definition of \@tempb below and incorperate the changes into
% the new definitions of \eqnarray.
% This is the current definition of \eqnarray for the fleqn document style
% latex.ltx
\def\@tempb{%
\stepcounter{equation}%
\def\@currentlabel{\p@equation\theequation}%
\global\@eqnswtrue
\m@th
\global\@eqcnt\z@
\tabskip\@centering
\let\\\@eqncr
$$\everycr{}\halign to\displaywidth\bgroup
\hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
&\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil
&\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
$\displaystyle{##}$\hfil\tabskip\@centering
&\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
\tabskip\z@skip
\cr
}
\ifx\eqnarray\@tempb % Try the default eqnarray environment
\def\eqnarray{%
\stepcounter{equation}%
\def\@currentlabel{\p@equation\theequation}%
\global\@eqnswtrue
\m@th
\global\@eqcnt\z@
\tabskip\@centering
\let\\\@eqncr
$$\everycr{}\halign to\displaywidth\bgroup
\hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
&\global\@eqcnt\@ne \hfil$\displaystyle{{}##{}}$\hfil
&\global\@eqcnt\tw@ $\displaystyle{##}$\hfil\tabskip\@centering
&\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
\tabskip\z@skip
\cr
}
\else \typeout{Warning: Unable to fix unknown version of \string\eqnarray.}
\fi
\def\@tempb{}
%%
%% >>tgk>> --- Removed Summer 2015 ---
%%
%% New Mathops.
% \newcommand\const{\mathop{\operator@font const}\nolimits}
% \newcommand\diag{\mathop{\operator@font diag}\nolimits}
% \newcommand\grad{\mathop{\operator@font grad}\nolimits}
% \newcommand\Range{\mathop{\operator@font Range}\nolimits}
% \newcommand\rank{\mathop{\operator@font rank}\nolimits}
% \newcommand\supp{\mathop{\operator@font supp}\nolimits}
%%
%% <
%%
%%
%% >>tgk>> --- Modified Summer 2015 ---
%%
%% The original changes to introduce the appendix didn't work
%% correctly. In particular, calling \section*{Acknowledgments} after
%% declaring \appendix produced an appendix with a letter (i.e.,
%% Appendix B) but no title --- exactly the reverse of what we would
%% expect. Now, using \section* produces what you would expect, i.e.,
%% just the title "Acknowledgments". The SIAM style guide also allows
%% a numbered but untitled section, so the command \appendixnotitle is
%% defined to facilitate that. Not sure it should be explicitly
%% documented??
%%
\newcommand\gobblepars{%
\@ifnextchar\par%
{\expandafter\gobblepars\@gobble}%
{}}
\newcommand\appendix{%
\setcounter{section}{0}
\setcounter{subsection}{0}
\renewcommand\thesection{\Alph{section}}
\renewcommand{\section}{\secdef\append\sappend}
\newcommand{\appendixnotitle}{%
\refstepcounter{section}%
{\par\addvspace{\@sectionspace}
\reset@font\normalsize\bfseries\appendixname\ \thesection. \gobblepars}%
\addcontentsline{toc}{section}{\appendixname~\thesection}%
}
}
\newcommand\append[2][?]{%
\refstepcounter{section}%
{\par\addvspace{\@sectionspace}
\reset@font\normalsize\bfseries\appendixname\ \thesection. #2\@mypunct{} }%
\addcontentsline{toc}{section}{\appendixname~\thesection. #2}%
\gobblepars
}
\newcommand\sappend[1]{%
{\par\addvspace{\@sectionspace}
\reset@font\normalsize\bfseries#1\@mypunct{} }%
\addcontentsline{toc}{section}{#1}%
\gobblepars
}
%%
%% <
%%
\setlength\arraycolsep{5\p@}
\setlength\tabcolsep{6\p@}
\setlength\arrayrulewidth{.4\p@}
\setlength\doublerulesep{2\p@}
\setlength\tabbingsep{\labelsep}
\skip\@mpfootins = \skip\footins
\setlength\fboxsep{3\p@}
\setlength\fboxrule{.4\p@}
\newcounter{figure}
%%
%% >>tgk>> --- Modified Summer 2015 ---
%%
%% Added \siamprelabel for supplement.
\renewcommand\thefigure{\siamprelabel\@arabic\c@figure}
%%
%% <
%%
\def\fps@figure{tp}
\def\ftype@figure{1}
\def\ext@figure{lof}
\def\fnum@figure{\figurename~\thefigure}
\newenvironment{figure}
{\@float{figure}}
{\end@float}
\newenvironment{figure*}
{\@dblfloat{figure}}
{\end@dblfloat}
\newcounter{table}
%%
%% >>tgk>> Modified Summer 2015
%%
%% Adding support for supplement
\renewcommand{\thetable}{\siamprelabel\@arabic\c@table}
%%
%% <
%%
\def\fps@table{tp}
\def\ftype@table{2}
\def\ext@table{lot}
\def\fnum@table{\tablename~\thetable}
\newenvironment{table}
{\@float{table}}
{\end@float}
\newenvironment{table*}
{\@dblfloat{table}}
{\end@dblfloat}
\newlength\abovecaptionskip
\newlength\belowcaptionskip
\setlength\abovecaptionskip{10\p@}
\setlength\belowcaptionskip{10\p@}
\def\@figtxt{figure}
\long\def\@makecaption#1#2{%
\footnotesize
\setlength{\parindent}{1.5pc}
\ifx\@captype\@figtxt
\vskip\abovecaptionskip
\setbox\@tempboxa\hbox{{\normalfont\scshape #1}. {\normalfont\itshape #2}}%
\ifdim \wd\@tempboxa >\hsize
{\normalfont\scshape #1}. {\normalfont\itshape #2}\par
\else
\global\@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\else
\hbox to\hsize{\hfil{\normalfont\scshape #1}\hfil}%
\setbox\@tempboxa\hbox{{\normalfont\itshape #2}}%
\ifdim \wd\@tempboxa >\hsize
{\normalfont\itshape #2}\par
\else
\global\@minipagefalse
\hb@xt@\hsize{\hfil\box\@tempboxa\hfil}%
\fi
\vskip\belowcaptionskip
\fi}
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}
\DeclareRobustCommand*\cal{\@fontswitch{\relax}{\mathcal}}
\DeclareRobustCommand*\mit{\@fontswitch{\relax}{\mathnormal}}
\newcommand\@pnumwidth{1.55em}
\newcommand\@tocrmarg {2.55em}
\newcommand\@dotsep{4.5}
\newdimen\bibindent
\bibindent=16pt
\newenvironment{thebibliography}[1]
{\par\addvspace{.25in}
\begin{center}
\footnotesize\uppercase\expandafter{\refname}%
\addcontentsline{toc}{section}{References}
\end{center}
\@mkboth{\uppercase\expandafter{\refname}}{\uppercase\expandafter{\refname}}
\addvspace{.15in}\nopagebreak%
%%
%% >>tgk>> --- Modified Summer 2015
%%
%% Adding supplement support by inserting \siamprelabel
\list{\@biblabel{\siamprelabel\arabic{enumi}}}%
%%
%% <
%%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
% \if@openbib
\advance\leftmargin\bibindent
\itemindent -\bibindent
\listparindent \itemindent
\parsep \z@
% \fi
\usecounter{enumi}%
\let\p@enumi\@empty
\renewcommand\theenumi{\arabic{enumi}}}%
% \if@openbib
% \renewcommand\newblock{\par}
% \else
\renewcommand\newblock{\hskip .11em \@plus.33em \@minus.07em}%
% \fi
\sloppy\clubpenalty4000\widowpenalty4000%
\sfcode`\.=\@m\relax\footnotesize}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}
\newcommand\newblock{}
\newenvironment{theindex}
{\if@twocolumn
\@restonecolfalse
\else
\@restonecoltrue
\fi
\columnseprule \z@
\columnsep 35\p@
\twocolumn[\section*{\indexname}]%
\@mkboth{\uppercase{\indexname}}%
{\uppercase{\indexname}}%
\thispagestyle{plain}\parindent\z@
\parskip\z@ \@plus .3\p@\relax
\let\item\@idxitem}
{\if@restonecol\onecolumn\else\clearpage\fi}
\newcommand\@idxitem {\par\hangindent 40\p@}
\newcommand\subitem {\par\hangindent 40\p@ \hspace*{20\p@}}
\newcommand\subsubitem{\par\hangindent 40\p@ \hspace*{30\p@}}
\newcommand\indexspace{\par \vskip 10\p@ \@plus5\p@ \@minus3\p@\relax}
\renewcommand\footnoterule{%
\kern-3\p@
\hrule width .5in
\kern 2.6\p@}
\long\def\@makefntext#1{%
\parindent .25in%
\noindent
\hbox to .25in{\hss\@makefnmark}#1}
\newcommand\contentsname{Contents}
\newcommand\listfigurename{List of Figures}
\newcommand\listtablename{List of Tables}
\newcommand\refname{References}
\newcommand\indexname{Index}
\newcommand\figurename{Fig.}
\newcommand\tablename{Table}
\newcommand\partname{Part}
\newcommand\appendixname{Appendix}
\newcommand\abstractname{Abstract}
\newcommand\keywordsname{Key words}
\newcommand\keywordname{Key word}
\newcommand\AMSname{AMS subject classifications}
\newcommand\AMname{AMS subject classification}
%\newcommand\PIIname{PII}
\newcommand\DOIname{DOI\@}
%\newcommand\URL{\protect\\ \hspace*{15.37pt}http://www.siam.org/journals/}
\newcommand\URL[1]{\protect\\ \hspace*{15.37pt}\protect\href{http://www.siam.org/journals/#1}{http://www.siam.org/journals/#1}}
\newcommand\today{\ifcase\month\or
January\or February\or March\or April\or May\or June\or
July\or August\or September\or October\or November\or December\fi
\space\number\day, \number\year}
\newcommand\sameauthor{\leavevmode\vrule height 2pt depth -1.6pt width 23pt}
\setlength\columnsep{10\p@}
\setlength\columnseprule{0\p@}
\pagestyle{plain}
\pagenumbering{arabic} % Arabic page numbers
%%
%% >>tgk>> --- Removed Summer 2015 ---
%%
% \if@compatibility%
% \else
% \if@oneeqnum
% \else
% \@addtoreset{equation}{section} % \section resets 'equation' counter
% \renewcommand{\theequation}{\thesection.\arabic{equation}}
% \fi
%
% \if@onefignum
% \else
% \@addtoreset{figure}{section}
% \renewcommand{\thefigure}{\thesection.\@arabic\c@figure}
% \fi
%
% \if@onetabnum
% \else
% \@addtoreset{table}{section}
% \renewcommand{\thetable}{\thesection.\@arabic\c@table}
% \fi
%
% \if@onethmnum
% \else
% \@addtoreset{theorem}{section}
% \renewcommand{\thetheorem}{\thesection.\arabic{theorem}}
% \fi
% \fi
%%
%% <
%%
\onecolumn
\gdef\@siamlabel@error#1#2{%
\GenericError{%
\space\space\space\@spaces\@spaces\@spaces
}{%
SIAM Label Error: #1%
}{%
Correct multiply-defined labels.%
}{#2}%
}
%%% NEW -- causes multiply defined labels to generate errors
\def\@newl@bel#1#2#3{%
\@ifundefined{#1@#2}%
\relax
{\gdef \@multiplelabels {%
\@latex@warning@no@line{Label `#2' multiply defined}}%
\@siamlabel@error{There were multiply-defined labels}{}}%
\global\@namedef{#1@#2}{#3}}
\def\newlabel{\@newl@bel r}
\@onlypreamble\@newl@bel
\let \@multiplelabels \relax
\def\label#1{\@bsphack
\protected@write\@auxout{}%
{\string\newlabel{#1}{{\@currentlabel}{\thepage}}}%
\@esphack}
\def\refstepcounter#1{\stepcounter{#1}%
\protected@edef\@currentlabel
{\csname p@#1\endcsname\csname the#1\endcsname}%
}
%%%
% \def\newarticle{\input{newart.tex}}
% \RequirePackage[dvips]{color}
%%
%% >>tgk>> --- Removed Summer 2015 ---
%%
% %\definecolor{header1}{cmyk}{.9,.5,0,.35}
% %\definecolor{blue1}{cmyk}{.9,.7,0,0}
% %\definecolor{blue2}{cmyk}{.93,.95,.2,.07}
% %\definecolor{maroon}{cmyk}{.4,1,.3,.2}
% %\definecolor{gold1}{cmyk}{.2,.2,1,.1}
% %\definecolor{gray}{cmyk}{0,0,0,.5}
% %\definecolor{green1}{cmyk}{1,0,1,0}
% %\definecolor{proofcolor}{cmyk}{1,0,1,0}
% %\definecolor{red1}{cmyk}{0,1,.8,0}
% %\definecolor{orange1}{cmyk}{0,.55,1,0}
% %\definecolor{strip}{cmyk}{.6,.1,.1,.1}
% \definecolor{header1}{cmyk}{0,0,0,1}
% \definecolor{blue1}{cmyk}{0,0,0,1}
% \definecolor{blue2}{cmyk}{0,0,0,1}
% \definecolor{maroon}{cmyk}{0,0,0,1}
% \definecolor{gold1}{cmyk}{0,0,0,1}
% \definecolor{gray}{cmyk}{0,0,0,1}
% \definecolor{green1}{cmyk}{0,0,0,1}
% \definecolor{proofcolor}{cmyk}{0,0,0,1}
% \definecolor{red1}{cmyk}{0,0,0,1}
% \definecolor{orange1}{cmyk}{0,0,0,1}
% \definecolor{strip}{cmyk}{0,0,0,1}
% \RequirePackage[]{graphics,graphicx}
% \RequirePackage[colorlinks,naturalnames=false,hypertexnames=false,breaklinks]{hyperref}%new
% \urlstyle{same}
% \usepackage{breakurl}%new
% \def\wwwbrowser{C:\string\Program\space
% Files\string\Plus!\string\Microsoft\space
% Internet\string\iexplore.exe}
% %\definecolor{extlink}{cmyk}{.05,1,1,.45}
% %\definecolor{intlink}{cmyk}{1,0,1,.5}
% %\definecolor{softpage}{cmyk}{0,0.01,.05,0}
% \definecolor{extlink}{cmyk}{0,0,0,0.7}
% \definecolor{intlink}{cmyk}{0,0,0,0.7}
% \definecolor{softpage}{cmyk}{0,0,0,0.7}
% \def\@linkcolor{intlink}
% \def\@anchorcolor{black}
% \def\@citecolor{intlink}
% \def\@filecolor{cyan}
% \def\@urlcolor{extlink}
% \def\@menucolor{red}
%%
%% <
%%
%%%\def\@pagecolor{softpage}
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Support for cross-reference (xr-hyper).
\RequirePackage{xr-hyper}[6.00]
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
\RequirePackage{ifpdf}[2.3]
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Support for cross-reference hyperlinks
%% (hyperref). Made it so that it works for both dvi/ps and pdf
%% (ifpdf, breakurl).
%%
\RequirePackage{hyperref}[6.83]
\hypersetup{
colorlinks=false,
frenchlinks=false,
pdfborder={0 0 0},
naturalnames=false,
hypertexnames=false,
breaklinks
}
\urlstyle{same}
\ifpdf
\usepackage{graphics,graphicx}
\usepackage{epstopdf}
\else
\usepackage{graphics,graphicx}
\RequirePackage{breakurl}[1.40]
\usepackage{hypdvips}
\fi
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
\RequirePackage{xcolor}[2.11]
\colorlet{siaminlinkcolor}{green!50!black}
\colorlet{siamexlinkcolor}{red!50!black}
\colorlet{siamreviewcolor}{black!50}
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Add support for color in order to color the hyperlinks.
%%
\if@hidelinks
\hypersetup{ hidelinks = true }
\else
\hypersetup{
colorlinks = true,
allcolors = siaminlinkcolor,
urlcolor = siamexlinkcolor,
}
\fi
%%
%% <
%%
\newcommand{\email}[1]{\protect\href{mailto:#1}{#1}}
%%
%% >>tgk>> --- Modified Summer 2015 ---
%%
\newcommand{\mref}[1]{\burlalt{mailto:#1}{#1}}
%%
%% <
%%
%% >>tgk>> --- Removed Summer 2015 ---
%\newcommand{\web}[1]{\href{#1}{#1}}
%%
%% <
%%
%%%\pagecolor{softpage}
%%%%to fix link jump to "bottom" of float
\RequirePackage[all]{hypcap} [1.11]
\setlength{\parskip}{1\parskip}
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
% This needs to be loaded *before* cleveref
\RequirePackage{algorithm}[0.1]
\renewcommand{\ALG@name}{Algorithm}
\renewcommand\thealgorithm{\siamprelabel\@arabic\c@algorithm}
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Adding cleveref package for smart citations, with customizations to
%% make it act like SIAM expects.
\RequirePackage[capitalize,nameinlink]{cleveref}[0.19]
% Per SIAM Style Manual, "section" should be lowercase
\crefname{section}{section}{sections}
\crefname{subsection}{subsection}{subsections}
% Per SIAM Style Manual, "Figure" should be spelled out in references
\Crefname{figure}{Figure}{Figures}
% Per SIAM Style Manual, don't say equation in front on an equation.
\crefformat{equation}{\textup{#2(#1)#3}}
\crefrangeformat{equation}{\textup{#3(#1)#4--#5(#2)#6}}
\crefmultiformat{equation}{\textup{#2(#1)#3}}{ and \textup{#2(#1)#3}}
{, \textup{#2(#1)#3}}{, and \textup{#2(#1)#3}}
\crefrangemultiformat{equation}{\textup{#3(#1)#4--#5(#2)#6}}%
{ and \textup{#3(#1)#4--#5(#2)#6}}{, \textup{#3(#1)#4--#5(#2)#6}}{, and \textup{#3(#1)#4--#5(#2)#6}}
% But spell it out at the beginning of a sentence.
\Crefformat{equation}{#2Equation~\textup{(#1)}#3}
\Crefrangeformat{equation}{Equations~\textup{#3(#1)#4--#5(#2)#6}}
\Crefmultiformat{equation}{Equations~\textup{#2(#1)#3}}{ and \textup{#2(#1)#3}}
{, \textup{#2(#1)#3}}{, and \textup{#2(#1)#3}}
\Crefrangemultiformat{equation}{Equations~\textup{#3(#1)#4--#5(#2)#6}}%
{ and \textup{#3(#1)#4--#5(#2)#6}}{, \textup{#3(#1)#4--#5(#2)#6}}{, and \textup{#3(#1)#4--#5(#2)#6}}
% Make number non-italic in any environment.
\crefdefaultlabelformat{#2\textup{#1}#3}
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Setting up theorems using ntheorem package, customizing to do the
%% indentations and other features that SIAM likes. Also, adding
%% macros that can be use to declare additional theorem-like
%% environments. The \newtheorem calls have to happen /after/ loading
%% cleveref when using ntheorem and sharing the same numbering.
% We fix the default style to have the indents that SIAM wants before
% theorem and proof definitions.
\renewtheoremstyle{plain}%
{\item[\hskip\labelsep\hskip\parindent \theorem@headerfont ##1\ \textup{##2\theorem@separator}]}%
{\item[\hskip\labelsep\hskip\parindent \theorem@headerfont ##1\ \textup{##2\ (##3)\theorem@separator}]}
\renewtheoremstyle{nonumberplain}%
{\item[\theorem@headerfont\hskip\labelsep\hskip\parindent ##1\theorem@separator]}%
{\item[\theorem@headerfont\hskip\labelsep\hskip\parindent ##1\ (##3)\theorem@separator]}
% Retained from old style file
\newcommand{\proofbox}{\vbox{\hrule height0.6pt\hbox{\vrule height1.3ex width0.6pt\hskip0.8ex\vrule width0.6pt}\hrule height0.6pt}}
% Extra space around theorem-like environments
\theorempreskip{1ex plus .25ex minus .1ex}
\theorempostskip{1ex plus .25ex minus .1ex}
% Proof environment: No number, italic header, normal body, ends with proofbox.
\theoremstyle{nonumberplain}
\theoremheaderfont{\normalfont\itshape}
\theorembodyfont{\normalfont}
\theoremseparator{.}
\theoremsymbol{\proofbox}
\newtheorem{proof}{Proof}
% Theorem environment: Small-caps header, italize body.
\theoremstyle{plain}
\theoremheaderfont{\normalfont\sc}
\theorembodyfont{\normalfont\itshape}
\theoremseparator{.}
\theoremsymbol{}
\newtheorem{theorem}{Theorem}
% Command to create other theorem-like environments, to be numbered
% along with the theorems.
\newcommand{\newsiamthm}[2]{
\theoremstyle{plain}
\theoremheaderfont{\normalfont\sc}
\theorembodyfont{\normalfont\itshape}
\theoremseparator{.}
\theoremsymbol{}
\newtheorem{#1}[theorem]{#2}
}
% Other predefined theorem-like environments
\newsiamthm{lemma}{Lemma}
\newsiamthm{corollary}{Corollary}
\newsiamthm{proposition}{Proposition}
\newsiamthm{definition}{Definition}
% Command to create remark-like environments, to be numbered
% along with the theorems.
\newcommand{\newsiamremark}[2]{
\theoremstyle{plain}
\theoremheaderfont{\normalfont\itshape}
\theorembodyfont{\normalfont}
\theoremseparator{.}
\theoremsymbol{}
\newtheorem{#1}[theorem]{#2}
}
%%
%% <
%%
%new: make new head for assumptions, remarks, etc. Numbered? Unnumbered?
%%
%% >>tgk>> --- Removed Summer 2015 ---
%%
% %%% create theorems, etc. with upright font, no italic
% \def\newheading#1{%
% \@ifnextchar[{\@othmup{#1}}{\@nthmup{#1}}}
% \def\@nthmup#1#2{%
% \@ifnextchar[{\@xnthmup{#1}{#2}}{\@ynthmup{#1}{#2}}}
% \def\@xnthmup#1#2[#3]{%
% \expandafter\@ifdefinable\csname #1\endcsname
% {\@definecounter{#1}\@newctr{#1}[#3]%
% \expandafter\xdef\csname the#1\endcsname{%
% \expandafter\noexpand\csname the#3\endcsname \@thmcountersep
% \@thmcounterup{#1}}%
% \global\@namedef{#1}{\@thmup{#1}{#2}}%
% \global\@namedef{end#1}{\@endtheoremup}}}
% \def\@ynthmup#1#2{%
% \expandafter\@ifdefinable\csname #1\endcsname
% {\@definecounter{#1}%
% \expandafter\xdef\csname the#1\endcsname{\@thmcounterup{#1}}%
% \global\@namedef{#1}{\@thmup{#1}{#2}}%
% \global\@namedef{end#1}{\@endtheoremup}}}
% \def\@othmup#1[#2]#3{%
% \@ifundefined{c@#2}{\@nocounterr{#2}}%
% {\expandafter\@ifdefinable\csname #1\endcsname
% {\global\@namedef{the#1}{\@nameuse{the#2}}%
% \global\@namedef{#1}{\@thmup{#2}{#3}}%
% \global\@namedef{end#1}{\@endtheoremup}}}}
% \def\@thmup#1#2{%
% \refstepcounter{#1}%
% \@ifnextchar[{\@ythmup{#1}{#2}}{\@xthmup{#1}{#2}}}
% \def\@xthmup#1#2{%
% \@begintheoremup{#2}{\csname the#1\endcsname}\ignorespaces}
% \def\@ythmup#1#2[#3]{%
% \@opargbegintheoremup{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
% \def\@thmcounterup#1{\noexpand\arabic{#1}}
% \def\@thmcountersep{.}
% \def\@begintheoremup#1#2{\trivlist
% \item[\hskip \labelsep{\bfseries #1\ #2.}]\upshape}
% \def\@opargbegintheoremup#1#2#3{\trivlist
% \item[\hskip \labelsep{\bfseries #1\ #2\ (#3).}]\upshape}
% \def\@endtheoremup{\endtrivlist}
%%
%% <
%%
%%
%% >>tgk>> --- Moved elsewhere, Summer 2015
%%
%\usepackage{lineno}
%%
%% <
%%
\setlength{\textheight}{598pt} %{598.2275pt}
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
% Support for supplement numbering
\renewcommand{\theequation}{\siamprelabel\arabic{equation}}
\renewcommand{\thepage}{\siamprelabel\arabic{page}}
\renewcommand{\thetheorem}{\siamprelabel\arabic{theorem}}
\let\svbibcite\bibcite
\def\bibcite#1#2{\svbibcite{#1}{\siamprelabel#2}}
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
% Adding a command to do running heads with uppercase and supplement support.
\newcommand{\headers}[2]{
% Declare page headings - use the \siampretitle command, which inserts
% "Supplementary Material" when appropriate.
\pagestyle{myheadings}
\markboth{\uppercase\expandafter{#2}}
{\uppercase\expandafter{\siampretitle{#1}}}}
%%
%% <
%%
%% >>tgk>> --- Added Summer 2015 ---
%%
%% Support for "review" class option to turn on linenumbers via the
%% lineno package. Slightly complicated because the lineno and amsmath
%% packages do not play well together.
\if@review
\RequirePackage[mathlines]{lineno}[4.41]
\linenumbers
\renewcommand{\linenumberfont}{\normalfont\footnotesize\color{siamreviewcolor}}
% The \linenumbers command does not play nice with amsmath, so we
% have added some patches to fix it. See
% http://phaseportrait.blogspot.com/2007/08/lineno-and-amsmath-compatibility.html
\newcommand*\patchAmsMathEnvironmentForLineno[1]{%
\expandafter\let\csname old#1\expandafter\endcsname\csname #1\endcsname
\expandafter\let\csname oldend#1\expandafter\endcsname\csname end#1\endcsname
\renewenvironment{#1}%
{\linenomath\csname old#1\endcsname}%
{\csname oldend#1\endcsname\endlinenomath}}%
\newcommand*\patchBothAmsMathEnvironmentsForLineno[1]{%
\patchAmsMathEnvironmentForLineno{#1}%
\patchAmsMathEnvironmentForLineno{#1*}}%
\patchBothAmsMathEnvironmentsForLineno{equation}%
\patchBothAmsMathEnvironmentsForLineno{align}%
\patchBothAmsMathEnvironmentsForLineno{flalign}%
\patchBothAmsMathEnvironmentsForLineno{alignat}%
\patchBothAmsMathEnvironmentsForLineno{gather}%
\patchBothAmsMathEnvironmentsForLineno{multline}%
\renewcommand{\footercopyright}{\textcolor{siamreviewcolor}%
{\textit{This manuscript is for review purposes only.}}}
\fi
%%
%% <
%%
\endinput
%%
%% End of file `siamart.cls'.
diff --git a/siamplain.bst b/siamplain.bst
new file mode 100644
index 0000000..1bdbdc1
--- /dev/null
+++ b/siamplain.bst
...
% ====================== SIAM.BST ================================ %
% SIAM bibliography style (24-Jan-88 version)
% numeric labels, alphabetic order, Mathematical Reviews abbreviations,
% names in \sc, titles in italics, book titles mixed upper-lower and
%article
% titles lowercase, commas separate all fields except before "notes".
%
% History
% 1/30/86 (HWT) Original version, by Howard Trickey.
% 6/15/87 (HWT) Fix format.editors---Martin Costabel.
% 1/24/88 (OP&HWT) Updated for BibTeX version 0.99a, Oren Patashnik;
% THIS `siam' VERSION DOES NOT WORK WITH BIBTEX 0.98i.
% 4/3/14 (TGK) Added support for electronic crossreferences and article IDs.
ENTRY
{ address
author
booktitle
chapter
edition
editor
eid
howpublished
institution
journal
key
month
note
number
pagetotal
organization
pages
publisher
school
series
title
type
volume
year
url
urldate
doi
eprint
eprintclass
archive
archiveprefix
}
{}
{ label }
INTEGERS { output.state before.all mid.sentence after.block }
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.block :=
}
STRINGS { s t }
FUNCTION {output.nonnull}
{ 's :=
output.state mid.sentence =
{ ", " * write$ }
{ output.state after.block =
{ add.period$ write$
newline$
"\newblock " write$
}
'write$
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 {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 {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "{\em " swap$ * "}" * }
if$
}
FUNCTION {scapify}
{ duplicate$ empty$
{ pop$ "" }
{ "{\sc " 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 :=
%{ 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$
}
STRINGS { last.authors }
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names scapify }
if$
}
FUNCTION {format.organization}
{ organization empty$
{ "" }
{ organization scapify }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ "" }
{ editor format.names scapify
if$
editor num.names$ #1 >
{ ", eds." * }
{ ", ed." * }
if$
}
if$
}
FUNCTION {format.ineditors}
{ editor empty$
{ "" }
{ editor format.names
editor num.names$ #1 >
{ ", eds." * }
{ ", ed." * }
if$
}
if$
}
FUNCTION {format.archive}
{
archiveprefix empty$
{ "" }
{ archiveprefix ":" *}
if$
}
FUNCTION {format.eprintclass}
{
eprintclass empty$
{ "" }
{ " [" eprintclass * "]" *}
if$
}
FUNCTION {format.eprint}
{ eprint empty$
{ "" }
{ archive empty$
{"\href{http://arxiv.org/abs/" eprint * "}" *
"{arXiv:" * eprint * format.eprintclass * "}" *}
{"\href{" archive * "/" * eprint * "}" *
"{" * format.archive * eprint * format.eprintclass * "}" *}
if$
}
if$
}
FUNCTION {format.url}
{ url empty$
{ "" }
{ urldate empty$
{ "\url{" url * "}" * }
{ "\url{" url * "} (accessed " * urldate * ")" * }
if$
}
if$
}
FUNCTION {format.doi}
{ doi empty$
{ "" }
{ "\href{http://dx.doi.org/" doi * "}{doi:\nolinkurl{" * doi * "}}" * }
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ title "t" change.case$ emphasize }
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$
{ "" }
{ "vol.~" volume *
series empty$
'skip$
{ " of " * series * }
if$
"volume and number" number either.or.check
}
if$
}
FUNCTION {format.number.series}
{ volume empty$
{ number empty$
{ series field.or.null }
{ "no.~" number *
series empty$
{ "there's a number but no series in " cite$ * warning$ }
{ " in " * series * }
if$
}
if$
}
{ "" }
if$
}
FUNCTION {format.edition}
{ edition empty$
{ "" }
{ edition "l" change.case$ "~ed." * }
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.pagetotal}
{
pagetotal empty$
{ "" }
{ pagetotal "~pages" * }
if$
}
FUNCTION {format.eid}
{
eid empty$
{ "" }
{ pagetotal empty$
{ eid }
{ eid " (" * format.pagetotal * ")" *}
if$
}
if$
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ pages multi.page.check
{ "pp.~" pages n.dashify * }
{ "p.~" pages * }
if$
}
if$
}
FUNCTION {format.vol.year}
{ volume field.or.null
year empty$
{ "empty year in " cite$ * warning$ }
{ " (" year * ")" * * }
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "ch.~" chapter * }
{ type "l" change.case$ chapter tie.or.space.connect }
if$
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
FUNCTION {format.in.ed.booktitle}
{ booktitle empty$
{ "" }
{ editor empty$
{ "in " booktitle * }
{ "in " booktitle * ", " * format.ineditors * }
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 "l" change.case$
}
if$
}
FUNCTION {format.tr.number}
{ type empty$
{ "Tech. Report" }
'type
if$
number empty$
{ "l" 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 " 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 "
}
{ "vol.~" volume *
" 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$
"" *
}
{ 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 " booktitle * }
if$
}
{ "in " key * }
if$
}
{ "in " format.crossref.editor * }
if$
" \cite{" * crossref * "}" *
}
FUNCTION {article}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
crossref missing$
{ journal "journal" output.check
format.vol.year output
}
{ format.article.crossref output.nonnull }
if$
format.eid output
format.pages output
format.doi output
format.url output
format.eprint output
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$
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
format.number.series output
publisher "publisher" output.check
address output
}
{ format.book.crossref output.nonnull }
if$
format.edition output
format.date "year" output.check
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
format.authors output
format.title "title" output.check
howpublished new.block.checka
howpublished output
address output
format.date output
format.doi output
format.url output
format.eprint 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$
format.btitle "title" output.check
crossref missing$
{ format.bvolume output
format.number.series output
publisher "publisher" output.check
address output
}
{ format.book.crossref output.nonnull }
if$
format.edition output
format.date "year" output.check
format.chapter.pages "chapter and pages" output.check
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
publisher "publisher" output.check
address output
format.edition output
format.date "year" output.check
}
{ format.incoll.inproc.crossref output.nonnull }
if$
format.chapter.pages output
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
}
FUNCTION {inproceedings}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
crossref missing$
{ format.in.ed.booktitle "booktitle" output.check
format.bvolume output
format.number.series output
address empty$
{ organization output
publisher output
format.date "year" output.check
}
{ address output.nonnull
format.date "year" output.check
organization output
publisher output
}
if$
}
{ format.incoll.inproc.crossref output.nonnull }
if$
format.pages output
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
}
FUNCTION {conference} { inproceedings }
FUNCTION {manual}
{ output.bibitem
author empty$
{ format.organization output }
{ format.authors output.nonnull }
if$
format.btitle "title" output.check
author empty$
'skip$
{ organization output }
if$
address output
format.edition output
format.date output
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
}
FUNCTION {mastersthesis}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
"master's thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
}
FUNCTION {misc}
{ output.bibitem
format.authors output
format.title output
howpublished new.block.checka
howpublished output
format.date output
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
empty.misc.check
}
FUNCTION {phdthesis}
{ output.bibitem
format.authors "author" output.check
format.btitle "title" output.check
"PhD thesis" format.thesis.type output.nonnull
school "school" output.check
address output
format.date "year" output.check
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ format.organization output }
{ format.editors output.nonnull }
if$
format.btitle "title" output.check
format.bvolume output
format.number.series output
address empty$
{ editor empty$
'skip$
{ organization output }
if$
publisher output
format.date "year" output.check
}
{ address output.nonnull
format.date "year" output.check
editor empty$
'skip$
{ organization output }
if$
publisher output
}
if$
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
format.tr.number output.nonnull
institution "institution" output.check
address output
format.date "year" output.check
format.doi output
format.url output
format.eprint output
new.block
note output
fin.entry
}
FUNCTION {unpublished}
{ output.bibitem
format.authors "author" output.check
format.title "title" output.check
new.block
note "note" output.check
format.date output
format.doi output
format.url output
format.eprint 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. Surveys"}
MACRO {acta} {"Acta Inf."}
MACRO {cacm} {"Comm. 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.~Assoc. Comput. Mach."}
MACRO {jcss} {"J.~Comput. System 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 {sort.format.names}
{ 's :=
#1 'nameptr :=
""
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ nameptr #1 >
{ " " * }
'skip$
if$
s nameptr "{vv{ } }{ll{ }}{ f{ }}{ 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}