summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/computational-complexity
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/latex/contrib/computational-complexity
Initial commit
Diffstat (limited to 'macros/latex/contrib/computational-complexity')
-rw-r--r--macros/latex/contrib/computational-complexity/README13
-rw-r--r--macros/latex/contrib/computational-complexity/cc-cls-inline.tex7772
-rw-r--r--macros/latex/contrib/computational-complexity/cc-journals.bib1065
-rw-r--r--macros/latex/contrib/computational-complexity/cc.dtx12719
-rw-r--r--macros/latex/contrib/computational-complexity/cc.ins104
-rw-r--r--macros/latex/contrib/computational-complexity/cc.pdfbin0 -> 792226 bytes
-rw-r--r--macros/latex/contrib/computational-complexity/cctemplate.tex55
7 files changed, 21728 insertions, 0 deletions
diff --git a/macros/latex/contrib/computational-complexity/README b/macros/latex/contrib/computational-complexity/README
new file mode 100644
index 0000000000..04759d11d0
--- /dev/null
+++ b/macros/latex/contrib/computational-complexity/README
@@ -0,0 +1,13 @@
+The LaTeX2e class cc was written for the journal Computational
+Complexity <http://www.computational-complexity.org>, and
+it can also be used for a lot of other articles. It contains
+a lot of features as more intelligent references,
+a set of theorem definitions, an algorithm environment, and more.
+
+The class requires natbib.
+
+This material is subject to the LaTeX Project Public License.
+
+Michael Nüsken
+b-it / Universität Bonn
+nuesken@bit.uni-bonn.de
diff --git a/macros/latex/contrib/computational-complexity/cc-cls-inline.tex b/macros/latex/contrib/computational-complexity/cc-cls-inline.tex
new file mode 100644
index 0000000000..1a5984ef93
--- /dev/null
+++ b/macros/latex/contrib/computational-complexity/cc-cls-inline.tex
@@ -0,0 +1,7772 @@
+\begin{filecontents*}{cc.cls}
+%%
+%% This is file `cc.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cccls,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\providecommand\ignorespacesafterend{\@ignoretrue}
+\newif\ifclass
+\ifx\@currext\@clsextension\classtrue\else\classfalse\fi
+\ifclass\expandafter\ProvidesClass\else\expandafter\ProvidesPackage\fi
+{\ifclass cc\else cc-cls\fi}
+[% CC MAIN DATE AND VERSION ON NEXT LINE
+2016/03/01 v2.25f
+computational complexity
+\ifclass document class\else package\fi]
+\RequirePackage{ccaux}
+\DeclareOption{localnumbering}{\@longarticletrue}
+\DeclareOption{globalnumbering}{\@longarticlefalse}
+\DeclareOption{longarticle}{\@longarticletrue}
+\DeclareOption{shortarticle}{\@longarticlefalse}
+\DeclareOption{cclayout}{\@cclayouttrue}
+\DeclareOption{nocclayout}{\@cclayoutfalse}
+\DeclareOption{prefixes}{%
+ \PassOptionsToPackage{\CurrentOption}{relabel}}
+\DeclareOption{noprefixes}{%
+ \ExecuteOptions{notheoremitemprefixes}%
+ \PassOptionsToPackage{\CurrentOption,nobare}{relabel}}
+\DeclareOption{bare}{\PassOptionsToPackage{\CurrentOption}{relabel}}
+\DeclareOption{nobare}{\PassOptionsToPackage{\CurrentOption}{relabel}}
+\DeclareOption{multilingual}{\ExecuteOptions{T1,latin1,babel}}
+\DeclareOption{nomultilingual}{\ExecuteOptions{OT1,nolatin1,nobabel}}
+\DeclareOption{T1}{\@Tonetrue}
+\DeclareOption{OT1}{\@Tonefalse}
+\DeclareOption{latin1}{\@latintrue\@utfviiifalse}
+\DeclareOption{nolatin1}{\@latinfalse}
+\DeclareOption{utf8}{\@utfviiitrue\@latinfalse}
+\DeclareOption{noutf8}{\@utfviiifalse}
+\DeclareOption{noinputenc}{\@latinfalse\@utfviiifalse}
+\DeclareOption{babel}{\@babeltrue}
+\DeclareOption{nobabel}{\@babelfalse}
+\DeclareOption{ams}{\@amstrue}
+\DeclareOption{noams}{\@amsfalse}
+\DeclareOption{autotitle}{\@autotitletrue}
+\DeclareOption{noautotitle}{\@autotitlefalse}
+\DeclareOption{ccsectioning}{\@ccsectioningtrue}
+\DeclareOption{noccsectioning}{\@ccsectioningfalse}
+\DeclareOption{natbib}{\@natbibtrue\@cccitefalse}
+\DeclareOption{nonatbib}{\@natbibfalse\@cccitefalse}
+\DeclareOption{cccite}{\@natbibfalse\@cccitetrue}
+\DeclareOption{nocccite}{\@natbibfalse\@cccitefalse}
+\DeclareOption{manualbibliography}{\@manualbibliographytrue}
+\DeclareOption{twocolumnbibliography}{\@twocolumnbibliographytrue}
+\DeclareOption{onecolumnbibliography}{\@twocolumnbibliographyfalse}
+\DeclareOption{twocolumnendtitle}{\@twocolumnendtitletrue}
+\DeclareOption{onecolumnendtitle}{\@twocolumnendtitlefalse}
+\DeclareOption{nosort}{%
+ \def\@natbibsort{}}
+\DeclareOption{sort}{%
+ \def\@natbibsort{\PassOptionsToPackage{sort}{natbib}}}
+\DeclareOption{compress}{%
+ \def\@natbibsort{\PassOptionsToPackage{compress}{natbib}}}
+\DeclareOption{sort&compress}{%
+ \def\@natbibsort{\PassOptionsToPackage{sort&compress}{natbib}}}
+\DeclareOption{cctheorems}{\@cctheoremstrue\@standardtheoremstrue}
+\DeclareOption{cctheorems+separatelycounted}{%
+ \@cctheoremstrue\@standardtheoremsfalse}
+\DeclareOption{nocctheorems}{\@cctheoremsfalse}
+\DeclareOption{separateequationcounting}{\@ccnosepeqncntfalse}
+\DeclareOption{noseparateequationcounting}{\@ccnosepeqncnttrue}
+\DeclareOption{ccalgorithms}{\@ccalgotrue}
+\DeclareOption{noccalgorithms}{\@ccalgofalse}
+\DeclareOption{theoremitemprefixes}{%
+ \PassOptionsToPackage{\CurrentOption}{ccthm}}
+\DeclareOption{notheoremitemprefixes}{%
+ \PassOptionsToPackage{\CurrentOption}{ccthm}}
+\DeclareOption{enhancedprefixes}{% old
+ \PassOptionsToPackage{theoremitemprefixes}{ccthm}}
+\DeclareOption{standardprefixes}{% old
+ \PassOptionsToPackage{notheoremitemprefixes}{ccthm}}
+\DeclareOption{ccpublish}{\@ccpublishtrue}
+\DeclareOption{noccpublish}{\@ccpublishfalse\ExecuteOptions{textarea=none}}
+\DeclareOption{textarea=full}{\@textareaversion\m@ne}
+\DeclareOption{textarea=none}{\@textareaversion\z@}
+\DeclareOption{textarea=cc1}{\@textareaversion\@ne}
+\DeclareOption{textarea=cc2}{\@textareaversion\tw@}
+\DeclareOption{textarea=cc}{\@cctextareatrue}
+\DeclareOption{cctextarea}{\@cctextareatrue}
+\DeclareOption{nocctextarea}{\@cctextareafalse}
+\DeclareOption{noothermargins}{\@marginmode\m@ne}
+\DeclareOption{classicalmargins}{\@marginmode\z@}
+\DeclareOption{printmargins}{\@marginmode\@ne}
+\DeclareOption{balancedmargins}{\@marginmode\tw@}
+\DeclareOption{10pt}{\def\@ccptsize{10}}
+\DeclareOption{11pt}{\def\@ccptsize{11}}
+\DeclareOption{12pt}{\def\@ccptsize{12}}
+\DeclareOption{a4paper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{a5paper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{b5paper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{letterpaper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{legalpaper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{executivepaper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{landscape}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{oneside}{\@twosidefalse}
+\DeclareOption{twoside}{\@twosidetrue}
+\DeclareOption{leqno}{%
+ \PassOptionsToClass{\CurrentOption}{article}%
+ \PassOptionsToPackage{\CurrentOption}{amsmath}%
+ }
+\DeclareOption{reqno}{%
+ \PassOptionsToClass{\CurrentOption}{article}%
+ \PassOptionsToPackage{\CurrentOption}{amsmath}%
+ }
+\DeclareOption*{\OptionNotUsed
+ \PassOptionsToClass{\CurrentOption}{article}}
+\ifclass
+\ExecuteOptions{a4paper,12pt,cctextarea,twoside,%
+ OT1,nolatin1,nobabel,%
+ localnumbering,bare,%
+ leqno,ams,ccpublish,cclayout,autotitle,ccsectioning,%
+ onecolumnbibliography,twocolumnendtitle,natbib,sort&compress,%
+ cctheorems,theoremitemprefixes,noseparateequationcounting,%
+ ccalgorithms}
+\else
+\ExecuteOptions{a4paper,12pt,nocctextarea,balancedmargins,twoside,%
+ OT1,nolatin1,nobabel,%
+ localnumbering,bare,%
+ leqno,ams,noccpublish,nocclayout,noautotitle,ccsectioning,%
+ onecolumnbibliography,twocolumnendtitle,natbib,sort&compress,%
+ cctheorems,theoremitemprefixes,noseparateequationcounting,%
+ ccalgorithms}
+\fi
+\ProcessOptions*
+\PassOptionsToClass{\@ccptsize pt}{article}
+\if@twoside
+\PassOptionsToClass{twoside}{article}
+\else
+\PassOptionsToClass{oneside}{article}
+\fi
+\let\@ccptsize\@undefined
+\@natbibsort
+\let\@natbibsort\@undefined
+\if@standardtheorems\else
+ \ClassWarning{cc}{You are using the non documented
+ feature\MessageBreak
+ cctheorems+separatelycounted.\MessageBreak
+ It is recommended not to use this.}
+\fi
+\newcommand{\cc}{\textsf{computational complexity}}
+\ifclass
+\LoadClass{article}[1999/01/07 v1.4a]
+\fi
+\if@Tone
+\RequirePackage[T1]{fontenc}
+\fi
+\@pass@ptions\@pkgextension{}{german}
+\global\expandafter\let\csname ver@german.\@pkgextension\endcsname\@empty
+\if@babel
+\RequirePackage{babel}[2008/07/06 v3.8l]
+\fi
+\if@utfviii
+\RequirePackage[utf8]{inputenc}[2008/03/30 v1.1d]
+\else\if@latin
+\RequirePackage[latin1]{inputenc}[2008/03/30 v1.1d]
+\fi\fi
+\if@ams
+\RequirePackage{amsmath}[2000/01/15 v2.05]% 1997/03/20 v1.2d
+\RequirePackage{amsfonts}[1997/09/17 v2.2e]
+\RequirePackage{amssymb}[1996/11/03 v2.2b]
+\else
+\newcommand{\numberwithin}[3][\arabic]{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}{%
+ \@ifundefined{c@#3}{\@nocnterr{#3}}{%
+ \@addtoreset{#2}{#3}%
+ \expandafter\xdef\csname the#2\endcsname{%
+ \expandafter\noexpand\csname the#3\endcsname%
+ .\noexpand#1{#2}}}}%
+}
+\let\@ifempty\cc@ifempty
+\let\@ifnotempty\cc@ifnotempty
+\let\bigstar\bullet
+\let\lozenge\circ
+\def\square{{\fboxsep.3em{\vbox{\hbox{\fbox{}}\vskip0pt}}}}%
+\let\text\mbox
+\fi
+\RequirePackage{url}[2006/04/12 ver 3.3]
+\expandafter\def\expandafter\UrlSpecials\expandafter{%
+ \UrlSpecials\do\%{}}
+\providecommand{\email}{\begingroup\urlstyle{tt}\Url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+\providecommand{\ixpt}{\@setfontsize\ixpt\@ixpt{11}}
+\newcommand{\xptsfbx}{%
+ \@setfontsize\xpt\@xpt{12}\usefont{OT1}{cmss}{bx}{n}}
+\DeclareTextFontCommand{\textsfbx}{\usefont{OT1}{cmss}{bx}{n}}
+\if@cclayout
+\RequirePackage{cclayout}
+\else
+\newskip\headerindent \headerindent=10mm
+\newdimen\headrulewidth \headrulewidth.4pt
+\def\cctitlehead{}
+\def\ccauthorhead{}
+\let\ps@ccfirst\ps@empty
+\def\ps@cc{\let\@mkboth\markboth
+ \def\@oddhead{\vbox{\hbox to\textwidth{\reset@font\strut
+ \null
+ \hfil
+ {\small\cctitlehead}%
+ \hbox to\headerindent{\hfil\thepage}%
+ }%
+ \if@ccpublish\else
+ \kern2.6\p@
+ \hrule\@height\headrulewidth\kern-\headrulewidth
+ \kern-2.6\p@
+ \fi
+ \vskip\z@
+ }%
+ }%
+ \def\@oddfoot{}
+ \def\@evenhead{\vbox{\hbox to\textwidth{\reset@font\strut
+ \hbox to\headerindent{\thepage\hfil}%
+ {\small\ccauthorhead}%
+ \hfil
+ \null
+ }%
+ \if@ccpublish\else
+ \kern2.6\p@
+ \hrule\@height\headrulewidth\kern-\headrulewidth
+ \kern-2.6\p@
+ \fi
+ \vskip\z@
+ }%
+ }%
+ \let\@evenfoot\@oddfoot
+ }
+\fi%@cclayout
+\if@ccsectioning
+\def\@seccntformat#1{\csname the#1\endcsname.\enskip}
+\renewcommand{\section}{\@startsection{section}{1}{\z@}%
+ {-2.9ex\@plus-.5ex\@minus-.2ex}%
+ {1.5ex\@plus.5ex\@minus.2ex}%
+ {\normalfont\large\bfseries\centering}}
+\def\opt@fullstop#1{#1{\has@fullstop#1.\@@@
+\if@tempswa\else
+\has@exlamationmark#1!\@@@
+\if@tempswa\else
+\has@questionmark#1?\@@@
+\if@tempswa\else
+.\fi
+\fi
+\fi}}
+\def\has@fullstop#1.#2\@@@{\@ifempty{#2}{\@tempswafalse}{\@tempswatrue}}
+\def\has@exlamationmark#1!#2\@@@{\@ifempty{#2}{\@tempswafalse}{\@tempswatrue}}
+\def\has@questionmark#1?#2\@@@{\@ifempty{#2}{\@tempswafalse}{\@tempswatrue}}
+\def\dot@sect#1#2#3#4#5#6[#7]#8{%
+ \let\@sect\ccorg@sect\let\@ssect\ccorg@ssect
+ \@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{\opt@fullstop{#8}}}
+\def\dot@ssect#1#2#3#4#5{%
+ \let\@sect\ccorg@sect\let\@ssect\ccorg@ssect
+ \@ssect{#1}{#2}{#3}{#4}{\opt@fullstop{#5}}}
+\def\add@dot{%
+ \let\ccorg@sect\@sect\let\ccorg@ssect\@ssect
+ \let\@sect\dot@sect\let\@ssect\dot@ssect}
+\renewcommand{\subsection}{%
+ \add@dot
+ \@startsection{subsection}{2}{\z@}%
+ {2.33ex\@plus.5ex\@minus.2ex}% was 12pt +-
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+\renewcommand{\subsubsection}{%
+ \add@dot
+ \@startsection{subsubsection}{3}{\z@}%
+ {1.55ex\@plus.5ex\@minus.2ex}% was 8pt +-
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+\fi%@ccsectioning
+\if@natbib
+\RequirePackage{cc2cite}
+\if@manualbibliography
+\bibstyle@plain%\bibpunct{[}{]}{;}{n}{}{,}
+\fi
+\else%@natbib
+\if@cccite
+\RequirePackage{cccite}
+\renewcommand{\thebibliography}[1]{%
+ \condbreak{8ex}%
+ \section*{\refname
+ \addcontentsline{toc}{section}{\refname}%
+ \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
+ \vskip-\lastskip
+ \list{[\@arabic\c@enumiv] }%
+ {%
+ \labelwidth\z@
+ \labelsep\z@
+ \leftmargin\z@
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}%
+ }%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000
+ \sfcode`\.\@m
+ \bibfont}
+\let\bibfont\small
+\CheckCommand*\@bibitem[1]{\item\if@filesw \immediate\write\@auxout
+ {\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces}
+\def\@bibitem#1{\item\if@filesw \immediate\write\@auxout
+ {\string\bibcite{#1}{[\the\value{\@listctr}]}}\fi\ignorespaces}
+\else
+ \relax
+\fi%@cccite
+\fi%@natbib
+\if@twocolumnbibliography
+\RequirePackage{multicol}
+\newenvironment{nthebibliography}{%
+ \footnotesize
+ \let\bibfont\footnotesize
+ \let\section\subsubsection
+ \begin{multicols}2
+ \othebibliography}
+ {%
+ \vfill\vfill\vfill\vfill
+ \endothebibliography
+ \end{multicols}}
+\AtBeginDocument{%
+ \let\othebibliography\thebibliography
+ \let\endothebibliography\endthebibliography
+ \let\thebibliography\nthebibliography
+ \let\endthebibliography\endnthebibliography}
+\fi
+\RequirePackage{ccref}
+\if@cctheorems
+\RequirePackage{ccthm}
+\RequirePackage{ccproof}
+\fi
+\if@ccalgo
+\RequirePackage{ccalgo}
+\fi
+\let\orig@newtheorem\newtheorem
+\def\newtheorem{%
+ \ClassWarning{cc}{You should not use newtheorem.\MessageBreak
+ See Section 3.1 of the documentation.}%
+ \orig@newtheorem}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newif\if@ccack \@ccacktrue% usually acknowledgements are not required
+\AtEndDocument{%
+ \if@ccack\else
+ \ClassError{cc}{Missing acknowledgements}
+ {You must use either\MessageBreak
+ \protect\begin{acknowledge} ... \protect\end{acknowledge}\MessageBreak
+ or \protect\noacknowledge.}%
+ \fi
+}
+\newenvironment{acknowledge}{%
+ \section*{\ccacknowledgementsname}%
+ \addcontentsline{toc}{section}{\ccacknowledgementsname}%
+}{%
+ \noacknowledge
+}
+\newcommand{\noacknowledge}{%
+ \ifKV@ccsps@openaccess\if@ccack\else%
+ \noindent{\small\@octxt\par}%
+ \fi\fi%
+ \global\@ccacktrue
+}%
+\def\@octxt{}%
+\def\openchoicetext#1{\gdef\@octxt{\paragraph{Open Access.} #1}}%
+\openchoicetext{This article is distributed under the terms of the
+ Creative Commons Attribution Noncommercial License which permits any
+ noncommercial use, distribution, and reproduction in any medium,
+ provided the original author(s) and source are credited.}%
+\def\labelitemi{$\circ$}
+\def\footnoterule{\kern-3\p@\hrule\@width18mm\kern 2.6\p@}
+\let\ccorg@include\include
+\newwarning{warn@include}{Note that \protect\include\space is equivalent
+ to \protect\input\space.}
+\renewcommand{\include}{%
+ \if@ccpublish
+ \ccClassWarning{warn@include}%
+ \let\next\input
+ \else
+ \let\next\ccorg@include
+ \fi
+ \next}
+\endinput
+%%
+%% End of file `cc.cls'.
+\end{filecontents*}
+\begin{filecontents*}{cc-cls.sty}
+%%
+%% This is file `cc-cls.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `ccsty,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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 \~}
+\input{cc.cls}
+\endinput
+%%
+%% End of file `cc-cls.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cc2cite.sty}
+%%
+%% This is file `cc2cite.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cc2cite,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{cc2cite}[2000/02/29 v2.05 cc2 cite helper package]
+\RequirePackage{natbib}[2010/09/13 8.31b]
+\bibpunct{(}{)}{;}{a}{}{,}
+\newcommand{\bibstyle@cc}{\bibpunct{(}{)}{;}{a}{}{,}}
+\expandafter\def\csname bibstyle@cc2\endcsname{%
+ \bibpunct{(}{)}{;}{a}{}{,}}
+\let\bibfont\small
+\bibhang\z@
+\providecommand{\newwarning}[2]{%
+ \expandafter\gdef\csname cc@warn@#1\endcsname{#2}}
+\providecommand{\ccClassWarning}[1]{%
+ \ClassWarning{cc}{\csname cc@warn@#1\endcsname}}
+\newwarning{old@citemul}{%
+ The command \protect\citemul\space is obsolete.
+ Use \protect\citet\space instead.\MessageBreak
+ Please read the documentation
+ of the package `natbib.sty'}
+\newwarning{old@parencite}{%
+ The command \protect\parencite\space is obsolete.
+ Use \protect\citep\space instead.\MessageBreak
+ Please read the documentation
+ of the package `natbib.sty'}
+\newwarning{old@shortcite}{%
+ The command \protect\shortcite\space is obsolete.
+ Use \protect\citealt\space instead.\MessageBreak
+ Please read the documentation
+ of the package `natbib.sty'}
+\def\citemul{\ccClassWarning{old@citemul}\citet}
+\def\parencite{\ccClassWarning{old@parencite}\citep}
+\def\shortcite{\ccClassWarning{old@shortcite}\citealt}
+\RequirePackage{ccdbs}
+\DefaultBibliographyStyle{cc2}
+\endinput
+%%
+%% End of file `cc2cite.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cc4amsart.sty}
+%%
+%% This is file `cc4amsart.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cc4amsart,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{cc4amsart}[2009/12/22 v2.05b
+ computational complexity, adaptions to amsart.
+ Michael Nuesken, Bonn.]
+\RequirePackage{ccaux}
+\RequirePackage{ccreltx}
+\PassOptionsToPackage{bare}{relabel}
+\RequirePackage{thcc}
+\gdef\theorem@headerfont{\bfseries}
+\@longarticletrue
+\RequirePackage{ccthm}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{relabel}
+\RequirePackage{cc2cite}
+\RequirePackage{ccqed}
+\AtBeginDocument{\@adjustnumbering}
+\endinput
+%%
+%% End of file `cc4amsart.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cc4apjrnl.sty}
+%%
+%% This is file `cc4apjrnl.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cc4apjrnl,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{cc4apjrnl}[2002/01/08 v2.05
+ computational complexity, adaptions to apjrnl.
+ Michael Nuesken, Bonn.]
+\let\answer\relax
+\let\endanswer\relax
+\RequirePackage{amsmath}[1997/03/20 v1.2d]
+\RequirePackage{amsfonts}[1997/09/17 v2.2e]
+\RequirePackage{amssymb}[1996/11/03 v2.2b]
+\RequirePackage{ccaux}
+\RequirePackage{ccreltx}% deactivate amsthm.sty and reactive LaTeX's definitions.
+\@longarticletrue
+\@adjustnumbering
+\let\theorem@style\@undefined
+\RequirePackage{ccthm}
+\RequirePackage{ccqed}
+\let\proof\@undefined
+\let\endproof\@undefined
+\RequirePackage{ccproof}
+\RequirePackage{cc2cite}
+\RequirePackage{url}[1999/03/02 ver 1.4]
+\expandafter\def\expandafter\UrlSpecials\expandafter{%
+ \UrlSpecials\do\%{}}
+\providecommand{\email}{\begingroup\urlstyle{tt}\Url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+\gdef\theorem@headerfont{\scshape\null\hskip\parindent}
+\gdef\Proof{\textit{Proof}}
+\renewcommand{\qedsymbol}{\rule{2pt}{4pt}}
+\endinput
+%%
+%% End of file `cc4apjrnl.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cc4elsart.sty}
+%%
+%% This is file `cc4elsart.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cc4elsart,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{cc4elsart}[2009/12/22 v2.05b
+ computational complexity, adaptions to elsart.
+ Michael Nuesken, Bonn.]
+\RequirePackage{ccaux}
+\RequirePackage{ccreltx}
+\PassOptionsToPackage{bare}{relabel}
+\RequirePackage{thcc}
+\@longarticletrue
+\let\claim\relax
+\let\fact\relax
+\let\note\relax
+\let\proof\relax\let\endproof\relax
+\RequirePackage{ccthm}
+\RequirePackage{ccproof}
+\RequirePackage{ccqed}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{relabel}
+\babel\def\partname{Part}[german=Teil,french=\protect\@Fpt partie]
+\defprefix{part}{\partname~}
+\babel\def\chaptername{Chapter}[german=Kapitel,french=Chapitre]
+\defprefix{chapter}{\chaptername~}
+\babel\def\sectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{section}{\sectionname~}
+\babel\def\subsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsection}{\subsectionname~}
+\babel\def\subsubsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsubsection}{\subsubsectionname~}
+\let\ccorg@appendix\appendix
+\babel\def\appendixname{Appendix}[german=Anhang,french=Annexe]
+\def\appendix{%
+ \defprefix{section}{\appendixname~}%
+ \defprefix{subsection}{\appendixname~}%
+ \defprefix{subsubsection}{\appendixname~}%
+ \ccorg@appendix}
+\defprefix{equation}#1{(#1)}
+\babel\def\figurename{Figure}[german=Figur,french={\scshape Figure}]
+\defprefix{figure}{\figurename~}
+\babel\def\tablename{Table}[german=Tafel,french={\scshape Table}]
+\defprefix{table}{\tablename~}
+\RequirePackage{amsmath}[2000/01/15 v2.05]% 1997/03/20 v1.2d
+\RequirePackage{amsfonts}[1997/09/17 v2.2e]
+\RequirePackage{amssymb}[1996/11/03 v2.2b]
+\numberallwithin{section}
+\AtBeginDocument{\@adjustnumbering}
+\endinput
+%%
+%% End of file `cc4elsart.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cc4jT.sty}
+%%
+%% This is file `cc4jT.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cc4jT,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{cc4jT}[2002/01/08 v2.05
+ computational complexity, adaptions to jT which uses amsart.
+ Michael Nuesken, Bonn.]
+\RequirePackage{ccaux}
+\RequirePackage{ccreltx}
+\PassOptionsToPackage{bare}{relabel}
+\RequirePackage{thcc}
+\gdef\theorem@headerfont{\bfseries}
+\@longarticletrue
+\let\proof\relax\let\endproof\relax
+\RequirePackage{ccthm}
+\RequirePackage{ccproof}
+\RequirePackage{ccqed}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{relabel}
+\babel\def\partname{Part}[german=Teil,french=\protect\@Fpt partie]
+\defprefix{part}{\partname~}
+\babel\def\chaptername{Chapter}[german=Kapitel,french=Chapitre]
+\defprefix{chapter}{\chaptername~}
+\babel\def\sectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{section}{\sectionname~}
+\babel\def\subsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsection}{\subsectionname~}
+\babel\def\subsubsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsubsection}{\subsubsectionname~}
+\let\ccorg@appendix\appendix
+\babel\def\appendixname{Appendix}[german=Anhang,french=Annexe]
+\def\appendix{%
+ \defprefix{section}{\appendixname~}%
+ \defprefix{subsection}{\appendixname~}%
+ \defprefix{subsubsection}{\appendixname~}%
+ \ccorg@appendix}
+\defprefix{equation}#1{(#1)}
+\babel\def\figurename{Figure}[german=Figur,french={\scshape Figure}]
+\defprefix{figure}{\figurename~}
+\babel\def\tablename{Table}[german=Tafel,french={\scshape Table}]
+\defprefix{table}{\tablename~}
+\numberallwithin{section}
+\AtBeginDocument{\@adjustnumbering}
+\RequirePackage{cc2cite}
+\RequirePackage{url}
+\endinput
+%%
+%% End of file `cc4jT.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cc4llncs.sty}
+%%
+%% This is file `cc4llncs.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cc4llncs,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{cc4llncs}[2002/10/01 v2.05
+ computational complexity, adaptions to llncs.
+ Michael Nuesken, Bonn.]
+\let\claim\relax \let\endclaim\relax
+\let\conjecture\relax \let\endconjecture\relax
+\let\corollary\relax \let\endcorollary\relax
+\let\counterexample\relax \let\endcounterexample\relax
+\let\definition\relax \let\enddefinition\relax
+\let\exercise\relax \let\endexercise\relax
+\let\fact\relax \let\endfact\relax
+\let\hypothesis\relax \let\endhypothesis\relax
+\let\lemma\relax \let\endlemma\relax
+\let\notation\relax \let\endnotation\relax
+\let\note\relax \let\endnote\relax
+\let\observation\relax \let\endobservation\relax
+\let\open\relax \let\endopen\relax
+\let\openquestion\relax \let\endopenquestion\relax
+\let\problem\relax \let\endproblem\relax
+\let\proposition\relax \let\endproposition\relax
+\let\question\relax \let\endquestion\relax
+\let\remark\relax \let\endremark\relax
+\let\result\relax \let\endresult\relax
+\let\theorem\relax \let\endtheorem\relax
+\let\thesis\relax \let\endthesis\relax
+\let\warning\relax \let\endwarning\relax
+\let\example\relax \let\endexample\relax
+\let\proof\relax \let\endproof\relax
+\RequirePackage{amsmath}[1997/03/20 v1.2d]
+\RequirePackage{amsfonts}[1997/09/17 v2.2e]
+\RequirePackage{amssymb}[1996/11/03 v2.2b]
+\RequirePackage{ccaux}
+\@longarticletrue
+\RequirePackage{ccreltx}
+\RequirePackage{ccref}
+\RequirePackage{ccthm,ccproof}
+\theoremheaderfont{\upshape\bfseries}
+\RequirePackage{ccalgo}
+\let\origthebibliography\thebibliography
+\let\origendthebibliography\endthebibliography
+\let\citeauthoryear\relax
+\RequirePackage{cc2cite}
+\let\thebibliography\origthebibliography
+\let\endthebibliography\origendthebibliography
+\RequirePackage{url}[1999/03/02 ver 1.4]
+\expandafter\def\expandafter\UrlSpecials\expandafter{%
+ \UrlSpecials\do\%{}}
+\providecommand{\email}{\begingroup\urlstyle{tt}\Url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+\def\condbreak#1{%
+ \vskip 0pt plus #1%
+ \pagebreak[3]%
+ \vskip 0pt plus -#1%
+ \relax}
+\endinput
+%%
+%% End of file `cc4llncs.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cc4siamltex.sty}
+%%
+%% This is file `cc4siamltex.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cc4siamltex,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{cc4siamltex}[2002/05/22 v2.05
+ computational complexity, adaptions to siamltex.
+ Michael Nuesken, Bonn.]
+
+\let\theorem\relax
+\let\endtheorem\relax
+\let\lemma\relax
+\let\endlemma\relax
+\let\corollary\relax
+\let\endcorollary\relax
+\let\proposition\relax
+\let\endproposition\relax
+\let\definition\relax
+\let\enddefinition\relax
+\let\proof\relax
+\let\endproof\relax
+
+\RequirePackage{amsmath}
+\RequirePackage{amsfonts}
+\RequirePackage{amssymb}
+\RequirePackage{ccaux}
+\RequirePackage{ccreltx}
+\RequirePackage{ccthm}
+\RequirePackage{relabel}
+\RequirePackage{cc2cite}
+\RequirePackage{ccproof}
+\renewcommand{\Proof}{\textit{Proof}}
+\renewcommand{\qedsymbol}{\vbox{\hrule height0.6pt\hbox{%
+ \vrule height1.3ex width0.6pt\hskip0.8ex
+ \vrule width0.6pt}\hrule height0.6pt
+ }}
+\RequirePackage{ccalgo}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{url}[1999/03/02 ver 1.4]
+\expandafter\def\expandafter\UrlSpecials\expandafter{%
+ \UrlSpecials\do\%{}}
+\providecommand{\email}{\begingroup\urlstyle{tt}\Url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+\endinput
+%%
+%% End of file `cc4siamltex.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cc4svjour.sty}
+%%
+%% This is file `cc4svjour.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cc4svjour,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{cc4svjour}[2010/10/14 v2.15
+ computational complexity, adaptions to svjour3.
+ Michael Nuesken, Bonn.]
+\RequirePackage{ccaux}
+\RequirePackage{cc2cite}
+\RequirePackage{ccreltx}
+\PassOptionsToPackage{bare}{relabel}
+\RequirePackage{thcc}
+\gdef\theorem@headerfont{\bfseries}
+%% Deactivate svjour3's theorem definitions:
+\let\claim\relax \let\endclaim\relax
+\let\conjecture\relax \let\endconjecture\relax
+\let\corollary\relax \let\endcorollary\relax
+\let\counterexample\relax \let\endcounterexample\relax
+\let\definition\relax \let\enddefinition\relax
+\let\exercise\relax \let\endexercise\relax
+\let\fact\relax \let\endfact\relax
+\let\hypothesis\relax \let\endhypothesis\relax
+\let\lemma\relax \let\endlemma\relax
+\let\notation\relax \let\endnotation\relax
+\let\note\relax \let\endnote\relax
+\let\observation\relax \let\endobservation\relax
+\let\open\relax \let\endopen\relax
+\let\openquestion\relax \let\endopenquestion\relax
+\let\problem\relax \let\endproblem\relax
+\let\proposition\relax \let\endproposition\relax
+\let\question\relax \let\endquestion\relax
+\let\remark\relax \let\endremark\relax
+\let\result\relax \let\endresult\relax
+\let\theorem\relax \let\endtheorem\relax
+\let\thesis\relax \let\endthesis\relax
+\let\warning\relax \let\endwarning\relax
+\let\example\relax \let\endexample\relax
+\@longarticletrue
+\RequirePackage{ccthm}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{relabel}
+\RequirePackage{cc2cite}
+\RequirePackage{ccqed}
+\RequirePackage{amsmath}
+\RequirePackage{amsfonts}
+\RequirePackage{amssymb}
+\RequirePackage{url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+\AtBeginDocument{\@adjustnumbering}
+\endinput
+%%
+%% End of file `cc4svjour.sty'.
+\end{filecontents*}
+\begin{filecontents*}{ccalgo.sty}
+%%
+%% This is file `ccalgo.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `ccalgo,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{ccalgo}[2012/06/22 v2.25
+ algorithm environment for cc. Michael Nuesken, Bonn.]
+\let\namedalgorithm\@undefined
+\let\endnamedalgorithm\@undefined
+\let\algorithm\@undefined
+\let\endalgorithm\@undefined
+{\def\algonumerate@item[#1]{%
+ \if@noparitem
+ \@donoparitem
+ \else
+ \if@inlabel
+ \indent \par
+ \fi
+ \ifhmode
+ \unskip\unskip \par
+ \fi
+ \if@newlist
+ \if@nobreak
+ \@nbitem
+ \else
+ \addpenalty\@beginparpenalty
+ \addvspace\@topsep
+ \addvspace{-\parskip}%
+ \fi
+ \else
+ \addpenalty\@itempenalty
+ \addvspace\itemsep
+ \fi
+ \global\@inlabeltrue
+ \fi
+ \everypar{%
+ \@minipagefalse
+ \global\@newlistfalse
+ \if@inlabel
+ \global\@inlabelfalse
+ {\setbox\z@\lastbox
+ \ifvoid\z@
+ \kern-\itemindent
+ \fi}%
+ \box\@labels
+ \penalty\z@
+ \fi
+ \if@nobreak
+ \@nobreakfalse
+ \clubpenalty \@M
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi}%
+ \if@noitemarg
+ \@noitemargfalse
+ \if@nmbrlist
+ \refstepcounter\@listctr
+ \fi
+ \fi
+ \sbox\@tempboxa{\makelabel{#1}}%
+ \global\setbox\@labels\hbox{%
+ \unhbox\@labels
+ \hskip \itemindent
+ \hskip -\labelwidth
+ \hskip -\labelsep
+ \ifdim \wd\@tempboxa >\labelwidth
+ \box\@tempboxa
+ \else
+ \hbox to\labelwidth {\unhbox\@tempboxa}%
+ \fi
+ \hskip \labelsep}%
+ \ignorespaces}
+\ifx\algonumerate@item\@item\else
+\PackageWarningNoLine{ccalgo}{%
+ Command \protect\@item\space has changed.\MessageBreak
+ Check if current package is valid}
+\fi}
+\RequirePackage{ccaux}
+\RequirePackage{theorem}[1995/11/23 v2.2c]
+\RequirePackage{thcc}
+\RequirePackage{relabel}
+\def\list@parshape{%
+ \parshape \@ne \@totalleftmargin \linewidth}
+\newdimen\reinit@list@last
+\def\reinit@list#1{%
+ \advance\itemindent\reinit@list@last
+ \advance\@totalleftmargin-\reinit@list@last
+ \advance\linewidth\reinit@list@last
+ \global\reinit@list@last#1\relax
+ \ifdim\reinit@list@last>\algonumerate@maxindent
+ \global\reinit@list@last\algonumerate@maxindent\fi
+ \advance\itemindent-\reinit@list@last
+ \advance\@totalleftmargin\reinit@list@last
+ \advance\linewidth-\reinit@list@last
+ \list@parshape}
+\def\reinit@list@label{%
+ \reinit@list{\wd\@tempboxa}%
+ }
+\newcommand{\makealgolabel}[1]{#1.}
+\newcommand{\makeoptalgolabel}[1]{(#1)}
+\let\makeoptalgocurrentlabel\makeoptalgolabel
+\newcounter{algonumerate}
+\defprefix{algonumerate}{}
+\newcount\algonumerate@items
+\renewcommand{\thealgonumerate}{%
+ \expandafter\ifnum\value{algonumerate}<\@ne
+ \algonumfield%
+ \else
+ \arabic{algonumerate}\fi}%
+\def\algonumfield{\ignorespaces
+ \ifx\@algonumfield\relax\else
+ \expandafter\@algonumfield\csname c@algonumerate\endcsname\fi
+ \unskip}
+\newif\if@speciallabel
+\newcommand{\labelalgonumerate}{%
+ \count@\value{algonumerate}%
+ \ifnum\count@<\z@
+ \algonumfield%
+ \else
+ \makealgolabel{\thealgonumerate}%
+ \fi
+ }%
+\newdimen\algo@labelsep
+\newdimen\steplabelwidth
+\newtoks\AtNextItem
+\newtoks\AtNextNumberedItem
+\newif\if@noitemargcopy
+\let\orig@item\item
+\def\item{\@ifnextchar[{\@noitemargcopyfalse\orig@item}{\@noitemargcopytrue\orig@item}}
+\newcount\last@algolabeltype
+\newcount\this@algolabeltype
+\newcommand{\algonumerate@label}[1]{%
+ \expandafter\count@\value{algonumerate}%
+ \if@noitemargcopy
+ \ifnum\count@<\z@
+ \let\next\algonumerate@labelautomatic
+ \global\last@algolabeltype\this@algolabeltype
+ \global\this@algolabeltype\m@ne
+ \else
+ \let\next\algonumerate@labelnumber
+ \global\last@algolabeltype\this@algolabeltype
+ \global\this@algolabeltype\@ne
+ \fi
+ \else
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \let\next\algonumerate@labelempty
+ \global\last@algolabeltype\this@algolabeltype
+ \global\this@algolabeltype\tw@
+ \else
+ \let\next\algonumerate@labelexplicit
+ \global\last@algolabeltype\this@algolabeltype
+ \global\this@algolabeltype\z@
+ \fi
+ \fi\next{#1}}
+\newcommand{\algonumerate@makelabelexplicit}[1]{%
+ #1:\hskip\algo@labelsep%
+}
+\newcommand{\algonumerate@makelabelempty}[1]{%
+ \hskip\steplabelwidth\hskip\algo@labelsep%
+}
+\newcommand{\algonumerate@makelabelautomatic}[1]{%
+ #1:\hskip\algo@labelsep%
+}
+\newcommand{\algonumerate@makelabelnumber}[1]{%
+ \hb@xt@\steplabelwidth{\hss
+ #1%
+ }\hskip\algo@labelsep%
+}
+\newcommand{\algonumerate@postprocess}[1]{%
+ \expandafter\count@\value{algonumerate}%
+ \ifnum\last@algolabeltype<\@ne
+ \ifnum\this@algolabeltype=\@ne
+ \medskip
+ \fi
+ \fi
+ #1%
+ \global\let\latest@item@currentlabel\@currentlabel
+ \global\let\latest@item@bare@currentlabel\@bare@currentlabel
+ \ifnum\count@=\m@ne
+ \stepcounter{algonumerate}%
+ \fi
+ \global\@speciallabeltrue
+ \the\AtNextItem \global\AtNextItem{}%
+ \ifnum\this@algolabeltype=\@ne
+ \the\AtNextNumberedItem \global\AtNextNumberedItem{}%
+ \fi
+ \reinit@list@label
+}
+\newcommand{\algonumerate@labelexplicit}[1]{% For algorithm i/o
+ \algonumerate@makelabelexplicit{#1}%
+ \global\let\algonumerate@global\global
+ \gdef\global{\algonumerate@global\let\global\algonumerate@global
+ \algonumerate@postprocess{%
+ \protected@edef\@currentlabel{\csname p@\@listctr\endcsname
+ {\makeoptalgocurrentlabel{#1}}}%
+ \protected@edef\@bare@currentlabel{#1}%
+ }%
+ \global}%
+}
+\newcommand{\algonumerate@labelempty}[1]{% For algorithm i/o
+ \algonumerate@makelabelempty{}%
+ \global\let\algonumerate@global\global
+ \gdef\global{\algonumerate@global\let\global\algonumerate@global
+ \algonumerate@postprocess{}%
+ \global}%
+}
+\newcommand{\algonumerate@labelautomatic}[1]{% For algorithm steps
+ \algonumerate@makelabelautomatic{#1}%
+ \global\let\algonumerate@global\global
+ \gdef\global{\algonumerate@global\let\global\algonumerate@global
+ \algonumerate@postprocess{%
+ \protected@edef\@currentlabel{\csname p@\@listctr\endcsname
+ {\makeoptalgocurrentlabel{#1}}}%
+ \protected@edef\@bare@currentlabel{#1}%
+ }%
+ \global}%
+}
+\newcommand{\algonumerate@labelnumber}[1]{% For algorithm steps
+ \algonumerate@makelabelnumber{#1}%
+ \global\let\algonumerate@global\global
+ \gdef\global{\algonumerate@global\let\global\algonumerate@global
+ \algonumerate@postprocess{}%
+ \global}%
+}
+\newdimen\algonumerate@maxindent
+\newdimen\@algolongestlabel
+\AtBeginDocument{\ifdim\algonumerate@maxindent=\z@
+ \algonumerate@maxindent.2\textwidth\fi}
+\def\algonumerateinit#1{%
+ \setcounter{algonumerate}{-1}%
+ \this@algolabeltype=\@M
+ \@algolongestlabel\z@
+ \def\@algonumfield{}%
+ \let\ccorg@or\or\let\or\relax
+ \algonumerate@items\z@
+ \@for\@tempa:=#1\do{%
+ \advance\algonumerate@items\@ne
+ \@temptokena\expandafter{\@tempa}%
+ \toks@\expandafter{\@algonumfield}%
+ \edef\@algonumfield{\the\@temptokena\or\the\toks@}%
+ \setbox\@tempboxa\hbox{\algonumerate@makelabelautomatic{\the\toks@}}%
+ \ifdim\wd\@tempboxa>\@algolongestlabel\relax
+ \@algolongestlabel\wd\@tempboxa\fi
+ }%
+ \let\or\ccorg@or
+ \toks@\expandafter{\@algonumfield}%
+ \edef\@algonumfield##1{\noexpand\ifcase-##1\noexpand\or
+ \the\toks@\noexpand\fi}%
+ }
+\newenvironment{algonumerate}{%
+ \if@inlabel~\fi\par
+ \list{\labelalgonumerate}{%
+ \usecounter{algonumerate}%
+ \let\makelabel\algonumerate@label
+ \parsep\z@%
+ \topsep\z@%
+ \itemsep\z@%
+ \parskip\z@%
+ \leftmargin\labelsep
+ \algo@labelsep\z@
+ \settowidth\steplabelwidth{\makealgolabel{99}}%
+ \labelwidth\z@
+ \global\reinit@list@last\z@
+ }%
+ \setcounter{algonumerate}{-\algonumerate@items}%
+ \ifnum\algonumerate@items>\z@
+ \addtocounter{algonumerate}\m@ne
+ \fi
+ \setcounter{block@cnt}\z@
+ \let\step\algo@step
+ \let\block\algo@block
+ \let\endblock\endalgo@block
+ \let\range\algo@range
+ \let\endrange\endalgo@range
+ \let\indention\algo@indention
+ \let\endindention\endalgo@indention
+ \let\body\algo@block
+ \let\endbody\endalgo@block
+ \let\meta\algo@meta
+ \let\endmeta\endalgo@meta
+ \def\skipremainingspecialitems{\setcounter{algonumerate}{0}}%
+ }{%
+ \endlist\vskip\topskip}
+\newdimen\blockindent \blockindent\parindent
+\newcounter{block@cnt}
+\newcommand{\nextblock}{%
+ \stepcounter{block@cnt}\edef\currentblock{\the\c@block@cnt}%
+ }
+\newif\if@trivialrange
+\newcommand{\refsetrange}[2]{%
+ {\shortlabeltrue
+ \let\index\relax
+ \let\@tempa\relax
+ \protected@edef\@tempa{%
+ \csname r@\the\algorithmmasterkey-#1\endcsname}%
+ \let\@tempc\relax
+ \protected@edef\@tempc{%
+ \csname r@\the\algorithmmasterkey-#2\endcsname}%
+ \ifx\@tempa\@tempc\global\@trivialrangetrue
+ \else\global\@trivialrangefalse\fi
+ }%
+ \if@trivialrange
+ \protected@edef\@currentlabel{}%
+ \else
+ \protected@edef\@currentlabel{%
+ \csname p@\@listctr\endcsname{%
+ \protect\short\protect\ref{\the\algorithmmasterkey-#1}%
+ --%
+ \protect\short\protect\ref{\the\algorithmmasterkey-#2}%
+ }}%
+ \fi
+ \protected@edef\@bare@currentlabel{%
+ \protect\bare\protect\ref{\the\algorithmmasterkey-#1}%
+ --%
+ \protect\bare\protect\ref{\the\algorithmmasterkey-#2}%
+ }%
+ }
+\newenvironment{algo@range}{%
+ \par
+ \stepcounter{block@cnt}\edef\block@{\the\c@block@cnt}%
+ \refsetrange{bob\block@}{eob\block@}%
+ \AtNextNumberedItem{\algolabel{bob\block@}}%
+ }{%
+ \algolabel{eob\block@}%
+ \par
+ \global\let\algo@block@currentlabel\@currentlabel
+ \global\let\algo@block@bare@currentlabel\@bare@currentlabel
+ \aftergroup\algo@endrange@aftergroup
+ }
+\def\algo@endrange@aftergroup{%
+ \let\@currentlabel\latest@item@currentlabel
+ \let\@bare@currentlabel\latest@item@bare@currentlabel
+ }
+\newdimen\indention@reinit@list@last
+\newenvironment{algo@indention}{%
+ \par
+ \indention@reinit@list@last\reinit@list@last
+ \advance\leftmargin\blockindent
+ \advance\labelsep\blockindent
+ \advance\@totalleftmargin\blockindent
+ \advance\linewidth-\blockindent
+ \def\algo@indention@undo{%
+ \reinit@list{\indention@reinit@list@last}%
+ \advance\leftmargin-\blockindent
+ \advance\labelsep-\blockindent
+ \advance\@totalleftmargin-\blockindent
+ \advance\linewidth\blockindent
+ }
+ \list@parshape
+ }{%
+ \par
+ \algo@indention@undo
+ \list@parshape
+ \aftergroup\list@parshape
+ \global\let\algo@block@currentlabel\@currentlabel
+ \global\let\algo@block@bare@currentlabel\@bare@currentlabel
+ \aftergroup\algo@endrange@aftergroup
+ }
+\newif\ifindented@block
+\newenvironment{algo@block}{%
+ \algo@indention
+ \algo@range}{%
+ \endalgo@range
+ \endalgo@indention
+ }
+\newdimen\meta@indent
+\newenvironment{algo@meta}{%
+ \@newlistfalse
+ \vskip\topskip
+ \par
+ \meta@indent\@totalleftmargin
+ \advance\labelsep-\meta@indent
+ \advance\@totalleftmargin-\meta@indent
+ \advance\linewidth\meta@indent
+ \advance\leftmargin-\meta@indent
+ \list@parshape
+ }{%
+ \vskip\topskip
+ \par
+ \advance\labelsep\meta@indent
+ \advance\@totalleftmargin\meta@indent
+ \advance\linewidth-\meta@indent
+ \advance\leftmargin\meta@indent
+ \aftergroup\list@parshape
+ }
+\newcommand{\algo@step}[2][]{%
+ \expandafter\ifnum\value{algonumerate}<\m@ne
+ \PackageError{ccalgo}{Missing \protect\item}{}%
+ \fi
+ \cc@ifempty{#1}{\item}{\item[#1]}%
+ \def\@tempa{#2}\ifx\@tempa\@empty\else\algolabel{#2}\fi%
+ }
+\newtoks\algotitle
+\theorembodyfont{}%
+\theoremstyle{ccalgonn}
+\newtheorem{named@lg@r@thm*}{\the\algotitle}
+\defprefix{named@lg@r@thm*}#1{\the\algotitle}
+\theoremstyle{ccalgo}
+\providecommand{\cc@thmcnter}{equation}
+\newtheorem{named@lg@r@thm}[\cc@thmcnter]{\the\algotitle}
+\defprefix{named@lg@r@thm}#1{\the\algotitle~#1}
+%%% \ifx\c@namedth@@r@m\@undefined\else
+%%% \let\c@named@lg@r@thm\c@namedth@@r@m
+%%% \let\thenamed@lg@r@thm\thenamedth@@r@m
+%%% \fi
+\babel\def\babelInput{Input}[german=Eingabe,french=Entr\'ee]
+\babel\def\babelOutput{Output}[german=Ausgabe,french=Sortie]
+\babel\def\babelstep{step}[german=Schritt,french=pas]%% ??? pas?
+\babel\def\babelStep{Step}[german=Schritt,french=Pas]%% ??? pas?
+\newtoks\algorithmmasterkey
+\newenvironment{namedalgorithm}[1]{%
+ \pagebreak[3]%
+ \defprefix{\cc@thmcnter}##1{\the\algotitle~##1}%
+ \def\algo@theorem{named@lg@r@thm}%
+ \algotitle{#1}%
+ \n@medalgorithm}
+{\endalgonumerate\csname end\algo@theorem\endcsname}
+\newenvironment{namedalgorithm*}[1]{%
+ \defprefix{\cc@thmcnter}##1{\the\algotitle}%
+ \def\algo@theorem{named@lg@r@thm*}%
+ \algotitle{#1}%
+ \n@medalgorithm}
+{\endalgonumerate\csname end\algo@theorem\endcsname}
+\newcommand{\n@medalgorithm}[1][\babelInput,\protect\babelOutput]{%
+ \algonumerateinit{#1}%
+ \n@m@d@lgorithmgetlongestlabel}
+\newcommand{\n@m@d@lgorithmgetlongestlabel}[1][]{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty\else
+ \setbox\@tempboxa\hbox{\algonumerate@makelabel{#1}}%
+ \ifdim\wd\@tempboxa>\@algolongestlabel\relax
+ \@algolongestlabel\wd\@tempboxa\fi
+ \fi
+ \n@m@d@lgorithmgetmasterkey
+}
+\newcommand{\n@m@d@lgorithmgetmasterkey}[1]{%
+ \algorithmmasterkey{#1}%
+ \edef\@tempa{\the\algorithmmasterkey}\ifx\@tempa\@empty
+ \PackageError{ccalgo}{Empty key for algorithm like environment}{}\fi%
+ \n@m@d@lgorithm
+}
+\newcommand{\n@m@d@lgorithm}[1][]{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty\csname\algo@theorem\endcsname
+ \else\csname\algo@theorem\endcsname[#1]\fi%
+ \label{\the\algorithmmasterkey}%
+ \defprefix{equation}##1{(##1)}% reset equation prefix
+ \algo@keywords
+ \defprefix{algonumerate}{%
+ \Iflabelchanged{\algo@theorem}{\uselabel{\algo@theorem} %
+ \ifnum\c@algonumerate>\z@ \babelstep~\fi}}%
+ \algonumerate
+ }%
+\def\algolabel#1{\label{\the\algorithmmasterkey-#1}}%
+\newcommand{\stepref}[2]{\babelStep~\short\ref{#1-#2} in \whole\ref{#1}}
+\newcommand{\newalgorithm}[2]{%
+ \def\newalgo@name{#1}%
+ \def\newalgo@title{#2}%
+ \n@walgorithm}
+\newcommand{\n@walgorithm}[1][\babelInput,\protect\babelOutput]{%
+ \protected@edef\@tempa{%
+ \noexpand\newenvironment{\newalgo@name}%
+ {\noexpand\namedalgorithm{\newalgo@title}[\noexpand#1]}%
+ {\noexpand\endnamedalgorithm}%
+ \noexpand\newenvironment{\newalgo@name*}%
+ {\noexpand\csname namedalgorithm*\endcsname
+ {\newalgo@title}[\noexpand#1]}%
+ {\noexpand\csname endnamedalgorithm*\endcsname}%
+ }\@tempa
+ }
+\babel\def\algorithmname{Algorithm}[%
+ german=Algorithmus,french=Algorithme]
+\newalgorithm{algorithm}{\protect\algorithmname}
+\def\algo@keywords{%
+ \def\keyword##1{\textsf{##1} \ignorespaces}%
+ \babel\def\FOR{\keyword{For}}[german=\keyword{F{\"{u}}r}]%
+ \babel\def\DO{\keyword{do}}[german=\keyword{erledige}]%
+ \babel\def\endFOR{}[]%
+ \babel\def\WHILE{\keyword{While}}[german=\keyword{Solange}]%
+ \babel\def\endWHILE{}[]%
+ \babel\def\REPEAT{\keyword{Repeat}}[german=\keyword{Wiederhole}]%
+ \babel\def\UNTIL{\keyword{Until}}[german=\keyword{Bis}]%
+ \babel\def\IF{\keyword{If}}[german=\keyword{Falls}]%
+ \babel\def\THEN{\keyword{then}}[german=\keyword{dann}]%
+ \babel\def\ELIF{\keyword{Else if}}[german=\keyword{Sonst wenn}]%
+ \babel\def\ELSE{\keyword{Else}}[german=\keyword{Sonst}]%
+ \babel\def\endIF{}[]%
+ \babel\def\CALL{\keyword{Call}}[german=\keyword{Rufe}]%
+ \babel\def\RETURN{\keyword{Return}}[german=\keyword{Antworte}]%
+ \def\@tempa{nohyphenation}\ifx\languagename\@tempa\else%
+ \expandafter\selectlanguage\expandafter{\languagename}\fi%
+ \def\COMMENT##1{$\{$ ##1 $\}$}%
+ }
+\newcommand{\optitem}[1]{%
+ \cc@ifempty{#1}{\if@inlabel\par\else\item\fi}{\item[#1]}%
+ }
+\newcommand{\algoprettify}[3]{%
+ \setbox2\hbox{#1}%
+ \setbox4\hbox{#2}%
+ \setbox6\hbox{#3}%
+ \setbox0\hbox{\unhcopy2\unhcopy4{ }\unhcopy6}%
+ \ifdim\wd0<\linewidth
+ \unhbox0
+ \else
+ \dimen0=\linewidth \advance\dimen0 by -\wd2
+ \unhbox2\parbox[t]{\dimen0}{#2\strut}\par\list@parshape\unhbox6
+ \fi
+ }
+\newenvironment{ifblock}[2][]
+{%
+ \optitem{#1}%
+ \nextblock
+ \algolabel{if\currentblock}%
+ \algoprettify{\IF}{#2}{\THEN}
+ \indention
+ \refsetrange{if\currentblock}{endif\currentblock}%
+ }
+{%
+ \algolabel{endif\currentblock}%
+ \endindention}
+\newenvironment{elifblock}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \algoprettify{\ELIF}{#2}{\THEN}
+ \algolabel{elif\currentblock}%
+ \indention
+ \refsetrange{elif\currentblock}{endelif\currentblock}%
+ }{%
+ \algolabel{endelif\currentblock}%
+ \endindention}
+\newenvironment{elseblock}[1][]{%
+ \optitem{#1}%
+ \nextblock
+ \ELSE%
+ \algolabel{else\currentblock}%
+ \indention
+ \refsetrange{else\currentblock}{endelse\currentblock}%
+ }{%
+ \algolabel{endelse\currentblock}%
+ \endindention}
+\newenvironment{forblock}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \algoprettify{\FOR}{#2}{%
+ \DO \short\ref{\the\algorithmmasterkey-body\currentblock}}%
+ \algolabel{for\currentblock}%
+ \block\algolabel{body\currentblock}%
+ \refsetrange{for\currentblock}{endfor\currentblock}%
+ }{%
+ \algolabel{endfor\currentblock}%
+ \endblock}
+\newenvironment{whileblock}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \algoprettify{\WHILE}{#2}{%
+ \DO \short\ref{\the\algorithmmasterkey-body\currentblock}}%
+ \algolabel{while\currentblock}%
+ \block
+ \algolabel{body\currentblock}%
+ \refsetrange{while\currentblock}{endwhile\currentblock}%
+ }{%
+ \algolabel{endwhile\currentblock}%
+ \endblock}
+\newenvironment{untilblock}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \algoprettify{\UNTIL}{#2}{%
+ \DO \short\ref{\the\algorithmmasterkey-body\currentblock}}%
+ \algolabel{until\currentblock}%
+ \block
+ \algolabel{body\currentblock}%
+ \refsetrange{until\currentblock}{enduntil\currentblock}%
+ }{%
+ \algolabel{enduntil\currentblock}%
+ \endblock}
+\newenvironment{blockuntil}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \def\repeat@cond{#2}%
+ \REPEAT \short\ref{\the\algorithmmasterkey-body\currentblock}%
+ \algolabel{repeat\currentblock}%
+ \block
+ \algolabel{body\currentblock}%
+ \refsetrange{repeat\currentblock}{endrepeat\currentblock}%
+ }{%
+ \endblock
+\item
+ \algolabel{endrepeat\currentblock}%
+ \algoprettify{\UNTIL}{\repeat@cond}{}}
+\newenvironment{blockwhile}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \def\repeat@cond{#2}%
+ \REPEAT \short\ref{\the\algorithmmasterkey-body\currentblock}%
+ \algolabel{repeat\currentblock}%
+ \block
+ \algolabel{body\currentblock}%
+ \refsetrange{repeat\currentblock}{endrepeat\currentblock}%
+ }{%
+ \endblock
+\item
+ \algolabel{endrepeat\currentblock}%
+ \algoprettify{\WHILE}{\repeat@cond}{}}
+\endinput
+%%
+%% End of file `ccalgo.sty'.
+\end{filecontents*}
+\begin{filecontents*}{ccaux.sty}
+%%
+%% This is file `ccaux.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `ccaux,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{ccaux}[2008/03/18 v2.08
+ computational complexity, auxiliaries.
+ Michael Nuesken, Bonn.]
+\newif\if@longarticle \@longarticletrue
+\newif\if@cclayout \@cclayouttrue
+\newif\if@Tone \@Tonetrue
+\newif\if@latin \@latintrue
+\newif\if@utfviii \@utfviiifalse
+\newif\if@babel \@babelfalse
+\newif\if@ams \@amstrue
+\newif\if@autotitle \@autotitletrue
+\newif\if@ccsectioning \@ccsectioningtrue
+\newif\if@cccite \@cccitefalse
+\newif\if@natbib \@natbibtrue
+\newif\if@manualbibliography \@manualbibliographyfalse
+\newif\if@twocolumnbibliography \@twocolumnbibliographyfalse
+\newif\if@twocolumnendtitle \@twocolumnendtitletrue
+\newif\if@cctheorems \@cctheoremstrue
+\newif\if@standardtheorems \@standardtheoremstrue
+\newif\if@ccnosepeqncnt \@ccnosepeqncnttrue
+\newif\if@ccalgo \@ccalgotrue
+\newif\if@theoremitemprefixes \@theoremitemprefixestrue
+\newif\if@ccpublish \@ccpublishfalse
+\newcount\@textareaversion
+\expandafter\def\csname if@cctextarea\endcsname{\ifnum\@textareaversion>0}
+\def\@cctextareafalse{\@textareaversion\z@}
+\def\@cctextareatrue{\@textareaversion\tw@}
+\@cctextareatrue
+\newcount\@marginmode \@marginmode\m@ne
+\def\numberallwithin#1{\gdef\cc@numberingtoplevel{#1}}
+\def\@adjustnumbering{%
+ \if@longarticle
+ \numberwithin{equation}\cc@numberingtoplevel
+ \numberwithin{figure}\cc@numberingtoplevel
+ \numberwithin{table}\cc@numberingtoplevel
+ \if@cctheorems\if@standardtheorems\else
+ \numberwithin{answer}\cc@numberingtoplevel
+ \numberwithin{assumption}\cc@numberingtoplevel
+ \numberwithin{claim}\cc@numberingtoplevel
+ \numberwithin{conjecture}\cc@numberingtoplevel
+ \numberwithin{convention}\cc@numberingtoplevel
+ \numberwithin{corollary}\cc@numberingtoplevel
+ \numberwithin{counterexample}\cc@numberingtoplevel
+ \numberwithin{definition}\cc@numberingtoplevel
+ \numberwithin{exercise}\cc@numberingtoplevel
+ \numberwithin{fact}\cc@numberingtoplevel
+ \numberwithin{hypothesis}\cc@numberingtoplevel
+ \numberwithin{lemma}\cc@numberingtoplevel
+ \numberwithin{notation}\cc@numberingtoplevel
+ \numberwithin{note}\cc@numberingtoplevel
+ \numberwithin{observation}\cc@numberingtoplevel
+ \numberwithin{open}\cc@numberingtoplevel
+ \numberwithin{openquestion}\cc@numberingtoplevel
+ \numberwithin{problem}\cc@numberingtoplevel
+ \numberwithin{proposition}\cc@numberingtoplevel
+ \numberwithin{question}\cc@numberingtoplevel
+ \numberwithin{remark}\cc@numberingtoplevel
+ \numberwithin{result}\cc@numberingtoplevel
+ \numberwithin{theorem}\cc@numberingtoplevel
+ \numberwithin{thesis}\cc@numberingtoplevel
+ \numberwithin{warning}\cc@numberingtoplevel
+ \numberwithin{exampleexample}\cc@numberingtoplevel
+ \fi\fi
+\fi}
+\numberallwithin{section}% redo this in the preamble, if necessary
+\newcommand{\newwarning}[2]{%
+ \expandafter\gdef\csname cc@warn@#1\endcsname{#2}%
+ \expandafter\def\csname cc@warncount@#1\endcsname{0}}
+\newcommand{\ccClassWarning}[1]{%
+ \@ifundefined{cc@warn@#1}{%
+ \ClassWarning{cc}{Undefined warning.\MessageBreak
+ This should never occur.
+ Please inform nuesken@bit.uni-bonn.de .}%
+ }{}%
+ \expandafter\ifcase\csname cc@warncount@#1\endcsname\relax
+ \ClassWarning{cc}{\csname cc@warn@#1\endcsname.\MessageBreak
+ Possible further occurencies of this warning will be\MessageBreak
+ collected until the end of the document.\MessageBreak
+ This one was}%
+ \or
+ \AtEndDocument{%
+ \ClassWarningNoLine{cc}{Repeated warning collected \csname
+ cc@warncount@#1\endcsname\space times:\MessageBreak
+ \csname cc@warn@#1\endcsname}%
+ }%
+ \else
+ \fi
+ \expandafter\count@=0\csname cc@warncount@#1\endcsname\relax
+ \advance\count@\@ne
+ \expandafter\xdef\csname cc@warncount@#1\endcsname{\the\count@}%
+ }
+\newcommand{\cc@addto}[2]{%
+ \expandafter\ccaddto\expandafter{\csname
+ cc@\string#1\endcsname}{#2}{#1}}
+\providecommand{\addto}[2]{%
+ \expandafter\ccaddto\expandafter{\csname
+ cc@\string#1\endcsname}{#2}{#1}}
+\newcommand{\ccaddto}[3]{%
+ \ifx#1\@undefined
+ \gdef#1{#2}%
+ \AtBeginDocument{\expandafter\ccaddtonow\expandafter{#1}#3}%
+ \else
+ \ifx#1\relax
+ \gdef#1{#2}%
+ \AtBeginDocument{\expandafter\ccaddtonow\expandafter{#1}#3}%
+ \else
+ {\toks@\expandafter{#1#2}%
+ \xdef#1{\the\toks@}}%
+ \fi
+ \fi
+}
+\newcommand{\ccaddtoINDOC}[3]{%
+ \ifx#1\@undefined
+ \gdef#1{#2}%
+ \else
+ \ifx#1\relax
+ \gdef#1{#2}%
+ \else
+ {\toks@\expandafter{#1#2}%
+ \xdef#1{\the\toks@}}%
+ \fi
+ \fi
+}
+\AtBeginDocument{\global\let\ccaddto\ccaddtoINDOC}
+\newcommand{\ccaddtonow}[2]{%
+ \ifx#2\@undefined
+ \gdef#2{#1}%
+ \else
+ \ifx#2\relax
+ \gdef#2{#1}%
+ \else
+ {\toks@\expandafter{#2#1}%
+ \xdef#2{\the\toks@}}%
+ \fi
+ \fi
+}
+\long\def\cc@ifempty#1{\cc@xifempty#1@@..\@nil}
+\long\def\cc@xifempty#1#2@#3#4#5\@nil{%
+ \ifx#3#4\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+\long\def\cc@ifnotempty#1{\cc@ifempty{#1}{}}
+\def\babel\def#1#2{%
+ \@ifnextchar[{\n@wbabel{#1}{#2}}{\n@wbabel{#1}{#2}[]}}
+\def\n@wbabel#1#2[#3]{%
+ \def#1{#2}%
+ \cc@ifnotempty{#2}{\cc@addto\captionsenglish{\def#1{#2}}}%
+ \babeladdtranslations#1{#3}%
+}
+\def\b@beladdlang#1=#2=#3\@@@#4{%
+ \cc@ifnotempty{#2}{%
+ \expandafter\cc@addto\csname captions#1\endcsname{\def#4{#2}}%
+ }%
+}
+\def\babeladdtranslations#1#2{%
+ \@for\@tempa:=#2\do{\expandafter\b@beladdlang\@tempa==\@@@#1}%
+}
+\def\condbreak#1{%
+ \vskip 0pt plus #1%
+ \pagebreak[3]%
+ \vskip 0pt plus -#1%
+ \relax}
+\let\ccorg@enumerate\enumerate
+\def\enumerate{\@ifstar{\count251\c@enumi
+ \count252\c@enumii
+ \count253\c@enumiii
+ \count254\c@enumiv
+ \ccorg@enumerate
+ \c@enumi\count251
+ \c@enumii\count252
+ \c@enumiii\count253
+ \c@enumiv\count254}%
+ {\ccorg@enumerate}}
+\endinput
+%%
+%% End of file `ccaux.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cccite.sty}
+%%
+%% This is file `cccite.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cccite,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{cccite}[2000/02/29 v2.05 cc cite helper package]
+\PackageWarningNoLine{cccite}{%
+ The package cccite is obsolete.\MessageBreak
+ Better use cc2cite.
+ }
+\RequirePackage{ccdbs}
+\DefaultBibliographyStyle{cc}
+\let\ccorg@cite\cite
+\let\ccorg@@cite\@cite
+\def\@citeseppen{-5}
+\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
+\def\cite#1{\def\citeauthoryear##1##2{##1\ (##2)}\@citex{#1}}
+\def\citeauthor#1{\def\citeauthoryear##1##2{##1}\@citex{#1}}
+\def\citeyear#1{\def\citeauthoryear##1##2{##2}\@citex{#1}}
+\def\shortcite#1{\def\citeauthoryear##1##2{##1\ ##2}\@citex{#1}}
+\def\parencite#1{\def\citeauthoryear##1##2{(##1\ ##2)}\@citex{#1}}
+\def\citemul#1{\@mcite #1\@\@}
+\def\@mcite#1,#2\@\@{\citeauthor{#1}\hskip3pt(\citeyear{#1,#2})}
+\def\@citex#1{\@tempswafalse%
+ \if@filesw\immediate\write\@auxout{\string\citation{#1}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#1\do
+ {\@citea\def\@citea{,\penalty\@citeseppen\ }\@ifundefined
+ {b@\@citeb}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{}}
+\let\ccorg@cite\cite
+\newcommand{\citet}{\let\which@cite\ccorg@cite\cc@citea}
+\let\cite\citet
+\newcommand{\citep}{\let\which@cite\parencite\cc@citea}
+\newcommand{\citealt}{\let\which@cite\shortcite\cc@citea}
+\newcommand{\citealp}{\let\which@cite\shortcite\cc@citea}
+\newcommand{\citetext}[1]{(#1)}
+\newcommand{\@citeyearpar}[1]{\citetext{\citeyear{#1}}}
+\newcommand{\citeyearpar}{\let\which@cite\@citeyearpar\cc@citea}
+\let\ccorg@citeauthor\citeauthor
+\renewcommand{\citeauthor}{\let\which@cite\ccorg@citeauthor\cc@citea}
+\newcommand{\citefullauthor}{\citeauthor*}
+\newcommand{\Citet}{\let\which@cite\cite\cc@citea}
+\newcommand{\Citep}{\let\which@cite\parencite\cc@citea}
+\newcommand{\Citealt}{\let\which@cite\shortcite\cc@citea}
+\newcommand{\Citealp}{\let\which@cite\shortcite\cc@citea}
+\newwarning{poormancitea}{%
+ This is only a poor (wo)man's version of this command.\MessageBreak
+ Please use the package natbib.sty for full features.\MessageBreak
+ Drop the document class option cccite }
+\newcommand{\cc@citea}{%
+ \ccClassWarning{poormancitea}%
+ \@tempswafalse\@ifstar{\cc@cite@st}{\cc@citeb}}
+\def\cc@cite@st{\@tempswatrue\cc@citeb}
+\newcommand{\cc@citeb}[1][]{\def\cc@cite@a{#1}\cc@citec}
+\newcommand{\cc@citec}[1][]{\def\cc@cite@b{#1}\which@cite}
+\def\@biblabel#1{%
+ \def\citename##1{##1}% for authordate bib styles
+ }
+\newcounter{NAT@ctr}
+\def\NAT@noname{{}}
+\let\ccorg@lbibitem\@lbibitem
+\def\@lbibitem[#1]#2{%
+ \let\citeauthoryear\bib@citeauthoryear
+ \if@filesw\@tempswatrue\else\@tempswafalse\fi\@fileswfalse
+ \ccorg@lbibitem[#1]{#2}%
+ \if@tempswa\@fileswtrue\fi
+ \NAT@ifcmd#1(@)(@)\@nil{#2}\ignorespaces}
+\newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd}
+\newcommand\NAT@ifxcmd{%
+ \ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi}
+\def\NAT@bare#1(#2)#3(@)#4\@nil#5{%
+ \if @#2
+ \expandafter\NAT@apalk#1, , \@nil{#5}\else
+ \stepcounter{NAT@ctr}%
+ \cc@wrout{\arabic {NAT@ctr}}{#2}{#1}{#3}{#5}
+\fi
+}
+\newcommand\NAT@apalk{}
+\def\NAT@apalk#1, #2, #3\@nil#4{\if\relax#2\relax
+ \global\NAT@stdbsttrue
+ \cc@wrout{#1}{}{}{}{#4}\else
+ \stepcounter{NAT@ctr}%
+ \cc@wrout{\arabic {NAT@ctr}}{#2}{#1}{}{#4}\fi}
+\newcommand\citeauthoryear{}
+\def\bib@citeauthoryear#1#2#3(@)(@)\@nil#4{%
+ \stepcounter{NAT@ctr}\if\relax#3\relax
+ \cc@wrout{\arabic {NAT@ctr}}{#2}{#1}{}{#4}\else
+ \cc@wrout{\arabic {NAT@ctr}}{#3}{#2}{#1}{#4}\fi}
+\newcommand\citestarts{\NAT@open}
+\newcommand\citeends{\NAT@close}
+\newcommand\betweenauthors{and}
+\newcommand\astroncite{}
+\def\astroncite#1#2(@)(@)\@nil#3{\stepcounter{NAT@ctr}\cc@wrout{\arabic
+{NAT@ctr}}{#2}{#1}{}{#3}}
+\newcommand\citename{}
+\def\citename#1#2(@)(@)\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}}
+\newcommand\harvarditem[4][]%
+ {\if\relax#1\relax\bibitem[#2(#3)]{#4}\else
+ \bibitem[#1(#3)#2]{#4}\fi }
+\newcommand\harvardleft{\NAT@open}
+\newcommand\harvardright{\NAT@close}
+\newcommand\harvardyearleft{\NAT@open}
+\newcommand\harvardyearright{\NAT@close}
+\AtBeginDocument{\providecommand{\harvardand}{and}}
+\newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}}
+\newcommand\cc@wrout[5]{%
+ \if@filesw
+ {\let\protect\noexpand\let~\relax
+ \immediate
+ \write\@auxout{\string\bibcite{#5}%
+ {\protect\citeauthoryear{#3}{#2}}}}\fi
+ \ignorespaces}
+\endinput
+%%
+%% End of file `cccite.sty'.
+\end{filecontents*}
+\begin{filecontents*}{ccdbs.sty}
+%%
+%% This is file `ccdbs.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `ccdbs,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{ccdbs}[2000/02/20 v2.05 bibliography helper package]
+\let\ccorg@bibliographystyle\bibliographystyle
+\newif\if@bibstylemissing \@bibstylemissingtrue
+\def\bibliographystyle{\@bibstylemissingfalse
+ \gdef\bibliographystyle##1{%
+ \PackageWarning{ccdbs}{\protect\bibliographystyle\space can be
+ used only before \protect\bibliography!}}%
+ \ccorg@bibliographystyle}
+\let\ccorg@bibliography\bibliography
+\def\bibliography{%
+ \if@bibstylemissing
+ \bibliographystyle{\bibstyle@default}%
+ \fi
+ \ccorg@bibliography}
+\newcommand{\DefaultBibliographyStyle}[1]{%
+ \def\bibstyle@default{#1}}
+\DefaultBibliographyStyle{plain}
+\endinput
+%%
+%% End of file `ccdbs.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cclayout.sty}
+%%
+%% This is file `cclayout.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `cclayout,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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}
+\ProvidesPackage{cclayout}[2012/06/22 v2.25 cclayout. MNuesken]
+\let\@contact\relax
+\newcommand{\contact}[1]{\gdef\@contact{#1}}
+\AtBeginDocument{\if@ccpublish
+ \@ifundefined{@contact}{%
+ \ClassWarningNoLine{cc}{Who is the contact author?\MessageBreak
+ Use \protect\contact\space in the preamble!}%
+ }{}%
+ \fi}
+\let\@received\relax
+\newcommand{\received}[1]{\gdef\@received{#1}}
+\AtBeginDocument{\if@ccpublish
+ \@ifundefined{@received}{%
+ \ClassWarningNoLine{cc}{Missing submission/received date.\MessageBreak
+ Use \protect\received\space in the preamble.}{}%
+ }{}%
+ \fi}
+\def\submitted{\received}
+\let\@titlehead\relax
+\newcommand{\titlehead}[1]{\gdef\@titlehead{#1}}
+\let\@authorhead\@undefined
+\newcommand{\authorhead}[1]{\gdef\@authorhead{#1}}
+\let\@authorlist\@undefined
+\newcommand{\authorlist}[1]{\gdef\@authorlist{#1}}
+\let\abstract\@undefined\let\endabstract\@undefined
+\babel\def\ccabstractname{Abstract}[%
+ german=Zusammenfassung,french=R\'esum\'e]
+\RequirePackage{environ}[2008/06/18]
+\def\@abstract@macro{}
+\long\def\for@cc@abstract#1{%
+ \gdef\@abstract@macro{\begin{@abstr}{\ccabstractname}#1\end{@abstr}}}
+\newenvironment{abstract}{\Collect@Body\for@cc@abstract}{}
+\newcommand{\Abstract}{\for@cc@abstract}
+\babel\def\cckeywordsname{Keywords}[%
+ german=Stichworte,french=Mot-cl\'e]
+\def\@keywords@macro{}
+\long\def\for@cc@keywords#1{%
+ \gdef\@keywords@macro{\begin{@abstr}{\cckeywordsname}#1\end{@abstr}}}
+\newenvironment{keywords}{\Collect@Body\for@cc@keywords}{}
+\babel\def\ccsubjectclassificationname{Subject classification}[%
+ german=Klassifizierung,french=Classification de suj\`et]
+\def\@subject@macro{}
+\long\def\for@cc@subject#1{%
+ \gdef\@subject@macro{\begin{@abstr}{\ccsubjectclassificationname}
+ #1
+ \end{@abstr}}}
+\newenvironment{subject}{\Collect@Body\for@cc@subject}{}
+\newdimen\@abstrwidth
+\newbox\@abstr@box
+\newenvironment{@abstr}[1]{%
+ \setbox\@abstr@box\vbox\bgroup%
+ \@parboxrestore
+ \ifdim\@abstrwidth>\hsize\@abstrwidth\hsize\fi
+ \leftmargin.5\hsize \advance\leftmargin-.5\@abstrwidth
+ \rightmargin\leftmargin
+ \@trivlist\@newlistfalse\global\@inlabeltrue
+ \advance\linewidth -\rightmargin
+ \advance\linewidth -\leftmargin
+ \advance\@totalleftmargin \leftmargin
+ \parshape \@ne \@totalleftmargin \linewidth
+ \small
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 2\p@ \@plus2\p@ \@minus1\p@
+ \parsep 1\p@
+ \itemsep \parsep}%
+ \def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep 0\p@ \@plus1\p@
+ \parsep 1\p@
+ \itemsep \parsep}%
+ \let\@listiii\@toodeep
+ \let\@listiv\@toodeep
+ \let\@listv\@toodeep
+ \let\@listvi\@toodeep
+ \textbf{#1. }\ignorespaces}
+{%
+ \par
+ \egroup
+ \leavevmode\unvbox\@abstr@box
+ \ignorespacesafterend}
+\newif\if@abstractoptional
+\if@ccpublish\@abstractoptionalfalse\else\@abstractoptionaltrue\fi
+\newcommand{\noabstract}{\ClassWarning{cc}{You are using a non
+ documented feature}\@abstractoptionaltrue}
+\newif\if@keywordsoptional
+\if@ccpublish\@keywordsoptionalfalse\else\@keywordsoptionaltrue\fi
+\newcommand{\nokeywords}{\ClassWarning{cc}{You are using a non
+ documented feature}\@keywordsoptionaltrue}
+\newif\if@subjectoptional
+\if@ccpublish\@subjectoptionalfalse\else\@subjectoptionaltrue\fi
+\newcommand{\nosubject}{\ClassWarning{cc}{You are using a non
+ documented feature}\@subjectoptionaltrue}
+\def\@subtitle{}
+\newcommand{\subtitle}[1]{\def\@subtitle{#1}}
+\def\@version{}
+\newcommand{\version}[1]{\def\@version{#1}}
+\AtBeginDocument{\addtocounter{section}{-1}\refstepcounter{section}}%
+\AtEndDocument{\hrule height0pt\label{ccenddocument}}%
+\def\@ccunknown{??}
+\def\@ccfirst{1}%
+\let\@cclast\@ccunknown%
+\let\@ccnumberofpages\@ccunknown%
+\long\def\cc@secondoffive#1#2#3#4#5{#2}
+\AtBeginDocument{%
+ \@ifundefined{r@ccenddocument}{}{%
+ \@tempcnta\@ne
+ \advance\@tempcnta-\@ccfirst
+ \protected@xdef\@cclast{\csname r@ccenddocument\endcsname}%
+ \xdef\@cclast{\expandafter\cc@secondoffive\@cclast{}{}{}{}{}}%
+ \advance\@tempcnta\@cclast%
+ \xdef\@ccnumberofpages{\the\@tempcnta}%
+ }%
+}
+\def\@cctxt{}
+\newif\if@cchead
+\newcommand{\noccpublish}[1]{%
+ \global\@ccpublishfalse
+ \global\@abstractoptionaltrue% Abstract optional
+ \global\@keywordsoptionaltrue% Keywords optional
+ \global\@subjectoptionaltrue% Subject class. optional
+ \global\@ccheadfalse
+ \gdef\@cctxt{#1}%
+ }
+\newcommand{\ccpublish}[4]{% Deprecated since 2011/07/25
+ \global\@ccpublishtrue
+ \global\@abstractoptionalfalse% Abstract required
+ \global\@keywordsoptionalfalse% Keywords required
+ \global\@subjectoptionalfalse% Subject class. required
+ \global\@ccheadtrue
+ \gdef\@ccyear{#1}%
+ \gdef\@ccvolume{#2}%
+ \gdef\@ccissue{#3}%
+ \gdef\@ccfirst{#4}%
+ \gdef\@cctxt{cc \textbf{#2} (#1)}%
+ \global\@autotitletrue
+ \AtBeginDocument{\addtocounter{section}{-1}\refstepcounter{section}}%
+ }
+\RequirePackage{xkeyval}[2008/08/13]
+\def\cc@fixlencountdown#1{%
+ \@tfor\@x:=#1\do{\advance\@tempcnta\m@ne}}
+\def\cc@fixelendef#1#2#3#4{%
+ \@tempcnta#1%
+ \edef\@tempa{#4}\expandafter\cc@fixlencountdown\expandafter{\@tempa}%
+ \gdef#3{}\relax
+ \@whilenum\@tempcnta>\z@\do{%
+ \expandafter\gdef\expandafter#3\expandafter{#3#2}%
+ \advance\@tempcnta\m@ne}%
+ \expandafter\gdef\expandafter#3\expandafter{#3#4}%
+}
+\def\cc@fixelen#1#2#3{%
+ \@tempcnta#1
+ \edef\@tempa{#3}\expandafter\cc@fixlencountdown\expandafter{\@tempa}%
+ \@whilenum\@tempcnta>\z@\do{%
+ #2%
+ \advance\@tempcnta\m@ne}%
+ \edef\@tempa{\noexpand\cc@fixelena#3\noexpand\@@@}\@tempa%
+}
+\def\cc@fixelena#1\@@@{%
+ \@tfor\@x:=#1\do{%
+ \advance\@tempcnta\@ne
+ \ifnum\@tempcnta>\z@\@x\fi
+ }%
+}
+\define@boolkey{ccsps}{sps}[true]{}%
+\define@key{ccsps}{journal}[cc]{\gdef\@journalname{#1}}%
+\define@key{ccsps}{journalnumber}[37]{\gdef\@journalnumber{#1}}%
+\define@key{ccsps}{submitted}[??dd Month yyyy??]{%
+ \gdef\@received{#1}%
+ \gdef\received##1{\ClassWarning{cc}
+ {Received/submitted date (##1) override!\MessageBreak
+ Using \@received.}}}
+\define@boolkey{ccsps}{revisionstage}[true]{%
+}
+\define@key{ccsps}{DOImsnr}[??]{% manuscript number
+ \gdef\@DOImsnr{#1}}
+\define@boolkey{ccsps}{TYPESET}[true]{%
+ \ifKV@ccsps@TYPESET\let\TYPESET=Y\else\let\TYPESET=N\fi}
+\define@boolkey{ccsps}{DISK}[true]{%
+ \ifKV@ccsps@DISK\let\DISK=Y\else\let\DISK=N\fi}
+\define@boolkey{ccsps}{LE}[true]{%
+ \ifKV@ccsps@LE\let\LE=Y\else\let\LE=N\fi}
+\define@boolkey{ccsps}{CP}[true]{%
+ \ifKV@ccsps@CP\let\CP=Y\else\let\CP=N\fi}
+\define@key{ccsps}{draftcopy}[Uncorrected proof]{% watermark text
+ \gdef\cc@watermarktext{#1}}
+\define@boolkey{ccsps}{helperstrip}[true]{}%
+\define@boolkey{ccsps}{grid}[true]{}
+\define@boolkey{ccsps}{issuestage}[true]{%
+}
+\define@boolkey{ccsps}{openaccess}[true]{%
+}
+\define@boolkey{ccsps}{stageaccess}[true]{% Deprecated.
+ \setkeys{ccsps}{openaccess=#1}}
+\define@key{ccsps}{year}[????]{\gdef\@ccyear{#1}}
+\define@key{ccsps}{volume}[??]{\gdef\@ccvolume{#1}}
+\define@key{ccsps}{issue}[??]{\gdef\@ccissue{#1}}%
+\define@key{ccsps}{firstpage}[1]{%
+ \gdef\@ccfirst{#1}%
+ \@tempcnta4\@tfor\@x:=#1\do{\advance\@tempcnta\m@ne}%
+ \ifcase\@tempcnta\gdef\@ccfirstiv{#1}%
+ \or\gdef\@ccfirstiv{0#1}%
+ \or\gdef\@ccfirstiv{00#1}%
+ \or\gdef\@ccfirstiv{000#1}%
+ \else\ClassError{cc}{First page number too big.}{%
+ The number of the first page cannot be larger than 9999.
+ }\fi
+}
+\define@key{ccsps}{copyholder}[\default@copyholder]{\gdef\@copyholdername{#1}}
+\def\default@copyholder{%
+ \ifKV@ccsps@openaccess The Author(s)
+ \else Springer Basel AG\fi}
+\define@key{ccsps}{doisuffix}[????-?]{%
+ \cc@fixelendef50\@doiinfo{\@journalnumber}%
+ \xdef\@doiinfo{%
+ 10.1007/s\@doiinfo-%
+ \noexpand\cc@fixelen30{\noexpand\@ccyear}-%
+ #1}}
+\define@key{ccsps}{doi}{\gdef\@doiinfo{#1}}
+\define@key{ccsps}{onlinedate}[??dd Month yyyy??]{\gdef\@onlinedate{#1}}
+\define@key{ccsps}{onlinefirstyear}[\the\year]{\gdef\@ccyear{#1}}
+\define@key{ccsps}{coveryear}[\@ccyear]{\gdef\@coveryear{#1}}
+\define@boolkey{ccsps}{pdfpage}[true]{%
+}
+\define@boolkey{ccsps}{xlink}[true]{}
+\setkeys{ccsps}{
+ sps=false,
+ journal={cc}, journalnumber=37,
+ grid=false,
+ TYPESET=false,
+ DISK=false,
+ LE=false,
+ CP=false,
+ DOImsnr,
+ openaccess=false,
+ revisionstage=false,
+ helperstrip=false,
+ issuestage=false,
+ copyholder,
+ year,volume,issue,firstpage,
+ onlinefirstyear,coveryear,doisuffix,onlinedate,
+ draftcopy
+}
+\newcommand{\ccsps}[1]{%
+ \if@cctextarea\else\ClassError{cc}{Wrong textarea chosen}
+ {Remove any textarea or noccpublish option from documentclass.}\fi
+ \global\@ccpublishtrue
+ \global\@abstractoptionalfalse% Abstract required
+ \global\@keywordsoptionalfalse% Keywords required
+ \global\@subjectoptionalfalse% Subject class. required
+ \global\@ccackfalse% Acknowledgements required
+ \global\@ccheadtrue
+ \global\@autotitletrue
+ \setkeys{ccsps}{sps,#1}
+ \gdef\@cctxt{cc \textbf{\@ccvolume} (\@ccyear)}%
+ \RequirePackage[mathlines]{lineno}[2005/11/02]
+ \ifKV@ccsps@pdfpage
+ \setkeys{ccsps}{helperstrip=false}%
+ \nolinenumbers
+ \else
+ \setkeys{ccsps}{helperstrip=true}%
+ \RequirePackage[conditional,draft]{draftcopy}
+ \draftcopyPageTransform{155 75 translate 65 rotate}
+ \draftcopyName{\cc@watermarktext}{75}
+ \linenumbers
+ \fi
+ \RequirePackage[%dvips,
+ bookmarks=\ifKV@ccsps@xlink true\else false\fi,
+ breaklinks=true,
+ colorlinks=\ifKV@ccsps@xlink true\else false\fi,
+ linkcolor=\ifKV@ccsps@xlink blue\else black\fi,
+ unicode]{hyperref}[2011/04/17 v6.82g]%
+ \AtBeginDocument{\init@bare}
+ \RequirePackage{breakcites}%
+ \RequirePackage{breakurl}[2009/01/24 v1.30]%
+ \def\l@title##1{\@dottedtocline{-1}{0pt}{0pt}{{\large\textbf{##1}}}}%
+ \let\l@title\l@part
+ \ifKV@ccsps@xlink%
+ \def\@urlcolor{blue}
+ \def\@citecolor{blue}
+ \def\externalref##1##2{\hyperimage{##1}{##2}}%
+ \def\DOIexternalref##1##2{\hyperimage{##1}{##2}}%
+ \InputIfFileExists{bookmarkgreeks.tex}{}{}%
+ \else
+ \def\@urlcolor{black}%
+ \def\@citecolor{black}
+ \def\externalref##1##2{##2}%
+ \def\DOIexternalref##1##2{##2}%
+ \fi%
+ \ifKV@ccsps@grid
+ \overfullrule=6pt
+ \let\twidth\textwidth
+ \let\theight\textheight
+ \else\overfullrule=0pt\fi
+ \InputIfFileExists{JS_info.tex}{}{}%
+}
+\def\printed@issn{1016-3328}%
+\def\electronic@issn{1420-8954}%
+\newcommand{\printed}{\let\issn\printed@issn}
+\newcommand{\electronic}{\let\issn\electronic@issn}
+\printed
+\@onlypreamble\ccpublish
+\@onlypreamble\ccsps
+\@onlypreamble\electronic
+\@onlypreamble\printed
+\def\extractnamesfr@m@author{%
+ \@ifundefined{@authorlist}{%
+ \let\and\ignorespaces
+ \let\latest@name\relax
+ \count@\z@
+ \expandafter\extract@names\@author\and\and\@nil}{%
+ \@authorlist
+ }
+ }
+\def\extract@names#1\and#2\@nil{%
+ \cc@ifempty{#1}{%
+ \unskip\if\and\relax\else
+ \ifnum\count@>\tw@\authorlastsepmany\else\authorlastsep\fi
+ \fi\latest@name
+ \let\next\gobble@nil}%
+ {%
+ \unskip\and\latest@name
+ \ifx\latest@name\relax\else\let\and\authorsep\fi
+ \extract@name#1\\\@nil
+ \let\next\extract@names}%
+ \next#2\@nil}
+\def\gobble@nil#1\@nil{}
+\def\extract@name#1\\#2\@nil{\advance\count@\@ne\def\latest@name{#1}}
+\babel\def\ccAND{and}[german=und,french=et]
+\def\authorsep{,\penalty-5\ }
+\def\authorlastsep{\penalty-5\ \ccAND{} }
+\def\authorlastsepmany{,\penalty-5\ \ccAND{} }
+\newtoks\latest@lastname
+\newtoks\@firstname
+\let\@firstlastname\@temptokena
+\def\extractauthorheadfr@m@author{%
+ {%
+ \let\and\@empty
+ \latest@lastname{}%
+ \toks@{}%
+ \count@\m@ne
+ \expandafter\extract@lastnames\@author\and\and\@nil
+ \ifnum\count@<2
+ \xdef\@authorhead{\the\@firstname}
+ \else\ifnum\count@<4
+ \xdef\@authorhead{\the\toks@}%
+ \else
+ \xdef\@authorhead{\the\@firstlastname\noexpand\textit{ et al.}}%
+ \fi\fi
+ }%
+ \setbox0\hbox{\small\let\thanks\@gobble\@authorhead}%
+ \ifdim\wd0>.7\textwidth
+ \ClassWarningNoLine{cc}{Authorhead too long. Use
+ \protect\authorhead\space to specify\MessageBreak a shortened
+ author list for the headings!}%
+ \fi
+ }
+\def\extract@lastnames#1\and#2\@nil{%
+ \advance\count@\@ne
+ \cc@ifempty{#1}{%
+ \expandafter\cc@ifempty\expandafter{\the\toks@}{%
+ \edef\@tempa{\the\latest@lastname}%
+ }{%
+ \edef\@tempa{\the\toks@\authorheadlastsep\the\latest@lastname}%
+ }%
+ \toks@\expandafter{\@tempa}%
+ \let\next\gobble@nil
+ }{%
+ \expandafter\cc@ifempty\expandafter{\the\toks@}{%
+ \edef\@tempa{\the\latest@lastname}%
+ }{%
+ \edef\@tempa{\the\toks@\authorheadsep\the\latest@lastname}%
+ }%
+ \toks@\expandafter{\@tempa}%
+ \extract@lastname#1\\\@nil
+ \let\next\extract@lastnames}%
+ \ifnum\count@=\@ne\@firstlastname\expandafter{\the\toks@}\fi
+ \next#2\@nil}
+\def\gobble@nil#1\@nil{}
+\def\extract@lastname#1\\#2\@nil{%
+ \ifnum\count@=\z@\@firstname{#1}\fi
+ \extract@lastname@#1 \@nil}
+\def\extract@lastname@#1 #2\@nil{%
+ \cc@ifempty{#2}{\latest@lastname{#1}}{\extract@lastname@#2\@nil}}
+\def\authorheadsep{, }
+\def\authorheadlastsep{ \& }
+\def\authorheadlastsepmany{ \& }
+\let\@author\relax
+\AtBeginDocument{%
+ \@ifundefined{@author}{\if@ccpublish
+ \ClassError{cc}{No \protect\author\space given}{Define an author
+ list in the preamble by \protect\author{...}}%
+ \else
+ \ClassWarningNoLine{cc}{No \protect\author\space given}%
+ \fi}{}
+ \@ifundefined{@authorhead}{\extractauthorheadfr@m@author}{}}
+\let\@title\relax
+\AtBeginDocument{%
+ \@ifundefined{@title}{\if@ccpublish
+ \ClassError{cc}{No \protect\title\space given}{Define a title in
+ the preamble by \protect\title{...}}%
+ \else
+ \ClassWarningNoLine{cc}{No \protect\title\space given}%
+ \fi}{}
+ \setbox0\hbox{\small\let\thanks\@gobble
+ \@ifundefined{@titlehead}{\let\\\ \@title}{\@titlehead}}%
+ \ifdim\wd0>.7\textwidth
+ \ClassError{cc}{Title too long for running head.\MessageBreak
+ Use \protect\titlehead\space to specify\MessageBreak a shortened
+ title for the headings!}{}%
+ \fi}
+\def\extractaffilsfr@om@author{%
+ \parindent\z@
+ \init@affils
+ \expandafter\extract@affils\@author\and\and\@nil
+ \if@oddaffil\else\even@sep\even@post\fi
+}
+\def\init@affils{%
+ \let\and\relax
+ \global\@oddaffiltrue
+ }
+\def\extract@affils#1\and#2\@nil{%
+ \cc@ifempty{#1}{\let\next\gobble@nil}{%
+ \extract@affil#1\\\@nil
+ \let\next\extract@affils}%
+ \next#2\@nil}
+\def\extract@affil#1\\#2\@nil{%
+ \affilpre
+ \def\currentaddress{\otheraddress
+ Current address of \textsc{\ignorespaces#1}:\\}%
+ \begin{@ffiliation}
+ \textsc{\ignorespaces#1}\\#2
+ \end{@ffiliation}
+ \affilpost}
+\newcommand{\otheraddress}{\end{@ffiliation}\affilsep
+ \begin{@ffiliation}}
+\def\odd@pre{\par\begin{tabular}{@{}ll@{}}}%
+\def\odd@sep{&}%
+\def\odd@post{&}%
+\def\even@pre{}%
+\def\even@sep{\end{tabular}\par\begin{tabular}{@{}ll@{}}}%
+\def\even@post{\end{tabular}}%
+\newif\if@oddaffil
+\def\affilpre{\if@oddaffil\odd@pre\else\even@pre\fi}
+\def\affilsep{%
+ \if@oddaffil\odd@sep\@oddaffilfalse
+ \else\even@sep\@oddaffiltrue
+ \fi
+ }
+\def\affilpost{\if@oddaffil\odd@post\global\@oddaffilfalse
+ \else\even@post\global\@oddaffiltrue\fi}
+\if@twocolumnendtitle
+\newenvironment{@ffiliation}
+ {%
+ \minipage[t]{.48\hsize}
+ \dimen@\hsize \advance\dimen@ -1.5em
+ \everypar{\parshape 2 \z@ \hsize 1.5em \dimen@}%
+ \def\\{\unskip\par}%
+ }
+ {\strut\par\medskip\endminipage}
+\else
+\def\affilpre{\par}
+\def\affilpost{\par}
+\def\affilsep{\par}
+\newenvironment{@ffiliation}
+ {%
+ \minipage[t]{\hsize}\footnotesize
+ \dimen@\hsize \advance\dimen@ -1.5em
+ \everypar{\parshape 2 \z@ \hsize 1.5em \dimen@}%
+ \def\\{\unskip\par}%
+ }
+ {\endminipage\bigskip}
+\fi
+\ifcase\@textareaversion
+\@abstrwidth0.85\textwidth
+\or% version 1, used until June 2011
+\textwidth=141mm
+\@abstrwidth=120mm
+\textheight=200mm
+\topmargin=0mm
+\oddsidemargin=12mm
+\evensidemargin=12mm
+\marginparwidth=25mm
+\headheight=1.25\headheight
+\ifnum\@marginmode<\z@\@marginmode\z@\fi
+\or% version 2, used since July 2011
+\paperwidth=155mm
+\paperheight=235mm
+\topmargin=-9.6mm
+\textheight=45.5pc
+\textwidth=119mm
+\@abstrwidth=\textwidth
+\oddsidemargin=-7.6mm% should be 18mm, will be calculated acc.to \@marginmode
+\evensidemargin=-7.6mm% should be 18mm, will be calculated acc.to \@marginmode
+\marginparwidth=10mm% will be adapted below
+\headheight=1.25\headheight
+\ifnum\@marginmode<\z@\@marginmode\tw@\fi% use balanced margins
+\else% version negative or larger than max: emptypage
+\newdimen\allsidemargin \allsidemargin=.5in
+\textwidth=\paperwidth
+\advance\textwidth-2\allsidemargin% margin left/right
+\marginparsep=1pt
+\topmargin-1in
+\advance\topmargin\allsidemargin
+\textheight=\paperheight
+\advance\textheight-\allsidemargin
+\advance\textheight-\headheight
+\advance\textheight-\headsep
+\advance\textheight-\footskip
+\advance\textheight-\allsidemargin
+\@marginmode\tw@
+\sloppy
+\@abstrwidth0.85\textwidth
+\fi
+\newdimen\cc@topmargin \cc@topmargin\topmargin
+\newdimen\cc@textwidth \cc@textwidth\textwidth
+\newdimen\cc@textheight \cc@textheight\textheight
+\AtBeginDocument{%
+ {\if@ccpublish
+ \@tempswafalse
+ \ifnum\@textareaversion>0
+ \ifdim\topmargin=\cc@topmargin\relax\else\@tempswatrue\fi
+ \ifdim\textwidth=\cc@textwidth\relax\else\@tempswatrue\fi
+ \ifdim\textheight=\cc@textheight\relax\else\@tempswatrue\fi
+ \fi
+ \if@tempswa
+ \ClassError{cc}{FATAL ERROR! For publishing in cc the page and text
+ dimension must not be manipulated. Remove any packages that
+ modify the text or page dimensions. In particular: remove the
+ packages^^J
+ fullpage.sty,^^J
+ a4wide.sty,^^J
+ geometry.sty,^^J
+ vmargin.sty,^^J
+ typearea.sty}{}%
+ \aftergroup\endinput
+ \fi
+ \fi}%
+}
+\typeout{Now adjusting margins: \the\@marginmode.}
+\ifcase\@marginmode
+\AtEndOfClass{%
+\oddsidemargin\paperwidth
+\advance\oddsidemargin-2in
+\advance\oddsidemargin-\textwidth
+\advance\oddsidemargin-\evensidemargin}
+\or
+\AtEndOfClass{%
+\oddsidemargin\paperwidth
+\advance\oddsidemargin-2in
+\advance\oddsidemargin-\textwidth
+\evensidemargin=5mm
+\advance\oddsidemargin-\evensidemargin}
+\or
+\AtEndOfClass{%
+\oddsidemargin\paperwidth
+\advance\oddsidemargin-2in
+\advance\oddsidemargin-\textwidth
+\oddsidemargin.5\oddsidemargin
+\evensidemargin\oddsidemargin}
+\fi
+\AtEndOfClass{%
+ \marginparwidth1in
+ \advance\marginparwidth-5mm
+ \advance\marginparwidth-2\marginparsep
+ \ifdim\evensidemargin<\oddsidemargin
+ \advance\marginparwidth\evensidemargin
+ \else
+ \advance\marginparwidth\oddsidemargin
+ \fi
+}
+\newskip\headerindent \headerindent=10mm
+\newdimen\headrulewidth \headrulewidth.4pt
+\def\ps@cc{\let\@mkboth\markboth
+ \let\@oddfoot\@empty
+ \let\@evenfoot\@empty
+ \let\@oddhead\@empty
+ \let\@evenhead\@empty
+ \if@ccpublish
+ \ps@ccfirst
+ \def\@oddfoot{%
+ \ifKV@ccsps@helperstrip%
+ \begin{picture}(0,0)%
+ \put(340,3){{\stripbox}}%
+ \put(10,-5){{\tiny Produced with: \texttt{\csname ver@cc.cls\endcsname}}}%
+ \end{picture}%
+ \fi
+ }%
+ \let\@evenfoot\@oddfoot
+ \fi
+ \expandafter\def\expandafter\@oddhead\expandafter{\@oddhead
+ \vbox{\hbox to\textwidth{\reset@font\strut
+ {\small\@cctxt}%
+ \hfil
+ {\small
+ \@ifundefined{@titlehead}{%
+ \let\\\ %
+ \@title
+ }{%
+ \@titlehead
+ }}%
+ \hbox to\headerindent{\hfil\thepage}%
+ }%
+ \if@ccpublish\else
+ \kern2.6\p@
+ \hrule\@height\headrulewidth\kern-\headrulewidth
+ \kern-2.6\p@
+ \fi
+ \vskip\z@
+ }%
+ }%
+ \expandafter\def\expandafter\@evenhead\expandafter{\@evenhead
+ \vbox{\hbox to\textwidth{\reset@font\strut
+ \hbox to\headerindent{\thepage\hfil}%
+ {\small\@authorhead}%
+ \hfil
+ {\small\@cctxt}%
+ }%
+ \if@ccpublish\else
+ \kern2.6\p@
+ \hrule\@height\headrulewidth\kern-\headrulewidth
+ \kern-2.6\p@
+ \fi
+ \vskip\z@
+ }%
+ }%
+ }
+\RequirePackage{graphics}[2009/02/05 v1.0o]
+\RequirePackage{xcolor}[2007/01/21 v2.11]%
+\IfFileExists{Birkh_logo_2010_sps.eps}{%
+ \def\birklogo{\bgroup\includegraphics{Birkh_logo_2010_sps.eps}\egroup}
+}{%
+ \def\birklogo{{\ixpt Birkh{\"{a}}user}}
+}
+\IfFileExists{dummy_sps.eps}{%
+ \def\spslogo{\bgroup\includegraphics{dummy_sps.eps}\egroup}
+}{%
+ \def\spslogo{{\ixpt Springer Publishing}}
+}
+\def\ps@ccfirst{%
+ \def\@oddfoot{%
+ \if@ccpublish
+ \ifKV@ccsps@revisionstage%
+ \begin{picture}(0,0)%
+ \put(0,15){{\smash{\raisebox{-2.25pt}{\spslogo}}}}%
+ \end{picture}%
+ \fi%
+ \ifKV@ccsps@sps
+ \begin{picture}(0,0)%
+ \put(289.5,15){{\birklogo}}%
+ \end{picture}%
+ \fi
+ \ifKV@ccsps@helperstrip%
+ \begin{picture}(0,0)%
+ \put(340,3){{\stripbox}}%
+ \put(10,-5){{\tiny Produced with: \texttt{\csname ver@cc.cls\endcsname}}}%
+ \end{picture}%
+ \fi
+ \fi}%
+ \let\@evenfoot\@oddfoot
+ \def\@oddhead{%
+ \ifKV@ccsps@grid
+ \hbox to\z@{%
+ \vbox to\z@{%
+ \hsize\twidth
+ \vskip\headsep
+ \fboxrule=.25pt
+ \fboxsep=-.25pt
+ \textcolor{lightgray}{%
+ \fbox{\vbox to\theight{\hbox to\twidth{\hss}\vss}}%
+ }%
+ \vss
+ }%
+ \hss
+ }%
+ \fi
+ \hss
+ }%
+ \let\@evenhead\@oddhead
+}
+\AtEndOfClass{\pagestyle{cc}}
+\AtEndOfClass{%
+ \AtBeginDocument{\@onlypreamble{\author{\if@autotitle\maketitle\fi}}}
+ \AtEndDocument{\if@autotitle\makeendtitle\fi}
+}
+\def\stripbox{\kern -11.7cm%
+ {}{%
+ \raisebox{.8mm}{%
+ \tiny
+ \fboxsep1mm\framebox{%
+ Journal: {\bf \@journalname}\enspace
+ Article No.: {\bf \@DOImsnr}\enspace
+ \fboxsep.2mm\fbox{%
+ \ifx Y\TYPESET{$\checkmark$}\else{\phantom{$\checkmark$}}\fi
+ }~TYPESET\enspace
+ \fbox{%
+ \ifx Y\DISK{$\checkmark$}\else{\phantom{$\checkmark$}}\fi
+ }~DISK\enspace
+ \fbox{%
+ \ifx Y\LE{$\checkmark$}\else{\phantom{$\checkmark$}}\fi
+ }~LE\enspace
+ \fbox{%
+ \ifx Y\CP{$\checkmark$}\else{\phantom{$\checkmark$}}\fi
+ }~CP\enspace
+ Disp.: \textbf{\the\year/\the\month/\the\day}\enspace
+ Pages: \textbf{\@ccnumberofpages}
+ }%
+ }%
+ }%
+} %%
+\def\vertrulea{\rule[-7.583pt]{0pt}{7.583pt}}
+\def\vertruleb{\rule{2.25pt}{10.2pt}}
+\newtoks\cite@hook
+\newcommand{\maketitleheadA}{% version before 2011 (Birkh^^e4user)
+ \hbox to\textwidth{%
+ \vbox to\z@{\vss
+ \baselineskip=12pt%
+ \halign{\ixpt##\hfil\cr
+ comput. complex.~\textbf{\@ccvolume}~(\@ccyear),
+ \thepage\ -- \@cclast\cr
+ \issn/\expandafter\@gobbletwo\@ccyear%
+ /\cc@fixelen20\@ccissue\relax
+ \cc@fixelen40\@ccfirst\relax
+ --\@ccnumberofpages\
+ \$ 1.50+0.20/0\cr}}\hss
+ \vbox to\z@{\vss
+ \offinterlineskip%
+ \halign{##&##\hfil\cr
+ \vertrulea&\ixpt
+ \copyright{} Birkh{\"{a}}user Verlag, Basel \@ccyear\cr
+ \noalign{\hrule}
+ \vertruleb\hskip1mm&%
+ \vbox to\z@{\vbox to\z@{\vss
+ \hbox{\xptsfbx computational complexity}}\vss}%
+ \cr}}}\vskip47.333pt
+}
+\newcommand{\maketitleheadSPS}{% version since 2011 (Springer)
+ \hbox to\textwidth{%
+ \vbox to\z@{\vss
+ \baselineskip=12pt%
+ \halign{%
+ \ixpt##\hfil\cr
+ comput. complex.%
+ \ifKV@ccsps@issuestage%
+ ~\textbf{\@ccvolume}~(\@ccyear),~\@ccfirst\ -- \@cclast
+ \fi\cr
+ \ifKV@ccsps@openaccess
+ \copyright{} \@copyholdername\ \@ccyear.
+ This article is published\cr with open access
+ at Springerlink.com\cr
+ \else\copyright{} \@copyholdername\ \@ccyear\cr\fi
+ \ifKV@ccsps@issuestage
+ {\printed@issn/\cc@fixelen20\@coveryear/%
+ \cc@fixelen20\@ccissue%
+ \cc@fixelen40\@ccfirst%
+ -% MN2011/07/27: use + instead?
+ \@ccnumberofpages}\cr
+ {{\it published online}\ \@onlinedate}\cr
+ \else\relax\fi
+ DOI \@doiinfo\cr}
+ }\hss
+ \vbox to\z@{\vss
+ \offinterlineskip%
+ \halign{##&##\hfil\cr
+ \vertrulea&\ixpt\cr
+ \noalign{\hrule}
+ \vertruleb\hskip1mm&%
+ \vbox to\z@{\vbox to\z@{\vss
+ \hbox{\xptsfbx computational complexity}}\vss}%
+ \cr}}}\vskip47.333pt
+}
+\def\l@title#1#2{}% Usually ignore title entries.
+\def\@@today{\today}% for comparison
+\renewcommand{\maketitle}{%
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \cite@hook{}%
+ \thispagestyle{ccfirst}
+ \if@cchead
+ \ifnum\@textareaversion=\tw@\vspace*{15pt}\fi
+ \vbox to\z@{\vss
+ \setcounter{page}{\@ccfirst}%
+ \ifcase\@textareaversion\maketitleheadSPS
+ \or\maketitleheadA
+ \or\maketitleheadSPS
+ \else\maketitleheadSPS
+ \fi
+ }%
+ \fi
+ \hrule\@height\z@
+ \vskip2.2ex% 4.0mm
+ \relax
+ \begin{center}
+ \if@ccpublish
+ \renewcommand{\footnote}[1]{\protect\ClassWarningNoLine{cc}{%
+ There are no footnotes allowed in title or author.\MessageBreak
+ Your command is ignored.\MessageBreak
+ Think about moving your remark to the acknowledgements}}%
+ \let\thanks\footnote
+ \else
+ \renewcommand{\footnote}[1]{\protect\ClassWarningNoLine{cc}{%
+ In title or author \string\footnote\space does not work.\MessageBreak
+ Avoid footnotes or use \string\thanks}}%
+ \def\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{%
+ \rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hb@xt@1.8em{%
+ \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
+ \fi
+ {%
+ \Large\bfseries
+ \def\\{\penalty-\@M}%
+ \expandafter\MakeUppercase\expandafter{\@title}%
+ \addcontentsline{toc}{title}{\@title}%
+ \par
+ }%
+ \@ifundefined{@subtitle}{}{{%
+ \large\itshape
+ \@subtitle
+ \par
+ }}
+ \@ifundefined{@version}{}{{%
+ \large\itshape
+ \@version
+ \par
+ }}
+ \bigskip
+ \vskip1.21ex% 2.2mm
+ \vskip\z@
+ {%
+ \large\scshape
+ \extractnamesfr@m@author
+ \par
+ }%
+ \ifKV@ccsps@sps%\if@ccpublish
+ \ifx\@date\@@today\else
+ \ClassWarningNoLine{cc}{Date ignored! (\@date)}%
+ \fi
+ \else{%
+ \vskip1ex
+ \large\@date\par
+ }\fi
+ \def\@tempa{\vskip5.5ex\let\@tempa\relax}%
+ \ifx\@abstract@macro\@empty
+ \if@abstractoptional
+ \ClassWarningNoLine{cc}{Missing abstract}%
+ \else
+ \ClassError{cc}{Missing abstract}
+ {Define abstract in the preamble using
+ \protect\begin{abstract} ... \protect\end{abstract}.}%
+ \fi
+ \else
+ \@tempa\@abstract@macro\par
+ \fi
+ \ifx\@keywords@macro\@empty
+ \if@keywordsoptional
+ \ClassWarningNoLine{cc}{Missing keywords}%
+ \else
+ \ClassError{cc}{Missing keywords}
+ {Define keywords in the preamble using
+ \protect\begin{keywords} ... \protect\end{keywords}.}%
+ \fi
+ \else
+ \@tempa\@keywords@macro\par
+ \fi
+ \ifx\@subject@macro\@empty
+ \if@subjectoptional
+ \ClassWarningNoLine{cc}{Missing subject classification}%
+ \else
+ \ClassError{cc}{Missing subject}
+ {Define subject in the preamble using
+ \protect\begin{subject} ... \protect\end{subject}.}%
+ \fi
+ \else
+ \@tempa\@subject@macro\par
+ \fi
+ \@thanks
+ \ifx\@tempa\relax\vskip3ex\fi
+ \end{center}
+ \setcounter{footnote}{0}%
+ \global\let\maketitle\relax
+ \global\let\thanks\@gobble
+ \global\let\@thanks\relax
+ \global\let\author\@notprerr
+ \global\let\title\@notprerr
+ \global\let\abstract\@notprerr
+ \global\let\Abstract\@notprerr
+ \global\let\keywords\@notprerr
+ \global\let\subject\@notprerr
+ \global\let\titlehead\@notprerr
+ \global\let\authorhead\@notprerr
+ \global\let\received\@notprerr
+ \vskip\z@
+ \par\@afterindentfalse\@afterheading
+ }
+\let\@maketitle\@undefined
+\let\and\@undefined
+\babel\def\ManuscriptReceived{Manuscript received }[%
+ german=Manuskript erhalten: ,%
+ french=Manuscrit re\c{c}u: ]
+\newcommand{\makeendtitle}{%
+ \par
+ \parindent\z@
+ \bigskip
+ \@ifundefined{@received}{}{%
+ \noindent{\small
+ \ManuscriptReceived\@received
+ \par}%
+ \medskip
+ }%
+ {\small
+ \extractaffilsfr@om@author
+ }%
+ \gdef\makeendtitle{\ClassWarning{cc}{\protect\makeendtitle\space
+ multiply used!}}%
+ }
+\endinput
+%%
+%% End of file `cclayout.sty'.
+\end{filecontents*}
+\begin{filecontents*}{ccproof.sty}
+%%
+%% This is file `ccproof.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `ccproof,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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 \~}
+\ProvidesPackage{ccproof}[2000/02/29 v2.05
+ proof environments for cc. Michael Nuesken, Bonn.]
+\RequirePackage{theorem}[1995/11/23 v2.2c]
+\RequirePackage{thcc}
+\RequirePackage{ccqed}
+\newcommand{\Qed}{\@qedtrue\qed}%
+\newtoks\everyproof \everyproof{}
+\theoremstyle{ccproof}
+\theorembodyfont{}
+\newtoks\prooftitle
+\newtheorem{pr@@f}{\the\prooftitle}
+\newenvironment{namedproof}[2][\qedsymbol]{%
+ \save@set@qed
+ \prooftitle{#2}%
+ \def\@tempa{#1}%
+ \def\@tempc{\qedsymbol}%
+ \ifx\@tempa\@tempc\relax\else\let\qedsymbol\@tempa\fi%
+ \the\everyproof \pr@@f
+ }{%
+ \qed\restore@qed
+ \endpr@@f}
+\babel\def\Proof{Proof}[german=Beweis,french=Preuve]
+\newenvironment{proof}{\namedproof{\Proof}}{\endnamedproof}
+\endinput
+%%
+%% End of file `ccproof.sty'.
+\end{filecontents*}
+\begin{filecontents*}{ccqed.sty}
+%%
+%% This is file `ccqed.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `ccqed,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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 \~}
+\ProvidesPackage{ccqed}[2014/07/08 v2.25d
+ right-justified end-of-proof mark,
+ based on Paul Taylor's QED.sty of 24 June 1995]
+\def\qed{\protect\@qed{$\qedsymbol$}}
+\def\qedsymbol{\square}
+\newif\ifAutoQED\AutoQEDfalse
+\def\parag@pushright#1{{%
+ \parfillskip\z@
+ \widowpenalty\@M
+ \displaywidowpenalty\@M
+ \finalhyphendemerits\z@
+ \hbox@pushright
+ #1%
+ \par}}%
+\def\hbox@pushright{%
+ \unskip
+ \nobreak
+ \hfil
+ \penalty50
+ \hskip.2em
+ \null
+ \hfill
+}%
+\def\vbox@pushright#1{\expandafter\message % (2 Jan 1994)
+ {QED.sty could be improved in this case
+ (line \the\inputlineno): please ask}%
+ \page@pushright{#1}}%
+\newif\if@qed\@qedfalse
+\def\save@set@qed{\let\saved@ifqed\if@qed\global\@qedtrue}%
+\def\restore@qed{\global\let\if@qed\saved@ifqed}
+\def\@qed#1{\check@pt@fm@thm
+\if@qed
+ \global\@qedfalse\pushright{#1}%
+\else\ifhmode\ifinner\else\par\fi\fi%
+\fi}
+\def\@pushright#1{%
+ \ifvmode
+ \ifinner\vbox@pushright{#1}%
+ \else \page@pushright{#1}%
+ \fi
+ \else\ifmmode\maths@pushright{\hbox{#1}}%
+ \else\ifinner\hbox@pushright{#1}%
+ \else\parag@pushright{#1}%
+ \fi \fi \fi
+}
+\def\maths@pushright#1{%
+ \ifinner
+ \hbox@pushright{#1}%
+ \else
+ \eqno#1%
+ \def\]{$$\ignorespaces}%
+ \fi
+}%
+\def\page@pushright#1{% 18 Jan 1994
+ \skip@\lastskip
+ \ifdim\skip@>\z@
+ \unskip
+ \else\skip@\z@\relax
+ \fi
+ \dimen@\baselineskip
+ \advance\dimen@-\prevdepth
+ \nobreak
+ \nointerlineskip
+ \hbox to\hsize{%
+ \setbox\z@\null
+ \ifdim\dimen@>\z@\ht\z@\dimen@\fi
+ \box\z@
+ \hfill
+ #1}%
+ \vskip\skip@
+}%
+\let\nonqed@thm\@thm
+\let\nonqed@endthm\@endtheorem
+\def\@thm{\save@set@qed\nonqed@thm}
+\def\@endtheorem{\ifAutoQED\qed\fi\restore@qed\nonqed@endthm}
+\newbox\qed@box
+\def\WillHandleQED{\relax
+ \ifx\HandleQED\nohandle@qed
+ \def\pushright{\global\setbox\qed@box\hbox}%
+ \let\QEDbox\qed@box
+ \def\HandleQED{\unhbox\QEDbox}%
+ \aftergroup\check@handle@qed
+ \else
+ \let\QEDbox\voidb@x
+ \fi
+ }
+\def\nohandle@qed{%
+\errhelp{One of them is missing: see QED.sty.}%
+\errmessage{This environment uses \string\WillHandleQED\space and
+\string\HandleQED\space incorrectly}}
+\def\check@handle@qed{\relax
+\ifvoid\qed@box\else\expandafter\nohandle@qed\fi}
+\def\UnHandleQED{%
+\let\HandleQED\nohandle@qed
+\let\QEDbox\voidb@x
+\def\pushright{\protect\@pushright}}%
+\UnHandleQED
+\ifx\theorem@style\undefined
+ \def\check@pt@fm@thm{\relax
+ \ifx\square\undefined
+ \gdef\square{\bigcirc
+ \errhelp={Anonymous ftp e-math.ams.com /ams/amsfonts}%
+ \errmessage{\string\square\space is an AMS symbol}%
+ \global\let\square\bigcirc}%
+ \fi
+ \ifx\theorem@style\undefined
+ \global\let\check@pt@fm@thm\relax
+ \else
+ \errhelp={The macros \@thm and \@endtheorem
+ need to be re-defined.}%
+ \errmessage{QED.sty must be loaded AFTER theorem.sty but
+ before using \string\newtheorem}%
+ \fi
+ \global\let\check@pt@fm@thm\relax
+ }%
+\else
+ \def\check@pt@fm@thm{%
+ \ifx\square\undefined
+ \def\square{\bigcirc
+ \errhelp={Anonymous ftp e-math.ams.com /ams/amsfonts}%
+ \errmessage{\string\square\space is an AMS symbol}%
+ \global\let\square\bigcirc}%
+ \fi
+ \global\let\check@pt@fm@thm\relax
+ }%
+\fi
+\DeclareOption{auto-QED}{\AutoQEDtrue}%
+\DeclareOption{explicit-QED}{\AutoQEDfalse}%
+\DeclareOption{black-square}{\def\qedsymbol{\blacksquare}}%
+\DeclareOption{open-square}{\def\qedsymbol{\square}}%
+\ProcessOptions*
+\newif\if@resettagsleft@
+\let\standardqed\qed
+\def\rescueqed{\qquad\qedsymbol\vphantom{\standardqed}}
+\def\eqnoqed{\eqno\hbox{\standardqed}}%\vphantom{\standardqed}}
+\let\ccorg@eqnnum\@eqnnum
+\let\ccorg@nonumber\nonumber
+\def\eqnarrayqed{%
+ \global\@eqnswtrue
+ \global\let\nonumber\relax
+ \addtocounter{equation}\m@ne
+ \gdef\@eqnnum{\llap{$\qedsymbol$\vphantom{\standardqed}}%
+ \global\let\nonumber\ccorg@nonumber
+ \global\let\@eqnnum\ccorg@eqnnum}}
+\def\tagqed{\tag*{\iftagsleft@
+ \hskip\displaywidth\llap{$\qedsymbol$}\hskip-\displaywidth%
+ \else$\qedsymbol$\fi}\vphantom{\standardqed}}
+\def\simpletagqed{\iftagsleft@\global\@resettagsleft@true\fi
+ \global\tagsleft@false
+ \tag*{$\qedsymbol$}\vphantom{\standardqed}}
+\def\aftersplitqed{\global\let\endsplit\@endsplit}
+\let\ccorg@endsplit\endsplit
+\def\@endsplit{\ccorg@endsplit\qed\global\let\endsplit\ccorg@endsplit}%
+\def\noqed{}
+\def\@ifcurrenv#1#2{\def\@tempa{#1}\ifx\@tempa\@currenvir\relax
+ \let\next#2\fi}
+\renewenvironment{displaymath}{$$}{$$\@ignoretrue}
+\renewcommand{\[}{\begin{displaymath}}
+\renewcommand{\]}{\end{displaymath}}
+\if@ams
+\def\qed{%
+ \if@resettagsleft@
+ \global\tagsleft@true
+ \global\@resettagsleft@false
+ \fi
+ \let\next\standardqed
+ \@ifcurrenv{displaymath}\eqnoqed
+ \@ifcurrenv{equation}\noqed
+ \@ifcurrenv{eqnarray}\noqed
+ \@ifcurrenv{eqnarray*}\eqnarrayqed
+ \@ifcurrenv{equation*}\tagqed
+ \@ifcurrenv{split}\aftersplitqed
+ \@ifcurrenv{multline}\noqed
+ \@ifcurrenv{multline*}\simpletagqed
+ \@ifcurrenv{gather}\noqed
+ \@ifcurrenv{gather*}\tagqed
+ \@ifcurrenv{align}\noqed
+ \@ifcurrenv{align*}\tagqed
+ \@ifcurrenv{alignat}\noqed
+ \@ifcurrenv{alignat*}\tagqed
+ \next}
+\else
+\def\qed{%
+ \let\next\standardqed
+ \@ifcurrenv{displaymath}\eqnoqed
+ \@ifcurrenv{equation}\noqed
+ \@ifcurrenv{eqnarray}\noqed
+ \@ifcurrenv{eqnarray*}\eqnarrayqed
+ \next}
+\fi
+\endinput
+%%
+%% End of file `ccqed.sty'.
+\end{filecontents*}
+\begin{filecontents*}{ccref.sty}
+%%
+%% This is file `ccref.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `ccref,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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 \~}
+\RequirePackage{relabel}[1998/09/07 v1.01]
+\let\nref\ref
+\babel\def\partname{Part}[german=Teil,french=\protect\@Fpt partie]
+\defprefix{part}{\partname~}
+\babel\def\chaptername{Chapter}[german=Kapitel,french=Chapitre]
+\defprefix{chapter}{\chaptername~}
+\babel\def\sectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{section}{\sectionname~}
+\babel\def\subsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsection}{\subsectionname~}
+\babel\def\subsubsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsubsection}{\subsubsectionname~}
+\let\ccorg@appendix\appendix
+\babel\def\appendixname{Appendix}[german=Anhang,french=Annexe]
+\def\appendix{%
+ \defprefix{section}{\appendixname~}%
+ \defprefix{subsection}{\appendixname~}%
+ \defprefix{subsubsection}{\appendixname~}%
+ \ccorg@appendix}
+\defprefix{equation}#1{(#1)}
+\babel\def\figurename{Figure}[german=Figur,french={\scshape Figure}]
+\defprefix{figure}{\figurename~}
+\babel\def\tablename{Table}[german=Tafel,french={\scshape Table}]
+\defprefix{table}{\tablename~}
+\numberallwithin{section}
+\AtBeginDocument{\@adjustnumbering}
+\endinput
+%%
+%% End of file `ccref.sty'.
+\end{filecontents*}
+\begin{filecontents*}{ccreltx.sty}
+%%
+%% This is file `ccreltx.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `ccreltx,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{ccreltx}[2002/05/22 v2.05
+ computational complexity, reactivate ltthm.
+ Michael Nuesken, Bonn.]
+\def\newtheorem#1{%
+ \@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}
+\def\@nthm#1#2{%
+ \@ifnextchar[{\@xnthm{#1}{#2}}{\@ynthm{#1}{#2}}}
+\def\@xnthm#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
+ \@thmcounter{#1}}%
+ \global\@namedef{#1}{\@thm{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}}}
+\def\@ynthm#1#2{%
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {\@definecounter{#1}%
+ \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
+ \global\@namedef{#1}{\@thm{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}}}
+\def\@othm#1[#2]#3{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}%
+ {\expandafter\@ifdefinable\csname #1\endcsname
+ {\global\@namedef{the#1}{\@nameuse{the#2}}%
+ \global\@namedef{#1}{\@thm{#2}{#3}}%
+ \global\@namedef{end#1}{\@endtheorem}}}}
+\def\@thm#1#2{%
+ \refstepcounter{#1}%
+ \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
+\def\@xthm#1#2{%
+ \@begintheorem{#2}{\csname the#1\endcsname}\ignorespaces}
+\def\@ythm#1#2[#3]{%
+ \@opargbegintheorem{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
+\def\@thmcounter#1{\noexpand\arabic{#1}}
+\def\@thmcountersep{.}
+\def\@begintheorem#1#2{\trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2}]\itshape}
+\def\@opargbegintheorem#1#2#3{\trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\itshape}
+\def\@endtheorem{\endtrivlist}
+\endinput
+%%
+%% End of file `ccreltx.sty'.
+\end{filecontents*}
+\begin{filecontents*}{ccthm.sty}
+%%
+%% This is file `ccthm.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `ccthm,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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 \~}
+\ProvidesPackage{ccthm}[2014/07/08 v2.25d
+ theorem environments for cc. Michael Nuesken, Bonn.]
+\newif\if@theoremitemprefixes
+\DeclareOption{theoremitemprefixes}{\@theoremitemprefixestrue}
+\DeclareOption{notheoremitemprefixes}{\@theoremitemprefixesfalse}
+\ExecuteOptions{theoremitemprefixes}
+\ProcessOptions*
+\RequirePackage{theorem}[1995/11/23 v2.2c]
+\RequirePackage{thcc}
+\RequirePackage{relabel}
+\newtoks\everytheorem
+\everytheorem{}
+\if@theoremitemprefixes
+\def\EnumerationInTheorems#1{%
+ \let\@thm@currentlabel\@empty
+ \let\@thm@bare@currentlabel\@empty
+ \let\@@refstepcounter\refstepcounter
+ \def\refstepcounter##1{%
+ \let\refstepcounter\@@refstepcounter
+ \let\@@refstepcounter\@undefined
+ \refstepcounter{##1}%
+ \let\@thm@currentlabel\@currentlabel
+ \protected@edef\@thm@bare@currentlabel{{\csname the##1\endcsname}}%
+ }%
+ \def\theenumi{\@roman\c@enumi}%
+ \def\labelenumi{(\theenumi)}%
+ \defprefix{enumi}##1{%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {\@thm@bare@currentlabel}{\@thm@currentlabel}%
+ (##1)}%
+ \defprefix{enumii}##1{%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {\@thm@bare@currentlabel}{\@thm@currentlabel}%
+ (\theenumi.##1)}%
+ \def\theenumiii{\@arabic\c@enumiii}%
+ \def\labelenumiii{(\theenumiii)}%
+ \defprefix{enumiii}##1{%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {\@thm@bare@currentlabel}{\@thm@currentlabel}%
+ (\theenumi.\theenumii.##1)}%
+ \defprefix{enumiv}##1{%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {\@thm@bare@currentlabel}{\@thm@currentlabel}%
+ (\theenumi.\theenumii.\theenumiii##1)}%
+ }
+\else
+\def\EnumerationInTheorems#1{%
+ \def\theenumi{\@roman\c@enumi}%
+ \def\labelenumi{(\theenumi)}%
+ \defprefix{enumi}##1{(##1)}%
+ \defprefix{enumii}##1{(\theenumi.##1)}%
+ \def\theenumiii{\@arabic\c@enumiii}%
+ \def\labelenumiii{(\theenumiii)}%
+ \defprefix{enumiii}##1{(\theenumi.\theenumii.##1)}%
+ \defprefix{enumiv}##1{(\theenumi.\theenumii.\theenumiii##1)}%
+ }
+\fi
+\def\reset@prefixrefstepcounter#1{%
+ \let\refstepcounter\cc@normal@refstepcounter% Put refstepcounter back to normal
+ \refstepcounter{#1}% do normal operation
+ \defprefix{equation}##1{(##1)}% reset equation prefix
+}
+\def\theorempreamblenn\@thm#1#2{%
+ \defprefix{#1}##1{#2}%
+ \let\cc@normal@refstepcounter\refstepcounter
+ \let\refstepcounter\reset@prefixrefstepcounter
+ \EnumerationInTheorems{#1}%
+ \pagebreak[3]\relax
+ \the\everytheorem
+ \@thm{#1}{#2}}
+\theorem@bodyfont{\theorempreamblenn}
+\theoremstyle{ccnn}
+\newtoks\theoremtitle
+\newtheorem{namedth@@r@m*}{\the\theoremtitle}
+\newenvironment{namedtheorem*}[1]{%
+ \theoremtitle{#1}\csname namedth@@r@m*\endcsname}
+{\csname endnamedth@@r@m*\endcsname}
+\babel\def\Answer{Answer}[german=Antwort,french=Reponse]
+\newtheorem{answer*}[namedth@@r@m*]{\Answer}%
+\babel\def\Assumption{Assumption}[german=Annahme,french=Assomption]
+\newtheorem{assumption*}[namedth@@r@m*]{\Assumption}
+\babel\def\Claim{Claim}[german=Behauptung,french=Proposition]
+\newtheorem{claim*}[namedth@@r@m*]{\Claim}
+\babel\def\Conjecture{Conjecture}[german=Vermutung,french=Conjecture]
+\newtheorem{conjecture*}[namedth@@r@m*]{\Conjecture}
+\babel\def\Convention{Convention}[german=Vereinbarung,french=Convention]
+\newtheorem{convention*}[namedth@@r@m*]{\Convention}%
+\babel\def\Corollary{Corollary}[german=Korollar,french=Corollaire]
+\newtheorem{corollary*}[namedth@@r@m*]{\Corollary}
+\babel\def\Counterexample{Counterexample}[%
+ german=Gegenbeispiel,french=Contre-exemple]
+\newtheorem{counterexample*}[namedth@@r@m*]{\Counterexample}%
+\babel\def\Definition{Definition}[german=Definition,french=D\'efinition]
+\newtheorem{definition*}[namedth@@r@m*]{\Definition}
+\babel\def\Exercise{Exercise}[german=Aufgabe,french=Exercice]
+\newtheorem{exercise*}[namedth@@r@m*]{\Exercise}
+\babel\def\Fact{Fact}[german=Fakt,french=Fait]
+\newtheorem{fact*}[namedth@@r@m*]{\Fact}
+\babel\def\Hypothesis{Hypothesis}[german=Hypothese,french=Hypoth\`ese]
+\newtheorem{hypothesis*}[namedth@@r@m*]{\Hypothesis}
+\babel\def\Lemma{Lemma}[german=Lemma,french=Lemme]
+\newtheorem{lemma*}[namedth@@r@m*]{\Lemma}
+\babel\def\Notation{Notation}[german=Notation,french=Notation]
+\newtheorem{notation*}[namedth@@r@m*]{\Notation}
+\babel\def\Note{Note}[german=Notiz,french=Note]
+\newtheorem{note*}[namedth@@r@m*]{\Note}
+\babel\def\Observation{Observation}[%
+ german=Beobachtung,french=Observation]
+\newtheorem{observation*}[namedth@@r@m*]{\Observation}
+\babel\def\OpenQuestion{Open Question}[%
+ german=Offene Frage,french=Question ouverte]
+\newtheorem{open*}[namedth@@r@m*]{\OpenQuestion}
+\newtheorem{openquestion*}[namedth@@r@m*]{\OpenQuestion}
+\babel\def\Problem{Problem}[german=Problem,french=Probl\`eme]
+\newtheorem{problem*}[namedth@@r@m*]{\Problem}
+\babel\def\Proposition{Proposition}[%
+ german=Behauptung,french=Proposition]
+\newtheorem{proposition*}[namedth@@r@m*]{\Proposition}
+\babel\def\Question{Question}[german=Frage,french=Question]
+\newtheorem{question*}[namedth@@r@m*]{\Question}%
+\babel\def\Remark{Remark}[german=Bemerkung,french=Remarque]
+\newtheorem{remark*}[namedth@@r@m*]{\Remark}
+\babel\def\Result{Result}[german=Ergebnis,french=R\'esultat]
+\newtheorem{result*}[namedth@@r@m*]{\Result}
+\babel\def\Theorem{Theorem}[german=Satz,french=Th\'eor\`eme]
+\newtheorem{theorem*}[namedth@@r@m*]{\Theorem}
+\babel\def\Thesis{Thesis}[german=These,french=Th\`ese]
+\newtheorem{thesis*}[namedth@@r@m*]{\Thesis}%
+\babel\def\Warning{Warning}[german=Warnung,french=Alerte]
+\newtheorem{warning*}[namedth@@r@m*]{\Warning}%
+\babel\def\Example{Example}[german=Beispiel,french=Exemple]
+\newenvironment{example*}[1][]{%
+ \cc@ifempty{#1}
+ {\csname namedtheorem*\endcsname{\Example}}%
+ {\csname namedtheorem*\endcsname{\Example}[#1]}%
+ \upshape
+ \let\qedsymbol\eoesymbol
+ }
+{\qed\csname endnamedtheorem*\endcsname}
+\def\theorempreamble\@thm#1#2{%
+ \defprefix{#1}##1{#2~##1}%
+ \let\cc@normal@refstepcounter\refstepcounter
+ \let\refstepcounter\reset@prefixrefstepcounter
+ \EnumerationInTheorems{#1}%
+ \pagebreak[3]\relax
+ \the\everytheorem
+ \@thm{#1}{#2}}
+\theorem@bodyfont{\theorempreamble}
+\theoremstyle{cc}
+\if@ccnosepeqncnt
+%%% \let\c@namedth@@r@m\c@equation
+%%% \def\thenamedth@@r@m{\theequation}
+\def\cc@thmcnter{equation}
+\newtheorem{namedth@@r@m}[\cc@thmcnter]{\the\theoremtitle}
+\else
+\newtheorem{namedth@@r@m}{\the\theoremtitle}
+\def\cc@thmcnter{namedth@@r@m}
+\fi
+\newenvironment{namedtheorem}[1]
+ {\theoremtitle{#1}\namedth@@r@m}
+ {\endnamedth@@r@m}
+\if@standardtheorems
+\newtheorem{answer}[\cc@thmcnter]{\Answer}
+\newtheorem{assumption}[\cc@thmcnter]{\Assumption}
+\newtheorem{claim}[\cc@thmcnter]{\Claim}
+\newtheorem{conjecture}[\cc@thmcnter]{\Conjecture}
+\newtheorem{convention}[\cc@thmcnter]{\Convention}
+\newtheorem{corollary}[\cc@thmcnter]{\Corollary}
+\newtheorem{counterexample}[\cc@thmcnter]{\Counterexample}
+\newtheorem{definition}[\cc@thmcnter]{\Definition}
+\newtheorem{exercise}[\cc@thmcnter]{\Exercise}
+\newtheorem{fact}[\cc@thmcnter]{\Fact}
+\newtheorem{hypothesis}[\cc@thmcnter]{\Hypothesis}
+\newtheorem{lemma}[\cc@thmcnter]{\Lemma}
+\newtheorem{notation}[\cc@thmcnter]{\Notation}
+\newtheorem{note}[\cc@thmcnter]{\Note}
+\newtheorem{observation}[\cc@thmcnter]{\Observation}
+\newtheorem{open}[\cc@thmcnter]{\OpenQuestion}
+\newtheorem{openquestion}[\cc@thmcnter]{\OpenQuestion}
+\newtheorem{problem}[\cc@thmcnter]{\Problem}
+\newtheorem{proposition}[\cc@thmcnter]{\Proposition}
+\newtheorem{question}[\cc@thmcnter]{\Question}
+\newtheorem{remark}[\cc@thmcnter]{\Remark}
+\newtheorem{result}[\cc@thmcnter]{\Result}
+\newtheorem{theorem}[\cc@thmcnter]{\Theorem}
+\newtheorem{thesis}[\cc@thmcnter]{\Thesis}
+\newtheorem{warning}[\cc@thmcnter]{\Warning}
+\newenvironment{example}[1][]{%
+ \cc@ifempty{#1}
+ {\namedtheorem{\Example}}%
+ {\namedtheorem{\Example}[#1]}%
+ \upshape
+ \let\qedsymbol\eoesymbol
+ }
+{\qed\endnamedtheorem}
+\else
+\newtheorem{answer}{\Answer}
+\newtheorem{assumption}{\Assumption}
+\newtheorem{claim}{\Claim}
+\newtheorem{conjecture}{\Conjecture}
+\newtheorem{convention}{\Convention}
+\newtheorem{corollary}{\Corollary}
+\newtheorem{counterexample}{\Counterexample}
+\newtheorem{definition}{\Definition}
+\newtheorem{exercise}{\Exercise}
+\newtheorem{fact}{\Fact}
+\newtheorem{hypothesis}{\Hypothesis}
+\newtheorem{lemma}{\Lemma}
+\newtheorem{notation}{\Notation}
+\newtheorem{note}{\Note}
+\newtheorem{observation}{\Observation}
+\newtheorem{open}{\OpenQuestion}
+\newtheorem{openquestion}{\OpenQuestion}
+\newtheorem{problem}{\Problem}
+\newtheorem{proposition}{\Proposition}
+\newtheorem{question}{\Question}
+\newtheorem{remark}{\Remark}
+\newtheorem{result}{\Result}
+\newtheorem{theorem}{\Theorem}
+\newtheorem{thesis}{\Thesis}
+\newtheorem{warning}{\Warning}
+\newtheorem{exampleexample}{\Example}
+\newenvironment{example}{%
+ \exampleexample%
+ \upshape
+ \let\qedsymbol\eoesymbol
+ }
+{\qed\endexampleexample}
+\fi
+\babel\def\ccContinued{continued}[%
+ german=fortgesetzt,french=continu\'e(e)]
+\newenvironment{continued}[1]{%
+ \csname namedtheorem*\endcsname{\ref{#1} \ccContinued}%
+ }{\csname endnamedtheorem*\endcsname}
+\newenvironment{contexample}[1]{%
+ \csname namedtheorem*\endcsname{\ref{#1} \ccContinued}%
+ \upshape
+ \let\qedsymbol\eoesymbol
+ }
+{\qed\csname endnamedtheorem*\endcsname}
+\newcommand{\eoesymbol}{\lozenge}
+\endinput
+%%
+%% End of file `ccthm.sty'.
+\end{filecontents*}
+\begin{filecontents*}{develop.sty}
+% \iffalse meta-comment
+%
+% Copyright 1998, 2005, Michael Nüsken
+%
+% develop.sty
+% 30-jul-98 ... build from drafting.sty, ported to LateX2e,
+% extracted best things ...
+% 14-dec-98 ... added \pagestyle-change for signdraft
+% 05-feb-99 ... now \ifshowlabels may be used for a `local' control
+% 25-may-99 ... added \oopscomment
+% 27-oct-99 ... Added \showlabelsfalse to \showoopslist.
+% 05-apr-00 ... Replaced several \gray commands by \begingray...\endgray
+% so that there is no additional group.
+% 12-apr-00 ... Changed \begingray...\endgray due to missing "color
+% pop"'s reported by dvips
+% 15-dec-00 ... added \invisoops, \todo, \invistodo. \oopscomment
+% gives \gray now.
+% 19-dec-00 ... added environment draft which disappers in final. But
+% we need the package skipenv now.
+% 20-dec-00 ... added changed \@setref, shows labelname if \ref missing.
+% 01-sep-09 ... corrected a small error in \thispagestyle
+%
+% drafting.sty
+% 25-mar-92 ... first things
+% 06-apr-92 ... more facilities
+% 25-aug-92 ... repaired
+% 07-apr-94 ... repaired \skipenv; changed \label,\ref,\pageref
+% Remark: \onlysections does not work. I don't know why.
+% 17-jun-96 ... changed \showlabels, added \dotproofs
+% 04-oct-96 ... some small changes (using PSTricks, using \gray now)
+% 18-jun-97 ... added \showcommas
+% 29-apr-98 ... changed display of \ref, \pageref and \cite under
+% \showlabels
+% 22-sep-99 ... some extra options and updates
+%
+% It may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3a
+% 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.3a or later is part of all distributions of LaTeX
+% version 1999/12/01 or later.
+%
+% -----------------------------------------------------------
+%
+%<*chartab>
+%\fi
+%% \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 \~}
+% \iffalse meta-comment
+%</chartab>
+% \fi
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{develop}[2009/09/22 v1.02 develop MNuesken]
+
+\newif\ifdraft
+\DeclareOption{draft}{\drafttrue}
+\DeclareOption{final}{\draftfalse
+ \oopslistfalse
+ \showlabelsfalse
+ \signdraftfalse
+ \showcommasfalse
+}
+
+\newif\ifoopslist
+\newif\ifoops \oopsfalse
+\DeclareOption{oopslist}{\oopslisttrue}
+\DeclareOption{nooopslist}{\oopslistfalse}
+
+\newif\ifshowlabels
+\DeclareOption{dontshowlabels}{\showlabelsfalse}
+\DeclareOption{showlabels}{\showlabelstrue}
+\DeclareOption{nolabels}{\showlabelsfalse}
+\DeclareOption{labels}{\showlabelstrue}
+
+\newif\ifpstrickslabels \pstrickslabelsfalse
+\DeclareOption{nopstrickslabels}{\pstrickslabelsfalse}
+\DeclareOption{pstrickslabels}{\pstrickslabelstrue}
+
+\newif\ifleftflag \leftflagtrue
+\newif\ifrightflag \rightflagtrue
+\DeclareOption{hiderightflag}{\rightflagfalse}
+\DeclareOption{hideleftflag}{\leftflagfalse}
+\DeclareOption{hideflags}{\rightflagfalse\leftflagfalse}
+\DeclareOption{showflags}{\rightflagtrue\leftflagtrue}
+
+\newif\ifsigndraft
+\DeclareOption{signdraft}{\signdrafttrue}
+\DeclareOption{dontsigndraft}{\signdraftfalse}
+
+\newif\ifshowcommas
+\DeclareOption{showcommas}{\showcommastrue}
+\DeclareOption{dontshowcommas}{\showcommasfalse}
+
+\newif\ifdraftpagenumbering
+\DeclareOption{draftpagenumbering}{\draftpagenumberingtrue}
+\DeclareOption{finalpagenumbering}{\draftpagenumberingfalse}
+
+\ExecuteOptions{final,nooopslist,labels,signdraft,dontshowcommas,finalpagenumbering}
+\ProcessOptions
+
+%%% Moved that to the Option "final"... so you can turn it on!
+%%% \ifdraft\else
+%%% \oopslistfalse
+%%% \showlabelsfalse
+%%% \signdraftfalse
+%%% \showcommasfalse
+%%% \fi
+
+\ifpstrickslabels
+\RequirePackage{pst-node}
+\fi
+
+% Provide a macro for writing \gray !
+\@ifundefined{gray}{%
+ \RequirePackage{color}%
+ \definecolor{mediumgray}{gray}{0.5}%
+ \definecolor{mediumblack}{gray}{0.1}%
+ \providecommand{\gray}{\color{mediumgray}}%
+ \providecommand{\black}{\color{mediumblack}}%
+ }{}%
+\def\begingray{\begingroup\leavevmode\gray{}}
+\def\endgray{\endgroup}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Commands to display labels ...
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\def\developInfo#1#2{}%
+\newif\ifwas@inlabel
+\def\Fbox#1{{\fboxsep1pt\fbox{\tiny\tt #1}}}
+\ifpstrickslabels
+\newpsstyle{leftflag}{linewidth=.4pt,linecolor=black}
+\newcounter{flag}
+\def\leftflag#1{%
+ \@bsphack% space hack
+ %%% \typeout{LEFTFLAG #1}%
+ \def\next{\do@leftflagmargin{#1}}%
+ \if@inlabel
+ \def\next{\global\setbox\@labels\hbox{%
+ \unhbox\@labels
+ \do@leftflagimmediate{#1}}}%
+ \else
+ \ifvmode\ifinner\else
+ \edef\next{\everypar{\the\everypar
+ \noexpand\do@leftflagimmediate{#1}}}%
+ \fi\fi
+ \fi
+ %%% \show\next
+ \next
+ \@esphack}
+\def\do@leftflagmargin#1{%
+ \stepcounter{flag}%
+ \rnode[t]{T\theflag}{}%
+ \marginpar{\rnode[t]{M\theflag}{\Fbox{%
+ \parbox[t]{\marginparwidth}{%
+ #1 =\whole\ref{#1}%
+ }%
+ }}%
+ \ncbar[style=leftflag,
+ angleA=90,armA=.3\baselineskip,
+ angleB=90]{M\theflag}{T\theflag}%
+ }%
+}
+\def\do@leftflagimmediate#1{%
+ \stepcounter{flag}%
+ \rnode[t]{T\theflag}{}%
+ \rput[br](0,.7\baselineskip){%
+ \rnode[br]{M\theflag}{\Fbox{%
+%%% \parbox[t]{\marginparwidth}{%
+ #1% =\whole\ref{#1}%
+%%% }%
+ }}}%
+ \ncangle[style=leftflag,
+ angleA=-90,armA=0mm,
+ angleB=90,armB=.7\baselineskip]{M\theflag}{T\theflag}%
+}
+\let\rightflag\leftflag
+\else
+\expandafter\ifx\csname rput\endcsname\relax
+%%% Defs if PSTricks is NOT loaded.
+\def\leftflag#1{%
+ \if@inlabel
+ \developInfo{develop}{leftflag #1 in label}%
+ \global\setbox\@labels\hbox{%
+ \unhbox\@labels
+ \makebox(0,0){%
+ \lower-2\baselineskip\hbox{%
+ \llap{%
+ \Fbox{#1}%
+ }%
+ \hskip-.4pt%
+ \vrule depth.6\baselineskip
+ }%
+ }}%
+ \else\ifvmode
+ \ifinner\else
+ \developInfo{develop}{leftflag #1 vmode outer}%
+ \marginpar{\rlap{%
+ \Fbox{#1}%
+ }%
+ }%
+ \fi
+ \else
+ \@bsphack
+ \developInfo{develop}{leftflag #1 hmode}%
+ \makebox(0,0){%
+ \lower-2\baselineskip\hbox{%
+ \llap{%
+ \Fbox{#1}%
+ }%
+ \hskip-.4pt%
+ \vrule depth.6\baselineskip
+ }%
+ }%
+ \@esphack
+ \fi\fi
+ }
+\def\rightflag#1{%
+ \if@inlabel
+ \developInfo{develop}{rightflag #1 in label}%
+ \global\setbox\@labels\hbox{%
+ \unhbox\@labels
+ \makebox(0,0){%
+ \lower-2\baselineskip\hbox{%
+ \rlap{%
+ \Fbox{#1}%
+ }%
+ \hskip-.4pt%
+ \vrule depth.6\baselineskip
+ }%
+ }}%
+ \else\ifvmode
+ \ifinner\else
+ \developInfo{develop}{rightflag #1 vmode outer}%
+ \marginpar{\rlap{%
+ \Fbox{#1}%
+ }%
+ }%
+ \fi
+ \else
+ \@bsphack
+ \developInfo{develop}{rightflag #1 hmode}%
+ \makebox(0,0){%
+ \lower-2\baselineskip\hbox{%
+ \rlap{%
+ \Fbox{#1}%
+ }%
+ \hskip-.4pt%
+ \vrule depth.6\baselineskip
+ }%
+ }%
+ \@esphack
+ \fi\fi
+ }
+\else
+%%% Defs of \labelflag and \bibflag if PSTricks IS loaded.
+\typeout{Using PSTricks ...}
+\def\leftflag#1{%
+ \if@inlabel
+ \developInfo{develop}{leftflag #1 in label}%
+ \global\setbox\@labels\hbox{%
+ \unhbox\@labels
+ \makebox(0,0){%
+ \lower-1.8\baselineskip\hbox{\gray%
+ \psset{framesep=.4pt,border=0pt}\rput*[r]{0}{%
+ \Fbox{#1}%
+ }%
+ \hskip-.4pt%
+ \vrule depth.8\baselineskip
+ }%
+ }%
+ }%
+ \else\ifvmode
+ \ifinner\else
+ \developInfo{develop}{leftflag #1 vmode outer}%
+ \marginpar{{\gray\Fbox{#1}}}%
+ \fi
+ \else
+ \@bsphack
+ \developInfo{develop}{leftflag #1 hmode}%
+ \makebox(0,0){%
+ \lower-1.8\baselineskip\hbox{\gray%
+ \psset{framesep=.4pt,border=0pt}\rput*[r]{0}{%
+ \Fbox{#1}%
+ }%
+ \hskip-.4pt%
+ \vrule depth.8\baselineskip
+ }%
+ }%
+ \@esphack
+ \ifwas@inlabel\ignorespaces\fi
+ \fi\fi
+ }
+\def\rightflag#1{%
+ \if@inlabel
+ \developInfo{develop}{rightflag #1 in label}%
+ \global\setbox\@labels\hbox{%
+ \unhbox\@labels
+ \makebox(0,0){%
+ \lower-1.8\baselineskip\hbox{\gray%
+ \psset{framesep=.4pt,border=0pt}\rput*[l]{0}{%
+ \Fbox{#1}%
+ }%
+ \hskip-.4pt%
+ \vrule depth.8\baselineskip
+ }%
+ }%
+ }%
+ \else\ifvmode
+ \ifinner\else
+ \developInfo{develop}{rightflag #1 vmode outer}%
+ \marginpar{{\gray\Fbox{#1}}}%
+ \fi
+ \else
+ \@bsphack
+ \developInfo{develop}{rightflag #1 hmode}%
+ \makebox(0,0){%
+ \lower-1.8\baselineskip\hbox{\gray%
+ \psset{framesep=.4pt,border=0pt}\rput*[l]{0}{%
+ \Fbox{#1}%
+ }%
+ \hskip-.4pt%
+ \vrule depth.8\baselineskip
+ }%
+ }%
+ \@esphack
+ \fi\fi
+ }
+\fi
+\fi
+
+\ifleftflag\else\def\leftflag#1{}\fi
+\ifrightflag\else\def\rightflag#1{}\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Show labels and references ...
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let\@@label\label
+\let\@@ref\ref
+\let\@@pageref\pageref
+\let\@@cite\cite
+\let\@@bibitem\@bibitem
+\let\@@lbibitem\@lbibitem
+
+\newif\ifshowrefs \showrefsfalse
+\newif\ifshowcites \showcitesfalse
+% \def\ifshowcites{\ifshowrefs}
+% \let\showcitestrue\showrefstrue
+% \let\showcitesfalse\showrefsfalse
+\ifshowlabels
+ \showrefstrue
+ \showcitestrue
+
+ \def\@@@label{\protect\@@@@label}
+ \def\@@@@label#1{\@@label{#1}\ifshowlabels\leftflag{#1}\fi}
+ \def\@@@ref{\protect\@@@@ref}
+ \def\@@@@ref#1{\ifshowrefs\expandafter\begingray\fi\ifshowrefs\leavevmode\rightflag{#1}\fi\@@ref{#1}\ifshowrefs\expandafter\endgray\fi}
+ \def\@@@pageref{\protect\@@@@pageref}
+ \def\@@@@pageref#1{\ifshowrefs\leavevmode\rightflag{#1}\fi
+ {{\gray{\@@pageref{#1}}}}}
+ %%\def\@@@@cite#1#2{\ifshowrefs\rightflag{#1}\fi{{\gray{\@@cite{#1}{#2}}}}}
+ \def\@@@cite{\@ifnextchar[{\@@@citea}{\@@@citeb}}
+ \def\@@@citea[#1]#2{\ifshowcites\expandafter\begingray\fi\ifshowcites\rightflag{#2}\fi\@@cite[#1]{#2}\ifshowcites\expandafter\endgray\fi}
+ \def\@@@citeb#1{\ifshowcites\expandafter\begingray\fi\ifshowcites\rightflag{#1}\fi\@@cite{#1}\ifshowcites\expandafter\endgray\fi}
+ %%\@ifundefined{c@#2}{{\gray{\tt #1/#2}}}{}% Need to emulate \cite
+ %%instead of \@cite to get the original label ...
+ \def\@@@citex[#1][#2]#3{\ifshowcites\expandafter\begingray\fi\ifshowcites\rightflag{#3}\fi\@@citex[#1][#2]{#3}\ifshowcites\expandafter\endgray\fi}
+ \def\@@@bibitem#1{%
+ \@@bibitem{#1}\ifshowlabels\leavevmode\rightflag{#1}\ignorespaces\fi}
+ \def\@@@lbibitem[#1]#2{%
+ \@@lbibitem[#1]{#2}\ifshowlabels\leavevmode\rightflag{#2}\ignorespaces\fi}
+ \def\@@@citedata{\protect\@@@@citedata}
+ \def\@@@@citedata#1{\ifshowcites\expandafter\begingray\fi\ifshowcites\leavevmode\rightflag{#1}\fi\@@citedata{#1}\ifshowcites\expandafter\endgray\fi}
+
+ \long\def\@gobblethree#1#2#3{}
+ \def\@@@setref#1#2#3{%
+ \ifx#1\relax
+ \protect\G@refundefinedtrue
+ \nfss@text{\reset@font\bfseries ?\texttt{\expandafter\@gobblethree\string#1}?}%
+ \@latex@warning{Reference `#3' on page \thepage \space
+ undefined}%
+ \else
+ \expandafter#2#1\null
+ \fi}
+
+ \AtBeginDocument{%
+ \let\@@label\label \let\label\@@@label
+ \let\@@ref\ref \let\ref\@@@ref
+ \let\@@pageref\pageref \let\pageref\@@@pageref
+ \let\@setref\@@@setref
+ %%\let\@@cite\cite \let\cite\@@@cite
+ %%\let\@cite\@@@@cite
+ \@ifpackageloaded{natbib}{%
+ \let\@@citex\@citex \let\@citex\@@@citex
+ }{%
+ \let\@@cite\cite \let\cite\@@@cite
+ }
+ \let\@@bibitem\@bibitem \let\@bibitem\@@@bibitem
+ \let\@@lbibitem\@lbibitem \let\@lbibitem\@@@lbibitem
+ \let\@@citedata\@citedata \let\@citedata\@@@citedata
+ }
+ \@ifundefined{everyproof}{}{%
+ \everyproof\expandafter{\the\everyproof
+ \def\@itemlabel{\rlap{$\circ$}\hskip-\labelsep\hskip\parindent}%
+ }%
+ }%
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Show commas ...
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifshowcommas
+ {%
+ \uccode`\~`\,
+ \uppercase{\gdef~}{%
+ \ifmmode,\else\smash{\textbf{\huge ,}}\fi
+ }}%
+ \AtBeginDocument{\catcode`\,\active}%
+\fi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Now: time display ...
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+% From now.sty 25-oct-91
+% A macro for time display
+
+% Calculate hour and minute and define macro \now for time.
+\newcount\hour \hour\time\divide\hour60
+\newcount\minute \minute-\hour\multiply\minute60\advance\minute\time
+\def\now{$\ifnum\hour<10 0\fi\the\hour
+ ^{\underline{\ifnum\minute<10 0\fi\the\minute}}$}
+
+% End now.sty
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Sign draft ...
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\newtoks\draftsignature \draftsignature{Entwurf}
+\ifsigndraft
+ \PackageInfo{develop}{%
+ Signdraft enabled. %
+ Use \string\draftsignature=\string{Bla\string} to change it.}
+ \gdef\draft@oddfoot{\rm\footnotesize
+ \the\draftsignature
+ \hfil
+ \thepage
+ \hfil
+ \LaTeXe(\texttt{\draft@filename}): \today, \now
+ }
+ \gdef\draft@evenfoot{\rm\footnotesize
+ \LaTeXe(\texttt{\draft@filename}): \today, \now
+ \hfil
+ \thepage
+ \hfil
+ \the\draftsignature
+ }
+ \global\let\@oddfoot\draft@oddfoot
+ \global\let\@evenfoot\draft@evenfoot
+ %% TODO: Modify \pagestyle
+ \let\@@pagestyle\pagestyle
+ \def\pagestyle#1{\@@pagestyle{#1}%
+ \let\@oddfoot\draft@oddfoot
+ \let\@evenfoot\draft@evenfoot}
+ \let\@@thispagestyle\thispagestyle
+ \def\thispagestyle#1{%
+ \expandafter\gdef\csname ps@@@#1\endcsname{%
+ \@nameuse{ps@#1}%
+ \let\@oddfoot\draft@oddfoot
+ \let\@evenfoot\draft@evenfoot
+ }%
+ \@@thispagestyle{@@#1}%
+ }
+ %%
+ \let\draft@include\include
+ \let\draft@filename\jobname
+ \def\draft@register#1{%
+ \gdef\draft@filename{}%
+ \@tfor\draft@x:=#1\do{%
+ \xdef\draft@filename{\draft@filename\noexpand\string\draft@x}%
+ }%
+ }
+ \def\include#1{%
+ \draft@register{#1}%
+% %Starting \texttt{\draft@filename}\dots
+% \addtocontents{toc}{\protect\ifdrafttoc
+% \texttt{\draft@filename}\dots\par
+% \protect\fi}%
+ \draft@include{#1}%
+% \addtocontents{toc}{\protect\ifdrafttoc
+% \dots\texttt{\draft@filename}\par
+% \protect\fi}%
+% %Ending \texttt{\draft@filename}.
+% \clearpage
+ \global\let\draft@filename\jobname}
+
+\fi
+
+
+\def\draftpagenumbering#1{%
+ \global\c@page \@ne \gdef\thepage{\csname @#1\endcsname
+ \c@page
+ \protect\ifsigndraft
+ \protect\rlap{(\protect\texttt{\draft@filename})}%
+ \protect\fi}}
+
+\ifsigndraft
+\ifdraftpagenumbering
+ \let\pagenumbering\draftpagenumbering
+ \pagenumbering{arabic}
+\fi
+\fi
+
+\newif\ifdrafttoc \drafttocfalse
+\def\drafttableofcontents{\drafttoctrue\tableofcontents\drafttocfalse}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%
+%% Oopsing ...
+%%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\ifdraft
+ \let\oops@label\label
+ \PackageInfo{develop}{%
+ While in draft mode, you can use \string\oops\string{bla\string}
+ to mark critical points in your text (with comment bla). If you
+ use the option oopslist, then a list of all these is appended to
+ your document.}
+ \addtocounter{section}{-1}\refstepcounter{section}%
+ \global\let\oopsnewline\cl@@ckpt% Bei includes NICHT den fehlenden ...
+ \newcounter{oops}[section]
+ \global\let\cl@@ckpt\oopsnewline% ... Teil in der Zählung für oops
+ % berücksichtigen.
+ \def\theoops{\thesection.\arabic{oops}}
+ \newtoks\oopslist \oopslist{\@gobble}
+ \def\oopsnewline{,\\}
+ \let\oopschar\bigstar
+ \newcommand{\genericoops}[1]{%
+ \ifmmode
+ \oopschar\text{?`}\oopschar#1\oopschar?\oopschar%
+ \@temptokena{$#1$}%
+ \else
+ $\oopschar$?`$\oopschar$#1$\oopschar$?$\oopschar$%
+ \@temptokena{#1}%
+ \fi%
+ \oopstrue
+ \addtocounter{oops}{1}%
+ \edef\@tempa{%
+ \noexpand\protect\noexpand\oops@label{oops\theoops}%
+ \noexpand\expandafter
+ \noexpand\global
+ \noexpand\expandafter
+ \noexpand\oopslist
+ \noexpand\expandafter
+ {\noexpand\the\noexpand\oopslist
+ \noexpand\oopsnewline
+ \relax
+ $\oopschar$\theoops:\noexpand\pageref{oops\theoops} %
+ \expandafter\the\@temptokena\unskip
+ }%
+ }%
+ \@tempa\relax
+ }%
+ \newcommand{\oops}{\let\oopschar\bigstar\genericoops}
+ \newcommand{\invisoops}[1]{\let\oopschar\clubsuit
+ \genericoops{\oopscomment{#1}}}
+ \newcommand\oopscomment[1]{{\gray #1}}%
+ \newcommand\showoopslist{%
+ \ifoops
+ \section*{Oopslist}
+ \addcontentsline{toc}{section}{Oopslist}%
+ {\showrefsfalse\showcitesfalse
+ \the\oopslist.
+ \par}
+ \fi
+ }
+ \ifoopslist
+ \AtEndDocument{\showoopslist}
+ \fi
+ \newenvironment{draft}
+ {\par\noindent$\oopschar$?`$\oopschar$\gray\small}
+ {\black$\oopschar$?$\oopschar$\par\ignorespacesafterend}
+\else
+ \newcommand\genericoops[1]{%
+ \ifmmode
+ \oopschar\oopschar\oopschar\text{?`}\oopschar#1\oopschar?\oopschar%
+ \else
+ $\oopschar\oopschar\oopschar$?`$\oopschar$#1$\oopschar$?$\oopschar$%
+ \fi%
+ \PackageError{develop}{%
+ You used \string\oops, which is reserved for drafts.}{%
+ Decide your remark.^^JIn a final version, all \string\oops-es
+ should be decided.}}
+ \newcommand\showoopslist{\PackageError{develop}{%
+ You used \string\showoopslist, which is reserved for drafts.}{}}
+ \newcommand\oopscomment[1]{}%
+ \newcommand{\oops}{\let\oopschar\bigstar\genericoops}
+ \newcommand{\invisoops}[1]{}
+ %%
+ \RequirePackage{skipenv}
+ \newenvironment{draft}{}{}
+ \skipenv{draft}
+\fi
+\AtBeginDocument{%
+ \providecommand{\todo}{\protect\oops}
+ \providecommand{\mtodo}[1]{\marginpar{\tiny\todo{#1}}}
+ \providecommand{\invistodo}{\protect\invisoops}
+ \providecommand{\text}{\mbox}
+ }
+
+\endinput
+
+To upload the package go to <http://dante.ctan.org/upload> and enter:
+
+Name of your contribution
+Develop toolkit
+
+Your name
+Michael Nüsken
+
+Your email
+nuesken@bit.uni-bonn.de
+
+Summary description
+This collects a set of macros useful during the development of articles.
+
+Suggested CTAN directory
+macros/latex/contrib/gamma
+
+Short description for announcement.
+-----------------------------------------------------------------------------
+The LaTeX2e class develop collects a set of macros useful during the
+development of articles.
+
+The author is Michael Nüsken.
+The package is Copyright (c) 1998-2010 Michael Nüsken.
+
+Present version <see above>.
+Differences to previous version: ???
+-----------------------------------------------------------------------------
+
+Indicate the license.
+tpye=Free, LaTeX Project
+
+Input your file's name on your computer.
+
+Submit
+\end{filecontents*}
+\begin{filecontents*}{relabel.sty}
+%%
+%% This is file `relabel.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `relabel,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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 \~}
+%% Copyright (C) 1998 Michael N\"{u}sken, all rights reserved.
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{relabel}[2014/07/08 v1.02 Relabel. MNuesken]
+\newif\if@prefixes
+\DeclareOption{prefixes}{\@prefixestrue}
+\DeclareOption{noprefixes}{\@prefixesfalse}
+\newif\if@bare
+\DeclareOption{bare}{\@baretrue}
+\DeclareOption{nobare}{\@barefalse}
+\ExecuteOptions{prefixes,nobare}
+\ProcessOptions*
+\newcommand*{\Label}[2]{\modify{#2}\label{#1}\revert}
+\newcommand*{\modify}[1]{\@bsphack%
+ \global\let\revert@currentlabel\@currentlabel
+ \global\let\revert@bare@currentlabel\@bare@currentlabel
+ \def\@tempb##1{#1}
+ \protected@edef\@currentlabel{\@tempb{\@currentlabel}}%
+ \@esphack}
+\newcommand*{\revert}{\@bsphack
+ \global\let\@currentlabel\revert@currentlabel
+ \global\let\@bare@currentlabel\revert@bare@currentlabel
+ \@esphack}
+\let\revert@currentlabel\relax
+\let\revert@bare@currentlabel\relax
+\newcommand*{\setcurrentlabel}[1]{%
+ \protected@edef\@currentlabel{#1}%
+ \let\@bare@currentlabel\@currentlabel}
+\newcommand*{\defprefix}[1]{\if@prefixes
+ \def\next{\expandafter\def\csname p\string @#1\endcsname}%
+ \else\def\next{\def\next}\fi\next}
+\newcommand*{\useprefix}[1]{\csname p\string @#1\endcsname}
+\newcommand*{\uselabel}[1]{\csname p\string @#1\expandafter
+ \endcsname\csname the#1\endcsname}
+\def\defprefixcond#1#2{\defprefix{#1}{\conduselabel{#2}}}
+\newcommand*{\Iflabelchanged}[2]{%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {{\csname the#1\endcsname}}%
+ {#2}%
+ }
+\def\conduselabel#1{% obsolete
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {{\csname the#1\endcsname}}%
+ {\csname p\string @#1\endcsname{\csname the#1\endcsname}}%
+ }%
+\def\@@conduselabel#1#2#3{{%
+ \let\protect\relax
+ \edef\@tempa{#1}%
+ \edef\@tempc{#2}%
+ \ifx\@tempa\@tempc\relax\@condlabelfalse\else\@condlabeltrue\fi
+ \iflonglabel\@condlabeltrue\fi
+ \ifshortlabel\@condlabelfalse\fi
+ \if@condlabel #3\fi
+ }}
+\newif\if@condlabel
+\newif\iflonglabel \longlabelfalse
+\newif\ifshortlabel \shortlabelfalse
+\def\short\ref#1{{\shortlabeltrue\ref{#1}}}
+\def\whole\ref#1{{\longlabeltrue\ref{#1}}}
+\def\quiet\ref#1{\vphantom{\ref{#1}}}
+\CheckCommand*\refstepcounter[1]{\stepcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\endcsname\csname the#1\endcsname}%
+}
+\def\refstepcounter#1{\stepcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+ \protected@edef\@bare@currentlabel
+ {\csname the#1\endcsname}%
+}
+\if@bare
+\def\relabel@label#1{\ifx\@currentlabel\@bare@currentlabel\else
+ {\let\@currentlabel\@bare@currentlabel\relabel@olabel{bare@#1}}%
+ \fi\relabel@olabel{#1}}
+\def\init@bare{\if@bare\let\relabel@olabel\label\let\label\relabel@label\fi}
+\AtBeginDocument{\init@bare}%
+\def\bare\ref#1{\@ifundefined{r@bare@#1}{\ref{#1}}{\ref{bare@#1}}}
+\else
+\def\bare{\PackageWarning{relabel}{\string\bare\space disabled! (Use
+ option bare to enable it.)}}
+\def\init@bare{}
+\fi
+\let\@bare@currentlabel\@currentlabel
+\endinput
+%%
+%% End of file `relabel.sty'.
+\end{filecontents*}
+\begin{filecontents*}{thcc.sty}
+%%
+%% This is file `thcc.sty',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% cc.dtx (with options: `thcc,chartab')
+%%
+%% Copyright 2000-2016
+%% Michael N"usken, Joachim von zur Gathen, computational complexity
+%%
+%% IMPORTANT NOTICE:
+%%
+%% This is a generated file. It is part of the
+%% computational complexity macro package
+%% derived from cc.dtx by 'tex cc.ins'.
+%% See cc.dtx for license information.
+%%
+%% \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/12/01]
+\ProvidesPackage{thcc}[2012/06/22 v2.25
+ computational complexity, theorem layouts.
+ Michael Nuesken, Bonn.]
+\RequirePackage{theorem}[1995/11/23 v2.2c]
+\def\cc@forbiddenpackage{2010/10/26 Forbidden by cc.cls/thcc.sty. Not loaded!}
+\expandafter\global\expandafter\let\csname ver@amsthm.sty\endcsname\cc@forbiddenpackage
+\expandafter\global\expandafter\let\csname ver@apthm.sty\endcsname\cc@forbiddenpackage
+\let\orig@ifpackageloaded\@ifpackageloaded
+\def\@ifpackageloaded#1{%
+ \expandafter\ifx\csname ver@#1.\@pkgextension\endcsname\cc@forbiddenpackage
+ \expandafter\@secondoftwo% consider it as not loaded
+ \else
+ \gdef\cc@reserved{\orig@ifpackageloaded{#1}}\expandafter\cc@reserved%
+ \fi}
+\def\activate@shortcite{}
+\AtBeginDocument{%
+ \@ifpackageloaded{cccite}{%
+ \def\activate@shortcite{\let\cite\shortcite}
+ }{}%
+ \@ifpackageloaded{natbib}{%
+ \def\activate@shortcite{%
+ \let\cite\citealt
+ \let\citet\citealt
+ \let\citep\citealp
+ }%
+ }{}%
+ \if@manualbibliography\def\activate@shortcite{}\fi
+}
+\newskip\postthmcmtskip
+\postthmcmtskip .5em plus .5em
+\def\th@cc{%
+ \normalfont\slshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1\ ##2]%
+ {\normalfont({\activate@shortcite{}##3}).}\hskip\postthmcmtskip}%
+ }
+\def\th@ccnn{%
+ \normalfont\slshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1.]}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1]%
+ {\normalfont({\activate@shortcite{}##3}).}\hskip\postthmcmtskip}%
+ }
+\newskip\postprfcmtskip
+\postprfcmtskip .5em plus 1em
+\def\th@ccproof{%
+ \normalfont\upshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1.\ \ ]%
+ \itemindent\labelsep}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1]%
+ {\normalfont({\activate@shortcite{}##3}).}\hskip\postprfcmtskip
+ \itemindent\labelsep}%
+ }
+\def\th@ccalgo{%
+ \normalfont\upshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1\ ##2.]
+ {\normalfont##3.\par}}%
+ }
+\def\th@ccalgonn{%
+ \normalfont\upshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1.]}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1.] {\normalfont##3.\par}}%
+ }
+\gdef\theorem@headerfont{\scshape}
+\endinput
+%%
+%% End of file `thcc.sty'.
+\end{filecontents*}
+\begin{filecontents*}{cc.bst}
+% File name: cc.bst
+%
+% cc.bst style file for BibTeX.
+% February 6, 1996
+% This style file provides the following citation facilities:
+% Usage in Tex Output:
+% file:
+% \cite Cook (1990)
+% \citeauthor Cook
+% \citeyear 1990
+% \citemul Cook (1990, 1991a, 1991b)
+% \shortcite Cook 1990
+% \parencite (Cook 1990)
+% \nocite
+
+% It was prepared by modifying previous style files.
+% Here are acknowledgements:
+%> BibTeX `named' style file for BibTeX version 0.99c, LaTeX version 2.09
+%> Place it in a file called named.bst in the BibTeX search path. (Placing it
+%> in the same directory as the LaTeX document should also work.)
+%> Support for named citations is provided by named.sty
+
+%> This version was made by modifying the master file made by
+%> Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU)
+
+%> Copyright (C) 1985, all rights reserved.
+%> Modifications Copyright 1988, Peter F. Patel-Schneider
+%> Copying of this file is authorized only if either
+%> (1) you make absolutely no changes to your copy, including name, or
+%> (2) if you do make changes, you name it something other than
+%> btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
+%> This restriction helps ensure that all standard styles are identical.
+
+%> There are undoubtably bugs in this style. If you make bug fixes,
+%> improvements, etc. please let me know. My e-mail address is:
+%> pfps@research.att.com
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.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 { mode s t }
+
+%FUNCTION {message}
+%{
+% duplicate$ top$
+%}
+
+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$
+ label write$
+ "]{" 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 {semi.block}
+{ %%%%"semi.block" top$
+ mid.sentence 'output.state :=
+}
+
+%FUNCTION {semi.block}
+%{ output.state mid.sentence =
+% '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.semiblock.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'semi.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$ "" }
+ { "{\sl " swap$ * "}" * }
+ if$
+}
+
+FUNCTION {bold}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\bf " swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ "{\sc " *
+ 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$
+ { "" }
+ { "ed.\ "
+ editor format.names *
+ }
+ if$
+}
+
+FUNCTION {format.editors.reverse}
+{ editor empty$
+ { "" }
+ { editor format.names
+ ", ed." *
+ }
+ if$
+}
+
+FUNCTION {format.editors.simple}
+{ editor empty$
+ { "" }
+ { editor format.names }
+ 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 extra.label * }
+% { month " " * year * extra.label *}
+% if$
+% }
+ { year extra.label * }
+ 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$
+% { "" }
+% { series empty$
+% 'skip$
+% {series emphasize ",\ vol.\ " * volume *}
+% if$
+% "volume and number" number either.or.check
+% }
+% if$
+%}
+%FUNCTION {format.bvolume}
+%{ volume empty$
+% { "" }
+% { series empty$
+% 'skip$
+% {series emphasize "\ " * volume bold *}
+% if$
+% "volume and number" number either.or.check
+% }
+% if$
+%}
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "vol." 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.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { series "\ " * number bold * }
+ 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 n.dashify }
+ { "p." pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.vol.num.year}
+{ volume field.or.null bold
+ number empty$
+ 'skip$
+ { "(" number * ")\," * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ year empty$
+ 'skip$
+ { "\ (" * format.date * ")" * }
+ if$
+}
+
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null bold
+ 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 }
+ { ",\, pp.\, " * 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 " booktitle emphasize * ", " * format.editors * }
+ 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.publisher.address}
+{ address empty$
+ 'publisher
+ { publisher ", " * address * }
+ 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$
+ " \shortcite{" * 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$
+ " \shortcite{" * 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$
+ " \shortcite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ semi.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "\ " * format.vol.num.year * "journal" output.check
+ format.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors.simple "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ semi.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ format.publisher.address "publisher" 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 {booklet}
+{ output.bibitem
+ format.authors output
+ semi.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$
+ semi.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
+ format.publisher.address "publisher" output.check
+ }
+ { 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
+ semi.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
+ format.publisher.address "publisher" output.check
+ 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
+ semi.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date output
+ }
+ { address output.nonnull
+ format.date output
+ organization output
+ publisher output
+ }
+ if$
+ format.pages output
+ }
+ { 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$
+ semi.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
+ semi.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 "author" output.check
+ title howpublished new.semiblock.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
+ semi.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 }
+ { format.editors.reverse output.nonnull }
+ if$
+ semi.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
+ semi.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
+ semi.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"}
+
+
+
+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$
+}
+
+INTEGERS { et.al.char.used }
+
+FUNCTION {initialize.et.al.char.used}
+{ #0 'et.al.char.used :=
+}
+
+EXECUTE {initialize.et.al.char.used}
+
+FUNCTION {format.lab.names}
+{
+ 's :=
+ s num.names$ 'numnames :=
+
+ mode "cite" =
+ { numnames #1 =
+ { s #1 "{vv }{ll}" format.name$ }
+ { numnames #2 =
+ { s #1 "{vv }{ll }\& " format.name$ s #2 "{vv }{ll}" format.name$ * }
+ { s #1 "{vv }{ll }\bgroup \em et al.\egroup " format.name$ }
+ if$
+ }
+ if$
+ }
+ { numnames #1 =
+ { s #1 "{ll}" format.name$ }
+ { numnames #2 =
+ { s #1 "{ll }\& " format.name$ s #2 "{ll}" format.name$ * }
+ { s #1 "{ll }\bgroup \em et al.\egroup " 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.label}
+{
+ "cite" 'mode :=
+ 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$
+
+ "\protect\citeauthoryear{" swap$ * "}{" *
+ year field.or.null purify$ * % CHANGED - pfps - 15 Feb 1989
+ 'label :=
+
+ "sort" 'mode :=
+ 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$
+ " " *
+ year field.or.null purify$ *
+ sortify 'sort.label :=
+}
+
+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}
+
+{ calc.label
+ sort.label
+
+ " "
+ *
+ 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$
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.sort.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.sort.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ last.sort.label sort.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 :=
+ sort.label 'last.sort.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label extra.label * "}" * 'label := % CHANGED - pfps 15 Feb 1989
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {begin.bib}
+
+{ et.al.char.used
+ { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
+ 'skip$
+ if$
+ preamble$ empty$
+
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+
+ "\begin{thebibliography}{}\small" write$ newline$
+
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+\end{filecontents*}
+\begin{filecontents*}{cc2.bst}
+%%
+%% This is file `cc2.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% merlin.mbs (with options: `,ay,nat,lang,vonx,ed-au,nmft,nmft-sc,nmfted,nmand-rm,dt-beg,yr-par,note-yr,atit-u,vol-bf,volp-com,pgsep-s,jnm-x,pg-bk,isbn,issn,url,url-blk,edpar,edby,edbyy,ppx,ord,amper,and-xcom,etal-it,nfss')
+%% ----------------------------------------
+%% *** bst for computational complexity with natbib.sty ***
+%%
+%% Copyright 1994-2007 Patrick W Daly
+ % ===============================================================
+ % IMPORTANT NOTICE:
+ % This bibliographic style (bst) file has been generated from one or
+ % more master bibliographic style (mbs) files, listed above.
+ %
+ % This generated file can be redistributed and/or modified under the terms
+ % of the LaTeX Project Public License Distributed from CTAN
+ % archives in directory macros/latex/base/lppl.txt; either
+ % version 1 of the License, or any later version.
+ % ===============================================================
+ % Name and version information of the main mbs file:
+ % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)]
+ % For use with BibTeX version 0.99a or later
+ %-------------------------------------------------------------------
+ % This bibliography style file is intended for texts in ENGLISH
+ % This is an author-year citation style bibliography. As such, it is
+ % non-standard LaTeX, and requires a special package file to function properly.
+ % Such a package is natbib.sty by Patrick W. Daly
+ % The form of the \bibitem entries is
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
+ % The essential feature is that the label (the part in brackets) consists
+ % of the author names, as they should appear in the citation, with the year
+ % in parentheses following. There must be no space before the opening
+ % parenthesis!
+ % With natbib v5.3, a full list of authors may also follow the year.
+ % In natbib.sty, it is possible to define the type of enclosures that is
+ % really wanted (brackets or parentheses), but in either case, there must
+ % be parentheses in the label.
+ % The \cite command functions as follows:
+ % \citet{key} ==>> Jones et al. (1990)
+ % \citet*{key} ==>> Jones, Baker, and Smith (1990)
+ % \citep{key} ==>> (Jones et al., 1990)
+ % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
+ % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
+ % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
+ % \citeauthor{key} ==>> Jones et al.
+ % \citeauthor*{key} ==>> Jones, Baker, and Smith
+ % \citeyear{key} ==>> 1990
+ %---------------------------------------------------------------------
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ eid
+ howpublished
+ institution
+ isbn
+ issn
+ journal
+ key
+ language
+ 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 {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {date.block}
+{
+ new.block
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+FUNCTION {bolden}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\textbf{" swap$ * "}" * }
+ if$
+}
+FUNCTION {scaps}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\textsc{" swap$ * "}" * }
+ if$
+}
+FUNCTION {bib.name.font}
+{ scaps }
+FUNCTION {bib.fname.font}
+{ bib.name.font }
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ % The language selected here is ENGLISH
+FUNCTION {bbl.and}
+{ "and"}
+
+FUNCTION {bbl.etal}
+{ "et~al." }
+
+FUNCTION {bbl.editors}
+{ "editors" }
+
+FUNCTION {bbl.editor}
+{ "editor" }
+
+FUNCTION {bbl.edby}
+{ "edited by" }
+
+FUNCTION {bbl.edition}
+{ "edition" }
+
+FUNCTION {bbl.volume}
+{ "volume" }
+
+FUNCTION {bbl.of}
+{ "of" }
+
+FUNCTION {bbl.number}
+{ "number" }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+{ "" }
+
+FUNCTION {bbl.page}
+{ "" }
+
+FUNCTION {bbl.chapter}
+{ "chapter" }
+
+FUNCTION {bbl.techrep}
+{ "Technical Report" }
+
+FUNCTION {bbl.mthesis}
+{ "Master's thesis" }
+
+FUNCTION {bbl.phdthesis}
+{ "Ph.D. thesis" }
+
+FUNCTION {bbl.first}
+{ "1st" }
+
+FUNCTION {bbl.second}
+{ "2nd" }
+
+FUNCTION {bbl.third}
+{ "3rd" }
+
+FUNCTION {bbl.fourth}
+{ "4th" }
+
+FUNCTION {bbl.fifth}
+{ "5th" }
+
+FUNCTION {bbl.st}
+{ "st" }
+
+FUNCTION {bbl.nd}
+{ "nd" }
+
+FUNCTION {bbl.rd}
+{ "rd" }
+
+FUNCTION {bbl.th}
+{ "th" }
+
+MACRO {jan} {"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"}
+
+FUNCTION {eng.ord}
+{ duplicate$ "1" swap$ *
+ #-2 #1 substring$ "1" =
+ { bbl.th * }
+ { duplicate$ #-1 #1 substring$
+ duplicate$ "1" =
+ { pop$ bbl.st * }
+ { duplicate$ "2" =
+ { pop$ bbl.nd * }
+ { "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+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"}
+FUNCTION {bibinfo.check}
+{ swap$
+ duplicate$ missing$
+ {
+ pop$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ pop$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {bibinfo.warn}
+{ swap$
+ duplicate$ missing$
+ {
+ swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ "empty " swap$ * " in " * cite$ * warning$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { "\urlprefix\url{" url * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+
+STRINGS { bibinfo}
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ff~}{vv~}{ll}{, jj}"
+ format.name$
+ bib.name.font
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal emphasize *
+ }
+ {
+ "\&"
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+}
+FUNCTION {format.names.ed}
+{
+ format.names
+}
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author "author" format.names
+}
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ {
+ " " *
+ get.bbl.editor
+ "(" swap$ * ")" *
+ *
+ }
+ if$
+}
+FUNCTION {format.book.pages}
+{ pages "pages" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { " " * bbl.pages * }
+ if$
+}
+FUNCTION {format.isbn}
+{ isbn "isbn" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ new.block
+ "ISBN " swap$ *
+ }
+ if$
+}
+
+FUNCTION {format.issn}
+{ issn "issn" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ new.block
+ "ISSN " swap$ *
+ }
+ if$
+}
+
+FUNCTION {select.language}
+{ duplicate$ empty$
+ 'pop$
+ { language empty$
+ 'skip$
+ { "{\selectlanguage{" language * "}" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.note}
+{
+ note empty$
+ { "" }
+ { note #1 #1 substring$
+ duplicate$ "{" =
+ 'skip$
+ { output.state mid.sentence =
+ { "l" }
+ { "u" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ select.language
+ }
+ if$
+}
+FUNCTION {format.full.names}
+{'s :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal emphasize *
+ }
+ {
+ "\&"
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.key.full}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.key.full}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.key.full}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.full
+ { type$ "proceedings" =
+ 'editor.key.full
+ 'author.key.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[{" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "}]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {if.digit}
+{ duplicate$ "0" =
+ swap$ duplicate$ "1" =
+ swap$ duplicate$ "2" =
+ swap$ duplicate$ "3" =
+ swap$ duplicate$ "4" =
+ swap$ duplicate$ "5" =
+ swap$ duplicate$ "6" =
+ swap$ duplicate$ "7" =
+ swap$ duplicate$ "8" =
+ swap$ "9" = or or or or or or or or or
+}
+FUNCTION {n.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ { t empty$ not }
+ { t #-1 #1 substring$ if.digit
+ { numnames #1 + 'numnames := }
+ { #0 'numnames := }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames #5 =
+ { duplicate$ #1 #2 substring$ swap$
+ #3 global.max$ substring$
+ "\," swap$ * *
+ }
+ 'skip$
+ if$
+ }
+ while$
+}
+FUNCTION {n.dashify}
+{
+ n.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {word.in}
+{ bbl.in capitalize
+ " " * }
+
+FUNCTION {format.date}
+{ year "year" bibinfo.check duplicate$ empty$
+ {
+ "empty year in " cite$ * "; set to ????" * warning$
+ pop$ "????"
+ }
+ 'skip$
+ if$
+ extra.label *
+ before.all 'output.state :=
+ " (" swap$ * ")" *
+}
+FUNCTION {format.btitle}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ emphasize
+ select.language
+ }
+ if$
+}
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { bbl.volume volume tie.or.space.prefix
+ "volume" bibinfo.check * *
+ series "series" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ bbl.of space.word * swap$
+ emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { bbl.number }
+ { bbl.number capitalize }
+ if$
+ number tie.or.space.prefix "number" bibinfo.check * *
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { bbl.in space.word *
+ series "series" bibinfo.check *
+ }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+FUNCTION {convert.edition}
+{ extract.num "l" change.case$ 's :=
+ s "first" = s "1" = or
+ { bbl.first 't := }
+ { s "second" = s "2" = or
+ { bbl.second 't := }
+ { s "third" = s "3" = or
+ { bbl.third 't := }
+ { s "fourth" = s "4" = or
+ { bbl.fourth 't := }
+ { s "fifth" = s "5" = or
+ { bbl.fifth 't := }
+ { s #1 #1 substring$ is.num
+ { s eng.ord 't := }
+ { edition 't := }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ t
+}
+
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ {
+ convert.edition
+ output.state mid.sentence =
+ { "l" }
+ { "t" }
+ if$ change.case$
+ "edition" bibinfo.check
+ " " * bbl.edition *
+ }
+ if$
+}
+INTEGERS { multiresult }
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { duplicate$ multi.page.check
+ {
+ n.dashify
+ }
+ {
+ }
+ if$
+ "pages" bibinfo.check
+ }
+ if$
+}
+FUNCTION {format.journal.pages}
+{ pages duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$
+ { pop$ pop$ format.pages }
+ {
+ ", " *
+ swap$
+ n.dashify
+ "pages" bibinfo.check
+ *
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.journal.eid}
+{ eid "eid" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$ 'skip$
+ {
+ ", " *
+ }
+ if$
+ swap$ *
+ }
+ if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ duplicate$ empty$ 'skip$
+ {
+ "volume" bibinfo.check
+ }
+ if$
+ bolden
+ number "number" bibinfo.check duplicate$ empty$ 'skip$
+ {
+ swap$ duplicate$ empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ swap$
+ "(" swap$ * ")" *
+ }
+ if$ *
+ eid empty$
+ { format.journal.pages }
+ { format.journal.eid }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{
+ booktitle "booktitle" bibinfo.check
+ emphasize
+}
+FUNCTION {format.in.ed.booktitle}
+{ format.booktitle duplicate$ empty$ 'skip$
+ {
+ editor "editor" format.names.ed duplicate$ empty$ 'pop$
+ {
+ get.bbl.editor
+ swap$ "," *
+ " " * swap$ *
+ swap$
+ "," *
+ " " * swap$
+ * }
+ if$
+ word.in swap$ *
+ }
+ if$
+}
+FUNCTION {format.thesis.type}
+{ type duplicate$ empty$
+ 'pop$
+ { swap$ pop$
+ "t" change.case$ "type" bibinfo.check
+ }
+ if$
+}
+FUNCTION {format.tr.number}
+{ number "number" bibinfo.check
+ type duplicate$ empty$
+ { pop$ bbl.techrep }
+ 'skip$
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ "t" change.case$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+FUNCTION {format.article.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.book.crossref}
+{ volume duplicate$ empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ pop$ word.in
+ }
+ { bbl.volume
+ capitalize
+ swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.incoll.inproc.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.org.or.pub}
+{ 't :=
+ ""
+ address empty$ t empty$ and
+ 'skip$
+ {
+ t empty$
+ { address "address" bibinfo.check *
+ }
+ { t *
+ address empty$
+ 'skip$
+ { ", " * address "address" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.publisher.address}
+{ publisher "publisher" bibinfo.warn format.org.or.pub
+}
+
+FUNCTION {format.organization.address}
+{ organization "organization" bibinfo.check format.org.or.pub
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ {
+ journal
+ "journal" bibinfo.check
+ emphasize
+ "journal" output.check
+ add.blank
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.issn output
+ new.block
+ format.url output
+ new.block
+ format.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$
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ format.publisher.address output
+ }
+ {
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.isbn output
+ format.book.pages output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ address "address" bibinfo.check output
+ format.isbn output
+ format.book.pages output
+ new.block
+ format.url output
+ new.block
+ format.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$
+ format.date "year" output.check
+ date.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
+ format.publisher.address output
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ crossref missing$
+ { format.isbn output }
+ 'skip$
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.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
+ format.publisher.address output
+ format.edition output
+ format.isbn output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.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
+ new.sentence
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.isbn output
+ format.issn output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {conference} { inproceedings }
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization "organization" bibinfo.check output
+ address "address" bibinfo.check output
+ format.edition output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ new.block
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title output
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ new.block
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.isbn output
+ format.issn output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title
+ "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ format.url output
+ new.block
+ format.note "note" output.check
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+READ
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+INTEGERS { len }
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+FUNCTION {format.lab.names}
+{ 's :=
+ "" 't :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$
+ " " * bbl.etal emphasize *
+ }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ {
+ " " * bbl.etal emphasize *
+ }
+ { " \& " * 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 {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label
+ 'author.key.label
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ { pop$ "????" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll{ }}{ ff{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { t sortify * }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+SORT
+STRINGS { last.label next.extra }
+INTEGERS { last.extra.num number.label }
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+EXECUTE {initialize.extra.label.stuff}
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+FUNCTION {bib.sort.order}
+{ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+ITERATE {bib.sort.order}
+SORT
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\providecommand{\urlprefix}{URL }"
+ write$ newline$
+ "\providecommand{\selectlanguage}[1]{\relax}"
+ write$ newline$
+}
+EXECUTE {begin.bib}
+EXECUTE {init.state.consts}
+ITERATE {call.type$}
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+EXECUTE {end.bib}
+%% End of customized bst file
+%%
+%% End of file `cc2.bst'.
+\end{filecontents*}
diff --git a/macros/latex/contrib/computational-complexity/cc-journals.bib b/macros/latex/contrib/computational-complexity/cc-journals.bib
new file mode 100644
index 0000000000..6d15723820
--- /dev/null
+++ b/macros/latex/contrib/computational-complexity/cc-journals.bib
@@ -0,0 +1,1065 @@
+===========================================================================
+Hier zuerst einige allgemeine Strings:
+===========================================================================
+
+F{\"{u}}r "urltext"-Felder hier ein paar Strings:
+
+@String{PS = "PostScript"}
+@String{PSZ = "Gzipped PostScript"}
+@String{PDF = "PDF"}
+@String{WEBPAGE = "Webpage"}
+
+@String{UPBONLY = " (accessible only from uni-paderborn)"}
+@String{LOCALONLY = "Available only locally"}
+
+@String{OLDLITFILE = "file:/ag/aggathen/ag/litfiles/"}
+@String{LITFILE = "file:litfiles/"}
+
+@String{PUBFILE = "http://www-math.upb.de/~aggathen/Publications/"}
+@String{BNURL = "http://cosec.bit.uni-bonn.de/science/publications/pub-ia/\#"}
+
+
+@String{LINKSERVICE = "http://link.springer.de/link/service/"}
+@String{LINKOPENURL = "http://www.springerlink.com/openurl.asp?"}
+
+@String{GDZURLTEXT = "G{\"{o}}ttinger Digitalisierungszentrum"}
+@String{GDZURL = "http://www-gdz.sub.uni-goettingen.de/"}
+
+@String{DOI = "http://dx.doi.org/"}
+@String{ARXIV = "http://arxiv.org/abs/"}
+
+@String{LNCSBIB = "http://link.springer.de/link/service/series/0558/bibs/"}
+
+@String{INPREP = "In preparation"}
+@String{PRE = "Preprint,"}
+@String{SM = "Submitted,"}
+@String{SMTO = "Submitted to "}
+@String{TAIN = "To appear in "}
+@String{UNKNOWNVOL = "{\unskip\textnormal{.}}"}
+@String{DWNLD = "Last download "}% use this instead of: Last access, Last accessed
+
+
+Besondere Namensteile:
+
+wie in Al-Kindi
+@string{AL = "{\uppercase {a}}l{-}{\aftergroup \ignorespaces} "}
+
+
+===========================================================================
+Und jetzt Strings f{\"{u}}r Zeitschriften udgl.
+===========================================================================
+
+===========================================================================
+ Verschiedenes...
+===========================================================================
+@string{BSI = "{Bundesamt f{\"{u}}r Sicherheit in der Informationstechnik}"}
+@string{ECCC = "Electronic Colloquium on Computational Complexity"}
+@string{FIPS = "{Federal Information Processing Standards}"}
+@string{NISTlong = "{National Institute of Standards and Technology}"}
+@string{NIST = "{NIST}"}
+@String{TCG = "The Cryptogram. The Aristocrat of Puzzles"}
+@string{MSRI = "Mathematical Sciences Research Institute"}
+@String{TGPPlong = "{3rd Generation Partnership Project}"}
+@String{TGPP = "{3GPP}"}
+@String{ETSIlong = "{European Telecommunications Standards Institute}"}
+@String{ETSI = "{ETSI}"}
+@String{SAGElong = "{Security Algorithms Group of Experts}"}
+@String{SAGE = "{SAGE}"}
+
+===========================================================================
+ Reihen (Series)
+===========================================================================
+@string{BSL = "The Bulletin of Symbolic Logic"}
+@string{CTM = "Contemporary Mathematics"}
+@string{CTC = "Contemporary Cryptology, The Science of Information Integrity"}
+@string{EMA = "Encyclopedia of Mathematics and its Applications"}
+@String{FCM = "Foundations of Computational Mathematics"}
+@string{GMW = "Grundlehren der mathematischen Wissenschaften"}
+@string{GTM = "Graduate Texts in Mathematics"}
+@string{LMSLN = "London Mathematical Society Lecture Note Series"}
+@string{LNCS = "Lecture Notes in Computer Science"}
+@String{LNCSE = "Lecture Notes in Computational Science and Engineering "}
+@string{LNAI = "Lecture Notes in Artificial Intelligence"}
+@string{LNI = "Lecture Notes in Informatics"}
+@string{LNIM = "Lecture Notes in Mathematics"}
+@string{LNPAM = "Lecture Notes in Pure and Applied Mathematics"}
+@string{MCT = "Mathematical Centre Tracts"}
+@string{MIA = "Mathematics and Its Applications"}
+@string{PSAM = "Proceedings of Symposia in Applied Mathematics"}
+@string{SYM = "Symposia Mathematica"}
+@string{TMSC = "Texts and Monographs in Symbolic Computation"}
+@string{UTM = "Undergraduate Texts in Mathematics"}
+@string{MSRIP = MSRI # " Publications"}
+
+
+===========================================================================
+ Proceedingstitel
+===========================================================================
+@string{AAECC3 = "Algebraic Algorithms and Error-Correcting Codes: AAECC-3"}
+@string{AAECC5 = "Applied Algebra, Algebraic Algorithms and Error-Correcting Codes: AAECC-5, {\rm Menorca, Spain}"}
+@string{AAECC6 = "Algebraic Algorithms and Error-Correcting Codes: AAECC-6, {\rm Rome, Italy, 1988}"}
+@string{AAECC8 = "Algebraic Algorithms and Error-Correcting Codes: AAECC-8"}
+@string{AAECC9 = "Algebraic Algorithms and Error-Correcting Codes: AAECC-9"}
+@string{AAECC10 = "Algebraic Algorithms and Error-Correcting Codes: AAECC-10, {\rm San Juan de Puerto Rico}"}
+@string{AAECC11 = "Algebraic Algorithms and Error-Correcting Codes: AAECC-11"}
+@string{AAECC12 = "Applied Algebra, Algebraic Algorithms and Error-Correcting Codes: AAECC-12, {\rm Toulouse, France}"}
+@string{AAECC13 = "Applied Algebra, Algebraic Algorithms and Error-Correcting Codes: AAECC-13, {\rm Hawaii}"}
+@string{AAECC14 = "Applied Algebra, Algebraic Algorithms and Error-Correcting Codes: AAECC-14, {\rm Melbourne, Australia}"}
+@string{AAECC19 = "Applied Algebra, Algebraic Algorithms and Error-Correcting Codes: AAECC-19"}
+
+@string{ACO = "Algebraic Coding, First French-Israeli Workshop, {\rm Paris, France, 1993}"}
+
+@String{ACISP10 = "Information Security and Privacy, 15th Australasian Conference, ACISP 2010, {\rm Sydney, Australia, 2010}"}
+
+@string{ANTS94 = "Algorithmic Number Theory, First International Symposium, ANTS-I, {\rm Ithaca, NY, USA}"}
+@string{ANTS96 = "Algorithmic Number Theory, Second International Symposium, ANTS-II, {\rm Talence, France}"}
+@string{ANTS98 = "Algorithmic Number Theory, Third International Symposium, ANTS-III, {\rm Portland, Oregon, USA}"}
+@string{ANTS00 = "Algorithmic Number Theory, Fourth International Symposium, ANTS-IV, {\rm Leiden, The Netherlands}"}
+@String{ANTS02 = "Algorithmic Number Theory, Fifth International Symposium, ANTS-V, {\rm Sydney, Australia}"}
+@string{ANTS06 = "Algorithmic Number Theory, Seventh International Symposium, ANTS-IV, {\rm Berlin, Germany}"}
+@string{ANTS08 = "Algorithmic Number Theory, Eighth International Symposium, ANTS-VIII, {\rm Banff, Canada}"}
+@string{ANTS10 = "Algorithmic Number Theory, Ninth International Symposium, ANTS-IX, {\rm Nancy, France}"}
+
+@string{ASCRY94 = "Advances in Cryptology: Proceedings of ASIACRYPT 1994, {\rm Wollongong, Australia}"}
+@string{ASCRY96 = "Advances in Cryptology: Proceedings of ASIACRYPT 1996, {\rm Kyongju, Korea}"}
+@string{ASCRY98 = "Advances in Cryptology: Proceedings of ASIACRYPT 1998, {\rm Beijing, China}"}
+@string{ASCRY00 = "Advances in Cryptology: Proceedings of ASIACRYPT 2000, {\rm Kyoto, Japan}"}
+@string{ASCRY01 = "Advances in Cryptology: Proceedings of ASIACRYPT 2001, {\rm Gold Coast, Australia}"}
+@string{ASCRY05 = "Advances in Cryptology: Proceedings of ASIACRYPT 2005, {\rm Chennai, India}"}
+@string{ASCRY06 = "Advances in Cryptology: Proceedings of ASIACRYPT 2006, {\rm Shanghai, China}"}
+@string{ASCRY07 = "Advances in Cryptology: Proceedings of ASIACRYPT 2007, {\rm Kuching, Sarawak, Malaysia}"}
+@String{ASCRY11 = "Advances in Cryptology: Proceedings of ASIACRYPT 2011, {\rm Seoul, South Korea}"}
+@String{ASCRY12 = "Advances in Cryptology: Proceedings of ASIACRYPT 2012, {\rm Beijing, China}"}
+@String{ASCRY13 = "Advances in Cryptology: Proceedings of ASIACRYPT 2013, {\rm Bengaluru, India}"}
+
+
+@string{CASC99 = "Proceedings of the Second Workshop on Computer Algebra in Scientific Computing, CASC '99, {\rmfamily M\"unchen, Germany}"}
+
+@string{CCS93 = "CCS'93: Proceedings of the First ACM Conference on Computer and Communications Security, November 1993, Fairfax, Virginia, United States, November 03-05, 1993."}
+@String{CCS13 = "CCS'13: Proceedings of the 20th ACM Conference on Computer and Communications Security, November 4--8, 2013, Berlin, Germany."}
+
+@string{CHES99 = "Cryptographic Hardware and Embedded Systems, First International Workshop, CHES'99, {\rm Worcester,~MA}"}
+@string{CHES00 = "Cryptographic Hardware and Embedded Systems, Workshop, CHES'00, {\rm Worcester,~MA}"}
+@string{CHES01 = "Cryptographic Hardware and Embedded Systems, Workshop, CHES'01, {\rm Paris,~France}"}
+@string{CHES05 = "Cryptographic Hardware and Embedded Systems, Workshop, CHES'05, {\rm Edinburgh,~Scotland}"}
+@string{CHES06 = "Cryptographic Hardware and Embedded Systems, Workshop, CHES'06, {\rm Yokohama,~Japan}"}
+@String{CHES07 = "Cryptographic Hardware and Embedded Systems, Workshop, CHES'07, {\rm Vienna, Austria}"}
+@String{CHES08 = "Cryptographic Hardware and Embedded Systems, Workshop, CHES'08, {\rm Washington, DC,~USA}"}
+
+@string{COCOON99 = "5th Annual International Computing and Combinatorics Conference (COCOON '99), {\rm Tokyo, Japan}, July 1999"}
+@string{COCOON00 = "6th Annual International Computing and Combinatorics Conference (COCOON 2000), {\rm Sydney, Australia}, July 2000"}
+@string{COCOON01 = "7th Annual International Computing and Combinatorics Conference (COCOON 2001), {\rm Guilin, China}, August 2001"}
+
+@String{CRMPLN = "CRM Proceedings \&{} Lecture Notes"}
+
+@string{CRYPTO82 = "Advances in Cryptology: Proceedings of CRYPTO~1982"}
+@string{CRYPTO83 = "Advances in Cryptology: Proceedings of CRYPTO~1983"}
+@string{CRYPTO84 = "Advances in Cryptology: Proceedings of CRYPTO~1984, {\rm Santa Barbara, CA}"}
+@string{CRYPTO85 = "Advances in Cryptology: Proceedings of CRYPTO~1985, {\rm Santa Barbara, CA}"}
+@string{CRYPTO86 = "Advances in Cryptology: Proceedings of CRYPTO~1986, {\rm Santa Barbara, CA}"}
+@string{CRYPTO87 = "Advances in Cryptology: Proceedings of CRYPTO~1987, {\rm Santa Barbara, CA}"}
+@string{CRYPTO88 = "Advances in Cryptology: Proceedings of CRYPTO~1988, {\rm Santa Barbara, CA}"}
+@string{CRYPTO89 = "Advances in Cryptology: Proceedings of CRYPTO~1989, {\rm Santa Barbara, CA}"}
+@string{CRYPTO90 = "Advances in Cryptology: Proceedings of CRYPTO~1990, {\rm Santa Barbara, CA}"}
+@string{CRYPTO91 = "Advances in Cryptology: Proceedings of CRYPTO~1991, {\rm Santa Barbara, CA}"}
+@string{CRYPTO92 = "Advances in Cryptology: Proceedings of CRYPTO~1992, {\rm Santa Barbara, CA}"}
+@string{CRYPTO93 = "Advances in Cryptology: Proceedings of CRYPTO~1993, {\rm Santa Barbara, CA}"}
+@string{CRYPTO94 = "Advances in Cryptology: Proceedings of CRYPTO~1994, {\rm Santa Barbara, CA}"}
+@string{CRYPTO95 = "Advances in Cryptology: Proceedings of CRYPTO~1995, {\rm Santa Barbara, CA}"}
+@string{CRYPTO96 = "Advances in Cryptology: Proceedings of CRYPTO~1996, {\rm Santa Barbara, CA}"}
+@string{CRYPTO97 = "Advances in Cryptology: Proceedings of CRYPTO~1997, {\rm Santa Barbara, CA}"}
+@string{CRYPTO98 = "Advances in Cryptology: Proceedings of CRYPTO~1998, {\rm Santa Barbara, CA}"}
+@string{CRYPTO99 = "Advances in Cryptology: Proceedings of CRYPTO~1999, {\rm Santa Barbara, CA}"}
+@string{CRYPTO00 = "Advances in Cryptology: Proceedings of CRYPTO~2000, {\rm Santa Barbara, CA}"}
+@string{CRYPTO01 = "Advances in Cryptology: Proceedings of CRYPTO~2001, {\rm Santa Barbara, CA}"}
+@string{CRYPTO02 = "Advances in Cryptology: Proceedings of CRYPTO~2002, {\rm Santa Barbara, CA}"}
+@String{CRYPTO03 = "Advances in Cryptology: Proceedings of CRYPTO~2003, {\rm Santa Barbara, CA}"}
+@String{CRYPTO04 = "Advances in Cryptology: Proceedings of CRYPTO~2004, {\rm Santa Barbara, CA}"}
+@String{CRYPTO06 = "Advances in Cryptology: Proceedings of CRYPTO~2006, {\rm Santa Barbara, CA}"}
+@String{CRYPTO07 = "Advances in Cryptology: Proceedings of CRYPTO~2007, {\rm Santa Barbara, CA}"}
+@String{CRYPTO08 = "Advances in Cryptology: Proceedings of CRYPTO~2008, {\rm Santa Barbara, CA}"}
+@String{CRYPTO09 = "Advances in Cryptology: Proceedings of CRYPTO~2009, {\rm Santa Barbara, CA}"}
+@String{CRYPTO10 = "Advances in Cryptology: Proceedings of CRYPTO~2010, {\rm Santa Barbara, CA}"}
+@String{CRYPTO11 = "Advances in Cryptology: Proceedings of CRYPTO~2011, {\rm Santa Barbara, CA}"}
+@String{CRYPTO12 = "Advances in Cryptology: Proceedings of CRYPTO~2012, {\rm Santa Barbara, CA}"}
+@String{CRYPTO13 = "Advances in Cryptology: Proceedings of CRYPTO~2013, {\rm Santa Barbara, CA}"}
+@String{CRYPTO14 = "Advances in Cryptology: Proceedings of CRYPTO~2014, {\rm Santa Barbara, CA}"}
+@String{CRYPTO15 = "Advances in Cryptology: Proceedings of CRYPTO~2015, {\rm Santa Barbara, CA}"}
+
+
+@String{CTRSA10 = "RSA Conference 2010, Cryptographers' Track, {\rm San Francisco, CA, USA}"}
+
+@String{ECCOMAS04 = "European Congress on Computational Methods in Applied Sciences and Engineering, ECCOMAS 2004, {\rm Jyv{\"{a}}skyl{\"{a}}, Finland}"}
+
+@string{EUCAL82 = "Proceedings of EUROCAL 1982"}
+@string{EUCAL83 = "Proceedings of EUROCAL 1983, {\rm London,~UK}"}
+@string{EUCAL85 = "Proceedings of EUROCAL 1985"}
+
+
+@string{EUCRY84 = "Advances in Cryptology: Proceedings of EUROCRYPT 1984, {\rm Paris, France}"}
+@string{EUCRY85 = "Advances in Cryptology: Proceedings of EUROCRYPT 1985"}
+@string{EUCRY87 = "Advances in Cryptology: Proceedings of EUROCRYPT 1987, {\rm Amsterdam, The Netherlands}"}
+@string{EUCRY88 = "Advances in Cryptology: Proceedings of EUROCRYPT 1988"}
+@string{EUCRY89 = "Advances in Cryptology: Proceedings of EUROCRYPT 1989, {\rm Houthalen, Belgium}"}
+@string{EUCRY90 = "Advances in Cryptology: Proceedings of EUROCRYPT 1990, {\rm Aarhus, Denmark}"}
+@string{EUCRY91 = "Advances in Cryptology: Proceedings of EUROCRYPT 1991, {\rm Brighton, UK}"}
+@string{EUCRY92 = "Advances in Cryptology: Proceedings of EUROCRYPT 1992, {\rm Balatonf{\"u}red, Hungary}"}
+@string{EUCRY93 = "Advances in Cryptology: Proceedings of EUROCRYPT 1993, {\rm Lofthus, Norway}"}
+@string{EUCRY94 = "Advances in Cryptology: Proceedings of EUROCRYPT 1994, {\rm Perugia, Italy}"}
+@string{EUCRY95 = "Advances in Cryptology: Proceedings of EUROCRYPT 1995, {\rm Saint-Malo, France}"}
+@string{EUCRY96 = "Advances in Cryptology: Proceedings of EUROCRYPT 1996, {\rm Saragossa}"}
+@string{EUCRY97 = "Advances in Cryptology: Proceedings of EUROCRYPT 1997, {\rm Konstanz, Germany}"}
+@string{EUCRY98 = "Advances in Cryptology: Proceedings of EUROCRYPT 1998, {\rm Helsinki, Finland}"}
+@string{EUCRY99 = "Advances in Cryptology: Proceedings of EUROCRYPT 1999, {\rm Prague, Czech Republic}"}
+@string{EUCRY00 = "Advances in Cryptology: Proceedings of EUROCRYPT 2000, {\rm Bruges, Belgium}"}
+@string{EUCRY01 = "Advances in Cryptology: Proceedings of EUROCRYPT 2001, {\rm Aarhus, Denmark}"}
+@string{EUCRY02 = "Advances in Cryptology: Proceedings of EUROCRYPT 2002, {\rm Amsterdam, The Netherlands}"}
+@string{EUCRY03 = "Advances in Cryptology: Proceedings of EUROCRYPT 2003, {\rm Warsaw, Poland}"}
+@String{EUCRY05 = "Advances in Cryptology: Proceedings of EUROCRYPT 2005, {\rm Aarhus, Denmark}"}
+@String{EUCRY06 = "Advances in Cryptology: Proceedings of EUROCRYPT 2006, {\rm St. Petersburg, Russia}"}
+@String{EUCRY08 = "Advances in Cryptology: Proceedings of EUROCRYPT 2008, {\rm Istanbul, Turkey}"}
+@string{EUCRY09 = "Advances in Cryptology: Proceedings of EUROCRYPT 2009, {\rm Cologne, Germany}"}
+@String{EUCRY10 = "Advances in Cryptology: Proceedings of EUROCRYPT 2010, {\rm French Riviera}"}
+@String{EUCRY12 = "Advances in Cryptology: Proceedings of EUROCRYPT 2012, {\rm Cambridge, UK}"}
+@String{EUCRY13 = "Advances in Cryptology: Proceedings of EUROCRYPT 2013, {\rm Athens, Greece}"}
+@String{EUCRY14 = "Advances in Cryptology: Proceedings of EUROCRYPT 2014, {\rm Copenhagen, Denmark}"}
+
+@String{EUROPKI09 = "6th European Workshop, EuroPKI 2009 {\rm Pisa, Italy}"}
+
+@string{EUSAM79 = "Proceedings of EUROSAM~'79, {\rm Marseille, France}"}
+@string{EUSAM84 = "Proceedings of EUROSAM~'84, {\rm Cambridge,~UK}"}
+
+
+@string{AFCRY08 = "Progress in Cryptology: Proceedings of AFRICACRYPT 2008, {\rm Gammarth, Tunisia}"}
+@String{AFCRY09 = "Progress in Cryptology: Proceedings of AFRICACRYPT 2009, {\rm Casablanca, Morocco}"}
+
+@string{FCM97 = "Foundations of Computational Mathematics 1997"}
+
+@String{FC10Ws = "Financial Cryptography and Data Security 2010"}
+
+@string{FOCS70 = "Proceedings of the 11th Annual IEEE Symposium on Switching and Automata Theory, {\rm Santa Monica~CA}"}
+@string{FOCS71 = "IEEE Conference Record of the 12th Annual Symposium on Switching and Automata Theory, {\em East Lansing~MI}"}
+@string{FOCS72 = "Proceedings of the 13th Annual IEEE Symposium on Switching and Automata Theory, {\rm Yorktown Heights~NY}"}
+@string{FOCS75 = "Proceedings of the 16th Annual IEEE Symposium on Foundations of Computer Science, {\rm Berkeley~CA}"}
+@string{FOCS76 = "Proceedings of the 17th Annual IEEE Symposium on Foundations of Computer Science, {\rm Houston~TX}"}
+@string{FOCS77 = "Proceedings of the 18th Annual IEEE Symposium on Foundations of Computer Science, {\rm Providence~RI}"}
+@string{FOCS78 = "Proceedings of the 19th Annual IEEE Symposium on Foundations of Computer Science, {\rm Ann Arbor~MI}"}
+@string{FOCS79 = "Proceedings of the 20th Annual IEEE Symposium on Foundations of Computer Science, {\rm San Juan~PR}"}
+@string{FOCS80 = "Proceedings of the 21st Annual IEEE Symposium on Foundations of Computer Science, {\rm Syracuse~NY}"}
+@string{FOCS81 = "Proceedings of the 22nd Annual IEEE Symposium on Foundations of Computer Science, {\rm Nashville~TN}"}
+@string{FOCS82 = "Proceedings of the 23rd Annual IEEE Symposium on Foundations of Computer Science, {\rm Chicago~IL}"}
+@string{FOCS83 = "Proceedings of the 24th Annual IEEE Symposium on Foundations of Computer Science, {\rm Tucson~AZ}"}
+@string{FOCS84 = "Proceedings of the 25th Annual IEEE Symposium on Foundations of Computer Science, {\rm Singer Island~FL}"}
+@string{FOCS85 = "Proceedings of the 26th Annual IEEE Symposium on Foundations of Computer Science, {\rm Portland~OR}"}
+@string{FOCS86 = "Proceedings of the 27th Annual IEEE Symposium on Foundations of Computer Science, {\rm Toronto, Ontario, Canada}"}
+@string{FOCS87 = "Proceedings of the 28th Annual IEEE Symposium on Foundations of Computer Science, {\rmfamily Los~Angeles~CA}"}
+@string{FOCS88 = "Proceedings of the 29th Annual IEEE Symposium on Foundations of Computer Science, {\rm White Plains~NY}"}
+@string{FOCS89 = "Proceedings of the 30th Annual IEEE Symposium on Foundations of Computer Science, {\rm Research Triangle Park~NC}"}
+@string{FOCS90 = "Proceedings of the 31st Annual IEEE Symposium on Foundations of Computer Science, {\rm St.~Louis~MO}"}
+@string{FOCS91 = "Proceedings of the 32nd Annual IEEE Symposium on Foundations of Computer Science, {\rm San Juan~PR}"}
+@string{FOCS92 = "Proceedings of the 33rd Annual IEEE Symposium on Foundations of Computer Science, {\rm Pittsburgh~PA}"}
+@string{FOCS93 = "Proceedings of the 34th Annual IEEE Symposium on Foundations of Computer Science, {\rm Palo Alto~CA}"}
+@string{FOCS94 = "Proceedings of the 35th Annual IEEE Symposium on Foundations of Computer Science, {\rm Santa Fe~NM}"}
+@string{FOCS95 = "Proceedings of the 36th Annual IEEE Symposium on Foundations of Computer Science, {\rm Milwaukee~WI}"}
+@string{FOCS96 = "Proceedings of the 37th Annual IEEE Symposium on Foundations of Computer Science, {\rm Burlington~VT}"}
+@string{FOCS97 = "Proceedings of the 38th Annual IEEE Symposium on Foundations of Computer Science, {\rm Miami Beach~FL}"}
+@string{FOCS98 = "Proceedings of the 39th Annual IEEE Symposium on Foundations of Computer Science, {\rm Palo Alto~CA}"}
+@string{FOCS99 = "Proceedings of the 40th Annual IEEE Symposium on Foundations of Computer Science, {\rm New York City~NY}"}
+@string{FOCS00 = "Proceedings of the 41st Annual IEEE Symposium on Foundations of Computer Science, {\rm Redondo Beach~CA}"}
+@string{FOCS01 = "Proceedings of the 42nd Annual IEEE Symposium on Foundations of Computer Science, {\rm Las Vegas~NV}"}
+@string{FOCS02 = "Proceedings of the 43nd Annual IEEE Symposium on Foundations of Computer Science, {\rm Vancouver, Canada}"}
+@String{FOCS03 = "Proceedings of the 44th Annual IEEE Symposium on Foundations of Computer Science, {\rm Cambridge,~MA}"}
+@String{FOCS04 = "Proceedings of the 45th Annual IEEE Symposium on Foundations of Computer Science, {\rm Rome, Italy}"}
+@String{FOCS05 = "Proceedings of the 46nd Annual IEEE Symposium on Foundations of Computer Science, {\rm Pittsburgh,~PA}"}
+@String{FOCS06 = "Proceedings of the 47th Annual IEEE Symposium on Foundations of Computer Science, {\rm Berkeley,~CA}"}
+@String{FOCS07 = "Proceedings of the 48nd Annual IEEE Symposium on Foundations of Computer Science, {\rm Providence,~RI}"}
+@String{FOCS08 = "Proceedings of the 49th Annual IEEE Symposium on Foundations of Computer Science, {\rm Philadelphia,~PA}"}
+
+@String{FSTTCS = "Record of the Third Conference on Foundations of Software Technology and Theoretical Computer Science"}
+@String{FSTTCS02 = "Proceedings of the 22nd Conference on Foundations of Software Technology and Theoretical Computer Science"}
+
+@string{CCC99 = "Proceedings of the 14th IEEE Conference on Computational Complexity, {\rm Atlanta~GA}"}
+
+@string{ICCC99 = "Proceedings of the 5th International Computing and Combinatorics Conference, {\rm Tokyo~Japan}"}
+
+@string{FOCT85 = "Proceedings of the 5th International Conference on Fundamentals of Computation Theory 1985, {\rm Cottbus, Germany}"}
+@string{FOCT87 = "Proceedings of the 6th International Conference on Fundamentals of Computation Theory 1987, {\rm Kazan, Russia}"}
+@string{FOCT91 = "Proceedings of the 8th International Conference on Fundamentals of Computation Theory 1991, {\rm Gosen, Germany}"}
+
+
+@String{FSE94 = "Fast Software Encryption 1994, Second International Workshop, FSE 1994, {\rm Leuven, Belgium}"}
+@String{FSE96 = "Fast Software Encryption 1996, 3rd International Workshop, FSE 1996, {\rm Cambridge, UK}"}
+@string{FSE97 = "Fast Software Encryption 1997, 4th International Workshop, FSE 1997, {\rm Haifa, Israel}"}
+@string{FSE00 = "Fast Software Encryption 2000, 7th International Workshop, FSE 2000, {\rm New York, NY, USA}"}
+@String{FSE03 = "Fast Software Encryption 2003, 10th International Workshop, FSE 2003, {\rm Lung, Sweden}"}
+@String{FSE04 = "Fast Software Encryption 2004, 11th International Workshop, FSE 2004, {\rm Delhi, India}"}
+@String{FSE06 = "Fast Software Encryption 2006, 13th International Workshop, FSE 2006, {\rm Graz, Austria}"}
+@String{FSE07 = "Fast Software Encryption 2007, 14th International Workshop, FSE 2007, {\rm Luxembourg, Luxembourg}"}
+@String{FSE10 = "Fast Software Encryption 2010, 17th International Workshop, FSE 2010, {\rm Seoul, Korea}"}
+@String{FSE13 = "Fast Software Encryption 2013, 20th International Workshop, FSE 2013, {\rm Singapore}"}
+
+
+@string{ICALP81 = "Proceedings of the 8th International Colloquium on Automata, Languages and Programming ICALP 1981, {\rm Acre (`Akko), Israel}"}
+@string{ICALP82 = "Proceedings of the 9th International Colloquium on Automata, Languages and Programming ICALP 1982, {\rm Aarhus, Denmark}"}
+@string{ICALP83 = "Proceedings of the 10th International Colloquium on Automata, Languages and Programming ICALP 1983, {\rm Barcelona, Spain}"}
+@string{ICALP84 = "Proceedings of the 11th International Colloquium on Automata, Languages and Programming ICALP 1984, {\rm Antwerp, Belgium}"}
+@string{ICALP85 = "Proceedings of the 12th International Colloquium on Automata, Languages and Programming ICALP 1985, {\rm Nafplion, Greece}"}
+@string{ICALP90 = "Proceedings of the 17th International Colloquium on Automata, Languages and Programming ICALP 1990, {\rm Warwick,~UK}"}
+@string{ICALP91 = "Proceedings of the 18th International Colloquium on Automata, Languages and Programming ICALP 1991, {\rm Madrid, Spain}"}
+@string{ICALP92 = "Proceedings of the 19th International Colloquium on Automata, Languages and Programming ICALP 1992, {\rm Vienna, Austria}"}
+@string{ICALP93 = "Proceedings of the 20th International Colloquium on Automata, Languages and Programming ICALP 1993, {\rm Lund, Sweden}"}
+@string{ICALP94 = "Proceedings of the 21st International Colloquium on Automata, Languages and Programming ICALP 1994, {\rm Jerusalem, Israel}"}
+@string{ICALP95 = "Proceedings of the 22nd International Colloquium on Automata, Languages and Programming ICALP 1995, {\rm Szeged, Hungary}"}
+@string{ICALP96 = "Proceedings of the 23rd International Colloquium on Automata, Languages and Programming ICALP 1996, {\rm Paderborn, Germany}"}
+@string{ICALP97 = "Proceedings of the 24th International Colloquium on Automata, Languages and Programming ICALP 1997, {\rm Bologna, Italy}"}
+@string{ICALP98 = "Proceedings of the 25th International Colloquium on Automata, Languages and Programming ICALP 1998, {\rm Aalborg, Denmark}"}
+@string{ICALP99 = "Proceedings of the 26th International Colloquium on Automata, Languages and Programming ICALP 1999, {\rm Prague, Czech Republik}"}
+@string{ICALP00 = "Proceedings of the 27th International Colloquium on Automata, Languages and Programming ICALP 2000, {\rm Geneva, Switzerland}"}
+@string{ICALP01 = "Proceedings of the 28th International Colloquium on Automata, Languages and Programming ICALP 2001, {\rm Crete, Greece}"}
+
+
+@string{ICFCT = "Proceedings of the International Conference on Foundations of Computation Theory"}
+
+@string{ICICS97 = "Proceedings of the First International Conference on Information and Communications Security 1997, {\rm Beijing, China}"}
+@string{ICICS01 = "Proceedings of the Third International Conference on Information and Communications Security 2001, {\rm Xian, China}"}
+
+
+@string{ICM50 = "Proceedings of the International Congress of Mathematicians 1950"}
+@string{ICM70 = "Proceedings of the International Congress of Mathematicians 1970, {\rm Nice, France}"}
+@string{ICM74 = "Proceedings of the International Congress of Mathematicians 1974"}
+@string{ICM86 = "Proceedings of the International Congress of Mathematicians 1986"}
+@string{ICM90 = "Proceedings of the International Congress of Mathematicians 1990, {\rm Kyoto, Japan}"}
+@string{ICM95 = "Proceedings of the International Congress of Mathematicians 1995"}
+
+
+@string{ISAAC94 = "Proceedings of 5th International Symposium on Algorithms and Computation ISAAC~'94, {\rm Beijing, China}"}
+@string{ISAAC95 = "Proceedings of 6th International Symposium on Algorithms and Computation ISAAC~'95, {\rm Cairns, Australia}"}
+@string{ISAAC98 = "Proceedings of 10th International Symposium on Algorithms and Computation ISAAC~'98, {\rm Taejon, Korea}"}
+@string{ISAAC99 = "Proceedings of 10th International Symposium on Algorithms and Computation ISAAC~'99, {\rm Chennai, India}"}
+@string{ISAAC00 = "Proceedings of 11th International Symposium on Algorithms and Computation ISAAC~'00, {\rm Taipei, Taiwan}"}
+@string{ISAAC01 = "Proceedings of 12th International Symposium on Algorithms and Computation ISAAC~'01, {\rm Chirstchurch, New Zealand}"}
+@string{ISAAC03 = "Proceedings of 14th International Symposium on Algorithms and Computation ISAAC~'03, {\rm Kyoto, Japan}"}
+@string{ISAAC04 = "Proceedings of 15th International Symposium on Algorithms and Computation ISAAC~'04, {\rm Hong Kong, China}"}
+@String{ISAAC10 = "Proceedings of 21st International Symposium on Algorithms and Computation ISAAC~'10, {\rm Jeju Island, Korea}"}
+
+@string{ISSAC71 = "Proceedings 2nd ACM Symposium on Symbolic and Algebraic Manipulation, {\rmfamily Los Angeles~CA}"}
+@string{ISSAC76 = "Proceedings of the 1976 ACM Symposium on Symbolic and Algebraic Computation SYMSAC~'76, {\rmfamily Yorktown Heights~NY}"}
+@string{ISSAC81 = "Proceedings of the 1981 International Symposium on Symbolic and Algebraic Computation ISSAC~'81, {\rmfamily Snowbird~UT}"}
+@string{ISSAC86 = "Proceedings of the 1986 International Symposium on Symbolic and Algebraic Computation ISSAC~'86, {\rmfamily Waterloo, Canada}"}
+@string{ISSAC88 = "Proceedings of the 1988 International Symposium on Symbolic and Algebraic Computation ISSAC~'88, {\rmfamily Rome, Italy}"}
+@string{ISSAC89 = "Proceedings of the 1989 International Symposium on Symbolic and Algebraic Computation ISSAC~'89, {\rmfamily Portland~OR}"}
+@string{ISSAC90 = "Proceedings of the 1990 International Symposium on Symbolic and Algebraic Computation ISSAC~'90, {\rmfamily Tokyo, Japan}"}
+@string{ISSAC91 = "Proceedings of the 1991 International Symposium on Symbolic and Algebraic Computation ISSAC~'91, {\rmfamily Bonn, Germany}"}
+@string{ISSAC92 = "Proceedings of the 1992 International Symposium on Symbolic and Algebraic Computation ISSAC~'92, {\rmfamily Berkeley~CA}"}
+@string{ISSAC93 = "Proceedings of the 1993 International Symposium on Symbolic and Algebraic Computation ISSAC~'93, {\rmfamily Kiev}"}
+@string{ISSAC94 = "Proceedings of the 1994 International Symposium on Symbolic and Algebraic Computation ISSAC~'94, {\rmfamily Oxford,~UK}"}
+@string{ISSAC95 = "Proceedings of the 1995 International Symposium on Symbolic and Algebraic Computation ISSAC~'95, {\rmfamily Montreal, Canada}"}
+@string{ISSAC96 = "Proceedings of the 1996 International Symposium on Symbolic and Algebraic Computation ISSAC~'96, {\rmfamily Z{\"u}rich, Switzerland}"}
+@string{ISSAC97 = "Proceedings of the 1997 International Symposium on Symbolic and Algebraic Computation ISSAC~'97, {\rmfamily Maui~HI}"}
+@string{ISSAC98 = "Proceedings of the 1998 International Symposium on Symbolic and Algebraic Computation ISSAC~'98, {\rmfamily Rostock, Germany}"}
+@string{ISSAC99 = "Proceedings of the 1999 International Symposium on Symbolic and Algebraic Computation ISSAC~'99, {\rmfamily Vancouver, Canada}"}
+@string{ISSAC00 = "Proceedings of the 2000 International Symposium on Symbolic and Algebraic Computation ISSAC~'00, {\rmfamily St. Andrews, Scotland}"}
+@string{ISSAC01 = "Proceedings of the 2001 International Symposium on Symbolic and Algebraic Computation ISSAC~'01, {\rmfamily London, Canada}"}
+@string{ISSAC02 = "Proceedings of the 2002 International Symposium on Symbolic and Algebraic Computation ISSAC~'02, {\rmfamily Lille, France}"}
+@string{ISSAC03 = "Proceedings of the 2003 International Symposium on Symbolic and Algebraic Computation ISSAC~'03, {\rmfamily Philadelphia~PA}"}
+@string{ISSAC04 = "Proceedings of the 2004 International Symposium on Symbolic and Algebraic Computation ISSAC~'04, {\rmfamily Santander, Spain}"}
+@String{ISSAC05 = "Proceedings of the 2005 International Symposium on Symbolic and Algebraic Computation ISSAC~'05, {\rmfamily Beijing, China}"}
+@String{ISSAC06 = "Proceedings of the 2006 International Symposium on Symbolic and Algebraic Computation ISSAC~'06, {\rmfamily Genova, Italy}"}
+@String{ISSAC07 = "Proceedings of the 2007 International Symposium on Symbolic and Algebraic Computation ISSAC~'07, {\rmfamily Waterloo, Ontario, Canada}"}
+@String{ISSAC08 = "Proceedings of the 2008 International Symposium on Symbolic and Algebraic Computation ISSAC~'08, {\rmfamily Hagenberg, Austria}"}
+@String{ISSAC09 = "Proceedings of the 2009 International Symposium on Symbolic and Algebraic Computation ISSAC~'09, {\rmfamily Seoul, Korea}"}
+@String{ISSAC10 = "Proceedings of the 2010 International Symposium on Symbolic and Algebraic Computation ISSAC~'10, {\rmfamily Munich, Germany}"}
+@String{ISSAC11 = "Proceedings of the 2011 International Symposium on Symbolic and Algebraic Computation ISSAC~'11, {\rmfamily San Jose~CA}"}
+@String{ISSAC12 = "Proceedings of the 2012 International Symposium on Symbolic and Algebraic Computation ISSAC~2012, {\rmfamily Grenoble, France}"}
+@String{ISSAC14 = "Proceedings of the 2014 International Symposium on Symbolic and Algebraic Computation ISSAC~'14, {\rmfamily Kobe, Japan}"}
+
+@String{ISCAS02 = "Proceedings of the 2002 IEEE International Symposium on Circuits and Systems, {\rmfamily Phoenix, Arizona, USA}"}
+@String{ISCAS03 = "Proceedings of the 2003 IEEE International Symposium on Circuits and Systems, {\rmfamily Bangkok, Thailand}"}
+
+@String{ISP07 = "Proceedings of the 2007 IEEE Symposium on Security and Privacy, {\rm Oakland, California, USA}"}
+
+@String{ITCS12 = "3rd Innovations in Theoretical Computer Science (ITCS) conference, {\rm Cambridge, Massachusetts}"}
+@String{ITW11 = "Information Theory Workshop (ITW), 2011 IEEE"}
+@String{IWSEC10 = "Proceedings of the 5th International Workshop on Security, {\rm Kobe, Japan, November 2010}"}
+
+@string{LATIN92 = "Proceedings of LATIN~'92, {\rm S\~ao Paulo, Brazil}"}
+@string{LATIN95 = "Proceedings of LATIN~'95, {\rm Valpara{\'{\i}}so, Chile}"}
+@string{LATIN98 = "Proceedings of LATIN~'98, {\rm Campinas, Brazil}"}
+@string{LATIN00 = "Proceedings of LATIN~2000, {\rm Punta del Este, Uruguay}"}
+@string{LATIN02 = "Proceedings of LATIN~2002, {\rm Cancun, Mexico}"}
+@string{LATIN04 = "Proceedings of LATIN~2004, {\rm Buenos Aires, Argentina}"}
+@string{LATIN08 = "Proceedings of LATIN~2008, {\rm B{\'{u}}zios, Rio de Janeiro, Brazil}"}
+@string{LATIN10 = "Proceedings of LATIN~2010, {\rmfamily Oaxaca, Mexico}"}
+@String{LATIN12 = "Proceedings of LATIN~2012, {\rm Arequipa, Peru}"}
+
+@string{MACSYMA77 = "Proceedings of the 1977 MACSYMA Users Conference, {\rm Berkeley~CA}"}
+
+
+@string{MANITOBA72 = "Proceedings of the Second Manitoba Conference on Numerical Mathematics"}
+@string{MANITOBA75 = "Proceedings of the Fifth Manitoba Conference on Numerical Mathematics"}
+
+@string{MFOCS84 = "Proceedings of the 11th International Symposium Mathematical Foundations of Computer Science 1984, {\rm Praha, Czechoslovakia}"}
+@string{MFOCS86 = "Proceedings of the 12th International Symposium Mathematical Foundations of Computer Science 1986, {\rm Bratislava, Czechosolvakia}"}
+@string{MFOCS98 = "Proceedings of the 23rd International Symposium on Mathematical Foundations of Computer Science 1998, {\rm Brno, Czech Republic}"}
+@string{MFOCS00 = "Proceedings of the 25th International Symposium on Mathematical Foundations of Computer Science 2001, {\rm Bratislava, Slovakia}"}
+@string{MFOCS01 = "Proceedings of the 26th International Symposium on Mathematical Foundations of Computer Science 2001, {\rm Marianske Lazne, Czech Republic}"}
+
+@String{MSW02 = "Proceedings of the Multimedia and Security Workshop at ACM Multimedia, {\rm Juan-les-Pins, France}"}
+
+@string{PASCO97 = "Parallel Symbolic Computation PASCO~'97, {\rm Maui, Hawaii}"}
+
+@String{PKC99 = "2nd International Workshop on Practice and Theory in Public Key Cryptography, {\rm Kamakura, Japan}"}
+@String{PKC04 = "7th International Workshop on Practice and Theory in Public Key Cryptography, {\rm Singapore}"}
+@String{PKC05 = "8th International Workshop on Practice and Theory in Public Key Cryptography, {\rm Switzerland}"}
+@String{PKC10 = "13th International Conference on Practice and Theory in Public Key Cryptography, {\rm Paris, France}"}
+@String{PKC11 = "14th International Conference on Practice and Theory in Public Key Cryptography, {\rm Taormina, Italy}"}
+@String{PKC14 = "17th International Conference on Practice and Theory in Public-Key Cryptography, {\rm Buenos Aires, Argentina}"}
+
+@String{RTO02 = "RTO HFM Symposium on ``The Role of Humans in Intelligent and Automated Systems'', {\rm Warsaw, Poland}"}
+
+
+@String{SAC01 = "8th Annual International Workshop, Selected Areas in Cryptography 2001, {\rm Toronto, Ontario, Canada}"}
+@String{SAC02 = "9th Annual International Workshop, Selected Areas in Cryptography 2002, {\rm St. John's, Newfoundland, Canada}"}
+@String{SAC03 = "10th Annual International Workshop, Selected Areas in Cryptography 2003, {\rm Ottawa, Alberta, Canada}"}
+@String{SAC09 = "16th Annual International Workshop, Selected Areas in Cryptography 2009, {\rm Calgary, Alberta, Canada}"}
+@String{SAC14 = "21st International Conference, Selected Areas in Cryptography 2014, {\rm Montreal, QC, Canada}"}
+
+@String{SETA08 = "Proceedings of the 5th International Conference on Sequences and Their Applications, {\rm Lexington~KY}"} %ISBN: 978-3-540-85911-6
+@String{SETA10 = "Proceedings of the 6th International Conference on Sequences and Their Applications, {\rm Paris, France}"}
+
+
+@String{SNC09 = "Proceedings of the 2009 conference on Symbolic numeric computation, {\rm Kyoto, Japan}"} %ISBN: 978-1-60558-664-9
+
+@String{SODA97 = "Eighth Annual ACM-SIAM Symposium on Discrete Algorithms, {\rm New Orleans~LA}"}
+@String{SODA11 = "Proceedings of the Twenty-Second Annual ACM-SIAM Symposium on Discrete Algorithms {\rm San Francisco~CA}"}
+
+@string{STOC69 = "Proceedings of the First Annual ACM Symposium on Theory of Computing, {\rm Marina del Rey~CA}"}
+@string{STOC70 = "Proceedings of the Second Annual ACM Symposium on Theory of Computing, {\rm Northampton~MA}"}
+@string{STOC71 = "Proceedings of the Third Annual ACM Symposium on Theory of Computing, {\rm Shaker Heights~OH}"}
+@string{STOC72 = "Proceedings of the Fourth Annual ACM Symposium on Theory of Computing, {\rm Denver~CO}"}
+@string{STOC73 = "Proceedings of the Fifth Annual ACM Symposium on Theory of Computing, {\rm Austin~TX}"}
+@string{STOC74 = "Proceedings of the Sixth Annual ACM Symposium on Theory of Computing, {\rm Seattle~WA}"}
+@string{STOC75 = "Proceedings of the Seventh Annual ACM Symposium on Theory of Computing, {\rm Albuquerque~NM}"}
+@string{STOC76 = "Proceedings of the Eighth Annual ACM Symposium on Theory of Computing, {\rm Hershey~PA}"}
+@string{STOC77 = "Proceedings of the Ninth Annual ACM Symposium on Theory of Computing, {\rm Boulder~CO}"}
+@string{STOC78 = "Proceedings of the Tenth Annual ACM Symposium on Theory of Computing, {\rm San Diego~CA}"}
+@string{STOC79 = "Proceedings of the Eleventh Annual ACM Symposium on Theory of Computing, {\rm Atlanta~GA}"}
+@string{STOC80 = "Proceedings of the Twelfth Annual ACM Symposium on Theory of Computing, {\rm Los~Angeles~CA}"}
+@string{STOC81 = "Proceedings of the Thirteenth Annual ACM Symposium on Theory of Computing, {\rm Milwaukee~WI}"}
+@string{STOC82 = "Proceedings of the Fourteenth Annual ACM Symposium on Theory of Computing, {\rm San Francisco~CA}"}
+@string{STOC83 = "Proceedings of the Fifteenth Annual ACM Symposium on Theory of Computing, {\rm Boston~MA}"}
+@string{STOC84 = "Proceedings of the Sixteenth Annual ACM Symposium on Theory of Computing, {\rm Washington~DC}"}
+@string{STOC85 = "Proceedings of the Seventeenth Annual ACM Symposium on Theory of Computing, {\rm Providence~RI}"}
+@string{STOC86 = "Proceedings of the Eighteenth Annual ACM Symposium on Theory of Computing, {\rm Berkeley~CA}"}
+@string{STOC87 = "Proceedings of the Nineteenth Annual ACM Symposium on Theory of Computing, {\rm New York}"}
+@string{STOC88 = "Proceedings of the Twentieth Annual ACM Symposium on Theory of Computing, {\rm Chicago~IL}"}
+@string{STOC89 = "Proceedings of the Twenty-first Annual ACM Symposium on Theory of Computing, {\rm Seattle~WA}"}
+@string{STOC90 = "Proceedings of the Twenty-second Annual ACM Symposium on Theory of Computing, {\rm Baltimore~MD}"}
+@string{STOC91 = "Proceedings of the Twenty-third Annual ACM Symposium on Theory of Computing, {\rm New Orleans~LA}"}
+@string{STOC92 = "Proceedings of the Twenty-fourth Annual ACM Symposium on Theory of Computing, {\rm Victoria, British Columbia, Canada}"}
+@string{STOC93 = "Proceedings of the Twenty-fifth Annual ACM Symposium on Theory of Computing, {\rm San Diego~CA}"}
+@string{STOC94 = "Proceedings of the Twenty-sixth Annual ACM Symposium on Theory of Computing, {\rm Montr\'{e}al, Qu\'{e}bec, Canada}"}
+@string{STOC95 = "Proceedings of the Twenty-seventh Annual ACM Symposium on Theory of Computing, {\rm Las Vegas~NV}"}
+@string{STOC96 = "Proceedings of the Twenty-eighth Annual ACM Symposium on Theory of Computing, {\rm Philadelphia~PA}"}
+@string{STOC97 = "Proceedings of the Twenty-ninth Annual ACM Symposium on Theory of Computing, {\rm El Paso~TX}"}
+@string{STOC98 = "Proceedings of the Thirtieth Annual ACM Symposium on Theory of Computing, {\rm Dallas~TX}"}
+@string{STOC99 = "Proceedings of the Thirty-first Annual ACM Symposium on Theory of Computing, {\rm Atlanta~GA}"}
+@string{STOC00 = "Proceedings of the Thirty-second Annual ACM Symposium on Theory of Computing, {\rm Portland~OR}"}
+@string{STOC01 = "Proceedings of the Thirty-third Annual ACM Symposium on Theory of Computing, {\rm Hersonissos, Crete, Greece}"}
+@string{STOC05 = "Proceedings of the Thirty-seventh Annual ACM Symposium on Theory of Computing, {\rm Baltimore, Maryland, USA}"}
+@String{STOC07 = "Proceedings of the Thirty-ninth Annual ACM Symposium on Theory of Computing, {\rm San Diego, California, USA}"}
+@String{STOC08 = "Proceedings of the Fourtieth Annual ACM Symposium on Theory of Computing, {\rm Victoria, BC, Canada}"}
+@String{STOC09 = "Proceedings of the Fourty-first Annual ACM Symposium on Theory of Computing, {\rm Bethesda, Maryland, USA}"}
+@String{STOC10 = "Proceedings of the Fourty-second Annual ACM Symposium on Theory of Computing, {\rm Cambridge, MA, USA}"}
+@String{STOC11 = "Proceedings of the Fourty-third Annual ACM Symposium on Theory of Computing, {\rm San Jose, California, USA}"}
+@String{STOC13 = "Proceedings of the Fourty-fifth Annual ACM Symposium on Theory of Computing, {\rm Palo Alto, CA, USA}"}
+
+@String{SYMSAC76 = "Proceedings of the third ACM Symposium on Symbolic and Algebraic Computation"} %%%ORT unbekannt
+
+@String{SYNASC12 = "14th International Symposium on Symbolic and Numeric Algorithms for Scientific Computing SYNASC 2012, {\rm Timisoara, Romania}"} %ISBN: 978-1-4673-5026-6
+
+@String{TCC09 = "Sixth Theory of Cryptography Conference, {\rm San Francisco, CA, USA}"}
+@String{TCC10 = "Seventh IACR Theory of Cryptography Conference, {\rm Z{\"{u}}rich, Switzerland}"}
+
+@String{VCRYPT06 = "Progress in Cryptology: First International Conference on Cryptology in Vietnam, VIETCRYPT 2006, {\rm Hanoi, Vietnam}"}
+
+@String{WISTP10 = "4th IFIP WG 11.2 International Workshop, WISTP 2010 {\rm Passau, Germany}"}
+
+@String{YACC14 = "Yet Another Conference on Cryptography, YACC 2014 {\rm Toulon, France}"}
+
+
+===========================================================================
+ H{\"{a}}ufig vorkommende Orte ;)
+===========================================================================
+@string{NY = "New~York"}
+
+===========================================================================
+ Verlage
+===========================================================================
+%%% A %%%
+@string{AMCT = "Mathematisch Centrum, Amsterdam"}
+@String{AGJSC = "Arab Gulf Journal of Scientific Research"}
+@string{AMS = "American Mathematical Society"}
+@String{AMS/IP = "The American Mathematical Society and International Press"}
+@string{ACM = "ACM Press"}
+@string{ADW = "Akademie der Wissenschaften"}
+@string{ADWL-GSK51 = "Akademie der Wissenschaften und der Literatur, Abhandlungen der geistes- und sozialwissenschaftlichen Klasse, Jahrgang 1951"}
+@string{AP = "Academic Press"}
+@string{APPAMS = "Abstracts of papers presented to the American Mathematical Society"}
+@string{AV = "Akademie-Verlag"}
+@string{AW = "Addison-Wesley"}
+%%% B %%%
+@String{BA = "Bundesanzeiger"} % ISSN = "0344-7634",
+@string{BB = "Birkh{\"{a}}user Verlag"}
+@string{BIW = "BI Wissenschaftsverlag"}
+@String{BV = "Braunschweig F. Vieweg"}
+%%% C %%%
+@String{CEDAM = "Casa Editrice Dott. Antonio Milani"}
+@String{CH = "Chapman \& Hall/CRC"}
+@string{CPUC = "Chelsea Publishing Company"}
+@string{CRC = "CRC Press"}
+@string{CUP = "Cambridge University Press"}
+%%% D %%%
+@String{DG = "De Gruyter"}
+@string{DP = "Dover Publications, Inc."}
+%%% E %%%
+@string{ELS = "Elsevier"} %"American Elsevier Publishing Company"??
+@string{ELSSP = "Elsevier Science Publishers B.V."}
+%%% F %%%
+@string{FD = "Firmin Didot"}
+@string{FI = "Fundamenta Informaticae"}
+@string{FM = "Fundamenta Mathematicae"}
+@string{FRMN = "Freeman"}
+%%% G %%%
+@string{GV = "Gauthier-Villars"}
+@String{GI = "Gesellschaft f{\"{u}}r Informatik"}
+%%% H %%%
+@string{HBJ = "Harcourt Brace Jovanovich"}
+@String{HUP = "Harvard University Press"}
+%%% I %%%
+@string{IEEECSP = "IEEE Computer Society Press"}
+@string{IEEEPR = "IEEE Press"}
+@String{IMS = "Institute of Mathematical Statistics"}
+@String{IJIS = "International Journal of Information Security"}
+%%% J %%%
+@string{JRC = "Johnson Reprint Co"}
+@string{JUS = "Julius Springer"} % Verlag von JS
+%%% K %%%
+@string{KAP = "Kluwer Academic Publishers"}
+@string{KGW = "K{\"{o}}nigliche Gesellschaft der Wissenschaften"}
+@string{KGWG = KGW # " zu G{\"{o}}ttingen"}
+@String{KOELLEN = "K{\"{o}}llen Druck+Verlag"}% address="Bonn",
+%%% L %%%
+%%% M %%%
+@string{MD = "Marcel Dekker, Inc."}
+@string{MH = "McGraw-Hill"}
+@string{MIT = "MIT~Press"}
+@string{MKP = "Morgan Kaufmann Publishers"}
+%%% N %%%
+@string{NH = "North-Holland"}
+%%% O %%%
+@string{OUP = "Oxford University Press"}
+@string{OR = "O'Reilly Media"}
+%%% P %%%
+@string{PERG = "Pergamon Press"}
+@string{PH = "Prentice-Hall, Inc."}
+@string{PLNM = "Plenum Press"}
+@string{PUF = "Presses Universitaires de France"}
+@string{PUP = "Princeton University Press"}
+%%% Q %%%
+%%% R %%%
+@string{REI = "Reidel"}
+%%% S %%%
+@string(SIAM = "Society for Industrial and Applied Mathematics")
+@string{SS = "Simon \& Schuster"}
+@string{SV = "Springer-Verlag"}
+@String{SWV = "Spektrum der Wissenschaft Verlagsgesellschaft mbH"}
+%%% T %%%
+@string{TV = "B.~G. Teubner"}
+%%% U %%%
+@string{UCP = "University of Chicago Press"}
+@string{UM = "Utilitas Mathematica"}
+%%% V %%%
+@String{VHH = "Verlag Heinz Heise GmbH \& Co KG"}
+@string{VN = "Van~Nostrand Reinhold"}
+@string{VS = "Friedrich Vieweg \& Sohn"}
+%%% W %%%
+@string{WS = "John Wiley \& Sons"}
+@String{WSP = "World Scientific Publishing Co. Pte. Ltd."}
+%%% X %%%
+%%% Y %%%
+%%% Z %%%
+===========================================================================
+ Journals (+ISSN als Kommentar)
+===========================================================================
+%%% A %%%
+@string{ABR = "The American Benedictine Review"}
+@string{AA = "Acta Arithmetica"}
+@string{AAECC = "Applicable Algebra in Engineering, Communication and Computing"}
+@string{AAM = "Advances in Applied Mathematics"}
+@String{AAP = "Annals of Applied Probability"} %
+@string{AASF = "Annales Academiae Scientiarum Fennicae"}
+@string{AASFI = "Annales de l'Acad{\'e}mie des Sciences de Finlande"}
+@string{AASP = "American Antiquarian Society Proceedings, Worcester, Mass."}
+@string{ABWG = "Abhandlungen der Braunschweigischen Wissenschaftlichen Gesellschaft"}
+@string{AC = "Ars Combinatoria"}
+@string{ACB = "Australian Computer Bulletin"} % kommt nicht in der refs.bib vor !!!
+@String{ACCA = "ACM Communications in Computer Algebra"}
+@String{ACTAAA = "Acta Academiae Aboensis. Mathematica et Physica"} % ISSN = "0001-5105"
+@string{ACTAM = "Acta Mathematica"}% ISSN = "0001-5962",
+@string{ACTAMS = "Acta Mathematica Sinica"}
+@String{AOC = "Annals of Combinatorics"}
+@string{ADM = "Annals of Discrete Mathematics"}
+@String{AEM = "Aequationes Mathematicae"} %ISSN = "0001-9054 (Print) 1420-8903 (Online)",
+@string{AFAS = "Association Fran{\c{c}}aise pour l'Avancement des Sciences; Comptes Rendus"}
+@String{ADP = "Archiv f{\"{u}}r deutsche Postgeschichte"}
+@String{AGB = "Archiv f{\"{u}}r Geschichte des Buchwesens"}
+@string{AGMNT = "Archiv f{\"u}r Geschichte der Mathematik, der Naturwissenschaften und der Technik"}
+@string{AHC = "Annals of the History of Computing"}
+@string{AHES = "Archive of the History of Exact Sciences"}
+@string{AHR = "The American Historical Review"}
+@String{AHVUA = "Archiv des Historischen Vereins von Unterfranken und Aschaffenburg"}
+@string{AI = "Acta Informatica"}% ISSN = "0001-5903 (Print) 1432-0525 (Online)",
+@String{AiCM = "Advances in Computational Mathematics"}% ISSN = "1019-7168 (Print) 1572-9044 (Online)",
+@string{AIM = "Advances in Mathematics"}
+@string{AIN = "Artificial Intelligence"}
+@string{AIPHO = "Annuaire de l'Institut de Philologie et d'Histoires Orientales"}
+@string{AJM = "American Journal of Mathematics"}% ISSN = "1080-6377",
+@string{AK = "Archiv f{\"u}r Kriminologie"}
+@string{AKGWG = "Abhandlungen der K{\"o}niglichen Gesellschaft der`Wissenschaften zu G{\"o}ttingen"}
+@string{AKK = "Archiv f{\"u}r Kriminalanthropologie und Kriminalistik"}
+@string{ALIT = "American Literature"}
+@string{ALG = "Algorithmica"}
+@string{AM = "Annals of Mathematics"}
+@String{AMC = "Applied Mathematics and Computation"}
+@string{AMII = "Annals of Mathematics, Series II"}
+@String{AMK = "Archiv f{\"{u}}r mittelrheinische Kirchengeschichte"}
+@string{AML = "Applied Mathematics Letters"}
+@string{AMM = "The American Mathematical Monthly"}% ISSN = "0002-9890",
+@string{AMST = "American Mathematical Society Translations"}
+@string{AMST2 = "American Mathematical Society Translations, Series 2"}
+@string{ANMS = "Annals of Mathematical Statistics"}
+@String{ANT = "Algebra \&{} Number Theory"}
+@string{AOAW = "Anzeiger der {\"{O}}sterreichischen Akademie der Wissenschaften, mathematisch-naturwissenschaftliche Klasse"}
+@string{ARAL = "Atti della Reale Accademia dei Lincei"}
+@string{ARAM = "Archiv der reinen und angewandten Mathematik"}
+@string{ARAST = "Atti della Reale Accademia della Scienze di Torino"}
+@string{ARCHM = "Archiv der Mathematik"}% ISSN = "0003-889X",
+@string{ARCP = "Annual Reviews of Computational Physics"}
+@string{ARCS = "Annual Review of Computer Science"}
+@String{AS = "Annals of Statistics"}
+@string{ASAE = "Annales du Service des Antiquites de l'Egypte"}
+@String{ASENS = "Annales Scientifiques de l'{\'{E}}cole Normale Sup{\'{e}}rieure"} % ISSN ="0012-9593"
+@string{ASAU = "Analele stiintifice ale Universitatii ``Al. I. Cuza'' din Iasi"}
+@string{ASB = "ACM~SIGSAM Bulletin"}
+@String{ASCB = "ACM SIGCSE Bulletin"}
+@string{ASI = "Archivio Storico Italiano"}
+@string{ASMS = "Acta Scientarum Mathematicarum Szegediensis"}
+@String{AST = "Ast{\'{e}}risque"}% ISSN = "0303-1179",
+@string{ATMS = "ACM Transactions on Mathematical Software"}
+@String{ATISS = "ACM Transactions on Information and System Security"}
+@string{AZ = "Archivalische Zeitschrift"}
+%%% B %%%
+@string{BAH = "Bolet{\'i}n de la Academ{\'i}a de la Historia, Buenos Aires"}
+@string{BAMS = "Bulletin of the American Mathematical Society"}
+@String{BNAMS = "Bulletin (New Series) of the American Mathematical Society"}
+@string{BAUSMS = "Bulletin of the Australian Mathematical Society"}
+@string{BBSSMF = "Bulletin Biblio. Storia Sci. Mat. Fis."}
+@string{BIMA = "Bulletin of the Institute of Mathematics and its Applications"}
+@string{BIT = "BIT"}
+@string{BJNT = "Bordeaux Journal of Number Theory"}
+@string{BLMS = "Bulletin of the London Mathematical Society"}
+@String{BMC = "BMC Bioinformatics"}
+@string{BNAMS = "Bulletin (New Series) of the American Mathematical Society"}
+@string{BRICS = "Basic Research in Computer Science"}
+@string{BSAF = "Bulletin de la {Soci\'et\'e} des Antiquaires de France, Paris"}
+@string{BSE = "Bulletin de la {Soci\'et\'e} d'Encouragement pour L'Industrie Nationale"}
+@string{BARB = "Bulletins de l'Acad{\'{e}}mie royale de Belgique, "}
+@String{BGSL = "Beitr{\"{a}}ge zur Geschichte der deutschen Sprache und Literatur"}
+@string{BSL = "Beitr{\"a}ge zur deutschen Sprache und Literatur"}
+@string{BSMB = "Bulletin de la {Soci\'et\'e} {Math\'ematique} de Belgique, S{\'e}r.~A"}
+@string{BSMBB = "Bulletin de la {Soci\'et\'e} {Math\'ematique} de Belgique, S{\'er}.~B"}
+@string{BSMF = "Bulletin des sciences math{\'e}matiques F{\'e}russac"}
+@string{BSTJ = "Bell System Technical Journal"}
+%%% C %%%
+@string{CA = "Communications in Algebra"}
+@string{CACM = "Communications of the ACM"}% ISSN = "0001-0782"
+@string{CAD = "Computer-Aided Design"}
+@string{CAL = "Calcolo"}
+@string{CAS = "Computers \&{} Security"}
+@string{CASP = "Commentarii academiae scientiarum imperalis Petropolitanae"}
+@string{CASPP = "Commentarii Academiae Scientiarum Petropolitanae"}
+@String{CB = "CryptoBytes"}
+@string{CC = "computational complexity"}
+@String{CCO = "Cryptography anc Communications"}% ISSN = "1936-2447 (Print) 1936-2455 (Online)"
+@String{CE = "Centaurus. International Magazine of the History of Mathematics, Science, and Technology"}
+@String{CG = "Computers \&{} Graphics"}
+@string{CHJM = "Chinese Journal of Mathematics"}
+@String{CIC = "Cistercienser Chronik"}% ISSN = "0379-8291"
+@string{CJ = "The Computer Journal"}
+@string{CJM = "Canadian Journal of Mathematics"}
+@String{CJTCS = "Chicago Journal of Theoretical Computer Science"} %ISSN: 1073-0486
+@string{CL = "Cryptologia"}
+@String{CLING = "Computational Linguistics"}
+@string{CRYENG = "Cryptographic Engineering"}
+@string{CM = "Colloquium Mathematicum"}
+@string{CMA = "Computers \&{} Mathematics with Applications"}% ISSN = "0898-1221"
+@string{CMB = "Canadian Mathematical Bulletin"}
+@string{CMH = "Commentarii Mathematici Helvetici"}% ISSN ="0010-2571"
+@string{CN = "Congressus Numerantium"}
+@string{COMB = "Combinatorica"}
+@string{CPCOMP = "Combinatorics, Probability and Computing"}
+@string{COCO = "Computer Communications"}
+@string{COMP = "Computing"}
+@string{COS = "Cosmopolitan Magazine, New York"}
+@string{CPAM = "Communications on Pure and Applied Mathematics"}
+@string{CPMF = "{\v C}asopis pro p{\v e}stov{\'an\'\i} matematiky a fysiky"}
+@string{CPC = "Computer Physics Commun."} % kommt nicht in der refs.bib vor !!!
+@string{CRAS = "Comptes Rendus des S{\'{e}}ances de l'{Acad\'{e}mie} des Sciences"}
+@String{CRHAS = "Comptes Rendus Hebdomadaires des S{\'{e}}ances de l'Acad{\'{e}}mie des Sciences"} % ISSN ="0001-4036"
+@string{CRASP = "Comptes Rendus de l'Acad{\'{e}}mie des Sciences Paris"}
+@string{CRASPI = "Comptes Rendus de l'Acad{\'{e}}mie des Sciences Paris, s{\'{e}}rie I"}
+%%% D %%%
+@string{DAM = "Discrete Applied Mathematics"}
+@String{DAN = "Dokl. Akad. Nauk SSSR"}
+@string{DANcyr = "{\cyr Do\-kla\-dy Aka\-de\-mii Nauk SSSR}"}
+@string{DANru = "{\slshape\foreignlanguage{russian}{Do\-kla\-dy Aka\-de\-mii Nauk SSSR}}"}
+@string{DANengl = "Doklady Akademii Nauk SSSR English translation: Soviet Mathematics, Doklady"}
+@string{DCC = "Designs, Codes and Cryptography"}
+@String{DCG = "Discrete \&{} Computational Geometry"}
+@String{DesCC = "Designs Codes Cryptography"}
+@string{DM = "Discrete Mathematics"}
+@String{DemM = "Demonstratio Mathematica"}
+@String{DMA = "Discrete Mathematics and Applications"}
+@string{DIMACS = "DIMACS Series in Discrete Mathematics and Theoretical Computer Science"}
+@string{DMJ = "Duke Mathematical Journal"}
+@string{DOM = "Documenta Mathematica"}
+@string{DPA = "Deutsches Polizei-Archiv"}
+@string{DSW = "Der Stein der Weisen"}
+@String{DuD = "DuD --- Datenschutz und Datensicherheit"}% ISSN = "",
+%%% E %%%
+@string{EIK = "Elektronische Informationsverarbeitung und Kybernetik"}
+@String{ELA = "Electronic Journal of Linear Algebra"}% ISSN = "1081-3810",
+@String{ECNT = "INTEGERS: Electronic Journal of Combinatorial Number Theory"} %ISSN 1553-1732
+@string{ELEM = "Elemente der Mathematik"}% ISSN = "0013-6018",
+@string{ELETT = "Electronics Letters"}
+@string{EM = "L'Enseignement Math{\'{e}}matique"}
+@string{ET = "Educational Times"}
+@string{EXM = "Expositiones Mathematicae"}
+%%% F %%%
+@String{FAA = "Functional Analysis and Its Applications"} %ISSN 0016-2663 (Print) 1573-8485 (Online)
+@String{FIC = "Fields Institute Communications"}% ISSN = "1069-5265",
+@string{FFA = "Finite Fields and Their Applications"}
+@String{FOCUS = "FOCUS Magazin"}
+@string{FQ = "Fibonacci Quarterly"}
+@string{FM = "Forum mathematicum"}% ISSN = "0933-7741",
+@String{FTTCS = "Foundations and Trends in Theoretical Computer Science"}
+%%% G %%%
+@string{GC = "Le G{\`{e}}nie Civil"}
+@string{GM = "The Gentleman's Magazine"}
+@string{GN = "G{\"{o}}ttinger Nachrichten"}% Achtung, besser NKGWG oder NAWG!
+%%% H %%%
+@String{HL = "Humanistica Lovaniensia"}
+%%% I %%%
+@string{IAN = "{\cyr Izvestiya Akademi\u\i\ Nauk SSSR, Seriya Matematicheskaya}"}
+@string{IANE = "{\cyr Izvestiya Akademi\u\i\ Nauk SSSR, Seriya Matematicheskaya} (Izvestiya Akademi\u\i\ Nauk SSSR, Mathematical Series)"}
+@string{IBMJ = "IBM Journal of Research and Development"}
+@string{IBMSJ = "IBM Systems Journal"}
+@string{IC = "Information and Computation"}
+@string{ICTRL = "Information and Control"}
+@string{IEICE-TFE = "IEICE Transactions on Fundamentals of Electronics, Communications and Computer Sciences, Series A (UK)"}
+@string{IEEE-AHC = "IEEE Annals of the History of Computing"}
+@string{IEEE-EC = "IEEE Transactions on Electronic Computers"}
+@string{IEEE-TSE00 = "IEEE Transactions on Software Engineering, 2000"}
+@string{IEEE-IT = "IEEE Transactions on Information Theory"}
+@string{IEEE-SIT = "IEEE International Symposium on Information Theory"}
+@string{IEEE-JSAC = "IEEE Journal on Selected Areas in Communications"}
+@string{IEEE-TC = "IEEE Transactions on Computers"}
+@string{IEEE-TCS = "IEEE Transactions on Circuits Systems"}
+@String{IEEE-TIP = "IEEE Transactions on Image Processing"}
+@String{IEEE-TSP = "IEEE Transactions on Signal Processing"}
+@string{IEEP = "IEE Proceedings---Computers and Digital Techniques"}
+@String{IJAC = "International Journal of Algebra and Computation"}
+@String{IJACT = "International Journal of Applied Cryptography"}% ISSN = "1753-0571 (online), 1753-0563 (print)",
+@string{IJCM = "International Journal of Computer Mathematics"}
+@String{IJHS = "Indian Journal of History of Science"}
+@string{IJM = "Illinois Journal of Mathematics"}
+@string{IJMMS = "International Journal of Mathematics and Mathematical Sciences"}
+@String{IJNS = "International Journal of Network Security"}
+@String{IJNT = "International Journal of Number Theory"}
+@String{IJQC = "International Journal of Quantum Chemistry"}
+@String{IJQI = "International Journal of Quantum Information"} %ISSN = "0219-7499 (Print) 1793-6918 (Online)",
+@String{IJTP = "International Journal of Theoretical Physics"} %ISSN = "0020-7748 (Print) 1572-9575 (Online)",
+@string{IM = "Indagationes Mathematicae"}
+@string{IMRN = "International Mathematics Research Notices"}
+@string{INVM = "Inventiones mathematicae"}
+@string{IPL = "Information Processing Letters"}
+@string{IR = "International Review, New York"}
+@String{IS = "Informatik-Spektrum"} %ISSN: 0170-6012 (gedruckte Version), %ISSN: 1432-122X (elektronische Version)
+@String{ISC = "Information Sciences"}
+
+
+%%% J %%%
+@string{JALG = "Journal of Algebra"}% ISSN = "0021-8693",
+@string{JA = "Journal of Algorithms"}% ISSN = "0196-6774",
+@string{JACM = "Journal of the~ACM"}
+@string{JAFCM = "Journal of the Association for Computing Machinery"}
+@String{JAMC = "Journal of Applied Mathematics and Computing"}
+@string{JAMS = "Journal of the American Mathematical Society"}
+@String{JAMS = "Journal of the Australian Mathematical Society"}
+@string{JAMSA = "Journal of the Australian Mathematical Society, Series~A"}% ISSN = "0263-6115",
+@string{JAR = "Journal of Automated Reasoning"}
+@String{JASA = "Journal of the American Statistical Association"}%
+@string{JC = "Journal of Cryptology"}
+@string{JCAM = "Journal of Computational and Applied Mathematics"}% ISSN = "0377-0427",
+@string{JCMPLX = "Journal of Complexity"}% ISSN = "0885-064X",
+@string{JCP = "Journal of Computational Physics"}
+@string{JCSS = "Journal of Computer and System Sciences"}
+@string{JCTA = "Journal of Combinatorial Theory, Series~A"}
+@string{JCTB = "Journal of Combinatorial Theory, Series~B"}
+@string{JDMV = "Jahresberichte der DMV"}
+@String{JEA = "The Journal of Egyptian Archaeology"}
+@string{JEGP = "The Journal of English and Germanic Philology, Urbana, Illinois"}
+@String{JEMS = "Journal of the European Mathematical Society"}
+@string{JEP = "Journal de l'{\'{E}}cole Polytechnique"}
+@string{JFI = "Journal of the Franklin Institute"}
+@String{JIH = "The Journal of Intelligence History"}
+@string{JIOS = "Journal of Information and Optimization Sciences"}
+@string{JIMS = "Journal of the Indian Mathematical Society"}
+@String{JIPAM = "Journal of Inequalities in Pure and Applied Mathematics"}
+@String{JJSSAC = "Journal of Japan Society for Symbolic and Algebraic Computation"}
+@string{JLMS = "Journal of the London Mathematical Society"}
+@String{JMC = "Journal of Mathematical Cryptology"}
+@String{JMI = "Journal of Math-for-industry"}
+@string{JMPA = "Journal de {Math\'{e}matiques} Pures et {Appliqu\'{e}es}"}
+@string{JMPAI = "Journal de {Math\'{e}matiques} Pures et {Appliqu\'{e}es}, I s{\'e}rie"}
+@string{JNAIE = "Journal of Nanjing Aeronautical Institute (English edition)"}
+@String{JNCA = "Journal of Network and Computer Applications"}
+@string{JNT = "Journal of Number Theory"}
+@string{JPAA = "Journal of Pure and Applied Algebra"} % ISSN = "0022-4049",
+@string{JRAM = "Journal f{\"{u}}r die reine und angewandte Mathematik"}% ISSN = "0075-4102", % Crelle!
+@string{JRM = "Journal of Recreational Mathematics"}
+@string{JRNBS = "Journal of Research of the National Bureau of Standards"}
+@string{JS = "The Journal of Supercomputing"}
+@string{JSC = "Journal of Symbolic Computation"}% ISSN = "0747-7171",
+@string{JSH = "The Journal of Southern History"}
+@string{JSL = "Journal of Symbolic Logic"}
+@String{JSSEA = "Journal of the Society for the Study of Egyptian Antiquities"}%ISSN 0383-9753
+@String{JTN = "Journal de Th{\'{e}}orie des Nombres de Bordeaux"}
+@string{JSM = "Journal des Sciences Militaires"}
+@String{JSA = "Journal of Systems Architecture"} %ISSN = "1383-7621",
+%%% K %%%
+@string{KL = "Knowledge, London"}
+@string{KM = "Kriminalistische Monatshefte"}
+@string{KR = "Kriminalistische Rundschau"}
+%%% L %%%
+@string{LAA = "Linear Algebra and its Applications"}
+@string{LAC = "L'Antiquit{\'e} Classique, Bruxelles"}
+@string{LD = "The Literary Digest"}
+@string{LICC = "L'Interm{\'{e}}diaire des Chercheurs et Curieux"}
+@String{LMA = "Linear and Multilinear Algebra"}
+@String{LMSJCM = "LMS Journal of Computation and Mathematics"}
+%%% M %%%
+@string{MA = "Mathematische Annalen"}% ISSN = "0025-5831",
+@string{MAA = "Mathematical Association of America"}
+@String{MAMA = "Manuscripta Mathematica"}
+@String{MAMATH = "manuscripta mathematica"}% ISSN = "0025-2611",
+@string{MARS = "M\'{e}moires de l'{Acad\'{e}mie} Royale des Sciences"}
+@string{MASB = "{M\'{e}moires} de l'{Acad\'{e}mie} des Sciences de Berlin"}
+@string{MASBB = "{M\'{e}moires} de l'{Acad\'{e}mie} des Sciences et Belles-Lettres de Berlin"}
+@string{MASBD = "M{\'{e}}moires de l'Acad{\'{e}}mie des Sciences, Arts et Belles-Lettres de Dijon"}
+@string{MAMS = "Memoirs of the " # AMS}
+@string{MATH = "Mathematika"}
+@string{MATHSCI = "Mathematical Scientist"}
+@string{MC = "Mathematics of Computation"}
+@string{MG = "Mathematical Gazette"}% ISSN = "0025-5572",
+@string{MI = "The Mathematical Intelligencer"}
+@string{MIOG = "Mittheilungen des Instituts f{\"{u}}r Oesterreichische Geschichtsforschung"}
+@String{MJ = "The Mathematica Journal"}
+@string{MJOU = "Mathematical Journal of Okayama University"}
+@string{MKPAW = "Monatsberichte der {K\"oniglich} Preussischen Akademie der Wissenschaften, Berlin"}
+@string{MM = "Mathematics Magazine"}%CO2014 Korrektur: Mathematics statt Mathematical
+@string{MMA = "Monatshefte f{\"{u}}r Mathematik"}% ISSN = "0026-9255, 1436-5081",
+@string{MMGH = "Mitt. Math. Ges. Hamburg"} % kommt nicht in der refs.bib vor !!!
+@string{MMJ = "Michigan Mathematical Journal"}
+@string{MMP = "Monatshefte fuer Mathematik und Physik"} % f{\"u}r (->bie91)
+@string{MN = "Mathematical Notes"}
+@string{MNACH = "Mathematische Nachrichten"}% ISSN = "0025-584X",
+@String{MOR = "Mathematics of Operations Research"}
+@string{MP = "Mathematical Papers"}
+@string{MQET ="Mathematical Questions and Solutions from the Educational Times"}
+@string{MRL ="Mathematical Research Letters"}
+@String{MSEM = "Mathematische Semesterberichte"}
+@string{MS = "Matematiceskij Sbornik"}
+@string{MST = "Mathematical Systems Theory"}
+@string{MTAC = "Mathematical Tables and other Aids to Computation"}
+@string{MUSSRS = "Mathematics of the USSR Sbornik"}
+@string{MV = "{\cyr Matematichki Vesnik} (Matematicki Vesnik)"}
+@string{MW = "Milit{\"{a}}r--Wochenblatt"}
+@string{MZ = "Mathematische Zeitschrift"}% ISSN = "0025-5874",
+%%% N %%%
+@string{NA = "Neues Archiv der Gesellschaft f{\"u}r {\"a}ltere deutsche Geschichtskunde"}
+@string{NAM = "Nouvelles Annales de Mathematiques"}
+@string{NAMS = "Notices of the American Mathematical Society"} % ISSN = "0002-9920 (Print) and 1088-9477 (Electronic)",
+@string{NAR = "The North American Review"}
+@string{NAS = "Proceedings of the National Academy of Sciences of the USA"}
+@string{NAVW = "Nieuw Archief voor Wiskunde"}
+@string{NAASP = "Nova Acta Academiae Scientiarum Imperalis Petropolitanae"}
+@string{NCASP = "Novi commentarii academiae scientiarum imperalis Petropolitanae"}
+@string{NDJFL = "Notre Dame Journal of Formal Logic"}
+@string{NEMBN = "Notices et Extraits des Manuscrits de la Biblioth{\`{e}}que Nationale et Autres Biblioth{\`{e}}ques, Paris"}
+@string{NAWG = "Nachrichten der Akademie der Wissenschaften in G{\"{o}}ttingen"}% = Nachfolge von NKGWG, ISSN 0065-5295
+@string{NBSAM = "National Bureau of Standards, Applied Mathematics Series"}
+@String{NG = "National Geographic"}
+@string{NKGWG = "Nachrichten von der K{\"{o}}niglichen Gesellschaft der Wissenschaften zu G{\"{o}}ttingen"}
+@String{NLAMC = "Nonlinear Analysis: Modelling and Control"}% ISSN = "1392-5113",
+@string{NM = "Numerische Mathematik"}
+@String{NMAB = "Nouveaux M{\'{e}}moires de l'Acad{\'{e}}mie royale des Sciences et Belles-Lettres de Berlin"}
+@String{NMJ = "Northeastern Mathematical Journal"} % ISSN = "1000-1778"
+@string{NMT = "Nordisk Matemarisk Tidskrift"}
+@string{NQ = "Notes and Queries"}
+@string{NZMM = "New Zealand Math. Mag."} % kommt nicht in der refs.bib vor !!!
+%%% O %%%
+@String{OINN = "The Oriental Institute News and Notes"}
+@String{OJAC = "Online Journal of Analytic Combinatorics"}% ISSN = "1931-3365",
+%%% P %%%
+@string{PAMS = "Proceedings of the American Mathematical Society"}
+@string{PAAS = "Proceedings of the American Antiquarian Society"}
+@string{PC = "Parallel Computing"}% ISSN = "0167-8191",
+@string{PCPS = "Proceedings of the Cambridge Philosophical Society"}
+@string{PAPS = "Proceedings of the American Philosophical Society"}
+@string{PCS = "Progress in Computer Science and Applied Logic"}% ISSN = "0743-1597",
+@string{PDM = "Publications du D{\'e}partement de Math{\'e}matiques. Facult{\'e} des Sciences de Lyon"}
+@string{PEMS = "Proceedings of the Edinburgh Mathematical Society"}
+@string{PIT = "Problems of Information Transmission"}
+@string{PJM = "Pacific Journal of Mathematics"}% ISSN = "0030-8730",
+@string{PJR = "Philips Journal of Research"}
+@string{PKNAW = "Proceedings of the Koninklijke Nederlandse Akademie van Wetenschappen"}
+@string{PLMS = "Proceedings of the London Mathematical Society"}% ISSN = "0024-6115",
+@string{PLMS2 = "Proceedings of the London Mathematical Society, Second Series"}
+@string{PLMS3 = "Proceedings of the London Mathematical Society, Third Series"}
+@string{PM = "Progress in Mathematics"}
+@string{PMAG = "Philosophical Magazine"}
+@string{PMD = "Publicationes Mathematicae (Debrecen)"}
+@string{PMH = "Periodica Mathematica Hungarica"}% ISSN = "0031-5303",
+@string{PMIM = "{\cyr Prikladnaya matematika i mekhanika}"}
+@string{PMIMeng = "{\cyr Prikladnaya matematika i mekhanika} (Prikladnaya matematika i mekhanika)"}
+@string{PMLA = "Publications of the Modern Language Association"}
+@string{PMM = "The Pall Mall Magazine"}
+@string{PNAS = "Proceedings of the National Academy of Sciences of the USA"}
+@string{PPI = "Problemy Peredachi Informatsii"}
+@String{PRL = "Physical Review Letters"}
+@string{PRSE = "Proceedings of the Royal Society of Edinburgh"}
+@string{PRSL = "Proceedings of the Royal Society, London"}
+@String{PSIM = "Proceedings of the Steklov Institute of Mathematics"}
+@String{PSPM = "Proceedings of Symposia in Pure Mathematics"}
+@string{PTRS = "Philosophical Transactions of the Royal Society of London"}
+%%% Q %%%
+@string{QJM = "Quarterly Journal of Mathematics"}
+@string{QJMOX = "Quarterly Journal of Mathematics Oxford"}
+@string{QJPAM = "Quarterly Journal of Pure and Applied Mathematics"}
+@string{QPPAM = "Queen's Papers in Pure and Applied Mathematics"}
+@string{QR = "The Quarterly Review, London"}
+@String{QTDS = "Qualitative Theory of Dynamical Systems"}
+%%% R %%%
+@string{RA = "Radio{\'{e}}l{\'{e}}ctricit{\'{e}}"}
+@string{RABM = "Revista de archivos, bibliotecas y museos"}
+@string{RANMZ = "Rossi{\u{\i}}skaya Akademiya Nauk. Matematicheskie Zametki"}
+@string{RANMZcyr = "{\cyr Rossi{\u{\i}}skaya Akademiya Nauk. Matematicheskie Zametki}"}
+@string{RANMZru = "{\slshape\foreignlanguage{russian}{Rossii0skaya Akademiya Nauk. Matematicheskie Zametki}}"}
+@string{RBAB = "Revue des Biblioth{\`e}ques et Archives de Belgique, Bruxelles"}
+@string{RCMP = "Rendiconti del Circolo Matematico di Palermo"}% ISSN = "0009-725X",
+@string{RD = "The Reader's Digest"}
+@string{RDM = "Revue des deux mondes"}
+@string{RE = "Revue d'egyptologie"}
+@string{RES = "The Review of English Studies"}
+@String{RF = "Revista de filosof{\'{i}}a"}
+@string{RH = "Revue Hebdomadaire"}
+@string{RIC = "Revue Internationale de Criminalistique"}
+@String{RIHM = "Revue Internationale d'Histoire Militaire"}
+@String{RJ = "The Rutherford Journal"} %ISSN = "1177-1380",
+@string{RM = "Rivista Marittima"}
+@string{RMC = "Revue Maritime et Coloniale"}
+@string{RMS = "Russian Mathematical Surveys"}
+@string{RNAPOLI = "Rendiconto dell' Accademia della Scienze Fisiche e Matematiche, Napoli"}
+@string{RQH = "Revue des questions historiques"}
+@string{RS = "Revue Scientifique, Paris"}
+@String{RSA = "Random Structures and Algorithms"}
+@String{RVB = "Rheinische Vierteljahresbl{\"{a}}tter"}
+@String{RMP = "Review of Modern Physics"}
+%%% S %%%
+@string{SA = "Scientific American"}
+@string{SAS = "Scientific American Supplement"}
+@string{SAM = "Studies in Applied Mathematics"}
+@String{SAdM = "Studies in Advanced Mathematics"}
+@String{SB = "Studies in Bibliography"}
+@string{SBMG = "Sitzungsberichte der Berliner Mathematischen Gesellschaft"}
+@String{SBKPAW = "Sitzungsberichte der K{\"{o}}niglich Preussischen Akademie der Wissenschaften"}
+@string{SCB = "Signal Corps Bulletin"}
+@string{SCIM = "Scientific Monthly"}
+@string{SCJ = "Systems and Computers in Japan"}
+@string{SCP = "Science of Computer Programming"}
+@String{SCN = "Security and Communication Networks"}
+@string{SHM = "Shadow Magazine"}
+@string{SIAMJADM = "SIAM Journal on Algebraic and Discrete Methods"}
+@string{SIAMJAM = "SIAM Journal on Applied Mathematics"}
+@string{SIAMJC = "SIAM Journal on Computing"}% ISSN = "0097-5397",
+@string{SIAMJDM = "SIAM Journal on Discrete Mathematics"}
+@string{SIAMJNA = "SIAM Journal on Numerical Analysis"}
+@string{SIAMR = "SIAM Review"}
+@string{SIGACT = "SIGACT News"}
+@String{SJC = "Serdica Journal of Computing"}
+@string{SMA = "Scripta Mathematica"}
+@string{SMD = "Soviet Mathematics, Doklady"}
+@String{SMGBO = "Studien und Mitteilungen zur Geschichte des Benediktiner-Ordens"}
+@String{SNL = "Science News-Letter"}
+@string{SOE = "Sphinx-Oedipe"}
+@String{SP = "Security {\&} Privacy"}
+@string{SPD = "Soviet Physics - Doklady"}
+@string{STT = "Suomalaisen Tiedeakatemian Toimituksia"}
+@string{SW = "Spektrum der Wissenschaft"}
+%%% T %%%
+@string{TAIEE = "Transactions of the American Institute of Electrical Engineers"}
+@string{TAMS = "Transactions of the American Mathematical Society"}
+@string{TCS = "Theoretical Computer Science"}% ISSN = "0304-3975,
+@string{TJM = "Tokyo Journal of Mathematics"}
+@string{TLS = "The Times Literary Supplement"}
+@String{TOA = "ACM Transactions on Algorithms"}
+@string{TOPLAS = "ACM Transactions on Programming Languages and Systems"}
+@String{TOP = "Topology"}
+@string{TSBA = "Transactions of the Society of Biblical Arch{\ae}ology"}
+%%% U %%%
+@string{UMN = "{\cyr Uspekhi Matematicheskikh Nauk}"}
+@string{UMNengl = "{\cyr Uspekhi Matematicheski Nauk} (Uspekhi Matematicheski Nauk)"}% English translation: Russian Mathematical Surveys
+
+@String{USENIXSS12 = "Proceedings of the 21st USENIX Security Symposium"}
+@String{USENIXSS13 = "Proceedings of the 22nd USENIX Security Symposium"}
+
+%%% V %%%
+@string{VKCSN = "V{\v e}stn{\'i}k Kr{\'a}lovsk{\'e} {\v C}esk{\'e} Spole{\v c}nosti Nauk, T{\v r}{\'i}da Matematiko-P{\v r}irodov{\v e}deck{\' a}"}
+%%% W %%%
+@String{WPC = "Wireless Personal Communications"}
+@string{WW = "The World's Work"}
+%%% X %%%
+@String{XVII = "XVII\textsuperscript{e} Si{\`{e}}cle"}
+%%% Y %%%
+%%% Z %%%
+@string{ZDA = "Zeitschrift f{\"u}r deutsches Altertum und deutsche Litteratur"}
+@string{ZMP = "Zeitschrift fuer Mathematik und Physik"}
+@String{ZSSRG = "Zeitschrift der Savigny-Stiftung f{\"{u}}r Rechtsgeschichte"}
+@string{ZVMIMF = "Zhurnal v{\={y}}chislitel'noi Matematiki i matematicheskoi Fiziki"}
+@string{ZVMIMFru = "{\slshape\foreignlanguage{russian}{Zhurnal vychislitelp1noi0 Matematiki i matematicheskoi0 Fiziki}}"}
+@string{ZVMIMFcyr = "{\cyr Zhur\-nal vy\-chis\-li\-tel\cprime\-no\u\i\ Ma\-te\-ma\-ti\-ki i ma\-te\-ma\-ti\-ches\-ko\u\i\ Fi\-zi\-ki}"}
+===========================================================================
+ Unsortiertes
+===========================================================================
+@string{JASIA = "Journal Asiatique"}
+@string{NORSKE = "Det Kongelige Norske Videnskabers Selskab Forhandlinger"}
+@string{VSFC = "Videnskabers Selskab Forhandlinger Christiana"}
+@string{BEATCS = "Bulletin of the European Association for Theoretical Computer Science"}
+
+@string{VJS = "Virginia Journal of Science"}
+@string{ZEIE = "Zeitschrift f{\"u}r elektrische Informations- und Energietechnik, Leipzig"}
+
+@String{DMTCS = "Discrete Mathematics and Theoretical Computer Science"}
+@String{ANACM = "Applied Numerical Analysis and Computational Mathematics"}
diff --git a/macros/latex/contrib/computational-complexity/cc.dtx b/macros/latex/contrib/computational-complexity/cc.dtx
new file mode 100644
index 0000000000..460220d7bb
--- /dev/null
+++ b/macros/latex/contrib/computational-complexity/cc.dtx
@@ -0,0 +1,12719 @@
+% \iffalse meta-comment
+%
+% Copyright 2000-2015 computational complexity,
+% Michael Nüsken, <nuesken@bit.uni-bonn.de>.
+%
+% Current maintainer: Michael Nüsken, <nuesken@bit.uni-bonn.de>.
+%
+% In case of problems, please contact the current maintainer.
+% If you derive a variant or a bugfix, please also contact the author.
+%
+% This file is part of computational complexity macro package.
+%
+% The package consists of this file, the file cc.ins and all files
+% generated by them.
+%
+% The package may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.2
+% 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.
+%
+% -----------------------------------------------------------
+%
+% Look for %*% in this file, when you try to find \documentclass or
+% changeable options. Look for CC MAIN DATE AND VERSION for main date
+% and version.
+%
+%<*chartab>
+%\fi
+% \CheckSum{7723}
+%% \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 \~}
+% \iffalse meta-comment
+%</chartab>
+% \fi
+% \iffalse meta-comment
+%<*driver>
+\begin{filecontents}{texrefs.bib}
+DANTE Books:
+
+@Book{knu94,
+ author = {Knuth, Donald E.},
+ title = {The \TeX{}book},
+ publisher = {Addison Wesley},
+ year = 1994,
+ pages = {IX, 483},
+ edition = {Incorp. the final corr. made in 1994 Reading, Mass.},
+ isbn = {0-201-13447-0/0-201-13448-9},
+}
+
+@Book{knu84,
+ author = {Donald Ervin Knuth},
+ title = {The \TeX{}book},
+ publisher = {Addison-Wesley},
+ year = 1984,
+ address = {Reading, Mass.},
+ pages = {IX, 483},
+ isbn = {0-201-13448-9},
+ xedition = {2nd print},
+}
+ annote = {This is the definitive and complete user manual to
+ the \TeX{} computerized typesetting system. \TeX{} software
+ offers both writers and publishers the opportunity to
+ produce technical text, with the speed and efficiency
+ of a computer system.},
+
+@Book{det97,
+ author = {Detig, Christine},
+ title = {Der \LaTeX{} Wegweiser},
+ publisher = {MITP-Verlag},
+ year = 1997,
+ pages = 236,
+ isbn = {3-8266-0256-0},
+}
+ annote = {29,80 DM
+
+ Eine leichtverst{\"{a}}ndliche, aufgabenorientierte Einf{\"{u}}hrung f{\"{u}}r
+ \LaTeXe{}-Anf{\"{a}}nger, die trotz ihrer K{\"{u}}rze nicht nur die
+ elementaren \LaTeX{}-Befehle, sondern auch die hinter ihnen
+ stehenden Konzepte erl{\"{a}}utert: Wichtige \LaTeX{}-Erweiterungspakete
+ und Hilfswerkzeuge werden mit vielen Beispielen anschaulich
+ erkl{\"{a}}rt. Es fehlen jedoch Hinweise, wie eigene Befehle oder
+ Umgebungen definiert werden. Zum Buch gibt es noch das
+ Wegweiser-Online-Center, in dem Sie weitere Informationen zum
+ Buch abfragen k{\"{o}}nnen. [TK 1/1997]}
+
+@Book{abd95,
+ author = {Abdelhamid, Rames},
+ title = {Das Vieweg \LaTeXe{} Buch},
+ publisher = {Vieweg},
+ address = {Wiesbaden},
+ year = 1995,
+ isbn = {3-528-25145-X},
+}
+ annote = {39,80 DM}
+
+@Book{lam95,
+ author = {Lamport, Leslie},
+ title = {Das \LaTeX{}-Handbuch},
+ publisher = {Addison-Wesley Publ.},
+ year = 1995,
+ edition = {1st},
+ isbn = {3-89319-826-1},
+}
+ annote = {69,90 DM
+
+ Analog zum \TeX{}book das Standardwerk zu \LaTeX{}. Die deutsche
+ Ausgabe wurde sehr gut und verst{\"{a}}ndlich {\"{u}}bersetzt und mit einem
+ Anhang der deutschen Besonderheiten versehen. Die Aufteilung in
+ einzelne Kapitel ist bei Lamport nicht immer sehr gelungen;
+ nahezu alles wird zweimal erkl{\"{a}}rt, einmal ausf{\"{u}}hrlich im
+ Einf{\"{u}}hrungsteil, einmal zusammenfassend im Referenzteil. Man mu{\"{s}}
+ sich die Informationen regelrecht zusammensuchen. Daher ist
+ Abdelhamids Das Vieweg-\LaTeXe{}-Buch vorzuziehen.},
+
+@Book{lam94,
+ author = {Lamport, Leslie},
+ title = {\LaTeX{} - A Document Preparation System},
+ publisher = {Addison-Wesley Publ.},
+ year = 1994,
+ isbn = {0-201-52983-1},
+ edition = {2nd},
+}
+ annote = {74,00 DM
+
+ Die englischsprache Originalausgabe des Buchs von Lamport: Es
+ beschreibt in der 2. Auflage die neue Standard-LaTeX-Version
+ \LaTeXe{}. Da die deutschsprachige Ausgabe sehr gut und
+ verst{\"{a}}ndlich {\"{u}}bersetzt wurde, ist das "Original" nicht mehr so
+ gefragt.}
+
+XBook{lam94,
+ author = {Leslie Lamport},
+ title = {\LaTeX{}: A Document Preparation System User's Guide and Reference Manual},
+ publisher = {Addison Wesley Longman, Inc.},
+ year = 1994,
+ isbn = {0-201-52983-1},
+ month = {July},
+}
+ annote = {This authoritative user's guide and reference manual
+ for the \LaTeX{} computer typesetting system has been
+ revised to document features now available in the new
+ standard software release \LaTeXe{}. Other parts of the
+ book have been revised, as well, reflecting several
+ years of user comments and suggestions.}
+
+@Book{kop97a,
+ author = {Kopka, Helmut},
+ title = {\LaTeX{} - Band 1: Einf{\"{u}}hrung},
+ publisher = {Addison Wesley Longmann},
+ year = 1997,
+ isbn = {3-8273-1025-3},
+ edition = {2. korr. Nachdruck},
+}
+ annote = {69,90 DM
+
+ Eine gut verst{\"{a}}ndliche Einf{\"{u}}hrung, die leider mit jeder Auflage
+ immer dicker und nicht unbedingt "geordneter" und "richtiger"
+ wurde. Der Kenner wird sich {\"{u}}ber die wirklich sehr gute
+ Befehls{\"{u}}bersicht freuen. Im deutschsprachigen Raum das
+ Nachschlagewerk {\"{u}}ber \LaTeX{}, das als dreib{\"{a}}ndiges Werk neu
+ aufgelegt wird.}
+
+@Book{kopdal99,
+ author = {Kopka, Helmut and Daly, Patrick W.},
+ title = {A Guide to \LaTeX{} - Document Preparation for Beginners and Advanced Users},
+ publisher = {Addison-Wesley Publ.},
+ year = 1999,
+ isbn = {0-201-42777-X/0-201-39825-7},
+ pages = {XV, 600},
+ edition = {3rd},
+}
+ annote = {52,00 DM
+
+ Die englische "{\"{U}}bersetzung" von Kopkas "LaTeX - Eine Einf{\"{u}}hrung"
+ ist nicht einfach "nur {\"{u}}bersetzt", sondern wurde auch an den
+ nicht-deutschen Leserkreis angepa{\"{s}}t.}
+
+@Book{kopdal95,
+ author = {Kopka, Helmut and Daly, Patrick W.},
+ title = {A Guide to \LaTeX{} - Document Preparation for Beginners and Advanced Users},
+ publisher = {Addison-Wesley Publ.},
+ year = 1995,
+ isbn = {0-201-42777-X},
+ edition = {2nd},
+}
+ annote = {52,00 DM
+
+ Die englische "{\"{U}}bersetzung" von Kopkas "LaTeX - Eine Einf{\"{u}}hrung"
+ ist nicht einfach "nur {\"{u}}bersetzt", sondern wurde auch an den
+ nicht-deutschen Leserkreis angepa{\"{s}}t.}
+
+@Book{kat97,
+ author = {Katzenbeisser, Stefan},
+ title = {Von der Idee zum Dokument, Einf{\"{u}}hrung in \TeX{} und \LaTeX{}},
+ publisher = {R. Oldenbourg Verlag},
+ address = {M{\"{u}}nchen},
+ year = 1997,
+ isbn = {3-486-24182-6},
+ edition = {2nd},
+}
+ annote = {69,00 DM [TK 1/1998] }
+
+@Book{lie96,
+ author = {Liebing, Arnulf},
+ title = {Erstes Arbeiten mit \TeX{}},
+ publisher = {Prentice Hall},
+ year = 1996,
+ pages = 192,
+ isbn = {3-8272-9521-1},
+}
+ annote = {39,95 DM [TK 4/1997]}
+
+@Book{die94,
+ author = {Dietsche, Luzia and Lammarsch, Joachim},
+ title = {\LaTeX{} zum Loslegen - Ein Soforthelfer f{\"{u}}r den Alltag},
+ publisher = {Springer},
+ year = 1994,
+ isbn = {3-540-56545-0},
+}
+ annote = {39,90 DM; nicht mehr lieferbar!
+
+ Aus \LaTeX{}-Kursen an der Universit{\"{a}}t Heidelberg ist dieses
+ kompakte, f{\"{u}}r den Anf{\"{a}}nger und auch den etwas
+ fortgeschritteneren \LaTeX{}-Benutzer gut geeignete B{\"{u}}chlein
+ entstanden. Wie die \LaTeX{}-Kurzbeschreibung von Hubert Partl oder
+ der Kompaktf{\"{u}}hrer \LaTeX{} von Reinhard Wonneberger empfehlenswert
+ f{\"{u}}r alle mit schmalerem Geldbeutel oder Platzmangel im
+ B{\"{u}}cherregal ;-) Leider beschreibt es nur das alte \LaTeX{}
+ 2.09. [TK 2/1994]}
+
+@Book{kna97,
+ author = {Knappen, J{\"{o}}rg},
+ title = {Schnell ans Ziel mit \LaTeXe{}},
+ publisher = {R. Oldenbourg Verlag},
+ address = {M{\"{u}}nchen},
+ year = 1997,
+ isbn = {3-486-24199-0},
+}
+ annote = {48,00 DM
+
+ Knappe, aber {\"{u}}bersichtliche Darstellung der wichtigsten
+ \LaTeXe{}-Befehle. F{\"{u}}r \LaTeX{}-Anwender ohne Erfahrung. [TK 4/1997]}
+
+Weiterf{\"{u}}hrende Literatur {\"{u}}ber \LaTeX{}
+
+@Book{goomit96d,
+ author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander},
+ title = {Der \LaTeX{}-Begleiter},
+ publisher = {Addison Wesley Longmann},
+ year = 1996,
+ isbn = {3-89319-646-3},
+ edition = {2. korr. Nachdruck},
+}
+ annote = {79,90 DM
+
+ {\"{U}}bersetzung des erfolgreichen englischen Buches }
+
+@Book{goomit95,
+ author = {Goossens, Michel and Mittelbach, Frank and Samarin, Alexander},
+ title = {The \LaTeX{} Companion},
+ publisher = {Addison-Wesley Publ.},
+ year = 1995,
+ isbn = {0-201-54199-8},
+ edition = {2nd},
+}
+ annote = {83,70 DM
+
+ Die langerwartete Erg{\"{a}}nzung zu Lamports "Das \LaTeX{}-Handbuch"
+ (bzw. "LaTeX - A Document Preparation System") beschreibt, wie
+ man \LaTeXe{} (und auch das "alte" \LaTeX{} 2.09) an seine
+ Bed{\"{u}}rfnisse anpassen kann, wie man "Classes" und "Packages"
+ schreibt und vieles mehr. Durch die Beschreibung vieler
+ Programme und Makropakete rund um \LaTeX{} ist es die erste Quelle,
+ wenn Fragen rund um \LaTeX{} auftauchen. [TK 4/1993]}
+
+@Book{kop97b,
+ author = {Kopka, Helmut},
+ title = {\LaTeX{} - Band 2: Erg{\"{a}}nzungen - mit einer Einf{\"{u}}hrung in METAFONT},
+ publisher = {Addison Wesley Longmann},
+ year = 1997,
+ isbn = {3-8273-1229-9},
+ edition = {2nd},
+}
+ annote = {69,90 DM
+
+ In Band 2 wird \LaTeXe{}, die neue offizielle \LaTeX{}-Version,
+ beschrieben (ist in der neuesten Auflage von Band 1
+ enthalten). Au{\"{s}}erdem werden noch Erg{\"{a}}nzungen, wie zus{\"{a}}tzliche
+ Zeichens{\"{a}}tze (AMS-Fonts, Altdeutsch, Runen, Schach, ...),
+ Einbindung von Postscript-Schriften, Musiknotensatz, Grafik,
+ PiCTeX und Metafont vorgestellt.}
+
+@Book{kop97c,
+ author = {Kopka, Helmut},
+ title = {\LaTeX{} - Band 3: Erweiterungen},
+ publisher = {Addison Wesley Longmann},
+ year = 1997,
+ isbn = {3-89319-666-8},
+ edition = {1st},
+}
+ annote = {69,90 DM
+
+ Der letzte Band der Kopkaschen Trilogie, behandelt
+ \LaTeX{}-Interna, beschreibt die Erstellung von \LaTeXe{}-Klassen und
+ -Pakete und stellt die Standard-\LaTeXe{}-Klassen und einige
+ Erg{\"{a}}nzungspakete vor. Au{\"{s}}erdem enth{\"{a}}lt es eine kurzgefa{\"{s}}te
+ Vorstellung der Programmiersprache \TeX{}, des WEB-Systems und der
+ \TeX{}-/MF-Quellen.}
+
+@Book{gra97,
+ author = {Gr{\"{a}}tzer, Georg},
+ title = {Math into \LaTeX{}},
+ publisher = {Birkh{\"{a}}user},
+ address = {Boston},
+ year = 1997,
+ isbn = {0-8176-3805-?},
+ edition = {2nd},
+}
+ annote = {58,50 USD
+
+ aktuelle Darstellung des \AMS\LaTeX{}-Pakets [TK 1/1998] }
+
+Kompaktf{\"{u}}hrer/Nachschlagewerke f{\"{u}}r \LaTeX{}
+
+@Book{hei96,
+ author = {Heilmann, Axel},
+ title = {\LaTeX{}-Vademecum, Ein Kompaktf{\"{u}}hrer f{\"{u}}r Einsteiger und Fortgeschrittene},
+ publisher = {Springer},
+ address = {Berlin, Heidelberg},
+ year = 1996,
+ isbn = {3-540-60522-3},
+}
+ annote = {38,00 DM
+
+ Kleines und praktisches Nachschlagewerk, kann und will nicht den
+ \LaTeX{}-Begleiter ersetzen, ist aber eine gute Erg{\"{a}}nzung,
+ eigenwilliges Querformat. Auch wenn dies der Untertitel
+ suggeriert, ist es nicht zum Einstieg f{\"{u}}r Anf{\"{a}}nger geeignet,
+ sondern zum Nachschlagen, nachdem man sich bereits eingearbeitet
+ hat. [TK 1/1996]}
+
+@Book{won93,
+ author = {Wonneberger, Reinhard},
+ title = {Kompaktf{\"{u}}hrer \LaTeX{}},
+ publisher = {Addison-Wesley},
+ year = 1993,
+ isbn = {3-89319-589-0},
+ edition = {3rd},
+}
+ annote = {29,80 DM
+
+ sehr gut geeignet, um einen ersten Eindruck zu bekommen}
+
+@Book{schpot97,
+ author = {Schwarz, Stefan and Potucek, Rudolf},
+ title = {Das \TeX{}ikon - Referenzhandbuch f{\"{u}}r \TeX{}, \LaTeX{} und \LaTeXe{}},
+ publisher = {Addison-Wesley},
+ address = {Bonn},
+ year = 1997,
+ isbn = {3-89319-690-0},
+}
+ annote = {69,90 DM
+
+ alphabetisch sortiertes Lexikon, das alle \TeX{}- und \LaTeX{}-Befehle
+ dokumentiert [TK 1/1997]}
+
+@Preamble{"\providecommand{\AMS}{{{\ensuremath{\mathcal{AMS}}}}}
+ \newcommand{\ams}[1]{\ifx\protect\noexpand\protect\AMS{}\fi}
+ \providecommand{\secondary}[1]{.}"}
+@Manual{ams96,
+ key = "{\protect\AMS}",
+ title = {\AMS{}-\LaTeX{} Version 1.2, User's Guide},
+ organization = "{\ams{AMS}}{\relax{}}{\relax{}}American Mathematical Society",
+ year = 1996,
+ note = {Part of the standard \LaTeXe{} distribution.
+ Usually \url{texmf/doc/latex/amslatex/amsldoc.dvi}.
+ Also available at CTAN:
+ \url{http://mirror.ctan.org/macros/latex}\relax
+ \url{/required/amslatex/math/amsldoc.tex}.},
+ xurl = {http://mirror.ctan.org/macros/latex/required/amslatex/math/amsldoc.tex}
+}
+
+@Preamble{"\providecommand{\BibTeX}{\textsc{Bib}\TeX{}}"}
+@Manual{pat88,
+ title = {\BibTeX{}ing},
+ author = {Oren Patashnik},
+ year = 1988,
+ note = {Usually \url{texmf/doc/bibtex/base/btxdoc.dvi}
+ Also available at CTAN:
+ \url{http://mirror.ctan.org/biblio/bibtex}\relax
+ \url{/distribs/doc/btxdoc.*}.},
+}
+
+@Manual{dal99,
+ title = {Natural Science Citations and References},
+ author = {Patrick W. Daly},
+ month = 5,
+ year = 1999,
+ note = {Version 7.0.
+ Part of the standard \LaTeXe{} distribution.
+ Usually \url{texmf/doc/latex/natbib/natbib.dvi}.
+ Available from CTAN:
+ \url{http://mirror.ctan.org/macros/latex}\relax
+ \url{/contrib/supported/natbib/natbib.*}.},
+ xurl = {http://mirror.ctan.org/macros/latex/contrib/supported/natbib/natbib.*}
+}
+
+
+
+
+
+Volume A, The TeXbook (Reading, Massachusetts: Addison-Wesley, 1984), x+483pp.
+ISBN 0-201-13447-0
+Volume B, TeX: The Program (Reading, Massachusetts: Addison-Wesley, 1986), xviii+600pp.
+ISBN 0-201-13437-3
+Volume C, The METAFONTbook (Reading, Massachusetts: Addison-Wesley, 1986), xvi+451pp.
+ISBN 0-201-13445-4
+Volume D, METAFONT: The Program (Reading, Massachusetts: Addison-Wesley, 1986), xviii+566pp.
+ISBN 0-201-13438-1
+Volume E, Computer Modern Typefaces (Reading, Massachusetts: Addison-Wesley, 1986), xvi+588pp.
+ISBN 0-201-13446-2
+
+@preamble{"\providecommand{\metafont}{\textsf{METAFONT}}"}
+
+@Book{knu86a,
+ author = {Donald Ervin Knuth},
+ title = {The \TeX{}book},
+ series = {Computers \& Typesetting},
+ volume = {A},
+ publisher = {Addison Wesley Longman, Inc.},
+ year = 1984,
+ pages = {x+483},
+ isbn = {0-201-13447-0}
+}
+
+@Book{knu86b,
+ author = {Donald Ervin Knuth},
+ title = {\TeX{}: The Program},
+ series = {Computers \& Typesetting},
+ volume = {B},
+ publisher = {Addison Wesley Longman, Inc.},
+ year = 1986,
+ pages = {xviii+600},
+ isbn = {0-201-13437-3}
+}
+
+@Book{knu86c,
+ author = {Donald Ervin Knuth},
+ title = {The \metafont{}book},
+ series = {Computers \& Typesetting},
+ volume = {C},
+ publisher = {Addison Wesley Longman, Inc.},
+ year = 1986,
+ pages = {xvi+451},
+ isbn = {0-201-13445-4}
+}
+
+@Book{knu86d,
+ author = {Donald Ervin Knuth},
+ title = {\metafont{}: The Program},
+ series = {Computers \& Typesetting},
+ volume = {D},
+ publisher = {Addison Wesley Longman, Inc.},
+ year = 1986,
+ pages = {xviii+566},
+ isbn = {0-201-13438-1}
+}
+
+@Book{knu86e,
+ author = {Donald Ervin Knuth},
+ title = {Computer Modern Typefaces},
+ series = {Computers \& Typesetting},
+ volume = {E},
+ publisher = {Addison Wesley Longman, Inc.},
+ year = 1986,
+ pages = {xvi+588},
+ isbn = {0-201-13446-2}
+}
+
+From http://members.tripod.com/~upem/texlatex.html
+
+@Book{spi97,
+ author = {Michael Spivak},
+ title = {Joy of \TeX{}},
+ publisher = {American Mathematical Society},
+ year = 1997,
+ isbn = {0-821-82997-1},
+ month = {July},
+}
+ annote = {The Joy of \TeX{}; is the user-friendly guide to
+ AMSTeX;, a software package based on the computer
+ typesetting language \TeX{}. AMSTeX; was designed to
+ simplify typesetting of mathematical quantities,
+ equations, and displays, and to format the output
+ according to any of various preset style
+ specifications. This second edition of Joy reflects
+ the changes introduced on Version 2.0 of the AMSTeX;
+ macro package. The first two parts of the manual,
+ 'Starters' and 'Main Courses', teach the reader how
+ to typeset the kind of text and mathematics one
+ ordinarily encounters. 'Sauces and Pickles', the
+ third section, treats more exotic problems and
+ includes a 60-page dictionary of special
+ \TeX{}niques. The manual also includes descriptions of
+ conventions of mathematical typography to help the
+ novice technical typist. Appendices list handy
+ summaries of frequently used and more esoteric
+ symbols. This manual is useful for technical typists
+ as well as scientists who prepare their own
+ manuscripts. For the novice, exercises sprinkled
+ generously throughout each chapter encourage the
+ reader to sit down at a terminal and learn through
+ experimentation.}
+
+
+@Book{sawkra94,
+ author = {Stanley A. Sawyer and Steven G. Krantz},
+ title = {Text Primer for Scientists},
+ publisher = {CRC Press, Inc.},
+ year = 1994,
+ key = 0849371597,
+ month = {November}
+}
+
+@Book{hoe97,
+ author = {Alan Hoenig},
+ title = {\TeX{} Unbound: \LaTeX{} and \TeX{} Strategies for Fonts, Graphics, and More},
+ publisher = {Oxford University Press, Incorporated},
+ year = 1997,
+ isbn = {0-195-09686-X},
+ month = {December},
+}
+ annote = {LaTeX is the premiere software of choice for writers
+ who need to prepare technical information in a clear
+ and elegant manner. This unique book tells how to use
+ \LaTeX{} or \TeX{} with files prepared with everyday office
+ software such as Lotus or Wordperfect and how to set
+ up software links with Acrobat and hyper-text using
+ \LaTeX{} for Internet communication. Illustrated. 640
+ pp.}
+
+@Book{sal95,
+ author = {David Salomon},
+ title = {The Advanced \TeX{}book},
+ publisher = {Springer-Verlag New York, Incorporated},
+ year = 1995,
+ isbn = {0-387-94556-3},
+ month = {August},
+}
+ annote = {A complete course in \TeX{} that will be suitable for
+ users of \TeX{} who want to advance beyond the basics.
+ The initial chapters introduce the essential workings
+ of \TeX{} and the later chapters cover a wide range of
+ advanced topics such as macros, conditionals, tokens,
+ leaders, file I/O, the line- and page-break
+ algorithms, and output routines.}
+
+
+@Book{goomit93,
+ author = {Michel Goossens and Frank Mittelbach and Alexander Samarin},
+ title = {The \LaTeX{} Companion},
+ publisher = {Addison Wesley Longman, Inc.},
+ year = 1993,
+ isbn = {0-201-54199-8},
+}
+ annote = {A companion to Leslie Lamport's original user's guide to \LaTeX{}. }
+
+
+
+@Book{goomit96g,
+ author = {Michel Goossens and Frank Mittelbach and Sebastian Rahtz},
+ title = {The \LaTeX{} Graphics Companion},
+ publisher = {Addison Wesley Longman, Inc.},
+ year = 1996,
+ isbn = {0-201-85469-4},
+}
+ annote = {Complementing The \LaTeX{} Companion, this new graphics
+ companion book addresses one of the most common needs
+ among users of the \LaTeX{} typesetting system: the
+ incorporation of graphics into text. In addition to
+ packages for general drawing, the book also describes
+ more specific tools for mathematicians, physicists,
+ chemists, engineers, and people interested in
+ business graphics, games and music typesetting.}
+
+ISBN: 0-201-43311-7
+ Title: The \LaTeX{} Web Companion
+ Author: Michel Goossens,Sebastian Rahtz
+ Publisher: Addison Wesley Longman, Inc.
+ Date Published: February 1999
+ URL: The \LaTeX{} Web Companion
+ Format: Trade Paper
+
+
+
+
+ ISBN: 0-201-42777-X
+ Title: Guide to \LaTeXe{}: Document Preparation for Beginners and Advanced Users
+ Author: Helmut Kopka, Patrick W. Daly
+ Publisher: Addison Wesley Longman, Inc.
+ Date Published: June 1995
+ URL: Guide to \LaTeXe{}: Document Preparation for Beginners & Advanced Users
+ Format: Trade Paper
+
+ Kopka and Daly provide a highly accessible tutorial
+ for users new to \LaTeX{}. Fully revised to cover the
+ latest version of \LaTeX{}, this second edition presents
+ a thorough explanation of the internals of the
+ system. \LaTeX{} commands not available within the
+ earlier version of \LaTeX{} are highlighted, making the
+ book useful for users still working with the earlier
+ release.
+
+
+
+
+ ISBN: 0-817-63805-9
+ Title: Math into \LaTeX{}: An Introduction to \LaTeX{} and \AMS\LaTeX{}
+ Author: George Gratzer
+ Publisher: Birkhauser Boston
+ Date Published: November 1995
+ URL: Math into \LaTeX{}: An Introduction to \LaTeX{} & \AMS\LaTeX{}
+ Format: Trade Paper
+
+
+
+
+ ISBN: 0-131-20973-6
+ Title: \LaTeX{} Notes; Practical Tips for Preparing Technical Documents
+ Author: J. Kenneth Shultis,Designed by Kenneth Shultis
+ Publisher: Prentice Hall
+ Date Published: February 1994
+ URL: \LaTeX{} Notes: Practical Tips for Preparing Technical Documents, Version 1.4
+ Format: Trade Paper
+
+ A guide for engineers and scientists who are
+ currently using \LaTeX{}, this volume provides recipes
+ and tricks--including shortcuts and extensions not
+ found elsewhere--for the most useful operation of
+ \LaTeX{} for preparing technical documents. Covers the
+ full range of \LaTeX{} topics--fonts, text formatting
+ and lists, formatting pages, math and equations,
+ tables, graphics, large documents, useful styles,
+ macros, and miscellaneous tricks.
+
+
+
+
+ ISBN: 0-136-05908-2
+ Title: \LaTeX{} for Everyone: A Reference Guide and Tutorial for Typesetting Documents Using a Computer
+ Author: Jane Hahn
+ Publisher: Prentice Hall
+ Date Published: February 1993
+ URL: \LaTeX{} for Everyone: A Reference Guide & Tutorial for Typesetting Documents Using a Computer
+ Format: Trade Paper
+
+ Full of easy-to-understand examples, this is a
+ complete reference guide and tutorial for typesetting
+ documents using \LaTeX{} software. It covers matters of
+ style; typesetting mathematics; customization;
+ preparing large documents; and more.
+
+
+
+
+ ISBN: 0-471-93471-2
+ Title: \LaTeX{} Line by Line; Tips and Techniques for Document Processing
+ Author: Antoni Diller
+ Publisher: John Wiley & Sons, Incorporated
+ Date Published: January 1993
+ URL: \LaTeX{} Line by Line: Tips & Techniques for Document Processing
+ Format: Trade Paper
+
+
+
+
+ ISBN: 0-898-71383-8
+ Title: Learning \LaTeX{}
+ Author: David F. Griffiths,Desmond J. Higham
+ Publisher: Soc Indus-
+ Date Published: December 1996
+ URL: Learning \LaTeX{}
+ Format: Trade Paper
+
+ A short book that covers the essentials without
+ getting lost in details.
+
+
+\end{filecontents}
+\begin{filecontents}{texexample.sty}
+%% Environment for LaTeX2e examples
+\usepackage{moreverb}
+\newcounter{texexample}
+\newdimen\texexamplerightwidth
+\newdimen\texexampleleftwidth
+\def\texexamplerightportion{.52}
+\global\leftmargin\z@
+\let\texexamplesize\footnotesize
+\newenvironment{texexample}
+{%
+ \texexamplerightwidth=\texexamplerightportion\hsize
+ \texexampleleftwidth=.96\hsize
+ \advance\texexampleleftwidth-\leftmargin
+ \advance\texexampleleftwidth-\texexamplerightwidth
+ \stepcounter{texexample}\edef\tmpfile{\jobname-tmp\thetexexample.tex}%
+ \bgroup\verbatimwrite{\tmpfile}}
+{\endverbatimwrite\egroup
+ \begin{flushleft}
+ \hrule height0pt
+ \begin{minipage}[t]{\texexampleleftwidth}
+ \vskip\z@\texexamplesize
+ \verbatimtabinput{\tmpfile}%
+ \end{minipage}%
+ \hglue.04\hsize
+ \begin{minipage}[t]{\texexamplerightwidth}
+ \vskip\z@\small\sloppy
+ \hfuzz=2cm%
+ %%\raggedright
+ %%\hrule\vskip2pt
+ \input{\tmpfile}%
+ %%\vskip2pt\hrule
+ \vskip\z@
+ \end{minipage}
+ \end{flushleft}
+ \par\ignorespacesafterend\noindent
+}
+\end{filecontents}
+\begin{filecontents}{tab-struct.tex}
+ \begin{center}
+ \texexamplesize
+ \begin{minipage}[t]{.44\hsize}
+ \obeylines
+ \meta{secondary file contents}
+ |\documentclass{cc}|
+ ~
+ \meta{personal macros and packages}
+ ~
+ |%\ccsps{year=2011,volume=20,...}|
+ |\contact{|\meta{contact email address}|}|
+ |\submitted{|\meta{submission date}|}|
+ |\title{|\meta{title}|}|
+ %%|%\titlehead{|\meta{running head title}|}|
+ |\author{|\meta{author list}|}|
+ %%|%\authorhead{|\meta{running head authors}|}|
+ %%|%\authorlist{|\meta{title author list}|}|
+ ~
+ |\begin{abstract}|
+ \quad\meta{abstract}
+ |\end{abstract}|
+ ~
+ |\begin{keywords}|
+ \quad\meta{keywords}
+ |\end{keywords}|
+ ~
+ |\begin{subject}|
+ \quad\meta{subject classification}
+ |\end{subject}|
+ ~
+ |\begin{document}|
+ ~
+ \meta{article text}
+ ~
+ |\begin{acknowledge}|
+ \quad\meta{acknowledgments}
+ |\end{acknowledge}|
+ |%\noacknowledge% must if none!|
+ ~
+ |\bibliography{|\meta{bibliography files}|}|
+ ~
+ |\end{document}|
+ \end{minipage}\quad\vrule\quad
+ \begin{minipage}[t]{.5\hsize}
+\begin{verbatim}
+\author{
+ First A. Author\\
+ Department of Mathematics\\
+ University of Somewhere\\
+ Somewhere, USA 99999\\
+ \email{faa@ford.somewhere.edu}\\
+ \homepage
+ {http://www.somewhere.edu/~faa/}
+
+ \currentaddress
+ Somewhere Sunny\\
+ SAMOA\\
+ \email{faa@sunny.samoa.gov}
+
+ \and
+ Second B. Author\\
+ Faculty of Computer Science\\
+ Anyplace College\\
+ Anyplace, CANADA Z9Z 1X1\\
+ \email{author@pearson.anyplace.edu}
+
+ \otheraddress
+ Private address of
+ \textsc{Second B. Author}:\\
+ Green Road\\
+ Notown, MOON\\
+
+ \and
+ Third C. van~Author\\
+ Electrical Engineering Division \\
+ Institute of Nowhere\\
+ Nowhere, ANTARCTICA\\
+ \email{tcauthor@penguin.nowhere.ant}
+ }
+\end{verbatim}
+ \end{minipage}
+ \end{center}
+\end{filecontents}
+\begin{filecontents}{tab-thmenv.tex}
+ \begin{center}
+ \texexamplesize
+ {\catcode`\|=12\gdef\vvv{|}}
+ \begin{tabular}[t]{ll\vvv}
+ environment & title \\\hline
+ %%|open| & Open Question \\
+ |answer| & Answer \\
+ |assumption| & Assumption \\
+ |claim| & Claim \\
+ |conjecture| & Conjecture \\
+ |convention| & Convention \\
+ |corollary| & Corollary \\
+ %%|counterexample| & Counterexample \\
+ |definition| & Definition \\
+ |example| & Example \\
+ |exercise| & Exercise \\
+ |fact| & Fact \\
+ |hypothesis| & Hypothesis \\
+ |lemma| & Lemma \\
+ |notation| & Notation \\
+ \end{tabular}\begin{tabular}[t]{ll} environment & title \\\hline
+ |note| & Note \\
+ |observation| & Observation \\
+ |openquestion| & Open Question \\
+ |problem| & Problem \\
+ |proposition| & Proposition \\
+ |question| & Question \\
+ |remark| & Remark \\
+ |result| & Result \\
+ |theorem| & Theorem \\
+ |thesis| & Thesis \\
+ |warning| & Warning \\*[2mm]
+ |namedtheorem| & \meta{user specified}
+ \end{tabular}
+ \end{center}
+\end{filecontents}
+\begin{filecontents}{tab-algo.tex}
+ \begin{center}
+ \begin{texexample}
+\begin{algorithm}{rs}[Repeated
+ squaring]
+\item An element
+ $x \in \mathbb{Z}_{m}$ and
+ an exponent $e \in \{ 2,
+ \dots, \varphi(m)\}$.
+\item $x^{e} \in \mathbb{Z}_{m}$.
+ \begin{block}
+ \item
+ Compute the binary
+ representation $(e_{n},
+ \dots, e_{0})$ of $e$.
+ \item
+ \algolabel{B}
+ $z \gets x$.
+ \item
+ \algolabel{D}
+ \begin{forblock}
+ {$i = n-1, \dots, 0$}
+ \algolabel{C}
+ \item $z \gets z^{2}$.
+ \begin{ifblock}
+ {$e_{i}=1$}
+ \item $z \gets z * x$.
+ \end{ifblock}
+ \end{forblock}
+ \item
+ \algolabel{G}
+ \RETURN $z$.
+ \end{block}
+\end{algorithm}
+\hrule\medskip
+B: \stepref{rs}{B}\\
+C: \ref{rs-C}, \whole\ref{rs-C}\\
+D: \short\ref{rs-D},
+ \whole\ref{rs-D}
+\end{texexample}
+ \end{center}
+\end{filecontents}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %*% This is the beginning of the documentation!
+\errorcontextlines9999
+\documentclass[noccpublish%
+,textarea=cc1
+,multilingual,australian%
+ %*% Insert options here:
+ %,ccite%
+ %,noams%
+]{cc}
+
+\newcommand{\emailmaintenance}{\email{ccmaintainer@computational-complexity.org}}
+\renewcommand{\emailmaintenance}{\email{nuesken@bit.uni-bonn.de}}
+\newcommand{\emaileic}{\email{editorinchief@computational-complexity.org}}
+\newcommand{\emailsubmit}{\email{submit@computational-complexity.org}}
+\newcommand{\emailtest}{\email{cctest@computational-complexity.org}}
+
+\newcommand\equal{\protect\equalb}%
+\newcommand\equalb{=}%
+
+% do not use cccite but get it's file information!
+{\let\ccorgProvidesPackage\ProvidesPackage
+ \def\ProvidesPackage#1[#2]{\ccorgProvidesPackage{#1}[#2]\endinput}%
+ \usepackage{cccite}}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% Personal definitions and \usepackage commands
+
+\dimen254\marginparwidth
+\let\ccorgmaketitle\maketitle
+\usepackage{doc}
+\normalmarginpar
+\let\maketitle\ccorgmaketitle
+\marginparwidth\dimen254
+\providecommand{\SortIndex}[2]{}
+
+\newcommand{\lclass}[1]{\textsf{#1}}
+\newcommand{\Lclass}[1]{\lclass{#1}%
+ \SortIndex{#1}{\protect\lclass{#1} (class)\encapchar usage}%
+ \index{classes:\levelchar{\protect\ttfamily#1}\encapchar usage}}
+\newcommand{\lpackage}[1]{\textsf{#1}}
+\newcommand{\Lpackage}[1]{\lpackage{#1}%
+ \SortIndex{#1}{\protect\lpackage{#1} (package)\encapchar usage}%
+ \index{packages:\levelchar{\protect\ttfamily#1}\encapchar usage}}
+\newcommand{\lclo}[1]{\textsf{#1}}
+\newcommand{\Lclo}[1]{\lclo{#1}%
+ \SortIndex{#1}{\protect\lclo{#1} (option)\encapchar usage}%
+ \index{options:\levelchar{\protect\ttfamily#1}\encapchar usage}}
+\newcommand{\lenv}[1]{\texttt{#1}}
+\newcommand{\Lenv}[1]{\lenv{#1}%
+ \SortIndex{#1}{\protect\lenv{#1} (environment)\encapchar usage}%
+ \index{environments:\levelchar{\protect\ttfamily#1}\encapchar usage}}
+\newcommand{\lfile}[1]{\texttt{#1}}
+\newcommand{\file}[1]{\lfile{#1}%
+ \SortIndex{#1}{\protect\lfile{#1} (file)\encapchar usage}%
+ \index{files:\levelchar{\protect\ttfamily#1}\encapchar usage}}
+
+\newcommand{\ccLINK}{%
+ \url{http://www.linkspringer.com/?genre=article&issn=1016-3328}%
+ \begingroup\urlstyle{tt}\Url}
+\newcommand{\cchomepage}{\url{http://www.computational-complexity.org/}%
+ \begingroup\urlstyle{tt}\Url}
+\newcommand{\ps}{PostScript\texttrademark}
+\providecommand{\texttrademark}{}
+\newcommand{\AMS}{%
+ \ensuremath{\mathcal{A}}%
+ \kern-.25em
+ \lower.5ex\hbox{\ensuremath{\mathcal{M}}}%
+ \kern-.15em
+ \ensuremath{\mathcal{S}}%
+ }
+
+\DeclareRobustCommand\cs[1]{\texttt{\char`\\#1}}
+\newcommand{\textcal}[1]{\ensuremath{\mathcal{#1}}\/}
+
+\usepackage{texexample}
+
+\providecommand{\mathbb}[1]{\mathbf{#1}}% should be math blackboard bold ...
+
+\makeatletter
+\let\@listi\@listiv
+\let\@listI\@listi
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ %*% optional packages
+% \usepackage{multicol}
+% \usepackage{hyperref}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% doc.sty settings
+
+\newcommand{\VRULE}{|}
+\MakeShortVerb{\|}
+
+\settowidth{\MacroIndent}{\rmfamily\scriptsize M000\ }
+\def\MacroFont{\fontencoding\encodingdefault
+ \fontfamily\ttdefault
+ \fontseries\mddefault
+ \fontshape\updefault
+ \footnotesize}
+\let\AltMacroFont\MacroFont
+\expandafter\newif\csname ifbst\endcsname \bsttrue
+\expandafter\newif\csname ifoldbst\endcsname \oldbsttrue
+
+\makeatletter
+\def\CodelinePrefix#1{%
+ \gdef\fileprefix{#1}%
+ \setcounter{CodelineNo}{0}%
+ \renewcommand{\theCodelineNo}{\rmfamily\scriptsize
+ #1\arabic{CodelineNo}}%
+ \def\special@index##1{\if@filesw
+ \immediate\write\@indexfile
+ {\string\indexentry{##1}%
+ {#1\number\c@CodelineNo}}\fi}%
+ }
+% \let\CodelinePrefix\@gobble
+\makeatother
+
+\DoNotIndex{\',\.,\@M,\@@input,\@Alph,\@alph,\@addtoreset,\@arabic}
+\DoNotIndex{\@badmath,\@centercr,\@cite}
+\DoNotIndex{\@dotsep,\@empty,\@float,\@gobble,\@gobbletwo,\@ignoretrue}
+\DoNotIndex{\@input,\@ixpt,\@m,\@minus,\@mkboth}
+\DoNotIndex{\@ne,\@nil,\@nomath,\@plus,\roman,\@set@topoint}
+\DoNotIndex{\@tempboxa,\@tempcnta,\@tempdima,\@tempdimb}
+\DoNotIndex{\@tempswafalse,\@tempswatrue,\@viipt,\@viiipt,\@vipt}
+\DoNotIndex{\@vpt,\@warning,\@xiipt,\@xipt,\@xivpt,\@xpt,\@xviipt}
+\DoNotIndex{\@xxpt,\@xxvpt,\\,\ ,\addpenalty,\addtolength,\addvspace}
+\DoNotIndex{\advance,\ast,\begin,\begingroup,\bfseries,\bgroup,\box}
+\DoNotIndex{\bullet}
+\DoNotIndex{\cdot,\cite,\CodelineIndex,\cr,\day,\DeclareOption}
+\DoNotIndex{\def,\DisableCrossrefs,\divide,\DocInput,\documentclass}
+\DoNotIndex{\DoNotIndex,\egroup,\ifdim,\else,\fi,\em,\endtrivlist}
+\DoNotIndex{\EnableCrossrefs,\end,\end@dblfloat,\end@float,\endgroup}
+\DoNotIndex{\endlist,\everycr,\everypar,\ExecuteOptions,\expandafter}
+\DoNotIndex{\fbox,\Finale}
+\DoNotIndex{\filedate,\filename,\fileversion,\fontsize,\framebox,\gdef}
+\DoNotIndex{\global,\halign,\hangindent,\hbox,\hfil,\hfill,\hrule}
+\DoNotIndex{\hsize,\hskip,\hspace,\hss,\if@tempswa,\fi,\ifcase,\or,\fi}
+\DoNotIndex{\ifhmode,\fi,\ifvmode,\fi,\ifnum,\fi,\iftrue,\fi,\ifx,\fi}
+\DoNotIndex{\input}
+\DoNotIndex{\jobname,\kern,\leavevmode,\let,\leftmark}
+\DoNotIndex{\list,\llap,\long,\m@ne,\m@th,\mark,\markboth,\markright}
+\DoNotIndex{\month,\newcommand,\newcounter,\newenvironment}
+\DoNotIndex{\NeedsTeXFormat,\newdimen}
+\DoNotIndex{\newlength,\newpage,\nobreak,\noindent,\null,\number}
+\DoNotIndex{\numberline,\OldMakeindex,\OnlyDescription,\p@}
+\DoNotIndex{\pagestyle,\par,\paragraph,\paragraphmark,\parfillskip}
+\DoNotIndex{\penalty,\PrintChanges,\PrintIndex,\ProcessOptions}
+\DoNotIndex{\protect,\ProvidesClass,\raggedbottom,\raggedright}
+\DoNotIndex{\refstepcounter,\relax,\renewcommand}
+\DoNotIndex{\rightmargin,\rightmark,\rightskip,\rlap,\rmfamily}
+\DoNotIndex{\secdef,\selectfont,\setbox,\setcounter,\setlength}
+\DoNotIndex{\settowidth,\sfcode,\skip,\sloppy,\slshape,\space}
+\DoNotIndex{\symbol,\the,\trivlist,\typeout,\tw@,\undefined,\uppercase}
+\DoNotIndex{\usecounter,\usefont,\usepackage,\vfil,\vfill,\viiipt}
+\DoNotIndex{\viipt,\vipt,\vskip,\vspace}
+\DoNotIndex{\wd,\xiipt,\year,\z@}
+
+\DoNotIndex{\ ,\space}
+\DoNotIndex{\",\$,\&,\,,\/,\[,\],\{,\}}
+\DoNotIndex{\@@eqncr,\@auxout,\@bsphack}
+\DoNotIndex{\@centering,\@clsextension,\@clubpenalty}
+\DoNotIndex{\@currentlabel,\@currenvir,\@currext}
+\DoNotIndex{\@donoparitem}
+\DoNotIndex{\@eqcnt,\@eqncr,\@eqnnum,\@eqnsel,\@eqnswfalse,\@eqnswtrue}
+\DoNotIndex{\@esqhack,\@evenfoot,\@evenhead,\@for}
+\DoNotIndex{\@oddhead,\@oddfoot}
+\DoNotIndex{\@firstoftwo,\@fnsymbol,\@height}
+\DoNotIndex{\@ifempty,\@ifnotempty,\@ifstar,\@ifundefined}
+\DoNotIndex{\@ifclassloaded,\@ifpackageloaded}
+\DoNotIndex{\@inlabelfalse,\@inlabeltrue,\@item,\@itemlabel,\@itempenalty}
+\DoNotIndex{\@labels,\@listctr}
+\DoNotIndex{\@makefnmark,\@makefntext,\@maketitle,\@minipagefalse}
+\DoNotIndex{\@nbitem,\@newlistfalse,\@nobreakfalse,\@nocnterr}
+\DoNotIndex{\@nocounterr,\@noitemargfalse,\@noitemarg}
+\DoNotIndex{\@onlypreamble,\@opargbegintheorem}
+\DoNotIndex{\@openbib@code,\@parboxrestore,\@ptsize,\@roman,\@seccntformat}
+\DoNotIndex{\@secondoftwo,\@sect,\@setfontsize,\@ssect,\@startsection}
+\DoNotIndex{\@tempa,\@tempb,\@tempc}
+\DoNotIndex{\@temptokena,\@textsuperscript,\@thanks,\@thefnmark,\@thm}
+\DoNotIndex{\@topnum,\@topsep,\@totalleftmargin,\@undefined}
+\DoNotIndex{\@width,\@xifempty}
+\DoNotIndex{\and,\addtocounter,\appendix,\arabic,\arraycolsep}
+\DoNotIndex{\AtBeginDocument,\AtEndDocument}
+\DoNotIndex{\baselineskip,\bf,\bfseries,\bibcite,\bibitem,\bigskip,\bigstar}
+\DoNotIndex{\bibliography,\bibliographystyle,\bibname,\bigcirc,\blacksquare}
+\DoNotIndex{\c@enumi,\c@enumii,\c@enumiii,\c@enumiv,\c@equation}
+\DoNotIndex{\c@footnote,\c@namedth@@r@m,\c@page,\c@section}
+\DoNotIndex{\centering,\chapter,\CheckCommand,\circ}
+\DoNotIndex{\ClassError,\ClassWarning,\ClassWarningNoLine}
+\DoNotIndex{\clearpage,\clubpenalty,\copyright,\count,\count@,\csname}
+\DoNotIndex{\CurrentOption}
+\DoNotIndex{\DeclareTextFontCommand,\dimen@}
+\DoNotIndex{\displaystyle,\displaywidth,\displaywidowpenalty}
+\DoNotIndex{\do,\documentclass}
+\DoNotIndex{\edef,\endcsname,\endminipage,\endsplit}
+\DoNotIndex{\endnamedth@@r@m,\endnamedtheorem,\endpr@@f,\endproof}
+\DoNotIndex{\enskip,\eqno,\eqnarray,\errhelp,\errmessage}
+\DoNotIndex{\etalchar,\evensidemargin}
+\DoNotIndex{\fboxsep,\finalhyphendemerits}
+\DoNotIndex{\footnote,\footnoterule,\footnotesize}
+\DoNotIndex{\gobble@nil}
+\DoNotIndex{\hb@xt@,\headheight,\ht}
+\DoNotIndex{\if,\fi,\if@eqnsw,\fi,\if@filesw,\fi,\if@inlabel,\fi}
+\DoNotIndex{\if@newlist,\fi,\if@nmbrlist,\fi,\if@nobreak,\fi}
+\DoNotIndex{\if@noitemarg,\fi,\if@noparitem,\fi}
+\DoNotIndex{\iffalse,\fi,\ifinner,\fi,\ifmmode,\fi}
+\DoNotIndex{\csname iftagsleft@\endcsname}
+\DoNotIndex{\ifodd,\fi,\ifvoid,\fi}
+\DoNotIndex{\ignorespaces,\ignorespacesafterend,\immediate,\include}
+\DoNotIndex{\indent,\inputlineno,\item,\itemsep,\itemindent,\itshape}
+\DoNotIndex{\label,\labelenumi,\labelenumii,\labelenumiii,\labelenumiv}
+\DoNotIndex{\labelitemi,\labelsep,\labelwidth,\Large,\large,\lastbox,\lastskip}
+\DoNotIndex{\leftmargin,\linewidth,\LoadClass,\lozenge}
+\DoNotIndex{\makelabel,\MakeUppercase,\marginparsep,\marginparwidth,\mbox}
+\DoNotIndex{\medskip,\medskipamount,\message,\MessageBreak,\minipage}
+\DoNotIndex{\newblock,\newbox,\newcount,\newif,\newskip}
+\DoNotIndex{\newtheorem,\newtoks,\next}
+\DoNotIndex{\noalign,\nocite,\noexpand,\nointerlineskip,\nonumber}
+\DoNotIndex{\normalfont,\normalsize}
+\DoNotIndex{\oddsidemargin,\offinterlineskip}
+\DoNotIndex{\p@enumiv,\PackageError,\PackageWarning,\PackageWarningNoLine}
+\DoNotIndex{\pagebreak,\pageref,\paperwidth,\paperheight,\paragraph}
+\DoNotIndex{\parindent,\parsep,\parshape,\parskip,\partopsep}
+\DoNotIndex{\PassOptionsToClass,\PassOptionsToPackage}
+\DoNotIndex{\prevdepth,\ProvidesPackage,\protected@edef,\qquad}
+\DoNotIndex{\ref,\refname,\removelastskip,\renewenvironment}
+\DoNotIndex{\RequirePackage,\reset@font,\rule}
+\DoNotIndex{\sbox,\sc,\scriptsize,\scshape,\section}
+\DoNotIndex{\show,\showbox,\showoutput}
+\DoNotIndex{\skip@,\sl,\small,\smallskip,\square}
+\DoNotIndex{\stepcounter,\string,\strut}
+\DoNotIndex{\subparagraph,\subsection,\subsubsection}
+\DoNotIndex{\tabskip,\tag,\text,\textbf,\textheight}
+\DoNotIndex{\textit,\textsc,\textsf,\textwidth}
+\DoNotIndex{\thanks,\theenumi,\theenumii,\theenumiii,\theenumiv,\theequation}
+\DoNotIndex{\thefootnote,\thenamedth@@r@m}
+\DoNotIndex{\theorembodyfont,\theorem@bodyfont,\theorem@headerfont}
+\DoNotIndex{\theoremstyle,\theorem@style}
+\DoNotIndex{\thepage,\thispagestyle,\today,\toks@}
+\DoNotIndex{\topmargin,\topsep,\topskip}
+\DoNotIndex{\unhbox,\unpenalty,\unskip,\upshape}
+\DoNotIndex{\Url,\urlstyle,\value,\vbox,\vphantom,\vss}
+\DoNotIndex{\widowpenalty,\write,\xdef,\xpt}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\errorcontextlines999
+ %*% To include the detailed explanation of the coding, comment out
+ %*% the next line
+\OnlyDescription
+ %*% If you also want the bibliography style file cc2.bst in the
+ %*% documentation, comment out the next line
+\bstfalse
+ %*% If you also want the old bibliography style file cc.bst in the
+ %*% documentation, comment out the next line
+\oldbstfalse
+
+ %*% To produce a command index: add the following line for one run,
+ %*% then run makeindex -s gind.ist cc
+ %*% and reprocess, with or without this line (much faster without)
+\EnableCrossrefs
+\CodelineIndex %Must stay if not \OnlyDescription
+
+
+ %*% If not \OnlyDescription:
+ %*% To produce a change history: add the following line for one run,
+ %*% then run makeindex -s gglo.ist -o cc.gls cc.glo
+ %*% and reprocess, with or without this line (faster without)
+\RecordChanges
+
+\DisableCrossrefs %May stay; zapped by \EnableCrossrefs
+\CodelineNumbered %May stay
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%% We are going to suppress some warnings:
+\newcommand{\suppressnextwarning}{%
+ \global\let\ccorgClassWarning\ClassWarning
+ \gdef\ClassWarning##1##2{\global\let\ClassWarning\ccorgClassWarning}}
+
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%% paper data ...
+
+% \submitted{29 September 1999\\
+% Revised 16 February 2000.\\
+% Revised \today}
+
+\date{6 March 2000/% 29 August 2005/
+ 27 July 2011/\today}
+\contact{nuesken@bit.uni-bonn.de}%
+
+\title{Preparing articles for\\\cc{}}%% ??? final versions ???
+\subtitle{User's manual}
+
+\author{%
+ Michael N{\"{u}}sken\\
+ b-it (Bonn-Aachen International Center for Information Technology)\\
+ Dahlmannstr. 2\\
+ 53113 Bonn,
+ Germany\\
+ \email{nuesken@bit.uni-bonn.de}\\
+ \homepage{http://cosec.bit.uni-bonn.de/~nuesken/}
+ }
+
+\begin{abstract}
+ This text describes the \LaTeXe{} document class \Lclass{cc}, which
+ is recommended for typesetting articles accepted for \cc{}.
+\end{abstract}
+\begin{keywords}
+ \LaTeXe{} document class, computational complexity.
+\end{keywords}
+\suppressnextwarning\nosubject
+
+%%% end of paper data.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\let\ccorgbibpunct\bibpunct% allow usage of \bibpunct everywhere
+\suppressnextwarning
+\begin{document}
+\let\bibpunct\ccorgbibpunct% allow usage of \bibpunct everywhere
+
+\let\ccorgPrintDescribeMacro\PrintDescribeMacro
+\let\ccorgPrintDescribeEnv\PrintDescribeEnv
+\renewcommand{\PrintDescribeMacro}[1]{}
+\renewcommand{\PrintDescribeEnv}[1]{}
+
+
+\long\def\zzz#1{#1\endinput}\ifx\StopEventually\zzz\relax%
+\csname @ifundefined\endcsname{multicols}
+{{\scriptsize\tableofcontents}}
+{\begin{multicols}{2}
+ \scriptsize
+ \tableofcontents
+ \end{multicols}
+ \global\let\tableofcontents\relax
+}
+\else%
+\footnotetext[0]{This version includes the source code. The table of
+ contents is on the last page(s).}
+\fi%
+
+
+\section{Submission}
+\label{sec:submission}
+
+
+Submission of a manuscript implies
+\begin{itemize}
+\item that the work described has not been published before except
+ possibly in conference proceedings; if the latter is the case, it
+ must be clearly acknowledged in the submission and a clearly marked
+ copy of the proceedings version should be sent as well (possibly by
+ separate mail);
+\item that it is not under consideration for publication elsewhere;
+\item that its eventual publication has been approved by all
+ coauthors;
+\item that, if and when the manuscript is accepted for publication,
+ the authors agree to automatically transfer the copyright to the
+ publisher; and
+\item that the manuscript will not be published elsewhere in any
+ language without the consent of the copyright holder.
+\end{itemize}
+Manuscripts must be in English.
+%%
+Authors should send a \ps{} file plus a short cover email, giving the
+contact author's name and address, either to the Editor-in-Chief or to
+one of the Editors. Submissions can also be sent by ordinary mail to
+the Editor-in-Chief.
+\begin{quotation}\obeylines%
+ Peter B\"urgisser
+ Technische Universit\"at Berlin
+ Institut für Mathematik
+ Sekretariat MA 3-2
+ Stra\ss{}e des 17. Juni 136
+ 10623 Berlin
+ \textsc{Germany}
+ Email: \email{editor-in-chief@computational-complexity.org}
+\end{quotation}
+Information about \cc{} can be found at the journal's homepage
+\cchomepage{}. There you also find a pointer to the publisher's page
+for \cc{}:
+\begin{center}
+ \small
+ \ccLINK{},
+\end{center}
+which contains the current editorial board, information about
+subscription and prices, and more.
+
+The following instructions only apply to final versions of
+\emph{accepted} manu\-scripts for \cc{}. For a submission, you may
+follow these instructions or use your own setup and submit your
+article as a \ps{} file or a typeset manuscript.
+
+\cc{} expects authors of articles accepted for publication to submit
+camera-ready copy as a \LaTeXe{} source file. If that cannot be
+provided, \cc{} will typeset the article. The editorial decision to
+accept or reject a manuscript is independent of the technology
+(computer or typewriter) used to prepare it.
+
+
+
+
+\section{Submission of the final version}
+\label{sec:camera}
+
+Camera-ready copy can be produced with \LaTeXe{} using the document
+class \Lclass{cc} which is described below. All necessary files can
+be obtained in the WWW, see \cchomepage{} for the necessary files and
+installation instructions. The older \LaTeX{} style file
+\file{cc.sty} should not be used anymore. There is no corresponding
+plain\TeX{} style file.
+
+\subsection{Combining several files into one}
+
+When your article is typed, it might be distributed over several
+files. But the \LaTeXe{} source file that you submit must consist of
+exactly \emph{one} file. You may, however, use the \LaTeXe{}
+environments \SpecialEnvIndex{filecontents}\Lenv{filecontents} and
+\SpecialEnvIndex{filecontents*}\Lenv{filecontents*} to incorporate the
+contents of other \LaTeX{} or ASCII(!) files, respectively, into the
+main \LaTeXe{} source file. These two environments can only be used
+\emph{before} the |\documentclass| command. For example, \ps{} files
+can be handled this way. (Note: it seems to be a feature that there
+must be a line break just after the environment's argument, in
+particular, a comment can only start on the following line.)
+
+\begin{texexamplesize}
+\begin{verbatim}
+\begin{filecontents}{section1.tex}
+ \section{First section}
+ ... \cite{Eucleides} wrote ...
+\end{filecontents}
+\begin{filecontents*}{picture.ps}
+%!PS-Adobe-2.0 EPSF-2.0
+...
+\end{filecontents*}
+\begin{filecontents*}{myrefs.bib}
+@book{Eucleides,
+author = {Eucleides},
+title = {Elements},
+year = {about 300 BC},
+}
+\end{filecontents*}
+\begin{filecontents}{main.bbl}
+\begin{thebibliography}{1}
+
+\bibitem[{Eucleides(about 300 BC)}]{Eucleides}
+\textsc{Eucleides} (about 300 BC).
+\newblock \emph{Elements}.
+
+\end{thebibliography}
+\end{filecontents}
+
+\documentclass{cc}
+\usepackage{graphics}
+% ...
+\begin{document}
+\includegraphics{picture.ps}
+\input{section1}
+\bibliography{cc-journals,myrefs}
+\end{document}
+\end{verbatim}
+\end{texexamplesize}
+
+
+% \changes{v2.20}{2012/03/27}{Removed cctest from doc}
+\iffalse
+\subsection{Testing your final file}
+
+Once your source file is prepared like this, send it via email to
+\emailtest{}. It will then automatically be processed in a defined
+setup: |latex|, |bibtex|, |latex|, |latex|, |dvips| are executed
+unless an error occurs. (Of course, |latex| calls \LaTeXe{}.) The
+log files and the resulting \ps{} file will be sent back to you.
+(This usually takes only a couple of minutes.) Verify whether
+everything is ok. If so, submit your \LaTeX{} file as the final
+version to \emailsubmit{}. Mail sent to \emailtest{} is not read by
+anyone; only the software described above is automatically executed.
+\fi
+
+
+\section{Using the document class \Lclass{cc}}
+\label{sec:usage}
+
+The freeware document class \Lclass{cc} is intended for writing
+articles for \cc{}. But you may, of course, also use this class for
+your other work. For this purpose, several features of this class can
+be turned on or off. (Using \Lclo{noccpublish} turns off the special
+requirements for \cc. Furthermore, this document class can also be
+used as a package if desired. Try |\usepackage{cc-cls}|. Thus you
+can, for example, combine it with the \LaTeXe{} document class
+\Lclass{book}.)
+
+Before giving any description we would like to stress a major
+difference from standard \LaTeXe{}: References and citations are, by
+default, more informative. We recommend this style. See below for
+details. (The new features can be turned off by options to
+|\documentclass|, see p.~\pageref{macro:documentclass}:
+\Lclo{noprefixes}, and \Lclo{cccite} or \Lclo{nonatbib},
+respectively.)
+
+After the optional \meta{secondary file contents}, the standard
+structure of a \cc{} article starts with
+\SpecialUsageIndex{\documentclass}|\documentclass{cc}| and continues
+with optional personal declarations, information concerning author,
+title and content, and finally the article text including
+acknowledgments and references. The overall structure of a typical
+\LaTeXe{} file is shown in \ref{tab:structure}. On \cc{}'s homepage
+you can also find a template file \file{cctemplate.tex} reflecting
+this.
+\begin{table}[tb!]
+ \input{tab-struct.tex}
+ \caption{Typical structure of the \LaTeXe{} source and an example of
+ an \texttt{\string\author} declaration}
+ \label{tab:structure}
+\end{table}
+
+Most \meta{personal macros and packages} can be freely used. If your
+file is processed successfully when sent to \emailtest{}, then your
+macros and the packages you used should be ok.
+
+\SpecialUsageIndex{\contact}The \meta{contact email address} is the
+email address of the contact author. It is required for \cc{} to
+facilitate communication between the publisher and the authors.
+\SpecialUsageIndex{\received}\SpecialUsageIndex{\submitted}The author
+received a message acknowledging receipt of the manuscript, with the
+\meta{received date} or \meta{submission date}.
+\SpecialUsageIndex{\title}The \meta{title} should be broken into
+balanced lines by |\\| if necessary. \SpecialUsageIndex{\author}The
+\meta{author list} contains the names and addresses of the authors
+separated by \SpecialUsageIndex{\and}|\and|, each address consisting
+of a line with full author name and some address lines separated by
+|\\|. There should be no font or size changing commands. If an
+address line is very long and not nicely broken, |\newline| forces a
+break. Note the use of the tilde (|~|) in the name of the last
+author. It guarantees that |van~Author| is considered as her last
+name. Email and home page can be given as last line(s) of an address
+using the commands
+\SpecialUsageIndex{\email}|\email{|\meta{email-address}|}| and
+\SpecialUsageIndex{\homepage}|\homepage{|\meta{www-address}|}|. To
+give a different current address, use
+\SpecialUsageIndex{\currentaddress}|\currentaddress| to separate the
+lines of the latter from the standard address. It produces a new
+address block en\-titled |Current address of \textsc{|\meta{present
+ author name}|}:\\| . %
+The command \SpecialUsageIndex{\otheraddress}|\otheraddress| can be
+used to specify another address block for the present author without
+such a heading. An \meta{abstract}, \meta{keywords} and a
+\meta{subject classification} are required for articles in \cc{}. The
+\SpecialEnvIndex{abstract}\meta{abstract} should summarize, in less
+than 150 words, the context, content and conclusions of the paper.
+List four to six \SpecialEnvIndex{keywords}\meta{keywords}
+characterizing the article. A \SpecialEnvIndex{subject}\meta{subject
+ classification} should be given according to the Mathematical
+Subject Classification 2000 (MSC~2000), which can be found in the
+Internet, see \cc{}'s homepage \cchomepage{}.
+
+
+The \meta{article text} can be structured by |\section|,
+|\subsection|, and |\subsubsection|. Use |\\| to split long headings.
+A table of contents should normally \emph{not} be used. You can use
+diverse theorem and proof environments described below. Finally your
+text might end with \meta{acknowledgments} including funding
+information, references to previous versions, and thanks for help.
+
+
+
+\subsection{Theorems and proofs}
+\label{sec:thm+proof}
+
+\SpecialEnvIndex{assumption} \SpecialEnvIndex{claim}
+\SpecialEnvIndex{conjecture} \SpecialEnvIndex{corollary}
+\SpecialEnvIndex{definition} \SpecialEnvIndex{example}
+\SpecialEnvIndex{exercise} \SpecialEnvIndex{fact}
+\SpecialEnvIndex{lemma} \SpecialEnvIndex{notation}
+\SpecialEnvIndex{note} \SpecialEnvIndex{observation}
+\SpecialEnvIndex{openquestion} \SpecialEnvIndex{problem}
+\SpecialEnvIndex{proposition} \SpecialEnvIndex{remark}
+\SpecialEnvIndex{result} \SpecialEnvIndex{theorem}
+\SpecialEnvIndex{namedtheorem} \SpecialEnvIndex{assumption*}
+\SpecialEnvIndex{answer} \SpecialEnvIndex{convention}
+\SpecialEnvIndex{question}
+\SpecialEnvIndex{thesis} \SpecialEnvIndex{warning}
+\SpecialEnvIndex{claim*} \SpecialEnvIndex{conjecture*}
+\SpecialEnvIndex{corollary*} \SpecialEnvIndex{definition*}
+\SpecialEnvIndex{example*} \SpecialEnvIndex{exercise*}
+\SpecialEnvIndex{fact*} \SpecialEnvIndex{lemma*}
+\SpecialEnvIndex{notation*} \SpecialEnvIndex{note*}
+\SpecialEnvIndex{observation*} \SpecialEnvIndex{openquestion*}
+\SpecialEnvIndex{problem*} \SpecialEnvIndex{proposition*}
+\SpecialEnvIndex{remark*} \SpecialEnvIndex{result*}
+\SpecialEnvIndex{theorem*} \SpecialEnvIndex{namedtheorem*}
+\SpecialEnvIndex{answer*} \SpecialEnvIndex{convention*}
+\SpecialEnvIndex{question*}
+\SpecialEnvIndex{thesis*} \SpecialEnvIndex{warning*}
+%%
+Typing theorems is much easier than finding or proving them. We give
+some examples.
+\begin{texexample}
+\begin{theorem}\label{thm1}
+ This is a very simple theorem.
+\end{theorem}
+\end{texexample}
+This environment supports an optional argument. Often it is used to
+supply source information:
+\begin{texexample}
+\begin{theorem}[\cite{knu84}]
+ \label{thm2}
+ This is a theorem
+ by somebody else.
+\end{theorem}
+\end{texexample}
+In rare occasions, you might prefer an unnumbered theorem:
+\begin{texexample}
+\begin{theorem*}
+ This theorem is so important
+ that it has no number.
+\end{theorem*}
+\end{texexample}
+Of course, we are not restricted to theorems:
+\begin{texexample}
+\begin{lemma}
+ \label{res:lemma}
+ We can also have lemmas.
+ \begin{enumerate}
+ \item\label{lemma:1}
+ It has two claims.
+ \item\label{lemma:2}
+ And it shows how lists
+ are used, formatted
+ and referenced.
+ \end{enumerate}
+\end{lemma}
+\end{texexample}
+You can replace |theorem| by |lemma| to obtain lemmas instead of
+theorems in the above examples. Further, you can use the theorem-like
+environments listed in \ref{tab:thmenv}.
+\begin{table}[htb!]
+ \input{tab-thmenv.tex}
+ \caption{Defined theorem-like environments}
+ \label{tab:thmenv}
+\end{table}
+%%
+Each of these environments has a starred form which produces no
+number. Moreover, you can give examples, and continue them.
+\begin{texexample}
+\begin{example}
+ \label{myfirst}
+ Or you give an example.
+\end{example}
+\begin{contexample}{myfirst}
+ Sometimes it is nice
+ to continue an example.
+\end{contexample}
+\end{texexample}
+Note \pagebreak[3] that an example is always terminated by a lozenge
+($\eoesymbol$). You can redefine
+\SpecialUsageIndex{\eoesymbol}|\eoesymbol| if you prefer another (or
+no) symbol. The other theorem-like environments can be continued in
+this way:\nobreak
+\begin{texexample}
+\begin{continued}{res:lemma}
+ This continues the lemma.
+\end{continued}
+\end{texexample}
+All this is not enough? Ok, we also support a theorem-like environment
+with a name that you can choose yourself.
+\begin{texexample}
+\begin{namedtheorem}{Fundamental
+ theorem}
+ \label{FunThm}
+ This is a simple named
+ theorem with a number.\qed
+\end{namedtheorem}
+\begin{namedtheorem*}{Fundamental
+ lemma}
+ \label{FunLemma}
+ This is a simple named
+ theorem without number.
+\end{namedtheorem*}
+\end{texexample}
+Note that the references to the labels are ``\ref{FunThm}'' and
+``\ref{FunLemma}'', respectively.
+
+
+Typing proofs is even easier:
+\begin{texexample}
+\begin{proof}
+ This is a very simple proof.
+\end{proof}
+\end{texexample}
+The \pagebreak[3] default qed symbol is an open square ($\qedsymbol$).
+Sometimes, not a proof but only an outline of a proof or a sketch is
+given. This can be done as follows:\nobreak
+\begin{texexample}
+\begin{namedproof}
+ {Outline of proof}
+ [following \textsc{Third}]
+ This is a named proof.
+ Its title claims that this
+ is only an outline.
+\end{namedproof}
+\end{texexample}
+Typesetting of proofs should only be done with these proof
+environments. There is one further problem. Sometimes a proof (or an
+example) terminates with a list, an equation, or some other similar
+environment. Then the end of proof mark often seems to be placed
+incorrectly. If so, place \SpecialUsageIndex{\qed}|\qed| at the end
+of this environment. Usually this fixes this problem. (If not, maybe
+you can spend a few extra words at the end of your proof?)
+
+Typing equations can be done as usual. But note that
+\Lpackage{amsmath} provides a lot of additional equation-like
+environments, see \cite{ams96} or Chapter~8 in \cite{goomit95}.
+
+
+
+\subsection{Labels and references}
+\label{sec:label+ref}
+
+Labels and references, as we use them, have been known since the time
+\LaTeX{} was born. But note that references using the document class
+\Lclass{cc} are more informative than usual. For example,
+\SpecialUsageIndex{\ref}|\ref{myfirst}| now produces: \ref{myfirst}.
+In the standard setup, you would have obtained: \bare\ref{myfirst}.
+If you use the document class option \Lclo{noprefixes}, |\ref| behaves
+as usual. We recommend to adopt the new style. You can access the
+bare (unprefixed) form with
+\SpecialUsageIndex{\bare\string\ref}|\bare\ref{myfirst}| unless you
+issue the document class option \Lclo{nobare}. (The latter might be
+necessary to save space.)
+\begin{texexample}
+We have seen two theorems:\\
+\ref{thm1} and \bare\ref{thm2}.
+\end{texexample}
+%%
+Further, list items in theorem-like environments produce either only
+the item number or the theorem reference plus the item number,
+depending on whether the reference occurs near the theorem or not.
+(Near means, after this theorem (or lemma, \dots) and before the next
+theorem or equation.) For example, |\ref{lemma:1}| here produces
+\ref{lemma:1}. You can force the short form:
+\SpecialUsageIndex{\short\string\ref}|\short\ref{lemma:1}| yields
+\short\ref{lemma:1}, or the whole form:
+\SpecialUsageIndex{\whole\string\ref}|\whole\ref{lemma:1}| yields
+\whole\ref{lemma:1}. If you issue the document class option
+\Lclo{notheoremitemprefixes}, subitems are referenced as in standard
+\LaTeXe{}: you always obtain the short form.
+
+
+
+\subsection{Bibliography and citations}
+\label{sec:bib+cite}
+
+The most comfortable citation scheme comes with the \Lpackage{natbib}
+package. By default this is loaded. Let's begin with an example:
+\begin{texexample}
+Don \citeauthor{knu84}'s design
+of \TeX{}, as described in The
+\TeX{}book \citep{knu84},
+enabled the typesetting of texts
+containing complicated formulas.
+In \citet{knu86b,knu86c,%
+knu86d,knu86e} the
+underlying programs and fonts
+are collected. On this basis,
+\LaTeX{} and \LaTeXe{} were
+developed, see \citet{goomit95,%
+lam94,kopdal99}.
+(Graphics can be included in many
+ways, see \citealp*{goomit96g}.)
+\end{texexample}
+The command |\citet| (equivalent to |\cite|) is used for textual
+citations and the command |\citep| for parenthetical citations.
+Multiple citations are simply listed in one command. The alternative
+commands |\citealt| and |\citealp| produce the same output but without
+parentheses. This avoids nested parentheses in text which is already
+inside parentheses. Note that the years are in parentheses in the
+running text, but without parentheses if the reference itself is in
+parentheses. Several papers in the same year are distinguished as
+``\cite{knu86b}, \cite{knu86c}''. Further examples:
+\begin{center}
+ \texexamplesize
+ \begin{tabular}{l@{$\;\Rightarrow\;$}l}
+ |\citet{knu84}| & \citet{knu84} \\
+ \multicolumn2{l}{\texttt{\string\citet
+ \string{knu84,knu86b,knu86c,knu86d,knu86e\string}}}\\
+ & \citet{knu84,knu86b,knu86c,knu86d,knu86e} \\
+ |\citep{knu84}| & \citep{knu84} \\
+ |\citealt{knu84}| & \citealt{knu84} \\
+ |\citealp{knu84}| & \citealp{knu84} \\
+ |\citeauthor{knu84}| & \citeauthor{knu84} \\
+ |\citeyear{knu84}| & \citeyear{knu84} \\
+ |\citet{goomit95}| & \citet{goomit95} \\
+ |\citet*{goomit95}| & \citet*{goomit95} \\
+ |\citeauthor*{goomit95}| & \citeauthor*{goomit95} \\
+ \end{tabular}
+\end{center}
+If the first author's name contains a \textsl{von} part, such as
+``della Robbia'', then |\citet{dRob98}| produces ``della Robbia
+(1998)'', even at the beginning of a sentence. One can force the first
+letter to be in upper case with the command |\Citet| instead. Other
+upper case commands also exist. More features are documented with the
+\Lpackage{natbib} package, see \cite{dal99}.
+
+Bibliography is best produced using \BibTeX{}. See \cite{kopdal99},
+\cite{lam94}, \cite{goomit95} or \cite{pat88} for information about
+using \BibTeX{}. Then
+\SpecialUsageIndex{\bibliography}|\bibliography{|\meta{bibliography
+ files}|}| produces the bibliography. (The
+\SpecialUsageIndex{\bibliographystyle}|\bibliographystyle| is
+automatically issued by the class, so you need not do this.) In this
+case, the \BibTeX{} file(s) and the \texttt{.bbl} file should be
+embedded in the \LaTeXe{} source file using the \Lenv{filecontents}
+environment (see above).
+
+The \BibTeX{} file \file{journals.bib}, available on \cc{}'s homepage
+\cchomepage{}, contains macros for a number of journals and conference
+proceedings. If in your document you have
+|\bibliography{cc-journals,myrefs}|, then an entry |journal = FOCS99,| in
+your file \texttt{myrefs.bib} will produce: `Proceedings of the 40th
+Annual IEEE Symposium on Foundations of Computer Science, {\rm New
+ York City~NY}' when \BibTeX{} is run. (Note that \texttt{journals}
+must precede your own bibliography file!) Since this will be updated
+only sporadically, the latest conference proceedings may be missing
+here.
+
+\subsubsection{\dots without \Lpackage{natbib}}
+
+If the package \Lpackage{natbib} is not installed on your system for
+some obscure reason, you can issue the option \Lclo{cccite} to switch
+to the old \cc{} style of referring to the bibliography. This still
+works but is not recommended any more.
+{\let\parencite\citep\let\citemul\citet\let\shortcite\citep
+\begin{texexample}
+Don \citeauthor{knu84}'s design
+of \TeX{}, as described in The
+\TeX{}book \parencite{knu84},
+enabled the typesetting of texts
+containing complicated formulas.
+In \citemul{knu86b,knu86c,%
+knu86d,knu86e} the
+underlying programs and fonts
+are collected. On this basis,
+\LaTeX{} and \LaTeXe{} were
+developed, see \cite{goomit95},
+\cite{lam94}, \cite{kopdal99}.
+(Graphics can be included in many
+ways, see \shortcite{goomit96g}.)
+\end{texexample}
+}%
+Using numbered references are used if the references give no
+additional information. (As most hand-made references do.) This is
+not recommended:
+{%
+ \makeatletter
+ \aftergroup\bibstyle@egs%\bibpunct[, ]{(}{)}{;}{a}{,}{,}
+ \@fileswfalse% Do not write these citations
+ \bibstyle@plain
+ \NAT@set@cites
+ %\def\NAT@sort{1}%
+ \makeatother
+\begin{texexample}
+Don Knuth's design
+of \TeX{}, as described in The
+\TeX{}book \cite{knu84},
+enabled the typesetting of texts
+containing complicated formulas.
+In \cite{knu86b,knu86c,%
+knu86d,knu86e} the
+underlying programs and fonts
+are collected. On this basis,
+\LaTeX{} and \LaTeXe{} were
+developed, see \cite{goomit95,%
+lam94,kopdal99}.
+(Graphics can be included in many
+ways, see \cite{goomit96g}.)
+\end{texexample}
+}%
+Note that only |\cite| makes sense here! Although this is acceptable,
+the first style is preferred since it is more informative.
+
+
+
+
+
+\subsection{Mathematical typesetting {\`{a}} la \Lpackage{amsmath}}
+\label{sec:alaAMS}
+
+We recommend to use the features provided by \Lpackage{amsmath},
+\Lpackage{amsfonts}, and \Lpackage{amssymb}. By default the class
+already loads these packages. For example, the \Lenv{gather}
+environment allows you to combine several equations into one,
+\Lenv{gather*} produces no numbers. The \Lenv{align} or \Lenv{align*}
+environments are similar to \Lenv{eqnarray} but you only need one
+ampersand |&|. Other than \Lenv{eqnarray}, \Lenv{align} and all other
+\Lpackage{amsmath} environments take care of the position of the
+number: there will be no overlap between number and formula! The
+\Lenv{multline} or \Lenv{multline*} environment allows you to type
+very long equations, the first line is flushed left, the last line is
+flushed right and all others are centered. The \Lenv{alignat} or
+\Lenv{alignat*} environment allows you to put two or more equations on
+a line, aligned with those on the other lines.
+
+See \cite{ams96} or Chapter 8 in the \LaTeX{} companion
+\citep{goomit95} for a complete description. But note that
+\Lpackage{amsthm} is not compatible with the \Lclass{cc} class and
+must not be used. (The same holds for its derivative
+\Lpackage{apthm}.)
+
+
+
+\subsection{Reminders}
+\label{sec:reminders}
+
+\begin{itemize}
+ %\let\emph\textbf
+\item The following items tend to be overlooked:
+ \begin{itemize}
+ \item email address of contact author,
+ \item key words,
+ \item subject classification,
+ \item submission or received date.
+ \end{itemize}
+ Please make sure you have filled them appropriately.
+\item Manuscripts are in \emph{(American) English}. Authors are
+ encouraged to have their contribution checked for \emph{grammar},
+ and to use a spelling checker. We emphasize that \emph{American
+ spelling} should be used.
+\item Use |\hyphenation{|\meta{hyphenation exceptions}|}| or |\-| if
+ words are not correctly hyphenated.
+\item \emph{Abbreviations} should be spelled out in full when first
+ used. (With \LaTeX{}, try the package \Lpackage{acronym}.)
+\item Non-negative \emph{integers} up to twelve should
+ usually be spelled out.
+\item \emph{Funding information} and help from friends and referees go
+ into the acknowledgments section.
+\item \emph{Appendices} should not be used.
+ %%
+\item Read your |.log| file carefully. There should be no
+ |Overfull \hbox|%
+ , and certainly no visible one (more than |1pt|). If necessary,
+ reword the text. (Sometimes |\begin{sloppypar}| \dots{}
+ |\end{sloppypar}| or local use of |\sloppy|,
+ |\tolerance=|\meta{number}, |\emergencystretch=|\meta{dimension}
+ help, see \cite{goomit95}.)
+\item \emph{Blank (redundant) spaces} should be minimized by careful
+ arrangement of tables and figures.
+\item \emph{Avoid starting} a sentence with a symbol.
+\item It is best to \emph{avoid footnotes}.
+\item \emph{Figures and tables} are to be inserted in the text nearest
+ their first reference. They should be arranged so as not to cause
+ an excessive amount of blank space on the remainder of the page.
+\item \cite{goomit96g} describe various ways to include
+ \emph{pictures} in \LaTeXe{}. They also mention how to scale
+ pictures up or down, which can be used for fine tuning and to avoid
+ redundant white space. (Try to stick to
+ |\includegraphics{|\meta{PostScript file}|}| and
+ |\input{|\meta{gnuplot \LaTeX{} file}|}|.)
+
+ Alternatively, original India ink drawings are possible. Please
+ send one set of originals which must be clear and clean. Ensure
+ that the figures (including letterings and numbers) are large enough
+ to be clearly seen after reduction to 86\%.
+\item Recall that \LaTeX{} has tools to build \emph{lists}, the
+ environments \Lenv{itemize} and \Lenv{enumerate} are the most
+ frequent. Please, use them!
+
+ Note that a list in a theorem is numbered differently than outside.
+\item \emph{Font selection} in \LaTeXe{}'s new font selection scheme
+ (nfss) should be done using the commands
+ \begin{center}
+ |\emph{...}|, |\texttt{...}|, |\textbf{...}|,
+ \\
+ |\textsf{...}|, |\textsc{...}|, |\textrm{...}|,
+ \end{center}
+ and so on. Usually, you should only use the first one. In any
+ case, try to use them as rarely as possible! In math mode there are
+ similar commands. Note that |\mathbb{|\meta{letter(s)}|}| produces
+ blackboard bold letters and |\mathcal{|\meta{letter(s)}|}| produces
+ calligraphic letters. For mathematical operators you should not use
+ font selection but |\operatorname{|\text{name}|}|.
+\item Normally, you should not at all be concerned about \emph{line or
+ page breaks}. Also, \emph{vertical space} should be correctly
+ adjusted by the document class. Use the corresponding commands only
+ if no other solution is possible. If you need to use |\\| in plain
+ text, you probably did something wrong.
+\end{itemize}
+
+
+
+\subsection{Commands for the journal editor and publishers}
+\label{sec:editor}
+
+The journal editor and publishers will insert the publishing data
+(right after the \cs{documentclass}).
+
+For Springer Pubishing Services there is a special macro \cs{ccsps} to
+handle the entire production flow. Its argument is a comma separated
+list of |key=value| pairs and |key| singletons. This list is
+interpreted by the package \Lpackage{xkeyval}. A singleton |key| in
+the list is interpreted as |key=|\meta{default}, and causes the key
+|key| to be set to its default value (provided it has one). In
+particular, for boolean keys this |key| always means |key=true|.
+\begin{verse}
+ \SpecialUsageIndex{\ccsps}%
+ |\ccsps{|\\
+ | issuestage,|\\
+ | year=|\meta{year}|,|\\
+ | volume=|\meta{volume}|,|\\
+ | issue=|\meta{issue}|,|\\
+ | firstpage=|\meta{firstpage}|,|\\
+ | |\dots\\
+ |}|
+\end{verse}
+There are a lot more options to be chosen:
+\begin{itemize}
+\item The key |submitted| sets the received date. Note, that this
+ setting overrides the \cs{received} date.
+\item The boolean key |revisionstage| turns on (or off) the revision
+ features. Initially set to |false|.
+ \begin{itemize}
+ \item The key |DOImsnr| sets the manuscript number. It can be set
+ to any value. This is the \emph{Article No.} occuring in the
+ helper strip. Default |??|.
+ \item The boolean keys |TYPESET|, |DISK|, |LE| and |CP| set certain
+ hooks in the help strip. Initially set to |false|.
+ \item The key |draftcopy| can be set to any value to be used as a
+ watermark. Default |Uncorrected proof|.
+ \item The boolean key |grid| turns on (or off) the alignment
+ grid. Initially set to |false|.
+ \end{itemize}
+\item The boolean key |issuestage| turns on (or off) the display of
+ publication details like volume, issue, pages, doi and
+ more. Initially set to |false|.
+ \begin{itemize}
+ \item The key |year| sets the publishing year. Default |\the\year|.
+ \item The key |volume| sets the volume. Default |??|.
+ \item The key |issue| sets the issue. Default |??|.
+ \item The key |firstpage| sets the number of the first page. Default
+ |1|.
+ \item The key |copyholder| sets the copyright holder. The default
+ is |Springer Basel AG| or |The Author(s)| for normal or open
+ access, respectively.
+ \item The key |doisuffix| sets the doi to
+ |10.1007/s00037-|\meta{year}|-|\meta{doisuffix}. Alternatively,
+ the key |doi| sets the entire doi. Initially set to
+ |10.1007/s00037-|\meta{year}|-????-?|.
+ \item The key |onlinedate| sets the online date. Default |??|.
+ \item Deprecated: The key |onlinefirstyear| is the same as the
+ publishing year, see |year|.
+ \item Deprecated: The key |coveryear| sets the (two digit) cover
+ year for use in the article identifier (above the DOI). Default
+ last two digits of |\the\year|.
+ \end{itemize}
+\item The boolean key |pdfpage| turns on (or off) all settings for
+ producing the online pdf. In particular, if it is off then the
+ helper strip, linenumbers and a draft watermark are displayed.
+ Initial settings is |false|.
+\item The boolean key |xlink| turns on (or off) settings for
+ hyperlinks. Initial settings is |false|.
+\end{itemize}
+
+For publication in \cc{} abstract, keywords and subjection
+classification are usually required. The commands \cs{noabstract},
+\cs{nokeywords} and \cs{nosubject} may be used to turn off errors
+raised by missing abstract, keywords and subject classification,
+respectively.
+
+
+\begin{sloppypar}
+ \scriptsize OUT-OF-DATE: Prior to mid 2011 the declaration
+ \begin{center}
+ \SpecialUsageIndex{\ccpublish}%
+ |\ccpublish{|\meta{year}|}{|\meta{volume}|}|%^^A
+ |{|\meta{number}|}{|\meta{first page}|}|
+ \end{center}
+ was inserted next to author and title information. Further, the
+ commands \SpecialUsageIndex{\electronic}|\electronic| and
+ \SpecialUsageIndex{\printed}|\printed| switches the ISSN to the
+ electronic or printed version, respectively.
+\end{sloppypar}
+
+
+\subsection{Disclaimer}
+\label{sec:disclaimer}
+
+The macros are not guaranteed to be free of errors, and any bugs,
+inconsistencies, and suggestions for further improvement or other
+comments should be reported to \emailmaintenance{}.
+
+
+\condbreak{1cm}
+
+\section{Quick upgrade: from bare \LaTeX{} to \Lclass{cc}}
+
+% \changes{v2.03}{2003/05/26}{Added section on quickly upgrading to
+% cc \dots}
+Replace your |\documentclass{...}| command with the line
+\begin{verbatim}
+\documentclass[nonatbib,noprefixes]{cc}
+\end{verbatim}
+\noindent
+and adjust author, title, keywords and subject classification
+according to \ref{tab:structure} (page \pageref{tab:structure}). (In
+particular, all this information must appear before the
+|\begin{document}|.)
+%\end{document}
+The title may be too long for the running head. You need
+to supply |\titlehead{|\meta{short title}|}| then.
+
+If there are any |\newtheorem| commands then turn them off and use the
+\Lclass{cc} theorem environments described in \ref{sec:thm+proof}.
+(Note that there is an environment \Lenv{namedtheorem} for
+theorem-like environments with unforeseen names. You can also use
+this in a definition like
+\begin{verse}
+ |\newenvironment{bla}{\theorem}{\endtheorem}|\\
+ |\newenvironment{foo}{\namedtheorem{Foo}}{\endnamedtheorem}|
+\end{verse}
+if necessary.) If there are definitions for proofs or qed signs then
+turn them off, too; the \Lclass{cc} class provides these things.
+
+For publication in \cc{} you should next switch to author-year
+citations. To do so:
+\begin{itemize}
+\item remove the option |nonatbib|,
+\item add your |.bib|-file in
+ \begin{verse}
+ |\begin{filecontents*}{\jobname.bib}| \\
+ | |\dots\\
+ |\end{filecontents*}|
+ \end{verse}
+ before |\documentclass|,
+\item throw away your handwritten environment \Lenv{thebibliography}
+ if any and the command |\bibliographystyle| if present, and replace
+ it or your |\bibliography| command with |\bibliography{|\meta{name
+ of your |.bib|-file}|}|.
+\item Then run |latex|, |bibtex| and |latex| twice and
+\item adjust the text at the citation points: In particular, replace
+ all |\cite| commands with either |\citet| for textual, |\citep| for
+ parenthetical or |\citealt| for use inside parentheses. (Well,
+ |\cite| is usually equivalent to |\citet|. However, changing all
+ shows that it's done.)
+\end{itemize}
+
+Finally, you may want to switch to more intelligent |\ref|, see
+\ref{sec:label+ref}. To do so just remove the option |noprefixes| and
+adapt text at your |\ref| commands, usually by removing words like
+Theorem, Section before them and parentheses around equation
+references.
+
+\section{Make your document portable}
+
+% \changes{v2.03}{2003/05/26}{Added section on making things portable
+% \dots}
+In order to make your \Lclass{cc} source file portable to persons who
+did not yet install the \Lclass{cc} class, include the file
+|cc-cls-inline.tex|. This file can be found on the journal's homepage
+\url{http://www.computational-complexity.org/}. Please do not forget
+to remove the following changes prior to sending your file to \cc{},
+it will have no effect there. You have two options:
+\begin{enumerate}
+\item Simply include the entire file |cc-cls-inline.tex| in your file
+ just before the |\documentclass| command. This has the drawback
+ that your personal texts starts only after many lines irrelevant to
+ you.
+\item Insert your file in the following framework:
+ \verbatiminput{cc-portability-frame.tex}
+ This has the advantage that the \Lclass{cc} stuff is at the end. The
+ drawback is that you need to call \LaTeX{} once more.
+\end{enumerate}
+
+\condbreak{1cm}
+
+\section{Commands}
+\label{sec:commands}
+
+\begin{description}
+\item
+ \label{macro:documentclass}
+ \DescribeMacro{\documentclass}|\documentclass[|\meta{options}|]{cc}|
+Possible \meta{options} are:
+\begin{itemize}
+\item any option from the \Lclass{article} document class.
+ (\Lclo{a4paper}, \Lclo{a4paper}, \Lclo{b5paper}, \Lclo{letterpaper},
+ \Lclo{legalpaper}, \Lclo{executivepaper}, \Lclo{landscape},
+ \Lclo{10pt}, \Lclo{11pt}, \Lclo{12pt}, \Lclo{oneside},
+ \Lclo{twoside}, \Lclo{draft}, \Lclo{final}, \Lclo{titlepage},
+ \Lclo{notitlepage}, \Lclo{onecolumn}, \Lclo{twocolumn},
+ \Lclo{leqno}, \Lclo{fleqn}, \Lclo{openbib}, though not all of them
+ might produce nice results.) Note that all the \Lclo{*paper}
+ options invoke the option \Lclo{textarea\protect\equal none}, you need to add
+ \Lclo{textarea\equal cc} (or similar, see below) after the \Lclo{*paper}
+ option to get the same text area as in \cc{} then.
+\item any option from the \AMS{} packages (if they are not disabled by
+ \Lclo{noams}). (\Lclo{intlimits}, \Lclo{nointlimits},
+ \Lclo{sumlimits}, \Lclo{nosumlimits}, \Lclo{namelimits},
+ \Lclo{nonamelimits}, \Lclo{leqno}, \Lclo{reqno}, \Lclo{centertags},
+ \Lclo{tbtags}, \Lclo{cmex10}, \Lclo{fleqn}.)
+% \item \Lclo{final} (default): `This is a final version.'
+% \item \Lclo{draft}: `This a draft.'
+\item \Lclo{localnumbering}, \Lclo{longarticle} (default): theorem and
+ equation numbering is local to each section, e.g.\ Theorem~3.4.
+\item \Lclo{globalnumbering}, \Lclo{shortarticle}: theorem and equation
+ numbering is global, e.g.\ Theorem~17.
+\item \Lclo{ccpublish} (default): requirements as for publication in
+ \cc{}.
+\item \Lclo{noccpublish}: |\contact|, \Lenv{abstract}, \Lenv{keywords}
+ and \Lenv{subject} are optional now.
+\end{itemize}
+Further, the following \meta{options} are available. They are mainly
+intended to deactivate certain standard features of the class, in
+cases where these cause trouble.
+\begin{itemize}
+\item \Lclo{ams} (default): use the \AMS{} packages \Lpackage{amsmath}
+ (which includes \Lpackage{amstext}, \Lpackage{amsgen},
+ \Lpackage{amsbsy}, \Lpackage{amsopn}), \Lpackage{amsfonts},
+ \Lpackage{amssymb}.
+\item \Lclo{noams}: do not use the \AMS{} packages.
+\item \Lclo{cclayout}, \Lclo{nocclayout} turn the \cc{} layout on or
+ off.
+\item \Lclo{textarea\equal cc} (default with \Lclo{ccpublish}) always
+ takes the newest cc text area from the following:
+ \begin{itemize}
+ \item \Lclo{textarea\equal cc2} (119mm $\times$ 45.5pc) picks the cc
+ text area (after July 2011),
+ \item \Lclo{textarea\equal cc1} (141mm $\times$ 200mm) picks the cc
+ text area (before July 2011),
+ \end{itemize}
+ For downward compatibility the option \Lclo{cctextarea} equaling
+ \Lclo{textarea\equal cc} and \Lclo{nocctextarea} equaling
+ \Lclo{textarea\equal none} still work. All these options have no
+ effect with \Lclo{nocclayout}.
+\item \Lclo{textarea\equal full} makes the text area as large as
+ possible (with $\frac12$in margin to all sides).
+\item \Lclo{textarea\equal none} takes whatever is there. This is
+ same as \Lclo{nocctextarea}.
+\item \Lclo{noothermargins}, \Lclo{classicalmargins},
+ \Lclo{printmargins}, \Lclo{balancedmargins}: Choose margin mode.
+ \Lclo{noothermargins} leaves the margins alone,
+ \Lclo{classicalmargins} leaves the outer margin but fits the inner
+ one to paper and text widths, \Lclo{printmargins} puts 5mm to the
+ outer edge, \Lclo{balancedmargins} makes both margins equal.
+\item \Lclo{autotitle} (default): at |\begin{document}| the title is
+ generated, and at |\end{document}| the receipt information and
+ affiliations are generated.
+\item \Lclo{noautotitle}: \SpecialUsageIndex{\maketitle}|\maketitle| and
+ \SpecialUsageIndex{\makeendtitle}|\makeendtitle| must be explicitly
+ written.
+\item \Lclo{ccsectioning} (default): use centered section headings and
+ in-line subsection and subsubsection headings.
+\item \Lclo{noccsectioning}: use section, subsection, subsubsection,
+ paragraph, subparagraph headings as with the \Lclass{article}
+ document class.
+\item \Lclo{natbib} (default): use the citation scheme provided by the
+ \Lpackage{natbib} package by Patrick W. Daly, the options
+ \Lclo{sort\&compress} (default), \Lclo{sort} and \Lclo{nosort}
+ decide whether multiple citations are sorted or not (compression
+ only affects numerical citations).
+\item \Lclo{cccite}: use the (old) author-year citation scheme of \cc.
+\item \Lclo{nocccite}, \Lclo{nonatbib}: do neither use the
+ \Lpackage{natbib} nor the \cc{} citation scheme.
+\item \Lclo{onecolumnbibliography} (default),
+ \Lclo{twocolumnbibliography}: With these options you can choose one
+ or two columns for the bibliography.
+\item \Lclo{twocolumnendtitle} (default), \Lclo{onecolumnendtitle}:
+ With these options you can choose one or two columns for the
+ bibliography.
+\item \Lclo{cctheorems} (default): theorem like environments are
+ defined as described.
+\item \Lclo{nocctheorems}: theorem like environments are \emph{not}
+ defined at all.
+\item \Lclo{prefixes} (default): references to theorems, equations,
+ and so on, come with prefixes, e.g.\
+ \SpecialUsageIndex{\ref}|\ref{res:lemma}| produces `\ref{res:lemma}'
+ rather than only `\bare\ref{res:lemma}',
+\item \Lclo{noprefixes}: references behave as in standard \LaTeXe{},
+\item \Lclo{bare} (default): \SpecialUsageIndex{\label}|\label| produces two
+ labels instead of one, a long form for
+ \SpecialUsageIndex{\ref}|\ref| and a short form for
+ \SpecialUsageIndex{\bare\string\ref}|\bare\ref|,
+\item \Lclo{nobare}: \SpecialUsageIndex{\label}|\label|
+ works as usual, \SpecialUsageIndex{\bare\string\ref}|\bare\ref| is
+ equivalent to \SpecialUsageIndex{\ref}|\ref| (but gives a warning),
+\item \Lclo{theoremitemprefixes} (default): references to subtopics of
+ a theorem (or lemma ...) consist of the theorem reference and the
+ item reference, for example, |\ref{lemma:2}| produces
+ `\ref{lemma:2}'. In fact, between \ref{res:lemma} and the following
+ theorem or equation (\ref{myfirst} in our case) you would have
+ obtained `\short\ref{lemma:2}'. This short form can be forced by
+ \SpecialUsageIndex{\short\string\ref}|\short\ref{lemma:2}|. You can
+ also force the whole form by
+ \SpecialUsageIndex{\whole\string\ref}|\whole\ref{lemma:2}|.
+\item \Lclo{notheoremitemprefixes}: with this option you always get
+ the short form.
+\item \Lclo{separateequationcounting}: Do not count equations together
+ with theorems, lemmas, \dots
+\item \Lclo{noseparateequationcounting} (default): Count equations
+ together with theorems, lemmas, \dots
+\item \Lclo{ccalgorithms} (default): Load the algorithms stuff.
+\item \Lclo{noccalgorithms}: Do not load the algorithms stuff.
+\end{itemize}
+And finally there are some options for font, input and multilingual
+support.
+\begin{itemize}
+\item \Lclo{OT1} (default): use the font encoding scheme OT1 (this is
+ standard with \LaTeX).
+\item \Lclo{T1}: use the new font encoding scheme T1 (256 characters
+ per font instead of 128).
+\item \Lclo{nolatin1} (default): do not use the input encoding scheme
+ latin1 (this is standard with \LaTeX).
+\item \Lclo{latin1}: use the input encoding scheme latin1 (so Umlaute,
+ {\"{a}}{\"{o}}{\"{u}}, and so on can be typed in literally).
+\item \Lclo{utf8} (default): use the input encoding scheme utf-8.
+\item \Lclo{noutf8}: do not use the input encoding scheme utf-8.
+\item \Lclo{noinputenc}: do not use any input encoding scheme, so that
+ loading the package inputenc can be done afterwards.
+\item \Lclo{nobabel} (default): do not use \Lpackage{babel} for
+ multilingual support.
+\item \Lclo{babel} (default): load \Lpackage{babel} for multilingual
+ support (at an appropriate place, i.e.{} before \Lpackage{inputenc}),
+ required languages must be included as options to the
+ |\documentclass|.
+\item \Lclo{multilingual}: this is an abbreviation for \Lclo{T1},
+ \Lclo{latin1} and \Lclo{babel}.
+\item \Lclo{nomultilingual}: this is an abbreviation for \Lclo{OT1},
+ \Lclo{nolatin1} and \Lclo{nobabel}.
+\end{itemize}
+
+\item \DescribeMacro{\contact}|\contact{|\meta{contact email
+ address}|}|
+
+ Preamble command to specify the email address of the contact author.
+ This is required for publications in \cc{}.
+
+\item \DescribeMacro{\received}|\received{|\meta{submission date}|}|
+ \DescribeMacro{\submitted}|\submitted{|\meta{submission date}|}|
+
+ Preamble command to declare the submission or received date of the
+ manuscript. (Both variants do exactly the same!) Use the format
+ \texttt{27 July 2011}.
+
+\item \DescribeMacro{\author}|\author{|\meta{author list}|}|
+
+ Preamble command to specify the authors and their addresses.
+ Different authors are separated by \SpecialUsageIndex{\and}|\and|.
+ If you are not writing for \cc{} footnotes can be produced by
+ \SpecialUsageIndex{\thanks}|\thanks{|\meta{text}|}|. If an author
+ has a different current address, use
+ \SpecialUsageIndex{\currentaddress}|\currentaddress|. For an other
+ type of other address, use
+ \SpecialUsageIndex{\otheraddress}|\otheraddress| followed by a line
+ like
+ |Guest address of \textsc{|\meta{author name}|}|. %
+ Use the macros
+ \SpecialUsageIndex{\email}|\email{|\meta{email-address}|}| and
+ \SpecialUsageIndex{\homepage}|\homepage{|\meta{www-address}|}| to
+ specify the email address and home page, respectively. The
+ combination of these things can be seen best in the example in
+ \ref{tab:structure}.
+
+ Note that from this declaration also the list of authors in the
+ title and the short list of authors for the running head is derived.
+ Usually, the automatism should work well. If not (maybe the
+ authors' names are very long), you can use
+ \SpecialUsageIndex{\authorhead}|\authorhead{|\meta{last name list}|}| %
+ to specify the author list for the running head. Similarly, you can
+ use
+ \SpecialUsageIndex{\authorlist}|\authorlist{|\meta{name list}|}| %
+ if the the automatic extraction of the author names for the title
+ does not work as expected.
+
+\item \DescribeMacro{\title}|\title{|\meta{title}|}|
+
+ Preamble command to specify the title. If the title is not broken
+ nicely, you can use |\\| to improve line breaking. Long titles do
+ not fit into the running head. In this case please specify a
+ shorter version using
+ \SpecialUsageIndex{\titlehead}|\titlehead{|\meta{short title}|}|.
+
+\item \DescribeMacro{\subtitle}|\subtitle{|\meta{subtitle}|}|
+\item \DescribeMacro{\version}|\version{|\meta{version}|}|
+
+ These preamble command allows to insert, e.g., `Preliminary version'
+ under the title.
+
+\item \DescribeMacro{\date}|\date{|\meta{date}|}|
+
+ Preamble command, default is |\today|. This date is \emph{not} used
+ when the article is published in \cc{}, but it is put in the header
+ when using the option \Lclo{noccpublish}.
+
+\item \DescribeEnv{abstract}|\begin{abstract}| \meta{text}
+ |\end{abstract}|
+
+ Preamble environment to specify the abstract.
+
+\item \DescribeEnv{keywords}|\begin{keywords}| \meta{list of keywords}
+ |\end{keywords}|
+
+ Preamble environment to specify keywords.
+
+\item \DescribeEnv{subject}|\begin{subject}| \meta{subject
+ classification} |\end{subject}|
+
+ Preamble environment to specify the subject classification.
+
+\item \DescribeEnv{acknowledge}|\begin{acknowledge}|
+ \meta{acknowledgments} |\end{acknowledge}|
+
+ Environment for acknowledgments. Funding information can also be
+ included here. If there are no acknowledgements you \emph{must} put
+ \cs{noacknowledge} instead.
+
+\item \DescribeMacro{\bibliography}|\bibliography{|\meta{list of
+ bibliography files}|}|
+
+ Command to produce the bibliography from the \meta{list of
+ bibliography files} using \BibTeX{}.
+
+\item \DescribeEnv{theorem}|\begin{theorem}[|\meta{citation}|]|
+ \meta{theorem text} |\end{theorem}|
+\item \DescribeEnv{theorem*}|\begin{theorem*}[|\meta{citation}|]|
+ \meta{theorem text} |\end{theorem*}|
+
+ Environment for theorems. There are similar environments, for
+ example, \Lenv{lemma}, \Lenv{definition}, \Lenv{example}. Compare
+ \ref{tab:thmenv} for a complete list. Each of them has a starred
+ version that is not numbered.
+
+\item \DescribeEnv{continued}|\begin{continued}{|\meta{label-key}|}|
+ \meta{theorem text} |\end{continued}|
+\item
+ \DescribeEnv{contexample}|\begin{contexample}{|\meta{label-key}|}|
+ \meta{example text} |\end{contexample}|
+
+ Environment to continue theorems-like environments. Note that
+ examples need a different environment since they use an end of
+ example mark.
+
+\item
+ \DescribeEnv{namedtheorem}|\begin{namedtheorem}{|\meta{heading}|}[|\meta{citation}|]|
+ \\\meta{theorem text}
+ \\\null\hskip-\leftmargin\hskip\labelsep%
+ |\end{namedtheorem}|
+\item
+ \DescribeEnv{namedtheorem*}|\begin{namedtheorem*}{|\meta{heading}|}[|\meta{citation}|]|
+ \\\meta{theorem text}
+ \\\null\hskip-\leftmargin\hskip\labelsep%
+ |\end{namedtheorem*}|
+
+ This also is an environment for theorems. Other than
+ \Lpackage{theorem}, the \meta{heading}, e.g.\ `Theorem', is
+ specified explicitly. Thus a `Fundamental Theorem' can be easily
+ typed.
+
+\item \DescribeEnv{proof}|\begin{proof}[|\meta{citation}|]|
+ \meta{proof text} |\end{proof}|
+
+ This is the standard environment to type proofs. The default qed
+ symbol is an open square ($\qedsymbol$), but you can redefine
+ \SpecialUsageIndex{\qedsymbol}|\qedsymbol|. You can use
+ \SpecialUsageIndex{\qed}|\qed| to force the qed symbol at an earlier
+ place. This is usually necessary whenever a proof terminates with a
+ math environment or a list.
+
+\item \DescribeEnv{namedproof}|\begin{namedproof}[|\meta{end of proof
+ mark}|]{|\meta{heading}|}[|\meta{citation}|]|
+ \\\meta{proof text}
+ \\\null\hskip-\leftmargin\hskip\labelsep%
+ |\end{namedproof}|
+
+ Environment to type proof-like things which differ in \meta{heading}
+ and optionally also in the \meta{end of proof mark}. Note that the
+ latter is typeset in math mode.
+
+\item \DescribeEnv{enumerate}|\begin{enumerate}*| \meta{items}
+ |\end{enumerate}|
+
+ This is simply a variant of the traditional \Lenv{enumerate}
+ environment, it continues a previously terminated list. This allows
+ you to make intermediate remarks and then continue your numbered
+ list.
+
+\item \DescribeMacro{\label}|\label{|\meta{key}|}|,
+ \DescribeMacro{\ref}|\ref{|\meta{key}|}|,
+ \DescribeMacro{\bare\string\ref}|\bare\ref{|\meta{key}|}|,
+ \DescribeMacro{\short\string\ref}|\short\ref{|\meta{key}|}|, \newline
+ \DescribeMacro{\whole\string\ref}|\whole\ref{|\meta{key}|}|
+
+ These macros are used for referencing. |\label| defines a label,
+ |\ref| produces a reference to the label with the corresponding
+ \meta{key}. In the standard setup, a theorem will be referenced as
+ `Theorem 3.4' or the like. Unless the document class option
+ \Lclo{nobare} was given, |\bare\ref| produces a short label, e.g.
+ `3.4'.
+
+ The other two modifications are important for references to list
+ items in theorem-like environments. Usually, the reference would be
+ the whole reference which is forced by |\whole\ref|, for example,
+ |\whole\ref{lemma:1}| is \whole\ref{lemma:1}. But near the theorem,
+ that is until the next theorem or equation, a shortened form is used
+ which is forced by |\short\ref|, for example, |\short\ref{lemma:1}|
+ is \short\ref{lemma:1}. This feature can be turned off by the
+ document class option \Lclo{notheoremitemprefixes}.
+
+\item \DescribeEnv{thebibliography}|\begin{thebibliography}{}|
+ \\\DescribeMacro{\bibitem}|\bibitem[|\meta{label}|]{|\meta{key}|}|
+ \meta{bibliographic information}
+ \\\null\hskip-\leftmargin\hskip\labelsep%
+ |\end{thebibliography}|
+
+ This environment is used to typeset the references. For each
+ reference there is a |\bibitem|. Usually, this is automatically
+ produced by \BibTeX{}.
+
+\item
+ \DescribeMacro{\citet}|\citet*[|\meta{prefix}|][|\meta{postfix}|]{|\meta{key}|}|,
+ \newline
+ \DescribeMacro{\citep}|\citep*[|\meta{prefix}|][|\meta{postfix}|]{|\meta{key}|}|,
+ \newline
+ \DescribeMacro{\citealt}|\citealt*[|\meta{prefix}|][|\meta{postfix}|]{|\meta{key}|}|,
+ \newline
+ \DescribeMacro{\citealp}|\citealp*[|\meta{prefix}|][|\meta{postfix}|]{|\meta{key}|}|,
+ \newline
+ \DescribeMacro{\citeauthor}|\citeauthor*[|\meta{prefix}|][|\meta{postfix}|]{|\meta{key}|}|,
+ \newline
+ \DescribeMacro{\citeyear}|\citeyear[|\meta{prefix}|][|\meta{postfix}|]{|\meta{key}|}|
+
+ These macros are defined by the package \Lpackage{natbib}. With the
+ option \Lclo{cccite} they loose most of their functionality. With
+ the options \Lclo{nocccite} or \Lclo{nonatbib} they are not defined.
+
+ All of these can have a comma separated list of \meta{key}s. The
+ star indicates that the full list of authors should be used if
+ possible. The \meta{prefix} precedes, the \meta{postfix} follows
+ the citation. If only one optional argument is present, it is
+ considered to be the \meta{postfix}. The \meta{postifx} may be
+ empty to allow the specification of a \meta{prefix} only. There are
+ several examples in \ref{sec:bib+cite}.
+ \begin{texexample}
+\citet{goomit95}\\
+\citeauthor{kopdal99}\\
+\citeyear{knu84}\\
+\cite{knu84,knu86b,knu86c}\\
+\citealt{lam94}\\
+\citep{goomit96g}\\
+This\nocite{pat88}
+produces no text but a
+bibliography entry.
+ \end{texexample}
+
+\item \DescribeMacro{\cite}|\cite{|\meta{key}|}|,
+ \DescribeMacro{\citeauthor}|\citeauthor{|\meta{key}|}|,
+ \DescribeMacro{\citeyear}|\citeyear{|\meta{key}|}|,
+ \DescribeMacro{\citemul}|\citemul{|\meta{key}|}|, \newline
+ \DescribeMacro{\shortcite}|\shortcite{|\meta{key}|}|,
+ \DescribeMacro{\parencite}|\parencite{|\meta{key}|}|,
+ \DescribeMacro{\nocite}|\nocite{|\meta{key}|}|
+
+ These obsolete macros are used for citations when the option
+ \Lclo{cccite} is used.
+% The different commands produce various combinations of a reference:
+% \begin{texexample}
+% \cite{goomit95}\\
+% \citeauthor{kopdal99}\\
+% \citeyear{knu84}\\
+% \citemul{knu84,knu86b,knu86c}\\
+% \shortcite{lam94}\\
+% \parencite{goomit96g}\\
+% This\nocite{pat88}
+% produces no text but a
+% bibliography entry.
+% \end{texexample}
+% |\citemul| is used to cite several references of the same author(s).
+% (In fact, with the option \Lclo{cccite}, the fourth line of the
+% above example would have given: Knuth (1984, 1986a, 1986b).)
+
+\item
+ \DescribeMacro{\headrulewidth}|\setlength{\headrulewidth}{|\meta{width}|}|
+
+ If a head rule is desired, use this in the preamble. The default
+ value for \meta{width} is |.4pt|. Note that this has only an effect
+ with the document class option \Lclo{noccpublish}.
+
+\item \DescribeMacro{\maketitle}|\maketitle|
+
+ This command produces the title if not done yet. You never need
+ this command unless you use the document class option
+ \Lclo{noautotitle}.
+
+\item \DescribeMacro{\makeendtitle}|\makeendtitle|
+
+ This command produces receipt information and affiliations if not
+ done yet. You do not need this command unless you use the document
+ class option \Lclo{noautotitle}.
+
+\pagebreak[3]
+
+\item \DescribeMacro{\ccsps}|\ccsps{|\meta{keyvaluelist}|}|
+
+ Preamble command to define publishing service information. See
+ \ref{sec:editor} for details.
+
+%%% \item \DescribeMacro{\ccpublish}|\ccpublish{|\meta{year}|}|%
+%%% |{|\meta{volume}|}{|\meta{number}|}{|\meta{first page}|}|
+%%%
+%%% Deprecated preamble command to define \meta{year},
+%%% \meta{volume}, \meta{number}, and \meta{first page} of the final
+%%% publication \emph{by the editor}. Not intended for use by
+%%% anybody else. Note that this forces the document class options
+%%% \Lclo{autotitle} and \Lclo{ccpublish}.
+
+\item \DescribeMacro{\electronic}|\electronic|,
+ \DescribeMacro{\printed}|\printed|
+
+ Commands \emph{for the editor}. Switches the ISSN to the electronic
+ or to the printed version.
+
+\end{description}
+
+
+\section{Commands for algorithms}
+
+The commands and environments related to algorithms can also be used
+independently, try |\usepackage{ccalgo}| to activate them. For a
+longer example, see \ref{tab:algo}.
+\begin{table}[t!]
+ \input{tab-algo}
+ \caption{An example algorithm}
+ \label{tab:algo}
+\end{table}
+\condbreak{1cm}
+\begin{description}
+\item
+ \DescribeEnv{algorithm}|\begin{algorithm}|%
+ |{|\meta{masterkey}|}[|\meta{citation}|]|\\
+ |\item |\meta{input}\\
+ |\item |\meta{output}\\
+ |\begin{block}|\\
+ | |\meta{body}\\
+ |\end{block}|
+ \\\null\hskip-\leftmargin\hskip\labelsep%
+ |\end{algorithm}|
+
+ This is a specialization of the following environment
+ \Lenv{namedalgorithm}. You may define such specializations using
+ |\newalgorithm|.
+
+\item
+ |\newalgorithm{|\meta{environment name}|}[|\meta{list of required
+ items}|]{|\meta{heading}|}|.
+
+ You can use this to specialize the following environment
+ \Lenv{namedalgorithm}.
+
+\item
+ \DescribeEnv{namedalgorithm}|\begin{namedalgorithm}|%
+ |{|\meta{heading}|}[|\meta{list of required items}|]|\\%
+ |{|\meta{masterkey}|}[|\meta{citation}|]|\\
+ |\item |\meta{first required item}\\
+ \dots\\
+ |\item |\meta{last required item}\\
+ |\begin{block}|\\
+ | |\meta{body}\\
+ |\end{block}|
+ \\\null\hskip-\leftmargin\hskip\labelsep%
+ |\end{namedalgorithm}|
+
+ Typesetting algorithms is an art by itself. We hope that this
+ environment is flexible enough to reflect also your taste. The
+ environment \Lenv{namedalgorithm} takes four arguments, two of them
+ are optional. The \meta{list of required items} is a comma
+ separated list of titles for required items. It defaults to:
+ |Input,Output|. Thus the first required item is entitled |Input|
+ and the second and last required item is entitled |Output|. An
+ interactive protocol might have many more required items, for
+ example,
+ |Common input,|%
+ |Prover's input,|%
+ |Verifier's input,|%
+ |Output|.
+ The \meta{heading} could be |Algorithm| or
+ |Extended Euclidean Algorithm|%
+ , it will be referenced together with the number (if any). The
+ \meta{masterkey} is used to set a label; this is obligatory since
+ labels to steps or ranges of steps in the algorithm are created
+ using this. Finally \meta{citation} usually is either a phrase
+ describing the algorithm, or a reference.
+
+ The \meta{body} is a sequence of steps and blocks.
+
+ |\item[|\meta{label}|]| starts a new step of the algorithm, either
+ numbered or labelled \meta{label}. As usual, a |\label| command
+ after the item refers to the step, but it is wiser to use
+ \DescribeMacro{\algolabel}|\algolabel{|\meta{subkey}|}| instead
+ which is equivalent to |\label{|\meta{masterkey}|-|\meta{subkey}|}|.
+ (Note that also items with given \meta{label} can have an
+ |\algolabel| or a |\label|!) A reference must then be written
+ \DescribeMacro{\stepref}|\stepref{|\meta{masterkey}|}{|\meta{subkey}|}|
+ or |\ref{|\meta{masterkey}|-|\meta{subkey}|}|. If the standard
+ width of the item labels is not enough, use
+ \begin{center}
+ |\settowidth{\steplabelwidth}{\makeoptalgolabel{|\meta{widest label}|}}| %
+ \end{center}
+ before the first step in the algorithm to adjust this. (If you have
+ a problem because your algorithm is longer than 99 steps then you
+ should better use
+ |\settowidth{\steplabelwidth}{\makealgolabel{999}}|%
+ .)
+
+ |\begin{block}|~\meta{body}~|\end{block}| produces an indented
+ block. An |\algolabel{|\meta{subkey}|}| before the \meta{body}
+ generates a reference
+ %\meta{masterkey}|-|\meta{subkey}
+ to the \emph{range} of steps inside the block. Actually, the
+ environment \Lenv{block} is combined from environments
+ \Lenv{indention} and \Lenv{range}. |\begin{indention}| \meta{body}
+ |\end{indention}| just produces some indented lines, while
+ |\begin{range}| |\algolabel{|\meta{subkey}|}| \meta{body}
+ |\end{range}| allows to reference a range of steps.
+
+
+ More advanced facilities might help you:
+ \begin{itemize}
+ \item |\begin{ifblock}{|\meta{condition}|}| \meta{body}
+ |\end{ifblock}|
+ \item |\begin{elifblock}{|\meta{condition}|}| \meta{body}
+ |\end{elifblock}|
+ \item |\begin{elseblock}| \meta{body} |\end{elseblock}|
+ \item |\begin{forblock}{|\meta{loop control}|}| \meta{body}
+ |\end{forblock}|
+ \item |\begin{whileblock}{|\meta{condition}|}| \meta{body}
+ |\end{whileblock}|
+ \item |\begin{untilblock}{|\meta{condition}|}| \meta{body}
+ |\end{untilblock}|
+ \item |\begin{blockwhile}{|\meta{condition}|}| \meta{body}
+ |\end{blockwhile}|
+ \item |\begin{blockuntil}{|\meta{condition}|}| \meta{body}
+ |\end{blockuntil}|
+ \end{itemize}
+ For example, the first of these is almost equivalent to:
+ \begin{verse}
+ |\item|\\
+ | \IF |\meta{condition}| \THEN|\\
+ |\begin{block}|\\
+ | |\meta{body}\\
+ |\end{block}|
+ \end{verse}
+ The actual implementation also takes care of a label to the entire
+ range of steps. If you put a label in an \Lenv{ifblock}, you
+ reference the range containing the \textsf{If} step and the
+ \textsf{then} block. If you need a reference for the \textsf{If}
+ step itself, or you use \meta{label} for all steps, then put
+ |\item[|\meta{label}|]\algolabel{|\meta{subkey}|}| before the
+ \Lenv{ifblock}.
+
+ Typesetting keywords is done as follows: |\keyword{|\meta{name}|}|
+ produces a keyword. |\FOR|, |\DO|, |\WHILE|, |\REPEAT|,
+ |\UNTIL|, |\IF|, |\THEN|, |\ELSE|, |\RETURN| are predefined
+ keywords. Further, |\COMMENT{|\meta{comment}|}| can be used to type
+ comments.
+\end{description}
+
+
+% \changes{v2.03}{2005/08/29}{Added section on interaction with other
+% packages}
+\section{Interaction with other packages}
+
+\begin{description}
+\item[\Lpackage{hyperref}] This package must be loaded after
+ \Lpackage{cc-cls}. Otherwise, references will not work as expected
+ with \Lpackage{hyperref}.
+\item[\Lpackage{beamer}] If you want to use \Lpackage{cc-cls},
+ \Lpackage{ccthm} and/or \Lpackage{ccalgo} you must use the option
+ \Lclo{noamsthm} to \Lclass{beamer} and make sure that
+ \Lpackage{babel} is loaded with at least the language \Lclo{english}
+ before calling \Lpackage{ccthm} or \Lpackage{ccalgo}.
+\end{description}
+
+
+\DocInput{cc.dtx}
+
+\Finale
+
+\end{document}
+%</driver>
+%<*quickref>
+\documentclass[shortarticle,noccpublish,noautotitle,%
+multilingual,english]{cc}
+
+\IfFileExists{texexample.sty}{}{%
+ \typeout{Some files are missing.}
+ \typeout{Please first do: latex cc.dtx}
+ \endinput
+ }
+
+\dimen254\marginparwidth
+\let\ccorgmaketitle\maketitle
+\usepackage{doc}
+\normalmarginpar
+\let\maketitle\ccorgmaketitle
+\marginparwidth\dimen254
+\MakeShortVerb{\|}
+
+\usepackage{texexample}
+
+
+\pagestyle{empty}
+\advance\textheight\headheight
+\headheight=0pt
+\advance\textheight\footskip
+\footskip=0pt
+
+\begin{document}
+
+\pagestyle{empty}
+\section*{Tables for quick reference}
+
+\bigskip
+
+\input{tab-algo}
+
+\clearpage
+\input{tab-struct}
+\enlargethispage{1cm}
+
+\input{tab-thmenv}
+
+\end{document}
+
+%</quickref>
+% meta-comment \fi
+%
+% \expandafter\newif\csname ifstopped\endcsname
+% \stoppedtrue
+% \StopEventually{
+% \ifstopped
+% \setcounter{IndexColumns}{2}%
+% \PrintIndex
+% \condbreak{2cm}
+% \bibliography{texrefs}
+% \fi
+% }
+% \stoppedfalse
+%
+% \condbreak{2cm}
+% \addcontentsline{toc}{section}{\refname}\bibliography{texrefs}
+% \makeendtitle\let\makeendtitle\relax%% We really want this!
+%
+% \cleardoublepage
+% \let\PrintDescribeEnv\ccorgPrintDescribeEnv
+% \let\PrintDescribeMacro\ccorgPrintDescribeMacro
+% \footnotesize
+% \part*{Source code}
+% \addcontentsline{toc}{part}{Source code}
+%
+% \GetFileInfo{cc.cls}
+%
+% \section{Source of \filename}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \begin{macrocode}
+%<*cccls>
+% \end{macrocode}
+%
+% \changes{v0.00}{1999/09/13}{Starting. Michael N{\"{u}}sken, Paderborn}
+% \changes{v0.80}{1999/10/22}{Alpha version, built according to
+% \texttt{cc.sty}. Michael N{\"{u}}sken, Paderborn}
+% \changes{v0.90}{1999/11/09}{Beta version. Michael N{\"{u}}sken, Paderborn}
+%
+% This document class can only be used with \LaTeXe{}, so we make
+% sure that an appropriate message is displayed when another \TeX{}
+% format is used.
+%
+% Announce the Class name and its version:
+% \changes{v0.90}{2000/02/16}{Advanced version to 1.99}
+% \changes{v1.99}{2000/02/29}{Advanced version to official 2.00}
+% \changes{v2.00}{2000/05/29}{Add definition of \ignorespaces for
+% \LaTeXe{} version of 1995/06/01.}
+% \changes{v2.00}{2000/06/21}{Advanced version to 2.01}
+% \changes{v2.01}{2001/08/28}{Advanced version to 2.02}
+% \changes{v2.02}{2002/01/08}{Advanced version to 2.03}
+% \changes{v2.03}{2005/08/29}{Advanced version to 2.04, Michael
+% N{\"{u}}sken, now(!) Bonn}
+% \changes{v2.04}{2006/03/08}{Advanced version to 2.05, Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.06}{2007/01/10}{Advanced version to 2.07, Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.07}{2008/03/18}{Advanced version to 2.08, Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.08}{2008/04/25}{Advanced version to 2.09, adapted
+% license information in cc.dtx and cc.ins, Michael N{\"{u}}sken,
+% Bonn}
+% \changes{v2.09}{2010/01/26}{Advanced version to 2.10, just a few
+% minor changes, Michael N{\"{u}}sken, Bonn}
+% \changes{v2.10}{2010/05/11}{Advanced version to 2.11, redesign of
+% algorithms, Michael N{\"{u}}sken, Bonn}
+% \changes{v2.11}{2010/05/16}{Advanced version to 2.12, deactivate
+% fullpage.sty when ccpublish is active, remove debug output in
+% ccalgo, Michael N{\"{u}}sken, Bonn}
+% \changes{v2.12}{2010/05/21}{Advanced version to 2.13, debugged
+% indention processing in ccalgo, Michael N{\"{u}}sken, Bonn}
+% \changes{v2.13}{2010/06/29}{Advanced version to 2.14, debugged
+% setrefrange in ccalgo, Michael N{\"{u}}sken, Bonn}
+% \changes{v2.14}{2010/10/14}{Advanced version to 2.15, added
+% cc4svjour, Michael N{\"{u}}sken, Bonn}
+% \changes{v2.15}{2010/10/21}{Advanced version to 2.15b, added ccref
+% built from moved code, Michael N{\"{u}}sken, Bonn}
+% \changes{v2.16}{2011/07/05}{Advanced version to 2.16, added more
+% new cctextarea options, changed default. Michael N{\"{u}}sken, Bonn}
+% \changes{v2.17b}{2011/07/06}{Advanced version to 2.17b, removed a
+% bug. Michael N{\"{u}}sken, Bonn}
+% \changes{v2.17c}{2011/07/13}{Advanced version to 2.17c, removed a
+% bug. Michael N{\"{u}}sken, Bonn}
+% \changes{v2.18}{2011/07/15}{Advanced version to 2.17c, removed a
+% bug. Michael N{\"{u}}sken, Bonn}
+% \changes{v2.19}{2011/07/28}{Advanced version to 2.19, many
+% modifications for publication service (search sps), removed some
+% comments. Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.20}{2011/07/29}{Advanced version to 2.20, bug fixes,
+% removed some. It is planned to advance to 3.0 soon. Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.21}{2012/04/17}{Advanced version to 2.21, bug fixes in
+% relation to \cs{bare}\cs{ref}. It is planned to advance to 3.0
+% soon. Michael N{\"{u}}sken, Bonn}
+% \changes{v2.22}{2012/05/07}{Added version in draft output. It is
+% planned to advance to 3.0 soon. Michael N{\"{u}}sken, Bonn}
+% \changes{v2.23}{2012/05/22}{Increased compatibility with hyperref.
+% Michael N{\"{u}}sken, Bonn}
+% \changes{v2.24}{2012/06/18}{Another bugfix to equation counting.
+% Michael N{\"{u}}sken, Bonn}
+% \changes{v2.25}{2012/06/21}{Allowing longer theorem comments.
+% Michael N{\"{u}}sken, Bonn}
+% \changes{v2.25b}{2013/06/26}{Changed in-proof item indention.
+% Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\providecommand\ignorespacesafterend{\@ignoretrue}
+\newif\ifclass
+\ifx\@currext\@clsextension\classtrue\else\classfalse\fi
+\ifclass\expandafter\ProvidesClass\else\expandafter\ProvidesPackage\fi
+{\ifclass cc\else cc-cls\fi}
+[% CC MAIN DATE AND VERSION ON NEXT LINE
+2016/03/01 v2.25f
+%2015/11/11 v2.25f
+%2015/02/23 v2.25e
+%2014/07/08 v2.25d
+computational complexity
+\ifclass document class\else package\fi]
+% \end{macrocode}
+%
+% \subsection{Load auxiliaries}
+%
+% We load the auxiliaries that are needed at various places. They
+% contain macros for warnings, lots of new |\if|s, and more.
+% \begin{macrocode}
+\RequirePackage{ccaux}
+% \end{macrocode}
+%
+% \subsection{Declaration of Options}
+%
+% The options \Lclo{localnumbering}, \Lclo{globalnumbering} or
+% \Lclo{longarticle}, \Lclo{shortarticle} affect the numbering of
+% theorem and equation like environments. Either they are numbered
+% globally, e.g. Theorem 23, or they are numbered within sections,
+% e.g. Theorem 4.2.
+% \begin{macrocode}
+\DeclareOption{localnumbering}{\@longarticletrue}
+\DeclareOption{globalnumbering}{\@longarticlefalse}
+\DeclareOption{longarticle}{\@longarticletrue}
+\DeclareOption{shortarticle}{\@longarticlefalse}
+% \end{macrocode}
+% The option \Lclo{cclayout} enables \cc's |\maketitle| and |\endmaketitle|,
+% and the page dimensions are set according to \cc's requirements.
+% If the option \Lclo{nocclayout} is used the page layout |cc| is
+% still defined, but |\maketitle| and |\endmaketitle| are not defined
+% and the page dimensions are left unchanged. Also |\author|,
+% |\title|, \dots{} are not required any more.
+% \changes{v2.00}{2000/04/10}{Added option cclayout. Michael N{\"{u}}sken,
+% Paderborn}
+% \begin{macrocode}
+\DeclareOption{cclayout}{\@cclayouttrue}
+\DeclareOption{nocclayout}{\@cclayoutfalse}
+% \end{macrocode}
+% The options \Lclo{prefixes}, \Lclo{noprefixes} decide whether a
+% reference produces `Theorem 4.2' or just `4.2'. The options
+% \Lclo{bare}, \Lclo{nobare} decide whether |\bare\ref| produces `4.2'
+% or not. These options are passed to the package
+% \Lpackage{relabel}, which is responsible for this kind of trick.
+% \begin{macrocode}
+\DeclareOption{prefixes}{%
+ \PassOptionsToPackage{\CurrentOption}{relabel}}
+\DeclareOption{noprefixes}{%
+ \ExecuteOptions{notheoremitemprefixes}%
+ \PassOptionsToPackage{\CurrentOption,nobare}{relabel}}
+\DeclareOption{bare}{\PassOptionsToPackage{\CurrentOption}{relabel}}
+\DeclareOption{nobare}{\PassOptionsToPackage{\CurrentOption}{relabel}}
+% \end{macrocode}
+% In multilingual setups it might be better to use the font
+% encoding scheme T1 which uses 256 characters per font.
+% By default latin1 input encoding is used. If you need something
+% else, this can be disabled.
+% \changes{v2.00}{2000/04/11}{Added options latin1/nolatin1. Michael
+% N{\"{u}}sken, Paderborn}
+% \changes{v2.25d}{2014/07/08}{Added options utf8/noutf8, noinputenc.
+% Michael N{\"{u}}sken, Paderborn}
+% \begin{macrocode}
+\DeclareOption{multilingual}{\ExecuteOptions{T1,latin1,babel}}
+\DeclareOption{nomultilingual}{\ExecuteOptions{OT1,nolatin1,nobabel}}
+\DeclareOption{T1}{\@Tonetrue}
+\DeclareOption{OT1}{\@Tonefalse}
+\DeclareOption{latin1}{\@latintrue\@utfviiifalse}
+\DeclareOption{nolatin1}{\@latinfalse}
+\DeclareOption{utf8}{\@utfviiitrue\@latinfalse}
+\DeclareOption{noutf8}{\@utfviiifalse}
+\DeclareOption{noinputenc}{\@latinfalse\@utfviiifalse}
+\DeclareOption{babel}{\@babeltrue}
+\DeclareOption{nobabel}{\@babelfalse}
+% \end{macrocode}
+% The \AMS{} packages \Lpackage{amsmath}, \Lpackage{amsfonts} and
+% \Lpackage{amssymb} provide many useful features. Whether they are
+% loaded or not is determined by the following two options.
+% \begin{macrocode}
+\DeclareOption{ams}{\@amstrue}
+\DeclareOption{noams}{\@amsfalse}
+% \end{macrocode}
+% With \Lclo{autotitle} |\maketitle| and |\makeendtitle| are called
+% automatically at the beginning or end of the document, respectively.
+% \begin{macrocode}
+\DeclareOption{autotitle}{\@autotitletrue}
+\DeclareOption{noautotitle}{\@autotitlefalse}
+% \end{macrocode}
+% Sectioning for \cc{} is different from standard settings. The
+% following options turn this on or off.
+% \begin{macrocode}
+\DeclareOption{ccsectioning}{\@ccsectioningtrue}
+\DeclareOption{noccsectioning}{\@ccsectioningfalse}
+% \end{macrocode}
+% Citation and bibliography can be done either with the
+% \Lpackage{natbib} package by Richard W. Daly, or with the old \cc{}
+% macros, or with standard \LaTeX{}.
+% \changes{v2.01}{2001/08/28}{Added undocumented manualbibliography.
+% Michael N{\"{u}}sken, Paderborn.}
+% \changes{v2.02}{2001/12/13}{Added twocolumnbibliography.
+% Michael N{\"{u}}sken, Paderborn.}
+% \begin{macrocode}
+\DeclareOption{natbib}{\@natbibtrue\@cccitefalse}
+\DeclareOption{nonatbib}{\@natbibfalse\@cccitefalse}
+\DeclareOption{cccite}{\@natbibfalse\@cccitetrue}
+\DeclareOption{nocccite}{\@natbibfalse\@cccitefalse}
+\DeclareOption{manualbibliography}{\@manualbibliographytrue}
+\DeclareOption{twocolumnbibliography}{\@twocolumnbibliographytrue}
+\DeclareOption{onecolumnbibliography}{\@twocolumnbibliographyfalse}
+\DeclareOption{twocolumnendtitle}{\@twocolumnendtitletrue}
+\DeclareOption{onecolumnendtitle}{\@twocolumnendtitlefalse}
+% \end{macrocode}
+% With \Lenv{natbib} you can choose whether you want multiple
+% citations unsorted, sorted or compressed.
+% \begin{macrocode}
+\DeclareOption{nosort}{%
+ \def\@natbibsort{}}
+\DeclareOption{sort}{%
+ \def\@natbibsort{\PassOptionsToPackage{sort}{natbib}}}
+\DeclareOption{compress}{%
+ \def\@natbibsort{\PassOptionsToPackage{compress}{natbib}}}
+\DeclareOption{sort&compress}{%
+ \def\@natbibsort{\PassOptionsToPackage{sort&compress}{natbib}}}
+% \end{macrocode}
+% Theorem like environments for \cc{} are different from standard
+% settings. The following options turn this on or off.
+% \changes{v2.01}{2000/06/28}{Added cctheorems+separatelycounted.
+% Michael N{\"{u}}sken, Paderborn.}
+% \begin{macrocode}
+\DeclareOption{cctheorems}{\@cctheoremstrue\@standardtheoremstrue}
+\DeclareOption{cctheorems+separatelycounted}{%
+ \@cctheoremstrue\@standardtheoremsfalse}
+\DeclareOption{nocctheorems}{\@cctheoremsfalse}
+% \end{macrocode}
+% By default theorem-like environment are counted with equations.
+% The following options turn this on or off.
+% \changes{v2.02}{2001/12/06}{Added separateequationcounting.
+% Michael N{\"{u}}sken, Paderborn.}
+% \begin{macrocode}
+\DeclareOption{separateequationcounting}{\@ccnosepeqncntfalse}
+\DeclareOption{noseparateequationcounting}{\@ccnosepeqncnttrue}
+% \end{macrocode}
+% Theorem like environments for \cc{} are different from standard
+% settings. The following options turn this on or off.
+% \begin{macrocode}
+\DeclareOption{ccalgorithms}{\@ccalgotrue}
+\DeclareOption{noccalgorithms}{\@ccalgofalse}
+% \end{macrocode}
+% See \Lpackage{ccthm} below for the effect of these options.
+% \begin{macrocode}
+\DeclareOption{theoremitemprefixes}{%
+ \PassOptionsToPackage{\CurrentOption}{ccthm}}
+\DeclareOption{notheoremitemprefixes}{%
+ \PassOptionsToPackage{\CurrentOption}{ccthm}}
+\DeclareOption{enhancedprefixes}{% old
+ \PassOptionsToPackage{theoremitemprefixes}{ccthm}}
+\DeclareOption{standardprefixes}{% old
+ \PassOptionsToPackage{notheoremitemprefixes}{ccthm}}
+% \end{macrocode}
+% \cc{} requires received date, author, title, abstract, keywords,
+% subject classification and acknowledgements. With
+% \Lclo{noccpublish} these things are optional.
+% \begin{macrocode}
+\DeclareOption{ccpublish}{\@ccpublishtrue}
+\DeclareOption{noccpublish}{\@ccpublishfalse\ExecuteOptions{textarea=none}}
+% \end{macrocode}
+% \Lclo{cctextarea} means that the text part of the page is exactly as
+% specified for \cc{}, it is the default with the class. It's
+% counterpart \Lclo{nocctextarea} is the default with the package
+% version and with all options \Lclo{*paper}.
+% \changes{v2.01}{2001/02/22}{Added options cctextarea/nocctextarea.
+% Michael N{\"{u}}sken, Paderborn}
+% \changes{v2.16}{2011/07/05}{Added options cctextarea=2/cctextarea=1.
+% Michael N{\"{u}}sken, Bonn}
+%
+% \Lclo{classicalmargins} are as with the old \file{cc.sty}.
+% \Lclo{printmargins} are as in the printed version, while
+% \Lclo{balancedmargins} uses equal |\oddsidemargin| and
+% |\evensidemargin|.
+% \begin{macrocode}
+\DeclareOption{textarea=full}{\@textareaversion\m@ne}
+\DeclareOption{textarea=none}{\@textareaversion\z@}
+\DeclareOption{textarea=cc1}{\@textareaversion\@ne}
+\DeclareOption{textarea=cc2}{\@textareaversion\tw@}
+\DeclareOption{textarea=cc}{\@cctextareatrue}
+\DeclareOption{cctextarea}{\@cctextareatrue}
+\DeclareOption{nocctextarea}{\@cctextareafalse}
+\DeclareOption{noothermargins}{\@marginmode\m@ne}
+\DeclareOption{classicalmargins}{\@marginmode\z@}
+\DeclareOption{printmargins}{\@marginmode\@ne}
+\DeclareOption{balancedmargins}{\@marginmode\tw@}
+% \end{macrocode}
+% The following options are passed to the document class
+% \Lclass{article}. Since we prefer \Lclo{12pt}, the size options
+% are handled slightly different.
+% \begin{macrocode}
+\DeclareOption{10pt}{\def\@ccptsize{10}}
+\DeclareOption{11pt}{\def\@ccptsize{11}}
+\DeclareOption{12pt}{\def\@ccptsize{12}}
+\DeclareOption{a4paper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{a5paper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{b5paper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{letterpaper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{legalpaper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{executivepaper}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{landscape}{\@cctextareafalse%
+ \PassOptionsToClass{\CurrentOption}{article}}
+\DeclareOption{oneside}{\@twosidefalse}
+\DeclareOption{twoside}{\@twosidetrue}
+\DeclareOption{leqno}{%
+ \PassOptionsToClass{\CurrentOption}{article}%
+ \PassOptionsToPackage{\CurrentOption}{amsmath}%
+ }
+\DeclareOption{reqno}{%
+ \PassOptionsToClass{\CurrentOption}{article}%
+ \PassOptionsToPackage{\CurrentOption}{amsmath}%
+ }
+\DeclareOption*{\OptionNotUsed
+ \PassOptionsToClass{\CurrentOption}{article}}
+% \end{macrocode}
+% Now, all options are defined. We execute the default options.
+% \changes{v2.20}{2011/09/12}{Removed default option balancedmargin.
+% Michael N{\"{u}}sken, Bonn.}
+% \begin{macrocode}
+\ifclass
+\ExecuteOptions{a4paper,12pt,cctextarea,twoside,%
+ OT1,nolatin1,nobabel,%
+ localnumbering,bare,%
+ leqno,ams,ccpublish,cclayout,autotitle,ccsectioning,%
+ onecolumnbibliography,twocolumnendtitle,natbib,sort&compress,%
+ cctheorems,theoremitemprefixes,noseparateequationcounting,%
+ ccalgorithms}
+\else
+\ExecuteOptions{a4paper,12pt,nocctextarea,balancedmargins,twoside,%
+ OT1,nolatin1,nobabel,%
+ localnumbering,bare,%
+ leqno,ams,noccpublish,nocclayout,noautotitle,ccsectioning,%
+ onecolumnbibliography,twocolumnendtitle,natbib,sort&compress,%
+ cctheorems,theoremitemprefixes,noseparateequationcounting,%
+ ccalgorithms}
+\fi
+% \end{macrocode}
+% Then we process the class options in calling order.
+% \changes{v2.25d}{2014/07/08}{Process options in calling order
+% rather than definition order. Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\ProcessOptions*
+% \end{macrocode}
+% Finally, the pointsize is passed to the \Lclass{article} class and
+% the sorting mode to the \Lpackage{natbib} package.
+% \changes{v2.00}{2000/04/11}{Changed \cs{@ptsize} to
+% \cs{@ccptsize}. Michael N{\"{u}}sken, Paderborn.}
+% \begin{macrocode}
+\PassOptionsToClass{\@ccptsize pt}{article}
+\if@twoside
+\PassOptionsToClass{twoside}{article}
+\else
+\PassOptionsToClass{oneside}{article}
+\fi
+\let\@ccptsize\@undefined
+\@natbibsort
+\let\@natbibsort\@undefined
+% \end{macrocode}
+% Give a warning when using weird features.
+% \changes{v2.01}{2000/06/28}{Added warning for cctheorems+separatelycounted.
+% Michael N{\"{u}}sken, Paderborn.}
+% \begin{macrocode}
+\if@standardtheorems\else
+ \ClassWarning{cc}{You are using the non documented
+ feature\MessageBreak
+ cctheorems+separatelycounted.\MessageBreak
+ It is recommended not to use this.}
+\fi
+% \end{macrocode}
+%
+% \subsection{Logo}
+%
+% \begin{macro}{\cc}
+% This is the logo of \cc{}.
+% \begin{macrocode}
+\newcommand{\cc}{\textsf{computational complexity}}
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Class and packages}
+%
+% We load the document class \Lclass{article}.
+% \begin{macrocode}
+\ifclass
+\LoadClass{article}[1999/01/07 v1.4a]
+\fi
+% \end{macrocode}
+% Optionally, the font encoding is switched to T1. In any case, we
+% use input encoding |latin1|, thus Umlaute and other special
+% characters have a defined value.
+% \changes{v2.00}{2000/04/11}{Made inputenc optional. Michael
+% N{\"{u}}sken, Paderborn}
+% \changes{v2.00}{2000/06/21}{Added \cs{babel}\cs{def} and
+% definitions for english and german words. Michael N{\"{u}}sken,
+% Paderborn}
+% \changes{v2.01}{2000/09/15}{Forbid loading of german by pretending
+% that this has been done already.
+% Michael N{\"{u}}sken, Paderborn}
+% \changes{v2.25d}{2014/07/08}{Added support for utf8/noutf8. Michael
+% N{\"{u}}sken, Paderborn}
+% \begin{macrocode}
+\if@Tone
+\RequirePackage[T1]{fontenc}
+\fi
+% german.sty is not allowed. Use global options: multilingual,german.
+\@pass@ptions\@pkgextension{}{german}
+\global\expandafter\let\csname ver@german.\@pkgextension\endcsname\@empty
+\if@babel
+\RequirePackage{babel}[2008/07/06 v3.8l]
+\fi
+\if@utfviii
+\RequirePackage[utf8]{inputenc}[2008/03/30 v1.1d]
+\else\if@latin
+\RequirePackage[latin1]{inputenc}[2008/03/30 v1.1d]
+\fi\fi
+% \end{macrocode}
+% Next, we load the \AMS{} packages if required. If not we define
+% some commands that we need and that would have been provided by
+% these packages.
+% \begin{macrocode}
+\if@ams
+\RequirePackage{amsmath}[2000/01/15 v2.05]% 1997/03/20 v1.2d
+% amsmath contains amstext, amsgen, amsbsy, amsopn
+\RequirePackage{amsfonts}[1997/09/17 v2.2e]
+\RequirePackage{amssymb}[1996/11/03 v2.2b]
+\else
+\newcommand{\numberwithin}[3][\arabic]{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}{%
+ \@ifundefined{c@#3}{\@nocnterr{#3}}{%
+ \@addtoreset{#2}{#3}%
+ \expandafter\xdef\csname the#2\endcsname{%
+ \expandafter\noexpand\csname the#3\endcsname%
+ .\noexpand#1{#2}}}}%
+}
+\let\@ifempty\cc@ifempty
+\let\@ifnotempty\cc@ifnotempty
+\let\bigstar\bullet
+\let\lozenge\circ
+\def\square{{\fboxsep.3em{\vbox{\hbox{\fbox{}}\vskip0pt}}}}%
+\let\text\mbox
+\fi
+% \end{macrocode}
+% \begin{macro}{\email}
+% \begin{macro}{\homepage}
+% The package \Lpackage{url} defines macros to handle URLs and so
+% on. We also use this for email addresses and home page
+% addresses.
+% \changes{v2.00}{2000/04/04}{Modified \cs{UrlSpecials} as proposed by
+% Paul Daly. Michael N{\"{u}}sken, Paderbon}
+% \begin{macrocode}
+\RequirePackage{url}[2006/04/12 ver 3.3]
+\expandafter\def\expandafter\UrlSpecials\expandafter{%
+ \UrlSpecials\do\%{}}
+\providecommand{\email}{\begingroup\urlstyle{tt}\Url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Fixed fonts}
+%
+% \begin{macro}{\ixpt}
+% \begin{macro}{\xptsfbx}
+% \begin{macro}{\textsfbx}
+% For the (over)headline of the first page of an article and for
+% the logo, some special font commands are needed. |\ixpt|
+% switches to 9pt fonts, |\xptsfbx| switches to 10pt sans serif font,
+% and |\textsfbx| switches to bold sans serif font.
+% \begin{macrocode}
+\providecommand{\ixpt}{\@setfontsize\ixpt\@ixpt{11}}
+\newcommand{\xptsfbx}{%
+ \@setfontsize\xpt\@xpt{12}\usefont{OT1}{cmss}{bx}{n}}
+\DeclareTextFontCommand{\textsfbx}{\usefont{OT1}{cmss}{bx}{n}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Macros to collect data}
+%
+% Most of the code for page layout is in the package
+% \Lpackage{cclayout}.
+% \begin{macrocode}
+\if@cclayout
+\RequirePackage{cclayout}
+\else
+% \end{macrocode}
+% \begin{macro}{\ps@cc}
+% A variant of the page style \texttt{cc} is defined. Use
+% |\renewcommand{\cctitlehead}{|\meta{title text}|}| to specify the
+% text for the running heads, and
+% |\renewcommand{\ccauthorhead}{|\meta{author(s)}|}| to specify the
+% authors for the running heads.
+% \begin{macrocode}
+\newskip\headerindent \headerindent=10mm
+\newdimen\headrulewidth \headrulewidth.4pt
+\def\cctitlehead{}
+\def\ccauthorhead{}
+\let\ps@ccfirst\ps@empty
+\def\ps@cc{\let\@mkboth\markboth
+ \def\@oddhead{\vbox{\hbox to\textwidth{\reset@font\strut
+ \null
+ \hfil
+ {\small\cctitlehead}%
+ \hbox to\headerindent{\hfil\thepage}%
+ }%
+ \if@ccpublish\else
+ \kern2.6\p@
+ \hrule\@height\headrulewidth\kern-\headrulewidth
+ \kern-2.6\p@
+ \fi
+ \vskip\z@
+ }%
+ }%
+ \def\@oddfoot{}
+ \def\@evenhead{\vbox{\hbox to\textwidth{\reset@font\strut
+ \hbox to\headerindent{\thepage\hfil}%
+ {\small\ccauthorhead}%
+ \hfil
+ \null
+ }%
+ \if@ccpublish\else
+ \kern2.6\p@
+ \hrule\@height\headrulewidth\kern-\headrulewidth
+ \kern-2.6\p@
+ \fi
+ \vskip\z@
+ }%
+ }%
+ \let\@evenfoot\@oddfoot
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macrocode}
+\fi%@cclayout
+% \end{macrocode}
+%
+%
+% \subsection{Sectioning}
+%
+% \begin{macrocode}
+\if@ccsectioning
+% \end{macrocode}
+% For \cc{} we use different layout for |\section|, |\subsection| and
+% |\subsubsection| titles.
+% \begin{macrocode}
+\def\@seccntformat#1{\csname the#1\endcsname.\enskip}
+% \end{macrocode}
+% \begin{macro}{\section}
+% Section titles are |\large|, |\bfseries| and centered.
+% \begin{macrocode}
+\renewcommand{\section}{\@startsection{section}{1}{\z@}%
+ {-2.9ex\@plus-.5ex\@minus-.2ex}%
+ {1.5ex\@plus.5ex\@minus.2ex}%
+ {\normalfont\large\bfseries\centering}}
+% \ifclass\else
+% \renewcommand \thesection {\@arabic\c@section}
+% \fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\subsection}
+% \begin{macro}{\subsubsection}
+% Subsection and subsubsection titles are |\bfseries| and embedded in
+% the text with 1~em distance. And these text embedded titles shall
+% always terminate with a full stop, unless they terminate with a
+% full stop, question mark, or exlamantion mark.
+% \changes{v2.06}{2006/10/13}{Made full stop in section and
+% subsection headings optional.}
+% \begin{macrocode}
+\def\opt@fullstop#1{#1{\has@fullstop#1.\@@@
+\if@tempswa\else
+\has@exlamationmark#1!\@@@
+\if@tempswa\else
+\has@questionmark#1?\@@@
+\if@tempswa\else
+.\fi
+\fi
+\fi}}
+\def\has@fullstop#1.#2\@@@{\@ifempty{#2}{\@tempswafalse}{\@tempswatrue}}
+\def\has@exlamationmark#1!#2\@@@{\@ifempty{#2}{\@tempswafalse}{\@tempswatrue}}
+\def\has@questionmark#1?#2\@@@{\@ifempty{#2}{\@tempswafalse}{\@tempswatrue}}
+\def\dot@sect#1#2#3#4#5#6[#7]#8{%
+ \let\@sect\ccorg@sect\let\@ssect\ccorg@ssect
+ \@sect{#1}{#2}{#3}{#4}{#5}{#6}[#7]{\opt@fullstop{#8}}}
+\def\dot@ssect#1#2#3#4#5{%
+ \let\@sect\ccorg@sect\let\@ssect\ccorg@ssect
+ \@ssect{#1}{#2}{#3}{#4}{\opt@fullstop{#5}}}
+\def\add@dot{%
+ \let\ccorg@sect\@sect\let\ccorg@ssect\@ssect
+ \let\@sect\dot@sect\let\@ssect\dot@ssect}
+\renewcommand{\subsection}{%
+ \add@dot
+ \@startsection{subsection}{2}{\z@}%
+ {2.33ex\@plus.5ex\@minus.2ex}% was 12pt +-
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+\renewcommand{\subsubsection}{%
+ \add@dot
+ \@startsection{subsubsection}{3}{\z@}%
+ {1.55ex\@plus.5ex\@minus.2ex}% was 8pt +-
+ {-1em}%
+ {\normalfont\normalsize\bfseries}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\paragraph}
+% \begin{macro}{\subparagraph}
+% Paragraphs and subparagraphs are inherited from the class.
+% \begin{macrocode}
+\fi%@ccsectioning
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% \subsection{Bibliography and citations}
+%
+% The preferred access to bibliography and citations is via the
+% package \Lpackage{natbib}. It provides much more flexibility for
+% the user and works with almost every bibliography style.
+% \changes{v2.01}{2001/08/28}{Added undocumented manualbibliography.
+% Michael N{\"{u}}sken, Paderborn.}
+% \begin{macrocode}
+\if@natbib
+\RequirePackage{cc2cite}
+\if@manualbibliography
+\bibstyle@plain%\bibpunct{[}{]}{;}{n}{}{,}
+\fi
+\else%@natbib
+\if@cccite
+% \end{macrocode}
+%
+% The package \Lpackage{cccite} contains the definitions for the
+% informative citation style like `Cook (1971)'. It also issues
+% |\bibliographystyle{\bibstyle@default}|, if no other style is
+% defined before the |\bibliography| command.
+% \begin{macrocode}
+\RequirePackage{cccite}
+% \end{macrocode}
+%
+% \begin{environment}{thebibliography}
+% We redefine this environment in order to reflect the citation
+% scheme given by \Lpackage{cccite} and to allow also the
+% alternative style using numbers.
+% \changes{v0.90}{1999/11/11}{Added \cs{condbreak\{8ex\}}. Michael
+% N{\"{u}}sken, Paderborn}
+% \changes{v0.90}{2000/01/12}{Added toc entry. Michael N{\"{u}}sken,
+% Paderborn}
+% \begin{macrocode}
+\renewcommand{\thebibliography}[1]{%
+ \condbreak{8ex}%
+ \section*{\refname
+ \addcontentsline{toc}{section}{\refname}%
+ \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}}%
+ \vskip-\lastskip
+ \list{[\@arabic\c@enumiv] }%
+ {%
+ \labelwidth\z@
+ \labelsep\z@
+ \leftmargin\z@
+ \@openbib@code
+ \usecounter{enumiv}%
+ \let\p@enumiv\@empty
+ \renewcommand\theenumiv{\@arabic\c@enumiv}%
+ }%
+ \sloppy
+ \clubpenalty4000
+ \@clubpenalty \clubpenalty
+ \widowpenalty4000
+ \sfcode`\.\@m
+ \bibfont}
+\let\bibfont\small
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\@bibitem}
+% Check whether this macro still is what we suppose it to be. It
+% is responsible for typesetting bibliography items that have to
+% be numbered
+% \begin{macrocode}
+\CheckCommand*\@bibitem[1]{\item\if@filesw \immediate\write\@auxout
+ {\string\bibcite{#1}{\the\value{\@listctr}}}\fi\ignorespaces}
+% \end{macrocode}
+% We redefine it, in order to procude brackets for the labels if no
+% one is specified.
+% \begin{macrocode}
+\def\@bibitem#1{\item\if@filesw \immediate\write\@auxout
+ {\string\bibcite{#1}{[\the\value{\@listctr}]}}\fi\ignorespaces}
+% \end{macrocode}
+% \end{macro}
+%
+% It is also possible to omit both, \Lpackage{natbib} and
+% \Lpackage{cccite}. Then only standard \LaTeXe{} citation and
+% bibliography are available. (However, \Lpackage{natbib} should
+% even then work fine, so: use it.)
+% \begin{macrocode}
+\else
+ \relax
+\fi%@cccite
+\fi%@natbib
+% \end{macrocode}
+% Optionally, we also provide a twocolumn bibliography.
+% \changes{v2.02}{2001/12/13}{Added twocolumnbibliography.
+% Michael N{\"{u}}sken, Paderborn.}
+% \begin{macrocode}
+\if@twocolumnbibliography
+\RequirePackage{multicol}
+\newenvironment{nthebibliography}{%
+ \footnotesize
+ \let\bibfont\footnotesize
+ \let\section\subsubsection
+ \begin{multicols}2
+ \othebibliography}
+ {%
+ \vfill\vfill\vfill\vfill
+ \endothebibliography
+ \end{multicols}}
+\AtBeginDocument{%
+ \let\othebibliography\thebibliography
+ \let\endothebibliography\endthebibliography
+ \let\thebibliography\nthebibliography
+ \let\endthebibliography\endnthebibliography}
+\fi
+% \end{macrocode}
+%
+% \subsection{Referencing}
+%
+% All this stuff has been moved to a seperate file: \Lpackage{ccref}.
+% \changes{v2.15}{2010/10/21}{Moved this from the main part into a
+% seperate file.}
+%
+% \begin{macrocode}
+\RequirePackage{ccref}
+% \end{macrocode}
+%
+% \subsection{Theorems, Proofs and Algorithms}
+%
+% All these things are imported.
+% \begin{macrocode}
+\if@cctheorems
+\RequirePackage{ccthm}
+\RequirePackage{ccproof}
+\fi
+\if@ccalgo
+\RequirePackage{ccalgo}
+\fi
+\let\orig@newtheorem\newtheorem
+\def\newtheorem{%
+ \ClassWarning{cc}{You should not use newtheorem.\MessageBreak
+ See Section 3.1 of the documentation.}%
+ \orig@newtheorem}
+% \end{macrocode}
+%
+% \subsection{Other}
+%
+% \begin{environment}{acknowledge}
+% This environment simply constitues of an unnumbered section.
+% To complicate things Springer adds a paragraph when the article
+% is made available for free. If an article has no
+% acknowledgements put the command \cs{noacknowledge} at the very
+% position.
+% \changes{v2.18}{2011/07/26}{Added \cs{noacknowledge} with support
+% for an extra open access message. Added acknowledgements to
+% toc. MNuesken, Bonn}
+% \begin{macrocode}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newif\if@ccack \@ccacktrue% usually acknowledgements are not required
+\AtEndDocument{%
+ \if@ccack\else
+ \ClassError{cc}{Missing acknowledgements}
+ {You must use either\MessageBreak
+ \protect\begin{acknowledge} ... \protect\end{acknowledge}\MessageBreak
+ or \protect\noacknowledge.}%
+ \fi
+}
+\newenvironment{acknowledge}{%
+ \section*{\ccacknowledgementsname}%
+ \addcontentsline{toc}{section}{\ccacknowledgementsname}%
+}{%
+ \noacknowledge
+}
+\newcommand{\noacknowledge}{%
+ \ifKV@ccsps@openaccess\if@ccack\else%
+ \noindent{\small\@octxt\par}%
+ \fi\fi%
+ \global\@ccacktrue
+}%
+\def\@octxt{}%
+\def\openchoicetext#1{\gdef\@octxt{\paragraph{Open Access.} #1}}%
+\openchoicetext{This article is distributed under the terms of the
+ Creative Commons Attribution Noncommercial License which permits any
+ noncommercial use, distribution, and reproduction in any medium,
+ provided the original author(s) and source are credited.}%
+% \end{macrocode}
+% \end{environment}
+%
+% Label items in itemized lists with open circle.
+% \begin{macrocode}
+\def\labelitemi{$\circ$}
+% \end{macrocode}
+%
+% Set length of footnoterule, shorter than the default.
+% \begin{macrocode}
+\def\footnoterule{\kern-3\p@\hrule\@width18mm\kern 2.6\p@}
+% \end{macrocode}
+%
+% \begin{macro}{\include}
+% In \cc{}, we do not want to waste any place, so we redefine
+% |\include| to be |\input| then.
+% \begin{macrocode}
+\let\ccorg@include\include
+\newwarning{warn@include}{Note that \protect\include\space is equivalent
+ to \protect\input\space.}
+\renewcommand{\include}{%
+ \if@ccpublish
+ \ccClassWarning{warn@include}%
+ \let\next\input
+ \else
+ \let\next\ccorg@include
+ \fi
+ \next}
+% \end{macrocode}
+% \end{macro}
+%
+% Forget the class toggle.
+% \begin{macrocode}
+% \let\ifclass\@undefined
+% \let\classtrue\@undefined
+% \let\classfalse\@undefined
+%</cccls>
+% \end{macrocode}
+%
+% \def\filename{ccaux.sty}
+% \CodelinePrefix{H}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It contains some definitions that are needed in several other files
+% of our macro package.
+% \changes{v2.03}{2002/01/08}{New Package \lpackage{ccaux}
+% collects some definitions that are needed by several other files.
+% Michael N{\"{u}}sken, Paderborn}
+% \begin{macrocode}
+%<*ccaux>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{ccaux}[2008/03/18 v2.08
+ computational complexity, auxiliaries.
+ Michael Nuesken, Bonn.]
+% \end{macrocode}
+%
+% \subsection{New ifs for document class options}
+%
+% \changes{v2.20}{2011/09/12}{Default marginmode now is -1 (noothermargins).
+% Michael N{\"{u}}sken, Bonn.}
+% \begin{macrocode}
+\newif\if@longarticle \@longarticletrue
+\newif\if@cclayout \@cclayouttrue
+\newif\if@Tone \@Tonetrue
+\newif\if@latin \@latintrue
+\newif\if@utfviii \@utfviiifalse
+\newif\if@babel \@babelfalse
+\newif\if@ams \@amstrue
+\newif\if@autotitle \@autotitletrue
+\newif\if@ccsectioning \@ccsectioningtrue
+\newif\if@cccite \@cccitefalse
+\newif\if@natbib \@natbibtrue
+\newif\if@manualbibliography \@manualbibliographyfalse
+\newif\if@twocolumnbibliography \@twocolumnbibliographyfalse
+\newif\if@twocolumnendtitle \@twocolumnendtitletrue
+\newif\if@cctheorems \@cctheoremstrue
+\newif\if@standardtheorems \@standardtheoremstrue
+\newif\if@ccnosepeqncnt \@ccnosepeqncnttrue
+\newif\if@ccalgo \@ccalgotrue
+\newif\if@theoremitemprefixes \@theoremitemprefixestrue
+\newif\if@ccpublish \@ccpublishfalse
+%\newif\if@cctextarea \@cctextareatrue
+\newcount\@textareaversion
+\expandafter\def\csname if@cctextarea\endcsname{\ifnum\@textareaversion>0}
+\def\@cctextareafalse{\@textareaversion\z@}
+\def\@cctextareatrue{\@textareaversion\tw@}
+\@cctextareatrue
+\newcount\@marginmode \@marginmode\m@ne
+% \end{macrocode}
+%
+% \subsection{Number equations and theorems within sections or chapter}
+% In long articles, equations and theorems which also use this
+% counter, figures and tables shall be numbered within sections.
+% \changes{v2.01}{2000/06/28}{Added handling for cctheorems+separatelycounted.
+% Michael N{\"{u}}sken, Paderborn.}
+% \changes{v2.03}{2002/01/09}{Introduced macro \cs{ccTOPLEVEL}.
+% Michael N{\"{u}}sken, Paderborn.}
+% \changes{v2.03}{2002/01/24}{Introduced macros \cs{numberallwithin}
+% and \cs{@adjustnumbering}. Renamed \cs{ccTOPLEVEL} to
+% \cs{cc@numberingtoplevel} and moved these things to ccaux.
+% Michael N{\"{u}}sken, Paderborn.}
+% \begin{macrocode}
+\def\numberallwithin#1{\gdef\cc@numberingtoplevel{#1}}
+\def\@adjustnumbering{%
+ \if@longarticle
+ \numberwithin{equation}\cc@numberingtoplevel
+ \numberwithin{figure}\cc@numberingtoplevel
+ \numberwithin{table}\cc@numberingtoplevel
+ \if@cctheorems\if@standardtheorems\else
+ \numberwithin{answer}\cc@numberingtoplevel
+ \numberwithin{assumption}\cc@numberingtoplevel
+ \numberwithin{claim}\cc@numberingtoplevel
+ \numberwithin{conjecture}\cc@numberingtoplevel
+ \numberwithin{convention}\cc@numberingtoplevel
+ \numberwithin{corollary}\cc@numberingtoplevel
+ \numberwithin{counterexample}\cc@numberingtoplevel
+ \numberwithin{definition}\cc@numberingtoplevel
+ \numberwithin{exercise}\cc@numberingtoplevel
+ \numberwithin{fact}\cc@numberingtoplevel
+ \numberwithin{hypothesis}\cc@numberingtoplevel
+ \numberwithin{lemma}\cc@numberingtoplevel
+ \numberwithin{notation}\cc@numberingtoplevel
+ \numberwithin{note}\cc@numberingtoplevel
+ \numberwithin{observation}\cc@numberingtoplevel
+ \numberwithin{open}\cc@numberingtoplevel
+ \numberwithin{openquestion}\cc@numberingtoplevel
+ \numberwithin{problem}\cc@numberingtoplevel
+ \numberwithin{proposition}\cc@numberingtoplevel
+ \numberwithin{question}\cc@numberingtoplevel
+ \numberwithin{remark}\cc@numberingtoplevel
+ \numberwithin{result}\cc@numberingtoplevel
+ \numberwithin{theorem}\cc@numberingtoplevel
+ \numberwithin{thesis}\cc@numberingtoplevel
+ \numberwithin{warning}\cc@numberingtoplevel
+ \numberwithin{exampleexample}\cc@numberingtoplevel
+ \fi\fi
+\fi}
+\numberallwithin{section}% redo this in the preamble, if necessary
+% \end{macrocode}
+%
+% \subsection{Warnings}
+%
+% \changes{v2.01}{2000/09/11}{Now some warnings are collected until
+% the end \dots{} Michael N{\"{u}}sken, Paderborn}
+% \begin{macro}{\newwarning}
+% Define a warning message.
+% \begin{macrocode}
+\newcommand{\newwarning}[2]{%
+ \expandafter\gdef\csname cc@warn@#1\endcsname{#2}%
+ \expandafter\def\csname cc@warncount@#1\endcsname{0}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\ccwarning}
+% Issue a warning.
+% \begin{macrocode}
+\newcommand{\ccClassWarning}[1]{%
+ \@ifundefined{cc@warn@#1}{%
+ \ClassWarning{cc}{Undefined warning.\MessageBreak
+ This should never occur.
+ Please inform nuesken@bit.uni-bonn.de .}%
+ }{}%
+ \expandafter\ifcase\csname cc@warncount@#1\endcsname\relax
+ \ClassWarning{cc}{\csname cc@warn@#1\endcsname.\MessageBreak
+ Possible further occurencies of this warning will be\MessageBreak
+ collected until the end of the document.\MessageBreak
+ This one was}%
+ \or
+ \AtEndDocument{%
+ \ClassWarningNoLine{cc}{Repeated warning collected \csname
+ cc@warncount@#1\endcsname\space times:\MessageBreak
+ \csname cc@warn@#1\endcsname}%
+ }%
+ \else
+ \fi
+ \expandafter\count@=0\csname cc@warncount@#1\endcsname\relax
+ \advance\count@\@ne
+ \expandafter\xdef\csname cc@warncount@#1\endcsname{\the\count@}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Diverse}
+%
+% \changes{v2.03}{2002/01/10}{Fixed bug: \cs{if@babel} is not properly
+% set when this is called, removed non-babel case. Michael
+% N{\"{u}}sken, Paderborn}
+% \changes{v2.03}{2002/03/07}{Added languages french, italian and
+% spanish to \cs{babel}\cs{def} and adjusted for it. Michael
+% N{\"{u}}sken, Paderborn}
+% \changes{v2.03}{2003/06/04}{Fixed bug: if babel is not loaded now
+% but will be later, then \cs{addto} must put its definitions in a
+% temporary macro and add it to the appropriate one only after the
+% preamble if the desired macro is defined by then and forget about
+% it otherwise.}
+% \changes{v2.03}{2004/06/21}{\cs{ccaddto} must not call
+% \cs{AtBeginDocument} when called inside the document (as for example
+% happens in algorithms...)}
+% \changes{v2.04}{2005/11/03}{\cs{ccaddto}, \cs{ccaddtoINDOC},
+% \cs{ccaddtonow} now use only global defs.)}
+% \changes{v2.07}{2008/03/18}{Changed \cs{cc@ifempty} to long, MN, Bonn}
+% \begin{macrocode}
+% \changes{v2.20}{2012/03/19}{Detangled \cs{addto} by using the new
+% name \cs{cc@addto}.}
+% \providecommand{\extdef}[2]{%
+% \ifx#1\@undefined\relax\def#1{}\fi%
+% \toks@=\expandafter{#1}%
+% \toks255={#2}%
+% \edef#1{\the\toks@\the\toks255}}
+\newcommand{\cc@addto}[2]{%
+ \expandafter\ccaddto\expandafter{\csname
+ cc@\string#1\endcsname}{#2}{#1}}
+\providecommand{\addto}[2]{%
+ \expandafter\ccaddto\expandafter{\csname
+ cc@\string#1\endcsname}{#2}{#1}}
+% \ccaddto is almost a copy of babel's \addto.
+% It's arguments are #1 = \cc@\FOO, #2=material, #3 = \FOO,
+% where \FOO is the macro where the material should be added and
+% \cc@\FOO the temporary macro to hold thing until the beginning of
+% the document. (Hopefully not too late for the first selectlanguage!)
+\newcommand{\ccaddto}[3]{%
+ \ifx#1\@undefined
+ \gdef#1{#2}%
+ \AtBeginDocument{\expandafter\ccaddtonow\expandafter{#1}#3}%
+ \else
+ \ifx#1\relax
+ \gdef#1{#2}%
+ \AtBeginDocument{\expandafter\ccaddtonow\expandafter{#1}#3}%
+ \else
+ {\toks@\expandafter{#1#2}%
+ \xdef#1{\the\toks@}}%
+ \fi
+ \fi
+}
+\newcommand{\ccaddtoINDOC}[3]{%
+ \ifx#1\@undefined
+ \gdef#1{#2}%
+ \else
+ \ifx#1\relax
+ \gdef#1{#2}%
+ \else
+ {\toks@\expandafter{#1#2}%
+ \xdef#1{\the\toks@}}%
+ \fi
+ \fi
+}
+\AtBeginDocument{\global\let\ccaddto\ccaddtoINDOC}
+\newcommand{\ccaddtonow}[2]{%
+ \ifx#2\@undefined
+ \gdef#2{#1}%
+ \else
+ \ifx#2\relax
+ \gdef#2{#1}%
+ \else
+ {\toks@\expandafter{#2#1}%
+ \xdef#2{\the\toks@}}%
+ \fi
+ \fi
+}
+% \@ifempty and \@ifnotempty are def'd in amsmath.sty, but we need it
+% here.
+\long\def\cc@ifempty#1{\cc@xifempty#1@@..\@nil}
+\long\def\cc@xifempty#1#2@#3#4#5\@nil{%
+ \ifx#3#4\expandafter\@firstoftwo\else\expandafter\@secondoftwo\fi}
+\long\def\cc@ifnotempty#1{\cc@ifempty{#1}{}}
+% \end{macrocode}
+% \begin{macro}{\babel}
+% \changes{v2.03}{2005/08/29}{Replaced \cs{babel}\cs{def} with a more
+% flexible construction.}
+% This shall simplify the addition of multilanguage support. A
+% macro |#1| that shall hold a name is assigned a version in
+% english |#2|. Further, that definition is added to
+% |\captionsenglish|. The optional argument |#3| is a comma
+% seperated list of equations \meta{language}=\meta{translation}.
+% Each non-empty translation is added to the
+% |\captions|\meta{language} of that language.
+% \begin{macrocode}
+\def\babel\def#1#2{%
+ \@ifnextchar[{\n@wbabel{#1}{#2}}{\n@wbabel{#1}{#2}[]}}
+\def\n@wbabel#1#2[#3]{%
+ \def#1{#2}%
+ \cc@ifnotempty{#2}{\cc@addto\captionsenglish{\def#1{#2}}}%
+ \babeladdtranslations#1{#3}%
+}
+\def\b@beladdlang#1=#2=#3\@@@#4{%
+ \cc@ifnotempty{#2}{%
+ \expandafter\cc@addto\csname captions#1\endcsname{\def#4{#2}}%
+ }%
+}
+% \end{macrocode}
+% You can use the macro |\babeladdtranslations| at any time to add
+% translations. Example:
+% \begin{center}
+% |\babeladdtranslations\treename{german=Baum,french=arbre}|
+% \end{center}
+% will add |\def\treename{Baum}| to |\captionsgerman| and so on.
+% \begin{macrocode}
+\def\babeladdtranslations#1#2{%
+ \@for\@tempa:=#2\do{\expandafter\b@beladdlang\@tempa==\@@@#1}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\condbreak}
+% This is H.~Partls |\condbreak| from \Lpackage{refman}
+% (\file{refman.sty}). Using |\condbreak{|\meta{length}|}| allows
+% a pagebreak if there is at most \meta{length} space left on the
+% current page.
+% \changes{v2.03}{2004/03/22}{Moved \cs{condbreak} to \lpackage{ccaux}}
+% \begin{macrocode}
+\def\condbreak#1{%
+ \vskip 0pt plus #1%
+ \pagebreak[3]%
+ \vskip 0pt plus -#1%
+ \relax}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{enumerate}
+% We extend the \Lenv{enumerate} by an optional |*|. This simply
+% continues a previously terminated \Lenv{enumerate}. Using
+% |\begin{enumerate}*| means that a previously terminated list is
+% continued.
+% \changes{v2.03}{2004/03/22}{Moved \lenv{enumerate} modification to
+% \lpackage{ccaux}}
+% \begin{macrocode}
+\let\ccorg@enumerate\enumerate
+\def\enumerate{\@ifstar{\count251\c@enumi
+ \count252\c@enumii
+ \count253\c@enumiii
+ \count254\c@enumiv
+ \ccorg@enumerate
+ \c@enumi\count251
+ \c@enumii\count252
+ \c@enumiii\count253
+ \c@enumiv\count254}%
+ {\ccorg@enumerate}}
+% \end{macrocode}
+% \end{environment}
+% \begin{macrocode}
+%
+%</ccaux>
+% \end{macrocode}
+%
+% \GetFileInfo{cclayout.sty}
+% \CodelinePrefix{L}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% \begin{macro}{\contact}
+% The following macros supplement the traditional |\author|,
+% |\title| and |\date| declarations. First, |\contact| declares the
+% email address of the contact author.
+% \begin{macrocode}
+%<*cclayout>
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{cclayout}[2012/06/22 v2.25 cclayout. MNuesken]
+\let\@contact\relax
+\newcommand{\contact}[1]{\gdef\@contact{#1}}
+\AtBeginDocument{\if@ccpublish
+ \@ifundefined{@contact}{%
+ \ClassWarningNoLine{cc}{Who is the contact author?\MessageBreak
+ Use \protect\contact\space in the preamble!}%
+ }{}%
+ \fi}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\submitted}
+% \begin{macro}{\received}
+% The macro |\received| stores its argument, the received date.
+% \begin{macrocode}
+\let\@received\relax
+\newcommand{\received}[1]{\gdef\@received{#1}}
+\AtBeginDocument{\if@ccpublish
+ \@ifundefined{@received}{%
+ \ClassWarningNoLine{cc}{Missing submission/received date.\MessageBreak
+ Use \protect\received\space in the preamble.}{}%
+ }{}%
+ \fi}
+\def\submitted{\received}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\titlehead}
+% The following macros supplement the traditional |\author|,
+% |\title| and |\date| declarations. First, |\titlehead| can be
+% used to declare a shortened version of the title to be used in
+% the running head. It simply stores its argument in a macro.
+% \begin{macrocode}
+\let\@titlehead\relax
+\newcommand{\titlehead}[1]{\gdef\@titlehead{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\authorhead}
+% |\authorhead| can be used to declare a different author list for
+% use in the head line. Usually, this should be automatically correct
+% without using this. It simply stores its argument in a macro.
+% \begin{macrocode}
+\let\@authorhead\@undefined
+\newcommand{\authorhead}[1]{\gdef\@authorhead{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\authorlist}
+% |\authorlist| can be used to declare a different author list for
+% use in the title. Usually, this should be automatically correct
+% without using this. It simply stores its argument in a macro.
+% \begin{macrocode}
+\let\@authorlist\@undefined
+\newcommand{\authorlist}[1]{\gdef\@authorlist{#1}}
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{abstract}
+% \begin{macro}{\Abstract}
+% The abstract is declared by the environment \Lenv{abstract}. It is
+% required for \cc{}, otherwise optional (although you get a warning
+% if there is no abstract). (Note that the article class defines an
+% abstract environment while the book class does not.) The command
+% |\Abstract{|\meta{text}|}| is deprecated and only exists for
+% downward compatibility.
+% \changes{v2.19}{2011/07/28}{Rewritten environments for abstract,
+% subject and keywords based on \lpackage{environ.sty}. Michael
+% N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+% \newbox\@abstract
+\let\abstract\@undefined\let\endabstract\@undefined
+\babel\def\ccabstractname{Abstract}[%
+ german=Zusammenfassung,french=R\'esum\'e]
+% \newenvironment{abstract}
+% {\global\setbox\@abstract\@abstr{\ccabstractname}}
+% {\end@abstr}
+\RequirePackage{environ}[2008/06/18]
+\def\@abstract@macro{}
+\long\def\for@cc@abstract#1{%
+ \gdef\@abstract@macro{\begin{@abstr}{\ccabstractname}#1\end{@abstr}}}
+\newenvironment{abstract}{\Collect@Body\for@cc@abstract}{}
+% \end{macrocode}
+% Deprecated now: |\Abstract|.
+% \begin{macrocode}
+\newcommand{\Abstract}{\for@cc@abstract}
+% \end{macrocode}
+% \end{macro}
+% \end{environment}
+% \begin{environment}{keywords}
+% Keywords are given using the environment \Lenv{keywords} which is
+% similar to \Lenv{abstract}. It simply stores its contents
+% in a box.
+% \begin{macrocode}
+% \newbox\@keywords
+\babel\def\cckeywordsname{Keywords}[%
+ german=Stichworte,french=Mot-cl\'e]
+% \newenvironment{keywords}
+% {\global\setbox\@keywords\@abstr{\cckeywordsname}}
+% {\end@abstr}
+\def\@keywords@macro{}
+\long\def\for@cc@keywords#1{%
+ \gdef\@keywords@macro{\begin{@abstr}{\cckeywordsname}#1\end{@abstr}}}
+\newenvironment{keywords}{\Collect@Body\for@cc@keywords}{}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{subject}
+% The environment \Lenv{subject} declares the subject
+% classification. It simply stores its contents
+% in a box.
+% \begin{macrocode}
+%\newbox\@subject
+\babel\def\ccsubjectclassificationname{Subject classification}[%
+ german=Klassifizierung,french=Classification de suj\`et]
+% \newenvironment{subject}
+% {\global\setbox\@subject\@abstr{\ccsubjectclassificationname}}
+% {\end@abstr}
+\def\@subject@macro{}
+\long\def\for@cc@subject#1{%
+ \gdef\@subject@macro{\begin{@abstr}{\ccsubjectclassificationname}
+ #1
+ \end{@abstr}}}
+\newenvironment{subject}{\Collect@Body\for@cc@subject}{}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{@abstr}
+% The environment \Lenv{@abstr} is for internal use only. It puts
+% the contents in a box, preceded by its argument as a title.
+% \changes{v2.04}{2006/03/06}{Changed @abstr to allow for very
+% long abstracts, MN, Bonn}
+% \changes{v2.07}{2008/03/18}{Changed @abstr to decrease spacing in
+% embedded lists and forbid nested lists, MN, Bonn}
+% \changes{v2.19}{2011/07/28}{Allowed one nested lists, MN, Bonn}
+% \begin{macrocode}
+\newdimen\@abstrwidth
+\newbox\@abstr@box
+\newenvironment{@abstr}[1]{%
+% \leavevmode
+ \setbox\@abstr@box\vbox\bgroup%
+ \@parboxrestore
+ \ifdim\@abstrwidth>\hsize\@abstrwidth\hsize\fi
+ \leftmargin.5\hsize \advance\leftmargin-.5\@abstrwidth
+ \rightmargin\leftmargin
+ \@trivlist\@newlistfalse\global\@inlabeltrue
+ \advance\linewidth -\rightmargin
+ \advance\linewidth -\leftmargin
+ \advance\@totalleftmargin \leftmargin
+ \parshape \@ne \@totalleftmargin \linewidth
+ \small
+ \def\@listi{\leftmargin\leftmargini
+ \topsep 2\p@ \@plus2\p@ \@minus1\p@
+ \parsep 1\p@
+ \itemsep \parsep}%
+ \def\@listii{\leftmargin\leftmarginii
+ \labelwidth\leftmarginii
+ \advance\labelwidth-\labelsep
+ \topsep 0\p@ \@plus1\p@
+ \parsep 1\p@
+ \itemsep \parsep}%
+ \let\@listiii\@toodeep
+ \let\@listiv\@toodeep
+ \let\@listv\@toodeep
+ \let\@listvi\@toodeep
+ \textbf{#1. }\ignorespaces}
+{%
+% \strut
+ \par
+ \egroup
+ \leavevmode\unvbox\@abstr@box
+ \ignorespacesafterend}
+% \end{macrocode}
+% \end{environment}
+% \begin{macro}{\noabstract}
+% \begin{macro}{\nokeywords}
+% \begin{macro}{\nosubject}
+% Usually, abstract, keywords and subject classification are
+% optional. But when published in \cc{} they are required. The
+% following commands allow you to omit one or more of them without
+% getting an error message.
+% \begin{macrocode}
+\newif\if@abstractoptional
+\if@ccpublish\@abstractoptionalfalse\else\@abstractoptionaltrue\fi
+\newcommand{\noabstract}{\ClassWarning{cc}{You are using a non
+ documented feature}\@abstractoptionaltrue}
+\newif\if@keywordsoptional
+\if@ccpublish\@keywordsoptionalfalse\else\@keywordsoptionaltrue\fi
+\newcommand{\nokeywords}{\ClassWarning{cc}{You are using a non
+ documented feature}\@keywordsoptionaltrue}
+\newif\if@subjectoptional
+\if@ccpublish\@subjectoptionalfalse\else\@subjectoptionaltrue\fi
+\newcommand{\nosubject}{\ClassWarning{cc}{You are using a non
+ documented feature}\@subjectoptionaltrue}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\subtitle}
+% \begin{macro}{\version}
+% The macros |\subtitle| and |\version| allow to add a subtitle or
+% version below the title.
+% \begin{macrocode}
+\def\@subtitle{}
+\newcommand{\subtitle}[1]{\def\@subtitle{#1}}
+\def\@version{}
+\newcommand{\version}[1]{\def\@version{#1}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+%
+% \changes{v2.18}{2011/07/26}{Simplify maketitle handling. Michael
+% Nüsken, Bonn}
+% Make sure that macros with first, last and number of pages are
+% available right after |\begin{document}|. This will be used for
+% \cs{maketitle} and possibly more.
+% \changes{v2.19}{2011/07/29}{Always use own secondoffive when
+% computing the page of ccenddocument (hyperref has five groups,
+% otherwise it's just two). Michael Nüsken, Bonn}
+% \begin{macrocode}
+\AtBeginDocument{\addtocounter{section}{-1}\refstepcounter{section}}%
+\AtEndDocument{\hrule height0pt\label{ccenddocument}}%
+\def\@ccunknown{??}
+\def\@ccfirst{1}%
+\let\@cclast\@ccunknown%
+\let\@ccnumberofpages\@ccunknown%
+\long\def\cc@secondoffive#1#2#3#4#5{#2}
+\AtBeginDocument{%
+ \@ifundefined{r@ccenddocument}{}{%
+ \@tempcnta\@ne
+ \advance\@tempcnta-\@ccfirst
+ \protected@xdef\@cclast{\csname r@ccenddocument\endcsname}%
+ \xdef\@cclast{\expandafter\cc@secondoffive\@cclast{}{}{}{}{}}%
+ \advance\@tempcnta\@cclast%
+ \xdef\@ccnumberofpages{\the\@tempcnta}%
+ }%
+}
+% \end{macrocode}
+%
+% \begin{macro}{\ccpublish}
+% The macro |\ccpublish| sets all data for an article to be published
+% in \cc{}.
+% \changes{v2.03}{2005/08/27}{Changed label at end of document to
+% |!end!document!| to avoid a problem with \lpackage{hyperref}.
+% (\lpackage{hyperref} does not allow |@| as part of label names.)}
+% \changes{v2.03}{2005/08/27}{Changed label at end of document to
+% |ccenddocument | to avoid a problem with \lpackage{hyperref}.
+% (\lpackage{hyperref} has also problems with |!| as part of label
+% names.)}
+% \changes{v2.18}{2011/07/26}{Moved label generation, see
+% above. Michael Nüsken, Bonn}
+% \begin{macrocode}
+\def\@cctxt{}
+\newif\if@cchead
+\newcommand{\noccpublish}[1]{%
+ \global\@ccpublishfalse
+ \global\@abstractoptionaltrue% Abstract optional
+ \global\@keywordsoptionaltrue% Keywords optional
+ \global\@subjectoptionaltrue% Subject class. optional
+ \global\@ccheadfalse
+ \gdef\@cctxt{#1}%
+% \global\@twosidefalse
+ }
+\newcommand{\ccpublish}[4]{% Deprecated since 2011/07/25
+ \global\@ccpublishtrue
+ \global\@abstractoptionalfalse% Abstract required
+ \global\@keywordsoptionalfalse% Keywords required
+ \global\@subjectoptionalfalse% Subject class. required
+ \global\@ccheadtrue
+ \gdef\@ccyear{#1}%
+ \gdef\@ccvolume{#2}%
+ \gdef\@ccissue{#3}%
+ \gdef\@ccfirst{#4}%
+ \gdef\@cctxt{cc \textbf{#2} (#1)}%
+ \global\@autotitletrue
+ \AtBeginDocument{\addtocounter{section}{-1}\refstepcounter{section}}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Springer publishing services adjustments}
+% \begin{macro}{\ccsps}
+% \changes{v2.18}{2011/07/27}{New macro \cs{ccsps} for Springer
+% publishing services. Michael Nüsken, Bonn}
+% The macro \cs{ccsps} collects all the settings needed in the
+% publishing process. See \ref{sec:editor} for details on its
+% use.
+%
+% We use the package \Lpackage{xkeyval} to parse the input.
+% \begin{macrocode}
+\RequirePackage{xkeyval}[2008/08/13]
+% \end{macrocode}
+%
+% These tiny helpers will allow to produce any fixed length output.
+% \begin{macro}{\cc@fixelendef}
+% The macro \cs{cc@fixelendef} defines \#3 as a fixed
+% expanded-length version of \#4 to \#1 places, cut on the left if
+% necessary or filled up with copies of \#2 on the left.
+% \begin{macro}{\cc@fixelen}
+% The macro \cs{cc@fixelen} outputs a fixed expanded-length version
+% of \#3 to \#1 places, cut on the left if necessary or filled up
+% with copies of \#2 on the left.
+% \begin{macrocode}
+\def\cc@fixlencountdown#1{%
+ \@tfor\@x:=#1\do{\advance\@tempcnta\m@ne}}
+\def\cc@fixelendef#1#2#3#4{%
+ \@tempcnta#1%
+ \edef\@tempa{#4}\expandafter\cc@fixlencountdown\expandafter{\@tempa}%
+ \gdef#3{}\relax
+ \@whilenum\@tempcnta>\z@\do{%
+ \expandafter\gdef\expandafter#3\expandafter{#3#2}%
+ \advance\@tempcnta\m@ne}%
+ \expandafter\gdef\expandafter#3\expandafter{#3#4}%
+}
+\def\cc@fixelen#1#2#3{%
+ \@tempcnta#1
+ \edef\@tempa{#3}\expandafter\cc@fixlencountdown\expandafter{\@tempa}%
+ \@whilenum\@tempcnta>\z@\do{%
+ #2%
+ \advance\@tempcnta\m@ne}%
+ \edef\@tempa{\noexpand\cc@fixelena#3\noexpand\@@@}\@tempa%
+}
+\def\cc@fixelena#1\@@@{%
+ \@tfor\@x:=#1\do{%
+ \advance\@tempcnta\@ne
+ \ifnum\@tempcnta>\z@\@x\fi
+ }%
+}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+%
+% Now we start defining all the options.
+%
+% |journal=|\meta{journalname} will set the journalname for use in
+% the running title, default |cc|.
+% |journalnumber=|\meta{journalnumber} sets the journalnumber for use
+% in the doi, default |37|. The key |sps| is here for internal
+% detection only.
+% \begin{macrocode}
+\define@boolkey{ccsps}{sps}[true]{}%
+\define@key{ccsps}{journal}[cc]{\gdef\@journalname{#1}}%
+\define@key{ccsps}{journalnumber}[37]{\gdef\@journalnumber{#1}}%
+% \end{macrocode}
+%
+% Set the submission date. This overrides
+% |\received{|\meta{date}|}|.
+% \begin{macrocode}
+\define@key{ccsps}{submitted}[??dd Month yyyy??]{%
+ \gdef\@received{#1}%
+ \gdef\received##1{\ClassWarning{cc}
+ {Received/submitted date (##1) override!\MessageBreak
+ Using \@received.}}}
+% \end{macrocode}
+%
+% \subsubsection{Revision stage}
+%
+% \begin{macrocode}
+\define@boolkey{ccsps}{revisionstage}[true]{%
+% \ifKV@ccsps@revisionstage\let\revisionstage=Y\else\let\revisionstage=N\fi
+}
+% \end{macrocode}
+%
+% The manuscript number occurs in the helper strip.
+% \begin{macrocode}
+% Four things to hook or not
+\define@key{ccsps}{DOImsnr}[??]{% manuscript number
+ \gdef\@DOImsnr{#1}}
+% \end{macrocode}
+% The options |TYPESET|, |DISK|, |LE|, |CP| just add checkmarks in
+% the helper strip.
+% \begin{macrocode}
+\define@boolkey{ccsps}{TYPESET}[true]{%
+ \ifKV@ccsps@TYPESET\let\TYPESET=Y\else\let\TYPESET=N\fi}
+\define@boolkey{ccsps}{DISK}[true]{%
+ \ifKV@ccsps@DISK\let\DISK=Y\else\let\DISK=N\fi}
+\define@boolkey{ccsps}{LE}[true]{%
+ \ifKV@ccsps@LE\let\LE=Y\else\let\LE=N\fi}
+\define@boolkey{ccsps}{CP}[true]{%
+ \ifKV@ccsps@CP\let\CP=Y\else\let\CP=N\fi}
+% \end{macrocode}
+% This option sets the text for the watermark.
+% \begin{macrocode}
+\define@key{ccsps}{draftcopy}[Uncorrected proof]{% watermark text
+ \gdef\cc@watermarktext{#1}}
+% \end{macrocode}
+% This option turns the helper strip on or off, but it is triggered by
+% pdfpage.
+% \begin{macrocode}
+\define@boolkey{ccsps}{helperstrip}[true]{}%
+% \end{macrocode}
+% For typesetting alignment checks a grid may be added.
+% \begin{macrocode}
+\define@boolkey{ccsps}{grid}[true]{}
+% \end{macrocode}
+%
+% \subsubsection{Issue stage}
+%
+% \begin{macrocode}
+\define@boolkey{ccsps}{issuestage}[true]{%
+% \ifKV@ccsps@issuestage\let\issuestage=Y\else\let\issuestage=N\fi
+}
+% \end{macrocode}
+%
+% Some article are delivered via Open Access.
+% \begin{macrocode}
+% Shall the article be open access?
+\define@boolkey{ccsps}{openaccess}[true]{%
+% \ifKV@ccsps@openaccess\let\stageaccess=Y\else\let\stageaccess=N\fi
+}
+\define@boolkey{ccsps}{stageaccess}[true]{% Deprecated.
+ \setkeys{ccsps}{openaccess=#1}}
+% \end{macrocode}
+%
+% Publishing information is collected by the following options.
+% \begin{macrocode}
+\define@key{ccsps}{year}[????]{\gdef\@ccyear{#1}}
+\define@key{ccsps}{volume}[??]{\gdef\@ccvolume{#1}}
+\define@key{ccsps}{issue}[??]{\gdef\@ccissue{#1}}%
+\define@key{ccsps}{firstpage}[1]{%
+ \gdef\@ccfirst{#1}%
+% \cc@fixelendef40\@ccfirstiv{#1}%
+ \@tempcnta4\@tfor\@x:=#1\do{\advance\@tempcnta\m@ne}%
+ \ifcase\@tempcnta\gdef\@ccfirstiv{#1}%
+ \or\gdef\@ccfirstiv{0#1}%
+ \or\gdef\@ccfirstiv{00#1}%
+ \or\gdef\@ccfirstiv{000#1}%
+ \else\ClassError{cc}{First page number too big.}{%
+ The number of the first page cannot be larger than 9999.
+ }\fi
+}
+\define@key{ccsps}{copyholder}[\default@copyholder]{\gdef\@copyholdername{#1}}
+\def\default@copyholder{%
+ \ifKV@ccsps@openaccess The Author(s)
+ \else Springer Basel AG\fi}
+\define@key{ccsps}{doisuffix}[????-?]{%
+% Is the doi always 10.1007/s00037-threedigityear-suffix?
+% Yes! (Answer from Springer...)
+ \cc@fixelendef50\@doiinfo{\@journalnumber}%
+ \xdef\@doiinfo{%
+ 10.1007/s\@doiinfo-%
+ \noexpand\cc@fixelen30{\noexpand\@ccyear}-%
+ #1}}
+\define@key{ccsps}{doi}{\gdef\@doiinfo{#1}}
+\define@key{ccsps}{onlinedate}[??dd Month yyyy??]{\gdef\@onlinedate{#1}}
+% Are the following really necessary or are they derived?
+\define@key{ccsps}{onlinefirstyear}[\the\year]{\gdef\@ccyear{#1}}
+\define@key{ccsps}{coveryear}[\@ccyear]{\gdef\@coveryear{#1}}
+% Is the coveryear always the last two digits of the year?
+% \end{macrocode}
+%
+% For online publication use the option |pdfpage| and |xlink|. The
+% latter makes hyperlinks blue and so forth.
+% \begin{macrocode}
+\define@boolkey{ccsps}{pdfpage}[true]{%
+% \ifKV@ccsps@pdfpage\@pdfpagetrue\else\@pdfpagefalse\fi%
+}
+\define@boolkey{ccsps}{xlink}[true]{}
+% \end{macrocode}
+%
+% Finally put each key to its default value.
+% \begin{macrocode}
+\setkeys{ccsps}{
+ sps=false,
+ journal={cc}, journalnumber=37,
+ grid=false,
+ TYPESET=false,
+ DISK=false,
+ LE=false,
+ CP=false,
+ DOImsnr,
+ openaccess=false,
+ revisionstage=false,
+ helperstrip=false,
+ issuestage=false,
+ copyholder,
+ year,volume,issue,firstpage,
+ onlinefirstyear,coveryear,doisuffix,onlinedate,
+ draftcopy
+}
+% \end{macrocode}
+%
+% \subsubsection{Choose publisher features}
+% This is the macro for springer publishing services. Note that it
+% should be called only once, best right after |\documentclass|.
+% \begin{macrocode}
+\newcommand{\ccsps}[1]{%
+ \if@cctextarea\else\ClassError{cc}{Wrong textarea chosen}
+ {Remove any textarea or noccpublish option from documentclass.}\fi
+ \global\@ccpublishtrue
+ \global\@abstractoptionalfalse% Abstract required
+ \global\@keywordsoptionalfalse% Keywords required
+ \global\@subjectoptionalfalse% Subject class. required
+ \global\@ccackfalse% Acknowledgements required
+ \global\@ccheadtrue
+ \global\@autotitletrue
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Now scan the key, key=value list:
+ \setkeys{ccsps}{sps,#1}
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \gdef\@cctxt{cc \textbf{\@ccvolume}(\@ccissue)}% MN2011/07/27: Shouldn't it be this?
+ \gdef\@cctxt{cc \textbf{\@ccvolume} (\@ccyear)}%
+% \global\@twosidefalse
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% During revisionstage line numbers, a helper strip and a
+% watermark shall be added.
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \RequirePackage[mathlines]{lineno}[2005/11/02]
+ \ifKV@ccsps@pdfpage
+ \setkeys{ccsps}{helperstrip=false}%
+% This case should turn off draftcopy but cannot do this
+% since draftcopy is badly written.
+% Consequently, this makes a double use of ccsps impossible.
+ \nolinenumbers
+ \else
+ \setkeys{ccsps}{helperstrip=true}%
+ \RequirePackage[conditional,draft]{draftcopy}
+ \draftcopyPageTransform{155 75 translate 65 rotate}
+ \draftcopyName{\cc@watermarktext}{75}
+% Scaling by a factor 75 is fine for a text like "Uncorrected proof".
+ \linenumbers
+ \fi
+% With the option xlink the final pdf shall have bookmarks and
+% blue links. Otherwise there are no bookmarks and black links.
+% \changes{v2.25e}{2015/02/23}{Dropped option dvips from call of
+% hyperref. I hope that hyperref finds out itsself whether dvips
+% may be used. Michael N{\"{u}}sken, Bonn}
+ \RequirePackage[%dvips,
+ bookmarks=\ifKV@ccsps@xlink true\else false\fi,
+ breaklinks=true,
+ colorlinks=\ifKV@ccsps@xlink true\else false\fi,
+ linkcolor=\ifKV@ccsps@xlink blue\else black\fi,
+ unicode]{hyperref}[2011/04/17 v6.82g]%
+% Make sure \cs{init@bare} is executed/repeated after hyperref's commands.
+ \AtBeginDocument{\init@bare}
+ \RequirePackage{breakcites}%
+ \RequirePackage{breakurl}[2009/01/24 v1.30]%
+ \def\l@title##1{\@dottedtocline{-1}{0pt}{0pt}{{\large\textbf{##1}}}}%
+ \let\l@title\l@part
+%
+% \ExecuteOptions{nonatbib}
+% \usepackage[comma,square]{modnatbib}%
+% The package natbib was modified only marginally. On the one
+% hand, spacing after superscripted references was modified, which
+% is irrelevant to \cc{}. On the other hand the references were
+% also added to the table of contents. This is superfluous since
+% \Lclass{cc} redefines \Lenv{thebibliography} and adds that entry
+% there. Further punctuation was modified but that is set by
+% \Lclass{cc} anyways.
+%
+% \usepackage{hypernat}%
+% The package \Lpackage{hypernat} would at most be needed if cc
+% articles would combine natbib options number and
+% sort&compress. However, number is deprecated and sort&compress
+% is not used in the journal versions.
+%
+ \ifKV@ccsps@xlink%
+ \def\@urlcolor{blue}
+ \def\@citecolor{blue}
+ \def\externalref##1##2{\hyperimage{##1}{##2}}%
+ \def\DOIexternalref##1##2{\hyperimage{##1}{##2}}%
+ \InputIfFileExists{bookmarkgreeks.tex}{}{}%
+ \else
+ \def\@urlcolor{black}%
+ \def\@citecolor{black}
+ \def\externalref##1##2{##2}%
+ \def\DOIexternalref##1##2{##2}%
+ \fi%
+% The option grid produces a grid to check or align the page and
+% column boundarys.
+ \ifKV@ccsps@grid
+ \overfullrule=6pt
+ \let\twidth\textwidth
+ \let\theight\textheight
+ \else\overfullrule=0pt\fi
+% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% %%% JS_info (MN2011/07/27: What's this?)
+ \InputIfFileExists{JS_info.tex}{}{}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% The following code is based on \Lpackage{ccspsmacros} and
+% \Lpackage{modlineno} as used by Springer. Actually, the only
+% significant modification to \Lpackage{modlineno} seems to be that
+% its option \Lclo{pagewise} is disabled; but it's easy not to use it.
+% \begin{macro}{\printed}
+% \begin{macro}{\electronic}
+% The printed and the electronic version of \cc{} have different
+% ISSNs. |\printed| and |\electronic| set the corresponding ISSN.
+% The ISSN for the printed version is preselected.
+% \begin{macrocode}
+\def\printed@issn{1016-3328}%
+\def\electronic@issn{1420-8954}%
+\newcommand{\printed}{\let\issn\printed@issn}
+\newcommand{\electronic}{\let\issn\electronic@issn}
+\printed
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% All environments and macros from this section can only be used in
+% the preamble.
+% \changes{v2.01}{2000/07/12}{Some things shall work until \cs{maketitle}.}
+% \begin{macrocode}
+% \@onlypreamble\author
+% \@onlypreamble\title
+% \@onlypreamble\abstract
+% \@onlypreamble\Abstract
+% \@onlypreamble\keywords
+% \@onlypreamble\subject
+% \@onlypreamble\titlehead
+% \@onlypreamble\authorhead
+% \@onlypreamble\received
+\@onlypreamble\ccpublish
+\@onlypreamble\ccsps
+\@onlypreamble\electronic
+\@onlypreamble\printed
+% \end{macrocode}
+%
+% \subsection{Extract information from \cs{@author}}
+%
+% The title is produces using the information provided by
+% |\@author|. But this contains the entire addresses. The first
+% line of each address is considered to be the name of an author.
+% These names then occur in the title seperated by |\authorsep| and
+% |\authorlastsep|.
+% \begin{macrocode}
+\def\extractnamesfr@m@author{%
+ \@ifundefined{@authorlist}{%
+ \let\and\ignorespaces
+ \let\latest@name\relax
+ \count@\z@
+ \expandafter\extract@names\@author\and\and\@nil}{%
+ \@authorlist
+ }
+ }
+\def\extract@names#1\and#2\@nil{%
+ \cc@ifempty{#1}{%
+ \unskip\if\and\relax\else
+ \ifnum\count@>\tw@\authorlastsepmany\else\authorlastsep\fi
+ \fi\latest@name
+ \let\next\gobble@nil}%
+ {%
+ \unskip\and\latest@name
+ \ifx\latest@name\relax\else\let\and\authorsep\fi
+ \extract@name#1\\\@nil
+ \let\next\extract@names}%
+ \next#2\@nil}
+\def\gobble@nil#1\@nil{}
+\def\extract@name#1\\#2\@nil{\advance\count@\@ne\def\latest@name{#1}}
+% \end{macrocode}
+% \begin{macro}{\authorsep}
+% \begin{macro}{\authorlastsep}
+% \begin{macro}{\authorlastsepmany}
+% These two macros are used between authors in the title that
+% |\maketitle| produces. |\authorlastsep| or |\authorlastsepmany| is
+% used between the last two authors (the latter if there are more
+% than two authors), otherwise |\authorsep| is used. The negative
+% penalty favors a line break after the comma.
+% \changes{v2.01}{2000/07/06}{Added \cs{authorlastsepmany}. Michael
+% N{\"{u}}sken, Paderborn}
+% \changes{v2.02}{2001/05/22}{Introduced \cs{AND}. Michael
+% N{\"{u}}sken, Paderborn}
+% \begin{macrocode}
+\babel\def\ccAND{and}[german=und,french=et]
+\def\authorsep{,\penalty-5\ }
+\def\authorlastsep{\penalty-5\ \ccAND{} }
+\def\authorlastsepmany{,\penalty-5\ \ccAND{} }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+%
+% The running head uses either the name of the only author, or the
+% last names of up to three authors, or the last name of the first
+% author supplemented by |\textit{et al.}|. This informations
+% usually is extracted from the author list declared by |\author| in
+% |\@author|. Finally, it is stored in |\@authorhead|.
+% \begin{macrocode}
+\newtoks\latest@lastname
+\newtoks\@firstname
+\let\@firstlastname\@temptokena
+\def\extractauthorheadfr@m@author{%
+ {%
+ \let\and\@empty
+ \latest@lastname{}%
+ \toks@{}%
+ \count@\m@ne
+ \expandafter\extract@lastnames\@author\and\and\@nil
+ \ifnum\count@<2
+ \xdef\@authorhead{\the\@firstname}
+ \else\ifnum\count@<4
+ \xdef\@authorhead{\the\toks@}%
+ \else
+ \xdef\@authorhead{\the\@firstlastname\noexpand\textit{ et al.}}%
+ \fi\fi
+ }%
+ \setbox0\hbox{\small\let\thanks\@gobble\@authorhead}%
+ \ifdim\wd0>.7\textwidth
+ \ClassWarningNoLine{cc}{Authorhead too long. Use
+ \protect\authorhead\space to specify\MessageBreak a shortened
+ author list for the headings!}%
+ \fi
+ }
+\def\extract@lastnames#1\and#2\@nil{%
+ \advance\count@\@ne
+ \cc@ifempty{#1}{%
+ \expandafter\cc@ifempty\expandafter{\the\toks@}{%
+ \edef\@tempa{\the\latest@lastname}%
+ }{%
+ \edef\@tempa{\the\toks@\authorheadlastsep\the\latest@lastname}%
+ }%
+ \toks@\expandafter{\@tempa}%
+ \let\next\gobble@nil
+ }{%
+ \expandafter\cc@ifempty\expandafter{\the\toks@}{%
+ \edef\@tempa{\the\latest@lastname}%
+ }{%
+ \edef\@tempa{\the\toks@\authorheadsep\the\latest@lastname}%
+ }%
+ \toks@\expandafter{\@tempa}%
+ \extract@lastname#1\\\@nil
+ \let\next\extract@lastnames}%
+ \ifnum\count@=\@ne\@firstlastname\expandafter{\the\toks@}\fi
+ \next#2\@nil}
+\def\gobble@nil#1\@nil{}
+\def\extract@lastname#1\\#2\@nil{%
+ \ifnum\count@=\z@\@firstname{#1}\fi
+ \extract@lastname@#1 \@nil}
+\def\extract@lastname@#1 #2\@nil{%
+ \cc@ifempty{#2}{\latest@lastname{#1}}{\extract@lastname@#2\@nil}}
+% \end{macrocode}
+% \begin{macro}{\authorheadsep}
+% \begin{macro}{\authorheadlastsep}
+% These two macros are used to seperate authors in the running head.
+% \begin{macrocode}
+\def\authorheadsep{, }
+\def\authorheadlastsep{ \& }
+\def\authorheadlastsepmany{ \& }
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% At the |\begin{document}| the |\@authorhead| is extracted from
+% |\@author|, if no |\authorhead| command was used in the preamble.
+% \begin{macrocode}
+\let\@author\relax
+\AtBeginDocument{%
+ \@ifundefined{@author}{\if@ccpublish
+ \ClassError{cc}{No \protect\author\space given}{Define an author
+ list in the preamble by \protect\author{...}}%
+ \else
+ \ClassWarningNoLine{cc}{No \protect\author\space given}%
+ \fi}{}
+ \@ifundefined{@authorhead}{\extractauthorheadfr@m@author}{}}
+% \end{macrocode}
+% At |\begin{document}| we can also check whether the |\@title|
+% (declared by |\title|) or the |\@titlehead| (declared by
+% |\titlehead|) is not too long.
+% \begin{macrocode}
+\let\@title\relax
+\AtBeginDocument{%
+ \@ifundefined{@title}{\if@ccpublish
+ \ClassError{cc}{No \protect\title\space given}{Define a title in
+ the preamble by \protect\title{...}}%
+ \else
+ \ClassWarningNoLine{cc}{No \protect\title\space given}%
+ \fi}{}
+ \setbox0\hbox{\small\let\thanks\@gobble
+ \@ifundefined{@titlehead}{\let\\\ \@title}{\@titlehead}}%
+ \ifdim\wd0>.7\textwidth
+ \ClassError{cc}{Title too long for running head.\MessageBreak
+ Use \protect\titlehead\space to specify\MessageBreak a shortened
+ title for the headings!}{}%
+ \fi}
+% \end{macrocode}
+% For |\makeendtitle|, the affiliations which were given with the
+% |\author| command to |\@author| must be formatted. The address
+% blocks are combined in a two column \Lenv{tabular}.
+% \begin{macrocode}
+\def\extractaffilsfr@om@author{%
+ \parindent\z@
+ \init@affils
+ \expandafter\extract@affils\@author\and\and\@nil
+ \if@oddaffil\else\even@sep\even@post\fi
+}
+\def\init@affils{%
+ \let\and\relax
+ \global\@oddaffiltrue
+ }
+\def\extract@affils#1\and#2\@nil{%
+ \cc@ifempty{#1}{\let\next\gobble@nil}{%
+ \extract@affil#1\\\@nil
+ \let\next\extract@affils}%
+ \next#2\@nil}
+% \end{macrocode}
+% Each address is put in a \Lenv{@ffiliation} environment (defined
+% below). The |\currentaddress| macro is defined with the knowledge
+% of the author name (which is the first line of the address). Also
+% the author name is typed in small capitals.
+% \begin{macrocode}
+\def\extract@affil#1\\#2\@nil{%
+ \affilpre
+ \def\currentaddress{\otheraddress
+ Current address of \textsc{\ignorespaces#1}:\\}%
+ \begin{@ffiliation}
+ \textsc{\ignorespaces#1}\\#2
+ \end{@ffiliation}
+ \affilpost}
+% \end{macrocode}
+% \begin{macro}{\otheraddress}
+% \begin{macro}{\affilsep}
+% The macro |\otheraddress| seperates two address blocks for one
+% author. |\affilsep| simply decides whether to switch to the next
+% column or to a new line in the surrounding \Lenv{tabular}.
+% \changes{v2.01}{2001/01/23}{Changed odd affiliation seperator.
+% Michael N{\"{u}}sken, Paderborn}
+% \changes{v2.14}{2010/08/03}{Debugged affiliation seperation.
+% Michael N{\"{u}}sken, Paderborn}
+% \begin{macrocode}
+\newcommand{\otheraddress}{\end{@ffiliation}\affilsep
+ \begin{@ffiliation}}
+\def\odd@pre{\par\begin{tabular}{@{}ll@{}}}%
+\def\odd@sep{&}%
+\def\odd@post{&}%
+\def\even@pre{}%
+\def\even@sep{\end{tabular}\par\begin{tabular}{@{}ll@{}}}%
+\def\even@post{\end{tabular}}%
+%
+\newif\if@oddaffil
+\def\affilpre{\if@oddaffil\odd@pre\else\even@pre\fi}
+\def\affilsep{%
+ \if@oddaffil\odd@sep\@oddaffilfalse
+ \else\even@sep\@oddaffiltrue
+ \fi
+ }
+\def\affilpost{\if@oddaffil\odd@post\global\@oddaffilfalse
+ \else\even@post\global\@oddaffiltrue\fi}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \begin{environment}{@ffiliation}
+% The environment \Lenv{@ffiliation} is used for each address
+% block. It produces a minipage whose lines are set like verse
+% lines: if a line is too long it continues indented.
+% \changes{v2.18}{2011/07/27}{Added onecolumn layout for
+% affiliations. Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\if@twocolumnendtitle
+\newenvironment{@ffiliation}
+ {%
+ \minipage[t]{.48\hsize}
+ \dimen@\hsize \advance\dimen@ -1.5em
+ \everypar{\parshape 2 \z@ \hsize 1.5em \dimen@}%
+ \def\\{\unskip\par}%
+ }
+ {\strut\par\medskip\endminipage}
+\else
+\def\affilpre{\par}
+\def\affilpost{\par}
+\def\affilsep{\par}
+\newenvironment{@ffiliation}
+ {%
+ \minipage[t]{\hsize}\footnotesize
+ \dimen@\hsize \advance\dimen@ -1.5em
+ \everypar{\parshape 2 \z@ \hsize 1.5em \dimen@}%
+ \def\\{\unskip\par}%
+ }
+ {\endminipage\bigskip}
+\fi
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Page layout}
+%
+% The document's text width must be exactly 141~mm; its height must be exactly
+% 213~mm from the top of caps in header to the baseline of the bottom line
+% (disregarding descenders like `p' or `g' at the bottom).
+% (Note that this is achieved by setting |\textheight| to 200~mm.)
+% The abstract's width must be 120~mm.
+% \changes{v2.01}{2001/02/22}{The text area is only changed if
+% \lclo{cctextarea} is active. Michael N{\"{u}}sken, Paderborn}
+% \changes{v2.01}{2001/08/20}{Removed bug: \cs{@abswidth} must always
+% be defined. Michael N{\"{u}}sken, Paderborn}
+% \changes{v2.11}{2010/06/17}{Deactivate fullpage.sty with
+% ccpublish. Michael N{\"{u}}sken, Bonn}
+% \changes{v2.13}{2010/06/22}{Disabled the file control, instead with
+% ccpublish the compilation will abort with a FATAL ERROR. Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.17b}{2011/07/13}{Repaired case handling. Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.18}{2011/07/26}{Adapted to Springer's ccspsmacros,
+% added modified papersize. Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\ifcase\@textareaversion
+% version 0: nocctextarea
+\@abstrwidth0.85\textwidth
+%
+\or% version 1, used until June 2011
+\textwidth=141mm
+\@abstrwidth=120mm
+\textheight=200mm
+\topmargin=0mm
+\oddsidemargin=12mm
+\evensidemargin=12mm
+\marginparwidth=25mm
+\headheight=1.25\headheight
+\ifnum\@marginmode<\z@\@marginmode\z@\fi
+%
+\or% version 2, used since July 2011
+% \special{papersize=155mm,235mm}% Springer's papersize
+\paperwidth=155mm
+\paperheight=235mm
+\topmargin=-9.6mm
+% MN2011/07/25 this is from ccspsmacros but should be rethought!!!
+% Use \voffset, \hoffset instead..
+\textheight=45.5pc
+\textwidth=119mm
+\@abstrwidth=\textwidth
+\oddsidemargin=-7.6mm% should be 18mm, will be calculated acc.to \@marginmode
+\evensidemargin=-7.6mm% should be 18mm, will be calculated acc.to \@marginmode
+\marginparwidth=10mm% will be adapted below
+\headheight=1.25\headheight
+\ifnum\@marginmode<\z@\@marginmode\tw@\fi% use balanced margins
+%
+\else% version negative or larger than max: emptypage
+\newdimen\allsidemargin \allsidemargin=.5in
+% LARGE width
+\textwidth=\paperwidth
+\advance\textwidth-2\allsidemargin% margin left/right
+\marginparsep=1pt
+% LARGE height
+\topmargin-1in
+\advance\topmargin\allsidemargin
+\textheight=\paperheight
+\advance\textheight-\allsidemargin
+\advance\textheight-\headheight
+\advance\textheight-\headsep
+\advance\textheight-\footskip
+% \advance\textheight-\headheight% assuming as much space for foot as head.
+\advance\textheight-\allsidemargin
+\@marginmode\tw@
+\sloppy
+\@abstrwidth0.85\textwidth
+\fi
+\newdimen\cc@topmargin \cc@topmargin\topmargin
+\newdimen\cc@textwidth \cc@textwidth\textwidth
+\newdimen\cc@textheight \cc@textheight\textheight
+\AtBeginDocument{%
+ {\if@ccpublish
+ \@tempswafalse
+ \ifnum\@textareaversion>0
+ \ifdim\topmargin=\cc@topmargin\relax\else\@tempswatrue\fi
+ \ifdim\textwidth=\cc@textwidth\relax\else\@tempswatrue\fi
+ \ifdim\textheight=\cc@textheight\relax\else\@tempswatrue\fi
+ \fi
+ \if@tempswa
+ \ClassError{cc}{FATAL ERROR! For publishing in cc the page and text
+ dimension must not be manipulated. Remove any packages that
+ modify the text or page dimensions. In particular: remove the
+ packages^^J
+ fullpage.sty,^^J
+ a4wide.sty,^^J
+ geometry.sty,^^J
+ vmargin.sty,^^J
+ typearea.sty}{}%
+ \aftergroup\endinput
+ \fi
+ \fi}%
+}
+% \end{macrocode}
+% We fit the margins so that 1~in + |\oddsidemargin| + |\textwidth| +
+% |\evensidemargin| + 1~in = |\paperwidth|. (Note that the margins
+% are usually measured with an offset of 1~in on each side.)
+% \changes{v2.25c}{2013/10/14}{Removed parenthesis from typeout.}
+% \begin{macrocode}
+\typeout{Now adjusting margins: \the\@marginmode.}
+\ifcase\@marginmode
+% marginmode 0
+\AtEndOfClass{%
+\oddsidemargin\paperwidth
+\advance\oddsidemargin-2in
+\advance\oddsidemargin-\textwidth
+\advance\oddsidemargin-\evensidemargin}
+\or
+% marginmode 1
+\AtEndOfClass{%
+\oddsidemargin\paperwidth
+\advance\oddsidemargin-2in
+\advance\oddsidemargin-\textwidth
+\evensidemargin=5mm
+\advance\oddsidemargin-\evensidemargin}
+\or
+% marginmode 2
+\AtEndOfClass{%
+\oddsidemargin\paperwidth
+\advance\oddsidemargin-2in
+\advance\oddsidemargin-\textwidth
+\oddsidemargin.5\oddsidemargin
+\evensidemargin\oddsidemargin}
+\fi
+% \end{macrocode}
+% Finally, the |\marginparwidth| is recalculated so that it does not
+% fall off the paper.
+% \begin{macrocode}
+\AtEndOfClass{%
+ \marginparwidth1in
+ \advance\marginparwidth-5mm
+ \advance\marginparwidth-2\marginparsep
+ \ifdim\evensidemargin<\oddsidemargin
+ \advance\marginparwidth\evensidemargin
+ \else
+ \advance\marginparwidth\oddsidemargin
+ \fi
+}
+% \end{macrocode}
+% In this document, we have marginmode
+% \expandafter\the\csname @marginmode\endcsname{}
+% \expandafter\ifcase\csname @marginmode\endcsname
+% (classical margins)
+% \or(print margins)
+% \or(balanced margins)
+% \fi
+% which results in the
+% following values:
+% \begin{center}
+% \makeatletter
+% \def\themm#1{\dimen@5.6233568#1\relax
+% \ifnum\dimen@<0-\dimen@-\dimen@\fi
+% \divide\dimen@ by 16
+% \expandafter\@themmchk\the\dimen@0000\@@@
+% \edef\@tempa{\noexpand\th@mm\the\dimen@}\@tempa}
+% \def\@themmchk#1.#2#3#4#5#6\@@@{\if#5p\else\if#5t\else\ifnum#5>4
+% \advance\dimen@.0005pt\fi\fi\fi}
+% \def\@gobblethree#1#2#3{}
+% \edef\@tempa{\noexpand\def\noexpand\th@mm##1\expandafter
+% \@gobblethree\the\p@}\@tempa{\@gobblerest#1{0}0000mm}
+% \def\@gobblerest#1.#2#3#4#5mm{#1.#2#3#4mm}
+% \begin{tabular}[t]{l@{ = }r\VRULE}
+% |\paperwidth| & \themm\paperwidth\\\hline
+% |1in| & 25.400mm\\
+% |\evensidemargin| & \themm\evensidemargin\\
+% |\textwidth| & \themm\textwidth\\
+% |\oddsidemargin| & \themm\oddsidemargin\\
+% |1in| & 25.400mm\\\hline
+% |\marginparsep| & \themm\marginparsep\\
+% |\marginparwidth| & \themm\marginparwidth\\
+% \end{tabular}\begin{tabular}[t]{l@{ = }r}
+% |\paperheight| & \themm\paperheight\\\hline
+% |1in| & 25.400mm\\
+% |\topmargin| & \themm\topmargin\\
+% |\headheight| & \themm\headheight\\
+% |\headsep| & \themm\headsep\\
+% |\textheight| & \themm\textheight\\
+% |\footskip| & \themm\footskip\\
+% remainder &
+% \dimen@\paperheight
+% \advance\dimen@-1in
+% \advance\dimen@-\topmargin
+% \advance\dimen@-\headheight
+% \advance\dimen@-\headsep
+% \advance\dimen@-\textheight
+% \advance\dimen@-\footskip
+% \themm\dimen@
+% \end{tabular}
+% \end{center}
+%
+% \begin{macro}{\ps@cc}
+% The page style \texttt{cc} is defined. It uses only running
+% heads. On right (odd) pages, the title is written, on left
+% (even) pages, the author(s) appear. Further, the page number on
+% the outer side and the journal identification (if |\ccpublish|
+% was used) are printed. Moreover, a head rule of width
+% |\headrulewidth| is produced. Note that |\ccpublish| disables
+% this.
+% \changes{v2.21}{2012/05/07}{Added version below helperstrip.
+% Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\newskip\headerindent \headerindent=10mm
+\newdimen\headrulewidth \headrulewidth.4pt
+\def\ps@cc{\let\@mkboth\markboth
+ \let\@oddfoot\@empty
+ \let\@evenfoot\@empty
+ \let\@oddhead\@empty
+ \let\@evenhead\@empty
+ \if@ccpublish
+ \ps@ccfirst
+ \def\@oddfoot{%
+ \ifKV@ccsps@helperstrip%
+ \begin{picture}(0,0)%
+ \put(340,3){{\stripbox}}%
+ \put(10,-5){{\tiny Produced with: \texttt{\csname ver@cc.cls\endcsname}}}%
+ \end{picture}%
+ \fi
+ }%
+ \let\@evenfoot\@oddfoot
+ \fi
+ \expandafter\def\expandafter\@oddhead\expandafter{\@oddhead
+ \vbox{\hbox to\textwidth{\reset@font\strut
+ {\small\@cctxt}%
+ \hfil
+ {\small
+ \@ifundefined{@titlehead}{%
+ \let\\\ %
+ \@title
+ }{%
+ \@titlehead
+ }}%
+ \hbox to\headerindent{\hfil\thepage}%
+ }%
+ \if@ccpublish\else
+ \kern2.6\p@
+ \hrule\@height\headrulewidth\kern-\headrulewidth
+ \kern-2.6\p@
+ \fi
+ \vskip\z@
+ }%
+ }%
+ \expandafter\def\expandafter\@evenhead\expandafter{\@evenhead
+ \vbox{\hbox to\textwidth{\reset@font\strut
+ \hbox to\headerindent{\thepage\hfil}%
+ {\small\@authorhead}%
+ \hfil
+ {\small\@cctxt}%
+ }%
+ \if@ccpublish\else
+ \kern2.6\p@
+ \hrule\@height\headrulewidth\kern-\headrulewidth
+ \kern-2.6\p@
+ \fi
+ \vskip\z@
+ }%
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% For some publishing features graphics and colors are used.
+% \begin{macrocode}
+\RequirePackage{graphics}[2009/02/05 v1.0o]
+\RequirePackage{xcolor}[2007/01/21 v2.11]%
+\IfFileExists{Birkh_logo_2010_sps.eps}{%
+ \def\birklogo{\bgroup\includegraphics{Birkh_logo_2010_sps.eps}\egroup}
+}{%
+ \def\birklogo{{\ixpt Birkh{\"{a}}user}}
+}
+\IfFileExists{dummy_sps.eps}{%
+ \def\spslogo{\bgroup\includegraphics{dummy_sps.eps}\egroup}
+}{%
+ \def\spslogo{{\ixpt Springer Publishing}}
+}
+%\definecolor{tint}{gray}{0.7}
+% \end{macrocode}
+%
+% \begin{macro}{\ps@ccfirst}
+% The page style \texttt{ccfirst} is provided for typesetting the
+% first page during the publishing process.
+% \changes{v2.21}{2012/05/07}{Added version below helperstrip.
+% Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\def\ps@ccfirst{%
+ \def\@oddfoot{%
+ \if@ccpublish
+ \ifKV@ccsps@revisionstage%
+ \begin{picture}(0,0)%
+ \put(0,15){{\smash{\raisebox{-2.25pt}{\spslogo}}}}%
+ \end{picture}%
+ \fi%
+ \ifKV@ccsps@sps
+ \begin{picture}(0,0)%
+ \put(289.5,15){{\birklogo}}%
+ \end{picture}%
+ \fi
+ \ifKV@ccsps@helperstrip%
+ \begin{picture}(0,0)%
+ \put(340,3){{\stripbox}}%
+ \put(10,-5){{\tiny Produced with: \texttt{\csname ver@cc.cls\endcsname}}}%
+ \end{picture}%
+ \fi
+ \fi}%
+ \let\@evenfoot\@oddfoot
+ \def\@oddhead{%
+ \ifKV@ccsps@grid
+ \hbox to\z@{%
+ \vbox to\z@{%
+ \hsize\twidth
+ \vskip\headsep
+ \fboxrule=.25pt
+ \fboxsep=-.25pt
+ \textcolor{lightgray}{%
+ \fbox{\vbox to\theight{\hbox to\twidth{\hss}\vss}}%
+ }%
+ \vss
+ }%
+ \hss
+ }%
+ \fi
+ \hss
+ }%
+ \let\@evenhead\@oddhead
+}
+% \end{macrocode}
+% \end{macro}
+% Select \cc's page style at the end of the class.
+% \begin{macrocode}
+\AtEndOfClass{\pagestyle{cc}}
+% \end{macrocode}
+%
+% If \Lclo{noautotitle} was not used, first and last page are
+% generated automatically.
+% \changes{v2.00}{2000/03/21}{Repairing \cs{cite} in \cs{Abstract}
+% with option \protect\Lclo{natbib}. \cs{maketitle} must be
+% executed only after \protect\Lpackage{natbib}'s
+% \cs{AtBeginDocument} commands have been done.}
+% \changes{v2.00}{2000/06/21}{Dirty trick. \cs{maketitle} must be
+% called after all other things \cs{AtBeginDocument} (especially
+% after those inserted by \protect\Lpackage{natbib}) in order to
+% handle citations correctly. This is done via \cs{@onlypreamble}
+% that disables the first token of its argument and executes the
+% rest; this disabling and execution happen after executing all
+% \cs{AtBeginDocument} commands in \cs{begin}\texttt{\{document\}}.}
+% \begin{macrocode}
+\AtEndOfClass{%
+ \AtBeginDocument{\@onlypreamble{\author{\if@autotitle\maketitle\fi}}}
+% \AtBeginDocument{\if@autotitle\maketitle\fi}
+ \AtEndDocument{\if@autotitle\makeendtitle\fi}
+}
+% \end{macrocode}
+%
+% \begin{macro}{\stripbox}
+% The macro \cs{stripbox} produces a box with information for the
+% publishing service. This is put in the foot of every page during
+% the revisionstage, see \cs{ccsps}.
+% \begin{macrocode}
+\def\stripbox{\kern -11.7cm%
+ {}{%
+ \raisebox{.8mm}{%
+ \tiny
+ \fboxsep1mm\framebox{%
+ Journal: {\bf \@journalname}\enspace
+ Article No.: {\bf \@DOImsnr}\enspace
+ \fboxsep.2mm\fbox{%
+ \ifx Y\TYPESET{$\checkmark$}\else{\phantom{$\checkmark$}}\fi
+ }~TYPESET\enspace
+ \fbox{%
+ \ifx Y\DISK{$\checkmark$}\else{\phantom{$\checkmark$}}\fi
+ }~DISK\enspace
+ \fbox{%
+ \ifx Y\LE{$\checkmark$}\else{\phantom{$\checkmark$}}\fi
+ }~LE\enspace
+ \fbox{%
+ \ifx Y\CP{$\checkmark$}\else{\phantom{$\checkmark$}}\fi
+ }~CP\enspace
+ Disp.: \textbf{\the\year/\the\month/\the\day}\enspace
+ Pages: \textbf{\@ccnumberofpages}
+ }%
+ }%
+ }%
+} %%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\maketitle}
+% |\maketitle| generates the first page. It also produces errors
+% or warnings if abstract, keywords, or subject are missing.
+% \changes{v2.02}{2001/08/29}{Changed Abstract to quote. MN, Paderborn}
+% \changes{v2.03}{2005/08/27}{Changed Abstract to @abstr. MN, Bonn}
+% \changes{v2.04}{2006/03/06}{Changed maketitle to allow for very
+% long abstracts, MN, Bonn}
+% \changes{v2.04}{2006/03/08}{Adapted maketitle due to hyperref, MN, Bonn}
+% \changes{v2.08}{2008/04/25}{Bug repair: Added \cs{protect} to
+% \cs{ClassWarningNoLine} calls in \cs{maketitle}, Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.17}{2011/07/07}{Adapted \maketitle to new textarea and
+% modified firstpage headline \cs{maketitle}, Michael N{\"{u}}sken,
+% Bonn}
+% \changes{v2.17c}{2011/07/15}{Moved \cs{thispagestyle} to an earlier
+% point so it always applies to the first page (even when the
+% abstract is very long), Michael N{\"{u}}sken, Bonn}
+% \changes{v2.18}{2011/07/25}{Adapted \maketitle to Springer's
+% version, Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\def\vertrulea{\rule[-7.583pt]{0pt}{7.583pt}}
+\def\vertruleb{\rule{2.25pt}{10.2pt}}
+\newtoks\cite@hook
+\newcommand{\maketitleheadA}{% version before 2011 (Birkhäuser)
+ \hbox to\textwidth{%
+ \vbox to\z@{\vss
+ \baselineskip=12pt%
+ \halign{\ixpt##\hfil\cr
+ comput. complex.~\textbf{\@ccvolume}~(\@ccyear),
+ \thepage\ -- \@cclast\cr
+ \issn/\expandafter\@gobbletwo\@ccyear%
+% % use + instead --?
+ /\cc@fixelen20\@ccissue\relax
+ \cc@fixelen40\@ccfirst\relax
+ --\@ccnumberofpages\
+ \$ 1.50+0.20/0\cr}}\hss
+ \vbox to\z@{\vss
+ \offinterlineskip%
+ \halign{##&##\hfil\cr
+ \vertrulea&\ixpt
+ \copyright{} Birkh{\"{a}}user Verlag, Basel \@ccyear\cr
+ \noalign{\hrule}
+ \vertruleb\hskip1mm&%
+ \vbox to\z@{\vbox to\z@{\vss
+ \hbox{\xptsfbx computational complexity}}\vss}%
+ \cr}}}\vskip47.333pt
+}
+\newcommand{\maketitleheadSPS}{% version since 2011 (Springer)
+ \hbox to\textwidth{%
+ \vbox to\z@{\vss
+ \baselineskip=12pt%
+ \halign{%
+ \ixpt##\hfil\cr
+ comput. complex.%
+ \ifKV@ccsps@issuestage%
+ ~\textbf{\@ccvolume}~(\@ccyear),~\@ccfirst\ -- \@cclast
+ \fi\cr
+ \ifKV@ccsps@openaccess
+ \copyright{} \@copyholdername\ \@ccyear.
+ This article is published\cr with open access
+ at Springerlink.com\cr
+ \else\copyright{} \@copyholdername\ \@ccyear\cr\fi
+ \ifKV@ccsps@issuestage
+ {\printed@issn/\cc@fixelen20\@coveryear/%
+ \cc@fixelen20\@ccissue%
+ \cc@fixelen40\@ccfirst%
+ -% MN2011/07/27: use + instead?
+ \@ccnumberofpages}\cr
+ {{\it published online}\ \@onlinedate}\cr
+ \else\relax\fi
+ DOI \@doiinfo\cr}
+ }\hss
+ \vbox to\z@{\vss
+ \offinterlineskip%
+ \halign{##&##\hfil\cr
+ \vertrulea&\ixpt\cr
+ \noalign{\hrule}
+ \vertruleb\hskip1mm&%
+ \vbox to\z@{\vbox to\z@{\vss
+ \hbox{\xptsfbx computational complexity}}\vss}%
+ \cr}}}\vskip47.333pt
+}
+\def\l@title#1#2{}% Usually ignore title entries.
+\def\@@today{\today}% for comparison
+\renewcommand{\maketitle}{%
+ \global\@topnum\z@ % Prevents figures from going at top of page.
+ \cite@hook{}%
+ \thispagestyle{ccfirst}
+ \if@cchead
+ \ifnum\@textareaversion=\tw@\vspace*{15pt}\fi
+ \vbox to\z@{\vss
+ \setcounter{page}{\@ccfirst}%
+ \ifcase\@textareaversion\maketitleheadSPS
+ \or\maketitleheadA
+ \or\maketitleheadSPS
+ \else\maketitleheadSPS
+ \fi
+ }%
+ \fi
+ \hrule\@height\z@
+ \vskip2.2ex% 4.0mm
+ \relax
+ \begin{center}
+ \if@ccpublish
+ \renewcommand{\footnote}[1]{\protect\ClassWarningNoLine{cc}{%
+ There are no footnotes allowed in title or author.\MessageBreak
+ Your command is ignored.\MessageBreak
+ Think about moving your remark to the acknowledgements}}%
+ \let\thanks\footnote
+ \else
+ \renewcommand{\footnote}[1]{\protect\ClassWarningNoLine{cc}{%
+ In title or author \string\footnote\space does not work.\MessageBreak
+ Avoid footnotes or use \string\thanks}}%
+ \def\thefootnote{\@fnsymbol\c@footnote}%
+ \def\@makefnmark{%
+ \rlap{\@textsuperscript{\normalfont\@thefnmark}}}%
+ \long\def\@makefntext##1{\parindent 1em\noindent
+ \hb@xt@1.8em{%
+ \hss\@textsuperscript{\normalfont\@thefnmark}}##1}%
+ \fi
+ {%
+ \Large\bfseries
+ \def\\{\penalty-\@M}%
+ \expandafter\MakeUppercase\expandafter{\@title}%
+ \addcontentsline{toc}{title}{\@title}%
+ \par
+ }%
+ \@ifundefined{@subtitle}{}{{%
+ \large\itshape
+ \@subtitle
+% %\if!\@subtitle!\relax\else\addcontentsline{toc}{subtitle}{\@subtitle}\fi%
+ \par
+ }}
+ \@ifundefined{@version}{}{{%
+ \large\itshape
+ \@version
+ \par
+ }}
+ \bigskip
+ \vskip1.21ex% 2.2mm
+ \vskip\z@
+ {%
+ \large\scshape
+ \extractnamesfr@m@author
+ \par
+ }%
+ \ifKV@ccsps@sps%\if@ccpublish
+ \ifx\@date\@@today\else
+ \ClassWarningNoLine{cc}{Date ignored! (\@date)}%
+ \fi
+ \else{%
+ \vskip1ex
+ \large\@date\par
+ }\fi
+ \def\@tempa{\vskip5.5ex\let\@tempa\relax}%
+ \ifx\@abstract@macro\@empty
+ \if@abstractoptional
+ \ClassWarningNoLine{cc}{Missing abstract}%
+ \else
+ \ClassError{cc}{Missing abstract}
+ {Define abstract in the preamble using
+ \protect\begin{abstract} ... \protect\end{abstract}.}%
+ \fi
+ \else
+ \@tempa\@abstract@macro\par
+ \fi
+ \ifx\@keywords@macro\@empty
+ \if@keywordsoptional
+ \ClassWarningNoLine{cc}{Missing keywords}%
+ \else
+ \ClassError{cc}{Missing keywords}
+ {Define keywords in the preamble using
+ \protect\begin{keywords} ... \protect\end{keywords}.}%
+ \fi
+ \else
+ \@tempa\@keywords@macro\par
+ \fi
+ \ifx\@subject@macro\@empty
+ \if@subjectoptional
+ \ClassWarningNoLine{cc}{Missing subject classification}%
+ \else
+ \ClassError{cc}{Missing subject}
+ {Define subject in the preamble using
+ \protect\begin{subject} ... \protect\end{subject}.}%
+ \fi
+ \else
+ \@tempa\@subject@macro\par
+ \fi
+ \@thanks
+ \ifx\@tempa\relax\vskip3ex\fi
+ \end{center}
+ \setcounter{footnote}{0}%
+ \global\let\maketitle\relax
+ \global\let\thanks\@gobble
+ \global\let\@thanks\relax
+% \end{macrocode}
+% \changes{v2.01}{2000/07/12}{Some things shall work until
+% \cs{maketitle} and not longer!}
+% \begin{macrocode}
+ \global\let\author\@notprerr
+ \global\let\title\@notprerr
+ \global\let\abstract\@notprerr
+ \global\let\Abstract\@notprerr
+ \global\let\keywords\@notprerr
+ \global\let\subject\@notprerr
+ \global\let\titlehead\@notprerr
+ \global\let\authorhead\@notprerr
+ \global\let\received\@notprerr
+ \vskip\z@
+ \par\@afterindentfalse\@afterheading
+ }
+\let\@maketitle\@undefined
+\let\and\@undefined
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\makeendtitle}
+% |\makeendtitle| is the counterpart of |\maketitle|, it generates
+% the end of the last page with received date and affiliations.
+% \changes{v2.00}{2000/03/10}{Added \cs{par}.}
+% \changes{v2.01}{2000/08/23}{Added \cs{ManuscriptReceived}.}
+% \begin{macrocode}
+\babel\def\ManuscriptReceived{Manuscript received }[%
+ german=Manuskript erhalten: ,%
+ french=Manuscrit re\c{c}u: ]
+\newcommand{\makeendtitle}{%
+ \par
+ \parindent\z@
+ \bigskip
+ \@ifundefined{@received}{}{%
+ \noindent{\small
+ \ManuscriptReceived\@received
+ \par}%
+ \medskip
+ }%
+ {\small
+ \extractaffilsfr@om@author
+ }%
+ \gdef\makeendtitle{\ClassWarning{cc}{\protect\makeendtitle\space
+ multiply used!}}%
+ }
+%</cclayout>
+% \end{macrocode}
+% \end{macro}
+%
+% \def\filename{cc-cls.sty}
+% \CodelinePrefix{S}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It allows to use the document class \Lenv{cc} as a package via
+% |\usepackage{cc-cls}|.
+% \begin{macrocode}
+%<*ccsty>
+\input{cc.cls}
+%</ccsty>
+% \end{macrocode}
+%
+% \GetFileInfo{relabel.sty}
+% \CodelinePrefix{R}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \begin{macrocode}
+%<*relabel>
+% \end{macrocode}
+% \iffalse meta-comment
+%% Copyright (C) 1998 Michael N\"{u}sken, all rights reserved.
+%
+% Copyright 1996 Michael N\"{u}sken.
+% All rights reserved. For further copyright information see the file
+% legal.txt, and any other copyright indicated in this file.
+%
+% This system is distributed in the hope that it will be useful,
+% but WITHOUT ANY WARRANTY; without even the implied warranty of
+% MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
+%
+%
+% IMPORTANT NOTICE:
+%
+% Please do not request updates from us directly. Distribution is
+% done through Mail-Servers and TeX organizations.
+%
+% You are not allowed to change this file.
+%
+% You are allowed to distribute this file.
+%
+% 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.
+% \fi
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesPackage{relabel}[2014/07/08 v1.02 Relabel. MNuesken]
+% \end{macrocode}
+%
+% We declare some options. \Lclo{prefixes} and \Lclo{noprefixes} turn
+% the effects of this packages on or off. \Lclo{bare} and
+% \Lclo{nobare} turn the additional |\bare\ref|erences on or off.
+% \changes{v1.02}{2014/07/08}{Process options in calling order
+% rather than definition order. Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\newif\if@prefixes
+\DeclareOption{prefixes}{\@prefixestrue}
+\DeclareOption{noprefixes}{\@prefixesfalse}
+\newif\if@bare
+\DeclareOption{bare}{\@baretrue}
+\DeclareOption{nobare}{\@barefalse}
+\ExecuteOptions{prefixes,nobare}
+\ProcessOptions*
+% \end{macrocode}
+%
+% \subsection{Modifyable labelling and counting}
+%
+% This new |\Label| command allows you to style the resulting labels
+% on your own.
+% \begin{macrocode}
+\newcommand*{\Label}[2]{\modify{#2}\label{#1}\revert}
+\newcommand*{\modify}[1]{\@bsphack%
+ \global\let\revert@currentlabel\@currentlabel
+ \global\let\revert@bare@currentlabel\@bare@currentlabel
+ \def\@tempb##1{#1}
+ \protected@edef\@currentlabel{\@tempb{\@currentlabel}}%
+ \@esphack}
+\newcommand*{\revert}{\@bsphack
+ \global\let\@currentlabel\revert@currentlabel
+ \global\let\@bare@currentlabel\revert@bare@currentlabel
+ \@esphack}
+\let\revert@currentlabel\relax
+\let\revert@bare@currentlabel\relax
+\newcommand*{\setcurrentlabel}[1]{%
+ \protected@edef\@currentlabel{#1}%
+ \let\@bare@currentlabel\@currentlabel}
+% \end{macrocode}
+% Provide some macros to handle prefixes and labels.
+% \begin{macro}{\defprefix}
+% This allows the definition of a prefix for a defined counter.
+% This prefix is attached to each reference to an instance of this
+% counter. It can also be used for postfixes as follows:
+% |\defprefix{equation}#1{(#1)}| defines a `prefix' for the
+% equation counter which adds a \emph{pair} of parentheses.
+% \begin{macrocode}
+\newcommand*{\defprefix}[1]{\if@prefixes
+ \def\next{\expandafter\def\csname p\string @#1\endcsname}%
+ \else\def\next{\def\next}\fi\next}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\useprefix}
+% Use the prefix.
+% \begin{macrocode}
+\newcommand*{\useprefix}[1]{\csname p\string @#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\uselabel}
+% Use the reference to the \meta{counter} given as first argument.
+% This is intended for use in prefixes to subcounters.
+% \begin{macrocode}
+\newcommand*{\uselabel}[1]{\csname p\string @#1\expandafter
+ \endcsname\csname the#1\endcsname}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\defprefixcond}
+% Obsolete.
+% \begin{macrocode}
+\def\defprefixcond#1#2{\defprefix{#1}{\conduselabel{#2}}}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\Iflabelchanged}
+% Takes two arguments: a \meta{counter} and some \meta{conditional
+% text}. When referenced the \meta{conditional text} is printed if
+% the \meta{counter} has the same value as at the |\label|
+% command.
+%
+% Attention! In the command |\EnumerationInTheorems| in the package
+% \Lclass{ccthm} this had to be replaced by a more sophisticated
+% approach: The basic value had to be the one that produced the
+% heading of the surrounding theorem like environment rather than
+% the actual value of this same counter which can change also if,
+% e.g., an \Lenv{equation} is used.
+% \begin{macrocode}
+\newcommand*{\Iflabelchanged}[2]{%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {{\csname the#1\endcsname}}%
+ {#2}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\conduselabel}
+% Obsolete.
+% \begin{macrocode}
+\def\conduselabel#1{% obsolete
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {{\csname the#1\endcsname}}%
+ {\csname p\string @#1\endcsname{\csname the#1\endcsname}}%
+ }%
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\@@conduselabel}
+% Compare the expanded version of the first two arguments. If
+% these are not equal or |\longlabeltrue| and not |\shortlabeltrue|
+% then print the third argument.
+% \begin{macrocode}
+\def\@@conduselabel#1#2#3{{%
+ \let\protect\relax
+% \let\@tempa\relax\let\@tempc\relax\relax\relax
+ \edef\@tempa{#1}%
+ \edef\@tempc{#2}%
+% \show\@tempa\show\@tempc
+ \ifx\@tempa\@tempc\relax\@condlabelfalse\else\@condlabeltrue\fi
+ \iflonglabel\@condlabeltrue\fi
+ \ifshortlabel\@condlabelfalse\fi
+ \if@condlabel #3\fi
+ }}
+\newif\if@condlabel
+\newif\iflonglabel \longlabelfalse
+\newif\ifshortlabel \shortlabelfalse
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\short\ref}
+% \begin{macro}{\whole\ref}
+% \begin{macro}{\quiet\ref}
+% Variing \texttt{\string\ref}'s. |\short\ref{|\meta{key}|}|
+% always prints a short version, that is omit as much as possible
+% in |\@@conduselabel|. |\whole\ref{|\meta{key}|}| forces the long
+% version. |\quiet\ref{|\meta{key}|}| prints nothing (this was
+% once used to enable to analyse the reference structure of a
+% complicated proof).
+% \begin{macrocode}
+\def\short\ref#1{{\shortlabeltrue\ref{#1}}}
+\def\whole\ref#1{{\longlabeltrue\ref{#1}}}
+\def\quiet\ref#1{\vphantom{\ref{#1}}}
+% \end{macrocode}
+% \end{macro}
+% \end{macro}
+% \end{macro}
+% \begin{macro}{\refstepcounter}
+% Modify \texttt{\string\refstepcounter} to allow prefixes to be
+% one-parameter macros. (Just added an
+% \texttt{\string\expandafter}, see LaTeX2e doumentation.)
+%
+% \changes{v2.03}{2005/08/29}{Added explanation interplay with
+% \Lpackage{hyperref}.}
+% The package \Lpackage{hyperref} replaces |\refstepcounter| with
+% its own definition but calls the previous version. Therefore it
+% must be loaded \emph{after} this class. This applies also to any other
+% package that modifies |\refstepcounter| similarly.
+% \begin{macrocode}
+\CheckCommand*\refstepcounter[1]{\stepcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\endcsname\csname the#1\endcsname}%
+}
+\def\refstepcounter#1{\stepcounter{#1}%
+ \protected@edef\@currentlabel
+ {\csname p@#1\expandafter\endcsname\csname the#1\endcsname}%
+% ^^^^^^^^^^^^
+ \protected@edef\@bare@currentlabel
+ {\csname the#1\endcsname}%
+}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\label}
+% Modify \texttt{\string\label} to allow to store also the bare
+% value of the label.
+% \changes{v2.20}{2012/03/01}{Modified bare part to allow
+% \Lpackage{hyperref} to change \cs{label} before we use change it
+% for \cs{bare}.}
+% \begin{macrocode}
+\if@bare
+\def\relabel@label#1{\ifx\@currentlabel\@bare@currentlabel\else
+ {\let\@currentlabel\@bare@currentlabel\relabel@olabel{bare@#1}}%
+ \fi\relabel@olabel{#1}}
+\def\init@bare{\if@bare\let\relabel@olabel\label\let\label\relabel@label\fi}
+\AtBeginDocument{\init@bare}%
+\def\bare\ref#1{\@ifundefined{r@bare@#1}{\ref{#1}}{\ref{bare@#1}}}
+\else
+\def\bare{\PackageWarning{relabel}{\string\bare\space disabled! (Use
+ option bare to enable it.)}}
+\def\init@bare{}
+\fi
+\let\@bare@currentlabel\@currentlabel
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</relabel>
+% \end{macrocode}
+%
+% \GetFileInfo{ccref.sty}
+% \CodelinePrefix{r}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \changes{v2.15}{2010/10/21}{Moved this from the main part into a
+% seperate file.}
+% \begin{macrocode}
+%<*ccref>
+% \end{macrocode}
+% \begin{macro}{\defprefix}
+% \LaTeX{} already defined the features for nice references, although
+% they were not really used. The package \Lpackage{relabel} provides
+% some macros to use these features. Especially, a macro
+% |\defprefix| is defined which allows to define a prefix for the
+% label of a counter:
+% |\defprefix{|\meta{counter}|}|\meta{definition}.
+% \changes{v2.01}{2000/09/15}{Internationalized prefixes.
+% Michael N{\"{u}}sken, Paderborn}
+% \changes{v2.01}{2000/11/28}{Added \cs{chaptername}.
+% Michael N{\"{u}}sken, Paderborn}
+% \begin{macrocode}
+\RequirePackage{relabel}[1998/09/07 v1.01]
+\let\nref\ref
+% \end{macrocode}
+% \end{macro}
+% We define prefixes for the standard counters.
+% \begin{macrocode}
+\babel\def\partname{Part}[german=Teil,french=\protect\@Fpt partie]
+\defprefix{part}{\partname~}
+\babel\def\chaptername{Chapter}[german=Kapitel,french=Chapitre]
+\defprefix{chapter}{\chaptername~}
+\babel\def\sectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{section}{\sectionname~}
+\babel\def\subsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsection}{\subsectionname~}
+\babel\def\subsubsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsubsection}{\subsubsectionname~}
+\let\ccorg@appendix\appendix
+\babel\def\appendixname{Appendix}[german=Anhang,french=Annexe]
+\def\appendix{%
+ \defprefix{section}{\appendixname~}%
+ \defprefix{subsection}{\appendixname~}%
+ \defprefix{subsubsection}{\appendixname~}%
+ \ccorg@appendix}
+\defprefix{equation}#1{(#1)}
+\babel\def\figurename{Figure}[german=Figur,french={\scshape Figure}]
+\defprefix{figure}{\figurename~}
+\babel\def\tablename{Table}[german=Tafel,french={\scshape Table}]
+\defprefix{table}{\tablename~}
+\numberallwithin{section}
+\AtBeginDocument{\@adjustnumbering}
+%</ccref>
+% \end{macrocode}
+%
+% \GetFileInfo{thcc.sty}
+% \CodelinePrefix{t}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \changes{v0.91}{2000/02/29}{Advanced version to official 2.00}
+% \changes{v2.15b}{2010/10/21}{Pretending that amsthm is loaded makes
+% hyperref do strange things. Logic adapted.}
+% \changes{v2.15b}{2010/10/26}{Pretending that amsthm is loaded makes
+% hyperref do strange things. Loading amsthm causes strange
+% errors. Logic adapted so that either way no harm is done.}
+% \begin{macrocode}
+%<*thcc>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{thcc}[2012/06/22 v2.25
+ computational complexity, theorem layouts.
+ Michael Nuesken, Bonn.]
+% \end{macrocode}
+% We require Frank Mittelbach's \Lpackage{theorem} package.
+% \begin{macrocode}
+\RequirePackage{theorem}[1995/11/23 v2.2c]
+% \end{macrocode}
+% The following is actually a really dirty trick. On the one hand
+% side we pretend that \Lpackage{amsthm} is loaded by defining
+% \cs{ver@amsthm.sty}, which is checked when reading a new package by
+% the LaTeX internal command \cs{@ifl@aded}. On the other hand side,
+% we tell \Lpackage{hyperref} that it is not loaded by manipulating
+% the LaTeX internal command \cs{@ifpackageloaded} used there. (If
+% further problems occur we may really run into trouble with this
+% technique.)
+% \begin{macrocode}
+\def\cc@forbiddenpackage{2010/10/26 Forbidden by cc.cls/thcc.sty. Not loaded!}
+\expandafter\global\expandafter\let\csname ver@amsthm.sty\endcsname\cc@forbiddenpackage
+\expandafter\global\expandafter\let\csname ver@apthm.sty\endcsname\cc@forbiddenpackage
+\let\orig@ifpackageloaded\@ifpackageloaded
+\def\@ifpackageloaded#1{%
+ \expandafter\ifx\csname ver@#1.\@pkgextension\endcsname\cc@forbiddenpackage
+ \expandafter\@secondoftwo% consider it as not loaded
+ \else
+ \gdef\cc@reserved{\orig@ifpackageloaded{#1}}\expandafter\cc@reserved%
+ \fi}
+% \end{macrocode}
+% The macro |\shortcite| might have been provided by the package
+% \Lpackage{cccite} or predecessors of it. If not we let it be equal
+% to the normal |\cite|.
+% \changes{v2.07}{2007/01/11}{Added support for manualbibliography.
+% Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\def\activate@shortcite{}
+\AtBeginDocument{%
+ \@ifpackageloaded{cccite}{%
+ \def\activate@shortcite{\let\cite\shortcite}
+ }{}%
+ \@ifpackageloaded{natbib}{%
+ \def\activate@shortcite{%
+ \let\cite\citealt
+ \let\citet\citealt
+ \let\citep\citealp
+ }%
+ }{}%
+ \if@manualbibliography\def\activate@shortcite{}\fi
+}
+% \end{macrocode}
+%
+% This is the standard theorem layout for \cc. The theorem text is
+% typeset slanted, the header terminates with a dot. Inside the
+% optional argument |\cite| is |\shortcite| which avoids double
+% parentheses.
+% \changes{v2.25}{2012/06/21}{Changed \cs{th@cc} and \cs{th@ccnn} so
+% that more than single line comments are possible. Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.25}{2012/06/27}{Modified spacing. Michael N{\"{u}}sken,
+% Bonn}
+% \begin{macrocode}
+\newskip\postthmcmtskip
+\postthmcmtskip .5em plus .5em
+\def\th@cc{%
+ \normalfont\slshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1\ ##2]%
+ {\normalfont({\activate@shortcite{}##3}).}\hskip\postthmcmtskip}%
+ }
+% \end{macrocode}
+%
+% This is the unnumbered theorem layout alike \cc, it only differs
+% from the standard theorem layout in that the number is not typed
+% (argument 2).
+% \begin{macrocode}
+\def\th@ccnn{%
+ \normalfont\slshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1.]}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1]%
+ {\normalfont({\activate@shortcite{}##3}).}\hskip\postthmcmtskip}%
+ }
+% \end{macrocode}
+%
+% This is the unnumbered layout for proofs \cc. The proof text is
+% typeset upright, the header terminates with a dot and a double
+% blank.
+% \changes{v2.25b}{2013/06/26}{Set \cs{itemindent} in proofs to
+% \cs{labelsep}, so that no negative indention is produced. You may
+% use \cs{everyproof}{\cs{itemsep}1ex} or similar to have vertical
+% space before in-proof items.}
+% \begin{macrocode}
+\newskip\postprfcmtskip
+\postprfcmtskip .5em plus 1em
+\def\th@ccproof{%
+ \normalfont\upshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1.\ \ ]%
+ \itemindent\labelsep}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1]%
+ {\normalfont({\activate@shortcite{}##3}).}\hskip\postprfcmtskip
+ \itemindent\labelsep}%
+ }
+% \end{macrocode}
+%
+% This is the standard algorithm layout for \cc. The algorithm text
+% is typeset upright, the header terminate with a dot. The optional
+% argument follows the rest terminated with a dot (instead of being
+% in parentheses).
+% \begin{macrocode}
+\def\th@ccalgo{%
+ \normalfont\upshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1\ ##2.]
+ {\normalfont##3.\par}}%
+ }
+% \end{macrocode}
+%
+% This is the unnumbered algorithm layout for \cc. The number is
+% omitted.
+% \begin{macrocode}
+\def\th@ccalgonn{%
+ \normalfont\upshape
+ \def\@begintheorem##1##2{\item
+ [\hskip\labelsep \theorem@headerfont ##1.]}%
+ \def\@opargbegintheorem##1##2##3{\item
+ [\hskip\labelsep \theorem@headerfont ##1.] {\normalfont##3.\par}}%
+ }
+% \end{macrocode}
+% The default header font is the caps and small caps font.
+% \begin{macrocode}
+\gdef\theorem@headerfont{\scshape}
+%</thcc>
+% \end{macrocode}
+%
+% \GetFileInfo{ccthm.sty}
+% \CodelinePrefix{T}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \begin{macrocode}
+%<*ccthm>
+\ProvidesPackage{ccthm}[2014/07/08 v2.25d
+ theorem environments for cc. Michael Nuesken, Bonn.]
+% \end{macrocode}
+%
+% \subsection{Theorem-like environments}
+%
+% Referring to numerated items in theorem usually means that you
+% also need to mention the theorem number. With
+% \Lclo{theoremitemprefixes} this is automatically done.
+% \changes{v2.25d}{2014/07/08}{Process options in calling order
+% rather than definition order. Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\newif\if@theoremitemprefixes
+\DeclareOption{theoremitemprefixes}{\@theoremitemprefixestrue}
+\DeclareOption{notheoremitemprefixes}{\@theoremitemprefixesfalse}
+\ExecuteOptions{theoremitemprefixes}
+\ProcessOptions*
+% \end{macrocode}
+%
+% Then, we load the packages for theorems and proofs.
+% \Lpackage{theorem} by Frank Mittelbach provides more flexible ways
+% to define new theorem-like environments. \Lpackage{thcc} is
+% \cc{}'s add-on to it, five new theorem styles are defined in it:
+% one each for proofs, for unnumbered and for numbered theorems, for
+% unnumbered and for numbered algorithms.
+% \begin{macrocode}
+\RequirePackage{theorem}[1995/11/23 v2.2c]
+\RequirePackage{thcc}
+\RequirePackage{relabel}
+% \end{macrocode}
+%
+%
+% \begin{macro}{\everytheorem}
+% As for proofs, we also introduce a token list |\everytheorem|
+% that will be executed at the beginning of each theorem-like
+% environment.
+% \begin{macrocode}
+\newtoks\everytheorem
+\everytheorem{}
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\EnumerationInTheorems}
+% This macro defines a new labeling scheme to be used inside
+% theorems. For example, the outer list is numbered with small
+% roman numerals rather than with arabic numerals. If
+% \Lclo{theoremitemprefixes} is active, the prefixes are manipulated
+% so as to contain the title (and number) of the surrounding
+% theorem-like environment.
+% \begin{macrocode}
+\if@theoremitemprefixes
+\def\EnumerationInTheorems#1{%
+ \let\@thm@currentlabel\@empty
+ \let\@thm@bare@currentlabel\@empty
+ \let\@@refstepcounter\refstepcounter
+ \def\refstepcounter##1{%
+ \let\refstepcounter\@@refstepcounter
+ \let\@@refstepcounter\@undefined
+ \refstepcounter{##1}%
+ \let\@thm@currentlabel\@currentlabel
+ \protected@edef\@thm@bare@currentlabel{{\csname the##1\endcsname}}%
+ }%
+ \def\theenumi{\@roman\c@enumi}%
+ \def\labelenumi{(\theenumi)}%
+ \defprefix{enumi}##1{%
+% \Iflabelchanged{#1}{\uselabel{#1}}%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {\@thm@bare@currentlabel}{\@thm@currentlabel}%
+ (##1)}%
+% \def\theenumii{\@alph\c@enumii}%
+% \def\labelenumii{(\theenumii)}%
+ \defprefix{enumii}##1{%
+% \Iflabelchanged{#1}{\uselabel{#1}}%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {\@thm@bare@currentlabel}{\@thm@currentlabel}%
+ (\theenumi.##1)}%
+ \def\theenumiii{\@arabic\c@enumiii}%
+ \def\labelenumiii{(\theenumiii)}%
+ \defprefix{enumiii}##1{%
+% \Iflabelchanged{#1}{\uselabel{#1}}%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {\@thm@bare@currentlabel}{\@thm@currentlabel}%
+ (\theenumi.\theenumii.##1)}%
+% \def\theenumiv{\@Alph\c@enumiv}%
+% \def\labelenumiv{\theenumiv.}%
+ \defprefix{enumiv}##1{%
+% \Iflabelchanged{#1}{\uselabel{#1}}%
+ \protect\protect\protect\@@conduselabel
+ {{\protect\csname the#1\endcsname}}%
+ {\@thm@bare@currentlabel}{\@thm@currentlabel}%
+ (\theenumi.\theenumii.\theenumiii##1)}%
+ }
+\else
+\def\EnumerationInTheorems#1{%
+ \def\theenumi{\@roman\c@enumi}%
+ \def\labelenumi{(\theenumi)}%
+ \defprefix{enumi}##1{(##1)}%
+% \def\theenumii{\@alph\c@enumii}%
+% \def\labelenumii{(\theenumii)}%
+ \defprefix{enumii}##1{(\theenumi.##1)}%
+ \def\theenumiii{\@arabic\c@enumiii}%
+ \def\labelenumiii{(\theenumiii)}%
+ \defprefix{enumiii}##1{(\theenumi.\theenumii.##1)}%
+% \def\theenumiv{\@Alph\c@enumiv}%
+% \def\labelenumiv{\theenumiv.}%
+ \defprefix{enumiv}##1{(\theenumi.\theenumii.\theenumiii##1)}%
+ }
+\fi
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\theorempreamblenn}
+% In order to execute some commands in every theorem, we use
+% |\theorembodyfont| as a hook. In the present version of
+% \Lpackage{theorem}, we access the theorem counter and the theorem
+% title by the following construction.
+% \changes{v2.24}{2012/06/18}{Bugfix: Dirty hacks to ensure correct
+% theorem, algorithm and equation counting and
+% referencing. MNuesken, Bonn}
+% \begin{macrocode}
+\def\reset@prefixrefstepcounter#1{%
+ \let\refstepcounter\cc@normal@refstepcounter% Put refstepcounter back to normal
+ \refstepcounter{#1}% do normal operation
+ \defprefix{equation}##1{(##1)}% reset equation prefix
+}
+\def\theorempreamblenn\@thm#1#2{%
+ \defprefix{#1}##1{#2}%
+ \let\cc@normal@refstepcounter\refstepcounter
+ \let\refstepcounter\reset@prefixrefstepcounter
+ \EnumerationInTheorems{#1}%
+ \pagebreak[3]\relax
+ \the\everytheorem
+ \@thm{#1}{#2}}
+% \end{macrocode}
+% \end{macro}
+% We select the body font and also put our special hook in it. (We
+% rely on the present implementation of \Lpackage{theorem}!) And we
+% select the theorem style for non numbered theorems in \cc{}.
+% \begin{macrocode}
+\theorem@bodyfont{\theorempreamblenn}
+\theoremstyle{ccnn}
+% \end{macrocode}
+% \begin{environment}{namedth@@r@m*}
+% \begin{environment}{namedtheorem*}
+% \begin{environment}{theorem*}
+% \begin{environment}{lemma*}
+% \begin{environment}{corollary*}
+% \begin{environment}{proposition*}
+% \begin{environment}{fact*}
+% \begin{environment}{remark*}
+% \begin{environment}{openquestion*}
+% \begin{environment}{definition*}
+% \begin{environment}{problem*}
+% \begin{environment}{notation*}
+% \begin{environment}{exercise*}
+% \begin{environment}{assumption*}
+% \begin{environment}{open*}
+% \begin{environment}{claim*}
+% \begin{environment}{conjecture*}
+% \begin{environment}{observation*}
+% \begin{environment}{result*}
+% \begin{environment}{note*}
+% \begin{environment}{hypothesis*}
+% \begin{environment}{example*}
+% \begin{environment}{answer*}
+% \begin{environment}{convention*}
+% \begin{environment}{counterexample*}
+% \begin{environment}{question*}
+% \begin{environment}{thesis*}
+% \begin{environment}{warning*}
+% We define lots of non numbered theorem-like environments
+% including \Lenv{namedtheorem*} which allows a user specified
+% theorem heading.
+% \begin{macrocode}
+\newtoks\theoremtitle
+\newtheorem{namedth@@r@m*}{\the\theoremtitle}
+\newenvironment{namedtheorem*}[1]{%
+ \theoremtitle{#1}\csname namedth@@r@m*\endcsname}
+{\csname endnamedth@@r@m*\endcsname}
+\babel\def\Answer{Answer}[german=Antwort,french=Reponse]
+\newtheorem{answer*}[namedth@@r@m*]{\Answer}%
+\babel\def\Assumption{Assumption}[german=Annahme,french=Assomption]
+\newtheorem{assumption*}[namedth@@r@m*]{\Assumption}
+\babel\def\Claim{Claim}[german=Behauptung,french=Proposition]
+\newtheorem{claim*}[namedth@@r@m*]{\Claim}
+\babel\def\Conjecture{Conjecture}[german=Vermutung,french=Conjecture]
+\newtheorem{conjecture*}[namedth@@r@m*]{\Conjecture}
+\babel\def\Convention{Convention}[german=Vereinbarung,french=Convention]
+\newtheorem{convention*}[namedth@@r@m*]{\Convention}%
+\babel\def\Corollary{Corollary}[german=Korollar,french=Corollaire]
+\newtheorem{corollary*}[namedth@@r@m*]{\Corollary}
+\babel\def\Counterexample{Counterexample}[%
+ german=Gegenbeispiel,french=Contre-exemple]
+\newtheorem{counterexample*}[namedth@@r@m*]{\Counterexample}%
+\babel\def\Definition{Definition}[german=Definition,french=D\'efinition]
+\newtheorem{definition*}[namedth@@r@m*]{\Definition}
+\babel\def\Exercise{Exercise}[german=Aufgabe,french=Exercice]
+\newtheorem{exercise*}[namedth@@r@m*]{\Exercise}
+\babel\def\Fact{Fact}[german=Fakt,french=Fait]
+\newtheorem{fact*}[namedth@@r@m*]{\Fact}
+\babel\def\Hypothesis{Hypothesis}[german=Hypothese,french=Hypoth\`ese]
+\newtheorem{hypothesis*}[namedth@@r@m*]{\Hypothesis}
+\babel\def\Lemma{Lemma}[german=Lemma,french=Lemme]
+\newtheorem{lemma*}[namedth@@r@m*]{\Lemma}
+\babel\def\Notation{Notation}[german=Notation,french=Notation]
+\newtheorem{notation*}[namedth@@r@m*]{\Notation}
+\babel\def\Note{Note}[german=Notiz,french=Note]
+\newtheorem{note*}[namedth@@r@m*]{\Note}
+\babel\def\Observation{Observation}[%
+ german=Beobachtung,french=Observation]
+\newtheorem{observation*}[namedth@@r@m*]{\Observation}
+\babel\def\OpenQuestion{Open Question}[%
+ german=Offene Frage,french=Question ouverte]
+\newtheorem{open*}[namedth@@r@m*]{\OpenQuestion}
+\newtheorem{openquestion*}[namedth@@r@m*]{\OpenQuestion}
+\babel\def\Problem{Problem}[german=Problem,french=Probl\`eme]
+\newtheorem{problem*}[namedth@@r@m*]{\Problem}
+\babel\def\Proposition{Proposition}[%
+ german=Behauptung,french=Proposition]
+\newtheorem{proposition*}[namedth@@r@m*]{\Proposition}
+\babel\def\Question{Question}[german=Frage,french=Question]
+\newtheorem{question*}[namedth@@r@m*]{\Question}%
+\babel\def\Remark{Remark}[german=Bemerkung,french=Remarque]
+\newtheorem{remark*}[namedth@@r@m*]{\Remark}
+\babel\def\Result{Result}[german=Ergebnis,french=R\'esultat]
+\newtheorem{result*}[namedth@@r@m*]{\Result}
+\babel\def\Theorem{Theorem}[german=Satz,french=Th\'eor\`eme]
+\newtheorem{theorem*}[namedth@@r@m*]{\Theorem}
+\babel\def\Thesis{Thesis}[german=These,french=Th\`ese]
+\newtheorem{thesis*}[namedth@@r@m*]{\Thesis}%
+\babel\def\Warning{Warning}[german=Warnung,french=Alerte]
+\newtheorem{warning*}[namedth@@r@m*]{\Warning}%
+%\newtheorem{example*}[namedth@@r@m*]{Example}%
+\babel\def\Example{Example}[german=Beispiel,french=Exemple]
+\newenvironment{example*}[1][]{%
+ \cc@ifempty{#1}
+ {\csname namedtheorem*\endcsname{\Example}}%
+ {\csname namedtheorem*\endcsname{\Example}[#1]}%
+ \upshape
+ \let\qedsymbol\eoesymbol
+ }
+{\qed\csname endnamedtheorem*\endcsname}
+% \end{macrocode}
+% Note that examples have an end of example mark.
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \begin{macro}{\theorempreamble}
+% For numbered theorems, we modify the above slighlty.
+% \begin{macrocode}
+\def\theorempreamble\@thm#1#2{%
+ \defprefix{#1}##1{#2~##1}%
+ \let\cc@normal@refstepcounter\refstepcounter
+ \let\refstepcounter\reset@prefixrefstepcounter
+ \EnumerationInTheorems{#1}%
+ \pagebreak[3]\relax
+ \the\everytheorem
+ \@thm{#1}{#2}}
+\theorem@bodyfont{\theorempreamble}
+\theoremstyle{cc}
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{namedth@@r@m}
+% \begin{environment}{namedtheorem}
+% \begin{environment}{theorem}
+% \begin{environment}{lemma}
+% \begin{environment}{corollary}
+% \begin{environment}{proposition}
+% \begin{environment}{fact}
+% \begin{environment}{remark}
+% \begin{environment}{openquestion}
+% \begin{environment}{definition}
+% \begin{environment}{problem}
+% \begin{environment}{notation}
+% \begin{environment}{exercise}
+% \begin{environment}{assumption}
+% \begin{environment}{open}
+% \begin{environment}{claim}
+% \begin{environment}{conjecture}
+% \begin{environment}{observation}
+% \begin{environment}{result}
+% \begin{environment}{note}
+% \begin{environment}{hypothesis}
+% \begin{environment}{example}
+% \begin{environment}{answer}
+% \begin{environment}{convention}
+% \begin{environment}{counterexample}
+% \begin{environment}{question}
+% \begin{environment}{thesis}
+% \begin{environment}{warning}
+% Next we define the numbered (unstarred) versions of the theorem
+% like environments.
+% \changes{v2.01}{2000/06/28}{Added handling for cctheorems+separatelycounted.
+% Michael N{\"{u}}sken, Paderborn.}
+% \changes{v2.01}{2001/03/12}{Added handling optional arguments for
+% \lenv{example} and \lenv{example*}. Michael N{\"{u}}sken, Paderborn.}
+% \changes{v2.23}{2012/05/22}{For compatibility with
+% \lpackage{hyperref.sty}: Changed handling of using equation counter
+% for theorems (\lclo{separateequationcounting},
+% \lclo{noseparateequationcounting}).
+% Michael N{\"{u}}sken, Bonn.}
+% \begin{macrocode}
+\if@ccnosepeqncnt
+%%% \let\c@namedth@@r@m\c@equation
+%%% \def\thenamedth@@r@m{\theequation}
+\def\cc@thmcnter{equation}
+\newtheorem{namedth@@r@m}[\cc@thmcnter]{\the\theoremtitle}
+\else
+\newtheorem{namedth@@r@m}{\the\theoremtitle}
+\def\cc@thmcnter{namedth@@r@m}
+\fi
+\newenvironment{namedtheorem}[1]
+ {\theoremtitle{#1}\namedth@@r@m}
+ {\endnamedth@@r@m}
+\if@standardtheorems
+\newtheorem{answer}[\cc@thmcnter]{\Answer}
+\newtheorem{assumption}[\cc@thmcnter]{\Assumption}
+\newtheorem{claim}[\cc@thmcnter]{\Claim}
+\newtheorem{conjecture}[\cc@thmcnter]{\Conjecture}
+\newtheorem{convention}[\cc@thmcnter]{\Convention}
+\newtheorem{corollary}[\cc@thmcnter]{\Corollary}
+\newtheorem{counterexample}[\cc@thmcnter]{\Counterexample}
+\newtheorem{definition}[\cc@thmcnter]{\Definition}
+\newtheorem{exercise}[\cc@thmcnter]{\Exercise}
+\newtheorem{fact}[\cc@thmcnter]{\Fact}
+\newtheorem{hypothesis}[\cc@thmcnter]{\Hypothesis}
+\newtheorem{lemma}[\cc@thmcnter]{\Lemma}
+\newtheorem{notation}[\cc@thmcnter]{\Notation}
+\newtheorem{note}[\cc@thmcnter]{\Note}
+\newtheorem{observation}[\cc@thmcnter]{\Observation}
+\newtheorem{open}[\cc@thmcnter]{\OpenQuestion}
+\newtheorem{openquestion}[\cc@thmcnter]{\OpenQuestion}
+\newtheorem{problem}[\cc@thmcnter]{\Problem}
+\newtheorem{proposition}[\cc@thmcnter]{\Proposition}
+\newtheorem{question}[\cc@thmcnter]{\Question}
+\newtheorem{remark}[\cc@thmcnter]{\Remark}
+\newtheorem{result}[\cc@thmcnter]{\Result}
+\newtheorem{theorem}[\cc@thmcnter]{\Theorem}
+\newtheorem{thesis}[\cc@thmcnter]{\Thesis}
+\newtheorem{warning}[\cc@thmcnter]{\Warning}
+\newenvironment{example}[1][]{%
+ \cc@ifempty{#1}
+ {\namedtheorem{\Example}}%
+ {\namedtheorem{\Example}[#1]}%
+ \upshape
+ \let\qedsymbol\eoesymbol
+ }
+{\qed\endnamedtheorem}
+\else
+\newtheorem{answer}{\Answer}
+\newtheorem{assumption}{\Assumption}
+\newtheorem{claim}{\Claim}
+\newtheorem{conjecture}{\Conjecture}
+\newtheorem{convention}{\Convention}
+\newtheorem{corollary}{\Corollary}
+\newtheorem{counterexample}{\Counterexample}
+\newtheorem{definition}{\Definition}
+\newtheorem{exercise}{\Exercise}
+\newtheorem{fact}{\Fact}
+\newtheorem{hypothesis}{\Hypothesis}
+\newtheorem{lemma}{\Lemma}
+\newtheorem{notation}{\Notation}
+\newtheorem{note}{\Note}
+\newtheorem{observation}{\Observation}
+\newtheorem{open}{\OpenQuestion}
+\newtheorem{openquestion}{\OpenQuestion}
+\newtheorem{problem}{\Problem}
+\newtheorem{proposition}{\Proposition}
+\newtheorem{question}{\Question}
+\newtheorem{remark}{\Remark}
+\newtheorem{result}{\Result}
+\newtheorem{theorem}{\Theorem}
+\newtheorem{thesis}{\Thesis}
+\newtheorem{warning}{\Warning}
+\newtheorem{exampleexample}{\Example}
+\newenvironment{example}{%
+ \exampleexample%
+ \upshape
+ \let\qedsymbol\eoesymbol
+ }
+{\qed\endexampleexample}
+\fi
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+% \end{environment}
+%
+% \begin{environment}{continued}
+% \begin{environment}{contexample}
+% These two environments are intended to be used for continuation
+% of previous theorems or examples. Note that examples need a
+% different treatment since they have an end of example mark.
+% \begin{macrocode}
+\babel\def\ccContinued{continued}[%
+ german=fortgesetzt,french=continu\'e(e)]
+\newenvironment{continued}[1]{%
+ \csname namedtheorem*\endcsname{\ref{#1} \ccContinued}%
+ }{\csname endnamedtheorem*\endcsname}
+\newenvironment{contexample}[1]{%
+ \csname namedtheorem*\endcsname{\ref{#1} \ccContinued}%
+ \upshape
+ \let\qedsymbol\eoesymbol
+ }
+{\qed\csname endnamedtheorem*\endcsname}
+% \end{macrocode}
+% \end{environment}
+% \end{environment}
+%
+% \begin{macro}{\eoesymbol}
+% We initialize the end of example mark as a |\lozenge| ($\lozenge$).
+% \begin{macrocode}
+\newcommand{\eoesymbol}{\lozenge}
+% \end{macrocode}
+% \end{macro}
+% \begin{macrocode}
+%</ccthm>
+% \end{macrocode}
+%
+% \GetFileInfo{ccproof.sty}
+% \CodelinePrefix{P}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \begin{macrocode}
+%<*ccproof>
+\ProvidesPackage{ccproof}[2000/02/29 v2.05
+ proof environments for cc. Michael Nuesken, Bonn.]
+% \end{macrocode}
+%
+% We rely on F.~Mittelbach's \Lpackage{theorem} style plus the
+% corresponding layout for \cc.
+% \begin{macrocode}
+\RequirePackage{theorem}[1995/11/23 v2.2c]
+\RequirePackage{thcc}
+% \end{macrocode}
+%
+% \subsection{End of proof marks and \cs{qed}}
+%
+% The package \Lpackage{ccqed}, which is based on \Lpackage{QED} by
+% Paul Taylor, defines a macro |\pushright| which pushes its argument
+% to the right margin. (Note that this is problematic since it can
+% happen, that the argument does not fit on the present line but
+% still it should be at the right margin and not on the next page.)
+% If you use |\qed| outside proofs or theorem-like environments,
+% nothing happens. |\Qed| works then, too. (Although, you crash any
+% structure when using it!)
+% \begin{macrocode}
+\RequirePackage{ccqed}
+\newcommand{\Qed}{\@qedtrue\qed}%
+% \end{macrocode}
+%
+% \subsection{Proof environments}
+%
+% \begin{macro}{\everyproof}
+% First, we introduce a token list which will be evaluated each
+% time a proof is typed.
+% \begin{macrocode}
+\newtoks\everyproof \everyproof{}
+% \end{macrocode}
+% \end{macro}
+% \begin{environment}{namedproof}
+% Surprisingly, we define the environment \Lenv{namedproof} as a
+% theorem-like environment. So we select the appropriate theorem
+% style and the desired font for its body.
+% \begin{macrocode}
+\theoremstyle{ccproof}
+\theorembodyfont{}
+% \end{macrocode}
+% \begin{environment}{pr@@f}
+% Then we define an intermediate theorem-like environment
+% \Lenv{pr@@f} which has a variable title.
+% \begin{macrocode}
+\newtoks\prooftitle
+\newtheorem{pr@@f}{\the\prooftitle}
+% \end{macrocode}
+% \end{environment}
+% This is now used to define the \Lenv{namedproof} environment, which
+% sets the title, the end of proof mark, executes |\everyproof|,
+% and produces the end of proof mark using |\qed|. (Note that the
+% macro |\qed| can be used in the proof, then at the end no second
+% end of proof mark is produced.)
+% \begin{macrocode}
+\newenvironment{namedproof}[2][\qedsymbol]{%
+ \save@set@qed
+ \prooftitle{#2}%
+ \def\@tempa{#1}%
+ \def\@tempc{\qedsymbol}%
+ \ifx\@tempa\@tempc\relax\else\let\qedsymbol\@tempa\fi%
+ \the\everyproof \pr@@f
+ }{%
+ \qed\restore@qed
+ \endpr@@f}
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{proof}
+% The environment \Lenv{proof} is just a specialization of the
+% \Lenv{namedproof} environment.
+% \begin{macrocode}
+\babel\def\Proof{Proof}[german=Beweis,french=Preuve]
+\newenvironment{proof}{\namedproof{\Proof}}{\endnamedproof}
+% \end{macrocode}
+% \end{environment}
+% \begin{macrocode}
+%</ccproof>
+% \end{macrocode}
+%
+% \GetFileInfo{ccalgo.sty}
+% \CodelinePrefix{A}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \begin{macrocode}
+%<*ccalgo>
+% \end{macrocode}
+% \changes{v0.90}{1999/11/15}{Beta version. Michael N{\"{u}}sken, Paderborn}
+%
+% This package can only be used with \LaTeXe, so we make sure that an
+% appropriate message is displayed when another \TeX{} format is
+% used.
+%
+% Announce the package and its version:
+% \changes{v0.91}{2000/02/29}{Advanced version to official 2.00}
+% \changes{v2.10}{2010/05/11}{Redesign. Now at any time item with
+% text label and hanging indentation are possible as used for input
+% and output: \cs{item}[itemtitle] does it.}
+% \begin{macrocode}
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{ccalgo}[2012/06/22 v2.25
+ algorithm environment for cc. Michael Nuesken, Bonn.]
+% \end{macrocode}
+% Next we undefine some macros in case of overloading.
+% \begin{macrocode}
+\let\namedalgorithm\@undefined
+\let\endnamedalgorithm\@undefined
+\let\algorithm\@undefined
+\let\endalgorithm\@undefined
+% \end{macrocode}
+%
+% For a dirty trick below we rely on the specific implementation of
+% |\@item|. Thus we verify it!
+% \begin{macrocode}
+{\def\algonumerate@item[#1]{%
+ \if@noparitem
+ \@donoparitem
+ \else
+ \if@inlabel
+ \indent \par
+ \fi
+ \ifhmode
+ \unskip\unskip \par
+ \fi
+ \if@newlist
+ \if@nobreak
+ \@nbitem
+ \else
+ \addpenalty\@beginparpenalty
+ \addvspace\@topsep
+ \addvspace{-\parskip}%
+ \fi
+ \else
+ \addpenalty\@itempenalty
+ \addvspace\itemsep
+ \fi
+ \global\@inlabeltrue
+ \fi
+ \everypar{%
+ \@minipagefalse
+ \global\@newlistfalse
+ \if@inlabel
+ \global\@inlabelfalse
+ {\setbox\z@\lastbox
+ \ifvoid\z@
+ \kern-\itemindent
+ \fi}%
+ \box\@labels
+ \penalty\z@
+ \fi
+ \if@nobreak
+ \@nobreakfalse
+ \clubpenalty \@M
+ \else
+ \clubpenalty \@clubpenalty
+ \everypar{}%
+ \fi}%
+ \if@noitemarg
+ \@noitemargfalse
+ \if@nmbrlist
+ \refstepcounter\@listctr
+ \fi
+ \fi
+ \sbox\@tempboxa{\makelabel{#1}}%
+% \end{macrocode}
+% We require that |\global| follows this |\makelabel| to insert a
+% hook. Moreover we use that the produced label is put in
+% \cs{@tempboxa} to reinitialize the paragraph indention in
+% \cs{reinit@list@label}.
+% \begin{macrocode}
+ \global\setbox\@labels\hbox{%
+ \unhbox\@labels
+ \hskip \itemindent
+ \hskip -\labelwidth
+ \hskip -\labelsep
+ \ifdim \wd\@tempboxa >\labelwidth
+ \box\@tempboxa
+ \else
+ \hbox to\labelwidth {\unhbox\@tempboxa}%
+ \fi
+ \hskip \labelsep}%
+ \ignorespaces}
+\ifx\algonumerate@item\@item\else
+\PackageWarningNoLine{ccalgo}{%
+ Command \protect\@item\space has changed.\MessageBreak
+ Check if current package is valid}
+\fi}
+% \end{macrocode}
+% We load Frank Mittelbach's theorem style, \cc's add-on and the
+% \Lpackage{relabel} package. (The latter is for adding prefixes to
+% labels and thelike.)
+% \changes{v2.05}{2010/01/25}{Requiring ccaux now.}
+% \begin{macrocode}
+\RequirePackage{ccaux}
+\RequirePackage{theorem}[1995/11/23 v2.2c]
+\RequirePackage{thcc}
+\RequirePackage{relabel}
+% \end{macrocode}
+%
+% This macro restores the parshape of the current list.
+% \begin{macrocode}
+\def\list@parshape{%
+% \typeout{parshape 1 \the\@totalleftmargin+\the\linewidth}%
+ \parshape \@ne \@totalleftmargin \linewidth}
+% \end{macrocode}
+% Reinitializing the list means to readjust the left margin while
+% leaving the position of the list's labels fixed.
+% \begin{macrocode}
+\newdimen\reinit@list@last
+\def\reinit@list#1{%
+% \dimen@i#1\relax
+% \typeout{Reinit: old \the\reinit@list@last, new \the\dimen@i}%%% DEBUG
+ \advance\itemindent\reinit@list@last
+ \advance\@totalleftmargin-\reinit@list@last
+ \advance\linewidth\reinit@list@last
+ \global\reinit@list@last#1\relax
+ \ifdim\reinit@list@last>\algonumerate@maxindent
+ \global\reinit@list@last\algonumerate@maxindent\fi
+ \advance\itemindent-\reinit@list@last
+ \advance\@totalleftmargin\reinit@list@last
+ \advance\linewidth-\reinit@list@last
+% \typeout{\the\@totalleftmargin + \the\linewidth}%
+ \list@parshape}
+% \end{macrocode}
+% Often reinitialization is needed with respect to the label's
+% width.
+% \begin{macrocode}
+\def\reinit@list@label{%
+ \reinit@list{\wd\@tempboxa}%
+ }
+% \end{macrocode}
+% \begin{macro}{\makealgolabel}
+% The standard format of the labels is the number followed by a dot.
+% \begin{macrocode}
+\newcommand{\makealgolabel}[1]{#1.}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makeoptalgolabel}
+% A special label is surrounded by parentheses.
+% \begin{macrocode}
+\newcommand{\makeoptalgolabel}[1]{(#1)}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\makeoptalgocurrentlabel}
+% This macro is used to produce the |\bare| reference form for a
+% special label.
+% \begin{macrocode}
+\let\makeoptalgocurrentlabel\makeoptalgolabel
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{The \Lenv{algonumerate} environment}
+%
+% This environment is the basis of the algorithm environment. It
+% allows some items with names (as |Input|, |Output|) which have a
+% special indention. These named and the following numbered items
+% are separated by a |\medskip|.
+%
+% We need a counter. By default we do not use a prefix.
+% \begin{macrocode}
+\newcounter{algonumerate}
+\defprefix{algonumerate}{}
+% \end{macrocode}
+% This count holds the number of named items.
+% \begin{macrocode}
+\newcount\algonumerate@items
+% \end{macrocode}
+% Formatting the counter.
+% \begin{macrocode}
+\renewcommand{\thealgonumerate}{%
+ \expandafter\ifnum\value{algonumerate}<\@ne
+ \algonumfield%
+ \else
+ \arabic{algonumerate}\fi}%
+% \end{macrocode}
+% This macro returns the name corresponding to the counter
+% |algonumerate|. The macro |\@algonumfield| should be
+% defined using |\ifcase-#1| \dots{} |\fi| and return the
+% corresponding name. This is done be |\algonumerateinit|, see
+% below.
+% \begin{macrocode}
+\def\algonumfield{\ignorespaces
+ \ifx\@algonumfield\relax\else
+ \expandafter\@algonumfield\csname c@algonumerate\endcsname\fi
+ \unskip}
+% \end{macrocode}
+% A toggle to distinguish special labels and numbered labels.
+% \begin{macrocode}
+\newif\if@speciallabel
+% \end{macrocode}
+% This macro produces the labels in all cases.
+% \changes{v2.10}{2010/05/11}{Redesign.}
+% \begin{macrocode}
+\newcommand{\labelalgonumerate}{%
+ \count@\value{algonumerate}%
+ \ifnum\count@<\z@
+ \algonumfield%
+ \else
+ \makealgolabel{\thealgonumerate}%
+ \fi
+ }%
+% \end{macrocode}
+% These two dimensions define the width of a label and its distance
+% to the text.
+% \begin{macrocode}
+\newdimen\algo@labelsep
+\newdimen\steplabelwidth
+% \end{macrocode}
+% This token list is executed at the next |\item|.
+% \changes{v2.13}{2010/05/29}{Introduced \cs{AtNextNumberedItem}, Michael
+% N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\newtoks\AtNextItem
+\newtoks\AtNextNumberedItem
+% \end{macrocode}
+% A toggle noting whether the named items are complete or not.
+% \changes{v2.10}{2010/05/11}{Redesign: implement another mechanism
+% to get information about the type of \cs{item} that was called.}
+% \begin{macrocode}
+\newif\if@noitemargcopy
+\let\orig@item\item
+\def\item{\@ifnextchar[{\@noitemargcopyfalse\orig@item}{\@noitemargcopytrue\orig@item}}
+\newcount\last@algolabeltype
+\newcount\this@algolabeltype
+% \end{macrocode}
+% This is |\makelabel| for our list. It produces the label,
+% inserts the hook and makes all necessary modifications.
+% \begin{macrocode}
+\newcommand{\algonumerate@label}[1]{%
+ \expandafter\count@\value{algonumerate}%
+% \typeout{algonumerate@label #1}%
+% \typeout{...counter=\the\count@}%
+% \if@noitemargcopy\typeout{...noitemarg}\else\typeout{...explicititemarg}\fi
+% \end{macrocode}
+% Now, fork with respect to the item type. There are four variants:
+% a numbered item with negative counter procudes an item with hanging
+% indention and a text label from the list supplied at the list
+% initialisation. A numbered item with positive counter produces a
+% numbered item. The counter is stepped in these two cases and zero
+% is skipped. An item with empty optional argument produces an
+% item like a numbered one just without a number. An item with a
+% non-empty optional argument produces an item with hanging indention
+% and the optional argument as label.
+% \begin{macrocode}
+ \if@noitemargcopy
+ \ifnum\count@<\z@
+ \let\next\algonumerate@labelautomatic
+ \global\last@algolabeltype\this@algolabeltype
+ \global\this@algolabeltype\m@ne
+ \else
+ \let\next\algonumerate@labelnumber
+ \global\last@algolabeltype\this@algolabeltype
+ \global\this@algolabeltype\@ne
+ \fi
+ \else
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty
+ \let\next\algonumerate@labelempty
+ \global\last@algolabeltype\this@algolabeltype
+ \global\this@algolabeltype\tw@
+ \else
+ \let\next\algonumerate@labelexplicit
+ \global\last@algolabeltype\this@algolabeltype
+ \global\this@algolabeltype\z@
+ \fi
+ \fi\next{#1}}
+% \end{macrocode}
+% For each of the four variants we now specify how to typeset them.
+% \begin{macrocode}
+\newcommand{\algonumerate@makelabelexplicit}[1]{%
+ #1:\hskip\algo@labelsep%
+}
+\newcommand{\algonumerate@makelabelempty}[1]{%
+ \hskip\steplabelwidth\hskip\algo@labelsep%
+}
+\newcommand{\algonumerate@makelabelautomatic}[1]{%
+ #1:\hskip\algo@labelsep%
+}
+\newcommand{\algonumerate@makelabelnumber}[1]{%
+ \hb@xt@\steplabelwidth{\hss
+ #1%
+ }\hskip\algo@labelsep%
+}
+% \end{macrocode}
+% The macro \cs{algonumerate@postprocess} contains all the stuff to
+% be done after producing the label and putting it into
+% \cs{@tempboxa}.
+% \begin{macrocode}
+\newcommand{\algonumerate@postprocess}[1]{%
+ \expandafter\count@\value{algonumerate}%
+% \end{macrocode}
+% We insert a \cs{medskip} if a (positively) numbered item follows an
+% automatic or explicit text item.
+% \begin{macrocode}
+ \ifnum\last@algolabeltype<\@ne
+ \ifnum\this@algolabeltype=\@ne
+ \medskip
+ \fi
+ \fi
+% \end{macrocode}
+% Next, we execute case specific commands. (For text items we need to
+% set \cs{@currentlabel} here.)
+% \begin{macrocode}
+ #1%
+ \global\let\latest@item@currentlabel\@currentlabel
+ \global\let\latest@item@bare@currentlabel\@bare@currentlabel
+ \ifnum\count@=\m@ne
+ \stepcounter{algonumerate}%
+ \fi
+ \global\@speciallabeltrue
+% \end{macrocode}
+% Execute |\AtNextItem| once and clear it. If in a numbered item
+% execute |\AtNextNumberedItem| once and clear it.
+% \changes{v2.13}{2010/05/29}{Introduced \cs{AtNextNumberedItem}, Michael
+% N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+ \the\AtNextItem \global\AtNextItem{}%
+ \ifnum\this@algolabeltype=\@ne
+ \the\AtNextNumberedItem \global\AtNextNumberedItem{}%
+ \fi
+% \end{macrocode}
+% Reinitialize the list indentions.
+% \begin{macrocode}
+ \reinit@list@label
+}
+% \end{macrocode}
+% The next four macros are similar to each other. For each item type
+% they produces the label and use the dirty trick to get counting and
+% paragraph formatting as desired.
+% \begin{macrocode}
+\newcommand{\algonumerate@labelexplicit}[1]{% For algorithm i/o
+% \typeout{item explicit [#1]}%
+ \algonumerate@makelabelexplicit{#1}%
+% \end{macrocode}
+%
+% The following two lines are a dirty trick!!! This establishes
+% the hook.
+% \begin{macrocode}
+ \global\let\algonumerate@global\global
+ \gdef\global{\algonumerate@global\let\global\algonumerate@global
+ \algonumerate@postprocess{%
+ \protected@edef\@currentlabel{\csname p@\@listctr\endcsname
+ {\makeoptalgocurrentlabel{#1}}}%
+ \protected@edef\@bare@currentlabel{#1}%
+ }%
+% \end{macrocode}
+% Execute the |\global| which was used to implement this hook.
+% \begin{macrocode}
+ \global}%
+}
+\newcommand{\algonumerate@labelempty}[1]{% For algorithm i/o
+% \typeout{item empty [#1]}%
+ \algonumerate@makelabelempty{}%
+ \global\let\algonumerate@global\global
+ \gdef\global{\algonumerate@global\let\global\algonumerate@global
+ \algonumerate@postprocess{}%
+ \global}%
+}
+\newcommand{\algonumerate@labelautomatic}[1]{% For algorithm steps
+% \typeout{item automatic [#1]}%
+ \algonumerate@makelabelautomatic{#1}%
+ \global\let\algonumerate@global\global
+ \gdef\global{\algonumerate@global\let\global\algonumerate@global
+ \algonumerate@postprocess{%
+ \protected@edef\@currentlabel{\csname p@\@listctr\endcsname
+ {\makeoptalgocurrentlabel{#1}}}%
+ \protected@edef\@bare@currentlabel{#1}%
+ }%
+ \global}%
+}
+\newcommand{\algonumerate@labelnumber}[1]{% For algorithm steps
+% \typeout{item numbered [#1]}%
+ \algonumerate@makelabelnumber{#1}%
+ \global\let\algonumerate@global\global
+ \gdef\global{\algonumerate@global\let\global\algonumerate@global
+ \algonumerate@postprocess{}%
+ \global}%
+}
+%
+\newdimen\algonumerate@maxindent
+% \end{macrocode}
+% We add a mechanism to find and store the length of the longest
+% macro. However, at present it is not used.
+% \begin{macrocode}
+\newdimen\@algolongestlabel
+\AtBeginDocument{\ifdim\algonumerate@maxindent=\z@
+ \algonumerate@maxindent.2\textwidth\fi}
+% \end{macrocode}
+% \begin{macro}{\algonumerateinit}
+% This macro prepares all things for the named items. Its argument
+% is just the comma separated list of the names.
+% \begin{macrocode}
+\def\algonumerateinit#1{%
+ \setcounter{algonumerate}{-1}%
+ \this@algolabeltype=\@M
+ \@algolongestlabel\z@
+ \def\@algonumfield{}%
+ \let\ccorg@or\or\let\or\relax
+ \algonumerate@items\z@
+ \@for\@tempa:=#1\do{%
+ \advance\algonumerate@items\@ne
+ \@temptokena\expandafter{\@tempa}%
+ \toks@\expandafter{\@algonumfield}%
+ \edef\@algonumfield{\the\@temptokena\or\the\toks@}%
+ \setbox\@tempboxa\hbox{\algonumerate@makelabelautomatic{\the\toks@}}%
+ \ifdim\wd\@tempboxa>\@algolongestlabel\relax
+ \@algolongestlabel\wd\@tempboxa\fi
+ }%
+ \let\or\ccorg@or
+ \toks@\expandafter{\@algonumfield}%
+ \edef\@algonumfield##1{\noexpand\ifcase-##1\noexpand\or
+ \the\toks@\noexpand\fi}%
+% \typeout{Starting ...}%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{algonumerate}
+% Finally, we define the environment \Lenv{algonumerate}. Apart
+% from initiation the list, it also activates the environments
+% \Lenv{block} (aka \Lenv{body}), \Lenv{range}, \Lenv{indention},
+% and \Lenv{meta}.
+% \changes{v2.10}{2010/05/11}{Added the macro
+% \cs{skipremainingspecialitems} to allow the user to override the
+% standard label item list.}
+% \begin{macrocode}
+\newenvironment{algonumerate}{%
+ \if@inlabel~\fi\par
+ \list{\labelalgonumerate}{%
+ \usecounter{algonumerate}%
+ \let\makelabel\algonumerate@label
+ \parsep\z@%
+ \topsep\z@%
+ \itemsep\z@%
+ \parskip\z@%
+ \leftmargin\labelsep
+ \algo@labelsep\z@
+ \settowidth\steplabelwidth{\makealgolabel{99}}%
+ \labelwidth\z@
+ \global\reinit@list@last\z@
+ }%
+ \setcounter{algonumerate}{-\algonumerate@items}%
+ \ifnum\algonumerate@items>\z@
+ \addtocounter{algonumerate}\m@ne
+ \fi
+ \setcounter{block@cnt}\z@
+ \let\step\algo@step
+ \let\block\algo@block
+ \let\endblock\endalgo@block
+ \let\range\algo@range
+ \let\endrange\endalgo@range
+ \let\indention\algo@indention
+ \let\endindention\endalgo@indention
+ \let\body\algo@block
+ \let\endbody\endalgo@block
+ \let\meta\algo@meta
+ \let\endmeta\endalgo@meta
+ \def\skipremainingspecialitems{\setcounter{algonumerate}{0}}%
+ }{%
+ \endlist\vskip\topskip}
+% \end{macrocode}
+% \end{environment}
+%
+% The \Lenv{indention} environment indents the steps inside it by an
+% amount of |\blockindent|. Its default value is |\parindent|.
+% \begin{macrocode}
+\newdimen\blockindent \blockindent\parindent
+% \end{macrocode}
+% \begin{macro}{\nextblock}
+% This is just a counter for internal use. |\nextblock| stores
+% locally a new value in |\currentblock|. See the sophisticated
+% things below on how to use this.
+% \changes{v2.25d}{2014/06/30}{Changed definition of
+% \cs{currentblock} to be more robust, Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\newcounter{block@cnt}
+\newcommand{\nextblock}{%
+ \stepcounter{block@cnt}\edef\currentblock{\the\c@block@cnt}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\refsetrange}
+% This sets the current reference to the range of argument 1 to
+% argument 2, each argument is interpreted as a \meta{subkey}. The
+% current reference will be empty if the range is known to be
+% trivial.
+% \changes{v2.20}{2011/10/06}{Removed bug when namedalgorithm has
+% \cs{index} in its title, Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\newif\if@trivialrange
+\newcommand{\refsetrange}[2]{%
+ {\shortlabeltrue
+ \let\index\relax
+ \let\@tempa\relax
+ \protected@edef\@tempa{%
+ \csname r@\the\algorithmmasterkey-#1\endcsname}%
+ \let\@tempc\relax
+ \protected@edef\@tempc{%
+ \csname r@\the\algorithmmasterkey-#2\endcsname}%
+ \ifx\@tempa\@tempc\global\@trivialrangetrue
+ \else\global\@trivialrangefalse\fi
+ }%
+ \if@trivialrange
+ \protected@edef\@currentlabel{}%
+ \else
+ \protected@edef\@currentlabel{%
+ \csname p@\@listctr\endcsname{%
+ \protect\short\protect\ref{\the\algorithmmasterkey-#1}%
+ --%
+ \protect\short\protect\ref{\the\algorithmmasterkey-#2}%
+ }}%
+ \fi
+ \protected@edef\@bare@currentlabel{%
+ \protect\bare\protect\ref{\the\algorithmmasterkey-#1}%
+ --%
+ \protect\bare\protect\ref{\the\algorithmmasterkey-#2}%
+ }%
+ }
+% \end{macrocode}
+% \end{macro}
+% Note: the following environments are defined with a prefix |algo@|
+% in their names since they should not be available outside the
+% \Lenv{algonumerate} environment.
+% \changes{v2.25d}{2014/06/30}{Changed definition of
+% \cs{algo@range} to be more robust, Michael N{\"{u}}sken, Bonn}
+% \begin{environment}{range}
+% A |\label| (or an |\algolabel|) after the |\begin{range}| will
+% refer to the \emph{range} of items inside the environment.
+% \begin{macrocode}
+\newenvironment{algo@range}{%
+ \par
+ \stepcounter{block@cnt}\edef\block@{\the\c@block@cnt}%
+ \refsetrange{bob\block@}{eob\block@}%
+ \AtNextNumberedItem{\algolabel{bob\block@}}%
+ }{%
+ \algolabel{eob\block@}%
+ \par
+ \global\let\algo@block@currentlabel\@currentlabel
+ \global\let\algo@block@bare@currentlabel\@bare@currentlabel
+ \aftergroup\algo@endrange@aftergroup
+ }
+% \end{macrocode}
+% \end{environment}
+% This command restores the latest reference to the latest
+% encountered item.
+% \begin{macrocode}
+\def\algo@endrange@aftergroup{%
+% \let\@currentlabel\algo@block@currentlabel
+% \let\@bare@currentlabel\algo@block@bare@currentlabel
+ \let\@currentlabel\latest@item@currentlabel
+ \let\@bare@currentlabel\latest@item@bare@currentlabel
+% [Restored \@bare@currentlabel]
+ }
+% \end{macrocode}
+% \begin{environment}{indention}
+% The items inside this environment are indented by an amount of
+% |\blockindent|.
+% \changes{v2.12}{2010/05/21}{Debugged indention processing, Michael
+% N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\newdimen\indention@reinit@list@last
+\newenvironment{algo@indention}{%
+ \par
+ \indention@reinit@list@last\reinit@list@last
+ \advance\leftmargin\blockindent
+ \advance\labelsep\blockindent
+ \advance\@totalleftmargin\blockindent
+ \advance\linewidth-\blockindent
+ \def\algo@indention@undo{%
+ \reinit@list{\indention@reinit@list@last}%
+ \advance\leftmargin-\blockindent
+ \advance\labelsep-\blockindent
+ \advance\@totalleftmargin-\blockindent
+ \advance\linewidth\blockindent
+ }
+ \list@parshape
+ }{%
+ \par
+ \algo@indention@undo
+% \advance\leftmargin-\blockindent
+% \advance\labelsep-\blockindent
+% \advance\@totalleftmargin-\blockindent
+% \advance\linewidth\blockindent
+ \list@parshape
+ \aftergroup\list@parshape
+ \global\let\algo@block@currentlabel\@currentlabel
+ \global\let\algo@block@bare@currentlabel\@bare@currentlabel
+ \aftergroup\algo@endrange@aftergroup
+ }
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{block}
+% This combines the environment \Lenv{indention} and \Lenv{range}.
+% \begin{macrocode}
+\newif\ifindented@block
+\newenvironment{algo@block}{%
+ \algo@indention
+ \algo@range}{%
+ \endalgo@range
+ \endalgo@indention
+ }
+% \end{macrocode}
+% \end{environment}
+% \begin{environment}{meta}
+% This environment allows to insert comment-like things in
+% algorithms. It is indented by an amount of |meta@indent| which
+% defaults to |0pt|.
+% \begin{macrocode}
+\newdimen\meta@indent
+\newenvironment{algo@meta}{%
+ \@newlistfalse
+ \vskip\topskip
+ \par
+ \meta@indent\@totalleftmargin
+ \advance\labelsep-\meta@indent
+ \advance\@totalleftmargin-\meta@indent
+ \advance\linewidth\meta@indent
+ \advance\leftmargin-\meta@indent
+ \list@parshape
+ }{%
+ \vskip\topskip
+ \par
+ \advance\labelsep\meta@indent
+ \advance\@totalleftmargin\meta@indent
+ \advance\linewidth-\meta@indent
+ \advance\leftmargin\meta@indent
+ \aftergroup\list@parshape
+ }
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\step}
+% This macro, only available inside \Lenv{algonumerate}, is
+% essentially a combination of |\item| and |\algolabel|.
+% \begin{macrocode}
+\newcommand{\algo@step}[2][]{%
+ \expandafter\ifnum\value{algonumerate}<\m@ne
+ \PackageError{ccalgo}{Missing \protect\item}{}%
+ \fi
+ \cc@ifempty{#1}{\item}{\item[#1]}%
+ \def\@tempa{#2}\ifx\@tempa\@empty\else\algolabel{#2}\fi%
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Algorithm environments}
+%
+% Here we define the central environment to typeset algorithms.
+%
+% First, we need some preperation. The token list |\algotitle|
+% allows the use of another name each time \Lenv{namedalgorithm} is used.
+% \begin{macrocode}
+\newtoks\algotitle
+% \end{macrocode}
+% The theorem like environment \Lenv{named@lg@r@thm*} is responsible
+% for the outer layout of unnumbered algorithms. The theorem style
+% used comes from the package \Lpackage{thcc}.
+% \begin{macrocode}
+\theorembodyfont{}%
+\theoremstyle{ccalgonn}
+\newtheorem{named@lg@r@thm*}{\the\algotitle}
+\defprefix{named@lg@r@thm*}#1{\the\algotitle}
+% \end{macrocode}
+% The theorem like environment \Lenv{named@lg@r@thm} is responsible
+% for the outer layout of numbered algorithms. The theorem style
+% used comes from the package \Lpackage{thcc}. We ensure that the
+% counter used is the same as the one used for equations.
+% \changes{v2.03}{2002/02/01}{Removed a bug, now
+% \cs{thenamed@lg@r@thm} equals \cs{thenamedth@@r@m}.}
+% \changes{v2.23+}{2012/06/08}{Removed a bug, now named@al@r@thm is
+% defined like all other theorems with the v2.23 update in
+% mind. Michael N{\"{u}}sken, Bonn.}
+% \begin{macrocode}
+\theoremstyle{ccalgo}
+\providecommand{\cc@thmcnter}{equation}
+\newtheorem{named@lg@r@thm}[\cc@thmcnter]{\the\algotitle}
+\defprefix{named@lg@r@thm}#1{\the\algotitle~#1}
+%%% \ifx\c@namedth@@r@m\@undefined\else
+%%% \let\c@named@lg@r@thm\c@namedth@@r@m
+%%% \let\thenamed@lg@r@thm\thenamedth@@r@m
+%%% \fi
+% \end{macrocode}
+%
+% \begin{environment}{namedalgorithm}
+% This combines all necessary stuff to typeset an algorithm.
+% The environment takes up to four arguments. The first argument
+% is the \meta{heading}, in the standard |Algorithm|. The second
+% argument is optional and gives a comma separated list of titles
+% of required items. It defaults to |Input,Output|. The third
+% argument is the \meta{master-key} which is used to produce a
+% reference to the algorithm and in |\algolabel| to prefix
+% references inside the algorithm. The forth argument is again
+% optional and specifies a title.
+% \changes{v2.10}{2010/05/11}{Added extra optional argument to allow
+% specification of a longest label. But that is of no use at
+% present since this information is never used.}
+% \changes{v2.24}{2012/06/18}{Bugfix: Dirty hacks to ensure correct
+% theorem, algorithm and equation counting and
+% referencing. MNuesken, Bonn}
+% \begin{macrocode}
+\babel\def\babelInput{Input}[german=Eingabe,french=Entr\'ee]
+\babel\def\babelOutput{Output}[german=Ausgabe,french=Sortie]
+\babel\def\babelstep{step}[german=Schritt,french=pas]%% ??? pas?
+\babel\def\babelStep{Step}[german=Schritt,french=Pas]%% ??? pas?
+\newtoks\algorithmmasterkey
+\newenvironment{namedalgorithm}[1]{%
+ \pagebreak[3]%
+ \defprefix{\cc@thmcnter}##1{\the\algotitle~##1}%
+ \def\algo@theorem{named@lg@r@thm}%
+ \algotitle{#1}%
+ \n@medalgorithm}
+{\endalgonumerate\csname end\algo@theorem\endcsname}
+\newenvironment{namedalgorithm*}[1]{%
+ \defprefix{\cc@thmcnter}##1{\the\algotitle}%
+ \def\algo@theorem{named@lg@r@thm*}%
+ \algotitle{#1}%
+ \n@medalgorithm}
+{\endalgonumerate\csname end\algo@theorem\endcsname}
+\newcommand{\n@medalgorithm}[1][\babelInput,\protect\babelOutput]{%
+ \algonumerateinit{#1}%
+ \n@m@d@lgorithmgetlongestlabel}
+\newcommand{\n@m@d@lgorithmgetlongestlabel}[1][]{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty\else
+ \setbox\@tempboxa\hbox{\algonumerate@makelabel{#1}}%
+ \ifdim\wd\@tempboxa>\@algolongestlabel\relax
+ \@algolongestlabel\wd\@tempboxa\fi
+ \fi
+ \n@m@d@lgorithmgetmasterkey
+}
+\newcommand{\n@m@d@lgorithmgetmasterkey}[1]{%
+ \algorithmmasterkey{#1}%
+ \edef\@tempa{\the\algorithmmasterkey}\ifx\@tempa\@empty
+ \PackageError{ccalgo}{Empty key for algorithm like environment}{}\fi%
+ \n@m@d@lgorithm
+}
+\newcommand{\n@m@d@lgorithm}[1][]{%
+ \def\@tempa{#1}%
+ \ifx\@tempa\@empty\csname\algo@theorem\endcsname
+ \else\csname\algo@theorem\endcsname[#1]\fi%
+ \label{\the\algorithmmasterkey}%
+ \defprefix{equation}##1{(##1)}% reset equation prefix
+ \algo@keywords
+ \defprefix{algonumerate}{%
+ \Iflabelchanged{\algo@theorem}{\uselabel{\algo@theorem} %
+ \ifnum\c@algonumerate>\z@ \babelstep~\fi}}%
+% not good, since blocks need shorter labels!
+% \defprefix{algonumerate}##1{%
+% Step~##1\Iflabelchanged{\algo@theorem}
+% { of \uselabel{\algo@theorem}}}%
+ \algonumerate
+ }%
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{macro}{\algolabel}
+% This macro allows to define references locally, it uses the
+% \meta{masterkey} which is an argument to the
+% \Lenv{namedalgorithm} environment.
+% \begin{macrocode}
+\def\algolabel#1{\label{\the\algorithmmasterkey-#1}}%
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\stepref}
+% This macro allows to reference the labels defined by |\algolabel|
+% in a nice way. Its two arguments are the \meta{masterkey} and
+% the \meta{subkey}.
+% \begin{macrocode}
+\newcommand{\stepref}[2]{\babelStep~\short\ref{#1-#2} in \whole\ref{#1}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\newalgorithm}
+% As |\newtheorem| allows to define new theorem like environments,
+% this macro allows to define new algorithm like environments in
+% fixing the first two arguments of the environment
+% \Lenv{namedalgorithm}. At the same time a starred version is
+% defined.
+% \changes{v2.01}{2000/11/07}{Removed a bug from \cs{n@walgorithm}.}
+% \begin{macrocode}
+\newcommand{\newalgorithm}[2]{%
+ \def\newalgo@name{#1}%
+ \def\newalgo@title{#2}%
+ \n@walgorithm}
+\newcommand{\n@walgorithm}[1][\babelInput,\protect\babelOutput]{%
+ \protected@edef\@tempa{%
+ \noexpand\newenvironment{\newalgo@name}%
+ {\noexpand\namedalgorithm{\newalgo@title}[\noexpand#1]}%
+ {\noexpand\endnamedalgorithm}%
+ \noexpand\newenvironment{\newalgo@name*}%
+ {\noexpand\csname namedalgorithm*\endcsname
+ {\newalgo@title}[\noexpand#1]}%
+ {\noexpand\csname endnamedalgorithm*\endcsname}%
+ }\@tempa
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{algorithm}
+% This is the standard case algorithm like environment. Its title
+% is |\algorithmname| and its required (named) items are |Input|
+% and |Output|.
+% \begin{macrocode}
+\babel\def\algorithmname{Algorithm}[%
+ german=Algorithmus,french=Algorithme]
+\newalgorithm{algorithm}{\protect\algorithmname}
+% \end{macrocode}
+% \changes{v2.01}{2000/09/23}{Added \cs{CALL}.}
+%
+% Keywords in algorithms are typeset by the command
+% |\keyword{|\meta{keyword}|}|. Some keywords are predefined. All
+% these things are only accessible inside algorithm like
+% environments.
+% \changes{v2.01}{2004/01/26}{Babelized algo@keywords.}
+% \changes{v2.10}{2010/05/11}{Use \cs{selectlanguage} only if
+% \cs{language} is not \texttt{nohyphenation}. This avoids strange
+% errors.}
+% \begin{macrocode}
+\def\algo@keywords{%
+ \def\keyword##1{\textsf{##1} \ignorespaces}%
+ \babel\def\FOR{\keyword{For}}[german=\keyword{F{\"{u}}r}]%
+ \babel\def\DO{\keyword{do}}[german=\keyword{erledige}]%
+ \babel\def\endFOR{}[]%
+ \babel\def\WHILE{\keyword{While}}[german=\keyword{Solange}]%
+ \babel\def\endWHILE{}[]%
+ \babel\def\REPEAT{\keyword{Repeat}}[german=\keyword{Wiederhole}]%
+ \babel\def\UNTIL{\keyword{Until}}[german=\keyword{Bis}]%
+ \babel\def\IF{\keyword{If}}[german=\keyword{Falls}]%
+ \babel\def\THEN{\keyword{then}}[german=\keyword{dann}]%
+ \babel\def\ELIF{\keyword{Else if}}[german=\keyword{Sonst wenn}]%
+ \babel\def\ELSE{\keyword{Else}}[german=\keyword{Sonst}]%
+ \babel\def\endIF{}[]%
+ \babel\def\CALL{\keyword{Call}}[german=\keyword{Rufe}]%
+ \babel\def\RETURN{\keyword{Return}}[german=\keyword{Antworte}]%
+ \def\@tempa{nohyphenation}\ifx\languagename\@tempa\else%
+ \expandafter\selectlanguage\expandafter{\languagename}\fi%
+ \def\COMMENT##1{$\{$ ##1 $\}$}%
+ }
+% \end{macrocode}
+% \end{environment}
+%
+% \subsection{Some sophisticated environments for algorithms}
+%
+% \begin{macro}{\optitem}
+% This is a helper for the following sophisticated environments.
+% It issues an |\item| if necessary, and omits it otherwise.
+% \begin{macrocode}
+\newcommand{\optitem}[1]{%
+ \cc@ifempty{#1}{\if@inlabel\par\else\item\fi}{\item[#1]}%
+ }
+% \end{macrocode}
+% \end{macro}
+% \begin{macro}{\algoprettify}
+% This is a helper for the following sophisticated environments.
+% It formats a 3-term command like \cs{IF} \meta{condition}
+% \cs{THEN} in a line or a multiline block depending on what is
+% nicer.
+% \begin{macrocode}
+% \changes{v2.01}{2001/01/24}{Added \cs{algoprettify}. Michael
+% N{\"{u}}sken, Paderborn}
+% \changes{v2.25e}{2015/11/11}{Allow \cs{raggedright} in argument 2. Michael
+% N{\"{u}}sken, Bonn}
+% \changes{v2.25g}{2016/03/01}{Repair spacing problem in narrow
+% version. Michael N{\"{u}}sken, Bonn}
+\newcommand{\algoprettify}[3]{%
+ \setbox2\hbox{#1}%
+ \setbox4\hbox{#2}%
+ \setbox6\hbox{#3}%
+ \setbox0\hbox{\unhcopy2\unhcopy4{ }\unhcopy6}%
+ \ifdim\wd0<\linewidth
+ \unhbox0
+ \else
+ \dimen0=\linewidth \advance\dimen0 by -\wd2
+ \unhbox2\parbox[t]{\dimen0}{#2\strut}\par\list@parshape\unhbox6
+ \fi
+ }
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{environment}{ifblock}
+% This produces |\IF| block.
+% \begin{macrocode}
+\newenvironment{ifblock}[2][]
+% \end{macrocode}
+% What do we do at the |\begin|.
+% \begin{macrocode}
+{%
+% \end{macrocode}
+% First, add |\item| if there is no |\item| immediately before the
+% \Lenv{ifblock}.
+% \begin{macrocode}
+ \optitem{#1}%
+% \end{macrocode}
+% Then generate a new |\currentlabel| which is valid until the end
+% of the \Lenv{ifblock}.
+% \begin{macrocode}
+ \nextblock
+% \end{macrocode}
+% Set a reference on the actual item.
+% \begin{macrocode}
+ \algolabel{if\currentblock}%
+% \end{macrocode}
+% Insert the text `|\IF|~\meta{condition}~|\THEN|'.
+% |\algoprettify| takes care of a long \meta{condition}.
+% \changes{v2.01}{2001/01/24}{Now \protect\Lenv{ifblock} and so on nicer for
+% long conditions. Michael N{\"{u}}sken, Paderborn}
+% \begin{macrocode}
+ \algoprettify{\IF}{#2}{\THEN}
+% \end{macrocode}
+% Begin the indention.
+% \begin{macrocode}
+ \indention
+% \end{macrocode}
+% Define the value for the possibly following |\algolabel| or
+% |\label|.
+% \begin{macrocode}
+ \refsetrange{if\currentblock}{endif\currentblock}%
+ }
+% \end{macrocode}
+% What do we do at the |\end|.
+% \begin{macrocode}
+{%
+% \end{macrocode}
+% Set a reference to the last item in the environment.
+% \begin{macrocode}
+ \algolabel{endif\currentblock}%
+% \end{macrocode}
+% End the indention.
+% \begin{macrocode}
+ \endindention}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{elifblock}
+% This produces an |\ELIF| block in the same manner as the |\IF| block.
+% \begin{macrocode}
+\newenvironment{elifblock}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \algoprettify{\ELIF}{#2}{\THEN}
+ \algolabel{elif\currentblock}%
+ \indention
+ \refsetrange{elif\currentblock}{endelif\currentblock}%
+ }{%
+ \algolabel{endelif\currentblock}%
+ \endindention}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{elseblock}
+% The |\ELSE| block differs from the last two only in the fact that
+% there is no condition.
+% \begin{macrocode}
+\newenvironment{elseblock}[1][]{%
+ \optitem{#1}%
+ \nextblock
+ \ELSE%
+ \algolabel{else\currentblock}%
+ \indention
+ \refsetrange{else\currentblock}{endelse\currentblock}%
+ }{%
+ \algolabel{endelse\currentblock}%
+ \endindention}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{forblock}
+% A |\FOR| block typesets a loop `for \meta{control} do \dots'.
+% Other than the previous environments we use \Lenv{block} rather
+% than only \Lenv{indention} since the range of steps in the
+% indented part is printed after the `do' (unless it is only one step).
+% \begin{macrocode}
+\newenvironment{forblock}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \algoprettify{\FOR}{#2}{%
+ \DO \short\ref{\the\algorithmmasterkey-body\currentblock}}%
+ \algolabel{for\currentblock}%
+ \block\algolabel{body\currentblock}%
+ \refsetrange{for\currentblock}{endfor\currentblock}%
+ }{%
+ \algolabel{endfor\currentblock}%
+ \endblock}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{whileblock}
+% The |\WHILE| block is similar to the |\FOR| block: `while
+% \meta{condition} do \dots'.
+% \begin{macrocode}
+\newenvironment{whileblock}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \algoprettify{\WHILE}{#2}{%
+ \DO \short\ref{\the\algorithmmasterkey-body\currentblock}}%
+ \algolabel{while\currentblock}%
+ \block
+ \algolabel{body\currentblock}%
+ \refsetrange{while\currentblock}{endwhile\currentblock}%
+ }{%
+ \algolabel{endwhile\currentblock}%
+ \endblock}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{untilblock}
+% The |\UNTIL| block is similar to the |\FOR| block: `until
+% \meta{condition} do \dots'.
+% \begin{macrocode}
+\newenvironment{untilblock}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \algoprettify{\UNTIL}{#2}{%
+ \DO \short\ref{\the\algorithmmasterkey-body\currentblock}}%
+ \algolabel{until\currentblock}%
+ \block
+ \algolabel{body\currentblock}%
+ \refsetrange{until\currentblock}{enduntil\currentblock}%
+ }{%
+ \algolabel{enduntil\currentblock}%
+ \endblock}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{blockuntil}
+% The reverse |\UNTIL| block is similar to the |\UNTIL| block but
+% the condition is checked at the end rather than at the beginning
+% of the environment.
+% \begin{macrocode}
+\newenvironment{blockuntil}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \def\repeat@cond{#2}%
+ \REPEAT \short\ref{\the\algorithmmasterkey-body\currentblock}%
+ \algolabel{repeat\currentblock}%
+ \block
+ \algolabel{body\currentblock}%
+ \refsetrange{repeat\currentblock}{endrepeat\currentblock}%
+ }{%
+ \endblock
+\item
+ \algolabel{endrepeat\currentblock}%
+ \algoprettify{\UNTIL}{\repeat@cond}{}}
+% \end{macrocode}
+% \end{environment}
+%
+% \begin{environment}{blockwhile}
+% The reverse |\WHILE| block is similar to the |\WHILE| block but
+% the condition is checked at the end rather than at the beginning
+% of the environment.
+% \begin{macrocode}
+\newenvironment{blockwhile}[2][]{%
+ \optitem{#1}%
+ \nextblock
+ \def\repeat@cond{#2}%
+ \REPEAT \short\ref{\the\algorithmmasterkey-body\currentblock}%
+ \algolabel{repeat\currentblock}%
+ \block
+ \algolabel{body\currentblock}%
+ \refsetrange{repeat\currentblock}{endrepeat\currentblock}%
+ }{%
+ \endblock
+\item
+ \algolabel{endrepeat\currentblock}%
+ \algoprettify{\WHILE}{\repeat@cond}{}}
+% \end{macrocode}
+% \end{environment}
+%
+% So far for algorithms.
+% \begin{macrocode}
+%</ccalgo>
+% \end{macrocode}
+%
+% \GetFileInfo{ccqed.sty}
+% \CodelinePrefix{Q}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \begin{macrocode}
+%<*ccqed>
+\ProvidesPackage{ccqed}[2014/07/08 v2.25d
+ right-justified end-of-proof mark,
+ based on Paul Taylor's QED.sty of 24 June 1995]
+% \end{macrocode}
+% We reproduce some of Paul Taylor's comments here.
+%
+% \medskip\hrule\medskip
+%
+% \emph{Warning}: If you use this with Frank Mittlebach's
+% \Lpackage{theorem}\texttt{.sty} you \emph{must} load theorem first,
+% then QED, then do the |\newtheorem| commands.
+% \begin{center}
+% \begin{tabular}{ll}
+% Authoritative version: &
+% /pub/tex/contrib/pt/proofs/QED.sty\\
+% by anonymous FTP from:&
+% ftp.dcs.qmw.ac.uk\\
+% also CTAN: &
+% macros/generic/proofs/taylor/QED.sty\\
+% author/maintained by: &
+% Dr Paul Taylor \email{pt@dcs.qmw.ac.uk}\\
+% \end{tabular}
+% \end{center}
+%
+%
+%
+% \subsection{User Interface and Examples (see also Options below)}
+%
+% \emph{Warning}: |\qed| which doesn't follow |\Proof| will not print
+% the square.
+%
+% Unfortunately some environments, such as picture, do not allow this
+% at all. See the section "centering environments" below for the
+% mechanism for passing |\qed| to such an environment for special
+% processing.
+%
+% In fact |\qed| will only work in those environments which provide
+% access to the right hand side of the page. In other words, wherever
+% you think `|\hfill\square|' ought to work then |\qed| will; of course
+% it is just because that naive method doesn't work that this macro
+% file is needed at all. The macro was designed to solve the problem
+% in the case of `unrestricted horizontal mode' (ie at the end of a
+% paragraph); it also works in |$$| displays by pretending to be an
+% equation number. In most other cases it basically does
+% `|\hfill\square|' or `|\hfill$\square$|' and hopes for the best.
+%
+% If you have to put |\qed| outside the environment, it may be
+% appropriate to put |\vskip| |-\baselineskip| before it, unless of
+% course this would over-print. There is, however, still a danger
+% that TeX will break the page here. This seems to be unavoidable
+% if the environment ends with a |\penalty|.
+%
+% The eqnarray example above does not in fact work: if you try it
+% you'll get
+% \begin{flushleft}
+% |! Paragraph ended before \llap was complete|
+% \end{flushleft}
+% with \LaTeX{} in a mess. This is a very common place where you
+% might want to put the end of proof mark, and I also consider that
+% the fourth column should be available for `reasons' for equational
+% steps.
+% The following substitute for |\eqnarray| allows this, whilst being
+% compatible with automatic numbering. I have proposed it to Rainer
+% Sch\"{o}pf for inclusion in LaTeX. If you want to use it, please copy
+% it to another file rather than uncommenting it here. Don't forget to
+% use |\makeatletter| or put it in a documentstyle (\texttt{.sty}) file.
+%
+% \emph{Michael's warning}: This might not work with \LaTeXe{} any more.
+% \begin{macrocode}
+% \def\eqnarray{%
+% \stepcounter{equation}%
+% \let\@currentlabel\theequation
+% \global\@eqnswtrue\m@th
+% \global\@eqcnt\z@
+% \tabskip\@centering
+% \let\\\@eqncr
+% $$\halign to\displaywidth\bgroup
+% \@eqnsel\hskip\@centering$\displaystyle\tabskip\z@{##}$%
+% &\global\@eqcnt\@ne\hskip2\arraycolsep\hfil${##}$\hfil
+% &\global\@eqcnt\tw@\hskip2\arraycolsep
+% $\displaystyle\tabskip\z@{##}$\hfil\tabskip\@centering
+% &\global\@eqcnt\thr@@\hbox to\z@\bgroup
+% \hss##%*** instead of "\llap{##}"
+% \tabskip\z@\cr}%
+% \def\@@eqncr{\let\@tempa\relax
+% \ifcase\@eqcnt
+% \def\@tempa{& & &}\or
+% \def\@tempa{& &}\or
+% \def\@tempa{&}\else
+% \@eqnswfalse%*** instead of "\else\def\@tempa{&}"
+% \fi\@tempa
+% \if@eqnsw\@eqnnum\stepcounter{equation}\fi
+% \egroup%*** added, to match \bgroup in fourth cell of preamble
+% \global\@eqnswtrue\global\@eqcnt\z@\cr}
+% \end{macrocode}
+%
+% Why can't we do all of this with |\endProof|? Because by that stage
+% the damage has been done: the environments, paragraphs or displays
+% have already been closed and their |\hbox|'es added to the current
+% vertical list, and cannot be removed for alteration if this is the
+% current page.
+%
+% Even if you don't need to put |\qed| inside an inner environment to
+% avoid a blank line, it's still a good idea to do so, because
+% otherwise it's possible that intervening end-of-environment material
+% may allow TeX to put the mark on the next page.
+%
+% If you don't use \Lpackage{theorem}\texttt{.sty}, this file instead
+% provides options to use commands to begin theorems, instead of
+% enclosing them in environments, and to suppress numbering and
+% italicisation. A rudimentary version of |\newtheorem| for
+% plain\TeX{} is also implemented (always using commands rather than
+% environments).
+%
+% \subsection{Options}
+%
+% These are the user commands.
+%
+% \begin{macro}{\qed}
+% Suppressible printing of |\qedsymbol|.
+% \begin{macrocode}
+\def\qed{\protect\@qed{$\qedsymbol$}}
+% \end{macrocode}
+% \end{macro}
+%
+% |\pushright| takes an argument, which it always prints it is
+% (re)defined by |\WillHandleQED| and |\UnHandleQED| below (12.4.94)
+%
+% These are the user-settable parameters.
+%
+% \begin{macro}{\qedsymbol}
+% The actual (maths) symbol used by |\qed|.
+% \begin{macrocode}
+\def\qedsymbol{\square}
+% \end{macrocode}
+% \emph{Please note}: this is in the \AMS{} symbols font.
+% Use one of these instead if you prefer:
+% |\def\qedsymbol{\blacksquare}| or
+% |\def\qedsymbol{\hbox{\rm Q.E.D.}}|. %
+% The Journal of Symbolc Logic likes |\def\qedsymbol{\dashv}|.
+% \end{macro}
+%
+% \begin{macro}{\AutoQEDtrue}
+% The command |\AutoQEDtrue| causes a |\qed| in |\end{theorem}|, so
+% you do |\begin{theorem}| \dots{} |\begin{proof}| \dots{}
+% |\end{proof}| |\end{theorem}| but if you omit the proof, the
+% statement gets a little square at the end.
+% \begin{macrocode}
+\newif\ifAutoQED\AutoQEDfalse
+% \end{macrocode}
+% \end{macro}
+%
+% \subsection{Pushright}
+%
+% \begin{macro}{\pushright}
+% If you already have a macro called |\qed|, |\endproof| or
+% |\pushright| which is laid out in a similar way to the following
+% two definitions (but with |\hbox@pushright| incorporated) then it
+% is almost certainly my code, which has been copied anonymously via
+% numerous people since my Cambridge PhD thesis in August 1986.
+% Belated acknowledgements to Chris Thompson of the Cambridge
+% University Computing Service for his help with my early attempts at
+% TeX, in particular this problem.
+%
+% The complexity of the macro necessary to get a little box on the
+% right-hand-side at the end of a proof is amazing. It really does
+% have to be this long! Otherwise you're liable to get it at the
+% beginning of the next line, or even on the next page.
+%
+%
+% \begin{macrocode}
+\def\parag@pushright#1{{%
+% \end{macrocode}
+% Set up.
+% So |\par| doesn't push |\square| to left.
+% \begin{macrocode}
+ \parfillskip\z@
+% \end{macrocode}
+% So we don't break the page before |\square|.
+% \begin{macrocode}
+ \widowpenalty\@M
+ \displaywidowpenalty\@M
+% \end{macrocode}
+% See TeXbook exercise 14.32.
+% \begin{macrocode}
+ \finalhyphendemerits\z@
+% \end{macrocode}
+% \paragraph{Horizontal.}
+% |\leavevmode| is not needed since we now only use it in hmode.
+% \begin{macrocode}
+% \leavevmode
+% \end{macrocode}
+% This used to be incorporated
+% \begin{macrocode}
+ \hbox@pushright
+% \end{macrocode}
+% The end-of-proof mark (or whatever).
+% \begin{macrocode}
+ #1%
+% \end{macrocode}
+% \paragraph{Vertical.}
+% Build paragraph with the above parameters.
+% \begin{macrocode}
+ \par}}%
+% \end{macrocode}
+%
+% Horizontal.
+% \begin{macrocode}
+\def\hbox@pushright{%
+% \end{macrocode}
+% Remove previous space or glue.
+% \begin{macrocode}
+ \unskip
+% \end{macrocode}
+% Don't break lines.
+% \begin{macrocode}
+ \nobreak
+% \end{macrocode}
+% Ragged right if we spill over.
+% \begin{macrocode}
+ \hfil
+% \end{macrocode}
+% Discouragement to do so.
+% \begin{macrocode}
+ \penalty50
+% \end{macrocode}
+% Ensure some space.
+% \begin{macrocode}
+ \hskip.2em
+% \end{macrocode}
+% Anchor the following |\hfill|.
+% \begin{macrocode}
+ \null
+% \end{macrocode}
+% Push to right.
+% \begin{macrocode}
+ \hfill
+}%
+% \end{macrocode}
+%
+% Ideally |\endProof| should do all this. We should be able to add
+% the symbol to the last line after the paragraph, display or
+% whatever other structure has been completed and we've returned to
+% vertical mode. This isn't possible on the current page (outer
+% vmode) because |\lastbox| doesn't work there.
+%
+% But |\ifinner| is true inside a |\vbox|, |\vadjust| or |\insert|
+% (LaTeX |\parbox|, \Lenv{minipage}, \Lenv{figure} or
+% \Lenv{table}), and in these circumstances we can use |\lastbox|.
+% We would have to strip \& restore glue \& penalties (|\insert|,
+% |\mark| and |\write| are obstacles to this) to get access to the
+% last line (box), which may still not have the correct
+% baseline. We could check its natural width against the page
+% width, but if we re-set it, centering and (right) justification
+% might be disturbed. Is this worth the trouble?
+%
+% \begin{macrocode}
+\def\vbox@pushright#1{\expandafter\message % (2 Jan 1994)
+ {QED.sty could be improved in this case
+ (line \the\inputlineno): please ask}%
+ \page@pushright{#1}}%
+% \end{macrocode}
+%
+%
+% Using this method a \Lenv{proof} environment could be implemented
+% by collecting the entire proof in its own |\vbox|, modifying that
+% and |\unvbox|'ing it to the current page. This approach may lead to
+% the following problems:
+% \begin{enumerate}
+% \item footnotes, floats, marginpars, labels and index items may be
+% lost;
+% \item overflow of TeX's main memory, especially if |\end{proof}| is
+% missing;
+% \item I don't know how page-breaking would be handled.
+% \end{enumerate}
+%
+% Switch to enable/suppress |\qedsymbol|; since suppression may be
+% done within a nested scope it must be global, so we do our own
+% save/restore in a symbol which is local to a proof environment.
+% \begin{macrocode}
+\newif\if@qed\@qedfalse
+\def\save@set@qed{\let\saved@ifqed\if@qed\global\@qedtrue}%
+\def\restore@qed{\global\let\if@qed\saved@ifqed}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@qed#1{\check@pt@fm@thm
+% \end{macrocode}
+% Have we already done |\qed|?
+% \begin{macrocode}
+\if@qed
+% \end{macrocode}
+% No: do it now, but not again.
+% \begin{macrocode}
+ \global\@qedfalse\pushright{#1}%
+% \end{macrocode}
+% Yes: just end paragraph, if any.
+% \begin{macrocode}
+\else\ifhmode\ifinner\else\par\fi\fi%
+\fi}
+% \end{macrocode}
+%
+% |\pushright{|\meta{text}|}| always prints its argument, on the
+% far right, in text mode.
+% \begin{macrocode}
+\def\@pushright#1{%
+ \ifvmode
+% \end{macrocode}
+% Vertical mode (see comments above).
+% \begin{macrocode}
+ \ifinner\vbox@pushright{#1}%
+ \else \page@pushright{#1}%
+ \fi
+% \end{macrocode}
+% Maths (force a text argument).
+% \begin{macrocode}
+ \else\ifmmode\maths@pushright{\hbox{#1}}%
+% \end{macrocode}
+% Inside an |\hbox|.
+% \begin{macrocode}
+ \else\ifinner\hbox@pushright{#1}%
+% \end{macrocode}
+% In a paragraph.
+% \begin{macrocode}
+ \else\parag@pushright{#1}%
+ \fi \fi \fi
+}
+% (22 Feb 1993) removed extra {} which would destroy our \] below
+% \end{macrocode}
+%
+% In the |\hbox| and maths cases we are really at the mercy of the
+% environment. Assuming that we have |$\qed$| simply embedded in a
+% paragraph, the horizontal processing by |\hbox@pushright| will at
+% least make sure that the square isn't at the beginning of the line,
+% but we can't stop it being on the next page. However it is more
+% likely that the reason why we're in maths mode is that we're inside
+% an eqnarray or similar, in which case |\hfill| will do its best to
+% put the square on the right of the available space. (See |\vadjust|
+% below.)
+% \begin{macrocode}
+\def\maths@pushright#1{%
+ \ifinner
+ \hbox@pushright{#1}%
+ \else
+% \end{macrocode}
+% Use \TeX's right equation number feature (|\eqno|) within |$$|.
+% \begin{macrocode}
+ \eqno#1%
+% \end{macrocode}
+% Suppress LaTeX's error checking (HACK!).
+% \begin{macrocode}
+ \def\]{$$\ignorespaces}%
+ \fi
+}%
+% (22 Feb 1993) removed extra {} which would destroy our \] above
+% \end{macrocode}
+%
+% \paragraph{Outer vertical mode (the current page)}
+% There's very little we can do in these circumstances!
+% Penalties still allow the page to be broken.
+% If the user has put negative glue in, leave it alone. (15 Feb 1994)
+% \begin{macrocode}
+\def\page@pushright#1{% 18 Jan 1994
+% \unpenalty % ineffective
+% \end{macrocode}
+% Remove |\parskip|, but only (15 Feb 1994) if it's positive.
+% \begin{macrocode}
+ \skip@\lastskip
+ \ifdim\skip@>\z@
+ \unskip
+ \else\skip@\z@\relax
+ \fi
+% \unpenalty % TeX won't let me do this
+ \dimen@\baselineskip
+% \end{macrocode}
+% Save |\prevdepth| to make a strut
+% \begin{macrocode}
+ \advance\dimen@-\prevdepth
+% \end{macrocode}
+% Don't break the page here.
+% \begin{macrocode}
+ \nobreak
+ \nointerlineskip
+ \hbox to\hsize{%
+ \setbox\z@\null
+% \end{macrocode}
+% Simulate |\baselineskip|.
+% \begin{macrocode}
+ \ifdim\dimen@>\z@\ht\z@\dimen@\fi
+ \box\z@
+ \hfill
+ #1}%
+% \end{macrocode}
+% Replace old |\parskip|.
+% \begin{macrocode}
+ \vskip\skip@
+}%
+% \end{macrocode}
+%
+% An idea that didn't work: see TeXbook p188. (16 Feb 1993) Use
+% |\predisplaysize| to find out the width of the previous box, in the
+% case where it has already been completed. But this can only be
+% used inside displays (|$$|), and a display in vertical mode begins
+% a paragraph first, so we end up with
+% |\predisplaysize=\parindent+2em| whatever happened in the previous
+% paragraph.
+%
+% Another idea: it may be worth trying |\vadjust|, if only to insert
+% |\nobreak|. The problem with this is that if we are too deeply
+% nested in horizontal or maths lists, the adjustment may not be able
+% to find its way out to the enclosing vertical list. In the case of
+% array-like environments, it will appear (assuming it manages to get
+% out) after the current row of the array.
+% \end{macro}
+%
+%
+% \subsection{Adding to theorem environments}
+%
+% We have to add to the theorem environments the commands to enable
+% |\qed|. This is done by re-defining |\@thm#1#2|. Note that
+% Mittelbach's \Lpackage{theorem}\texttt{.sty} re-defines |\@thm|
+% and |\@endtheorem|, so that must be loaded before us, otherwise
+% our changes will get over-written and |\qed| will never be
+% enabled.
+%
+% Save original.
+% \begin{macrocode}
+\let\nonqed@thm\@thm
+\let\nonqed@endthm\@endtheorem
+\def\@thm{\save@set@qed\nonqed@thm}
+\def\@endtheorem{\ifAutoQED\qed\fi\restore@qed\nonqed@endthm}
+% \end{macrocode}
+%
+%
+% \subsection{`Centering' Environments}
+%
+% Those which don't give their contents access to the right hand side
+% of the page, such as center, picture, ... (12 April 1994)
+%
+% Each individual environment (both the standard ones and those defined
+% by the user) needs to co-operate in order to make |\qed| and
+% |\pushright| work. It is not the business of this package to rewrite
+% LaTeX in this way, but the following mechanism may be inserted in to
+% other environments.
+% \begin{itemize}
+% \item put |\WillHandleQED| in the |\begin| part of the environment
+% definition; then if a |\qed| occurs in the body of the environment
+% it is stored in |\QEDbox| until...
+% \item |\HandleQED| anywhere in the |\end| part of the environment
+% definition (even inside dollars, braces or another environment)
+% prints it.
+% \end{itemize}
+% For example:
+% \begin{verbatim}
+% \newenvironment{qedpicture}%
+% {\begin{picture}\WillHandleQED}%
+% {\put(0,0){\HandleQED}\end{picture}}
+% \end{verbatim}
+% To make this compatible with \emph{not} loading
+% \Lpackage{QED}\texttt{.sty}, add the following to macro files which
+% use |\WillHandleQED| and |\HandleQED|:
+% \begin{verbatim}
+% \ifx\WillHandleQED\undefined
+% \let\WillHandleQED\relax
+% \let\HandleQED\relax
+% \let\UnHandleQED\relax % if you use it
+% \let\QEDbox\voidb@x % must have \makeatletter here!
+% \fi
+% \end{verbatim}
+% |\UnHandleQED| restores normal processing; this may be useful for the
+% minipage environment, which has its own notion of `right hand side'
+% of the page. The width of the saved |\qed| is available for testing
+% as |\wd\QEDbox|.
+%
+% The box in which to save |\qed| for special handling.
+% \begin{macrocode}
+\newbox\qed@box
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\WillHandleQED{\relax
+ \ifx\HandleQED\nohandle@qed
+% \end{macrocode}
+% No enclosing environment has declared |\WillHandleQED|.
+%
+% |\qed| will be saved.
+% \begin{macrocode}
+ \def\pushright{\global\setbox\qed@box\hbox}%
+% \end{macrocode}
+% Point at the right box.
+% \begin{macrocode}
+ \let\QEDbox\qed@box
+% \end{macrocode}
+% Print it.
+% \begin{macrocode}
+ \def\HandleQED{\unhbox\QEDbox}%
+% \end{macrocode}
+% Check that this really gets done.
+% \begin{macrocode}
+ \aftergroup\check@handle@qed
+ \else
+% \end{macrocode}
+% An enclosing environment already wants to catch |\qed| |\HandleQED|
+% doesn't print anything - let the saved |\qed| pass through
+% by pointing at an empty box.
+% \begin{macrocode}
+ \let\QEDbox\voidb@x
+ \fi
+ }
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\nohandle@qed{%
+\errhelp{One of them is missing: see QED.sty.}%
+\errmessage{This environment uses \string\WillHandleQED\space and
+\string\HandleQED\space incorrectly}}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\check@handle@qed{\relax
+\ifvoid\qed@box\else\expandafter\nohandle@qed\fi}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\UnHandleQED{%
+\let\HandleQED\nohandle@qed
+\let\QEDbox\voidb@x
+\def\pushright{\protect\@pushright}}%
+% \end{macrocode}
+%
+% \begin{macrocode}
+\UnHandleQED
+% \end{macrocode}
+%
+%
+% If \Lpackage{theorem}\texttt{.sty} hasn't been loaded, arrange to
+% check it again in |\@qed|. And check (then) whether you've actually
+% defined |\square|.
+% Changed 2 June 1993: don't define it now, as that would confuse
+% \Lpackage{amssymb}\texttt{.sty}.
+% \begin{macrocode}
+\ifx\theorem@style\undefined
+ \def\check@pt@fm@thm{\relax
+ \ifx\square\undefined
+ \gdef\square{\bigcirc
+ \errhelp={Anonymous ftp e-math.ams.com /ams/amsfonts}%
+ \errmessage{\string\square\space is an AMS symbol}%
+ \global\let\square\bigcirc}%
+ \fi
+ \ifx\theorem@style\undefined
+ \global\let\check@pt@fm@thm\relax
+ \else
+ \errhelp={The macros \@thm and \@endtheorem
+ need to be re-defined.}%
+ \errmessage{QED.sty must be loaded AFTER theorem.sty but
+ before using \string\newtheorem}%
+ \fi
+ \global\let\check@pt@fm@thm\relax
+ }%
+\else
+ \def\check@pt@fm@thm{%
+ \ifx\square\undefined
+ \def\square{\bigcirc
+ \errhelp={Anonymous ftp e-math.ams.com /ams/amsfonts}%
+ \errmessage{\string\square\space is an AMS symbol}%
+ \global\let\square\bigcirc}%
+ \fi
+ \global\let\check@pt@fm@thm\relax
+ }%
+\fi
+% \end{macrocode}
+%
+% \changes{v2.25d}{2014/07/08}{Process options in calling order
+% rather than definition order. Michael N{\"{u}}sken, Bonn}
+% \begin{macrocode}
+\DeclareOption{auto-QED}{\AutoQEDtrue}%
+\DeclareOption{explicit-QED}{\AutoQEDfalse}%
+\DeclareOption{black-square}{\def\qedsymbol{\blacksquare}}%
+\DeclareOption{open-square}{\def\qedsymbol{\square}}%
+\ProcessOptions*
+% \end{macrocode}
+%
+% \subsection{Bugs}
+%
+% |\item\qed\end{letterlist}| puts the square above the item label.
+%
+% |! You can't use `\unskip' in vertical mode.|
+% from |\qed| in a paragraph on its own.
+%
+% \medskip\hrule\medskip
+%
+% \subsection{Michael's fixes \dots}
+%
+% While \Lpackage{QED}\texttt{.sty} does a very fine job it leaves
+% some things apart. Of course, it was not aware of much of the
+% newer \AMS{} math environments. In the following I tried to
+% redefine |\qed| and |\pushright| in order to work in all standard
+% circumstances reasonably well.
+%
+% \iffalse meta-comment
+% The following was a trial to fix |\pushright| instead of |\qed|.
+%
+% Unfortunately, |\pushright| does not always work well, especially
+% in equation-like environment as provided by the \AMS{} package
+% \Lpackage{amsmath} there are several new complications.
+% We make |\pushright| and |\qed| work in all these environments.
+% \begin{macrocode}
+% \newif\if@resettagsleft@%\fi
+% \let\standardpushright\pushright
+% \def\rescuepushright#1{\qquad\hbox{#1}}
+% \def\eqnopushright#1{\eqno\hbox{#1}}
+% \let\ccorg@eqnnum\@eqnnum
+% \let\ccorg@nonumber\nonumber
+% \def\eqnarraypushright#1{%
+% \global\@eqnswtrue
+% \global\let\nonumber\relax
+% % equation counter will be incremented at \end{eqnarray*} by \@@eqncr!
+% \addtocounter{equation}\m@ne
+% \gdef\@eqnnum{\llap{#1}%
+% \global\let\nonumber\ccorg@nonumber
+% \global\let\@eqnnum\ccorg@eqnnum}}
+% \def\tagpushright#1{%
+% \typeout{tagpushright #1}
+% \tag*{\iftagsleft@%\iftrue
+% \hskip\displaywidth\llap{#1}\hskip-\displaywidth%
+% \else\hbox{#1}\fi}}
+% \def\simpletagpushright#1{\iftagsleft@%\iftrue
+% \global\@resettagsleft@true\fi
+% \global\tagsleft@false
+% \tag*{\hbox{#1}}}
+% \def\aftersplitpushright#1{%
+% \def\@endsplit{%
+% \global\let\endsplit\ccorg@endsplit
+% \endsplit
+% \pushright{#1}%
+% }}
+% \let\ccorg@endsplit\endsplit
+% %
+% \newif\if@pushrightfailed%\fi
+% \def\nopushright#1{\global\@pushrightfailedtrue}
+% \def\@ifcurrenv#1#2{\def\@tempa{#1}\ifx\@tempa\@currenvir\relax
+% \let\next#2\fi}
+% \renewenvironment{displaymath}{$$}{$$\@ignoretrue}
+% \renewcommand{\[}{\begin{displaymath}}
+% \renewcommand{\]}{\end{displaymath}}
+% \if@ams
+% \def\pushright{%
+% \global\@pushrightfailedfalse
+% \if@resettagsleft@\global\tagsleft@true\global\@resettagsleft@false\fi
+% \let\next\standardpushright
+% \@ifcurrenv{displaymath}\eqnopushright
+% \@ifcurrenv{equation}\nopushright
+% \@ifcurrenv{eqnarray}\nopushright
+% \@ifcurrenv{eqnarray*}\eqnarraypushright
+% \@ifcurrenv{equation*}\tagpushright
+% \@ifcurrenv{split}\aftersplitpushright
+% \@ifcurrenv{multline}\nopushright
+% \@ifcurrenv{multline*}\simpletagpushright
+% \@ifcurrenv{gather}\nopushright
+% \@ifcurrenv{gather*}\tagpushright
+% \@ifcurrenv{align}\nopushright
+% \@ifcurrenv{align*}\tagpushright
+% \@ifcurrenv{alignat}\nopushright
+% \@ifcurrenv{alignat*}\tagpushright
+% \next}
+% \else
+% \def\pushright{%
+% \global\@pushrightfailedfalse
+% \let\next\standardpushright
+% \@ifcurrenv{displaymath}\eqnopushright
+% \@ifcurrenv{equation}\nopushright
+% \@ifcurrenv{eqnarray}\nopushright
+% \@ifcurrenv{eqnarray*}\eqnarraypushright
+% \next}
+% \fi
+% \def\@@qed#1{%
+% \pushright{#1}%
+% \if@pushrightfailed\else\global\@qedfalse\fi
+% }
+% \def\@@qedpar#1{%
+% \ifhmode\ifinner\else\par\fi\fi
+% }
+% \def\@qed{\check@pt@fm@thm
+% \if@qed\let\next\@@qed\else\let\next\@@qedpar\fi\next}
+% %
+% \endinput%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% \end{macrocode}
+% \fi
+%
+% Unfortunately, |\qed| does not always work well, especially
+% in equation-like environment as provided by the \AMS{} package
+% \Lpackage{amsmath} there are several new complications.
+% We make |\qed| work in all these environments.
+% \begin{macrocode}
+\newif\if@resettagsleft@
+\let\standardqed\qed
+\def\rescueqed{\qquad\qedsymbol\vphantom{\standardqed}}
+\def\eqnoqed{\eqno\hbox{\standardqed}}%\vphantom{\standardqed}}
+\let\ccorg@eqnnum\@eqnnum
+\let\ccorg@nonumber\nonumber
+\def\eqnarrayqed{%
+ \global\@eqnswtrue
+ \global\let\nonumber\relax
+% equation counter will be incremented at \end{eqnarray*} by \@@eqncr!
+ \addtocounter{equation}\m@ne
+ \gdef\@eqnnum{\llap{$\qedsymbol$\vphantom{\standardqed}}%
+ \global\let\nonumber\ccorg@nonumber
+ \global\let\@eqnnum\ccorg@eqnnum}}
+\def\tagqed{\tag*{\iftagsleft@
+ \hskip\displaywidth\llap{$\qedsymbol$}\hskip-\displaywidth%
+ \else$\qedsymbol$\fi}\vphantom{\standardqed}}
+\def\simpletagqed{\iftagsleft@\global\@resettagsleft@true\fi
+ \global\tagsleft@false
+ \tag*{$\qedsymbol$}\vphantom{\standardqed}}
+\def\aftersplitqed{\global\let\endsplit\@endsplit}
+\let\ccorg@endsplit\endsplit
+\def\@endsplit{\ccorg@endsplit\qed\global\let\endsplit\ccorg@endsplit}%
+\def\noqed{}
+\def\@ifcurrenv#1#2{\def\@tempa{#1}\ifx\@tempa\@currenvir\relax
+ \let\next#2\fi}
+\renewenvironment{displaymath}{$$}{$$\@ignoretrue}
+\renewcommand{\[}{\begin{displaymath}}
+\renewcommand{\]}{\end{displaymath}}
+\if@ams
+\def\qed{%
+ \if@resettagsleft@
+ \global\tagsleft@true
+ \global\@resettagsleft@false
+ \fi
+ \let\next\standardqed
+ \@ifcurrenv{displaymath}\eqnoqed
+ \@ifcurrenv{equation}\noqed
+ \@ifcurrenv{eqnarray}\noqed
+ \@ifcurrenv{eqnarray*}\eqnarrayqed
+ \@ifcurrenv{equation*}\tagqed
+ \@ifcurrenv{split}\aftersplitqed
+ \@ifcurrenv{multline}\noqed
+ \@ifcurrenv{multline*}\simpletagqed
+ \@ifcurrenv{gather}\noqed
+ \@ifcurrenv{gather*}\tagqed
+ \@ifcurrenv{align}\noqed
+ \@ifcurrenv{align*}\tagqed
+ \@ifcurrenv{alignat}\noqed
+ \@ifcurrenv{alignat*}\tagqed
+ \next}
+\else
+\def\qed{%
+ \let\next\standardqed
+ \@ifcurrenv{displaymath}\eqnoqed
+ \@ifcurrenv{equation}\noqed
+ \@ifcurrenv{eqnarray}\noqed
+ \@ifcurrenv{eqnarray*}\eqnarrayqed
+ \next}
+\fi
+%</ccqed>
+% \end{macrocode}
+%
+% \GetFileInfo{cc2cite.sty}
+% \CodelinePrefix{C}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \begin{macrocode}
+%<*cc2cite>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{cc2cite}[2000/02/29 v2.05 cc2 cite helper package]
+% \end{macrocode}
+% We simply load \Lpackage{natbib} and make some small initializations.
+% \begin{macrocode}
+\RequirePackage{natbib}[2010/09/13 8.31b]
+\bibpunct{(}{)}{;}{a}{}{,}
+\newcommand{\bibstyle@cc}{\bibpunct{(}{)}{;}{a}{}{,}}
+\expandafter\def\csname bibstyle@cc2\endcsname{%
+ \bibpunct{(}{)}{;}{a}{}{,}}
+\let\bibfont\small
+\bibhang\z@
+\providecommand{\newwarning}[2]{%
+ \expandafter\gdef\csname cc@warn@#1\endcsname{#2}}
+\providecommand{\ccClassWarning}[1]{%
+ \ClassWarning{cc}{\csname cc@warn@#1\endcsname}}
+\newwarning{old@citemul}{%
+ The command \protect\citemul\space is obsolete.
+ Use \protect\citet\space instead.\MessageBreak
+ Please read the documentation
+ of the package `natbib.sty'}
+\newwarning{old@parencite}{%
+ The command \protect\parencite\space is obsolete.
+ Use \protect\citep\space instead.\MessageBreak
+ Please read the documentation
+ of the package `natbib.sty'}
+\newwarning{old@shortcite}{%
+ The command \protect\shortcite\space is obsolete.
+ Use \protect\citealt\space instead.\MessageBreak
+ Please read the documentation
+ of the package `natbib.sty'}
+% \def\warning@old@cite#1#2{\ClassWarning{cc}{%
+% The command \protect#1\space is obsolete.
+% Use \protect#2\space instead.\MessageBreak
+% Please read the documentation
+% of the package `natbib.sty'.\MessageBreak}}
+\def\citemul{\ccClassWarning{old@citemul}\citet}
+\def\parencite{\ccClassWarning{old@parencite}\citep}
+\def\shortcite{\ccClassWarning{old@shortcite}\citealt}
+% \end{macrocode}
+% This loads the bibliography style \file{cc2.bst} unless there is a
+% |\bibliographystyle| command before the |\bibliography| command.
+% \begin{macrocode}
+\RequirePackage{ccdbs}
+\DefaultBibliographyStyle{cc2}
+%</cc2cite>
+% \end{macrocode}
+%
+% \GetFileInfo{cccite.sty}
+% \CodelinePrefix{c}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% \changes{v0.91}{2000/02/29}{Advanced version to official 2.00}
+% \begin{macrocode}
+%<*cccite>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{cccite}[2000/02/29 v2.05 cc cite helper package]
+\PackageWarningNoLine{cccite}{%
+ The package cccite is obsolete.\MessageBreak
+ Better use cc2cite.
+ }
+% \end{macrocode}
+%
+% This is the named references stuff from
+% \Lpackage{namedrefs}\texttt{.sty} butchered and adapted by David
+% McClurkin, and again by Michael N{\"{u}}sken.
+%
+% It supports the following seven citation forms:
+% \begin{center}
+% \begin{tabular}{ll}
+% |\cite| & Cook (1990) \\
+% |\citeauthor| & Cook \\
+% |\citeyear| & 1990 \\
+% |\citemul| & Cook (1990, 1991a, 1991b) \\
+% |\shortcite| & Cook 1990 \\
+% |\parencite| & (Cook 1990)\\
+% |\nocite| &
+% \end{tabular}
+% \end{center}
+%
+% The package \Lpackage{ccdbs} simply guarantees that by default
+% |\bibliographystyle{cc}| is called unless the user issued a
+% |\bibliographystyle| command \emph{before} the |\bibliography|
+% command.
+% \begin{macrocode}
+\RequirePackage{ccdbs}
+\DefaultBibliographyStyle{cc}
+% \end{macrocode}
+% Remember the built in |\cite| since it will be redefined.
+% \begin{macrocode}
+\let\ccorg@cite\cite
+\let\ccorg@@cite\@cite
+% \end{macrocode}
+% After a comma we use |\penalty\@citeseppen|.
+% \begin{macrocode}
+\def\@citeseppen{-5}
+% \end{macrocode}
+%
+% \begin{macrocode}
+\def\@cite#1#2{{#1\if@tempswa , #2\fi}}
+% \end{macrocode}
+% The commands we provide only differ in the format of their output.
+% This format is stored in |\citeauthoryear|, then the universal
+% mechanism |\@citex| is applied.
+% \begin{macrocode}
+\def\cite#1{\def\citeauthoryear##1##2{##1\ (##2)}\@citex{#1}}
+\def\citeauthor#1{\def\citeauthoryear##1##2{##1}\@citex{#1}}
+\def\citeyear#1{\def\citeauthoryear##1##2{##2}\@citex{#1}}
+\def\shortcite#1{\def\citeauthoryear##1##2{##1\ ##2}\@citex{#1}}
+\def\parencite#1{\def\citeauthoryear##1##2{(##1\ ##2)}\@citex{#1}}
+% \end{macrocode}
+% |\citemul| is composed from the previous commands.
+% \begin{macrocode}
+\def\citemul#1{\@mcite #1\@\@}
+\def\@mcite#1,#2\@\@{\citeauthor{#1}\hskip3pt(\citeyear{#1,#2})}
+% \end{macrocode}
+% \begin{macro}{\@citex}
+% The argument is a list of citations. For each of a macro
+% containing a |\citeauthoryear| is expanded. These things are
+% seperated by commas with following |\penalty|.
+% \begin{macrocode}
+\def\@citex#1{\@tempswafalse%
+ \if@filesw\immediate\write\@auxout{\string\citation{#1}}\fi
+ \def\@citea{}\@cite{\@for\@citeb:=#1\do
+ {\@citea\def\@citea{,\penalty\@citeseppen\ }\@ifundefined
+ {b@\@citeb}{{\bf ?}\@warning
+ {Citation `\@citeb' on page \thepage \space undefined}}%
+{\csname b@\@citeb\endcsname}}}{}}
+% \end{macrocode}
+% \end{macro}
+% The following macros are defined in order to be compatible with the
+% \Lpackage{natbib} package. However, they only have the same
+% syntax, their functionality is not as good as with
+% \Lpackage{natbib}.
+% \begin{macrocode}
+\let\ccorg@cite\cite
+\newcommand{\citet}{\let\which@cite\ccorg@cite\cc@citea}
+\let\cite\citet
+\newcommand{\citep}{\let\which@cite\parencite\cc@citea}
+\newcommand{\citealt}{\let\which@cite\shortcite\cc@citea}
+\newcommand{\citealp}{\let\which@cite\shortcite\cc@citea}
+\newcommand{\citetext}[1]{(#1)}
+\newcommand{\@citeyearpar}[1]{\citetext{\citeyear{#1}}}
+\newcommand{\citeyearpar}{\let\which@cite\@citeyearpar\cc@citea}
+\let\ccorg@citeauthor\citeauthor
+\renewcommand{\citeauthor}{\let\which@cite\ccorg@citeauthor\cc@citea}
+\newcommand{\citefullauthor}{\citeauthor*}
+\newcommand{\Citet}{\let\which@cite\cite\cc@citea}
+\newcommand{\Citep}{\let\which@cite\parencite\cc@citea}
+\newcommand{\Citealt}{\let\which@cite\shortcite\cc@citea}
+\newcommand{\Citealp}{\let\which@cite\shortcite\cc@citea}
+%
+\newwarning{poormancitea}{%
+ This is only a poor (wo)man's version of this command.\MessageBreak
+ Please use the package natbib.sty for full features.\MessageBreak
+ Drop the document class option cccite }
+\newcommand{\cc@citea}{%
+ \ccClassWarning{poormancitea}%
+ \@tempswafalse\@ifstar{\cc@cite@st}{\cc@citeb}}
+\def\cc@cite@st{\@tempswatrue\cc@citeb}
+\newcommand{\cc@citeb}[1][]{\def\cc@cite@a{#1}\cc@citec}
+\newcommand{\cc@citec}[1][]{\def\cc@cite@b{#1}\which@cite}
+% \end{macrocode}
+% This is used in bibliography labels to produce the text. We do not
+% want any text. (For some reason not known to me this information
+% is stored in a macro.)
+% \begin{macrocode}
+\def\@biblabel#1{%
+ \def\citename##1{##1}% for authordate bib styles
+ }
+% \end{macrocode}
+% We lend some code from \Lpackage{natbib} to avoid conflicts with
+% different versions of \file{cc.bst}.
+% \begin{macrocode}
+\newcounter{NAT@ctr}
+\def\NAT@noname{{}}
+\let\ccorg@lbibitem\@lbibitem
+\def\@lbibitem[#1]#2{%
+ \let\citeauthoryear\bib@citeauthoryear
+ \if@filesw\@tempswatrue\else\@tempswafalse\fi\@fileswfalse
+ \ccorg@lbibitem[#1]{#2}%
+ \if@tempswa\@fileswtrue\fi
+ \NAT@ifcmd#1(@)(@)\@nil{#2}\ignorespaces}
+\newcommand\NAT@ifcmd{\futurelet\NAT@temp\NAT@ifxcmd}
+\newcommand\NAT@ifxcmd{%
+ \ifx\NAT@temp\relax\else\expandafter\NAT@bare\fi}
+\def\NAT@bare#1(#2)#3(@)#4\@nil#5{%
+ \if @#2
+ \expandafter\NAT@apalk#1, , \@nil{#5}\else
+ \stepcounter{NAT@ctr}%
+ \cc@wrout{\arabic {NAT@ctr}}{#2}{#1}{#3}{#5}
+\fi
+}
+\newcommand\NAT@apalk{}
+\def\NAT@apalk#1, #2, #3\@nil#4{\if\relax#2\relax
+ \global\NAT@stdbsttrue
+ \cc@wrout{#1}{}{}{}{#4}\else
+ \stepcounter{NAT@ctr}%
+ \cc@wrout{\arabic {NAT@ctr}}{#2}{#1}{}{#4}\fi}
+\newcommand\citeauthoryear{}
+\def\bib@citeauthoryear#1#2#3(@)(@)\@nil#4{%
+ \stepcounter{NAT@ctr}\if\relax#3\relax
+ \cc@wrout{\arabic {NAT@ctr}}{#2}{#1}{}{#4}\else
+ \cc@wrout{\arabic {NAT@ctr}}{#3}{#2}{#1}{#4}\fi}
+\newcommand\citestarts{\NAT@open}
+\newcommand\citeends{\NAT@close}
+\newcommand\betweenauthors{and}
+\newcommand\astroncite{}
+\def\astroncite#1#2(@)(@)\@nil#3{\stepcounter{NAT@ctr}\cc@wrout{\arabic
+{NAT@ctr}}{#2}{#1}{}{#3}}
+\newcommand\citename{}
+\def\citename#1#2(@)(@)\@nil#3{\expandafter\NAT@apalk#1#2, \@nil{#3}}
+\newcommand\harvarditem[4][]%
+ {\if\relax#1\relax\bibitem[#2(#3)]{#4}\else
+ \bibitem[#1(#3)#2]{#4}\fi }
+\newcommand\harvardleft{\NAT@open}
+\newcommand\harvardright{\NAT@close}
+\newcommand\harvardyearleft{\NAT@open}
+\newcommand\harvardyearright{\NAT@close}
+\AtBeginDocument{\providecommand{\harvardand}{and}}
+\newcommand\harvardurl[1]{\textbf{URL:} \textit{#1}}
+\newcommand\cc@wrout[5]{%
+ \if@filesw
+ {\let\protect\noexpand\let~\relax
+ \immediate
+ \write\@auxout{\string\bibcite{#5}%
+ {\protect\citeauthoryear{#3}{#2}}}}\fi
+ \ignorespaces}
+%</cccite>
+% \end{macrocode}
+%
+% \GetFileInfo{ccdbs.sty}
+% \CodelinePrefix{D}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% \changes{v1.99}{2000/02/24}{Made this an own file}
+% \begin{macrocode}
+%<*ccdbs>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{ccdbs}[2000/02/20 v2.05 bibliography helper package]
+% \end{macrocode}
+%
+% We manipulate |\bibliographystyle| and |\bibliography|. By default
+% |\bibliographystyle|\linebreak[3]|{\bibstyle@default}| is called
+% unless the user issued a |\bibliographystyle| command before the
+% |\bibliography| command.
+% \begin{macrocode}
+\let\ccorg@bibliographystyle\bibliographystyle
+\newif\if@bibstylemissing \@bibstylemissingtrue
+\def\bibliographystyle{\@bibstylemissingfalse
+ \gdef\bibliographystyle##1{%
+ \PackageWarning{ccdbs}{\protect\bibliographystyle\space can be
+ used only before \protect\bibliography!}}%
+ \ccorg@bibliographystyle}
+\let\ccorg@bibliography\bibliography
+\def\bibliography{%
+ \if@bibstylemissing
+ \bibliographystyle{\bibstyle@default}%
+ \fi
+ \ccorg@bibliography}
+% \end{macrocode}
+% \begin{macro}{\DefaultBibliographyStyle}
+% The command |\DefaultBibliographyStyle| allows to choose another
+% default value. The default value of |\bibstyle@default| is
+% |plain|.
+% \begin{macrocode}
+\newcommand{\DefaultBibliographyStyle}[1]{%
+ \def\bibstyle@default{#1}}
+\DefaultBibliographyStyle{plain}
+%</ccdbs>
+% \end{macrocode}
+% \end{macro}
+%
+% \GetFileInfo{cc.cls}
+% \def\filename{cctemplate.tex}
+% \CodelinePrefix{p}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \changes{v2.07}{2007/01/11}{Changed bibliography basename to
+% \cs{jobname}. Michael N{\"{u}}sken, Bonn}
+% \changes{v2.25a}{2012/06/25}{Corrected type. Michael N{\"{u}}sken,
+% Bonn}
+% \begin{macrocode}
+%<*cctemplate>
+%%% Template (2011/07/27) for an article using cc
+\begin{filecontents*}{\jobname.bib}
+ %% Insert your bibliography file here
+\end{filecontents*}
+\begin{filecontents}{\jobname.bbl}
+ %% Insert your bbl file here if you do not have a bibliography file
+\end{filecontents}
+
+\documentclass{cc}
+
+%%\ccsps{}
+
+%%% personal macros and packages
+%%% end of personal macros and packages
+
+\contact{}% Insert contact email address here.
+\submitted{}% Insert the date on which you made the original
+ % submission of your paper to computational complexity,
+ % in the format \submitted{8 August 2008}.
+\title{}% Insert title here. (Use \\ to split lines.)
+%%\titlehead{}% If necessary insert running head title here.
+\author{}% Insert author list here. (Each author must be given
+ % including his/her current address, email and possibly
+ % homepage. Lines are seperated by \\, different authors
+ % are separated by \and .)
+%%\authorhead{}% If necessary insert running head authors here.
+%%\authorlist{}% If necessary insert title author list here.
+
+\begin{abstract}
+ %% Insert abstract here.
+\end{abstract}
+
+\begin{keywords}
+ %% Insert keywords here.
+\end{keywords}
+
+\begin{subject}
+ %% Insert subject classification here.
+\end{subject}
+
+
+
+\begin{document}
+
+%%% Insert your article text here.
+
+
+
+
+
+
+\begin{acknowledge}
+ %% Insert your acknowledgments here.
+\end{acknowledge}
+%% \noacknowledge% This command must be here if there are no
+ % acknowledgements.
+
+\bibliography{cc-journals,\jobname}% Put your bibliography into the above
+ % filecontents environment!
+
+\end{document}
+
+%</cctemplate>
+% \end{macrocode}
+%
+% \GetFileInfo{cc.cls}
+% \def\filename{cc-portability-frame.tex}
+% \CodelinePrefix{}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \changes{v2.03}{2003/05/26}{Added cc-portability-frame.tex ...}
+% \begin{macrocode}
+%<*ccportabilityframe>
+\newif\ifcc\IfFileExists{cc.cls}{\cctrue}{\ccfalse}\ifcc
+
+%%% Include your document here
+%%% (formatted as described in this documentation or
+%%% sketched by the template file cctemplate.tex).
+
+\else
+
+%%% Include cc-cls-inline.tex here.
+
+\typeout{Please call latex again.}
+\makeatletter\expandafter\@@end
+\fi
+%</ccportabilityframe>
+% \end{macrocode}
+%
+% \def\filename{ccreltx.sty}
+% \CodelinePrefix{}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It is a helper that deactivates changes made by \Lpackage{amsthm}
+% or thelike, and reactivates the original \LaTeX{} definitions. In
+% fact, the following is just an extract of \file{ltthm.dtx} which is
+% part of the \LaTeX{} basis.
+% \begin{macrocode}
+%<*ccreltx>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{ccreltx}[2002/05/22 v2.05
+ computational complexity, reactivate ltthm.
+ Michael Nuesken, Bonn.]
+% From File: ltthm.dtx
+\def\newtheorem#1{%
+ \@ifnextchar[{\@othm{#1}}{\@nthm{#1}}}
+\def\@nthm#1#2{%
+ \@ifnextchar[{\@xnthm{#1}{#2}}{\@ynthm{#1}{#2}}}
+\def\@xnthm#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
+ \@thmcounter{#1}}%
+ \global\@namedef{#1}{\@thm{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}}}
+\def\@ynthm#1#2{%
+ \expandafter\@ifdefinable\csname #1\endcsname
+ {\@definecounter{#1}%
+ \expandafter\xdef\csname the#1\endcsname{\@thmcounter{#1}}%
+ \global\@namedef{#1}{\@thm{#1}{#2}}%
+ \global\@namedef{end#1}{\@endtheorem}}}
+\def\@othm#1[#2]#3{%
+ \@ifundefined{c@#2}{\@nocounterr{#2}}%
+ {\expandafter\@ifdefinable\csname #1\endcsname
+ {\global\@namedef{the#1}{\@nameuse{the#2}}%
+ \global\@namedef{#1}{\@thm{#2}{#3}}%
+ \global\@namedef{end#1}{\@endtheorem}}}}
+\def\@thm#1#2{%
+ \refstepcounter{#1}%
+ \@ifnextchar[{\@ythm{#1}{#2}}{\@xthm{#1}{#2}}}
+\def\@xthm#1#2{%
+ \@begintheorem{#2}{\csname the#1\endcsname}\ignorespaces}
+\def\@ythm#1#2[#3]{%
+ \@opargbegintheorem{#2}{\csname the#1\endcsname}{#3}\ignorespaces}
+\def\@thmcounter#1{\noexpand\arabic{#1}}
+\def\@thmcountersep{.}
+\def\@begintheorem#1#2{\trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2}]\itshape}
+\def\@opargbegintheorem#1#2#3{\trivlist
+ \item[\hskip \labelsep{\bfseries #1\ #2\ (#3)}]\itshape}
+\def\@endtheorem{\endtrivlist}
+%</ccreltx>
+% \end{macrocode}
+%
+% \def\filename{cc4apjrnl.sty}
+% \CodelinePrefix{}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It allows to use the document class \Lclass{apjrnl} for a file that
+% has been written with the document class \Lclass{cc}. To do this
+% add the line
+% \begin{verbatim}
+% \expandafter\def\csname ver@apthm.sty\endcsname{2001/03/05}
+% \end{verbatim}
+% \emph{before} the |\documentclass| and a |\usepackage{cc4apjrnl}|
+% after it.
+% \begin{macrocode}
+%<*cc4apjrnl>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{cc4apjrnl}[2002/01/08 v2.05
+ computational complexity, adaptions to apjrnl.
+ Michael Nuesken, Bonn.]
+% Forget this AP definition
+\let\answer\relax
+\let\endanswer\relax
+% Load our definitions
+\RequirePackage{amsmath}[1997/03/20 v1.2d]
+% amsmath contains amstext, amsgen, amsbsy, amsopn
+\RequirePackage{amsfonts}[1997/09/17 v2.2e]
+\RequirePackage{amssymb}[1996/11/03 v2.2b]
+\RequirePackage{ccaux}
+\RequirePackage{ccreltx}% deactivate amsthm.sty and reactive LaTeX's definitions.
+\@longarticletrue
+\@adjustnumbering
+\let\theorem@style\@undefined
+\RequirePackage{ccthm}
+\RequirePackage{ccqed}
+\let\proof\@undefined
+\let\endproof\@undefined
+\RequirePackage{ccproof}
+\RequirePackage{cc2cite}
+\RequirePackage{url}[1999/03/02 ver 1.4]
+\expandafter\def\expandafter\UrlSpecials\expandafter{%
+ \UrlSpecials\do\%{}}
+\providecommand{\email}{\begingroup\urlstyle{tt}\Url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+% Adapt to AP style
+\gdef\theorem@headerfont{\scshape\null\hskip\parindent}
+\gdef\Proof{\textit{Proof}}
+\renewcommand{\qedsymbol}{\rule{2pt}{4pt}}
+%</cc4apjrnl>
+% \end{macrocode}
+%
+% \def\filename{cc4amsart.sty}
+% \CodelinePrefix{}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It allows to use the document class \Lclass{amsart} or derivatives
+% of it (as \Lclass{mcom-l}, \dots) for a file that has been written
+% with the document class \Lclass{cc}. To do this add a
+% |\usepackage{cc4amsart}| after it.
+% \changes{v2.05}{2209/12/22}{Added \cs{@adjustnumbering}.}
+% \begin{macrocode}
+%<*cc4amsart>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{cc4amsart}[2009/12/22 v2.05b
+ computational complexity, adaptions to amsart.
+ Michael Nuesken, Bonn.]
+\RequirePackage{ccaux}
+% ccreltex deactivates amsthm.sty and reactive LaTeX's definitions.
+\RequirePackage{ccreltx}
+\PassOptionsToPackage{bare}{relabel}
+\RequirePackage{thcc}
+\gdef\theorem@headerfont{\bfseries}
+% \def\th@cc{%
+% \normalfont\itshape
+% \def\@begintheorem##1##2{\item
+% [\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
+% \def\@opargbegintheorem##1##2##3{\item
+% [\hskip\labelsep \theorem@headerfont ##1\ ##2\ %
+% \normalfont({\activate@shortcite{}##3}).]}%
+% }
+\@longarticletrue
+\RequirePackage{ccthm}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{relabel}
+\RequirePackage{cc2cite}
+\RequirePackage{ccqed}
+\AtBeginDocument{\@adjustnumbering}
+%</cc4amsart>
+% \end{macrocode}
+%
+% \def\filename{cc4svjour.sty}
+% \CodelinePrefix{}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It allows to use the document class \Lclass{svjour3} or derivatives
+% of it for a file that has been written with the document class
+% \Lclass{cc}. To do this add a |\usepackage{cc4svjour}| after it.
+% \changes{v2.14}{2010/10/14}{Derived from \lpackage{cc4amsart}\texttt{.sty}.}
+% \begin{macrocode}
+%<*cc4svjour>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{cc4svjour}[2010/10/14 v2.15
+ computational complexity, adaptions to svjour3.
+ Michael Nuesken, Bonn.]
+\RequirePackage{ccaux}
+\RequirePackage{cc2cite}
+% ccreltex deactivates amsthm.sty and reactive LaTeX's definitions.
+\RequirePackage{ccreltx}
+\PassOptionsToPackage{bare}{relabel}
+\RequirePackage{thcc}
+\gdef\theorem@headerfont{\bfseries}
+% \def\th@cc{%
+% \normalfont\itshape
+% \def\@begintheorem##1##2{\item
+% [\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
+% \def\@opargbegintheorem##1##2##3{\item
+% [\hskip\labelsep \theorem@headerfont ##1\ ##2\ %
+% \normalfont({\activate@shortcite{}##3}).]}%
+% }
+%
+%% Deactivate svjour3's theorem definitions:
+\let\claim\relax \let\endclaim\relax
+\let\conjecture\relax \let\endconjecture\relax
+\let\corollary\relax \let\endcorollary\relax
+\let\counterexample\relax \let\endcounterexample\relax
+\let\definition\relax \let\enddefinition\relax
+\let\exercise\relax \let\endexercise\relax
+\let\fact\relax \let\endfact\relax
+\let\hypothesis\relax \let\endhypothesis\relax
+\let\lemma\relax \let\endlemma\relax
+\let\notation\relax \let\endnotation\relax
+\let\note\relax \let\endnote\relax
+\let\observation\relax \let\endobservation\relax
+\let\open\relax \let\endopen\relax
+\let\openquestion\relax \let\endopenquestion\relax
+\let\problem\relax \let\endproblem\relax
+\let\proposition\relax \let\endproposition\relax
+\let\question\relax \let\endquestion\relax
+\let\remark\relax \let\endremark\relax
+\let\result\relax \let\endresult\relax
+\let\theorem\relax \let\endtheorem\relax
+\let\thesis\relax \let\endthesis\relax
+\let\warning\relax \let\endwarning\relax
+\let\example\relax \let\endexample\relax
+\@longarticletrue
+\RequirePackage{ccthm}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{relabel}
+\RequirePackage{cc2cite}
+\RequirePackage{ccqed}
+\RequirePackage{amsmath}
+\RequirePackage{amsfonts}
+\RequirePackage{amssymb}
+\RequirePackage{url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+\AtBeginDocument{\@adjustnumbering}
+%</cc4svjour>
+% \end{macrocode}
+%
+% \def\filename{cc4llncs.sty}
+% \CodelinePrefix{}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It allows to use the document class \Lclass{llncs} for a file that
+% has been written with the document class \Lclass{cc}. To do this
+% add the line |\usepackage{cc4llncs}|.
+% \begin{macrocode}
+%<*cc4llncs>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{cc4llncs}[2002/10/01 v2.05
+ computational complexity, adaptions to llncs.
+ Michael Nuesken, Bonn.]
+% Forget these llncs definitions
+\let\claim\relax \let\endclaim\relax
+\let\conjecture\relax \let\endconjecture\relax
+\let\corollary\relax \let\endcorollary\relax
+\let\counterexample\relax \let\endcounterexample\relax
+\let\definition\relax \let\enddefinition\relax
+\let\exercise\relax \let\endexercise\relax
+\let\fact\relax \let\endfact\relax
+\let\hypothesis\relax \let\endhypothesis\relax
+\let\lemma\relax \let\endlemma\relax
+\let\notation\relax \let\endnotation\relax
+\let\note\relax \let\endnote\relax
+\let\observation\relax \let\endobservation\relax
+\let\open\relax \let\endopen\relax
+\let\openquestion\relax \let\endopenquestion\relax
+\let\problem\relax \let\endproblem\relax
+\let\proposition\relax \let\endproposition\relax
+\let\question\relax \let\endquestion\relax
+\let\remark\relax \let\endremark\relax
+\let\result\relax \let\endresult\relax
+\let\theorem\relax \let\endtheorem\relax
+\let\thesis\relax \let\endthesis\relax
+\let\warning\relax \let\endwarning\relax
+\let\example\relax \let\endexample\relax
+\let\proof\relax \let\endproof\relax
+% Load our definitions
+\RequirePackage{amsmath}[1997/03/20 v1.2d]
+% amsmath contains amstext, amsgen, amsbsy, amsopn
+\RequirePackage{amsfonts}[1997/09/17 v2.2e]
+\RequirePackage{amssymb}[1996/11/03 v2.2b]
+\RequirePackage{ccaux}
+\@longarticletrue
+% ccreltex deactivates amsthm.sty and reactive LaTeX's definitions.
+\RequirePackage{ccreltx}
+\RequirePackage{ccref}
+\RequirePackage{ccthm,ccproof}
+\theoremheaderfont{\upshape\bfseries}
+\RequirePackage{ccalgo}
+% Load our citation scheme but keep llncs environment thebibliography.
+\let\origthebibliography\thebibliography
+\let\origendthebibliography\endthebibliography
+\let\citeauthoryear\relax
+\RequirePackage{cc2cite}
+\let\thebibliography\origthebibliography
+\let\endthebibliography\origendthebibliography
+%
+\RequirePackage{url}[1999/03/02 ver 1.4]
+\expandafter\def\expandafter\UrlSpecials\expandafter{%
+ \UrlSpecials\do\%{}}
+\providecommand{\email}{\begingroup\urlstyle{tt}\Url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+% one of our helpers
+\def\condbreak#1{%
+ \vskip 0pt plus #1%
+ \pagebreak[3]%
+ \vskip 0pt plus -#1%
+ \relax}
+%</cc4llncs>
+% \end{macrocode}
+%
+% \def\filename{cc4siamltex.sty}
+% \CodelinePrefix{}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It allows to use the document class \Lclass{amsart} or derivatives
+% of it (as \Lclass{mcom-l}, \dots) for a file that has been written
+% with the document class \Lclass{cc}. To do this add a
+% |\usepackage{cc4siamltex}| after it.
+% \begin{macrocode}
+%<*cc4siamltex>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{cc4siamltex}[2002/05/22 v2.05
+ computational complexity, adaptions to siamltex.
+ Michael Nuesken, Bonn.]
+
+\let\theorem\relax
+\let\endtheorem\relax
+\let\lemma\relax
+\let\endlemma\relax
+\let\corollary\relax
+\let\endcorollary\relax
+\let\proposition\relax
+\let\endproposition\relax
+\let\definition\relax
+\let\enddefinition\relax
+\let\proof\relax
+\let\endproof\relax
+
+\RequirePackage{amsmath}
+\RequirePackage{amsfonts}
+\RequirePackage{amssymb}
+\RequirePackage{ccaux}
+% ccreltex deactivates amsthm.sty and reactive LaTeX's definitions.
+\RequirePackage{ccreltx}
+% \PassOptionsToPackage{bare}{relabel}
+\RequirePackage{ccthm}
+\RequirePackage{relabel}
+\RequirePackage{cc2cite}
+\RequirePackage{ccproof}
+\renewcommand{\Proof}{\textit{Proof}}
+\renewcommand{\qedsymbol}{\vbox{\hrule height0.6pt\hbox{%
+ \vrule height1.3ex width0.6pt\hskip0.8ex
+ \vrule width0.6pt}\hrule height0.6pt
+ }}
+\RequirePackage{ccalgo}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{url}[1999/03/02 ver 1.4]
+\expandafter\def\expandafter\UrlSpecials\expandafter{%
+ \UrlSpecials\do\%{}}
+\providecommand{\email}{\begingroup\urlstyle{tt}\Url}
+\providecommand{\homepage}{\begingroup\scriptsize\urlstyle{tt}\Url}
+%</cc4siamltex>
+% \end{macrocode}
+%
+% \def\filename{cc4jT.sty}
+% \CodelinePrefix{}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It allows to use the document class \Lclass{amsart} or derivatives
+% of it (as \Lclass{mcom-l}, \dots) for a file that has been written
+% with the document class \Lclass{cc}. To do this add a
+% |\usepackage{cc4amsart}| after it.
+% \begin{macrocode}
+%<*cc4jT>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{cc4jT}[2002/01/08 v2.05
+ computational complexity, adaptions to jT which uses amsart.
+ Michael Nuesken, Bonn.]
+\RequirePackage{ccaux}
+% ccreltex deactivates amsthm.sty and reactive LaTeX's definitions.
+\RequirePackage{ccreltx}
+\PassOptionsToPackage{bare}{relabel}
+\RequirePackage{thcc}
+\gdef\theorem@headerfont{\bfseries}
+% \def\th@cc{%
+% \normalfont\itshape
+% \def\@begintheorem##1##2{\item
+% [\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
+% \def\@opargbegintheorem##1##2##3{\item
+% [\hskip\labelsep \theorem@headerfont ##1\ ##2\ %
+% \normalfont({\activate@shortcite{}##3}).]}%
+% }
+\@longarticletrue
+\let\proof\relax\let\endproof\relax
+\RequirePackage{ccthm}
+\RequirePackage{ccproof}
+\RequirePackage{ccqed}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{relabel}
+\babel\def\partname{Part}[german=Teil,french=\protect\@Fpt partie]
+\defprefix{part}{\partname~}
+\babel\def\chaptername{Chapter}[german=Kapitel,french=Chapitre]
+\defprefix{chapter}{\chaptername~}
+\babel\def\sectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{section}{\sectionname~}
+\babel\def\subsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsection}{\subsectionname~}
+\babel\def\subsubsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsubsection}{\subsubsectionname~}
+\let\ccorg@appendix\appendix
+\babel\def\appendixname{Appendix}[german=Anhang,french=Annexe]
+\def\appendix{%
+ \defprefix{section}{\appendixname~}%
+ \defprefix{subsection}{\appendixname~}%
+ \defprefix{subsubsection}{\appendixname~}%
+ \ccorg@appendix}
+\defprefix{equation}#1{(#1)}
+\babel\def\figurename{Figure}[german=Figur,french={\scshape Figure}]
+\defprefix{figure}{\figurename~}
+\babel\def\tablename{Table}[german=Tafel,french={\scshape Table}]
+\defprefix{table}{\tablename~}
+\numberallwithin{section}
+\AtBeginDocument{\@adjustnumbering}
+\RequirePackage{cc2cite}
+\RequirePackage{url}
+%</cc4jT>
+% \end{macrocode}
+%
+% \def\filename{cc4elsart.sty}
+% \CodelinePrefix{}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+%
+% It allows to use the document class \Lclass{amsart} or derivatives
+% of it (as \Lclass{mcom-l}, \dots) for a file that has been written
+% with the document class \Lclass{cc}. To do this add a
+% |\usepackage{cc4amsart}| after it.
+% \changes{v2.05}{2209/12/22}{Added ams packages.}
+% \begin{macrocode}
+%<*cc4elsart>
+\NeedsTeXFormat{LaTeX2e}[1995/12/01]
+\ProvidesPackage{cc4elsart}[2009/12/22 v2.05b
+ computational complexity, adaptions to elsart.
+ Michael Nuesken, Bonn.]
+\RequirePackage{ccaux}
+% ccreltex deactivates amsthm.sty and reactive LaTeX's definitions.
+\RequirePackage{ccreltx}
+\PassOptionsToPackage{bare}{relabel}
+\RequirePackage{thcc}
+% \gdef\theorem@headerfont{\bfseries}
+% \def\th@cc{%
+% \normalfont\itshape
+% \def\@begintheorem##1##2{\item
+% [\hskip\labelsep \theorem@headerfont ##1\ ##2.]}%
+% \def\@opargbegintheorem##1##2##3{\item
+% [\hskip\labelsep \theorem@headerfont ##1\ ##2\ %
+% \normalfont({\activate@shortcite{}##3}).]}%
+% }
+\@longarticletrue
+\let\claim\relax
+\let\fact\relax
+\let\note\relax
+\let\proof\relax\let\endproof\relax
+\RequirePackage{ccthm}
+\RequirePackage{ccproof}
+\RequirePackage{ccqed}
+\babel\def\ccacknowledgementsname{Acknowledgements}[%
+ german=Danksagung,french=Remerciements]
+\newenvironment{acknowledge}{\section*{\ccacknowledgementsname}}{}
+\RequirePackage{relabel}
+\babel\def\partname{Part}[german=Teil,french=\protect\@Fpt partie]
+\defprefix{part}{\partname~}
+\babel\def\chaptername{Chapter}[german=Kapitel,french=Chapitre]
+\defprefix{chapter}{\chaptername~}
+\babel\def\sectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{section}{\sectionname~}
+\babel\def\subsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsection}{\subsectionname~}
+\babel\def\subsubsectionname{Section}[german=Abschnitt,french=Section]
+\defprefix{subsubsection}{\subsubsectionname~}
+\let\ccorg@appendix\appendix
+\babel\def\appendixname{Appendix}[german=Anhang,french=Annexe]
+\def\appendix{%
+ \defprefix{section}{\appendixname~}%
+ \defprefix{subsection}{\appendixname~}%
+ \defprefix{subsubsection}{\appendixname~}%
+ \ccorg@appendix}
+\defprefix{equation}#1{(#1)}
+\babel\def\figurename{Figure}[german=Figur,french={\scshape Figure}]
+\defprefix{figure}{\figurename~}
+\babel\def\tablename{Table}[german=Tafel,french={\scshape Table}]
+\defprefix{table}{\tablename~}
+\RequirePackage{amsmath}[2000/01/15 v2.05]% 1997/03/20 v1.2d
+% amsmath contains amstext, amsgen, amsbsy, amsopn
+\RequirePackage{amsfonts}[1997/09/17 v2.2e]
+\RequirePackage{amssymb}[1996/11/03 v2.2b]
+\numberallwithin{section}
+\AtBeginDocument{\@adjustnumbering}
+% \RequirePackage{cc2cite}
+% \RequirePackage{url}
+%</cc4elsart>
+% \end{macrocode}
+%
+% \def\filename{cc2.dbj}
+% \def\fileversion{v2.01}
+% \def\filedate{2000/02/29}
+% \CodelinePrefix{B}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate. Run this file with \texttt{tex \filename} to
+% produce \file{cc2.bst} from scratch (ie. from \file{merlin.mbs}).
+% See \Lpackage{makebst} for more information.
+% \begin{macrocode}
+%<*cc2dbj>
+%<<CC2DBJ>
+%% Driver file to produce cc2.bst from merlin.mbs
+%% Generated with makebst, version 3.2 (1999/02/24)
+%% Produced on 2000/02/28 at 10:28
+%%
+\input docstrip
+
+\preamble
+----------------------------------------
+*** bst for computational complexity with natbib.sty ***
+
+\endpreamble
+
+\postamble
+End of customized bst file
+\endpostamble
+
+\keepsilent
+
+\askforoverwritefalse
+\def\MBopts{\from{merlin.mbs}{%
+% babel%: Babel
+ %: (def) English
+%--------------------
+% ,cite%: Cite key
+% ,alfph,alf-f%: Alpha style, Jones90
+% ,alph,alf-1%: Alpha style, Jon90
+% ,alph%: Alpha style, Jon90 or JWB90
+ ,ay%: Author-year
+% %(def) Numerical
+%--------------------
+% ,cn%: Author-date
+% ,nmd%: Named
+% ,cay%: Chicago
+% ,ast%: Astronomy
+% ,har%: Harvard
+% ,alk%: Apalike
+% %(def) Older Natbib
+ ,nat%: Natbib
+%--------------------
+ ,lang%: Add language field
+% %(def) No language field
+%--------------------
+% ,annote%: Annotations
+ %: (def) No annotations
+%--------------------
+% ,seq-no%: Citation order
+% ,seq-yr%: Year ordered
+% ,seq-key%: By label and cite key
+% ,seq-lab%: By label
+ %(def) Alphabetical
+%--------------------
+ ,vonx%: Sort without von part
+% %(def) Sort on von part
+%--------------------
+% ,nm-revv1%: First name reversed, with full names
+% ,nm-rev1%: Only first name reversed, initials
+% ,nm-rvv%: Surname + spaceless initials
+% ,nm-rvx%: Surname + pure initials
+% ,nm-rv%: Surname + dotless initials
+% ,nm-rev%: Surname + initials
+% ,nm-init,ed-au%: Initials + surname
+% ,nm-revf%: Full, surname first
+ ,ed-au%: Full, surname last
+%--------------------
+% ,jnrlab%: `Junior' in citations
+ %: (def) No `junior' part in the citations
+%--------------------
+% ,aunm-sl%: Names separated by slash
+% ,aunm-semi%: Names separated by semi-colon
+ %: (def) Author names separated by commas
+%--------------------
+% ,nmdash%: Repeated author/editor names replaced by dash
+ %: (def) Author/editor names always present
+%--------------------
+% ,nmlm%: Limited authors
+ %: (def) All authors
+%--------------------
+% ,nmft,nmft-def%: User defined author font
+% ,nmft,nmft-bf%: Bold authors
+% ,nmft,nmft-it%: Italic authors
+ ,nmft,nmft-sc%: Small caps authors
+% %(def) Normal font for author names
+%--------------------
+% ,fnm-def%: First names in user defined font
+% ,fnm-rm%: First names in normal font
+ %(def) First names same font as surnames
+%--------------------
+ ,nmfted%: Editors incollection like authors
+% %(def) Editors incollection normal font
+%--------------------
+ ,nmand-rm%: `And' in normal font
+% %(def) `And' in author font
+%--------------------
+% ,lab,lab-def%: User defined citation font
+% ,lab,lab-bf%: Cited authors bold
+% ,lab,lab-sc%: Cited authors small caps
+% ,lab,lab-it%: Cited authors italic
+ %: (def) Cited authors plain
+%--------------------
+% ,xlab-it%: Extra label italic
+ %: (def) Extra label plain
+%--------------------
+ %: (def) Year included when KEY replaces missing author
+% ,keyxyr%: Year blank when KEY replaces missing author
+%--------------------
+% ,blkyear%: Missing date left blank
+ %: (def) Missing date set to ????
+%--------------------
+% ,dt-end%: Date at very end
+% ,dt-jnl%: Date part of journal spec.
+ ,dt-beg%: Date after authors
+% %(def) Date at end
+%--------------------
+% ,yr-blk%: Year preceded by space
+% ,yr-com%: Date preceded by comma
+% ,yr-per%: Year preceded by period
+% ,yr-col%: Year preceded by colon
+% ,yr-brk%: Year in brackets
+ ,yr-par%: Year in parentheses
+% %(def) Year plain
+%--------------------
+% ,aymth%: Include month in date
+ %: (def) Date is year only
+%--------------------
+% ,yrp-x%: No punct. after date
+% ,yrp-per%: Period after date
+% ,yrp-semi%: Semi-colon after date
+% ,yrp-col%: Colon after date
+ %: (def) Date with standard block punctuation
+%--------------------
+% ,yrpp-xsp%: No space after date
+ %: (def) Space after date
+%--------------------
+% ,dtbf%: Date in bold face
+ %: (def) Date in normal font
+%--------------------
+% %(def) Year truncated
+ ,note-yr%: Year text full
+%--------------------
+% ,tit-qq,qt-g,qx%: Title in guillemets
+% ,tit-qq,qx%: Title in double quotes
+% ,tit-qq,qt-s,qx%: Title in single quotes
+% ,tit-qq,qt-g%: Title and punctuation in guillemets
+% ,tit-qq%: Title and punctuation in double quotes
+% ,tit-qq,qt-s%: Title and punctuation in single quotes
+% ,tit-it%: Title italic
+ %: (def) Title plain
+%--------------------
+ ,atit-u%: Title style
+% %(def) Sentence style
+%--------------------
+% ,jtit-x%: No article title
+ %: (def) Article title present
+%--------------------
+% ,jxper%: Dotless journal names
+ %: (def) Periods in journal names
+%--------------------
+% ,jttl-rm%: Journal title normal
+ %: (def) Journal title italics
+%--------------------
+% ,thtit-a%: Thesis title like article
+ %: (def) Thesis titles like books
+%--------------------
+% ,trtit-b%: Tech. report title like books
+ %: (def) Tech. report title like articles
+%--------------------
+% ,trnum-it%: Tech. report and number italic
+ %: (def) Tech. report and number plain
+%--------------------
+% ,vol-2bf%: Volume and number bold
+ ,vol-bf%: Volume bold
+% ,vol-it%: Volume italic
+% %(def) Volume plain
+%--------------------
+% ,vnum-x%: Journal vol, without number
+% ,vnum-b%: Journal vol number
+% ,vnum-h%: Journal vol, \# number
+% ,vnum-nr%: Journal vol, no. num
+% ,vnum-cm%: Journal vol, num
+% ,vnum-sp%: Journal vol (num)
+ %: (def) Journal vol(num)
+%--------------------
+% ,volp-blk%: Volume with blank
+ ,volp-com%: Volume with comma
+% ,volp-semi%: Volume with semi-colon
+% ,volp-sp%: Volume with colon and space
+% %(def) Volume with colon
+%--------------------
+% ,jdt-pc%: Year, comma, pages
+% ,jdt-p%: Year with pages
+% ,jdt-vs%: Journal vol (year)
+% ,jdt-v%: Journal vol(year)
+ %: (def) Journal year like others
+%--------------------
+% ,jpg-1%: Only start page number
+ %: (def) Start and stop page numbers
+%--------------------
+% ,pgsep-p%: Period inserted over 9999
+ ,pgsep-s%: Thin space inserted over 9999
+% ,pgsep-c%: Comma inserted over 9999
+% %: (def) No separators for large page numbers
+%--------------------
+% ,jwdpg%: Include `page' in articles
+ %: (def) Article pages numbers only
+%--------------------
+% ,pp-last%: Pages at end
+ %: (def) Pages given mid text
+%--------------------
+% ,jwdvol%: Include `volume' in articles
+ %: (def) Article volume as number only
+%--------------------
+% ,num-xser%: Allows number without series
+ %: (def) Standard BibTeX
+%--------------------
+% ,numser%: Just before publisher
+ %: (def) After chapter and pages
+%--------------------
+ ,jnm-x%: Space after journal
+% %(def) Comma after journal
+%--------------------
+% ,btit-rm,bt-rm%: Book title plain
+ %: (def) Book title italic
+%--------------------
+% ,bkpg-x%: Pages in book bare
+% ,bkpg-par%: Pages in book in parentheses
+ %: (def) Pages in book plain
+%--------------------
+ ,pg-bk%: For book: 345 pages
+ %: (def) Total book pages not printed
+%--------------------
+% ,add-pub%: Address: Publisher
+ %: (def) Publisher, address
+%--------------------
+% ,pub-date,pub-xpar,pub-xc%: Publisher and date, no parentheses, no comma
+% ,pub-date,pub-xpar%: Publisher and date without parentheses
+% ,pub-date,pub-xc%: Publisher and date in parentheses, no comma
+% ,pub-date%: Publisher and date in parentheses
+% ,pub-par%: Publisher in parentheses
+ %: (def) Publisher as normal block
+%--------------------
+% ,pre-edn%: Publisher after edition
+% ,pre-pub%: Publisher before chapter, pages
+ %: (def) Publisher after chapter, pages
+%--------------------
+% %(def) No ISBN
+ ,isbn%: Include ISBN
+%--------------------
+% %(def) No ISSN
+ ,issn%: Include ISSN
+%--------------------
+% ,url,url-nl%: URL on new line
+% ,url,url-nt%: URL as note
+ ,url,url-blk%: Include URL
+% %(def) No URL
+%--------------------
+% ,edparc,bkedcap%: `Name, (Editor)'
+% ,edparc%: `Name, (editor)'
+% ,edpar,bkedcap%: `Name (Editor),'
+ ,edpar%: `Name (editor),'
+% %(def) Word `editor' after name
+%--------------------
+% ,edby-par,edbyy%: Booktitle (.., editor)
+ ,edby,edbyy%: Booktitle, .., editor
+% ,edby-parc,edbyx%: Booktitle, (editor..)
+% ,edby-par,edbyx%: Booktitle (editor..)
+% ,edby,edbyw%: Booktitle, (editor) ..
+% ,edby,edbyx%: Booktitle, editor ..
+% ,edby-parc%: Booktitle, (edited by ..)
+% ,edby-par%: Booktitle (edited by ..)
+% ,edby%: Booktitle, edited by ..
+% %: (def) .., editor, booktitle
+%--------------------
+% ,blk-tita%: Period after titles of articles
+% ,blk-tit%: Period after titles of articles, books, etc
+% ,blk-com,com-blank%: Blanks between blocks
+% ,blk-com,com-semi%: Semi-colon between blocks
+% ,blk-com%: Comma between blocks
+ %: (def) \newblock after blocks
+%--------------------
+% ,au-col%: Author block with colon
+ %: (def) Author block normal
+%--------------------
+% ,in-x%: No word `in'
+% ,in-col%: Colon after `in'
+ %: (def) Space after `in'
+%--------------------
+% ,injnl%: Add `in' before journal name
+ %: (def) No `in' before journal name
+%--------------------
+% ,fin-bare%: No period at end
+ %: (def) Period at very end
+%--------------------
+ ,ppx%: `Page' omitted
+% ,pp%: `Page' abbreviated
+% %: (def) `Page(s)'
+%--------------------
+% ,ed%: `Editor' abbreviated
+ %: (def) `Editor(s)'
+%--------------------
+% ,abr%: Abbreviations
+ %: (def) No abbreviations
+%--------------------
+ ,ord%: Numerical editions
+% %(def) Write out editions
+% ,xedn%: Editions as in database
+%--------------------
+% ,jabr%: Abbreviated journal names
+ %: (def) Full journal names
+%--------------------
+% ,varand%: Use \BIBand
+ ,amper%: Use ampersand
+% %(def) Use word `and'
+%--------------------
+% ,and-com%: Comma even with 2 authors
+ ,and-xcom%: No comma before `and'
+% %(def) Comma before `and'
+%--------------------
+% ,xand%: No `and'
+ %: (def) With `and'
+%--------------------
+% ,etal-rm%: Roman et al
+ ,etal-it%: Italic et al
+% %(def) Plain et al
+%--------------------
+% ,em-ul%: Underlining
+% ,em-x%: No italics
+% ,em-it%: Use true italics
+ %: (def) Use emphasis
+%--------------------
+ ,nfss%: NFSS
+% %(def) No NFSS
+%--------------------
+ }}
+\generate{\file{cc2.bst}{\MBopts}}
+\endbatchfile
+%CC2DBJ>
+%</cc2dbj>
+% \end{macrocode}
+%
+%
+% \def\filename{cc2.bst}
+% \def\fileversion{v2.09}
+% \def\filedate{2008/04/25}
+% \CodelinePrefix{b}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \ifbst% the new bibliography style is normally not printed.
+% \hfuzz=\oddsidemargin
+% \def\MacroFont{\fontencoding\encodingdefault
+% \fontfamily\ttdefault
+% \fontseries\mddefault
+% \fontshape\updefault
+% \tiny}
+% \let\AltMacroFont\MacroFont
+% \renewcommand{\theCodelineNo}{\rmfamily\tiny b\arabic{CodelineNo}}%
+% \begin{macrocode}
+%<*cc2bst>
+%<<CC2BST>
+%%
+%% This is file `cc2.bst',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% merlin.mbs (with options: `,ay,nat,lang,vonx,ed-au,nmft,nmft-sc,nmfted,nmand-rm,dt-beg,yr-par,note-yr,atit-u,vol-bf,volp-com,pgsep-s,jnm-x,pg-bk,isbn,issn,url,url-blk,edpar,edby,edbyy,ppx,ord,amper,and-xcom,etal-it,nfss')
+%% ----------------------------------------
+%% *** bst for computational complexity with natbib.sty ***
+%%
+%% Copyright 1994-2007 Patrick W Daly
+ % ===============================================================
+ % IMPORTANT NOTICE:
+ % This bibliographic style (bst) file has been generated from one or
+ % more master bibliographic style (mbs) files, listed above.
+ %
+ % This generated file can be redistributed and/or modified under the terms
+ % of the LaTeX Project Public License Distributed from CTAN
+ % archives in directory macros/latex/base/lppl.txt; either
+ % version 1 of the License, or any later version.
+ % ===============================================================
+ % Name and version information of the main mbs file:
+ % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)]
+ % For use with BibTeX version 0.99a or later
+ %-------------------------------------------------------------------
+ % This bibliography style file is intended for texts in ENGLISH
+ % This is an author-year citation style bibliography. As such, it is
+ % non-standard LaTeX, and requires a special package file to function properly.
+ % Such a package is natbib.sty by Patrick W. Daly
+ % The form of the \bibitem entries is
+ % \bibitem[Jones et al.(1990)]{key}...
+ % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
+ % The essential feature is that the label (the part in brackets) consists
+ % of the author names, as they should appear in the citation, with the year
+ % in parentheses following. There must be no space before the opening
+ % parenthesis!
+ % With natbib v5.3, a full list of authors may also follow the year.
+ % In natbib.sty, it is possible to define the type of enclosures that is
+ % really wanted (brackets or parentheses), but in either case, there must
+ % be parentheses in the label.
+ % The \cite command functions as follows:
+ % \citet{key} ==>> Jones et al. (1990)
+ % \citet*{key} ==>> Jones, Baker, and Smith (1990)
+ % \citep{key} ==>> (Jones et al., 1990)
+ % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
+ % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
+ % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
+ % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., p. 32)
+ % \citeauthor{key} ==>> Jones et al.
+ % \citeauthor*{key} ==>> Jones, Baker, and Smith
+ % \citeyear{key} ==>> 1990
+ %---------------------------------------------------------------------
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ eid
+ howpublished
+ institution
+ isbn
+ issn
+ journal
+ key
+ language
+ 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 {add.blank}
+{ " " * before.all 'output.state :=
+}
+
+FUNCTION {date.block}
+{
+ new.block
+}
+
+FUNCTION {not}
+{ { #0 }
+ { #1 }
+ if$
+}
+FUNCTION {and}
+{ 'skip$
+ { pop$ #0 }
+ if$
+}
+FUNCTION {or}
+{ { pop$ #1 }
+ 'skip$
+ if$
+}
+FUNCTION {new.block.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'new.block
+ if$
+}
+FUNCTION {field.or.null}
+{ duplicate$ empty$
+ { pop$ "" }
+ 'skip$
+ if$
+}
+FUNCTION {emphasize}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\emph{" swap$ * "}" * }
+ if$
+}
+FUNCTION {bolden}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\textbf{" swap$ * "}" * }
+ if$
+}
+FUNCTION {scaps}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "\textsc{" swap$ * "}" * }
+ if$
+}
+FUNCTION {bib.name.font}
+{ scaps }
+FUNCTION {bib.fname.font}
+{ bib.name.font }
+FUNCTION {tie.or.space.prefix}
+{ duplicate$ text.length$ #3 <
+ { "~" }
+ { " " }
+ if$
+ swap$
+}
+
+FUNCTION {capitalize}
+{ "u" change.case$ "t" change.case$ }
+
+FUNCTION {space.word}
+{ " " swap$ * " " * }
+ % Here are the language-specific definitions for explicit words.
+ % Each function has a name bbl.xxx where xxx is the English word.
+ % The language selected here is ENGLISH
+FUNCTION {bbl.and}
+{ "and"}
+
+FUNCTION {bbl.etal}
+{ "et~al." }
+
+FUNCTION {bbl.editors}
+{ "editors" }
+
+FUNCTION {bbl.editor}
+{ "editor" }
+
+FUNCTION {bbl.edby}
+{ "edited by" }
+
+FUNCTION {bbl.edition}
+{ "edition" }
+
+FUNCTION {bbl.volume}
+{ "volume" }
+
+FUNCTION {bbl.of}
+{ "of" }
+
+FUNCTION {bbl.number}
+{ "number" }
+
+FUNCTION {bbl.nr}
+{ "no." }
+
+FUNCTION {bbl.in}
+{ "in" }
+
+FUNCTION {bbl.pages}
+{ "" }
+
+FUNCTION {bbl.page}
+{ "" }
+
+FUNCTION {bbl.chapter}
+{ "chapter" }
+
+FUNCTION {bbl.techrep}
+{ "Technical Report" }
+
+FUNCTION {bbl.mthesis}
+{ "Master's thesis" }
+
+FUNCTION {bbl.phdthesis}
+{ "Ph.D. thesis" }
+
+FUNCTION {bbl.first}
+{ "1st" }
+
+FUNCTION {bbl.second}
+{ "2nd" }
+
+FUNCTION {bbl.third}
+{ "3rd" }
+
+FUNCTION {bbl.fourth}
+{ "4th" }
+
+FUNCTION {bbl.fifth}
+{ "5th" }
+
+FUNCTION {bbl.st}
+{ "st" }
+
+FUNCTION {bbl.nd}
+{ "nd" }
+
+FUNCTION {bbl.rd}
+{ "rd" }
+
+FUNCTION {bbl.th}
+{ "th" }
+
+MACRO {jan} {"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"}
+
+FUNCTION {eng.ord}
+{ duplicate$ "1" swap$ *
+ #-2 #1 substring$ "1" =
+ { bbl.th * }
+ { duplicate$ #-1 #1 substring$
+ duplicate$ "1" =
+ { pop$ bbl.st * }
+ { duplicate$ "2" =
+ { pop$ bbl.nd * }
+ { "3" =
+ { bbl.rd * }
+ { bbl.th * }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+}
+
+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"}
+FUNCTION {bibinfo.check}
+{ swap$
+ duplicate$ missing$
+ {
+ pop$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ pop$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {bibinfo.warn}
+{ swap$
+ duplicate$ missing$
+ {
+ swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
+ ""
+ }
+ { duplicate$ empty$
+ {
+ swap$ "empty " swap$ * " in " * cite$ * warning$
+ }
+ { swap$
+ pop$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.url}
+{ url empty$
+ { "" }
+ { "\urlprefix\url{" url * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+
+STRINGS { bibinfo}
+
+FUNCTION {format.names}
+{ 'bibinfo :=
+ duplicate$ empty$ 'skip$ {
+ 's :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ff~}{vv~}{ll}{, jj}"
+ format.name$
+ bib.name.font
+ bibinfo bibinfo.check
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal emphasize *
+ }
+ {
+ "\&"
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+ } if$
+}
+FUNCTION {format.names.ed}
+{
+ format.names
+}
+FUNCTION {format.key}
+{ empty$
+ { key field.or.null }
+ { "" }
+ if$
+}
+
+FUNCTION {format.authors}
+{ author "author" format.names
+}
+FUNCTION {get.bbl.editor}
+{ editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
+
+FUNCTION {format.editors}
+{ editor "editor" format.names duplicate$ empty$ 'skip$
+ {
+ " " *
+ get.bbl.editor
+ "(" swap$ * ")" *
+ *
+ }
+ if$
+}
+FUNCTION {format.book.pages}
+{ pages "pages" bibinfo.check
+ duplicate$ empty$ 'skip$
+ { " " * bbl.pages * }
+ if$
+}
+FUNCTION {format.isbn}
+{ isbn "isbn" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ new.block
+ "ISBN " swap$ *
+ }
+ if$
+}
+
+FUNCTION {format.issn}
+{ issn "issn" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ new.block
+ "ISSN " swap$ *
+ }
+ if$
+}
+
+FUNCTION {select.language}
+{ duplicate$ empty$
+ 'pop$
+ { language empty$
+ 'skip$
+ { "{\selectlanguage{" language * "}" * swap$ * "}" * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.note}
+{
+ note empty$
+ { "" }
+ { note #1 #1 substring$
+ duplicate$ "{" =
+ 'skip$
+ { output.state mid.sentence =
+ { "l" }
+ { "u" }
+ if$
+ change.case$
+ }
+ if$
+ note #2 global.max$ substring$ * "note" bibinfo.check
+ }
+ if$
+}
+
+FUNCTION {format.title}
+{ title
+ "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ select.language
+ }
+ if$
+}
+FUNCTION {format.full.names}
+{'s :=
+ "" 't :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{vv~}{ll}" format.name$
+ 't :=
+ nameptr #1 >
+ {
+ namesleft #1 >
+ { ", " * t * }
+ {
+ s nameptr "{ll}" format.name$ duplicate$ "others" =
+ { 't := }
+ { pop$ }
+ if$
+ t "others" =
+ {
+ " " * bbl.etal emphasize *
+ }
+ {
+ "\&"
+ space.word * t *
+ }
+ if$
+ }
+ if$
+ }
+ 't
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {author.editor.key.full}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {author.key.full}
+{ author empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { author format.full.names }
+ if$
+}
+
+FUNCTION {editor.key.full}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.full.names }
+ if$
+}
+
+FUNCTION {make.full.names}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.full
+ { type$ "proceedings" =
+ 'editor.key.full
+ 'author.key.full
+ if$
+ }
+ if$
+}
+
+FUNCTION {output.bibitem}
+{ newline$
+ "\bibitem[{" write$
+ label write$
+ ")" make.full.names duplicate$ short.list =
+ { pop$ }
+ { * }
+ if$
+ "}]{" * write$
+ cite$ write$
+ "}" write$
+ newline$
+ ""
+ before.all 'output.state :=
+}
+
+FUNCTION {if.digit}
+{ duplicate$ "0" =
+ swap$ duplicate$ "1" =
+ swap$ duplicate$ "2" =
+ swap$ duplicate$ "3" =
+ swap$ duplicate$ "4" =
+ swap$ duplicate$ "5" =
+ swap$ duplicate$ "6" =
+ swap$ duplicate$ "7" =
+ swap$ duplicate$ "8" =
+ swap$ "9" = or or or or or or or or or
+}
+FUNCTION {n.separate}
+{ 't :=
+ ""
+ #0 'numnames :=
+ { t empty$ not }
+ { t #-1 #1 substring$ if.digit
+ { numnames #1 + 'numnames := }
+ { #0 'numnames := }
+ if$
+ t #-1 #1 substring$ swap$ *
+ t #-2 global.max$ substring$ 't :=
+ numnames #5 =
+ { duplicate$ #1 #2 substring$ swap$
+ #3 global.max$ substring$
+ "\," swap$ * *
+ }
+ 'skip$
+ if$
+ }
+ while$
+}
+FUNCTION {n.dashify}
+{
+ n.separate
+ 't :=
+ ""
+ { t empty$ not }
+ { t #1 #1 substring$ "-" =
+ { t #1 #2 substring$ "--" = not
+ { "--" *
+ t #2 global.max$ substring$ 't :=
+ }
+ { { t #1 #1 substring$ "-" = }
+ { "-" *
+ t #2 global.max$ substring$ 't :=
+ }
+ while$
+ }
+ if$
+ }
+ { t #1 #1 substring$ *
+ t #2 global.max$ substring$ 't :=
+ }
+ if$
+ }
+ while$
+}
+
+FUNCTION {word.in}
+{ bbl.in capitalize
+ " " * }
+
+FUNCTION {format.date}
+{ year "year" bibinfo.check duplicate$ empty$
+ {
+ "empty year in " cite$ * "; set to ????" * warning$
+ pop$ "????"
+ }
+ 'skip$
+ if$
+ extra.label *
+ before.all 'output.state :=
+ " (" swap$ * ")" *
+}
+FUNCTION {format.btitle}
+{ title "title" bibinfo.check
+ duplicate$ empty$ 'skip$
+ {
+ emphasize
+ select.language
+ }
+ if$
+}
+FUNCTION {either.or.check}
+{ empty$
+ 'pop$
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
+ if$
+}
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { bbl.volume volume tie.or.space.prefix
+ "volume" bibinfo.check * *
+ series "series" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ bbl.of space.word * swap$
+ emphasize * }
+ if$
+ "volume and number" number either.or.check
+ }
+ if$
+}
+FUNCTION {format.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { output.state mid.sentence =
+ { bbl.number }
+ { bbl.number capitalize }
+ if$
+ number tie.or.space.prefix "number" bibinfo.check * *
+ series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { bbl.in space.word *
+ series "series" bibinfo.check *
+ }
+ if$
+ }
+ if$
+ }
+ { "" }
+ if$
+}
+FUNCTION {is.num}
+{ chr.to.int$
+ duplicate$ "0" chr.to.int$ < not
+ swap$ "9" chr.to.int$ > not and
+}
+
+FUNCTION {extract.num}
+{ duplicate$ 't :=
+ "" 's :=
+ { t empty$ not }
+ { t #1 #1 substring$
+ t #2 global.max$ substring$ 't :=
+ duplicate$ is.num
+ { s swap$ * 's := }
+ { pop$ "" 't := }
+ if$
+ }
+ while$
+ s empty$
+ 'skip$
+ { pop$ s }
+ if$
+}
+
+FUNCTION {convert.edition}
+{ extract.num "l" change.case$ 's :=
+ s "first" = s "1" = or
+ { bbl.first 't := }
+ { s "second" = s "2" = or
+ { bbl.second 't := }
+ { s "third" = s "3" = or
+ { bbl.third 't := }
+ { s "fourth" = s "4" = or
+ { bbl.fourth 't := }
+ { s "fifth" = s "5" = or
+ { bbl.fifth 't := }
+ { s #1 #1 substring$ is.num
+ { s eng.ord 't := }
+ { edition 't := }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ }
+ if$
+ t
+}
+
+FUNCTION {format.edition}
+{ edition duplicate$ empty$ 'skip$
+ {
+ convert.edition
+ output.state mid.sentence =
+ { "l" }
+ { "t" }
+ if$ change.case$
+ "edition" bibinfo.check
+ " " * bbl.edition *
+ }
+ if$
+}
+INTEGERS { multiresult }
+FUNCTION {multi.page.check}
+{ 't :=
+ #0 'multiresult :=
+ { multiresult not
+ t empty$ not
+ and
+ }
+ { t #1 #1 substring$
+ duplicate$ "-" =
+ swap$ duplicate$ "," =
+ swap$ "+" =
+ or or
+ { #1 'multiresult := }
+ { t #2 global.max$ substring$ 't := }
+ if$
+ }
+ while$
+ multiresult
+}
+FUNCTION {format.pages}
+{ pages duplicate$ empty$ 'skip$
+ { duplicate$ multi.page.check
+ {
+ n.dashify
+ }
+ {
+ }
+ if$
+ "pages" bibinfo.check
+ }
+ if$
+}
+FUNCTION {format.journal.pages}
+{ pages duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$
+ { pop$ pop$ format.pages }
+ {
+ ", " *
+ swap$
+ n.dashify
+ "pages" bibinfo.check
+ *
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.journal.eid}
+{ eid "eid" bibinfo.check
+ duplicate$ empty$ 'pop$
+ { swap$ duplicate$ empty$ 'skip$
+ {
+ ", " *
+ }
+ if$
+ swap$ *
+ }
+ if$
+}
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null
+ duplicate$ empty$ 'skip$
+ {
+ "volume" bibinfo.check
+ }
+ if$
+ bolden
+ number "number" bibinfo.check duplicate$ empty$ 'skip$
+ {
+ swap$ duplicate$ empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ swap$
+ "(" swap$ * ")" *
+ }
+ if$ *
+ eid empty$
+ { format.journal.pages }
+ { format.journal.eid }
+ if$
+}
+
+FUNCTION {format.chapter.pages}
+{ chapter empty$
+ 'format.pages
+ { type empty$
+ { bbl.chapter }
+ { type "l" change.case$
+ "type" bibinfo.check
+ }
+ if$
+ chapter tie.or.space.prefix
+ "chapter" bibinfo.check
+ * *
+ pages empty$
+ 'skip$
+ { ", " * format.pages * }
+ if$
+ }
+ if$
+}
+
+FUNCTION {format.booktitle}
+{
+ booktitle "booktitle" bibinfo.check
+ emphasize
+}
+FUNCTION {format.in.ed.booktitle}
+{ format.booktitle duplicate$ empty$ 'skip$
+ {
+ editor "editor" format.names.ed duplicate$ empty$ 'pop$
+ {
+ get.bbl.editor
+ swap$ "," *
+ " " * swap$ *
+ swap$
+ "," *
+ " " * swap$
+ * }
+ if$
+ word.in swap$ *
+ }
+ if$
+}
+FUNCTION {format.thesis.type}
+{ type duplicate$ empty$
+ 'pop$
+ { swap$ pop$
+ "t" change.case$ "type" bibinfo.check
+ }
+ if$
+}
+FUNCTION {format.tr.number}
+{ number "number" bibinfo.check
+ type duplicate$ empty$
+ { pop$ bbl.techrep }
+ 'skip$
+ if$
+ "type" bibinfo.check
+ swap$ duplicate$ empty$
+ { pop$ "t" change.case$ }
+ { tie.or.space.prefix * * }
+ if$
+}
+FUNCTION {format.article.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.book.crossref}
+{ volume duplicate$ empty$
+ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
+ pop$ word.in
+ }
+ { bbl.volume
+ capitalize
+ swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
+ }
+ if$
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.incoll.inproc.crossref}
+{
+ word.in
+ " \cite{" * crossref * "}" *
+}
+FUNCTION {format.org.or.pub}
+{ 't :=
+ ""
+ address empty$ t empty$ and
+ 'skip$
+ {
+ t empty$
+ { address "address" bibinfo.check *
+ }
+ { t *
+ address empty$
+ 'skip$
+ { ", " * address "address" bibinfo.check * }
+ if$
+ }
+ if$
+ }
+ if$
+}
+FUNCTION {format.publisher.address}
+{ publisher "publisher" bibinfo.warn format.org.or.pub
+}
+
+FUNCTION {format.organization.address}
+{ organization "organization" bibinfo.check format.org.or.pub
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ {
+ journal
+ "journal" bibinfo.check
+ emphasize
+ "journal" output.check
+ add.blank
+ format.vol.num.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ format.issn output
+ new.block
+ format.url output
+ new.block
+ format.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$
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ format.publisher.address output
+ }
+ {
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ format.isbn output
+ format.book.pages output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {booklet}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ address "address" bibinfo.check output
+ format.isbn output
+ format.book.pages output
+ new.block
+ format.url output
+ new.block
+ format.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$
+ format.date "year" output.check
+ date.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
+ format.publisher.address output
+ }
+ {
+ format.chapter.pages "chapter and pages" output.check
+ new.block
+ format.book.crossref output.nonnull
+ }
+ if$
+ format.edition output
+ crossref missing$
+ { format.isbn output }
+ 'skip$
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {incollection}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.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
+ format.publisher.address output
+ format.edition output
+ format.isbn output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.chapter.pages output
+ }
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {inproceedings}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.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
+ new.sentence
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.isbn output
+ format.issn output
+ }
+ { format.incoll.inproc.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {conference} { inproceedings }
+FUNCTION {manual}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ organization address new.block.checkb
+ organization "organization" bibinfo.check output
+ address "address" bibinfo.check output
+ format.edition output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {mastersthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ new.block
+ bbl.mthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {misc}
+{ output.bibitem
+ format.authors output
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title output
+ new.block
+ howpublished "howpublished" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+FUNCTION {phdthesis}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle
+ "title" output.check
+ new.block
+ bbl.phdthesis format.thesis.type output.nonnull
+ school "school" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {proceedings}
+{ output.bibitem
+ format.editors output
+ editor format.key output
+ format.date "year" output.check
+ date.block
+ format.btitle "title" output.check
+ format.bvolume output
+ format.number.series output
+ new.sentence
+ publisher empty$
+ { format.organization.address output }
+ { organization "organization" bibinfo.check output
+ format.publisher.address output
+ }
+ if$
+ format.isbn output
+ format.issn output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {techreport}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title
+ "title" output.check
+ new.block
+ format.tr.number output.nonnull
+ institution "institution" bibinfo.warn output
+ address "address" bibinfo.check output
+ new.block
+ format.url output
+ new.block
+ format.note output
+ fin.entry
+}
+
+FUNCTION {unpublished}
+{ output.bibitem
+ format.authors "author" output.check
+ author format.key output
+ format.date "year" output.check
+ date.block
+ format.title "title" output.check
+ new.block
+ format.url output
+ new.block
+ format.note "note" output.check
+ fin.entry
+}
+
+FUNCTION {default.type} { misc }
+READ
+FUNCTION {sortify}
+{ purify$
+ "l" change.case$
+}
+INTEGERS { len }
+FUNCTION {chop.word}
+{ 's :=
+ 'len :=
+ s #1 len substring$ =
+ { s len #1 + global.max$ substring$ }
+ 's
+ if$
+}
+FUNCTION {format.lab.names}
+{ 's :=
+ "" 't :=
+ s #1 "{vv~}{ll}" format.name$
+ s num.names$ duplicate$
+ #2 >
+ { pop$
+ " " * bbl.etal emphasize *
+ }
+ { #2 <
+ 'skip$
+ { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
+ {
+ " " * bbl.etal emphasize *
+ }
+ { " \& " * 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 {editor.key.label}
+{ editor empty$
+ { key empty$
+ { cite$ #1 #3 substring$ }
+ 'key
+ if$
+ }
+ { editor format.lab.names }
+ if$
+}
+
+FUNCTION {calc.short.authors}
+{ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.key.label
+ { type$ "proceedings" =
+ 'editor.key.label
+ 'author.key.label
+ if$
+ }
+ if$
+ 'short.list :=
+}
+
+FUNCTION {calc.label}
+{ calc.short.authors
+ short.list
+ "("
+ *
+ year duplicate$ empty$
+ { pop$ "????" }
+ 'skip$
+ if$
+ *
+ 'label :=
+}
+
+FUNCTION {sort.format.names}
+{ 's :=
+ #1 'nameptr :=
+ ""
+ s num.names$ 'numnames :=
+ numnames 'namesleft :=
+ { namesleft #0 > }
+ { s nameptr
+ "{ll{ }}{ ff{ }}{ jj{ }}"
+ format.name$ 't :=
+ nameptr #1 >
+ {
+ " " *
+ namesleft #1 = t "others" = and
+ { "zzzzz" * }
+ { t sortify * }
+ if$
+ }
+ { t sortify * }
+ if$
+ nameptr #1 + 'nameptr :=
+ namesleft #1 - 'namesleft :=
+ }
+ while$
+}
+
+FUNCTION {sort.format.title}
+{ 't :=
+ "A " #2
+ "An " #3
+ "The " #4 t chop.word
+ chop.word
+ chop.word
+ sortify
+ #1 global.max$ substring$
+}
+FUNCTION {author.sort}
+{ author empty$
+ { key empty$
+ { "to sort, need author or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {author.editor.sort}
+{ author empty$
+ { editor empty$
+ { key empty$
+ { "to sort, need author, editor, or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+ }
+ { author sort.format.names }
+ if$
+}
+FUNCTION {editor.sort}
+{ editor empty$
+ { key empty$
+ { "to sort, need editor or key in " cite$ * warning$
+ ""
+ }
+ { key sortify }
+ if$
+ }
+ { editor sort.format.names }
+ if$
+}
+FUNCTION {presort}
+{ calc.label
+ label sortify
+ " "
+ *
+ type$ "book" =
+ type$ "inbook" =
+ or
+ 'author.editor.sort
+ { type$ "proceedings" =
+ 'editor.sort
+ 'author.sort
+ if$
+ }
+ if$
+ #1 entry.max$ substring$
+ 'sort.label :=
+ sort.label
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+SORT
+STRINGS { last.label next.extra }
+INTEGERS { last.extra.num number.label }
+FUNCTION {initialize.extra.label.stuff}
+{ #0 int.to.chr$ 'last.label :=
+ "" 'next.extra :=
+ #0 'last.extra.num :=
+ #0 'number.label :=
+}
+FUNCTION {forward.pass}
+{ last.label label =
+ { last.extra.num #1 + 'last.extra.num :=
+ last.extra.num int.to.chr$ 'extra.label :=
+ }
+ { "a" chr.to.int$ 'last.extra.num :=
+ "" 'extra.label :=
+ label 'last.label :=
+ }
+ if$
+ number.label #1 + 'number.label :=
+}
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+ extra.label
+ duplicate$ empty$
+ 'skip$
+ { "{\natexlab{" swap$ * "}}" * }
+ if$
+ 'extra.label :=
+ label extra.label * 'label :=
+}
+EXECUTE {initialize.extra.label.stuff}
+ITERATE {forward.pass}
+REVERSE {reverse.pass}
+FUNCTION {bib.sort.order}
+{ sort.label
+ " "
+ *
+ year field.or.null sortify
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+ITERATE {bib.sort.order}
+SORT
+FUNCTION {begin.bib}
+{ preamble$ empty$
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+ "\begin{thebibliography}{" number.label int.to.str$ * "}" *
+ write$ newline$
+ "\providecommand{\natexlab}[1]{#1}"
+ write$ newline$
+ "\providecommand{\url}[1]{\texttt{#1}}"
+ write$ newline$
+ "\providecommand{\urlprefix}{URL }"
+ write$ newline$
+ "\providecommand{\selectlanguage}[1]{\relax}"
+ write$ newline$
+}
+EXECUTE {begin.bib}
+EXECUTE {init.state.consts}
+ITERATE {call.type$}
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+EXECUTE {end.bib}
+%% End of customized bst file
+%%
+%% End of file `cc2.bst'.
+%CC2BST>
+%</cc2bst>
+% \end{macrocode}
+%
+% \else% bst
+% The text of this file is omitted.
+% \fi% bst
+%
+% \def\filename{cc.bst}
+% \def\fileversion{None}
+% \def\filedate{1996/02/06}
+% \CodelinePrefix{o}
+%
+% \section{Source of \filename (\fileprefix)}
+%
+% This file (\file{\filename}) has version number \fileversion, last
+% revised \filedate.
+% \ifoldbst% The old bibliography style is normally not printed.
+% \hfuzz=\oddsidemargin
+% \def\MacroFont{\fontencoding\encodingdefault
+% \fontfamily\ttdefault
+% \fontseries\mddefault
+% \fontshape\updefault
+% \tiny}
+% \let\AltMacroFont\MacroFont
+% \renewcommand{\theCodelineNo}{\rmfamily\tiny b\arabic{CodelineNo}}%
+% \begin{macrocode}
+%<*ccbst>
+%<<CCBST>
+% File name: cc.bst
+%
+% cc.bst style file for BibTeX.
+% February 6, 1996
+% This style file provides the following citation facilities:
+% Usage in Tex Output:
+% file:
+% \cite Cook (1990)
+% \citeauthor Cook
+% \citeyear 1990
+% \citemul Cook (1990, 1991a, 1991b)
+% \shortcite Cook 1990
+% \parencite (Cook 1990)
+% \nocite
+
+% It was prepared by modifying previous style files.
+% Here are acknowledgements:
+%> BibTeX `named' style file for BibTeX version 0.99c, LaTeX version 2.09
+%> Place it in a file called named.bst in the BibTeX search path. (Placing it
+%> in the same directory as the LaTeX document should also work.)
+%> Support for named citations is provided by named.sty
+
+%> This version was made by modifying the master file made by
+%> Oren Patashnik (PATASHNIK@SCORE.STANFORD.EDU)
+
+%> Copyright (C) 1985, all rights reserved.
+%> Modifications Copyright 1988, Peter F. Patel-Schneider
+%> Copying of this file is authorized only if either
+%> (1) you make absolutely no changes to your copy, including name, or
+%> (2) if you do make changes, you name it something other than
+%> btxbst.doc, plain.bst, unsrt.bst, alpha.bst, and abbrv.bst.
+%> This restriction helps ensure that all standard styles are identical.
+
+%> There are undoubtably bugs in this style. If you make bug fixes,
+%> improvements, etc. please let me know. My e-mail address is:
+%> pfps@research.att.com
+
+ENTRY
+ { address
+ author
+ booktitle
+ chapter
+ edition
+ editor
+ howpublished
+ institution
+ journal
+ key
+ month
+ note
+ number
+ organization
+ pages
+ publisher
+ school
+ series
+ title
+ type
+ volume
+ year
+ }
+ {}
+ { label extra.label sort.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 { mode s t }
+
+%FUNCTION {message}
+%{
+% duplicate$ top$
+%}
+
+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$
+ label write$
+ "]{" 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 {semi.block}
+{ %%%%"semi.block" top$
+ mid.sentence 'output.state :=
+}
+
+%FUNCTION {semi.block}
+%{ output.state mid.sentence =
+% '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.semiblock.checkb}
+{ empty$
+ swap$ empty$
+ and
+ 'skip$
+ 'semi.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$ "" }
+ { "{\sl " swap$ * "}" * }
+ if$
+}
+
+FUNCTION {bold}
+{ duplicate$ empty$
+ { pop$ "" }
+ { "{\bf " swap$ * "}" * }
+ if$
+}
+
+INTEGERS { nameptr namesleft numnames }
+
+FUNCTION {format.names}
+{ 's :=
+ #1 'nameptr :=
+ s num.names$ 'numnames :=
+ "{\sc " *
+ 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$
+ { "" }
+ { "ed.\ "
+ editor format.names *
+ }
+ if$
+}
+
+FUNCTION {format.editors.reverse}
+{ editor empty$
+ { "" }
+ { editor format.names
+ ", ed." *
+ }
+ if$
+}
+
+FUNCTION {format.editors.simple}
+{ editor empty$
+ { "" }
+ { editor format.names }
+ 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 extra.label * }
+% { month " " * year * extra.label *}
+% if$
+% }
+ { year extra.label * }
+ 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$
+% { "" }
+% { series empty$
+% 'skip$
+% {series emphasize ",\ vol.\ " * volume *}
+% if$
+% "volume and number" number either.or.check
+% }
+% if$
+%}
+%FUNCTION {format.bvolume}
+%{ volume empty$
+% { "" }
+% { series empty$
+% 'skip$
+% {series emphasize "\ " * volume bold *}
+% if$
+% "volume and number" number either.or.check
+% }
+% if$
+%}
+FUNCTION {format.bvolume}
+{ volume empty$
+ { "" }
+ { "vol." 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.number.series}
+{ volume empty$
+ { number empty$
+ { series field.or.null }
+ { series empty$
+ { "there's a number but no series in " cite$ * warning$ }
+ { series "\ " * number bold * }
+ 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 n.dashify }
+ { "p." pages tie.or.space.connect }
+ if$
+ }
+ if$
+}
+
+
+FUNCTION {format.vol.num.year}
+{ volume field.or.null bold
+ number empty$
+ 'skip$
+ { "(" number * ")\," * *
+ volume empty$
+ { "there's a number but no volume in " cite$ * warning$ }
+ 'skip$
+ if$
+ }
+ if$
+ year empty$
+ 'skip$
+ { "\ (" * format.date * ")" * }
+ if$
+}
+
+
+FUNCTION {format.vol.num.pages}
+{ volume field.or.null bold
+ 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 }
+ { ",\, pp.\, " * 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 " booktitle emphasize * ", " * format.editors * }
+ 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.publisher.address}
+{ address empty$
+ 'publisher
+ { publisher ", " * address * }
+ 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$
+ " \shortcite{" * 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$
+ " \shortcite{" * 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$
+ " \shortcite{" * crossref * "}" *
+}
+
+FUNCTION {article}
+{ output.bibitem
+ format.authors "author" output.check
+ semi.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { journal emphasize "\ " * format.vol.num.year * "journal" output.check
+ format.pages output
+ }
+ { format.article.crossref output.nonnull
+ format.pages output
+ }
+ if$
+ new.block
+ note output
+ fin.entry
+}
+
+FUNCTION {book}
+{ output.bibitem
+ author empty$
+ { format.editors.simple "author and editor" output.check }
+ { format.authors output.nonnull
+ crossref missing$
+ { "author and editor" editor either.or.check }
+ 'skip$
+ if$
+ }
+ if$
+ semi.block
+ format.btitle "title" output.check
+ crossref missing$
+ { format.bvolume output
+ new.block
+ format.number.series output
+ new.sentence
+ format.publisher.address "publisher" 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 {booklet}
+{ output.bibitem
+ format.authors output
+ semi.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$
+ semi.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
+ format.publisher.address "publisher" output.check
+ }
+ { 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
+ semi.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
+ format.publisher.address "publisher" output.check
+ 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
+ semi.block
+ format.title "title" output.check
+ new.block
+ crossref missing$
+ { format.in.ed.booktitle "booktitle" output.check
+ format.bvolume output
+ format.number.series output
+ address empty$
+ { organization publisher new.sentence.checkb
+ organization output
+ publisher output
+ format.date output
+ }
+ { address output.nonnull
+ format.date output
+ organization output
+ publisher output
+ }
+ if$
+ format.pages output
+ }
+ { 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$
+ semi.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
+ semi.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 "author" output.check
+ title howpublished new.semiblock.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
+ semi.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 }
+ { format.editors.reverse output.nonnull }
+ if$
+ semi.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
+ semi.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
+ semi.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"}
+
+
+
+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$
+}
+
+INTEGERS { et.al.char.used }
+
+FUNCTION {initialize.et.al.char.used}
+{ #0 'et.al.char.used :=
+}
+
+EXECUTE {initialize.et.al.char.used}
+
+FUNCTION {format.lab.names}
+{
+ 's :=
+ s num.names$ 'numnames :=
+
+ mode "cite" =
+ { numnames #1 =
+ { s #1 "{vv }{ll}" format.name$ }
+ { numnames #2 =
+ { s #1 "{vv }{ll }\& " format.name$ s #2 "{vv }{ll}" format.name$ * }
+ { s #1 "{vv }{ll }\bgroup \em et al.\egroup " format.name$ }
+ if$
+ }
+ if$
+ }
+ { numnames #1 =
+ { s #1 "{ll}" format.name$ }
+ { numnames #2 =
+ { s #1 "{ll }\& " format.name$ s #2 "{ll}" format.name$ * }
+ { s #1 "{ll }\bgroup \em et al.\egroup " 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.label}
+{
+ "cite" 'mode :=
+ 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$
+
+ "\protect\citeauthoryear{" swap$ * "}{" *
+ year field.or.null purify$ * % CHANGED - pfps - 15 Feb 1989
+ 'label :=
+
+ "sort" 'mode :=
+ 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$
+ " " *
+ year field.or.null purify$ *
+ sortify 'sort.label :=
+}
+
+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}
+
+{ calc.label
+ sort.label
+
+ " "
+ *
+ 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$
+ *
+ " "
+ *
+ title field.or.null
+ sort.format.title
+ *
+ #1 entry.max$ substring$
+ 'sort.key$ :=
+}
+
+ITERATE {presort}
+
+SORT
+
+STRINGS { longest.label last.sort.label next.extra }
+
+INTEGERS { longest.label.width last.extra.num }
+
+FUNCTION {initialize.longest.label}
+{ "" 'longest.label :=
+ #0 int.to.chr$ 'last.sort.label :=
+ "" 'next.extra :=
+ #0 'longest.label.width :=
+ #0 'last.extra.num :=
+}
+
+FUNCTION {forward.pass}
+{ last.sort.label sort.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 :=
+ sort.label 'last.sort.label :=
+ }
+ if$
+}
+
+FUNCTION {reverse.pass}
+{ next.extra "b" =
+ { "a" 'extra.label := }
+ 'skip$
+ if$
+ label extra.label * "}" * 'label := % CHANGED - pfps 15 Feb 1989
+ label width$ longest.label.width >
+ { label 'longest.label :=
+ label width$ 'longest.label.width :=
+ }
+ 'skip$
+ if$
+ extra.label 'next.extra :=
+}
+
+EXECUTE {initialize.longest.label}
+
+ITERATE {forward.pass}
+
+REVERSE {reverse.pass}
+
+FUNCTION {begin.bib}
+
+{ et.al.char.used
+ { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
+ 'skip$
+ if$
+ preamble$ empty$
+
+ 'skip$
+ { preamble$ write$ newline$ }
+ if$
+
+ "\begin{thebibliography}{}\small" write$ newline$
+
+}
+
+EXECUTE {begin.bib}
+
+EXECUTE {init.state.consts}
+
+ITERATE {call.type$}
+
+FUNCTION {end.bib}
+{ newline$
+ "\end{thebibliography}" write$ newline$
+}
+
+EXECUTE {end.bib}
+%CCBST>
+%</ccbst>
+% \end{macrocode}
+% \else% oldbst
+% The text of this file is omitted.
+% \fi% oldbst
+%
+% \GetFileInfo{relabel.sty}
+% \CodelinePrefix{R}
+%
+% \cleardoublepage
+% \setcounter{IndexColumns}{2}%
+% \addcontentsline{toc}{section}{Index}\PrintIndex
+% \addcontentsline{toc}{section}{Change History}\PrintChanges
+% \ifx\tableofcontents\relax\else
+% \clearpage
+% \expandafter\ifodd\csname c@page\endcsname~\clearpage\fi
+% \csname @ifundefined\endcsname{multicols}
+% {{\scriptsize\tableofcontents}}
+% {\begin{multicols}{2}
+% \scriptsize
+% \tableofcontents
+% \end{multicols}
+% \global\let\tableofcontents\relax
+% }
+% \fi
+%
+% \iffalse meta-comment
+%<*driver>
+%%% Local Variables:
+%%% mode: latex
+%%% TeX-master: "cc"
+%%% End:
+%</driver>
+% \fi
diff --git a/macros/latex/contrib/computational-complexity/cc.ins b/macros/latex/contrib/computational-complexity/cc.ins
new file mode 100644
index 0000000000..21f8810ce8
--- /dev/null
+++ b/macros/latex/contrib/computational-complexity/cc.ins
@@ -0,0 +1,104 @@
+%%
+%% This file will generate fast loadable files and documentation
+%% driver files from the doc files in this package when run through
+%% LaTeX or TeX.
+%%
+%% Copyright 2000-2008
+%% Michael Nüsken, Joachim von zur Gathen, computational complexity
+%%
+%% This file is part of the computational complexity (cc) package
+%% --------------------------------------------------------------
+%%
+%% It may be distributed under the conditions of the LaTeX Project Public
+%% License, either version 1.2 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.
+%%
+%% In particular, NO PERMISSION is granted to modify the contents of this
+%% file since it contains the legal notices that are placed in the files
+%% it generates.
+%%
+%% The list of all files belonging to the LaTeX base distribution is
+%% given in the file `manifest.txt'. See also `legal.txt' for additional
+%% information.
+%%
+%%
+%%
+%%
+%% --------------- start of docstrip commands ------------------
+%%
+
+\input docstrip
+
+\preamble
+
+Copyright 2000-\the\year
+Michael N"usken, Joachim von zur Gathen, computational complexity
+
+IMPORTANT NOTICE:
+
+This is a generated file. It is part of the
+ computational complexity macro package
+derived from cc.dtx by 'tex cc.ins'.
+See cc.dtx for license information.
+
+\endpreamble
+
+\keepsilent
+%%\usedir{tex/latex/cc}
+
+\askforoverwritefalse
+\generate{% Normal tex or style files
+ \file{cc.cls}{\from{cc.dtx}{cccls,chartab}}
+ \file{ccaux.sty}{\from{cc.dtx}{ccaux,chartab}}
+ \file{cc-cls.sty}{\from{cc.dtx}{ccsty,chartab}}
+ \file{cclayout.sty}{\from{cc.dtx}{cclayout,chartab}}
+ \file{ccreltx.sty}{\from{cc.dtx}{ccreltx,chartab}}
+ \file{ccref.sty}{\from{cc.dtx}{ccref,chartab}}
+ \file{ccthm.sty}{\from{cc.dtx}{ccthm,chartab}}
+ \file{ccproof.sty}{\from{cc.dtx}{ccproof,chartab}}
+ \file{ccalgo.sty}{\from{cc.dtx}{ccalgo,chartab}}
+ \file{cc2cite.sty}{\from{cc.dtx}{cc2cite,chartab}}
+ \file{cccite.sty}{\from{cc.dtx}{cccite,chartab}}
+ \file{ccdbs.sty}{\from{cc.dtx}{ccdbs,chartab}}
+ \file{thcc.sty}{\from{cc.dtx}{thcc,chartab}}
+ \file{relabel.sty}{\from{cc.dtx}{relabel,chartab}}
+ \file{ccqed.sty}{\from{cc.dtx}{ccqed,chartab}}
+ \file{ccquickref.tex}{\from{cc.dtx}{quickref,chartab}}
+ \file{cc2.dbj}{\from{cc.dtx}{cc2dbj,chartab}}
+}
+
+\generate{% Special files without preamble or postamble
+ \nopostamble
+ \nopreamble
+ \file{cctemplate.tex}{\from{cc.dtx}{cctemplate}}
+ \file{cc-portability-frame.tex}{\from{cc.dtx}{ccportabilityframe}}
+ \file{cc2.bst}{\from{cc.dtx}{cc2bst}}
+ \file{cc.bst}{\from{cc.dtx}{ccbst}}% old version
+ }
+
+\generate{% Style files for adopting cc to other classes
+ \file{cc4apjrnl.sty}{\from{cc.dtx}{cc4apjrnl,chartab}}
+ \file{cc4amsart.sty}{\from{cc.dtx}{cc4amsart,chartab}}
+ \file{cc4svjour.sty}{\from{cc.dtx}{cc4svjour,chartab}}
+ \file{cc4llncs.sty}{\from{cc.dtx}{cc4llncs,chartab}}
+ \file{cc4siamltex.sty}{\from{cc.dtx}{cc4siamltex,chartab}}
+ \file{cc4jT.sty}{\from{cc.dtx}{cc4jT,chartab}}
+ \file{cc4elsart.sty}{\from{cc.dtx}{cc4elsart,chartab}}
+ }
+
+\ifToplevel{
+\Msg{You may call: tex cc2.dbj to produce cc2.bst from scratch}
+\Msg{***********************************************************}
+\Msg{*}
+\Msg{* To produce the documentation run the files ending with}
+\Msg{* `.dtx' through LaTeX2e.}
+\Msg{*}
+\Msg{* Happy TeXing}
+\Msg{***********************************************************}
+}
+
+\endbatchfile
+
diff --git a/macros/latex/contrib/computational-complexity/cc.pdf b/macros/latex/contrib/computational-complexity/cc.pdf
new file mode 100644
index 0000000000..2b27ef1cbf
--- /dev/null
+++ b/macros/latex/contrib/computational-complexity/cc.pdf
Binary files differ
diff --git a/macros/latex/contrib/computational-complexity/cctemplate.tex b/macros/latex/contrib/computational-complexity/cctemplate.tex
new file mode 100644
index 0000000000..aac481ef5e
--- /dev/null
+++ b/macros/latex/contrib/computational-complexity/cctemplate.tex
@@ -0,0 +1,55 @@
+%%% Template (2011/07/27) for an article using cc
+\begin{filecontents*}{\jobname.bib}
+ %% Insert your bibliography file here
+\end{filecontents*}
+\begin{filecontents}{\jobname.bbl}
+ %% Insert your bbl file here if you do not have a bibliography file
+\end{filecontents}
+
+\documentclass{cc}
+
+%%\ccsps{}
+
+%%% personal macros and packages
+%%% end of personal macros and packages
+
+\contact{}% Insert contact email address here.
+\submitted{}% Insert the date on which you made the original
+ % submission of your paper to computational complexity,
+ % in the format \submitted{8 August 2008}.
+\title{}% Insert title here. (Use \\ to split lines.)
+%%\titlehead{}% If necessary insert running head title here.
+\author{}% Insert author list here. (Each author must be given
+ % including his/her current address, email and possibly
+ % homepage. Lines are seperated by \\, different authors
+ % are separated by \and .)
+%%\authorhead{}% If necessary insert running head authors here.
+%%\authorlist{}% If necessary insert title author list here.
+
+\begin{abstract}
+ %% Insert abstract here.
+\end{abstract}
+
+\begin{keywords}
+ %% Insert keywords here.
+\end{keywords}
+
+\begin{subject}
+ %% Insert subject classification here.
+\end{subject}
+
+\begin{document}
+
+%%% Insert your article text here.
+
+\begin{acknowledge}
+ %% Insert your acknowledgments here.
+\end{acknowledge}
+%% \noacknowledge% This command must be here if there are no
+ % acknowledgements.
+
+\bibliography{cc-journals,\jobname}% Put your bibliography into the above
+ % filecontents environment!
+
+\end{document}
+