%%% Partnership for Advanced Computing in Europe %%% www.prace-ri.eu %%% %%% LaTeX document class for a PRACE white paper. %%% %%% (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}[2022/05/18 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 } \RequirePackage{siunitx} \RequirePackage{graphicx} \RequirePackage{ifthen} \RequirePackage{booktabs} \RequirePackage{iftex} % select a font close to Times New Roman (this will depend on the TeX interpreter, more to come) \ifpdftex \RequirePackage{mathptmx} \fi \ifxetex \RequirePackage{fontspec} \setmainfont{FreeSerif} % this looks a lot like mathptmx, though metric not fully compatible %\setmainfont{Liberation Serif} % this looks less like mathptmx, but has metric compatibility \fi \ifluatex \RequirePackage{fontspec} \setmainfont{FreeSerif} \fi % try and make sure \maketitle works when using UTF-8 characters and pdflatex/lualatex \ifpdftex \RequirePackage[T1]{fontenc} \fi \ifluatex \RequirePackage[utf8]{luainputenc} \fi % spacing between paragraphs and indents \RequirePackage{parskip} % page numbering \pagenumbering{arabic} % default values \def\authoremail{author@example.com} \def\refdoi{} % date on bottom right, page number in the middle, DOI on the left \RequirePackage{fancyhdr} \pagestyle{fancy} \fancyhead[L,C,R]{} \renewcommand{\headrulewidth}{0pt} \fancyfoot[C]{\thepage} \fancyfoot[R]{\@date} \fancyfoot[L]{\refdoi{}} % DOI as obtained from Zenodo or alike (PMO will reserve one first, then add here) \newcommand{\doi}[1]{\renewcommand\refdoi{#1}} % 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{center}% \authorlist \end{center}\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.0ex \@plus -.8ex \@minus -.2ex}% beforeskip, corresponding to 18pt in total {3.3ex \@plus.7ex}% afterskip, corresponding to 18pt in total {\normalfont\Large\bfseries}} \def\subsection{\@startsection{subsection}{2}{\z@}% {-3.0ex \@plus -.8ex \@minus -.2ex}% beforeskip, corresponding to 18pt in total {2.0ex \@plus.67ex}% afterskip, corresponding to 12pt in total {\normalfont\large\bfseries}} \def\subsubsection{\@startsection{subsubsection}{3}{\z@}% {-1.67ex \@plus -.8ex \@minus -.2ex}% beforeskip, corresponding to 12pt in total {2.0ex \@plus.67ex}% afterskip, corresponding to 12pt in total {\normalfont\large\itshape}} % redefine section, figure etc. format \RequirePackage{secdot} \sectiondot{subsection} \sectiondot{subsubsection} %\def\thesection {\arabic{section}} %\def\thesubsection {\thesection.\arabic{subsection}} %\def\thesubsubsection {\thesubsection\arabic{subsection}.} \def\figurename {Figure} \def\tablename {Table} % add horizontal 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]} % and changed formatting of heading \renewenvironment{thebibliography}[1] {\subsection*{\refname}% <- changed to match style of subsection \@mkboth{\MakeUppercase\refname}{\MakeUppercase\refname}% \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} {\def\@noitemerr {\@latex@warning{Empty `thebibliography' environment}}% \endlist}