summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/hep-reference/hep-reference-implementation.dtx
diff options
context:
space:
mode:
Diffstat (limited to 'macros/latex/contrib/hep-reference/hep-reference-implementation.dtx')
-rw-r--r--macros/latex/contrib/hep-reference/hep-reference-implementation.dtx402
1 files changed, 402 insertions, 0 deletions
diff --git a/macros/latex/contrib/hep-reference/hep-reference-implementation.dtx b/macros/latex/contrib/hep-reference/hep-reference-implementation.dtx
new file mode 100644
index 0000000000..03722624cb
--- /dev/null
+++ b/macros/latex/contrib/hep-reference/hep-reference-implementation.dtx
@@ -0,0 +1,402 @@
+% \iffalse meta-comment
+%
+% Copyright (C) 2019 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-reference}[2022/11/01 v1.1 Publications in High Energy Physics]
+%<documentation>\ProvidesFile{hep-reference-documentation.tex}[2022/11/01 v1.1 HEP-Paper documentation]
+%
+%<*documentation>
+%
+\RequirePackage[l2tabu, orthodox]{nag}
+\documentclass{ltxdoc}
+\AtBeginDocument{\DeleteShortVerb{\|}}
+\AtBeginDocument{\MakeShortVerb{\"}}
+
+\EnableCrossrefs
+\CodelineIndex
+\RecordChanges
+
+\usepackage[parskip]{hep-paper}
+
+\bibliography{bibliography}
+
+\shortacronym{PDF}{portable document format}
+
+\usepackage{hologo}
+
+\MacroIndent=1.5em
+\AtBeginEnvironment{macrocode}{\renewcommand{\ttdefault}{clmt}}
+%</documentation>
+
+%<*driver>
+\expandafter\newif\csname ifshort\endcsname
+\shortfalse
+\begin{document}
+\DocInput{hep-reference-implementation.dtx}
+\end{document}
+%</driver>
+%
+% \fi
+%
+% \CheckSum{179}
+%
+% \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}{2011/08/01}{Initial version of the style file.}
+% \changes{v1.1}{2022/11/01}{Bug fixes.}
+%
+% \ifshort
+%<*documentation>
+% \fi
+%
+\GetFileInfo{hep-reference.sty}
+
+\title{The \software{hep-reference} package\thanks{This document corresponds to \software{hep-reference}~\fileversion.}}
+\subtitle{Adjustments of standard references, footnote, and citations}
+\author{Jan Hajer \email{jan.hajer@tecnico.ulisboa.pt}}
+\date{\filedate}
+
+% \ifshort
+\begin{document}
+% \fi
+
+\newgeometry{vscale=.8, vmarginratio=3:4, includeheadfoot, left=11em, marginparwidth=4.6cm, marginparsep=3mm, right=7em}
+
+\maketitle
+
+\begin{abstract}
+The \software{hep-reference} package applies some light convenience modifications to the reference, citation and footnote macros after loading standard classes improving on the default \hologo{LaTeX} behaviour.
+\end{abstract}
+
+\section{Introduction}
+
+The \software{hyperref} package is loaded and the links are hidden.
+
+\DescribeMacro{\cref}
+References are extended with the \software{cleveref} package \cite{cleveref}, which allows to \eg just type "\cref"\marg{key} in order to write \enquote{figure 1}.
+Furthermore, the \software{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.
+
+\DescribeMacro{\footnote}
+Footnotes are adjusted to swallow white space before the footnote mark and at the beginning of the footnote text.
+Additionally the reference back to the text where they are called from.
+
+% \ifshort
+\printbibliography
+
+\end{document}
+%
+%</documentation>
+% \fi
+%
+% \StopEventually{
+% \printbibliography
+% \PrintChanges
+% }
+%
+% \appendix
+%
+%<*package>
+%
+% \section{Implementation}
+%
+% Load the \software{hyperref} package \cite{hyperref} enable Unicode encoding and hide links.
+% \begin{macrocode}
+\RequirePackage{hyperref}
+\hypersetup{
+ pdfencoding=auto, psdextra,
+ linktoc=all, hidelinks, breaklinks=true,
+ pdfcreator={}, pdfproducer={}
+}
+\AtBeginDocument{\@ifpackageloaded{doc}{\hypersetup{hidelinks}}{}}
+% \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}}
+\pdfstringdefDisableCommands{\def\to{\textrightarrow}}
+\AtBeginDocument{
+ \pdfstringdefDisableCommands{\let\ensuremath\@gobble}
+ \pdfstringdefDisableCommands{\let\mathsurround\@gobble}
+ \pdfstringdefDisableCommands{\let\unskip\@gobble}
+ \pdfstringdefDisableCommands{\let\thanks\@gobble}
+ \pdfstringdefDisableCommands{\let\footnote\@gobble}
+ \pdfstringdefDisableCommands{\let\\\@gobble}
+}
+\AtBeginDocument{\hypersetup{pdftitle={\@title}}}
+\AtBeginDocument{\hypersetup{pdfauthor={\@author}}}
+\AtBeginDocument{\@ifundefined{hep@key@words}{}{%
+ \hypersetup{pdfkeywords={\hep@key@words}}%
+}}
+% \end{macrocode}
+
+% \subsection{Footnotes}
+%
+% Place a hyperlink from the footnote back to its referencing label using the \software{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{macro}{\ref}
+% Adjust "\ref"\marg{key} in order to prevent preceding line breaks.
+% \begin{macrocode}
+\AtBeginDocument{
+ \let\hep@ref\ref
+ \renewcommand\ref{\no@break@before\hep@ref}
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\eqref}
+% Adjust "\eqref"\marg{key} from the \software{amsmath} package in order to prevent preceding line breaks.
+% \begin{macrocode}
+\AtBeginDocument{\@ifpackageloaded{amsmath}{%
+ \renewcommand\eqref{\no@break@before\labelcref}%
+}{}}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\usecommand}
+% Define the "\usecommand" macro providing an anonymous function.
+% \begin{macrocode}
+\providecommand\use@command{}
+\newcommand\usecommand[2][1]{%
+ \renewcommand\use@command[#1]{#2}\use@command%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\textlabel}
+% Define the "\textlabel" macro allowing to link to a piece of text.
+% \begin{macrocode}
+\NewDocumentCommand\textlabel{O{}mO{}m}{%
+ \protected@write\@auxout{}{%
+ \string\newlabel{#2}{%
+ {\hspace{-4pt}\protecting{#1{#4}}}{\thepage}{#4}{#2}{}%
+ }%
+ }%
+ \hypertarget{#2}{}%
+ {#3{#4}}%
+}
+% \end{macrocode}
+% \end{macro}
+%
+% \begin{macro}{\cref}
+% Improve reference using the \software{cleveref} package \cite{cleveref}.
+% \begin{macrocode}
+\PassOptionsToPackage{noabbrev, nameinlink}{cleveref}
+\RequirePackage{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}{\subref}
+% Adjust "\subref"\marg{key} from the \software{subcaption} package in order to prevent preceding line breaks.
+% \begin{macrocode}
+\AtBeginDocument{\@ifpackageloaded{subcaption}{%
+ \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}
+%
+% Adjust the title page
+% \begin{macrocode}
+\AtBeginDocument{\@ifpackageloaded{hep-title}{%
+ \labelcrefmultiformat{affiliation}{#2#1#3}{%
+ \textsuperscript,#2#1#3}{\textsuperscript,#2#1#3%
+ }{%
+ \textsuperscript,#2#1#3%
+ }
+ \labelcrefrangeformat{affiliation}{#3#1#4\textsuperscript{--}#5#2#6}
+}{}}
+% \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}
+%
+%</package>
+%
+% \section{Tests}
+%
+%<*test>
+%
+% \begin{macrocode}
+\documentclass{article}
+
+\usepackage{amsmath}
+\usepackage{hep-reference}
+\usepackage{parskip}
+\providecommand{\cref}{section \ref}
+
+\begin{document}
+
+\section{Section} \label{sec:Section}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis section \ref{sec:Section}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam lobortis \cref{sec:Section}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam loborti equation \eqref{eq:Equation}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Etiam loborti reference \cite{cite}
+
+Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+\footnote{
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit.
+}
+
+\begin{equation} \label{eq:Equation}
+E=mc^2
+\end{equation}
+
+
+\begin{thebibliography}{1}
+\bibitem{cite} reference
+\end{thebibliography}
+
+\end{document}
+% \end{macrocode}
+%
+%</test>
+%
+% \section{Readme}
+%
+%<*readme>
+%
+% \begin{macrocode}
+# The `hep-reference` package
+
+A `LaTeX` package for publications in High Energy Physics.
+
+## Introduction
+
+The `hep-reference` 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-reference` preferably loads third party packages as long as they are lightweight enough.
+
+For usual publications it is enough to load additionally to the `article` class without optional arguments only the `hep-reference` package.
+
+ \documentclass{article}
+ \usepackage{hep-reference}
+
+## Author
+
+Jan Hajer
+
+## License
+
+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.
+% \end{macrocode}
+%
+%</readme>
+%
+% \Finale
+
+\endinput
+
+% \PrintIndex
+% makeindex -s gglo.ist -o hep-reference-implementation.gls hep-reference-implementation.glo
+% makeindex -s gglo.ist -o hep-reference-implementation.ind hep-reference-implementation.idx