%%% Partnership for Advanced Computing in Europe %%% www.prace-ri.eu %%% %%% LaTeX document class for a PRACE whitepaper. %%% %%% (c) CSC - IT Center for Science Ltd. %%% author: Martti Louhivuori (martti.louhivuori@csc.fi) %%% (c) JSC/PRACE %%% author: Dirk Broemmel (prace-pmo@fz-juelich.de) %%% %%% Requires: LaTeX2e %%% geometry, graphicx, ifthen, booktabs %%% \NeedsTeXFormat{LaTeX2e} \ProvidesClass{prace}[2021/06/29 PRACE Whitepaper class] \DeclareOption{onecolumn}{\OptionNotUsed} \DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} \ProcessOptions\relax % default font-size for main body text of the current template is 10pt \LoadClass[a4paper,10pt]{article} % A4: 210x297mm - 25mm margins top, left, right, 20mm on bottom \RequirePackage{geometry} \geometry{a4paper, total={165mm,247mm}, left=25mm, top=25mm, right=25mm, bottom=20mm, footskip=8mm } % select a font close to Times New Roman (this will depend on the TeX interpreter, more to come) \RequirePackage{mathptmx} \RequirePackage{siunitx} \RequirePackage{graphicx} \RequirePackage{ifthen} \RequirePackage{booktabs} % page numbering \pagenumbering{arabic} % date on bottom right, page number in the middle \RequirePackage{fancyhdr} \pagestyle{fancy} \fancyhead[L,C,R]{} \renewcommand{\headrulewidth}{0pt} \fancyfoot[C]{\thepage} \fancyfoot[R]{\@date} % default values \def\authoremail{author@example.com} % internal counters \newcounter{praceauth} \setcounter{praceauth}{0} \renewcommand\thepraceauth{\alph{praceauth}} \newcounter{praceaffi} \setcounter{praceaffi}{0} \renewcommand\thepraceaffi{\alph{praceaffi}} \newcounter{pracetmp} \setcounter{pracetmp}{0} \renewcommand\thepracetmp{\alph{pracetmp}} % author contact details \newcommand{\email}[1]{\renewcommand\authoremail{#1}} % tag corresponding author \newif\if@iscorresponding \@iscorrespondingfalse \newif\if@hascorresponding \@hascorrespondingfalse \newcommand\corresponding[0]{\@iscorrespondingtrue\@hascorrespondingtrue} % corresponding author footnote \long\def\authorfootnote{% \def\thefootnote{\fnsymbol{footnote}}% \csname c@\@mpfn\endcsname 1\relax% \protected@xdef\@thefnmark{\thempfn}% \@footnotetext} % corresponding author contact detail footnote \def\authorcontact{% \authorfootnote{Corresponding author, % e-mail: \authoremail{}} } % tmp flag \newif\if@praceflag \@praceflagfalse % convert integers to letters \def\csvitoalist{} \newcommand\csvitoa[1]{ \def\csvitoalist{} \@for\name:=#1\do{ \setcounter{pracetmp}{\name} \if@praceflag \edef\csvitoalist{\csvitoalist,\thepracetmp} \else \edef\csvitoalist{\thepracetmp} \@praceflagtrue \fi} \@praceflagfalse \csvitoalist } % store author definitions for later use \def\authorlist{} \def\tmpname{} \renewcommand\author[2][a]{% % \def\alfalist{} \@for\name:=#1\do{ \setcounter{pracetmp}{\name} \if@praceflag \edef\alfalist{\alfalist,\thepracetmp} \else \edef\alfalist{\thepracetmp} \@praceflagtrue \fi} \@praceflagfalse % % \def\alfalist{\csvitoa{#1}} % \def\tmpname{#2} \if@iscorresponding \edef\tmpname{\tmpname{}${}^{\alfalist{},*}$} \else \edef\tmpname{\tmpname{}${}^{\alfalist}$} \fi \ifnum \c@praceauth >\z@ \edef\authorlist{\authorlist{}, \tmpname{}} \else \edef\authorlist{\tmpname{}} \fi \@iscorrespondingfalse \addtocounter{praceauth}{1} } % store affiliation definitions for later use \def\affiliationlist{} \newcommand\affiliation[2][a]{% \addtocounter{praceaffi}{1} \def\tmpname{{${}^{\thepraceaffi}$#2}} \ifnum \c@praceaffi >\@ne \edef\affiliationlist{\affiliationlist{},\tmpname{}} \else \edef\affiliationlist{\tmpname{}} \fi% } % output affiliation list \newcommand\affiliationblock[0]{% \@for\name:=\affiliationlist\do{\name\\}} % title block \renewcommand{\maketitle}{% \newpage \noindent\begin{minipage}{3cm} \includegraphics[width=3cm]{prace-logo} \end{minipage} \begin{minipage}{10.5cm} \centering% Available on-line at www.prace-ri.eu\\\vspace{1em} {\large\bfseries Partnership for Advanced Computing in Europe} \end{minipage} \begin{minipage}{3cm} \end{minipage}\\ \null \vskip 2em% \begin{center}% \let \footnote \thanks {\LARGE \@title \par}% \vskip 1.5em% {\large \lineskip .5em% \begin{tabular}[t]{c}% \authorlist \end{tabular}\par}% \vskip 1em% \affiliationblock \if@hascorresponding \authorcontact \else \@latex@warning{Corresponding author is undefined} \fi \end{center}% \par \vskip 1.5em% } % section heading formats \def\section{\@startsection {section}{1}{\z@}% {-3.5ex \@plus -1ex \@minus -.2ex}% {2.3ex \@plus.2ex}% {\normalfont\normalsize\bfseries}} \def\subsection{\@startsection{subsection}{2}{\z@}% {-3.25ex\@plus -1ex \@minus -.2ex}% {1.5ex \@plus .2ex}% {\normalfont\normalsize\itshape}} \def\subsubsection{\@startsection{subsubsection}{3}{\z@}% {-3.25ex\@plus -1ex \@minus -.2ex}% {1.5ex \@plus .2ex}% {\normalfont\normalsize\itshape}} % redefine section, figure etc. format \def\thesection {\arabic{section}.} \def\thesubsection {\thesection\arabic{subsection}.} \def\thesubsubsection {\thesubsection\arabic{subsection}.} \def\figurename{Fig.} \def\tablename{Table} % add horisontal lines before and after the abstract \renewenvironment{abstract}% {\noindent\rule{\textwidth}{0.1pt} \small \noindent{\bfseries \abstractname} \quotation}% {\vspace{1em}\\ \noindent\rule{\textwidth}{0.1pt}} % no indentation for quotations \renewenvironment{quotation}% {\list{}{% \listparindent 0.0em \itemindent \listparindent \rightmargin \leftmargin \parsep \z@ \@plus\p@}% \item\relax} {\endlist} % add space either after table caption or before figure caption \newif\if@withintable \@withintablefalse \newif\if@withinfigure \@withinfigurefalse \renewenvironment{figure} {\@withinfiguretrue\@float{figure}} {\end@float\@withinfigurefalse} \renewenvironment{figure*} {\@withinfiguretrue\@dblfloat{figure}} {\end@dblfloat\@withinfigurefalse} \renewenvironment{table} {\@withintabletrue\@float{table}} {\end@float\@withintablefalse} \renewenvironment{table*} {\@withintabletrue\@dblfloat{table}} {\end@dblfloat\@withintablefalse} \setlength\abovecaptionskip{10\p@} \setlength\belowcaptionskip{10\p@} \long\def\@makecaption#1#2{% \if@withinfigure \vskip\abovecaptionskip \fi {\small #1. #2\par} \if@withintable \vskip\belowcaptionskip \fi} % ref.number in References \def\@biblabel#1{\indent#1.}