% \iffalse meta-comment % % Copyright (C) 2019-2020 by Jan Hajer % ----------------------------------- % % This file may be distributed and/or modified under the % conditions of the LaTeX Project Public License, either version 1.3c % 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.3c or later is part of all distributions of LaTeX % version 2005/12/01 or later. % % \fi % % \iffalse % %\NeedsTeXFormat{LaTeX2e}[2005/12/01] %\ProvidesPackage{hep-paper}[2020/08/01 v1.4 Publications in High Energy Physics] %\ProvidesFile{hep-paper.dbx}[2020/08/01 v1.4 HEP-Paper biblatex data model] % %<*documentation> \RequirePackage[l2tabu, orthodox]{nag} \documentclass{ltxdoc} \EnableCrossrefs \CodelineIndex \RecordChanges \MacroIndent=1.5em \usepackage[parskip]{hep-paper} \bibliography{bibliography} \acronym{PDF}{portable document format} \acronym{URL}{uniform resource locator} \usepackage{hologo} \newenvironment{columns}[1][.5]{% \begin{minipage}[t]{\linewidth}% \begin{minipage}[t]{#1\linewidth}% \newcommand{\column}{% \end{minipage}% \begin{minipage}[t]{\linewidth-#1\linewidth}% }% }{\end{minipage}\end{minipage}} \setlength{\fboxsep}{1pt} % %<*driver> \expandafter\newif\csname ifshort\endcsname \shortfalse \begin{document} \DocInput{hep-paper-implementation.dtx} \end{document} % % % \fi % % \CheckSum{1302} % % \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 \~} % % \changes{v1.0}{2019/01/01}{Initial version of the style file.} % \changes{v1.1}{2020/01/01}{Transition to documented \hologo{LaTeX} source file.} % \changes{v1.2}{2020/03/01}{Introduction of package options.} % \changes{v1.3}{2020/05/01}{Inclusion of JHEP and JCAP package options. Fix of incompatibility with recent subcaption package version. Move of biblatex datamodel into its own file} % \changes{v1.4}{2020/08/01}{If possible the compatibility options are selected automatically. Inclusion of PubMed IDs in bibliography.} % % \ifshort %<*documentation> % \begin{document} % \fi \GetFileInfo{hep-paper.sty} \title{The |hep-paper| package\thanks{This document corresponds to \protecting{|hep-paper|}~\fileversion.}} \author{Jan Hajer \email{jan.hajer@uclouvain.be}} \affiliation{Centre for Cosmology, Particle Physics and Phenomenology, Université catholique de Louvain, Louvain-la-Neuve B-1348, Belgium} \preprint{Preprint-Number} \date{\normalfont\filedate} \maketitle \begin{abstract} The |hep-paper| package aims to provide a single style file containing most configurations and macros necessary to write appealing publications in High Energy Physics. Instead of reinventing the wheel by introducing newly created macros |hep-paper| preferably loads third party packages as long as they are lightweight enough. \end{abstract} \tableofcontents\clearpage \newgeometry{vscale=.8, vmarginratio=3:4, includeheadfoot, left=11em, marginparwidth=4.6cm, marginparsep=3mm, right=7em} \section{Introduction} For usual publications it is enough to load additionally to the |article| class without optional arguments only the |hep-paper| package \cite{hep-paper}. | \documentclass{article}|\\ | \usepackage{hep-paper}| The most notable changes after loading the |hep-paper| package is the change of some \hologo{LaTeX} defaults. The paper and font sizes are set to A4 and \unit[11]{pt}, respectively. Additionally, the paper geometry is set to the values known from the (depreciated) |a4wide| package \cite{a4wide} using the |geometry| package \cite{geometry}. Furthermore, the font is changed to |lmodern| \cite{lmodern} with |microtype| \cite{microtype} optimizations. Finally, \PDF hyperlinks are implemented with the |hyperref| package \cite{hyperref}. \subsection{Options} \DescribeMacro{paper} The |paper=|\meta{format} option loads the specified paper format. The possible \meta{formats} are: |a0|, |a1|, |a2|, |a3|, |a4|, |a5|, |a6|, |b0|, |b1|, |b2|, |b3|, |b4|, |b5|, |b6|, |c0|, |c1|, |c2|, |c3|, |c4|, |c5|, |c6|, |ansia|, |ansib|, |ansic|, |ansid|, |ansie|, |letter|, |executive|, |legal|. The default is |a4|. \DescribeMacro{font} The |font=|\meta{size} option loads the specified font size. The possible \meta{sizes} are: |8pt|, |9pt|, |10pt|, |11pt|, |12pt|, |14pt|, |17pt|, |20pt|. The default is \unit[11]{pt}. \DescribeMacro{lang} The |lang|=\meta{name} option switches the document language to the chosen value. The possible values are given by the |babel| package \cite{babel}. The default is |british|. \DescribeMacro{sansserif} The |sansserif| option switches the document including math to the sans serif font shape. \DescribeMacro{parskip} The |parskip| option makes use of the |parskip| package \cite{parskip} and changes how two paragraphs are separated from each other. The \hologo{LaTeX} default is separation via indentation the |parskip| option switches to separation via vertical space. \footnote{Although the |parskip| option is used for this document, it is recommended only for very few document types such as technical manuals or answers to referees.} \subsubsection{Deactivation} The \software{hep-paper} package loads few bigger packages which have a large impact on the document. The deactivation options prevent such adjustments. \DescribeMacro{defaults} The |defaults| option prevents the adjustment of the page geometry and the font size set by the document class. \DescribeMacro{title} The |title=false| option deactivates the title page adjustments. \DescribeMacro{bibliography} The |bibliography|=\meta{key} option prevents the automatic loading of the |biblatex| package \cite{biblatex} if \meta{key}=|false|. Otherwise the \meta{key} is passed as |style| string to the |biblatex| package. \DescribeMacro{glossaries} The |glossaries=false| option deactives acronyms and the use of the |glossaries| package \cite{glossaries}. \DescribeMacro{references} The |references=false| option prevents the |cleveref| pacakge \cite{cleveref} from being loaded and deactivates further redefinitions of reference macros. \subsubsection{Compatibility} The compatibility options activate the compatibility mode for certain classes and packages used for publications in high energy physics. They are mostly suitable combinations of options described in the previous section. If \software{hep-paper} is able to detect the presence of such a class or package, \ie if it is loaded before the \software{hep-paper} package, the compatibility mode is activated automatically. \DescribeMacro{beamer} The |beamer| option activates the \software{beamer} \cite{beamer} compatibility mode. \DescribeMacro{jhep} The |jhep| option activates the \software{JHEP} \cite{jhep} compatibility mode. \DescribeMacro{jcap} The |jcap| option activates the \software{JCAP} \cite{jcap} compatibility mode. \DescribeMacro{revtex} The |revtex| option activates the REV\hologo{TeX} \cite{revtex} compatibility mode. \DescribeMacro{pos} The |pos| option activates the \software{PoS} compatibility mode. \subsubsection{Reactivation} The \software{hep-paper} package deactivates unrecommended macros, which can be reactivated manually. \DescribeMacro{manualplacement} The |manualplacement| option reactivates manual float placement. \DescribeMacro{eqnarray} The |eqnarray| option reactivates the depreciated |eqnarray| environment. \section{Macros and environments} \subsection{Title page} \DescribeMacro{\author} \DescribeMacro{\affiliation} \DescribeMacro{\email} In order to facilitate multiple authors with different affiliations the |authblk| package \cite{authblk} is loaded. The following lines add \eg two authors with different affiliations | \author[1]{Author one \email{Email one}}|\\ | \affiliation[1]{Affiliation one}|\\ | \author[2]{Author two \email{Email two}}|\\ | \affiliation[1,2]{Affiliation two}| \DescribeMacro{\title} The \PDF meta information is set according to the |\title|\marg{text} and |\author| \marg{text} information. \DescribeMacro{\preprint} The |\preprint|\marg{numer} macro places a pre-print number in the upper right corner of the title page. \DescribeEnv{abstract} The |abstract| environment is adjusted to not start with an indentation. \subsection{Text} Hyphenation is provided by the |babel| package \cite{babel} and quotation commands are provided by the |csquotes| package \cite{csquotes} recommended by the |babel| package. \DescribeMacro{\enquote} \DescribeMacro{\MakeOuterQuote} The latter package provides the convenient macros |\enquote|\marg{text} and |\MakeOuterQuote{"}| allowing to leave the choice of quotation marks to \hologo{LaTeX} and use |"| instead of the pair |``| and |''|, respectively. \DescribeMacro{\eg} \DescribeMacro{\vs} The |foreign| package \cite{foreign} defines macros such as |\eg|, |\ie|, |\cf|, and |\vs| which are typeset as \eg, \ie, \cf, and \vs. \DescribeMacro{\no} The |\no|\marg{number} macro is typeset as \no{123}. \DescribeMacro{\software} The |\software|\oarg{version}\marg{name} macro is typeset as \software[\fileversion]{HEP-Paper}. \DescribeMacro{\online} The |\online|\marg{url}\marg{text} macro combines the features of the |\href|\marg{url} \marg{text} \cite{hyperref} and the |\url|\marg{text} \cite{url} macros, resulting in \eg \online{https://ctan.org/pkg/hep-paper}{ctan.org/pkg/hep-paper}. The |inlinelist| and |enumdescript| environments are defined using the |enumitem| package \cite{enumitem}. \DescribeMacro{inlinelist} \begin{columns} |The three main points are| |\begin{inlinelist}| | \item one| | \item two| | \item three| |\end{inlinelist}| \column The three main points are \begin{inlinelist} \item one \item two \item three \end{inlinelist} \end{columns} \DescribeMacro{enumdescript} \begin{columns}[.6] |\begin{enumdescript}[label=\Roman*)]| | \item{First} one| | \item{Second} two| | \item{Third} three| |\end{enumdescript}| \column \begin{enumdescript}[label=\Roman*)] \item{First} one \item{Second} two \item{Third} three \end{enumdescript} \end{columns} \DescribeMacro{\textsc} A bold versions \textbf{\textsc{Small Caps}} and a sans serif version of \textsf{\textsc{Small Caps}} is provided, using the |sansmathfonts| package \cite{sansmathfonts}. \DescribeMacro{\underline} \DescribeMacro{\overline} The |\underline| macro is redefined to allow line-breaks using the |ulem| package \cite{ulem}. The |\overline| macro is extended to also \overline{overline} text outside of math environments. \DescribeMacro{\useparskip} \DescribeMacro{\useparindent} If the |parskip| option is activated the |\useparindent| macro switches back the usual parindent mode, while the |\useparskip| macro switches to the parskip mode. \subsubsection{References and footnotes} \DescribeMacro{\cref} References are extended with the |cleveref| package \cite{cleveref}, which allows to \eg just type |\cref|\marg{key} in order to write \enquote{figure 1}. Furthermore, the |cleveref| package allows to reference multiple objects within one |\cref|\marg{key1,key2}. \DescribeMacro{\cite} Citations are adjusted to not start on a new line in order to avoid the repeated use of |~\cite|\marg{key}. \DescribeMacro{\ref} \DescribeMacro{\eqref} \DescribeMacro{\subref} References are also adjusted to not start on a new line and are redefined in order to handle multiple references at once. \DescribeMacro{\footnote} Footnotes are adjusted to swallow white space before the footnote mark and at the beginning of the footnote text. \subsubsection{Acronyms} \DescribeMacro{\acronym} \DescribeMacro{\shortacronym} \DescribeMacro{\longacronym} The |\acronym|\meta{*}\oarg{typeset abbreviation}\marg{abbreviation}\meta{*}\marg{definition}\oarg{plural\linebreak[4]definition} macro generates the singular |\|\meta{abbreviation} and plural |\|\meta{abbreviation}|s| macros. The first star prevents the addition of an \enquote{s} to the abbreviation plural. The second star restores the \hologo{TeX} default of swallowing subsequent white space. The long form is only shown at the first appearance of these macros, later appearances generate the abbreviation with a hyperlink to the long form. Capitalization at the beginning of paragraphs and sentences is ensured. The |\shortacronym| and |\longacronym| macros are drop-in replacements of the |\acronym| macro showing only the short or long form of their acronym. \DescribeMacro{\resetacronym} \DescribeMacro{\dummyacronym} The first use form of the acronym can be enforced by resetting the acronym counter with |\resetacronym|\marg{key}. If the acronym counter equals one at the end of the document the short form of the acronym is not introduced. Placing a |\dummyacronym|\marg{key} at the end of the document ensures that the short form is introduced. \subsection{Math} The |mathtools| \cite{mathtools} and |amssymb| \cite{amsfonts} packages are loaded. They in turn load the \hologo{AmSLaTeX} |amsmath| \cite{amsmath} and |amsfonts| \cite{amsfonts} packages. \DescribeMacro{\mathbf} Bold math, via |\mathbf| is improved by the |bm| package \cite{bm}, \ie ($ A b \Gamma \delta \mathbf A \mathbf b \mathbf \Gamma \mathbf \delta$). Macros switching to |bfseries| such as |\section|\marg{text} are ensured to also typeset math in bold. This may cause trouble if bold symbols carry an additional non-implicit meaning. \DescribeMacro{\text} The |\text|\marg{text} macro makes it possible to write text within math mode, \ie ($ \text A \text b \text \Gamma \text \delta \text{\textbf A} \text{\textbf b} \text{\textbf \Gamma} \text{\textbf \delta}$). The often used |\mathrm|\marg{text} and |{\rm|\meta{text}|}| macros are \emph{not} the correct tool for this purpose, as they switch to roman font shape. This behaviour conflicts \eg with the |sansserif| package option. \DescribeMacro{\mathsf} The math sans serif alphabet is redefined to be italic sans serif if the main text is serif and italic serif if the main text is sans serif, \ie ($\mathsf A \mathsf b \mathsf \Gamma \mathsf \delta \mathbf{\mathsf A} \mathbf{\mathsf b} \mathbf{\mathsf \Gamma} \mathbf{\mathsf \delta}$). \DescribeMacro{\mathscr} The |\mathcal| font \ie ($\mathcal{ABCD}$) is accompanied by the |\mathscr| font \ie ($\mathscr{ABCD}$). \DescribeMacro{\mathbb} The |\mathbb| font is improved by the |doublestroke| package \cite{dsfont} and adjusted depending on the |sansserif| option \ie ($\mathbb{Ah1}$). \DescribeMacro{\mathfrak} Finally, the |\mathfrak| font is also available \ie ($\mathfrak{AaBb12}$). Details about the font handling in \hologo{TeX} can be found in \ccite{fntguide}. \DescribeMacro{\nicefrac} \DescribeMacro{\flatfrac} The |\frac|\marg{number}\marg{number} macro is accompanied by |\nicefrac|\linebreak[1]\marg{number}\linebreak[1]\marg{number} and |\flatfrac|\marg{number}\marg{number} leading to $\frac12$, $\nicefrac 12$, and $\flatfrac 12$. \DescribeMacro{\diag} \DescribeMacro{\sgn} Diagonal matrix |\diag| and signum |\sgn| operators are defined. \DescribeMacro{\mathdef} The |\mathdef|\marg{name}\oarg{arguments}\marg{code} macro (re-)defines macros only within math mode without changing the text mode definition. \DescribeMacro{\i} \DescribeMacro{\d} The imaginary unit $\i$ and the differential $\d$ are defined using this functionality. \DescribeMacro{\numberwithin} For longer paper it can be useful to re-number the equation in accordance with the section numbering |\numberwithin{equation}{section}|. \DescribeMacro{subequations} In order to further reduce the size the of equation counter it can be useful to wrap |align| environments with multiple rows in a |subequations| environment. Both macros are provided by the |amsmath| package. \DescribeMacro{eqnarray} The depreciated |eqnarray| environment is undefined as long this behaviour is not prevented by the |eqnarray| package option. The |split|, |multline|, |align|, |multlined|, |aligned|, |alignedat|, and |cases| environments of the |amsmath| and |mathtools| packages should be used instead. \DescribeMacro{equation} Use the |equation| environment for short equations. \begin{columns} |\begin{equation}| | left = right \ .| |\end{equation}| \column \begin{equation} \framebox[2em]{left\strut} = \framebox[7em]{right\strut} \ . \end{equation} \end{columns} \DescribeMacro{multline} Use the |multline| environment for longer equations. \begin{columns} |\begin{multline}| | left = right 1 \\| | + right 2 \ .| |\end{multline}| \column \begin{multline} \framebox[2em]{left\strut} = \framebox[7em]{right 1\strut} \\ \framebox[7em]{+ right 2\strut} \ . \end{multline} \end{columns} \DescribeMacro{split} Use the |split| sub environment for equations in which multiple equal signs should be aligned. \begin{columns} |\begin{equation} \begin{split}| | left &= right 1 \\| | &= right 2 \ .| |\end{split} \end{equation}| \column \begin{equation} \begin{split} \framebox[2em]{left\strut} &= \framebox[7em]{right 1\strut} \\ &= \framebox[7em]{right 2\strut} \ . \end{split} \end{equation} \end{columns} \DescribeMacro{align} Use the |align| environment for the vertical alignment and horizontal distribution of multiple equations. \begin{columns} |\begin{subequations}| |\begin{align}| | left &= right \ , &| | left &= right \ , \\| | left &= right \ , &| | left &= right \ .| |\end{align}| |\end{subequations}| \column \begin{subequations} \begin{align} \framebox[2em]{left\strut} &= \framebox[3em]{right\strut} \ , & \framebox[2em]{left\strut} &= \framebox[3em]{right\strut} \ , \\ \framebox[2em]{left\strut} &= \framebox[3em]{right\strut} \ , & \framebox[2em]{left\strut} &= \framebox[3em]{right\strut} \ . \end{align} \end{subequations} \end{columns} \DescribeMacro{aligned} Use the |aligned| environment within a |equation| environment if the aligned equations should be labeled with a single equation number. \DescribeMacro{multlined} Use the |multlined| environment if either |split| or |align| contain very long lines. \begin{columns} |\begin{equation} \begin{split}| | left &= right 1 \\ &=| | \begin{multlined}[t]| | right 2 \\ + right 3 \ .| | \end{multlined}| |\end{split} \end{equation}| \column \begin{equation} \begin{split} \framebox[2em]{left\strut} &= \framebox[7em]{right 1\strut} \\ &= \begin{multlined}[t] \framebox[7em]{right 2\strut} \\ \framebox[7em]{+ right 3\strut} \ . \end{multlined} \end{split} \end{equation} \end{columns} \DescribeMacro{alignat} Use the |alignat| environment together with the |\mathllap| macro for the alignment of multiple equations with vastly different lengths. \begin{columns} |\begin{subequations}| |\begin{alignat}{2}| | left &= long right && \ , \\| | le. 2 &= ri. 2 \ , &| | \mathllap{le. 3 = ri. 3} & \ .| |\end{alignat}| |\end{subequations}| \column \begin{subequations} \begin{alignat}{2} \framebox[2em]{left\strut} &= \framebox[11em]{long right\strut} && \ , \\ \framebox[2em]{le.\ 2\strut} &= \framebox[2.5em]{ri.\ 2\strut} \ , & \mathllap{\framebox[2em]{le.\ 3\strut} = \framebox[2.5em]{ri.\ 3\strut}} & \ . \end{alignat} \end{subequations} \end{columns} As a rule of thumb if you have to use |\notag|, |\nonumber|, or perform manual spacing via |\quad| you are probably using the wrong environment. \subsubsection{Physics} Greek letters are adjusted to always be italic and upright in math and text mode, respectively, using the |fixmath| \cite{fixmath} and |alphabeta| \cite{alphabeta} packages. This allows differentiations like \begin{align} \sigma &= \unit[5]{fb} \ , & &\text{at \unit[5]{\sigma} C.L.} \ , & \mu &= \unit[5]{cm} \ , & l &= \text{\unit[5]{\mu m}} \ , \label{eq:greek} \end{align} and \eg to distinguish gauge $\nu$ and mass \nu\ eigenstates in models with massive neutrinos. Additionally, Greek letters can also be directly typed using Unicode. \DescribeMacro{\ev} \DescribeMacro{\pdv} \DescribeMacro{\comm} \DescribeMacro{\order} The |physics| package \cite{physics} provides additional macros such as \begin{align} &\ev{\phi} \ , &&\pdv[n]{f}{x} \ , &&\comm{A}{B} \ , &&\order{x^2} \ , &&\eval{x}_0^\infty \ , &&\det(M)\ . \end{align} \DescribeMacro{\cancel} \DescribeMacro{\slashed} The |\cancel|\marg{characters} macro from the |cancel| \cite{cancel} package and the |\slashed| \marg{character} macro from the |slashed| \cite{slashed} package allow to $\cancel{\text{cancel}}$ math and use the Dirac slash notation \ie $\slashed \partial$, respectively. \DescribeMacro{\overleftright} A better looking over left right arrow is defined \ie $\overleftright{\partial}$. \DescribeMacro{\unit} \DescribeMacro{\inv} The correct spacing for units, \cf \cref{eq:greek}, is provided by the macro |\unit|\oarg{value} \marg{unit} from the |units| package \cite{units} which can also be used in text mode. The macro |\inv|\oarg{power}\marg{text} allows to avoid math mode also for inverse units such as \unit[5]{\inv{fb}} typeset via |\unit[5]{\inv{fb}}|. \subsection{Floats} \DescribeEnv{figure} \DescribeEnv{table} Automatic float placement is adjusted to place a single float at the top of pages and to reduce the number of float pages, using the \hologo{LaTeX} macros. |\setcounter{bottomnumber}{0}| \hfill no floats at the bottom of a page (default 1) \\ |\setcounter{topnumber}{1}| \hfill a single float at the top of a page (default 2) \\ |\setcounter{dbltopnumber}{1}| \hfill same for full widths floats in two-column mode \\ |\renewcommand{\textfraction}{.1}| \hfill large floats are allowed (default 0.2)\\ |\renewcommand{\topfraction}{.9}| \hfill (default 0.7) \\ |\renewcommand{\dbltopfraction}{.9}| \hfill (default 0.7) \\ |\renewcommand{\floatpagefraction}{.8}| \hfill float pages must be full (default 0.5) Additionally, manual float placement is deactivated but can be reactivated using the |manualplacement| package option. It is however recommended to archive the desired design by adjusting above macros. The most useful float placement is usually archived by placing the float \emph{in front} of the paragraph it is referenced in first. \DescribeMacro{\raggedright} The float environments have been adjusted to center their content. The usual behaviour can be reactivated using |\raggedright|. \begin{table} \begin{panels}{.6} \raggedright |\begin{panels}{.6}|\\ |code|\\ |\panel{.4}|\\ |\begin{tabular}...\end{tabular}|\\ |\end{panels}|\\ \caption{Code for this panel environment.} \label{tab:panels} \panel{.4} \begin{tabular}{cccc} \toprule \multicolumn{2}{c}{one}& \multicolumn{2}{c}{two} \\ \cmidrule(r){1-2} \cmidrule(l){3-4} \multirow{2}{*}{a} & b & c & d \\ & b & c & d \\ \bottomrule \end{tabular} \caption{The \protecting{|booktabs|} and \protecting{|multirow|} features.} \label{tab:booktabs} \end{panels} \caption{Example use of the \protecting{|panels|} environment in Panel \subref{tab:panels} and the features from the \protecting{|booktabs|} and \protecting{|multirow|} packages in Panel \subref{tab:booktabs}. } \label{tab:table} \end{table} \DescribeEnv{panels} \DescribeMacro{\panel} The |panels| environment makes use of the |subcaption| package \cite{subcaption}. It provides sub-floats and takes as mandatory argument either the number of sub-floats (default~2) or the width of the first sub-float as fraction of the |\linewidth|. Within the |\begin{panels}|\oarg{vertical alignment}\marg{width} environment the |\panel| macro initiates a new sub-float. In the case that the width of the first sub-float has been given as an optional argument to the |panels| environment the |\panel|\marg{width} macro takes the width of the next sub-float as mandatory argument. The example code is presented in \cref{tab:panels}. \DescribeEnv{tabular} The |booktabs| \cite{booktabs} and |multirow| \cite{multirow} packages are loaded enabling publication quality tabulars such as in \cref{tab:booktabs}. \DescribeMacro{\graphic} \DescribeMacro{\graphics} The |graphicx| package \cite{graphicx} is loaded and the |\graphic|\oarg{width}\marg{figure} macro is defined, which is a wrapper for the |\includegraphics|\marg{figure} macro and takes the figure width as fraction of the |\linewidth| as optional argument (default~1). If the graphics are located in a sub-folder its path can be indicated by |\graphics|\marg{subfolder}. \subsection{Bibliography} \DescribeMacro{\bibliography} \DescribeMacro{\printbibliography} The |biblatex| package \cite{biblatex} is loaded for bibliography management. The user has to add the line |\bibliography|\marg{my.bib} to the preamble of the document and |\printbibliography| at the end of the document. The bibliography is generated by \software{Biber} \cite{biber}. |biblatex| is extended to be able to cope with the |collaboration| and |reportNumber| fields provided by \online{https://inspirehep.net}{inspirehep.net} and a bug in the volume number is fixed. Additionally, the PubMed IDs are recognized and \online{https://ctan.org}{ctan.org}, \online{https://github.com}{github.com}, \online{https://gitlab.com}{gitlab.com}, \online{https://bitbucket.org}{bitbucket.org}, \online{https://www.launchpad.net}{launchpad.net}, \online{https://sourceforge.net}{sourceforge.net}, and \online{https://hepforge.org}{hepforge.org} are valid |eprinttype|s. \DescribeMacro{erratum} Errata can be included using the |related| feature. | \article{|\meta{key1}|,|\\ | |\dots|,|\\ | relatedtype="erratum",|\\ | related="|\meta{key2}|",|\\ | }|\\ | \article{|\meta{key2}|,|\\ | |\dots|,|\\ | }| \section{Conclusion} The |hep-paper| package provides a matching selection of preloaded packages and additional macros enabling the user to focus on the content instead of the layout by reducing the amount of manual tasks. The majority of the loaded packages are fairly lightweight, the others can be deactivated with package options. \DescribeMacro{arxiv-collector} \nolinkurl{arxiv.org} \cite{arxiv} requires the setup dependent |bbl| files instead of the original |bib| files, which causes trouble if the local \hologo{LaTeX} version differs from the one used by arXiv. The |arxiv-collector| python script \cite{arxiv-collector} alleviates this problem by collecting all files necessary for publication on arXiv (including figures). % \ifshort \printbibliography \end{document} % % % \fi % % \StopEventually{ % \printbibliography % \PrintChanges % } % % \addtocontents{toc}{\protect\clearpage} % \clearpage % \appendix % % \ifshort %<*package> % \fi % % \section{Options} % % Load the |pdftexcmds| \cite{pdftexcmds} and |kvoptions| \cite{kvoptions} packages and define a |hep| namespace. % \begin{macrocode} \RequirePackage{pdftexcmds} \RequirePackage{kvoptions} \SetupKeyvalOptions{ family=hep, prefix=hep@ } % \end{macrocode} % % \begin{macro}{paper} % Define a |paper=|\meta{size} option. % Make A4 paper the default. % \begin{macrocode} \DeclareStringOption[a4]{paper} % \end{macrocode} % \end{macro} % % \begin{macro}{font} % Define a |font=|\meta{size} option. % Make \unit[11]{pt} the default font size. % \begin{macrocode} \DeclareStringOption[11pt]{font} % \end{macrocode} % \end{macro} % % \begin{macro}{lang} % Define the |lang| option, which takes the values provided by the |babel| package \cite{babel}. % Make |british| the default language. % \begin{macrocode} \DeclareStringOption[british]{lang} % \end{macrocode} % \end{macro} % % \begin{macro}{sansserif} % Define the option pair |serif| and |sansserif| controling the font shape of the whole document. % \begin{macrocode} \DeclareBoolOption[true]{serif} \DeclareComplementaryOption{sansserif}{serif} % \end{macrocode} % \end{macro} % % \begin{macro}{parskip} % Define the option pair |parindent| and |parskip| controlling the separation of paragraphs. % \begin{macrocode} \DeclareBoolOption[true]{parindent} \DeclareComplementaryOption{parskip}{parindent} % \end{macrocode} % \end{macro} % % \subsection{Deactivation} % % \begin{macro}{defaults} % Define the |defaults| option which deactivates the |paper| and |font| options and prevents the change of the class defaults by this package. % \begin{macrocode} \DeclareBoolOption[false]{defaults} % \end{macrocode} % \end{macro} % % \begin{macro}{title} % Provide the option |title| for deactivating redefinition of title macros. % \begin{macrocode} \DeclareBoolOption[true]{title} % \end{macrocode} % \end{macro} % % \begin{macro}{bibliography} % Provide the option |bibliography| for passing a |style| string to the |biblatex| package \cite{biblatex} or disabling the automatic loading of |biblatex|. % \begin{macrocode} \DeclareStringOption[numeric-comp]{bibliography} % \end{macrocode} % \end{macro} % % \begin{macro}{glossaries} % Provide the option |glossaries| able to turn of the use of the |glossaries| package \cite{glossaries}. % \begin{macrocode} \DeclareBoolOption[true]{glossaries} % \end{macrocode} % \end{macro} % % \begin{macro}{references} % Provide the option |references| for preventing the |cleveref| package from being loaded redefinitions of reference macros. % \begin{macrocode} \DeclareBoolOption[true]{references} % \end{macrocode} % \end{macro} % % \subsection{Compatibility} % % \begin{macro}{beamer} % Provide the option |beamer| for \software{beamer} \cite{beamer} compatibility mode. % \begin{macrocode} \DeclareBoolOption[false]{beamer} % \end{macrocode} % \end{macro} % % \begin{macro}{revtex} % Provide the option |revtex| for REV\hologo{TeX} \cite{revtex} compatibility mode. % \begin{macrocode} \DeclareBoolOption[false]{revtex} % \end{macrocode} % \end{macro} % % \begin{macro}{jhep} % Provide the option |jhep| for |JHEP| \cite{jhep} compatibility mode. % \begin{macrocode} \DeclareBoolOption[false]{jhep} % \end{macrocode} % \end{macro} % % \begin{macro}{jcap} % Provide the option |jcap| for |JCAP| \cite{jcap} compatibility mode. % \begin{macrocode} \DeclareBoolOption[false]{jcap} % \end{macrocode} % \end{macro} % % \begin{macro}{pos} % Provide the option |pos| for |PoS| compatibility mode. % \begin{macrocode} \DeclareBoolOption[false]{pos} % \end{macrocode} % \end{macro} % % \subsection{Reactivation} % % \begin{macro}{eqnarray} % Provide the option |eqnarray| for reactivating the |eqnarray| environment. % \begin{macrocode} \DeclareBoolOption[false]{eqnarray} % \end{macrocode} % \end{macro} % % \begin{macro}{manualplacement} % Provide the |manualplacement| option for reactivating the manual placement of floats. % \begin{macrocode} \DeclareBoolOption[false]{manualplacement} % \end{macrocode} % \end{macro} % % \subsection{Process options} % % \begin{macrocode} \ProcessKeyvalOptions* % \end{macrocode} % % \subsection{Set compatibility} % % Set the |pos| compatibility options. % \begin{macrocode} \@ifclassloaded{PoS}{\setkeys{hep}{pos}}{} \ifhep@pos \setkeys{hep}{defaults, title=false} \DeclareRobustCommand\boldmath{\@nomath\boldmath\mathversion{bold}} \fi % \end{macrocode} % % Set the |beamer| compatibility options. % \begin{macrocode} \@ifclassloaded{beamer}{\setkeys{hep}{beamer}}{} \ifhep@beamer \setkeys{hep}{defaults, title=false, references=false, sansserif} \fi % \end{macrocode} % % Set the |revtex| compatibility options. % \begin{macrocode} \@ifclassloaded{revtex4}{\setkeys{hep}{revtex}}{} \@ifclassloaded{revtex4-1}{\setkeys{hep}{revtex}}{} \@ifclassloaded{revtex4-2}{\setkeys{hep}{revtex}}{} \ifhep@revtex \setkeys{hep}{defaults, title=false, bibliography=false, lang=american} \fi % \end{macrocode} % % Define the SISSA conditional. % \begin{macrocode} \@ifpackageloaded{jheppub}{\setkeys{hep}{jhep}}{} \@ifpackageloaded{jcappub}{\setkeys{hep}{jcap}}{} \newif\ifhep@sissa \ifhep@jhep\hep@sissatrue \else \ifhep@jcap\hep@sissatrue \else\hep@sissafalse \fi \fi % \end{macrocode} % % Set the SISSA compatibility options. % \begin{macrocode} \ifhep@sissa \setkeys{hep}{title=false, bibliography=false} \PassOptionsToPackage{ colorlinks=true, linktocpage=true, pdfproducer=medialab, pdfa=true, urlcolor=blue, anchorcolor=blue, citecolor=blue, filecolor=blue, linkcolor=blue, menucolor=blue, pagecolor=blue }{hyperref} \PassOptionsToPackage{reset}{geometry} \fi % \end{macrocode} % Set the JHEP compatibility options. % \begin{macrocode} \ifhep@jhep \voffset 0in \hoffset 0in \fi % \end{macrocode} % \section{Text} % % Load the |alphabeta| package \cite{alphabeta} first in order to archive the correct behaviour. % The |alphabeta| package provides upright Greek letters in text mode. % \begin{macrocode} \RequirePackage{alphabeta} % \end{macrocode} % % Set the whole text to sans serif if requested. % Load the |sansmathfonts| package \cite{sansmathfonts} first. % Although, most fonts will later be overwritten by the |lmodern| package \cite{lmodern} some mathematical objects are ensured to be in sans serif. % \begin{macrocode} \ifhep@serif\else \RequirePackage{sansmathfonts} \renewcommand\familydefault{\sfdefault} \fi % \end{macrocode} % % \begin{macro}{\ifxetexorluatex} % Load the |ifluatex| \cite{ifluatex} and |ifxetex| \cite{ifxetex} packages. % Define the |\ifxetexorluatex| conditional checking if the package is executed by \hologo{LuaLaTeX} or \hologo{XeLaTeX}. % \begin{macrocode} \RequirePackage{ifluatex} \RequirePackage{ifxetex} \newif\ifxetexorluatex \ifxetex\xetexorluatextrue \else \ifluatex\xetexorluatextrue \else\xetexorluatexfalse \fi \fi % \end{macrocode} % \end{macro} % % Pick the correct font encoding depending on the engine used and load the |fontenc| package \cite{fontenc} with this encoding. % For details of the font encoding see \cite{encguide}. % \begin{macrocode} \ifxetexorluatex \def\hep@encoding{TU} \else \def\hep@encoding{T1} \fi \RequirePackage[\hep@encoding]{fontenc} % \end{macrocode} % Fix the remaining coputer modern fonts \cite{fix-cm}, load the |lmodern| font \cite{lmodern}, the |textcomp| extension \cite{textcomp}, and the |microtype| font optimization \cite{microtype}. % \begin{macrocode} \RequirePackage{fix-cm} \RequirePackage{lmodern} \RequirePackage{textcomp} \RequirePackage{microtype} % \end{macrocode} % % Define bold and sans serif small caps font shapes using the fontspec package \cite{fontspec}. % The font abbreviations are % \begin{description}[nosep] % \item[lmr] Latin modern roman font % \item[lmss] Latin modern sans serif font % \item[cmss] Computer modern sans serif font % \item[xcmss] Extended computer modern sans serif font (from the |sansmathfonts| package \cite{sansmathfonts}) % \item[bx] Bold extended series % \item[b] Bold series % \item[m] Medium weight and width series % \item[c] Medium weight, condensed width series % \item[sc] Caps and small caps font shape % \end{description} % \begin{macrocode} \ifxetexorluatex \RequirePackage{fontspec} \setmainfont{Latin Modern Roman}[ UprightFeatures={SmallCapsFont={[lmromancaps10-regular.otf]}}, BoldFeatures={ SmallCapsFeatures={Letters=SmallCaps}, SmallCapsFont={[cmunbx.otf]} } ] \DeclareFontShape{\hep@encoding}{lmss}{bx}{sc}{<->cmssbxcsc10}{} \DeclareFontShape{\hep@encoding}{lmss}{b}{sc}{<->cmssbxcsc10}{} \DeclareFontShape{\hep@encoding}{lmss}{m}{sc}{% <-9>cmsscsc8<9-10>cmsscsc9<10->cmsscsc10% }{} \else \rmfamily \DeclareFontShape{\hep@encoding}{lmr}{b}{sc}{<->ssub*cmr/bx/sc}{} \DeclareFontShape{\hep@encoding}{lmr}{bx}{sc}{<->ssub*cmr/bx/sc}{} \sffamily \DeclareFontShape{\hep@encoding}{lmss}{bx}{sc}{<->ssub*xcmss/bx/sc}{} \DeclareFontShape{\hep@encoding}{lmss}{b}{sc}{<->ssub*xcmss/bx/sc}{} \DeclareFontShape{\hep@encoding}{lmss}{m}{sc}{<->ssub*xcmss/m/sc}{} \fi % \end{macrocode} % Load the |inputenc| \cite{inputenc} package. % \begin{macrocode} \ifxetexorluatex\else \RequirePackage[utf8]{inputenc} \fi % \end{macrocode} % % Load the |babel| \cite{babel} package for hyphenation and the recommended |csquotes| package \cite{csquotes}. % \begin{macrocode} \RequirePackage[\hep@lang]{babel} \RequirePackage{csquotes} % \end{macrocode} % % \begin{macro}{\underline} % Load the |ulem| package \cite{ulem} for hyphenable underlined text. % \begin{macrocode} \RequirePackage[normalem]{ulem} \let\underline\uline % \end{macrocode} % \end{macro} % % \subsection{Font size} \label{sec:font size} % % Undefine previously defined font sizes and load the \hologo{LaTeX} font size file corresponding to the font size option. % \begin{macrocode} \ifhep@defaults\else \def\hep@remove@pt#1pt{#1} \edef\hep@pt@size{\expandafter\hep@remove@pt\hep@font} \let\small\relax \let\footnotesize\relax \let\scriptsize\relax \let\tiny\relax \let\large\relax \let\Large\relax \let\LARGE\relax \let\huge\relax \let\Huge\relax \input{size\hep@pt@size.clo} \fi % \end{macrocode} % \subsection{Text macros} % %\begin{macro}{\vs} % Load the |foreign| package \cite{foreign} in order to highlight abbreviations and vocabularies from foreign languages. % Add the missing |\vs| command. % \begin{macrocode} \ifnum\pdf@strcmp{\hep@lang}{american}=0 \newcommand{\hep@lang@foreign}{USenglish} \else \ifnum\pdf@strcmp{\hep@lang}{USenglish}=0 \newcommand{\hep@lang@foreign}{USenglish} \else \newcommand{\hep@lang@foreign}{british} \fi \fi \RequirePackage[all, \hep@lang@foreign]{foreign} \DeclareRobustCommand\vs{\xperiodafter{{\foreignabbrfont{vs}}}} % \end{macrocode} % \end{macro} % % The |foreign| package relies on the |xspace| package \cite{xspace}. % Ensure that |\xspace| is compatible with the |\enquote| macro from the |csquote| package. % \begin{macrocode} \xspaceaddexceptions{\csq@qclose@i} % \end{macrocode} %\begin{macro}{\no} % Define the macro |\no|\marg{number} for the use of \textnumero\ with appropriate spacing. % \begin{macrocode} \newcommand{\no}[1]{\textnumero~#1} % \end{macrocode} % \end{macro} % %\begin{macro}{\software} % Define a macro for software with optional version information |\software|\linebreak[1]\oarg{version}\linebreak[1]\marg{name}, using the |relsize| package \cite{relsize}. % \begin{macrocode} \RequirePackage{relsize} \newcommand{\software}[2][\hspace{-\fontdimen2\font}]{% {\smaller\textsc{#2}~#1}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\online} % Define the |\online|\marg{text}\marg{url} macro combining the features of the |\href| and the |\url| macros. % \begin{macrocode} \newcommand{\online}[2]{\href{#1}{\nolinkurl{#2}}} % \end{macrocode} % \end{macro} % \subsection{Lists} % % Load the |enumitem| package \cite{enumitem}. % \begin{macrocode} \RequirePackage[inline]{enumitem} % \end{macrocode} % % \begin{environment}{inlinelist} % Define an inline list environment. % \begin{macrocode} \newlist{inlinelist}{enumerate*}{1} \setlist*[inlinelist,1]{% label=\roman*), itemjoin={,\ }, itemjoin*={, and\ }, after=.% } % \end{macrocode} % \end{environment} % % \begin{environment}{enumdescript} % Define an enumdescript list environment. % \begin{macrocode} \newlist{enum@descript}{enumerate}{2} \setlist[enum@descript]{label=\arabic*.} \newenvironment{enumdescript}[1][]{ \begin{enum@descript}[#1] \let\hep@item\item \renewcommand{\item}[2][]{ \ifx&##1&\hep@item\else\hep@item[##1]\fi \textbf{##2}\ifx##2\empty\else~\fi\@ifnextchar\par\@gobble\relax } }{\end{enum@descript}} % \end{macrocode} % \end{environment} % \section{Geometry} % % Load the |geometry| package \cite{geometry} and adjust the text width and height to the values of the |a4wide| package \cite{a4wide}. % This step must happen after readjusting the font size in \cref{sec:font size}. % \begin{macrocode} \ifhep@defaults\else \RequirePackage{geometry} \geometry{% \hep@paper paper, hscale=.75, vscale=.8, vmarginratio=3:4, includeheadfoot } \fi % \end{macrocode} %\begin{macro}{\useparskip} %\begin{macro}{\useparindent} % Load the |parskip| package \cite{parskip} if requested and provide two commands switching between the two paragraph modes. % \begin{macrocode} \ifhep@parindent\else \RequirePackage{parskip} \newcommand{\useparskip}{% \setlength{\parskip}{.5\baselineskip plus 2pt}% \setlength{\parindent}{0pt}% } \newcommand{\useparindent}{% \setlength{\parskip}{0pt}% \setlength{\parindent}{15pt}% \if@twocolumn\setlength\parindent{1em} \else\setlength\parindent{1.5em} \fi } \fi % \end{macrocode} % \end{macro} % \end{macro} % \section{Math} % % Load the |mathtools| package \cite{mathtools} which loads the |amsmath| package \cite{amsmath}. % Additionally, load the |amssymb| package \cite{amsfonts} which provides further math symbols and also loads the |amsfont| package \cite{amsfonts}. % Allow page breaks within equations if necessary. % \begin{macrocode} \RequirePackage{mathtools} \RequirePackage{amssymb} \allowdisplaybreaks[1] % \end{macrocode} % \begin{macro}{\diag} % \begin{macro}{\sgn} % Provide the |\diag| and |\sgn| operators % \begin{macrocode} \DeclareMathOperator{\diag}{diag} \DeclareMathOperator{\sgn}{sgn} % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{\mathdef} % Define the |\mathdef|\marg{name}\oarg{arguments}\marg{macro} macro which (re-)defines macros in math mode only. % This macro is implemented using the |xparse| package \cite{xparse}. % \begin{macrocode} \RequirePackage{xparse} \DeclareDocumentCommand{\mathdef}{mO{0}m}{% \expandafter\let\csname text\string#1\endcsname=#1 \expandafter\newcommand\csname math\string#1\endcsname[#2]{#3} \DeclareRobustCommand#1{% \ifmmode \expandafter\let\expandafter\next\csname math\string#1\endcsname \else \expandafter\let\expandafter\next\csname text\string#1\endcsname \fi \next }% } % \end{macrocode} % \end{macro} % \begin{macro}{\i} % Provide an upright imaginary unit in math mode. % \begin{macrocode} \AtBeginDocument{\mathdef{\i}{\operatorname{i}}} % \end{macrocode} % \end{macro} % \begin{macro}{\overline} % Redefine |\overline| to be a text macro using the |ulem| package \cite{ulem}. % Extend it as a math macro with the original definition from |amsmath| \cite{amsmath}. % \begin{macrocode} \def\overline#1{{\renewcommand{\ULdepth}{-1.9ex}{}\uline{#1}}} \DeclareRobustCommand{\over@line}[1]{\@@overline{#1}} \mathdef{\overline}{\over@line} % \end{macrocode} % \end{macro} % \begin{macro}{\left} % \begin{macro}{\right} % Load the |mleftright| package \cite{mleftright} and adjust the spacing around |\left| and |\right|. % \begin{macrocode} \RequirePackage{mleftright} \mleftright % \end{macrocode} % \end{macro} % \end{macro} % \begin{macro}{eqnarray} % Undefine the |eqnarray| environment if not prevented by package option. % \begin{macrocode} \ifhep@eqnarray\else \let\eqnarray\@undefined \let\endeqnarray\@undefined \fi % \end{macrocode} % \end{macro} % \subsection{Math fonts} % % \begin{macro}{\mathbf} % Load the |bm| package \cite{bm} for superior boldmath after limiting the number of allocated math alphabets. % Make math symbols bold whenever they appear in bold macros such as |\section|\marg{text}. % \begin{macrocode} \ifhep@serif\providecommand{\bmmax}{2}\else\providecommand{\bmmax}{1}\fi \RequirePackage{bm} \let\mathbf\bm \g@addto@macro\bfseries{\boldmath} % \end{macrocode} % \end{macro} % % \begin{macro}{\mathsf} % Load the |fixmath| package \cite{fixmath} which ensures that upper Greek letters in math mode are italic. % Ensure that also math mode is sans serif using the |sfmath| package \cite{sfmath} if the sans serif option is used. % Ensure that |\mathsf| is italic as well as sans serif and sans for sans and sans serif documents, respectively. % The font abbreviations are % \begin{description}[nosep] % \item[OML] \hologo{TeX} math italic font encoding % \item[cmm] Computer modern math italic font % \item[cmbr] Computer modern bright font % \item[bx] Bold extended series % \item[m] Medium weight and width series % \item[it] Italic font shape % \end{description} % \begin{macrocode} \ifhep@serif \RequirePackage{fixmath} \newcommand\hep@sf@font{cmbr} \else \RequirePackage[slantedGreek]{sfmath} \RequirePackage{sansmathfonts} \newcommand\hep@sf@font{cmm} \fi \SetMathAlphabet{\mathsf}{normal}{OML}{\hep@sf@font}{m}{it} \SetMathAlphabet{\mathsf}{bold}{OML}{\hep@sf@font}{bx}{it} % \end{macrocode} % \end{macro} % \begin{macro}{\mathscr} % Load the |mathrsfs| package for the |\mathscr| math script font. % \begin{macrocode} \DeclareMathAlphabet{\mathscr}{U}{rsfs}{m}{n} % \end{macrocode} % \end{macro} % \begin{macro}{\mathbb} % Load the |dsfont| package \cite{dsfont} and adjust the |\mathbb| math blackboard style font according to the (sans-) serif option. % \begin{macrocode} \ifhep@serif \newcommand\hep@bb@font{dsrom} \else \newcommand\hep@bb@font{dsss} \fi \SetMathAlphabet{\mathbb}{normal}{U}{\hep@bb@font}{m}{n} % \end{macrocode} % \end{macro} % \subsection{Physics notation} % % \begin{macro}{\cancel} % \begin{macro}{\slashed} % \begin{macro}{\unit} % Load the |physics| package \cite{physics} which provides macros useful for publications in physics. % Additionally, load the |cancel| \cite{cancel} and |slashed| \cite{slashed} packages which provide the |\cancel| and |\slashed| macros. % Finally, load the |units| package \cite{units} which provides the |\units| and |\nicefrac| macros. % \begin{macrocode} \RequirePackage{physics} \RequirePackage{cancel} \RequirePackage{slashed} \RequirePackage{units} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \begin{macro}{\inv} % Provide a macro for the inverse, useful in combination with the unit macro in text mode. % \begin{macrocode} \newcommand{\inv}[2][1]{#2\ensuremath{^{-#1}}} % \end{macrocode} % \end{macro} % \begin{macro}{\d} % Provide a differential |\d|. % \begin{macrocode} \AtBeginDocument{\mathdef{\d}{\dd}} % \end{macrocode} % \end{macro} % \begin{macro}{\oset} % Define a new overset macro |\oset|\oarg{offset}\marg{over}\marg{base} % \begin{macrocode} \newcommand{\oset}[3][-1pt]{% \raisebox{1pt}{\ensuremath{\mathop{#3}\limits^{% \vbox to#1{\kern-2\ex@\hbox{$\scriptscriptstyle#2$}\vss}% }}}% } % \end{macrocode} % \end{macro} % \begin{macro}{\overleftright} % Define a over left right arrow |\overleftright|\marg{base}. % \begin{macrocode} \newcommand{\overleftright}[1]{\oset{\leftrightarrow}{#1}} % \end{macrocode} % \end{macro} % \section{Floats} % % Adjust the \hologo{LaTeX} float placement defaults % \begin{macrocode} \setcounter{bottomnumber}{0} % 1 \setcounter{topnumber}{1} % 2 \setcounter{dbltopnumber}{1} % 2 \renewcommand{\topfraction}{.9} % .7 \renewcommand{\dbltopfraction}{.9} % .7 \renewcommand{\textfraction}{.1} % .2 \renewcommand{\floatpagefraction}{.8} % .5 % \end{macrocode} % \begin{environment}{figure} % \begin{environment}{table} % Center the content of |figure| and |table| environments. % Ignore the manual placement if the |manualplacement| option is set to false. % \begin{macrocode} \let\@figure@\figure% \let\@end@figure@\endfigure% \let\@table@\table% \let\@end@table@\endtable% \ifhep@manualplacement% \renewenvironment{figure}[1][tbp]{% \@figure@[#1]\centering% }{\@end@figure@}% \renewenvironment{table}[1][tbp]{% \@table@[#1]\centering% }{\@end@table@}% \else% \renewenvironment{figure}[1][]{% \@figure@\centering% }{\@end@figure@}% \renewenvironment{table}[1][]{% \@table@\centering% }{\@end@table@} \fi% % \end{macrocode} % \end{environment} % \end{environment} % \subsection{Sub-floats} % % \begin{macro}{\ifhep@journal} % Define a new journal conditional. % \begin{macrocode} \newif\ifhep@journal \ifhep@sissa\hep@journaltrue \else \ifhep@revtex\hep@journaltrue \else \ifhep@pos\hep@journaltrue \else\hep@journalfalse \fi \fi \fi % \end{macrocode} % \end{macro} % % Prevent the |caption| package \cite{caption} from complaining about the journal classes and packages. % \begin{macrocode} \ifhep@journal \setlength\abovecaptionskip{\f@size\p@} \setlength\belowcaptionskip{0\p@} \long\def\@makecaption#1#2{% \vskip\abovecaptionskip \sbox\@tempboxa{#1: #2}% \ifdim \wd\@tempboxa >\hsize #1: #2\par \else \global \@minipagefalse \hb@xt@\hsize{\hfil\box\@tempboxa\hfil}% \fi \vskip\belowcaptionskip% } \fi % \end{macrocode} % % Load the |subcaption| package \cite{subcaption}. % Provide the old |\subcaption@minipage| macro. % \begin{macrocode} \RequirePackage[subrefformat=parens]{subcaption} \captionsetup{font=small} \captionsetup[sub]{font=small} \providecommand*\subcaption@minipage[2]{% \minipage#1{#2}\setcaptionsubtype\relax% } % \end{macrocode} % \begin{environment}{panels} % \begin{macro}{\panel} % Define the |panels| environment and the |\panel| macro. % \begin{macrocode} \newenvironment{panels}[2][b]{% % \end{macrocode} % Define an internal macro for global behaviour. % \begin{macrocode} \newcommand{\begin@subcaption@minipage}[2][b]{% \caption@withoptargs\subcaption@minipage[##1]{##2}% \centering\vskip 0pt% } % \end{macrocode} % Define the |\panel| macro for the case that the number of panels is given. % \begin{macrocode} \ifdim#2pt>1pt% \newcommand{\panel}[1][b]{% \endminipage\hfill\begin@subcaption@minipage[#1]{\linewidth/#2}% }% \begin@subcaption@minipage[#1]{\linewidth/#2}% % \end{macrocode} % Define the |\panel| macro for the case that the width of the panel is given. % \begin{macrocode} \else% \newcommand{\panel}[2][b]{% \endminipage\hfill\begin@subcaption@minipage[#1]{##2\linewidth}% }% \begin@subcaption@minipage[#1]{#2\linewidth}% \fi% }{\endminipage} % \end{macrocode} % \end{macro} % \end{environment} % Reajust the captions to the revtex class using the |ragged2e| package \cite{ragged2e}. % \begin{macrocode} \ifhep@revtex \RequirePackage{ragged2e} \DeclareCaptionFormat{revtex}{#1#2\justifying{#3}} \captionsetup{font=small, format=revtex} \captionsetup[sub]{font=footnotesize, format=plain} \renewcommand{\figurename}{Figure} \renewcommand{\tablename}{Table} \fi % \end{macrocode} % \subsection{Tables} % % \begin{environment}{tabular} % Enhance tabulars with the |booktabs| and |multirow| packages \cite{booktabs, multirow}. % \begin{macrocode} \RequirePackage{booktabs} \RequirePackage{multirow} % \end{macrocode} % \end{environment} % \subsection{Figures} % % \begin{macro}{\graphic} % Provide the |\graphic| macro for the inclusion of figures using the |graphicx| package \cite{graphicx}. % \begin{macrocode} \RequirePackage{graphicx} \providecommand{\tikzsetnextfilename}[1]{} \newcommand{\graphic}[2][1]{\tikzsetnextfilename{#2}{% \centering\includegraphics[width=#1\linewidth]{#2}\par% }} % \end{macrocode} % \end{macro} % % \begin{macro}{\graphics} % Provide the |\graphics| macro for the inclusion of figures located in a subfolder. % \begin{macrocode} \newcommand{\graphics}[1]{\graphicspath{{./#1/}}} % \end{macrocode} % \end{macro} % \section{Title page} % % Begin of |title| conditional. % \begin{macrocode} \ifhep@title % \end{macrocode} % % \begin{macro}{\date} % Allow absent date field. % \begin{macrocode} \date{} % \end{macrocode} % \end{macro} % % \subsection{Authors} % % \begin{macro}{\author} % Allow absent author field. % \begin{macrocode} \author{} % \end{macrocode} % \end{macro} % % Enable the handling of multiple authors with different affiliations using the |authblk| package \cite{authblk}. % \begin{macrocode} \RequirePackage{authblk} \renewcommand\Affilfont{\footnotesize} % \end{macrocode} % % \begin{macro}{\email} % Define a macro for typesetting emails. % Redefine this macro to place the email address in a footnote if called from within the |\author| macro |\author{|$\langle name\rangle$ |\email{|$\langle email\rangle$|}}|. % \begin{macrocode} \newcommand{\email}[1]{\online{mailto:#1}{#1}} \let\hep@author\author \def\author{% \renewcommand{\email}[1]{\unskip\thanks{\online{mailto:##1}{##1}}}% \hep@author } % \end{macrocode} % \end{macro} % % \begin{macro}{\affiliation} % Define the |\affiliation| macro, ensure that linebreaks happen after a comma. % \begin{macrocode} \newcommand\active@comma{,\penalty-5\relax} \newcommand\cat@comma@active{\catcode`\,\active} {\cat@comma@active\gdef,{\active@comma}} \newcommand\@affil[1]{% \endgroup\@flushglue=0pt plus .5\linewidth\affil{#1}% } \def\@affil@opt[#1]#2{% \endgroup\@flushglue=0pt plus .5\linewidth\affil[#1]{#2}% } \DeclareRobustCommand\@affiliation{\@ifnextchar[{\@affil@opt}{\@affil}} \newcommand{\affiliation}{\begingroup\cat@comma@active\@affiliation} % \end{macrocode} % \end{macro} % \subsection{Preprint} % % \begin{macro}{\preprint} % Define the |\preprint| macro using the |varwidth| package \cite{varwidth}. % \begin{macrocode} \let\@preprint\relax \newcommand\preprint[1]{\long\gdef\@preprint{#1}} \RequirePackage{varwidth} \newcommand{\@preprint@box}{% \begin{varwidth}{\textwidth}% \textsc{\small\@preprint}% \end{varwidth}% } % \end{macrocode} % \end{macro} % \begin{macro}{\maketitle} % Places a preprint number in the top right corner of the title page using the |atbegshi| \cite{atbegshi} and |picture| \cite{picture} packages. % \begin{macrocode} \RequirePackage{atbegshi} \RequirePackage{picture} \let\hep@maketitle\maketitle \renewcommand{\maketitle}{% \hep@maketitle% \AtBeginShipoutFirst{% \put( \textwidth+\oddsidemargin-\widthof{\@preprint@box}, -2pt-\topmargin-\heightof{\@preprint@box} ){\normalfont\@preprint@box} } } % \end{macrocode} % \end{macro} % \subsection{Abstract} % % \begin{environment}{abstract} % Adjust the |abstract| environment to not start with indentation. % \begin{macrocode} \@ifundefined{abstract}{}{% \let\hep@abstract\abstract% \renewcommand\abstract{\hep@abstract\noindent\ignorespaces}% } % \end{macrocode} % \end{environment} % End of |title| conditional. % \begin{macrocode} \fi % \end{macrocode} % \section{Bibliography} % % Check if bibliography management is requested. % \begin{macrocode} \ifnum\pdf@strcmp{\hep@bibliography}{false}=0\else % \end{macrocode} % % \begin{macro}{\bibliography} % Load the |biblatex| package \cite{biblatex} with the datamodel defined in \cref{sec:data model}. % \begin{macrocode} \RequirePackage[style=\hep@bibliography, datamodel=hep-paper]{biblatex} % \end{macrocode} % \end{macro} % % \begin{macro}{hep-paper} % Provide the |\DeclareSortingTemplate| macro for older |biblatex| installations. % Define a new sorting template that sorts only multi key |\cite| entries according to their date and leaves the rest of the bibliography entries in the order they appear in the text. % \begin{macrocode} \providecommand{\DeclareSortingTemplate}{\DeclareSortingScheme} \DeclareSortingTemplate{hep-paper}{ \sort{\citeorder} \sort[final]{\field{sortkey}} \sort{\field{sortyear} \field{year} \literal{9999}} \sort{\field{month}} \sort{\field{eprint} \field{doi}} \sort{\field{sorttitle} \field{title}} \sort{\field{subtitle} \field{volume}} } % \end{macrocode} % \end{macro} % % Use the new sorting scheme and abbreviat all first names. % \begin{macrocode} \ExecuteBibliographyOptions{ sorting=hep-paper, giveninits=true } % \end{macrocode} % % \begin{macro}{erratum} % Add new bibliography string \enquote{Erratum} for the use in the |relatedtype| field. % \begin{macrocode} \NewBibliographyString{erratum,erratums} \DefineBibliographyStrings{english}{erratum={Erratum},erratums={Errata}} \providecommand{\relateddelimerratum}{\addsemicolon\space} % \end{macrocode} % \end{macro} % % \begin{macro}{\printbibliography} % Allow the bibliography to be printed sloppy % \begin{macrocode} \let\hep@printbibliography\printbibliography \renewcommand{\printbibliography}{\sloppy\hep@printbibliography} % \end{macrocode} % \end{macro} % \subsection{Sourcemap} % % \begin{macro}{\reg@exp@one} % \begin{macro}{\reg@exp@two} % \begin{macro}{\reg@exp@url} % \begin{macro}{\reg@exp@pmc} % Define regular expressions in order to deal with inconsistent journal title and volume naming as well as \URL protocols and the PMCID. % \begin{macrocode} \newcommand{\reg@exp@one}{\regexp{\A(\p{L}+)?\d+(\p{L}+)?\Z}} \newcommand{\reg@exp@two}{\regexp{\A(\p{L}+)?(\d+)(\p{L}+)?\Z}} \newcommand{\reg@exp@url}{\regexp{\A(ht|f)tp(s)?:\/\/}} \newcommand{\reg@exp@pmc}{\regexp{\A(PMC)?}} % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\DeclareSourcemap} % Use the |\DeclareSourcemap| feature. % \begin{macrocode} \DeclareSourcemap{% \maps[datatype=bibtex, overwrite=true]{% % \end{macrocode} % \begin{macro}{collaboration} % Read the collaboration information if present. % \begin{macrocode} \map{% \step[fieldsource=Collaboration, final=true]% \step[fieldset=collaboration, origfieldval, final=true] }% % \end{macrocode} % \end{macro} % \begin{macro}{reportnumber} % Read the pre-print information if present. % \begin{macrocode} \map{% \step[fieldsource=reportNumber, final=true]% \step[fieldset=reportnumber, origfieldval, final=true] }% % \end{macrocode} % \end{macro} % \begin{macro}{journal} % Move letters from the volume field to the journal field. % \begin{macrocode} \map[overwrite]{ \step[fieldsource=volume, match=\reg@exp@one, final] \step[fieldsource=volume, match=\reg@exp@two, replace={$2}] \step[fieldsource=journal, fieldtarget=journaltitle] \step[fieldset=journaltitle, fieldvalue={\space$1$2}, append=true] } % \end{macrocode} % \end{macro} % \begin{macro}{url} % Remove the protocol from \URL. % \begin{macrocode} \map{ \step[fieldsource=url, final=true] \step[fieldset=protocollessurl, origfieldval, final=true] \step[fieldsource=protocollessurl, match=\reg@exp@url, replace={}] } % \end{macrocode} % \end{macro} % \begin{macro}{pmc} % Remove the PMC from the PMCID. % \begin{macrocode} \map{ \step[fieldsource=pmcid, final=true] \step[fieldset=pmc, origfieldval, final=true] \step[fieldsource=pmc, match=\reg@exp@pmc, replace={}] } }% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{\letbibmacro} % Provide the |\letbibmacro| macro for old |biblatex| installations. % \begin{macrocode} \providecommand{\letbibmacro}[2]{\csletcs{abx@macro@#1}{abx@macro@#2}} % \end{macrocode} % \end{macro} % % \begin{macro}{collaboration} % Execute the author macro even if only the collaboration information if present and override the author information with collaboration information if present. % \begin{macrocode} \renewbibmacro*{author/translator+others}{% \ifboolexpr{ test \ifuseauthor and ( not test {\ifnameundef{author}} or not test {\iffieldundef{collaboration}} ) } {\usebibmacro{author}} {\usebibmacro{translator+others}} } \letbibmacro{hep@bib@author}{author} \renewbibmacro*{author}{% \iffieldundef{collaboration}{% \usebibmacro{hep@bib@author}}{\textit{\printfield{collaboration}}% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{In:} % Remove spurious \enquote{In:} if no journal is present. % \begin{macrocode} \renewbibmacro*{in:}{% \iffieldundef{journaltitle}{}{\printtext{\bibstring{in}\intitlepunct}}% } % \end{macrocode} % \end{macro} % % \begin{macro}{url} % Show \URLs without the protocol. % \begin{macrocode} \DeclareFieldFormat{url}{% \mkbibacro{URL}\addcolon\space\online{#1}{\thefield{protocollessurl}}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\bib@online} % Private |\bib@online| macro % \begin{macrocode} \newcommand{\bib@online}[2]{% \ifhyperref{\online{#1}{#2}}{\nolinkurl{#2}}% } % \end{macrocode} % \end{macro} % % \begin{macro}{pmid} % \begin{macro}{pmcid} % Present PubMed IDs. % \begin{macrocode} \DeclareFieldFormat{pmid}{% \mkbibacro{PM}\addcolon\space% \bib@online{https://www.ncbi.nlm.nih.gov/pubmed/#1}{#1}% } \DeclareFieldFormat{pmc}{% \mkbibacro{PMC}\addcolon\space% \bib@online{https://www.ncbi.nlm.nih.gov/pmc/articles/PMC#1}{#1}% } % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{pmcid} % \begin{macro}{pmid} % \begin{macro}{reportnumber} % Add the pre-print and PubMed information if present. % \begin{macrocode} \letbibmacro{hep-doi+eprint+url}{doi+eprint+url} \renewbibmacro*{doi+eprint+url}{% \usebibmacro{hep-doi+eprint+url} \iffieldundef{pmc}{% \iffieldundef{pmid}{}{\printfield{pmid}\newunit}% }{\printfield{pmc}\newunit} \iffieldundef{reportnumber}{}{% \newunitpunct\textnumero\intitlepunct% \textsc{\small\printfield{reportnumber}}% \newunit% }% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \subsection{Eprints} % % \begin{macro}{\new@eprint} % Private |\new@eprint| macro % \begin{macrocode} \NewDocumentCommand{\new@eprint}{smm}{ \DeclareFieldFormat{eprint:#2}{% \newcommand{\@path}{\IfBooleanT{#1}{\thefield{eprintclass}/}##1}% #2\addcolon\space\bib@online{#3/\@path}{\@path}% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{CTAN} % Add CTAN as a eprint option % \begin{macrocode} \new@eprint{CTAN}{https://ctan.org/pkg} \DeclareFieldAlias{eprint:ctan}{eprint:CTAN} % \end{macrocode} % \end{macro} % % \begin{macro}{GitHub} % Add GitHub as a eprint option % \begin{macrocode} \new@eprint*{GitHub}{https://github.com} \DeclareFieldAlias{eprint:github}{eprint:GitHub} % \end{macrocode} % \end{macro} % % \begin{macro}{GitLab} % Add GitLab as a eprint option % \begin{macrocode} \new@eprint*{GitLab}{https://gitlab.com} \DeclareFieldAlias{eprint:gitlab}{eprint:GitLab} % \end{macrocode} % \end{macro} % % \begin{macro}{Bitbucket} % Add Bitbucket as a eprint option % \begin{macrocode} \new@eprint*{Bitbucket}{https://bitbucket.org} \DeclareFieldAlias{eprint:bitbucket}{eprint:Bitbucket} % \end{macrocode} % \end{macro} % % \begin{macro}{Launchpad} % Add Launchpad as a eprint option % \begin{macrocode} \new@eprint{Launchpad}{https://launchpad.net} \DeclareFieldAlias{eprint:launchpad}{eprint:Launchpad} % \end{macrocode} % \end{macro} % % \begin{macro}{SourceForge} % Add SourceForge as a eprint option % \begin{macrocode} \new@eprint{SourceForge}{https://sourceforge.net/projects} \DeclareFieldAlias{eprint:launchpad}{eprint:SourceForge} % \end{macrocode} % \end{macro} % % \begin{macro}{HEPForge} % Add HEPForge as a eprint option % \begin{macrocode} \DeclareFieldFormat{eprint:hepforge}{% HEPForge\addcolon\space\bib@online{https://#1/hepforge.org}{#1}% } \DeclareFieldAlias{eprint:HEPForge}{eprint:hepforge} % \end{macrocode} % \end{macro} % % % End check for bibliography option. % \begin{macrocode} \fi % \end{macrocode} % \section{Hyperlinks, Footnotes and References} \label{sec:hyperlinks} % % Load the |hyperref| package \cite{hyperref} enable Unicode encoding and hide links. % % \begin{macrocode} \RequirePackage{hyperref} \hypersetup{ pdfencoding=auto, psdextra, hidelinks, linktoc=all, breaklinks=true, pdfcreator={}, pdfproducer={} } % \end{macrocode} % Set the \PDF meta data according to the paper information and ensure that unnecessary information is suppressed. % % \begin{macrocode} \pdfstringdefDisableCommands{\def\varepsilon{\textepsilon}} \AtBeginDocument{ \pdfstringdefDisableCommands{\let\ensuremath\@gobble} \pdfstringdefDisableCommands{\let\mathsurround\@gobble} \pdfstringdefDisableCommands{\let\unskip\@gobble} \pdfstringdefDisableCommands{\let\thanks\@gobble} \pdfstringdefDisableCommands{\let\footnote\@gobble} \pdfstringdefDisableCommands{\let\\\@gobble} } \ifhep@revtex \AtBeginShipout{\hypersetup{pdftitle={\@title}}} \else \ifhep@beamer\else \AtBeginDocument{\hypersetup{pdftitle={\@title}}} \fi \fi \ifhep@title \AtBeginDocument{\hypersetup{pdfauthor=\AB@authlist}} \else \ifhep@beamer\else \AtBeginDocument{\hypersetup{pdfauthor={\@author}}} \fi \fi % \end{macrocode} % \subsection{Footnotes} % % Place a hyperlink from the footnote back to its referencing label using the |footnotebackref| package \cite{footnotebackref}. % \begin{macrocode} \def\BackrefFootnoteTag{} \RequirePackage{footnotebackref} % \end{macrocode} % % \begin{macro}{\footnote} % Ensure that no spaces appear before the footmark or at the beginning of the footnote. % \begin{macrocode} \let\@foot@note\footnote \renewcommand{\footnote}[1]{\unskip\@foot@note{\ignorespaces#1}} % \end{macrocode} % \end{macro} % \subsection{References} % % Begin of |references| conditional % \begin{macrocode} \ifhep@references % \end{macrocode} % % \begin{macro}{\cref} % Improve reference using the |cleveref| package \cite{cleveref}. % % \begin{macrocode} \RequirePackage[noabbrev, nameinlink]{cleveref} \newcommand{\creflastconjunction}{, and\nobreakspace} \crefname{enumi}{point}{points} \crefname{inlinelisti}{point}{points} % \end{macrocode} % \end{macro} % %\begin{macro}{\no@break@before} % Define a macro able to prevent line breaks. % \begin{macrocode} \newcommand\no@break@before{% \relax\ifvmode\else% \ifhmode% \ifdim\lastskip > 0pt% \relax\unskip\nobreakspace% \fi% \fi% \fi% } % \end{macrocode} % \end{macro} % % \begin{macro}{\ref} % Adjust |\ref|\marg{key} in order to prevent preceding line breaks and to enable the possibility to reference multiple references at once. % \begin{macrocode} \let\hep@ref\ref \AtBeginDocument{\renewcommand\ref{\no@break@before\labelcref}} % \end{macrocode} % \end{macro} % ! Bug ! in equations the additional brackets from the cleveref macro conflict with the traditional |(\ref|\marg{key}|)| approach % \begin{macro}{\eqref} % Adjust |\eqref|\marg{key} in order to prevent preceding line breaks and to enable the possibility to reference multiple equations at once. % \begin{macrocode} \renewcommand\eqref{\no@break@before\labelcref} % \end{macrocode} % \end{macro} % \begin{macro}{\subref} % Adjust |\subref|\marg{key} in order to prevent preceding line breaks. % \begin{macrocode} \let\hep@subref\subref \renewcommand\subref{\no@break@before\hep@subref} \renewcommand*\subcaption@ref[2]{\begingroup% \caption@setoptions{sub}% \subcaption@reffmt\p@subref{\hep@ref#1{sub@#2}}% \endgroup} % \end{macrocode} % \end{macro} % \begin{macro}{\subcref} % Provide the |\subcref| macro. % \begin{macrocode} \newcommand{\subcref}[1]{\cref{sub@#1}} % \end{macrocode} % \end{macro} % \begin{macro}{\eqcrefname} % Define the |\eqcrefname| macro for named equation types. % \begin{macrocode} \NewDocumentCommand{\eqcrefname}{mmo}{ \crefname{#1}{#2}{\IfValueTF{#3}{#3}{#2s}} \creflabelformat{#1}{(##2##1##3)} } % \end{macrocode} % \end{macro} % \begin{macro}{\labelcrefrange} % Define the missing |\labelcrefrange|\marg{key1}\marg{key2} macro. % \begin{macrocode} \DeclareRobustCommand{\labelcrefrange}[2]{% \@crefrangenostar{labelcref}{#1}{#2}% } % \end{macrocode} % \end{macro} % % End of |references| conditional % \begin{macrocode} \fi % \end{macrocode} % \subsection{Citations} % % \begin{macro}{\cite} % Adjust |\cite|\marg{key} in order to prevent preceding line breaks. % \begin{macrocode} \let\hep@cite\cite \renewcommand\cite{\no@break@before\hep@cite} % \end{macrocode} % \end{macro} % Begin of bibliography if. % \begin{macrocode} \ifnum\pdf@strcmp{\hep@bibliography}{false}=0\else % \end{macrocode} % Define bibstrings for reference names. % \begin{macrocode} \NewBibliographyString{refname} \NewBibliographyString{refsname} \DefineBibliographyStrings{english}{% refname = {reference}, refsname = {references} } % \end{macrocode} % \begin{macro}{\ccite} % \begin{macro}{\Ccite} % Define \emph{clever} citation macros. % \begin{macrocode} \DeclareCiteCommand{\ccite}{% \ifnum\thecitetotal=1 \bibstring{refname}% \else% \bibstring{refsname}% \fi% \addnbspace\bibopenbracket% \usebibmacro{cite:init}\usebibmacro{prenote}% }{\usebibmacro{citeindex}\usebibmacro{cite:comp}}{}{% \usebibmacro{cite:dump}\usebibmacro{postnote}% \bibclosebracket% } \newrobustcmd*{\Ccite}{\bibsentence\ccite} % \end{macrocode} % \end{macro} % \end{macro} % End of biblatex if. % \begin{macrocode} \fi % \end{macrocode} % \section{Acronyms} % % Acronyms are implemented with the |glossaries-extra| package \cite{glossaries-extra} which is an extension of the |glossaries| package \cite{glossaries} and must be loaded after the |hyperref| pacakge in \cref{sec:hyperlinks}. % \begin{macrocode} \ifhep@glossaries \RequirePackage[nostyles]{glossaries-extra} % \end{macrocode} % The entry count feature is used. % \begin{macrocode} \glsenableentrycount \glssetcategoryattribute{abbreviation}{entrycount}{1} % \end{macrocode} % Provide macros for older |glossaries-extra| installations. % \begin{macrocode} \providecommand{\glsxtrusefield}[2]{\@gls@entry@field{#1}{#2}} \providecommand{\glsxtrsetfieldifexists}[3]{\glsdoifexists{#1}{#3}} \providecommand{\gGlsXtrSetField}[3]{% \glsxtrsetfieldifexists{#1}{#2}{% \csgdef{glo@\glsdetoklabel{#1}@#2}{#3}% }% } % \end{macrocode} % Hyperlinks from the abbreviation to their definition in the text are set. % \begin{macrocode} \glssetcategoryattribute{abbreviation}{nohyperfirst}{true} \renewcommand*{\glsdonohyperlink}[2]{{% \glsxtrprotectlinks\edef\fieldvalue{% \glsxtrusefield{\glslabel}{hastarget}% }% \ifdefstring\fieldvalue{true}{#2}{% \gGlsXtrSetField{\glslabel}{hastarget}{true}% \glsdohypertarget{#1}{#2}% }% }} % \end{macrocode} % \begin{macro}{\begin@sentence} % Mark the beginning of a paragraph as if it would follow a full stop using the |everyhook| package \cite{everyhook}. % \begin{macrocode} \RequirePackage[excludeor]{everyhook} \newcommand{\begin@sentence}{1001} \PushPostHook{par}{{\spacefactor=\begin@sentence}} % \end{macrocode} % \end{macro} % \begin{macro}{\frenchspacing} % Adjust the |\frenchspacing| macro to be compatibel with this idea. % \begin{macrocode} \def\frenchspacing{% \sfcode`\.\begin@sentence \sfcode`\?\begin@sentence \sfcode`\!\begin@sentence \sfcode`\:\begin@sentence \sfcode`\;\@m \sfcode`\,\@m } % \end{macrocode} % \end{macro} % \begin{macro}{\if@begin@of@sentence} % Provide a macro checking for the beginning of a sentence by examining the length of the preceeding space. % \begin{macrocode} \newcommand{\if@begin@of@sentence}[2]{\leavevmode\protecting{% \ifboolexpr{ test {\ifnumcomp{\spacefactor}{=}{3000}} or% test {\ifnumcomp{\spacefactor}{=}{2000}} or% test {\ifnumcomp{\spacefactor}{=}{\begin@sentence}}% }{#1}{#2}% }} % \end{macrocode} % \end{macro} % \begin{macro}{\acronym} % The |\acronym|\meta{*}\oarg{typeset abbreviation}\marg{abbreviation}\meta{*}\marg{definition}\oarg{plural\linebreak[4] definition} macro is defined. % \begin{enumerate}[nosep, label=\#\arabic*] % \item star for omitting the \enquote{s} in the short plural % \item optional typeset abbreviation % \item mandatory abbreviation % \item star for restoring the \hologo{TeX} default for space after text macros % \item mandatory long form % \item optional plural long form % \end{enumerate} % \begin{macrocode} \NewDocumentCommand{\acronym}{somsmo}{ \newabbreviation[ type=\acronymtype, sort=#3, \glsshortpluralkey=\IfBooleanTF{#1}{#3}{\IfNoValueTF{#2}{#3s}{#2s}}, longplural=\IfNoValueTF{#6}{#5s}{#6} ]{#3}{\IfNoValueTF{#2}{#3}{#2}}{#5} % \end{macrocode} % Provide the singular acronym macro. % \begin{macrocode} \expandafter\newcommand\csname#3\endcsname{% \if@begin@of@sentence{% \ifglsused{#3}{\cgls{#3}}{\cGls{#3}}% }{\cgls{#3}}% \ifnum\glsentrycurrcount{#3}>1\relax \IfBooleanTF{#4}{}{\@\xspace}% \else\@\xspace\fi } % \end{macrocode} % Expand the singular acronym macro in \PDF labels. % \begin{macrocode} \pdfstringdefDisableCommands{\expandafter\def\csname#3\endcsname{% \IfNoValueTF{#2}{#3}{#2} }% } % \end{macrocode} % Provide the singular acronym macro in math mode. % \begin{macrocode} \expandafter\mathdef\csname#3\endcsname{% \text{\glsxtrshort{#3}}\@gls@increment@currcount{#3}% } % \end{macrocode} % Provide the plural acronym macro. % \begin{macrocode} \expandafter\newcommand\csname#3s\endcsname{% \if@begin@of@sentence{\cGlspl{#3}}{\cglspl{#3}}% \IfBooleanTF{#4}{}{\@\xspace}% } % \end{macrocode} % Expand the plural acronym macro in \PDF labels. % \begin{macrocode} \pdfstringdefDisableCommands{\expandafter\def\csname#3s\endcsname{% \IfBooleanTF{#1}{#3}{\IfNoValueTF{#2}{#3s}{#2s}} }% } % \end{macrocode} % Provide the plural acronym macro in math mode. % \begin{macrocode} \expandafter\mathdef\csname#3s\endcsname{% \text{\glsxtrshortpl{#3}}\@gls@increment@currcount{#3}% } } % \end{macrocode} % \end{macro} % % \begin{macro}{\shortacronym} % The |\shortacronym| never expands into the long form. % \begin{macrocode} \NewDocumentCommand{\shortacronym}{somsmo}{ % \end{macrocode} % Provide the singular acronym macro. % \begin{macrocode} \expandafter\newcommand\csname#3\endcsname{% \IfNoValueTF{#2}{#3}{#2}\IfBooleanTF{#4}{}{\@\xspace}% } % \end{macrocode} % Expand the singular acronym macro in \PDF labels. % \begin{macrocode} \pdfstringdefDisableCommands{\expandafter\def\csname#3\endcsname{% \IfNoValueTF{#2}{#3}{#2} }% } % \end{macrocode} % Provide the singular acronym macro in math mode. % \begin{macrocode} \expandafter\mathdef\csname#3\endcsname{% \text{\IfNoValueTF{#2}{#3}{#2}}% } % \end{macrocode} % Provide the plural acronym macro. % \begin{macrocode} \expandafter\newcommand\csname#3s\endcsname{% \IfBooleanTF{#1}{#3}{\IfNoValueTF{#2}{#3s}{#2s}}% \IfBooleanTF{#4}{}{\@\xspace}% } % \end{macrocode} % Expand the plural acronym macro in \PDF labels. % \begin{macrocode} \pdfstringdefDisableCommands{\expandafter\def\csname#3s\endcsname{% \IfBooleanTF{#1}{#3}{\IfNoValueTF{#2}{#3s}{#2s}} }% } % \end{macrocode} % Provide the plural acronym macro in math mode. % \begin{macrocode} \expandafter\mathdef\csname#3s\endcsname{% \text{\IfBooleanTF{#1}{#3}{\IfNoValueTF{#2}{#3s}{#2s}}}% }% } % \end{macrocode} % \end{macro} % % \begin{macro}{\longacronym} % The |\longacronym| never shows the abbreviated form. % \begin{macrocode} \NewDocumentCommand{\longacronym}{somsmo}{ % \end{macrocode} % Provide the singular acronym macro. % \begin{macrocode} \expandafter\newcommand\csname#3\endcsname{% \if@begin@of@sentence{\MakeUppercase#5}{#5}% \IfBooleanTF{#4}{}{\@\xspace}% } % \end{macrocode} % Expand the singular acronym macro in \PDF labels. % \begin{macrocode} \pdfstringdefDisableCommands{\expandafter\def\csname#3\endcsname{#5 }} % \end{macrocode} % Provide the plural acronym macro. % \begin{macrocode} \expandafter\newcommand\csname#3s\endcsname{% \if@begin@of@sentence{% \IfNoValueTF{#6}{\MakeUppercase#5s}{\MakeUppercase#6}% }{% \IfNoValueTF{#6}{#5s}{#6}}\IfBooleanTF{#4}{}{\@\xspace}% } % \end{macrocode} % Expand the plural acronym macro in \PDF labels. % \begin{macrocode} \pdfstringdefDisableCommands{\expandafter\def\csname#3s\endcsname{% \IfNoValueTF{#6}{#5s}{#6} }% } } % \end{macrocode} % \end{macro} % Silence warning if no acronyms are defined. % \begin{macrocode} \renewcommand*{\@gls@write@entrycounts}{% \immediate\write\@auxout{% \string\providecommand*{\string\@gls@entry@count}[2]{} }% \count@=0\relax \forallglsentries{\@glsentry}{% \glshasattribute{\@glsentry}{entrycount}{% \ifglsused{\@glsentry}{% \immediate\write\@auxout{% \string\@gls@entry@count{\@glsentry}{% \glsentrycurrcount{\@glsentry}% } }% }{}\advance\count@ by \@ne }{}% }% } % \end{macrocode} % \begin{macro}{\resetacronym} % \begin{macro}{\dummyacronym} % Add two macros for acronym management. % \begin{macrocode} \newcommand{\resetacronym}[1]{\protect\glsreset{#1}} \newcommand{\dummyacronym}[1]{\protect\glsunset{#1}} % \end{macrocode} % \end{macro} % \end{macro} % % \begin{macro}{abstract} % Adjust the |abstract| environment to reset all acronym counters. % \begin{macrocode} \@ifundefined{endabstract}{}{% \let\end@hep@abstract\endabstract% \renewcommand\endabstract{\glsresetall\end@hep@abstract}% } % \end{macrocode} % \end{macro} % % \begin{macro}{\tableofcontents} % \begin{macro}{\listoffigures} % \begin{macro}{\listoftables} % Adjust the |\tableofcontents| macro to never show the long form of acronyms. % \begin{macrocode} \let\hep@table@of@contents\tableofcontents \renewcommand\tableofcontents{% \glsunsetall\hep@table@of@contents\glsresetall% } \let\hep@list@of@figures\listoffigures \renewcommand\listoffigures{% \glsunsetall\hep@list@of@figures\glsresetall% } \let\hep@list@of@tables\listoftables \renewcommand\listoftables{% \glsunsetall\hep@list@of@tables\glsresetall% } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % % \begin{macro}{\acronyms} % Add a possibility to have different groups of acronyms. % \begin{macrocode} \NewDocumentCommand{\acronyms}{om}{% \IfNoValueTF{#1}{ \newglossary{#2}{#2.in}{#2.out}{#2}% \renewcommand{\acronymtype}{#2}% }{ \newglossary{#1}{#1.in}{#1.out}{#2}% \renewcommand{\acronymtype}{#1}% } } % \end{macrocode} % \end{macro} % % End of glossaries if. % \begin{macrocode} \fi % \end{macrocode} % % \ifshort % %<*datamodel> % \fi % % \section{Biblatex datamodel file} \label{sec:data model} % % \begin{macro}{collaboration} % \begin{macro}{reportnumber} % \begin{macro}{pmid} % \begin{macro}{pmcid} % \begin{macro}{pmc} % \begin{macro}{protocollessurl} % Define the |dbx| file containing the |hep-paper| datamodel. % \begin{macrocode} \DeclareDatamodelFields[type=field, datatype=literal]{ collaboration, reportnumber, pmid, pmcid, pmc, } \DeclareDatamodelFields[type=field, datatype=uri]{protocollessurl} \DeclareDatamodelEntryfields{ collaboration, reportnumber, pmid, pmcid, pmc, protocollessurl, } % \end{macrocode} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % \end{macro} % % \ifshort % % \fi % % \Finale \endinput % \PrintIndex % makeindex -s gglo.ist -o hep-paper-implementation.gls hep-paper-implementation.glo % makeindex -s gglo.ist -o hep-paper-implementation.ind hep-paper-implementation.idx % \begin{macro}{\refstepcounter@...} % Adjust the |cleveref| |\refstepcounter@noarg| and |\refstepcounter@optarg| to use the |\@currentlabel| in order to fix problems with |\subref|. % \begin{macrocode} % \def\refstepcounter@noarg#1{% % \cref@old@refstepcounter{#1}% % \cref@constructprefix{#1}{\cref@result}% % \@ifundefined{cref@#1@alias}% % {\def\@tempa{#1}}% % {\def\@tempa{\csname cref@#1@alias\endcsname}}% % \protected@edef\cref@currentlabel{% % [\@tempa][\arabic{#1}][\cref@result]% % \noexpand\@currentlabel% % }% changed % } % % \def\refstepcounter@optarg[#1]#2{% % \cref@old@refstepcounter{#2}% % \cref@constructprefix{#2}{\cref@result}% % \@ifundefined{cref@#1@alias}% % {\def\@tempa{#1}}% % {\def\@tempa{\csname cref@#1@alias\endcsname}}% % \protected@edef\cref@currentlabel{% % [\@tempa][\arabic{#2}][\cref@result]% % \noexpand\@currentlabel% changed % }% % } % % \end{macrocode} % % \end{macro} % % % \usepackage{contour} % \renewcommand{\ULdepth}{1.8pt} % \contourlength{0.8pt} % \newcommand{\myuline}[1]{% % \uline{\phantom{#1}}\llap{\contour{white}{#1}}% % } % \begin{macro}{\mathpzc} % Define the |\mathpzc| math script font based on the Zapf Chancery PostScript font. % \begin{macrocode} % \DeclareFontFamily{OT1}{pzc}{} % \DeclareFontShape{OT1}{pzc}{m}{it}{<-> s * [1.15] pzcmi7t}{} % \DeclareMathAlphabet{\mathpzc}{OT1}{pzc}{m}{it} % \end{macrocode} % \end{macro}