summaryrefslogtreecommitdiff
path: root/Master/texmf-dist/source/latex/hep-paper/hep-paper-implementation.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'Master/texmf-dist/source/latex/hep-paper/hep-paper-implementation.dtx')
-rw-r--r--Master/texmf-dist/source/latex/hep-paper/hep-paper-implementation.dtx2473
1 files changed, 2473 insertions, 0 deletions
diff --git a/Master/texmf-dist/source/latex/hep-paper/hep-paper-implementation.dtx b/Master/texmf-dist/source/latex/hep-paper/hep-paper-implementation.dtx
new file mode 100644
index 00000000000..f8bddd02e49
--- /dev/null
+++ b/Master/texmf-dist/source/latex/hep-paper/hep-paper-implementation.dtx
@@ -0,0 +1,2473 @@
+% \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
+%
+%<package>\NeedsTeXFormat{LaTeX2e}[2005/12/01]
+%<package>\ProvidesPackage{hep-paper}[2020/08/01 v1.4 Publications in High Energy Physics]
+%<datamodel>\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}
+%</documentation>
+
+%<*driver>
+\expandafter\newif\csname ifshort\endcsname
+\shortfalse
+\begin{document}
+\DocInput{hep-paper-implementation.dtx}
+\end{document}
+%</driver>
+%
+% \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}
+%
+%</documentation>
+% \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
+%</package>
+%<*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
+%</datamodel>
+% \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}