From e0c6872cf40896c7be36b11dcc744620f10adf1d Mon Sep 17 00:00:00 2001 From: Norbert Preining Date: Mon, 2 Sep 2019 13:46:59 +0900 Subject: Initial commit --- .../latex/contrib/computational-complexity/README | 13 + .../computational-complexity/cc-cls-inline.tex | 7772 +++++++++++ .../computational-complexity/cc-journals.bib | 1065 ++ .../latex/contrib/computational-complexity/cc.dtx | 12719 +++++++++++++++++++ .../latex/contrib/computational-complexity/cc.ins | 104 + .../latex/contrib/computational-complexity/cc.pdf | Bin 0 -> 792226 bytes .../computational-complexity/cctemplate.tex | 55 + 7 files changed, 21728 insertions(+) create mode 100644 macros/latex/contrib/computational-complexity/README create mode 100644 macros/latex/contrib/computational-complexity/cc-cls-inline.tex create mode 100644 macros/latex/contrib/computational-complexity/cc-journals.bib create mode 100644 macros/latex/contrib/computational-complexity/cc.dtx create mode 100644 macros/latex/contrib/computational-complexity/cc.ins create mode 100644 macros/latex/contrib/computational-complexity/cc.pdf create mode 100644 macros/latex/contrib/computational-complexity/cctemplate.tex (limited to 'macros/latex/contrib/computational-complexity') 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 , 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 +% +% \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 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 . +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, . +% +% Current maintainer: Michael Nüsken, . +% +% 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 +% +% \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} +% +%<*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} + +% +% 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 +% +% \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} +% +% +% \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!}}% + } +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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 +% +% \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} +% +% \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} +% +% \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} +% +% \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} + +% +% \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 +% +% \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} +% +% \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}} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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} +% +% \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> +%< +%% 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> +% +% \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> +%< +%% +%% 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> +% +% \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> +%< +% 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> +% +% \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: +% +% \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 Binary files /dev/null and b/macros/latex/contrib/computational-complexity/cc.pdf 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} + -- cgit v1.2.3