diff options
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.dtx | 2473 |
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} |