WLP2024/eptcs.cls
2024-06-28 13:54:11 +02:00

264 lines
9.8 KiB
TeX

\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{eptcs}[2022/05/20 v1.7]
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% options %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newif\ifadraft
\newif\ifsubmission
\newif\ifpreliminary
\newif\ifcopyright
\newif\ifpublicdomain
\newif\ifcreativecommons
\newif\ifnoderivs
\newif\ifsharealike
\newif\ifnoncommercial
\adraftfalse
\submissionfalse
\preliminaryfalse
\copyrightfalse
\publicdomainfalse
\creativecommonsfalse
\noderivsfalse
\sharealikefalse
\noncommercialfalse
\DeclareOption{adraft}{\adrafttrue}
\DeclareOption{submission}{\submissiontrue}
\DeclareOption{preliminary}{\preliminarytrue}
\DeclareOption{copyright}{\copyrighttrue}
\DeclareOption{publicdomain}{\publicdomaintrue}
\DeclareOption{creativecommons}{\creativecommonstrue}
\DeclareOption{noderivs}{\noderivstrue}
\DeclareOption{noncommercial}{\noncommercialtrue}
\DeclareOption{sharealike}{\sharealiketrue}
\ProcessOptions\relax
\LoadClass[letterpaper,11pt,twoside]{article}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% On US letter paper the margins (left-top-right-bottom) are %%
%% 2.795cm - 1.23cm - 2.795cm - 3.46cm %%
%% Note: When \topmargin would be 0, the real top margin would be %%
%% (72-25-12=35pt) + 1pt (unused portion of head) = .5in = 1.27cm. %%
%% The bottom margin is 11in - 1in + 0.04cm - 623/72in = 3.46cm. %%
%% On the first page the bottom margin contains various footers. %%
%% When translating from US letter to A4 paper, without scaling, by %%
%% leaving the centre of the paper invariant (as is possible when %%
%% printing the paper with acroread), the resulting A4 margins are %%
%% 2.5cm - 2.11cm - 2.5cm - 4.34cm %%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\textwidth 16cm % A4 width is 21cm %
\textheight 623.01pt % 46 lines exactly = 21.98cm %
\oddsidemargin -0.04cm % +1 inch = 2.5cm %
\evensidemargin -0.04cm % +1 inch = 2.5cm %
\topmargin -0.04cm % +1 inch = 2.5cm %
\advance\topmargin-\headheight % 12pt %
\advance\topmargin-\headsep % 25pt %
\marginparwidth 45pt % leaves 15pt from A4 edge %
\advance\evensidemargin .295cm % centre w.r.t. letter paper %
\advance\oddsidemargin .295cm % centre w.r.t. letter paper %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% load eptcsdata when available %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\IfFileExists{eptcsdata.tex}{\input{eptcsdata}}{}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Pagestyle and titlepage %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\pagestyle{myheadings}
\renewcommand\pagestyle[1]{} % ignore further \pagestyles
\renewcommand\maketitle{\par
\begingroup
\providecommand{\event}{}
\ifadraft
\providecommand{\publicationstatus}{\Large DRAFT\quad\today}
\else\ifsubmission
\providecommand{\publicationstatus}{Submitted to:\\
\event}
\else\ifpreliminary
\providecommand{\publicationstatus}{Preliminary Report. Final version to appear in:\\
\event}
\else
\providecommand{\publicationstatus}{To appear in EPTCS.}
\fi\fi\fi
\providecommand{\titlerunning}{Please define {\ttfamily $\backslash$titlerunning}}
\providecommand{\authorrunning}{Please define {\ttfamily $\backslash$authorrunning}}
\providecommand{\copyrightholders}{\authorrunning}
\renewcommand\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}%
\newpage
\global\@topnum\z@ % Prevents figures from going at top of page.
\@maketitle
\thispagestyle{empty}\@thanks
\endgroup
\setcounter{footnote}{0}%
\label{FirstPage}
\global\let\thanks\relax
\global\let\maketitle\relax
\global\let\@maketitle\relax
\global\let\@thanks\@empty
\global\let\@author\@empty
\global\let\@date\@empty
\global\let\@title\@empty
\global\let\title\relax
\global\let\author\relax
\global\let\date\relax
\global\let\and\relax
}
\def\@maketitle{% adapted from article.cls
\newpage
\noindent
\raisebox{-22.8cm}[0pt][0pt]{\footnotesize
\begin{tabular}{@{}l}
\publicationstatus
\end{tabular}}
\hfill\vspace{-1em}
\raisebox{-22.8cm}[0pt][0pt]{\footnotesize
\makebox[0pt][r]{
\begin{tabular}{l@{}}
\ifpublicdomain
This work is \href{https://creativecommons.org/publicdomain/zero/1.0/}
{dedicated to the public domain}.
\else
\ifcopyright
\copyright~\copyrightholders\\
\fi
\ifcreativecommons
This work is licensed under the
\ifnoncommercial
\href{https://creativecommons.org}{Creative Commons}\\
\ifnoderivs
\href{https://creativecommons.org/licenses/by-nc-nd/4.0/}
{Attribution-Noncommercial-No Derivative Works} License.
\else\ifsharealike
\href{https://creativecommons.org/licenses/by-nc-sa/4.0/}
{Attribution-Noncommercial-Share Alike} License.
\else
\href{https://creativecommons.org/licenses/by-nc/4.0/}
{Attribution-Noncommercial} License.
\fi\fi
\else
\ifnoderivs
\href{https://creativecommons.org}{Creative Commons}\\
\href{https://creativecommons.org/licenses/by-nd/4.0/}
{Attribution-No Derivative Works} License.
\else\ifsharealike
\href{https://creativecommons.org}{Creative Commons}\\
\href{https://creativecommons.org/licenses/by-sa/4.0/}
{Attribution-Share Alike} License.
\else
\\\href{https://creativecommons.org}{Creative Commons}
\href{https://creativecommons.org/licenses/by/4.0/}
{Attribution} License.
\fi\fi
\fi
\fi
\fi
\end{tabular}}}
\null
%\vskip 2em% a bit of space removed (< 2em)
\begin{center}%
\let \footnote \thanks
{\LARGE\bfseries \@title \par}% \bf added
\vskip 2em% was: 1.5em
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@author
\end{tabular}\par}%
\vskip 1em% \date and extra space removed
\end{center}%
\par
\markboth{\hfill\titlerunning}{\authorrunning\hfill}
\vskip .5em}
\AtBeginDocument{
\providecommand{\firstpage}{1}
\setcounter{firstpage}{\firstpage}
\setcounter{page}{\firstpage}
\@ifpackageloaded{array}% Contributed by Wolfgang Jeltsch
{\newcommand{\IfArrayPackageLoaded}[2]{#1}}
{\newcommand{\IfArrayPackageLoaded}[2]{#2}}}
\newcommand{\institute}[1]{\IfArrayPackageLoaded
{\\{\scriptsize\begin{tabular}[t]{@{}>{\footnotesize}c@{}}#1\end{tabular}}}
{\\{\scriptsize\begin{tabular}[t]{@{\footnotesize}c@{}}#1\end{tabular}}}}
\newcommand{\email}[1]{\\{\footnotesize\ttfamily #1}}
\renewenvironment{abstract}{\begin{list}{}% header removed and noindent
{\rightmargin\leftmargin
\listparindent 1.5em
\parsep 0pt plus 1pt}
\small\item}{\end{list}
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\RequirePackage{hyperref} % add hyperlinks
\RequirePackage{mathptmx} % Pick Times Roman as a base font
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Remember page numbers %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\newcounter{firstpage}
\setcounter{firstpage}{1}
\AtEndDocument{\clearpage
\addtocounter{page}{-1}
\immediate\write\@auxout{\string
\newlabel{LastPage}{{}{\thepage}{}{page.\thepage}{}}}%
\newwrite\pages
\immediate\openout\pages=\jobname.pag
\immediate\write\pages{\arabic{firstpage}-\arabic{page}}
\addtocounter{page}{1}}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% Less space in lists %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\def\@listi{\leftmargin\leftmargini
\parsep 2.5\p@ \@plus1.5\p@ \@minus\p@
\topsep 5\p@ \@plus2\p@ \@minus5\p@
\itemsep2.5\p@ \@plus1.5\p@ \@minus\p@}
\let\@listI\@listi
\@listi
\def\@listii {\leftmargin\leftmarginii
\labelwidth\leftmarginii
\advance\labelwidth-\labelsep
\topsep 1\p@ \@plus\p@ \@minus\p@
\parsep 1\p@ \@plus\p@ \@minus\p@
\itemsep \parsep}
\def\@listiii{\leftmargin\leftmarginiii
\labelwidth\leftmarginiii
\advance\labelwidth-\labelsep
\topsep \z@
\parsep \z@
\itemsep \topsep}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%% References small and with less space between items %%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\renewenvironment{thebibliography}[1]
{\section*{\refname}\small% small added
\list{\@biblabel{\@arabic\c@enumiv}}%
{\settowidth\labelwidth{\@biblabel{#1}}%
\leftmargin\labelwidth
\advance\leftmargin\labelsep
\@openbib@code
\usecounter{enumiv}%
\let\p@enumiv\@empty
\renewcommand\theenumiv{\@arabic\c@enumiv}}%
\sloppy
\clubpenalty4000
\@clubpenalty \clubpenalty
\widowpenalty4000%
\sfcode`\.\@m
\setlength{\parskip}{0pt}%
\setlength{\itemsep}{3pt plus 2pt}% less space between items
}
{\def\@noitemerr
{\@latex@warning{Empty `thebibliography' environment}}%
\endlist}