386 lines
11 KiB
TeX
386 lines
11 KiB
TeX
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% This is the IUCr LaTeX2e class macro file iucrjournals.cls
|
|
% This work has been dedicated to the public domain
|
|
% License: CC0 1.0 Universal
|
|
% https://creativecommons.org/publicdomain/zero/1.0/
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% Usage:
|
|
% \documentclass{iucrjournals}
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
\NeedsTeXFormat{LaTeX2e}
|
|
\ProvidesClass{iucrjournals}
|
|
\date{}
|
|
|
|
\LoadClass[11pt]{article}
|
|
|
|
\RequirePackage{lineno}
|
|
\linenumbers
|
|
|
|
\RequirePackage[parfill]{parskip}
|
|
\RequirePackage{setspace}
|
|
\onehalfspacing
|
|
|
|
\RequirePackage[margin=1in]{geometry}
|
|
\RequirePackage{float}
|
|
\RequirePackage{graphicx}
|
|
|
|
\RequirePackage{xcolor}
|
|
\RequirePackage{hyperref}
|
|
\hypersetup{colorlinks = true, allcolors = blue}
|
|
|
|
\RequirePackage{authblk}
|
|
\RequirePackage{booktabs}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% bibtex:
|
|
\RequirePackage{harvard}
|
|
% The following hack addresses a problem with bibtex failing when
|
|
% there is whitespace in a comma-separated list of labels passed as
|
|
% an argument to \cite - see
|
|
% http://tex.stackexchange.com/questions/4517/cite-that-tolerates-whitespace
|
|
%
|
|
\let\OLDcite\cite
|
|
\def\tok@scan#1{%
|
|
\ifx#1\relax
|
|
\let\tok@next\relax
|
|
\else
|
|
\edef\my@list{\my@list#1}%
|
|
\let\tok@next\tok@scan
|
|
\fi
|
|
\tok@next
|
|
}
|
|
\newcommand{\@strip}[2]{%
|
|
\def\my@list{}\tok@scan#2\relax\let#1\my@list}
|
|
\renewcommand{\cite}[1]{\@strip\@args{#1}\OLDcite\@args}
|
|
|
|
% The iucr.bst BibTeX bibliography style requires the harvard.sty package.
|
|
% IUCr citations are similar to the "dcu" style within harvard.sty, but
|
|
% require the conjunction to be changed to '&'; also abbreviated citations
|
|
% ('et al.') are always used.
|
|
\citationstyle{dcu} % (Doe, 1990; Soape, 1991)
|
|
\renewcommand{\harvardand}{\&} % (Doe & Soape, 1990)
|
|
\citationmode{abbr} % (Doe et al., 1990)
|
|
\bibliographystyle{iucr}
|
|
\renewcommand{\harvardurl}{\relax} % incompatibility with hyperref
|
|
% \newblock is output by BibTeX to separate logical sections of a reference
|
|
% listing. It serves no useful purpose, and can cause extra spacing to
|
|
% intrude
|
|
\let\newblock\relax
|
|
% A complication of the preferred style of citation of IUCr journals
|
|
% is that the volume number for Acta includes the section label,
|
|
% which is NOT printed in bold; to accommodate this, \volbf is defined
|
|
% and generated by iucr.bst. \volbf needs to test just the first character
|
|
% of the volume number
|
|
\gdef\@A@{A}%
|
|
\gdef\@B@{B}%
|
|
\gdef\@C@{C}%
|
|
\gdef\@D@{D}%
|
|
\gdef\@E@{E}%
|
|
\gdef\@F@{F}%
|
|
\gdef\@J@{J}%
|
|
\gdef\@M@{M}%
|
|
\gdef\@S@{S}%
|
|
\newif\iffirst\firsttrue
|
|
\def\volbf#1{%
|
|
{\firsttrue\v@lbf#1\end}%
|
|
}
|
|
\def\v@lbf#1{%
|
|
\ifx#1\end
|
|
\let\next=\relax%
|
|
\else
|
|
\let\next=\v@lbf\iffirst
|
|
\def\t@st{#1}
|
|
\if\t@st\@A@{\rmfamily{#1}}\else
|
|
\if\t@st\@B@{\rmfamily{#1}}\else
|
|
\if\t@st\@C@{\rmfamily{#1}}\else
|
|
\if\t@st\@D@{\rmfamily{#1}}\else
|
|
\if\t@st\@E@{\rmfamily{#1}}\else
|
|
\if\t@st\@F@{\rmfamily{#1}}\else
|
|
\textbf{#1}%
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\fi
|
|
\fi%
|
|
\firstfalse%
|
|
\else
|
|
{\textbf #1}%
|
|
\fi%
|
|
\fi
|
|
\next%
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% nice orcid links for use in author block:
|
|
\RequirePackage{tikz}
|
|
\usetikzlibrary{svg.path}
|
|
|
|
\IfFileExists{orcidlink.sty}%
|
|
{\RequirePackage{orcidlink}}%
|
|
{% orcidlink is post 2020, so include full code if sty file not available
|
|
\definecolor{orcidlogocol}{HTML}{A6CE39}
|
|
\tikzset{
|
|
orcidlogo/.pic={
|
|
\fill[orcidlogocol] svg{M256,128c0,70.7-57.3,128-128,128C57.3,256,0,198.7,0,128C0,57.3,57.3,0,128,0C198.7,0,256,57.3,256,128z};
|
|
\fill[white] svg{M86.3,186.2H70.9V79.1h15.4v48.4V186.2z}
|
|
svg{M108.9,79.1h41.6c39.6,0,57,28.3,57,53.6c0,27.5-21.5,53.6-56.8,53.6h-41.8V79.1z M124.3,172.4h24.5c34.9,0,42.9-26.5,42.9-39.7c0-21.5-13.7-39.7-43.7-39.7h-23.7V172.4z}
|
|
svg{M88.7,56.8c0,5.5-4.5,10.1-10.1,10.1c-5.6,0-10.1-4.6-10.1-10.1c0-5.6,4.5-10.1,10.1-10.1C84.2,46.7,88.7,51.3,88.7,56.8z};
|
|
}
|
|
}
|
|
%% Reciprocal of the height of the svg whose source is above. The
|
|
%% original generates a 256pt high graphic; this macro holds 1/256.
|
|
\newcommand{\@OrigHeightRecip}{0.00390625}
|
|
%% We will compute the current X height to make the logo the right height
|
|
\newlength{\@curXheight}
|
|
|
|
%% Prevent externalization of the ORCiD logo.
|
|
\newcommand{\@preventExternalization}{%
|
|
\ifcsname tikz@library@external@loaded\endcsname%
|
|
\tikzset{external/export next=false}\else\fi%
|
|
}
|
|
|
|
\newcommand{\orcidlogo}{%
|
|
\texorpdfstring{%
|
|
\setlength{\@curXheight}{\fontcharht\font`X}%
|
|
\XeTeXLinkBox{%
|
|
\@preventExternalization%
|
|
\begin{tikzpicture}[yscale=-\@OrigHeightRecip*\@curXheight,
|
|
xscale=\@OrigHeightRecip*\@curXheight,transform shape]
|
|
\pic{orcidlogo};
|
|
\end{tikzpicture}%
|
|
}}{}}
|
|
\DeclareRobustCommand\orcidlinkX[1]{\href{https://orcid.org/##1}{%
|
|
\orcidlogo}}
|
|
\newcommand{\orcidlink}[1]{\orcidlinkX{##1}}
|
|
}
|
|
\newcommand{\IUCrOrcidlink}[1]{\orcidlink{#1}\,}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% nice email links for use in author block (based on orcidlink):
|
|
\definecolor{IUCr@emaillogocol}{HTML}{AAAAAA}
|
|
\tikzset{
|
|
IUCr@emaillogo/.pic={
|
|
\fill[IUCr@emaillogocol]
|
|
svg{M 0 11.755 v 66.489 h 90 V 11.755 H 0 z M 45 50.49 L 7.138 15.755 h 75.724 L 45 50.49 z M 33.099 45 L 4 71.695 V 18.304 L 33.099 45 z M 36.058 47.714 L 45 55.918 l 8.943 -8.204 l 28.919 26.53 H 7.138 L 36.058 47.714 z M 56.901 45 L 86 18.304 v 53.392 L 56.901 45 z};
|
|
}
|
|
}
|
|
\definecolor{IUCr@cemaillogocol}{HTML}{0000FF}
|
|
\tikzset{
|
|
IUCr@cemaillogo/.pic={
|
|
\fill[IUCr@cemaillogocol]
|
|
svg{M 0 11.755 v 66.489 h 90 V 11.755 H 0 z M 45 50.49 L 7.138 15.755 h 75.724 L 45 50.49 z M 33.099 45 L 4 71.695 V 18.304 L 33.099 45 z M 36.058 47.714 L 45 55.918 l 8.943 -8.204 l 28.919 26.53 H 7.138 L 36.058 47.714 z M 56.901 45 L 86 18.304 v 53.392 L 56.901 45 z};
|
|
}
|
|
}
|
|
\newcommand{\IUCr@OrigHeightRecipE}{0.01400625}
|
|
\newlength{\IUCr@curXheightE}
|
|
\newcommand{\IUCr@preventExternalizationE}{%
|
|
\ifcsname tikz@library@external@loaded\endcsname%
|
|
\tikzset{external/export next=false}\else\fi%
|
|
}
|
|
\newcommand{\IUCr@emaillogo}{%
|
|
\texorpdfstring{%
|
|
\setlength{\IUCr@curXheightE}{\fontcharht\font`X}%
|
|
\XeTeXLinkBox{%
|
|
\IUCr@preventExternalizationE%
|
|
\begin{tikzpicture}[yscale=-\IUCr@OrigHeightRecipE*\IUCr@curXheightE,
|
|
xscale=\IUCr@OrigHeightRecipE*\IUCr@curXheightE,transform shape]
|
|
\pic{IUCr@emaillogo};
|
|
\end{tikzpicture}%
|
|
}}{}}
|
|
\newcommand{\IUCr@cemaillogo}{%
|
|
\texorpdfstring{%
|
|
\setlength{\IUCr@curXheightE}{\fontcharht\font`X}%
|
|
\XeTeXLinkBox{%
|
|
\IUCr@preventExternalizationE%
|
|
\begin{tikzpicture}[yscale=-\IUCr@OrigHeightRecipE*\IUCr@curXheightE,
|
|
xscale=\IUCr@OrigHeightRecipE*\IUCr@curXheightE,transform shape]
|
|
\pic{IUCr@cemaillogo};
|
|
\end{tikzpicture}%
|
|
}}{}}
|
|
\DeclareRobustCommand\IUCr@emaillinkX[1]{\href{mailto:#1}{%
|
|
\IUCr@emaillogo}}
|
|
\DeclareRobustCommand\IUCr@cemaillinkX[1]{\href{mailto:#1}{%
|
|
\IUCr@cemaillogo}}
|
|
\newcommand{\IUCrEmaillink}[1]{\,\IUCr@emaillinkX{#1}\,}
|
|
\newcommand{\IUCrCemaillink}[1]{\,\IUCr@cemaillinkX{#1}\,}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% author footnotes for use in author block
|
|
% (alternative to using \thanks or \footnote)
|
|
|
|
\newcounter{IUCr@aufnc}
|
|
\setcounter{IUCr@aufnc}{0}
|
|
\newcommand{\IUCr@storeaufn}[1]{\stepcounter{IUCr@aufnc}\global\expandafter\def\csname aufnX\theIUCr@aufnc\endcsname{#1}}
|
|
\newcommand{\IUCr@printaufn}[1]{\footnotesize\IUCr@fnsymbol{#1}\csname aufnX#1\endcsname\\}
|
|
\newcommand{\IUCr@printauthornotes}{%
|
|
\ifnum\theIUCr@aufnc>0
|
|
\begin{center}
|
|
\vskip-22pt
|
|
\newcounter{tmpIUCr@aufnc}
|
|
\setcounter{tmpIUCr@aufnc}{0}
|
|
\loop
|
|
\stepcounter{tmpIUCr@aufnc}
|
|
%\thetmpIUCr@aufnc
|
|
\IUCr@printaufn{\thetmpIUCr@aufnc}%
|
|
\addtocounter{IUCr@aufnc}{-1}
|
|
\ifnum\theIUCr@aufnc>0
|
|
\repeat
|
|
\end{center}
|
|
\bigskip
|
|
\fi
|
|
}
|
|
\newcommand{\IUCrAufn}[2][0]{%
|
|
% store the note as a new macro for later output using \IUCr@printauthornotes
|
|
\if0#1%
|
|
\IUCr@storeaufn{#2}%
|
|
%$^\theIUCr@aufnc$%
|
|
\IUCr@fnsymbol{\theIUCr@aufnc}\,%
|
|
\else% allows multiple footnote markers pointing to same text
|
|
% if the number is greater than \theIUCr@aufnc count, store as new?
|
|
\ifnum#1>\theIUCr@aufnc%
|
|
\IUCr@storeaufn{#2}%
|
|
\fi%
|
|
\IUCr@fnsymbol{\theIUCr@aufnc}\,%
|
|
\fi%
|
|
}
|
|
|
|
\newcommand{\IUCr@fnsymbol}[1]{%
|
|
\ifnum#1<6%
|
|
$^\IUCr@fnsymbolsingle{#1}$%
|
|
\else%
|
|
\newcount\@lrepeat
|
|
\@lrepeat=#1
|
|
\divide\@lrepeat by 5
|
|
%\the\@lrepeat
|
|
%modulo gives symbol number:
|
|
\newcount\@modsym
|
|
\@modsym=#1
|
|
\divide\@modsym by 5
|
|
\multiply\@modsym by 5
|
|
\multiply\@modsym by -1
|
|
\advance\@modsym by #1\relax
|
|
%\the\@modsym
|
|
$^{%
|
|
\IUCr@fnsymbolsingle{\@modsym}%
|
|
\loop
|
|
\IUCr@fnsymbolsingle{\@modsym}%
|
|
\advance\@lrepeat by -1
|
|
\ifnum\@lrepeat>0
|
|
\repeat
|
|
}$%
|
|
\fi%
|
|
}
|
|
\newcommand{\IUCr@fnsymbolsingle}[1]{%
|
|
\ensuremath{%
|
|
\ifcase#1% 0
|
|
\or % 1
|
|
\dagger
|
|
\or % 2
|
|
\ddagger
|
|
\or % 3
|
|
\mathsection
|
|
\or % 4
|
|
\mathparagraph
|
|
\or \|
|
|
\else % >= 6
|
|
#1
|
|
\fi
|
|
}%
|
|
}
|
|
|
|
% print author notes after maketitle
|
|
\let\IUCr@maketitle=\maketitle
|
|
\def\maketitle{%
|
|
\IUCr@maketitle
|
|
\IUCr@printauthornotes
|
|
}
|
|
|
|
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
|
|
% commands and formatting tweaks:
|
|
|
|
\let\origtitle\title
|
|
\renewcommand{\title}[1]{\origtitle{\textbf{#1}}}
|
|
|
|
\renewenvironment{abstract}
|
|
{%\small
|
|
\begin{center}
|
|
\bfseries \abstractname\vspace{-.5em}\vspace{0pt}
|
|
\end{center}
|
|
\list{}{
|
|
\setlength{\leftmargin}{1cm}%
|
|
\setlength{\rightmargin}{\leftmargin}%
|
|
}%
|
|
\item\relax}
|
|
{\endlist\bigskip}
|
|
|
|
\newenvironment{synopsis}%
|
|
{%\small
|
|
\begin{center}
|
|
\bfseries Synopsis\vspace{-.5em}\vspace{0pt}
|
|
\end{center}
|
|
\list{}{
|
|
\setlength{\leftmargin}{1cm}%
|
|
\setlength{\rightmargin}{\leftmargin}%
|
|
}%
|
|
\item\relax}
|
|
{\endlist\bigskip}
|
|
|
|
\newcommand{\keywords}[1]{
|
|
\begin{center}
|
|
\small
|
|
\list{}{
|
|
\setlength{\leftmargin}{1cm}%
|
|
\setlength{\rightmargin}{\leftmargin}%
|
|
}%
|
|
\item\relax\textbf{Keywords:} #1\endlist\end{center}\bigskip}
|
|
|
|
\let\origaffil\affil
|
|
\def\affil#1#{\origaffilA{#1}}
|
|
\def\origaffilA#1#2{\origaffil#1{\footnotesize #2}}
|
|
|
|
\newenvironment{acknowledgements}%
|
|
{%\small
|
|
\bigskip
|
|
%\begin{center}
|
|
{\bfseries\Large Acknowledgements}\vspace{-.5em}\vspace{0pt}
|
|
%\end{center}
|
|
\list{}{
|
|
\setlength{\leftmargin}{0cm}%
|
|
\setlength{\rightmargin}{\leftmargin}%
|
|
}%
|
|
\item\relax}
|
|
{\endlist\medskip}
|
|
|
|
\newenvironment{funding}%
|
|
{%\small
|
|
\medskip
|
|
%\begin{center}
|
|
{\bfseries\Large Funding}\vspace{-.5em}\vspace{0pt}
|
|
%\end{center}
|
|
\list{}{
|
|
\setlength{\leftmargin}{0cm}%
|
|
\setlength{\rightmargin}{\leftmargin}%
|
|
}%
|
|
\item\relax}
|
|
{\endlist\medskip}
|
|
|
|
\newcommand{\ConflictsOfInterest}[1]{
|
|
\begin{center}
|
|
\small
|
|
\list{}{
|
|
\setlength{\leftmargin}{0cm}%
|
|
\setlength{\rightmargin}{\leftmargin}%
|
|
}%
|
|
\item\relax\textbf{Conflicts of interest:} #1\endlist\end{center}\medskip}
|
|
|
|
\newcommand{\DataAvailability}[1]{
|
|
\begin{center}
|
|
\small
|
|
\list{}{
|
|
\setlength{\leftmargin}{0cm}%
|
|
\setlength{\rightmargin}{\leftmargin}%
|
|
}%
|
|
\item\relax\textbf{Data availability:} #1\endlist\end{center}\medskip}
|
|
|