commit f550afc2aed73937cbe0ff74b30f7cc0b068033a Author: Mike Perry mikeperry-git@torproject.org Date: Thu Apr 30 15:09:40 2015 -0700
Inital LaTex import of Georg's sections. --- position-papers/HTTP3/HTTP3.bbl | 60 +++ position-papers/HTTP3/HTTP3.tex | 128 +++++ position-papers/HTTP3/llncs.cls | 1016 ++++++++++++++++++++++++++++++++++++++ position-papers/HTTP3/usenix.sty | 97 ++++ 4 files changed, 1301 insertions(+)
diff --git a/position-papers/HTTP3/HTTP3.bbl b/position-papers/HTTP3/HTTP3.bbl new file mode 100644 index 0000000..feb7b6f --- /dev/null +++ b/position-papers/HTTP3/HTTP3.bbl @@ -0,0 +1,60 @@ +\begin{thebibliography}{10} + +\bibitem{web-send} +Tyler Close, Rajiv Makhijani, Mark Seaborn, Kenton Varda, Johan Apelqvist, + Claes Nilsson, and Mike Hanson. +\newblock {Web Introducer}. +\newblock \url{http://web-send.org/introducer/%7D. + +\bibitem{target} +Charles Duhigg. +\newblock {How Companies Learn Your Secrets}. +\newblock + \url{https://www.nytimes.com/2012/02/19/magazine/shopping-habits.html?pagewa% +nted=9}. + +\bibitem{panopticlick} +Peter Eckersley. +\newblock How unique is your web browser? +\newblock In {\em Proceedings of the 10th international conference on Privacy + enhancing technologies}, PETS'10, pages 1--18, Berlin, Heidelberg, 2010. + Springer-Verlag. + +\bibitem{DNT-adoption} +Alex Fowler. +\newblock {Mozilla Led Effort for DNT Finds Broad Support}. +\newblock + \url{https://blog.mozilla.org/privacy/2012/02/23/mozilla-led-effort-for-dnt-% +finds-broad-support/}. + +\bibitem{safecache} +Collin Jackson and Dan Boneh. +\newblock Protecting browser state from web privacy attacks. +\newblock In {\em In Proceedings of the International World Wide Web + Conference}, pages 737--744, 2006. + +\bibitem{DNT-draft} +J.~Mayer, A.~Narayanan, and S.~Stamm. +\newblock {Do Not Track: A Universal Third-Party Web Tracking Opt Out}. +\newblock \url{https://tools.ietf.org/html/draft-mayer-do-not-track-00%7D. + +\bibitem{fourthparty} +Jonathan~R. Mayer and John~C. Mitchell. +\newblock {Third-Party Web Tracking: Policy and Technology}. +\newblock \url{https://www.stanford.edu/~jmayer/papers/trackingsurvey12.pdf%7D. + +\bibitem{Persona} +Mozilla~Developer Network. +\newblock {Persona}. +\newblock \url{https://developer.mozilla.org/en-US/docs/persona%7D. + +\bibitem{torbrowser} +Mike Perry. +\newblock {The Design and Implementation of the Tor Browser}. +\newblock \url{https://www.torproject.org/projects/torbrowser/design/%7D. + +\bibitem{thirdparty} +Dan Witte. +\newblock \url{https://wiki.mozilla.org/Thirdparty%7D. + +\end{thebibliography} diff --git a/position-papers/HTTP3/HTTP3.tex b/position-papers/HTTP3/HTTP3.tex new file mode 100644 index 0000000..d9f2ab0 --- /dev/null +++ b/position-papers/HTTP3/HTTP3.tex @@ -0,0 +1,128 @@ +%\documentclass{llncs} +\documentclass[letterpaper,11pt]{llncs} +%\documentclass{article} % llncs + +\usepackage{usenix} +\usepackage{url} +\usepackage{amsmath} +\usepackage{epsfig} +\usepackage{epsf} +\usepackage{listings} + +%\setlength{\textwidth}{6in} +%\setlength{\textheight}{8.4in} +%\setlength{\topmargin}{.5cm} +%\setlength{\oddsidemargin}{1cm} +%\setlength{\evensidemargin}{1cm} + +\begin{document} + +\title{The Future of HTTP and Anonymity on the Internet} + +\author{Georg Koppen \ The Tor Project, Inc \ georg@torproject.org} +\author{Mike Perry \ The Tor Project, Inc \ mikeperry@torproject.org} + +%\institute{The Internet} + +\maketitle +\pagestyle{plain} + +\begin{abstract} + + +\end{abstract} + + +\section{Introduction} + +% XXX: Describe our organization? The Tor Project, Inc is a non-profit... + +% XXX: In this position paper, we describe the current and potential issues with + +Dangers and opportunities with resepect to browsing the Internet anonymously are +often tied to the browser itself and not its underlying transport protocols: +canvas fingerprinting, plugin enumeration and linking users via the DOM storage +are just a few of the means the browser offers for trying to single users out. +And even things like cookies and referrers, although belonging strictly speaking +to HTTP, the transport protocol powering the web, are usually seen in the +context of the browser itself as its additional policies shape the particular +tracking potential of these and other transport related features. +This is not much different for features in HTTP/2 although, compared to +HTTP/1.1, it has a growing list of tracking risks that should be addressed in +the specification itself. We discuss some of them below proposing ways to take +these and other risks into account in future HTTP specifications. + +Apart from the dangers we just hinted at, beginning with HTTP/2 opportunities +emerge as well: Using HTTP/2's flow control could make it easier to defend +against adversaries sniffing a user's encrypted traffic and trying to extract +information out of it by means of website traffic fingerprinting. We discuss +current limitations and potential improvements for HTTP/3. + +\section{A Short Tracking Guide(1)} + + +If we are talking about tracking on the Internet then we mainly have third-party +tracking in mind. In this scenario the attacker has basically two mechanisms +available: identifier based tracking (e.g. using cookies or cache cookies) and +fingerprinting a user's device or environment. + +Additionally, we may encounter powerful parties that see a lot of a user's +traffic due to being in a privileged position (e.g. search engines). They don't +necessarily need to bother with third party tracking and would still be able to +learn a lot of a user's details by correlating traffic which is endangering her +anonymity. + +The defenses we develop in Tor Browser are: + +1) Binding identifiers to the URL bar domain. This is retaining functionality +while preventing cross-origin identifier linkability: saving third party +identifiers (e.g. via DOM storage) in a URL bar domain context does not make +them available in a different URL bar domain context. +2) Making users as uniform as possible while not breaking functionality. +3) Providing a "New Identity" button that is clearing all browser state and +giving the user a clean, new session. + + +\subsection{User Tracking with HTTP} + +\subsection{Re-Using Connections} +Coalescing connections might allow tracking users across origins just by means +of HTTP. Together with a long keep-alive this might make it easy to correlate a +lot of cross-domain traffic of a privacy conscious user even if she has +JavaScript and third-party cookies disabled. Granted, having this feature in +HTTP/2 is a big deal especially with respect to CDNs. But still we think +allowing implementers to provide means to mitigate the issue directly in the +specification seems worthwhile to do. This does not imply avoiding coalescing +connections in the first place. Not at all. One could think about proposing a +middle ground safe-guarding privacy while still providing advantages speed- and +resource-wise: connections should not be reused across different URL bar +domains. + +\subsection{Timing Side-Channels} + +PING and SETTINGS frames are acknowledged immediately by the client which might +give servers the option to collect information about a client via timing +side-channels. It is true, there are other means an attacker could use for the +same purpose but they are either visible in the browser UI or users can disable +them. As a countermeasure the specification could at least allow jitter in some +cases (PING frames come to mind). If that is not an option one could specify +that a client may close the connection to prevent timing side-channel attacks. + + +\section{A Short Website Traffic Fingerprinting Guide} + + +\subsection{Defending against Website Traffic Fingerprinting with HTTP} + +(1) For a detailed explanation including a theroretical background see: +https://www.torproject.org/projects/torbrowser/design/. + +\section{Conclusions} + + +\bibliographystyle{plain} \bibliography{W3C-DNT} + +\clearpage +\appendix + +\end{document} diff --git a/position-papers/HTTP3/llncs.cls b/position-papers/HTTP3/llncs.cls new file mode 100644 index 0000000..0308e57 --- /dev/null +++ b/position-papers/HTTP3/llncs.cls @@ -0,0 +1,1016 @@ +% LLNCS DOCUMENT CLASS -- version 2.8 +% for LaTeX2e +% +\NeedsTeXFormat{LaTeX2e}[1995/12/01] +\ProvidesClass{llncs}[2000/05/16 v2.8 +^^JLaTeX document class for Lecture Notes in Computer Science] +% Options +\let\if@envcntreset\iffalse +\DeclareOption{envcountreset}{\let\if@envcntreset\iftrue} +\DeclareOption{citeauthoryear}{\let\citeauthoryear=Y} +\DeclareOption{oribibl}{\let\oribibl=Y} +\let\if@custvec\iftrue +\DeclareOption{orivec}{\let\if@custvec\iffalse} +\let\if@envcntsame\iffalse +\DeclareOption{envcountsame}{\let\if@envcntsame\iftrue} +\let\if@envcntsect\iffalse +\DeclareOption{envcountsect}{\let\if@envcntsect\iftrue} +\let\if@runhead\iffalse +\DeclareOption{runningheads}{\let\if@runhead\iftrue} + +\let\if@openbib\iffalse +\DeclareOption{openbib}{\let\if@openbib\iftrue} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} + +\ProcessOptions + +\LoadClass[twoside]{article} +\RequirePackage{multicol} % needed for the list of participants, index + +\setlength{\textwidth}{12.2cm} +\setlength{\textheight}{19.3cm} + +% Ragged bottom for the actual page +\def\thisbottomragged{\def@textbottom{\vskip\z@ plus.0001fil +\global\let@textbottom\relax}} + +\renewcommand\small{% + @setfontsize\small@ixpt{11}% + \abovedisplayskip 8.5\p@ @plus3\p@ @minus4\p@ + \abovedisplayshortskip \z@ @plus2\p@ + \belowdisplayshortskip 4\p@ @plus2\p@ @minus2\p@ + \def@listi{\leftmargin\leftmargini + \parsep 0\p@ @plus1\p@ @minus\p@ + \topsep 8\p@ @plus2\p@ @minus4\p@ + \itemsep0\p@}% + \belowdisplayskip \abovedisplayskip +} + +\frenchspacing +\widowpenalty=10000 +\clubpenalty=10000 + +\setlength\oddsidemargin {63\p@} +\setlength\evensidemargin {63\p@} +\setlength\marginparwidth {90\p@} + +\setlength\headsep {16\p@} + +\setlength\footnotesep{7.7\p@} +\setlength\textfloatsep{8mm@plus 2\p@ @minus 4\p@} +\setlength\intextsep {8mm@plus 2\p@ @minus 2\p@} + +\setcounter{secnumdepth}{2} + +\newcounter {chapter} +\renewcommand\thechapter {@arabic\c@chapter} + +\newif\if@mainmatter @mainmattertrue +\newcommand\frontmatter{\cleardoublepage + @mainmatterfalse\pagenumbering{Roman}} +\newcommand\mainmatter{\cleardoublepage + @mainmattertrue\pagenumbering{arabic}} +\newcommand\backmatter{\if@openright\cleardoublepage\else\clearpage\fi + @mainmatterfalse} + +\renewcommand\part{\cleardoublepage + \thispagestyle{empty}% + \if@twocolumn + \onecolumn + @tempswatrue + \else + @tempswafalse + \fi + \null\vfil + \secdef@part@spart} + +\def@part[#1]#2{% + \ifnum \c@secnumdepth >-2\relax + \refstepcounter{part}% + \addcontentsline{toc}{part}{\thepart\hspace{1em}#1}% + \else + \addcontentsline{toc}{part}{#1}% + \fi + \markboth{}{}% + {\centering + \interlinepenalty @M + \normalfont + \ifnum \c@secnumdepth >-2\relax + \huge\bfseries \partname~\thepart + \par + \vskip 20\p@ + \fi + \Huge \bfseries #2\par}% + @endpart} +\def@spart#1{% + {\centering + \interlinepenalty @M + \normalfont + \Huge \bfseries #1\par}% + @endpart} +\def@endpart{\vfil\newpage + \if@twoside + \null + \thispagestyle{empty}% + \newpage + \fi + \if@tempswa + \twocolumn + \fi} + +\newcommand\chapter{\clearpage + \thispagestyle{empty}% + \global@topnum\z@ + @afterindentfalse + \secdef@chapter@schapter} +\def@chapter[#1]#2{\ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \refstepcounter{chapter}% + \typeout{@chapapp\space\thechapter.}% + \addcontentsline{toc}{chapter}% + {\protect\numberline{\thechapter}#1}% + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \else + \addcontentsline{toc}{chapter}{#1}% + \fi + \chaptermark{#1}% + \addtocontents{lof}{\protect\addvspace{10\p@}}% + \addtocontents{lot}{\protect\addvspace{10\p@}}% + \if@twocolumn + @topnewpage[@makechapterhead{#2}]% + \else + @makechapterhead{#2}% + @afterheading + \fi} +\def@makechapterhead#1{% +% \vspace*{50\p@}% + {\centering + \ifnum \c@secnumdepth >\m@ne + \if@mainmatter + \large\bfseries @chapapp{} \thechapter + \par\nobreak + \vskip 20\p@ + \fi + \fi + \interlinepenalty@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} +\def@schapter#1{\if@twocolumn + @topnewpage[@makeschapterhead{#1}]% + \else + @makeschapterhead{#1}% + @afterheading + \fi} +\def@makeschapterhead#1{% +% \vspace*{50\p@}% + {\centering + \normalfont + \interlinepenalty@M + \Large \bfseries #1\par\nobreak + \vskip 40\p@ + }} + +\renewcommand\section{@startsection{section}{1}{\z@}% + {-18\p@ @plus -4\p@ @minus -4\p@}% + {12\p@ @plus 4\p@ @minus 4\p@}% + {\normalfont\large\bfseries\boldmath + \rightskip=\z@ @plus 8em\pretolerance=10000 }} +\renewcommand\subsection{@startsection{subsection}{2}{\z@}% + {-18\p@ @plus -4\p@ @minus -4\p@}% + {8\p@ @plus 4\p@ @minus 4\p@}% + {\normalfont\normalsize\bfseries\boldmath + \rightskip=\z@ @plus 8em\pretolerance=10000 }} +\renewcommand\subsubsection{@startsection{subsubsection}{3}{\z@}% + {-18\p@ @plus -4\p@ @minus -4\p@}% + {-0.5em @plus -0.22em @minus -0.1em}% + {\normalfont\normalsize\bfseries\boldmath}} +\renewcommand\paragraph{@startsection{paragraph}{4}{\z@}% + {-12\p@ @plus -4\p@ @minus -4\p@}% + {-0.5em @plus -0.22em @minus -0.1em}% + {\normalfont\normalsize\itshape}} +\renewcommand\subparagraph[1]{\typeout{LLNCS warning: You should not use + \string\subparagraph\space with this class}\vskip0.5cm +You should not use \verb|\subparagraph| with this class.\vskip0.5cm} + +\DeclareMathSymbol{\Gamma}{\mathalpha}{letters}{"00} +\DeclareMathSymbol{\Delta}{\mathalpha}{letters}{"01} +\DeclareMathSymbol{\Theta}{\mathalpha}{letters}{"02} +\DeclareMathSymbol{\Lambda}{\mathalpha}{letters}{"03} +\DeclareMathSymbol{\Xi}{\mathalpha}{letters}{"04} +\DeclareMathSymbol{\Pi}{\mathalpha}{letters}{"05} +\DeclareMathSymbol{\Sigma}{\mathalpha}{letters}{"06} +\DeclareMathSymbol{\Upsilon}{\mathalpha}{letters}{"07} +\DeclareMathSymbol{\Phi}{\mathalpha}{letters}{"08} +\DeclareMathSymbol{\Psi}{\mathalpha}{letters}{"09} +\DeclareMathSymbol{\Omega}{\mathalpha}{letters}{"0A} + +\let\footnotesize\small + +\if@custvec +\def\vec#1{\mathchoice{\mbox{\boldmath$\displaystyle#1$}} +{\mbox{\boldmath$\textstyle#1$}} +{\mbox{\boldmath$\scriptstyle#1$}} +{\mbox{\boldmath$\scriptscriptstyle#1$}}} +\fi + +\def\squareforqed{\hbox{\rlap{$\sqcap$}$\sqcup$}} +\def\qed{\ifmmode\squareforqed\else{\unskip\nobreak\hfil +\penalty50\hskip1em\null\nobreak\hfil\squareforqed +\parfillskip=0pt\finalhyphendemerits=0\endgraf}\fi} + +\def\getsto{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr\gets\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr\gets +\cr\to\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +\gets\cr\to\cr}}}}} +\def\lid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr<\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr<\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr<\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +<\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\gid{\mathrel{\mathchoice {\vcenter{\offinterlineskip\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr>\cr +\noalign{\vskip1.2pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr>\cr +\noalign{\vskip1pt}=\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr +\noalign{\vskip0.9pt}=\cr}}}}} +\def\grole{\mathrel{\mathchoice {\vcenter{\offinterlineskip +\halign{\hfil +$\displaystyle##$\hfil\cr>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\textstyle##$\hfil\cr +>\cr\noalign{\vskip-1pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.8pt}<\cr}}} +{\vcenter{\offinterlineskip\halign{\hfil$\scriptscriptstyle##$\hfil\cr +>\cr\noalign{\vskip-0.3pt}<\cr}}}}} +\def\bbbr{{\rm I!R}} %reelle Zahlen +\def\bbbm{{\rm I!M}} +\def\bbbn{{\rm I!N}} %natuerliche Zahlen +\def\bbbf{{\rm I!F}} +\def\bbbh{{\rm I!H}} +\def\bbbk{{\rm I!K}} +\def\bbbp{{\rm I!P}} +\def\bbbone{{\mathchoice {\rm 1\mskip-4mu l} {\rm 1\mskip-4mu l} +{\rm 1\mskip-4.5mu l} {\rm 1\mskip-5mu l}}} +\def\bbbc{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm C$}\hbox{\hbox +to0pt{\kern0.4\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbq{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.8\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm Q$}\hbox{\raise +0.15\ht0\hbox to0pt{\kern0.4\wd0\vrule height0.7\ht0\hss}\box0}}}} +\def\bbbt{{\mathchoice {\setbox0=\hbox{$\displaystyle\rm +T$}\hbox{\hbox to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm T$}\hbox{\hbox +to0pt{\kern0.3\wd0\vrule height0.9\ht0\hss}\box0}}}} +\def\bbbs{{\mathchoice +{\setbox0=\hbox{$\displaystyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\textstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\hbox +to0pt{\kern0.55\wd0\vrule height0.5\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptstyle \rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.35\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.5\wd0\vrule height0.45\ht0\hss}\box0}} +{\setbox0=\hbox{$\scriptscriptstyle\rm S$}\hbox{\raise0.5\ht0\hbox +to0pt{\kern0.4\wd0\vrule height0.45\ht0\hss}\raise0.05\ht0\hbox +to0pt{\kern0.55\wd0\vrule height0.45\ht0\hss}\box0}}}} +\def\bbbz{{\mathchoice {\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\textstyle Z\kern-0.4em Z$}} +{\hbox{$\mathsf\scriptstyle Z\kern-0.3em Z$}} +{\hbox{$\mathsf\scriptscriptstyle Z\kern-0.2em Z$}}}} + +\let\ts, + +\setlength\leftmargini {17\p@} +\setlength\leftmargin {\leftmargini} +\setlength\leftmarginii {\leftmargini} +\setlength\leftmarginiii {\leftmargini} +\setlength\leftmarginiv {\leftmargini} +\setlength \labelsep {.5em} +\setlength \labelwidth{\leftmargini} +\addtolength\labelwidth{-\labelsep} + +\def@listI{\leftmargin\leftmargini + \parsep 0\p@ @plus1\p@ @minus\p@ + \topsep 8\p@ @plus2\p@ @minus4\p@ + \itemsep0\p@} +\let@listi@listI +@listi +\def@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep 0\p@ @plus2\p@ @minus\p@} +\def@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep 0\p@ @plus\p@@minus\p@ + \parsep \z@ + \partopsep \p@ @plus\z@ @minus\p@} + +\renewcommand\labelitemi{\normalfont\bfseries --} +\renewcommand\labelitemii{$\m@th\bullet$} + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\def\tableofcontents{\chapter*{\contentsname@mkboth{{\contentsname}}% + {{\contentsname}}} + \def\authcount##1{\setcounter{auco}{##1}\setcounter{@auth}{1}} + \def\lastand{\ifnum\value{auco}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{auco}% + \lastand + \else + \unskip, + \fi}% + @starttoc{toc}\if@restonecol\twocolumn\fi} + +\def\l@part#1#2{\addpenalty{@secpenalty}% + \addvspace{2em plus\p@}% % space above part line + \begingroup + \parindent \z@ + \rightskip \z@ plus 5em + \hrule\vskip5pt + \large % same size as for a contribution heading + \bfseries\boldmath % set line in boldface + \leavevmode % TeX command to enter horizontal mode. + #1\par + \vskip5pt + \hrule + \vskip1pt + \nobreak % Never break after part entry + \endgroup} + +\def@dotsep{2} + +\def\hyperhrefextend{\ifx\hyper@anchor@undefined\else +{chapter.\thechapter}\fi} + +\def\addnumcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{\protect\numberline + {\thechapter}#3}{\thepage}\hyperhrefextend}} +\def\addcontentsmark#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{\thepage}\hyperhrefextend}} +\def\addcontentsmarkwop#1#2#3{% +\addtocontents{#1}{\protect\contentsline{#2}{#3}{0}\hyperhrefextend}} + +\def@adcmk[#1]{\ifcase #1 \or +\def@gtempa{\addnumcontentsmark}% + \or \def@gtempa{\addcontentsmark}% + \or \def@gtempa{\addcontentsmarkwop}% + \fi@gtempa{toc}{chapter}} +\def\addtocmark{@ifnextchar[{@adcmk}{@adcmk[3]}} + +\def\l@chapter#1#2{\addpenalty{-@highpenalty} + \vskip 1.0em plus 1pt @tempdima 1.5em \begingroup + \parindent \z@ \rightskip @pnumwidth + \parfillskip -@pnumwidth + \leavevmode \advance\leftskip@tempdima \hskip -\leftskip + {\large\bfseries\boldmath#1}\ifx0#2\hfil\null + \else + \nobreak + \leaders\hbox{$\m@th \mkern @dotsep mu.\mkern + @dotsep mu$}\hfill + \nobreak\hbox to@pnumwidth{\hss #2}% + \fi\par + \penalty@highpenalty \endgroup} + +\def\l@title#1#2{\addpenalty{-@highpenalty} + \addvspace{8pt plus 1pt} + @tempdima \z@ + \begingroup + \parindent \z@ \rightskip @tocrmarg + \parfillskip -@tocrmarg + \leavevmode \advance\leftskip@tempdima \hskip -\leftskip + #1\nobreak + \leaders\hbox{$\m@th \mkern @dotsep mu.\mkern + @dotsep mu$}\hfill + \nobreak\hbox to@pnumwidth{\hss #2}\par + \penalty@highpenalty \endgroup} + +\setcounter{tocdepth}{0} +\newdimen\tocchpnum +\newdimen\tocsecnum +\newdimen\tocsectotal +\newdimen\tocsubsecnum +\newdimen\tocsubsectotal +\newdimen\tocsubsubsecnum +\newdimen\tocsubsubsectotal +\newdimen\tocparanum +\newdimen\tocparatotal +\newdimen\tocsubparanum +\tocchpnum=\z@ % no chapter numbers +\tocsecnum=15\p@ % section 88. plus 2.222pt +\tocsubsecnum=23\p@ % subsection 88.8 plus 2.222pt +\tocsubsubsecnum=27\p@ % subsubsection 88.8.8 plus 1.444pt +\tocparanum=35\p@ % paragraph 88.8.8.8 plus 1.666pt +\tocsubparanum=43\p@ % subparagraph 88.8.8.8.8 plus 1.888pt +\def\calctocindent{% +\tocsectotal=\tocchpnum +\advance\tocsectotal by\tocsecnum +\tocsubsectotal=\tocsectotal +\advance\tocsubsectotal by\tocsubsecnum +\tocsubsubsectotal=\tocsubsectotal +\advance\tocsubsubsectotal by\tocsubsubsecnum +\tocparatotal=\tocsubsubsectotal +\advance\tocparatotal by\tocparanum} +\calctocindent + +\def\l@section{@dottedtocline{1}{\tocchpnum}{\tocsecnum}} +\def\l@subsection{@dottedtocline{2}{\tocsectotal}{\tocsubsecnum}} +\def\l@subsubsection{@dottedtocline{3}{\tocsubsectotal}{\tocsubsubsecnum}} +\def\l@paragraph{@dottedtocline{4}{\tocsubsubsectotal}{\tocparanum}} +\def\l@subparagraph{@dottedtocline{5}{\tocparatotal}{\tocsubparanum}} + +\def\listoffigures{@restonecolfalse\if@twocolumn@restonecoltrue\onecolumn + \fi\section*{\listfigurename@mkboth{{\listfigurename}}{{\listfigurename}}} + @starttoc{lof}\if@restonecol\twocolumn\fi} +\def\l@figure{@dottedtocline{1}{0em}{1.5em}} + +\def\listoftables{@restonecolfalse\if@twocolumn@restonecoltrue\onecolumn + \fi\section*{\listtablename@mkboth{{\listtablename}}{{\listtablename}}} + @starttoc{lot}\if@restonecol\twocolumn\fi} +\let\l@table\l@figure + +\renewcommand\listoffigures{% + \section*{\listfigurename + @mkboth{\listfigurename}{\listfigurename}}% + @starttoc{lof}% + } + +\renewcommand\listoftables{% + \section*{\listtablename + @mkboth{\listtablename}{\listtablename}}% + @starttoc{lot}% + } + +\ifx\oribibl\undefined +\ifx\citeauthoryear\undefined +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \def@biblabel##1{##1.} + \small + \list{@biblabel{@arabic\c@enumiv}}% + {\settowidth\labelwidth{@biblabel{#1}}% + \leftmargin\labelwidth + \advance\leftmargin\labelsep + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv@empty + \renewcommand\theenumiv{@arabic\c@enumiv}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em @plus.33em @minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`.=@m} + {\def@noitemerr + {@latex@warning{Empty `thebibliography' environment}}% + \endlist} +\def@lbibitem[#1]#2{\item[{[#1]}\hfill]\if@filesw + {\let\protect\noexpand\immediate + \write@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} +\newcount@tempcntc +\def@citex[#1]#2{\if@filesw\immediate\write@auxout{\string\citation{#2}}\fi + @tempcnta\z@@tempcntb\m@ne\def@citea{}@cite{@for@citeb:=#2\do + {@ifundefined + {b@@citeb}{@citeo@tempcntb\m@ne@citea\def@citea{,}{\bfseries + ?}@warning + {Citation `@citeb' on page \thepage \space undefined}}% + {\setbox\z@\hbox{\global@tempcntc0\csname b@@citeb\endcsname\relax}% + \ifnum@tempcntc=\z@ @citeo@tempcntb\m@ne + @citea\def@citea{,}\hbox{\csname b@@citeb\endcsname}% + \else + \advance@tempcntb@ne + \ifnum@tempcntb=@tempcntc + \else\advance@tempcntb\m@ne@citeo + @tempcnta@tempcntc@tempcntb@tempcntc\fi\fi}}@citeo}{#1}} +\def@citeo{\ifnum@tempcnta>@tempcntb\else + @citea\def@citea{,,\hskip\z@skip}% + \ifnum@tempcnta=@tempcntb\the@tempcnta\else + {\advance@tempcnta@ne\ifnum@tempcnta=@tempcntb \else + \def@citea{--}\fi + \advance@tempcnta\m@ne\the@tempcnta@citea\the@tempcntb}\fi\fi} +\else +\renewenvironment{thebibliography}[1] + {\section*{\refname} + \small + \list{}% + {\settowidth\labelwidth{}% + \leftmargin\parindent + \itemindent=-\parindent + \labelsep=\z@ + \if@openbib + \advance\leftmargin\bibindent + \itemindent -\bibindent + \listparindent \itemindent + \parsep \z@ + \fi + \usecounter{enumiv}% + \let\p@enumiv@empty + \renewcommand\theenumiv{}}% + \if@openbib + \renewcommand\newblock{\par}% + \else + \renewcommand\newblock{\hskip .11em @plus.33em @minus.07em}% + \fi + \sloppy\clubpenalty4000\widowpenalty4000% + \sfcode`.=@m} + {\def@noitemerr + {@latex@warning{Empty `thebibliography' environment}}% + \endlist} + \def@cite#1{#1}% + \def@lbibitem[#1]#2{\item[]\if@filesw + {\def\protect##1{\string ##1\space}\immediate + \write@auxout{\string\bibcite{#2}{#1}}}\fi\ignorespaces} + \fi +\else +@cons@openbib@code{\noexpand\small} +\fi + +\def\idxquad{\hskip 10\p@}% space that divides entry from number + +\def@idxitem{\par\hangindent 10\p@} + +\def\subitem{\par\setbox0=\hbox{--\enspace}% second order + \noindent\hangindent\wd0\box0}% index entry + +\def\subsubitem{\par\setbox0=\hbox{--,--\enspace}% third + \noindent\hangindent\wd0\box0}% order index entry + +\def\indexspace{\par \vskip 10\p@ plus5\p@ minus3\p@\relax} + +\renewenvironment{theindex} + {@mkboth{\indexname}{\indexname}% + \thispagestyle{empty}\parindent\z@ + \parskip\z@ @plus .3\p@\relax + \let\item\par + \def,{\relax\ifmmode\mskip\thinmuskip + \else\hskip0.2em\ignorespaces\fi}% + \normalfont\small + \begin{multicols}{2}[@makeschapterhead{\indexname}]% + } + {\end{multicols}} + +\renewcommand\footnoterule{% + \kern-3\p@ + \hrule@width 2truecm + \kern2.6\p@} + \newdimen\fnindent + \fnindent1em +\long\def@makefntext#1{% + \parindent \fnindent% + \leftskip \fnindent% + \noindent + \llap{\hb@xt@1em{\hss@makefnmark\ }}\ignorespaces#1} + +\long\def@makecaption#1#2{% + \vskip\abovecaptionskip + \sbox@tempboxa{{\bfseries #1.} #2}% + \ifdim \wd@tempboxa >\hsize + {\bfseries #1.} #2\par + \else + \global @minipagefalse + \hb@xt@\hsize{\hfil\box@tempboxa\hfil}% + \fi + \vskip\belowcaptionskip} + +\def\fps@figure{htbp} +\def\fnum@figure{\figurename\thinspace\thefigure} +\def @floatboxreset {% + \reset@font + \small + @setnobreak + @setminipage +} +\def\fps@table{htbp} +\def\fnum@table{\tablename~\thetable} +\renewenvironment{table} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + @float{table}} + {\end@float} +\renewenvironment{table*} + {\setlength\abovecaptionskip{0\p@}% + \setlength\belowcaptionskip{10\p@}% + @dblfloat{table}} + {\end@dblfloat} + +\long\def@caption#1[#2]#3{\par\addcontentsline{\csname + ext@#1\endcsname}{#1}{\protect\numberline{\csname + the#1\endcsname}{\ignorespaces #2}}\begingroup + @parboxrestore + @makecaption{\csname fnum@#1\endcsname}{\ignorespaces #3}\par + \endgroup} + +% LaTeX does not provide a command to enter the authors institute +% addresses. The \institute command is defined here. + +\newcounter{@inst} +\newcounter{@auth} +\newcounter{auco} +\def\andname{and} +\def\lastandname{\unskip, and} +\newdimen\instindent +\newbox\authrun +\newtoks\authorrunning +\newtoks\tocauthor +\newbox\titrun +\newtoks\titlerunning +\newtoks\toctitle + +\def\clearheadinfo{\gdef@author{No Author Given}% + \gdef@title{No Title Given}% + \gdef@subtitle{}% + \gdef@institute{No Institute Given}% + \gdef@thanks{}% + \global\titlerunning={}\global\authorrunning={}% + \global\toctitle={}\global\tocauthor={}} + +\def\institute#1{\gdef@institute{#1}} + +\def\institutename{\par + \begingroup + \parskip=\z@ + \parindent=\z@ + \setcounter{@inst}{1}% + \def\and{\par\stepcounter{@inst}% + \noindent$^{\the@inst}$\enspace\ignorespaces}% + \setbox0=\vbox{\def\thanks##1{}@institute}% + \ifnum\c@@inst=1\relax + \else + \setcounter{footnote}{\c@@inst}% + \setcounter{@inst}{1}% + \noindent$^{\the@inst}$\enspace + \fi + \ignorespaces + @institute\par + \endgroup} + +\def@fnsymbol#1{\ensuremath{\ifcase#1\or\star\or{\star\star}\or + {\star\star\star}\or \dagger\or \ddagger\or + \mathchar "278\or \mathchar "27B\or |\or **\or \dagger\dagger + \or \ddagger\ddagger \else@ctrerr\fi}} + +\def\inst#1{\unskip$^{#1}$} +\def\fnmsep{\unskip$^,$} +\def\email#1{{\tt#1}} +\AtBeginDocument{@ifundefined{url}{\def\url#1{#1}}{}} +\def\homedir{~{ }} + +\def\subtitle#1{\gdef@subtitle{#1}} +\clearheadinfo + +\renewcommand\maketitle{\newpage + \refstepcounter{chapter}% + \stepcounter{section}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \setcounter{figure}{0} + \setcounter{table}{0} + \setcounter{equation}{0} + \setcounter{footnote}{0}% + \begingroup + \parindent=\z@ + \renewcommand\thefootnote{@fnsymbol\c@footnote}% + \if@twocolumn + \ifnum \col@number=@ne + @maketitle + \else + \twocolumn[@maketitle]% + \fi + \else + \newpage + \global@topnum\z@ % Prevents figures from going at top of page. + @maketitle + \fi + \thispagestyle{empty}@thanks +% + \def\{\unskip\ \ignorespaces}\def\inst##1{\unskip{}}% + \def\thanks##1{\unskip{}}\def\fnmsep{\unskip}% + \instindent=\hsize + \advance\instindent by-\headlineindent + \if!\the\toctitle!\addcontentsline{toc}{title}{@title}\else + \addcontentsline{toc}{title}{\the\toctitle}\fi + \if@runhead + \if!\the\titlerunning!\else + \edef@title{\the\titlerunning}% + \fi + \global\setbox\titrun=\hbox{\small\rm\unboldmath\ignorespaces@title}% + \ifdim\wd\titrun>\instindent + \typeout{Title too long for running head. Please supply}% + \typeout{a shorter form with \string\titlerunning\space prior to + \string\maketitle}% + \global\setbox\titrun=\hbox{\small\rm + Title Suppressed Due to Excessive Length}% + \fi + \xdef@title{\copy\titrun}% + \fi +% + \if!\the\tocauthor!\relax + {\def\and{\noexpand\protect\noexpand\and}% + \protected@xdef\toc@uthor{@author}}% + \else + \def\{\noexpand\protect\noexpand\newline}% + \protected@xdef\scratch{\the\tocauthor}% + \protected@xdef\toc@uthor{\scratch}% + \fi + \addtocontents{toc}{{\protect\raggedright\protect\leftskip15\p@ + \protect\rightskip@tocrmarg + \protect\itshape\toc@uthor\protect\endgraf}}% + \if@runhead + \if!\the\authorrunning! + \value{@inst}=\value{@auth}% + \setcounter{@auth}{1}% + \else + \edef@author{\the\authorrunning}% + \fi + \global\setbox\authrun=\hbox{\small\unboldmath@author\unskip}% + \ifdim\wd\authrun>\instindent + \typeout{Names of authors too long for running head. Please supply}% + \typeout{a shorter form with \string\authorrunning\space prior to + \string\maketitle}% + \global\setbox\authrun=\hbox{\small\rm + Authors Suppressed Due to Excessive Length}% + \fi + \xdef@author{\copy\authrun}% + \markboth{@author}{@title}% + \fi + \endgroup + \setcounter{footnote}{0}% + \clearheadinfo} +% +\def@maketitle{\newpage + \markboth{}{}% + \def\lastand{\ifnum\value{@inst}=2\relax + \unskip{} \andname\ + \else + \unskip \lastandname\ + \fi}% + \def\and{\stepcounter{@auth}\relax + \ifnum\value{@auth}=\value{@inst}% + \lastand + \else + \unskip, + \fi}% + \begin{center}% + {\Large \bfseries\boldmath + \pretolerance=10000 + @title \par}\vskip .8cm +\if!@subtitle!\else {\large \bfseries\boldmath + \vskip -.65cm + \pretolerance=10000 + @subtitle \par}\vskip .8cm\fi + \setbox0=\vbox{\setcounter{@auth}{1}\def\and{\stepcounter{@auth}}% + \def\thanks##1{}@author}% + \global\value{@inst}=\value{@auth}% + \global\value{auco}=\value{@auth}% + \setcounter{@auth}{1}% +{\lineskip .5em +\noindent\ignorespaces +@author\vskip.35cm} + {\small\institutename} + \end{center}% + } + +% definition of the "\spnewtheorem" command. +% +% Usage: +% +% \spnewtheorem{env_nam}{caption}[within]{cap_font}{body_font} +% or \spnewtheorem{env_nam}[numbered_like]{caption}{cap_font}{body_font} +% or \spnewtheorem*{env_nam}{caption}{cap_font}{body_font} +% +% New is "cap_font" and "body_font". It stands for +% fontdefinition of the caption and the text itself. +% +% "\spnewtheorem*" gives a theorem without number. +% +% A defined spnewthoerem environment is used as described +% by Lamport. +% +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\def@thmcountersep{} +\def@thmcounterend{.} + +\def\spnewtheorem{@ifstar{@sthm}{@Sthm}} + +% definition of \spnewtheorem with number + +\def@spnthm#1#2{% + @ifnextchar[{@spxnthm{#1}{#2}}{@spynthm{#1}{#2}}} +\def@Sthm#1{@ifnextchar[{@spothm{#1}}{@spnthm{#1}}} + +\def@spxnthm#1#2[#3]#4#5{\expandafter@ifdefinable\csname #1\endcsname + {@definecounter{#1}@addtoreset{#1}{#3}% + \expandafter\xdef\csname the#1\endcsname{\expandafter\noexpand + \csname the#3\endcsname \noexpand@thmcountersep @thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global@namedef{#1}{@spthm{#1}{\csname #1name\endcsname}{#4}{#5}}% + \global@namedef{end#1}{@endtheorem}}} + +\def@spynthm#1#2#3#4{\expandafter@ifdefinable\csname #1\endcsname + {@definecounter{#1}% + \expandafter\xdef\csname the#1\endcsname{@thmcounter{#1}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global@namedef{#1}{@spthm{#1}{\csname #1name\endcsname}{#3}{#4}}% + \global@namedef{end#1}{@endtheorem}}} + +\def@spothm#1[#2]#3#4#5{% + @ifundefined{c@#2}{@latexerr{No theorem environment `#2' defined}@eha}% + {\expandafter@ifdefinable\csname #1\endcsname + {\global@namedef{the#1}{@nameuse{the#2}}% + \expandafter\xdef\csname #1name\endcsname{#3}% + \global@namedef{#1}{@spthm{#2}{\csname #1name\endcsname}{#4}{#5}}% + \global@namedef{end#1}{@endtheorem}}}} + +\def@spthm#1#2#3#4{\topsep 7\p@ @plus2\p@ @minus4\p@ +\refstepcounter{#1}% +@ifnextchar[{@spythm{#1}{#2}{#3}{#4}}{@spxthm{#1}{#2}{#3}{#4}}} + +\def@spxthm#1#2#3#4{@spbegintheorem{#2}{\csname the#1\endcsname}{#3}{#4}% + \ignorespaces} + +\def@spythm#1#2#3#4[#5]{@spopargbegintheorem{#2}{\csname + the#1\endcsname}{#5}{#3}{#4}\ignorespaces} + +\def@spbegintheorem#1#2#3#4{\trivlist + \item[\hskip\labelsep{#3#1\ #2@thmcounterend}]#4} + +\def@spopargbegintheorem#1#2#3#4#5{\trivlist + \item[\hskip\labelsep{#4#1\ #2}]{#4(#3)@thmcounterend\ }#5} + +% definition of \spnewtheorem* without number + +\def@sthm#1#2{@Ynthm{#1}{#2}} + +\def@Ynthm#1#2#3#4{\expandafter@ifdefinable\csname #1\endcsname + {\global@namedef{#1}{@Thm{\csname #1name\endcsname}{#3}{#4}}% + \expandafter\xdef\csname #1name\endcsname{#2}% + \global@namedef{end#1}{@endtheorem}}} + +\def@Thm#1#2#3{\topsep 7\p@ @plus2\p@ @minus4\p@ +@ifnextchar[{@Ythm{#1}{#2}{#3}}{@Xthm{#1}{#2}{#3}}} + +\def@Xthm#1#2#3{@Begintheorem{#1}{#2}{#3}\ignorespaces} + +\def@Ythm#1#2#3[#4]{@Opargbegintheorem{#1} + {#4}{#2}{#3}\ignorespaces} + +\def@Begintheorem#1#2#3{#3\trivlist + \item[\hskip\labelsep{#2#1@thmcounterend}]} + +\def@Opargbegintheorem#1#2#3#4{#4\trivlist + \item[\hskip\labelsep{#3#1}]{#3(#2)@thmcounterend\ }} + +\if@envcntsect + \def@thmcountersep{.} + \spnewtheorem{theorem}{Theorem}[section]{\bfseries}{\itshape} +\else + \spnewtheorem{theorem}{Theorem}{\bfseries}{\itshape} + \if@envcntreset + @addtoreset{theorem}{section} + \else + @addtoreset{theorem}{chapter} + \fi +\fi + +%definition of divers theorem environments +\spnewtheorem*{claim}{Claim}{\itshape}{\rmfamily} +\spnewtheorem*{proof}{Proof}{\itshape}{\rmfamily} +\if@envcntsame % alle Umgebungen wie Theorem. + \def\spn@wtheorem#1#2#3#4{@spothm{#1}[theorem]{#2}{#3}{#4}} +\else % alle Umgebungen mit eigenem Zaehler + \if@envcntsect % mit section numeriert + \def\spn@wtheorem#1#2#3#4{@spxnthm{#1}{#2}[section]{#3}{#4}} + \else % nicht mit section numeriert + \if@envcntreset + \def\spn@wtheorem#1#2#3#4{@spynthm{#1}{#2}{#3}{#4} + @addtoreset{#1}{section}} + \else + \def\spn@wtheorem#1#2#3#4{@spynthm{#1}{#2}{#3}{#4} + @addtoreset{#1}{chapter}}% + \fi + \fi +\fi +\spn@wtheorem{case}{Case}{\itshape}{\rmfamily} +\spn@wtheorem{conjecture}{Conjecture}{\itshape}{\rmfamily} +\spn@wtheorem{corollary}{Corollary}{\bfseries}{\itshape} +\spn@wtheorem{definition}{Definition}{\bfseries}{\itshape} +\spn@wtheorem{example}{Example}{\itshape}{\rmfamily} +\spn@wtheorem{exercise}{Exercise}{\itshape}{\rmfamily} +\spn@wtheorem{lemma}{Lemma}{\bfseries}{\itshape} +\spn@wtheorem{note}{Note}{\itshape}{\rmfamily} +\spn@wtheorem{problem}{Problem}{\itshape}{\rmfamily} +\spn@wtheorem{property}{Property}{\itshape}{\rmfamily} +\spn@wtheorem{proposition}{Proposition}{\bfseries}{\itshape} +\spn@wtheorem{question}{Question}{\itshape}{\rmfamily} +\spn@wtheorem{solution}{Solution}{\itshape}{\rmfamily} +\spn@wtheorem{remark}{Remark}{\itshape}{\rmfamily} + +\def@takefromreset#1#2{% + \def@tempa{#1}% + \let@tempd@elt + \def@elt##1{% + \def@tempb{##1}% + \ifx@tempa@tempb\else + @addtoreset{##1}{#2}% + \fi}% + \expandafter\expandafter\let\expandafter@tempc\csname cl@#2\endcsname + \expandafter\def\csname cl@#2\endcsname{}% + @tempc + \let@elt@tempd} + +\def\theopargself{\def@spopargbegintheorem##1##2##3##4##5{\trivlist + \item[\hskip\labelsep{##4##1\ ##2}]{##4##3@thmcounterend\ }##5} + \def@Opargbegintheorem##1##2##3##4{##4\trivlist + \item[\hskip\labelsep{##3##1}]{##3##2@thmcounterend\ }} + } + +\renewenvironment{abstract}{% + \list{}{\advance\topsep by0.35cm\relax\small + \leftmargin=1cm + \labelwidth=\z@ + \listparindent=\z@ + \itemindent\listparindent + \rightmargin\leftmargin}\item[\hskip\labelsep + \bfseries\abstractname]} + {\endlist} +\renewcommand{\abstractname}{Abstract} +\renewcommand{\contentsname}{Table of Contents} +\renewcommand{\figurename}{Fig.} +\renewcommand{\tablename}{Table} + +\newdimen\headlineindent % dimension for space between +\headlineindent=1.166cm % number and text of headings. + +\def\ps@headings{\let@mkboth@gobbletwo + \let@oddfoot@empty\let@evenfoot@empty + \def@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \leftmark\hfil} + \def@oddhead{\normalfont\small\hfil\rightmark\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\def\ps@titlepage{\let@mkboth@gobbletwo + \let@oddfoot@empty\let@evenfoot@empty + \def@evenhead{\normalfont\small\rlap{\thepage}\hspace{\headlineindent}% + \hfil} + \def@oddhead{\normalfont\small\hfil\hspace{\headlineindent}% + \llap{\thepage}} + \def\chaptermark##1{}% + \def\sectionmark##1{}% + \def\subsectionmark##1{}} + +\if@runhead\ps@headings\else +\ps@empty\fi + +\setlength\arraycolsep{1.4\p@} +\setlength\tabcolsep{1.4\p@} + +\endinput + diff --git a/position-papers/HTTP3/usenix.sty b/position-papers/HTTP3/usenix.sty new file mode 100644 index 0000000..22935a7 --- /dev/null +++ b/position-papers/HTTP3/usenix.sty @@ -0,0 +1,97 @@ +% usenix-2e.sty - to be used with latex2e (the new one) for USENIX. +% To use this style file, do this: +% +% \documentclass[twocolumn]{article} +% \usepackage{usenix-2e} +% and put {\rm ....} around the author names. +% +% The following definitions are modifications of standard article.sty +% definitions, arranged to do a better job of matching the USENIX +% guidelines. +% It will automatically select two-column mode and the Times-Roman +% font. + +% +% USENIX papers are two-column. +% Times-Roman font is nice if you can get it (requires NFSS, +% which is in latex2e. + +%\if@twocolumn\else\input twocolumn.sty\fi +\usepackage{times} + +% +% USENIX wants margins of: 7/8" side, 1" bottom, and 3/4" top. +% 0.25" gutter between columns. +% Gives active areas of 6.75" x 9.25" +% +\setlength{\textheight}{9.0in} +\setlength{\columnsep}{0.25in} +\setlength{\textwidth}{6.75in} +%\setlength{\textwidth}{7.00in} +%\setlength{\footheight}{0.0in} +\setlength{\topmargin}{-0.25in} +\setlength{\headheight}{0.0in} +\setlength{\headsep}{0.0in} +\setlength{\evensidemargin}{-0.125in} +\setlength{\oddsidemargin}{-0.125in} + +% +% Usenix wants no page numbers for submitted papers, so that they can +% number them themselves. +% +\pagestyle{empty} + +% +% Usenix titles are in 14-point bold type, with no date, and with no +% change in the empty page headers. The whol author section is 12 point +% italic--- you must use {\rm } around the actual author names to get +% them in roman. +% +\def\maketitle{\par + \begingroup + \renewcommand\thefootnote{\fnsymbol{footnote}}% + \def@makefnmark{\hbox to\z@{$\m@th^{@thefnmark}$\hss}}% + \long\def@makefntext##1{\parindent 1em\noindent + \hbox to1.8em{\hss$\m@th^{@thefnmark}$}##1}% + \if@twocolumn + \twocolumn[@maketitle]% + \else \newpage + \global@topnum\z@ + @maketitle \fi@thanks + \endgroup + \setcounter{footnote}{0}% + \let\maketitle\relax + \let@maketitle\relax + \gdef@thanks{}\gdef@author{}\gdef@title{}\let\thanks\relax} + +\def@maketitle{\newpage + %\vbox to 0.5in{ + \vbox to 1.5in{ + %\vspace*{\fill} + %\vskip 2em + \begin{center}% + {\Large\bf @title \par}% + \vskip 0.250in minus 0.250in + {\large\it + \lineskip .5em + \begin{tabular}[t]{c}@author + \end{tabular}\par}% + \end{center}% + \par + \vspace*{\fill} +% \vskip 1.5em + } +} + +% +% The abstract is preceded by a 12-pt bold centered heading +\def\abstract{\begin{center}% +{\large\bf \abstractname\vspace{-.5em}\vspace{\z@}}% +\end{center}} +\def\endabstract{} + +% +% Main section titles are 12-pt bold. Others can be same or smaller. +% +\def\section{@startsection {section}{1}{\z@}{-3.5ex plus-1ex minus + -.2ex}{2.3ex plus.2ex}{\reset@font\large\bf}}