Files
SiC-2nd-paper/sn-article-template/bst/sn-apacite.bst
chn 3d93493eed init
diff --git a/.gitattributes b/.gitattributes
new file mode 100644
index 0000000..9360005
--- /dev/null
+++ b/.gitattributes
@@ -0,0 +1,5 @@
+*.bst filter=lfs diff=lfs merge=lfs -text
+*.eps filter=lfs diff=lfs merge=lfs -text
+*.pdf filter=lfs diff=lfs merge=lfs -text
+*.svg filter=lfs diff=lfs merge=lfs -text
+*.ipynb filter=lfs diff=lfs merge=lfs -text
diff --git a/paper/.gitignore b/paper/.gitignore
new file mode 100644
index 0000000..771e49d
--- /dev/null
+++ b/paper/.gitignore
@@ -0,0 +1,7 @@
+/*.aux
+/*.fdb_latexmk
+/*.fls
+/*.log
+/*.out
+/*.pdf
+/*.synctex.gz
diff --git a/paper/main.tex b/paper/main.tex
new file mode 100644
index 0000000..1ffd43e
--- /dev/null
+++ b/paper/main.tex
@@ -0,0 +1,68 @@
+\documentclass[pdflatex,sn-basic,referee]{sn-jnl}
+
+\usepackage{graphicx}
+\usepackage{multirow}
+\usepackage{amsmath,amssymb,amsfonts}
+\usepackage{amsthm}
+\usepackage{mathrsfs}
+\usepackage[title]{appendix}
+\usepackage{xcolor}
+\usepackage{textcomp}
+\usepackage{manyfoot}
+\usepackage{booktabs}
+\usepackage{algorithm}
+\usepackage{algorithmicx}
+\usepackage{algpseudocode}
+\usepackage{listings}
+
+\usepackage{lineno}
+\linenumbers
+\renewcommand\linenumberfont{\normalfont}
+
+\raggedbottom
+
+\begin{document}
+
+\title[Article Title]{Article Title}
+
+\author*[1]{\fnm{First} \sur{Author}}\email{iauthor@gmail.com}
+
+\affil[1]{\orgdiv{Department}, \orgname{Organization}, \orgaddress{\street{Street}, \city{City}, \postcode{100190}, \state{State}, \country{Country}}}
+
+\abstract{The abstract serves both as a general introduction to the topic and as a brief, non-technical summary of the main results and their implications. Authors are advised to check the author instructions for the journal they are submitting to for word limits and if structural elements like subheadings, citations, or equations are permitted.}
+
+\keywords{keyword1, Keyword2, Keyword3, Keyword4}
+
+\maketitle
+
+\section{Introduction}\label{sec1}
+
+The Introduction section, of referenced text cite{bib1} expands on the background of the work (some overlap with the Abstract is acceptable). The introduction should not include subheadings.
+
+Springer Nature does not impose a strict layout as standard however authors are advised to check the individual requirements for the journal they are planning to submit to as there may be journal-level preferences. When preparing your text please also be aware that some stylistic choices are not supported in full text XML (publication version), including coloured font. These will not be replicated in the typeset article if it is accepted.
+
+\section{Methods}\label{sec11}
+
+\section{Results}\label{sec2}
+
+Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text.
+
+\backmatter
+
+\bmhead{Supplementary information}
+
+If your article has accompanying supplementary file/s please state so here.
+
+Authors reporting data from electrophoretic gels and blots should supply the full unprocessed scans for key as part of their Supplementary information. This may be requested by the editorial team/s if it is missing.
+
+Please refer to Journal-level guidance for any specific requirements.
+
+\bmhead{Acknowledgements}
+
+Acknowledgements are not compulsory. Where included they should be brief. Grant or contribution numbers may be acknowledged.
+
+Please refer to Journal-level guidance for any specific requirements.
+
+%\bibliography{sn-bibliography}
+
+\end{document}
diff --git a/paper/sn-jnl.cls b/paper/sn-jnl.cls
new file mode 100644
index 0000000..d25f07c
--- /dev/null
+++ b/paper/sn-jnl.cls
@@ -0,0 +1 @@
+%%
%% This is file `sn-jnl.cls',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% classes.dtx  (with options: `sn-jnl')
%%
%% This is a generated file.
%%
%% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
%% This file was generated from file(s) of the LaTeX base system.
%% --------------------------------------------------------------
%%
%% It 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.
%%
%% This file has the LPPL maintenance status "maintained".
%%
%% This file may only be distributed together with a copy of the LaTeX
%% base system. You may however distribute the LaTeX base system without
%% such generated files.
%%
%% The list of all files belonging to the LaTeX base distribution is
%% given in the file `manifest.txt'. See also `legal.txt' for additional
%% information.
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%% \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         \~}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{sn-jnl}
              [2019/11/18 v0.1: An authoring template for Springer Journal articles]

\newif\if@restonecol
\newif\if@titlepage   \@titlepagefalse
\newif\if@cropmarkson \@cropmarksonfalse
\newif\ifDoublecol    \Doublecolfalse%
\newif\ifpagebody\global\pagebodyfalse%
\newif\if@iicol\global\@iicolfalse%
\newif\if@bibcomment\global\@bibcommentfalse%
\newif\if@referee\global\@refereefalse%
\newif\if@vrulerlinenumberon\global\@vrulerlinenumberonfalse%
\newif\if@pdflatex\global\@pdflatexfalse%
\newif\if@remarkboxon\global\@remarkboxonfalse%

\newif\if@Numbered@refstyle\global\@Numbered@refstylefalse% Namedate
\newif\if@Spr@basic@refstyle\global\@Spr@basic@refstylefalse% 1.Basic Springer Nature Reference Style/Chemistry Reference Style -> sn-basic.bst
\newif\if@Mathphys@numrefstyle\global\@Mathphys@numrefstylefalse% 2.Math and Physical Sciences Reference Style -> sn-mathphys.bst
\newif\if@Mathphys@ayrefstyle\global\@Mathphys@ayrefstylefalse% 2.Math and Physical Sciences Reference Style -> sn-mathphys.bst
\newif\if@APS@refstyle\global\@APS@refstylefalse% 3.American Physical Society (APS) Reference Style -> sn-APS.bst
\newif\if@Vancouver@numrefstyle\global\@Vancouver@numrefstylefalse% 4.Vancouver Reference Style -> sn-vancouver.bst
\newif\if@Vancouver@ayrefstyle\global\@Vancouver@ayrefstylefalse% 4.Vancouver Reference Style -> sn-vancouver.bst
\newif\if@APA@refstyle\global\@APA@refstylefalse% 5.APA-based Social Sciences/Psychology Reference Style -> sn-apacite.bst
\newif\if@Chicago@refstyle\global\@Chicago@refstylefalse% 6.Chicago-based Humanities Reference Style -> sn-chicago.bst
\newif\if@Standard@Nature@refstyle\global\@Standard@Nature@refstylefalse% 7.Standard Nature Research Style -> sn-nature.bst

%% Template Options
\DeclareOption{a4paper}{\PassOptionsToPackage{a4}{crop}}
\DeclareOption{a3paper}{\PassOptionsToClass{a3paper}{article}\PassOptionsToPackage{a3}{crop}}
\DeclareOption{centre}{\PassOptionsToPackage{center}{crop}}
\DeclareOption{crop}{\PassOptionsToPackage{frame}{crop}\global\@cropmarksontrue}
\DeclareOption{nocrop}{\PassOptionsToPackage{off}{crop}\global\@cropmarksontrue}
\DeclareOption{info}{\PassOptionsToPackage{info}{crop}}
\DeclareOption{noinfo}{\PassOptionsToPackage{noinfo}{crop}}

%% Classfile Options
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{titlepage}{\@titlepagetrue}
\DeclareOption{notitlepage}{\@titlepagefalse}
\DeclareOption{onecolumn}{\@twocolumnfalse}
\DeclareOption{twocolumn}{\@twocolumntrue}
\DeclareOption{openbib}{\let\if@openbib\iftrue}
\DeclareOption{pagegrid}{\global\pagebodytrue}%
\DeclareOption{iicol}{\global\@iicoltrue}%
\DeclareOption{bibcomment}{\global\@bibcommenttrue}%
\DeclareOption{referee}{\global\@refereetrue}%
\DeclareOption{lineno}{\global\@vrulerlinenumberontrue}%
\DeclareOption{pdflatex}{\global\@pdflatextrue}%
\DeclareOption{remarkboxoff}{\global\@remarkboxonfalse}%

\DeclareOption{sn-basic}{\global\@Spr@basic@refstyletrue}%
\DeclareOption{sn-mathphys-num}{\global\@Mathphys@numrefstyletrue}%
\DeclareOption{sn-mathphys-ay}{\global\@Mathphys@ayrefstyletrue}%
\DeclareOption{sn-aps}{\global\@APS@refstyletrue}%
\DeclareOption{sn-vancouver-num}{\global\@Vancouver@numrefstyletrue}%
\DeclareOption{sn-vancouver-ay}{\global\@Vancouver@ayrefstyletrue}%
\DeclareOption{sn-apa}{\global\@APA@refstyletrue}%
\DeclareOption{sn-chicago}{\global\@Chicago@refstyletrue}%
\DeclareOption{sn-nature}{\global\@Standard@Nature@refstyletrue}%

\DeclareOption{Numbered}{\global\@Numbered@refstyletrue}%
%\DeclareOption{NameDate}{\global\@Numbered@refstylefalse}%

%%\ExecuteOptions{twosidecrop,crop,centre,info,croppage}
\ProcessOptions
\LoadClass[twoside,fleqn]{article}

\gdef\refereedefns{%
\if@referee%
\usepackage{setspace}%
\doublespacing%
\fi}%
\refereedefns%

%% General Packages Used
%
%\AtBeginDocument{%
%%\newcommand*\ExtraParaSkip{12pt}%
%\SetFootnoteHook{\hspace*{-8pt}}%
%\DeclareNewFootnote{A}[gobble]%
%\setlength{\skip\footinsA}{0pt}
%}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fonts & Sizes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%% Fonts Used
%%\RequirePackage[T1]{fontenc}%
%
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}%
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}%
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}%
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}%
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}%
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}%
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}%
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}%
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}%
%
\renewcommand\normalsize{%
   \@setfontsize\normalsize{10bp}{12bp}%
   \abovedisplayskip 12\p@ \@plus2\p@ \@minus1\p@
   \abovedisplayshortskip \z@ \@plus3\p@%
   \belowdisplayshortskip 3\p@ \@plus3\p@ \@minus3\p@%
   \belowdisplayskip \abovedisplayskip%
   \let\@listi\@listI}%
\normalsize%
%
\newcommand\medsize{%
   \@setfontsize\small\@xipt{13}%
   \abovedisplayskip 5\p@ \@plus3\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus2\p@
   \belowdisplayshortskip 3\p@ \@plus2\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 4\p@ \@plus2\p@ \@minus2\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
   \belowdisplayskip \abovedisplayskip}%
%
\renewcommand\small{%
   \@setfontsize\small\@ixpt{11}%
   \abovedisplayskip 5\p@ \@plus3\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus2\p@
   \belowdisplayshortskip 3\p@ \@plus2\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 4\p@ \@plus2\p@ \@minus2\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
   \belowdisplayskip \abovedisplayskip}%
%
\renewcommand\footnotesize{%
   \@setfontsize\footnotesize{7}{8}%
   \abovedisplayskip 5\p@ \@plus2\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus\p@
   \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 3\p@ \@plus\p@ \@minus\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
   \belowdisplayskip \abovedisplayskip}
%
\renewcommand\scriptsize{\@setfontsize\scriptsize\@ixpt\@ixpt}%
\newcommand\scrisize{\@setfontsize\scrisize{9.3}{9}}%
\renewcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}%
\renewcommand\large{\@setfontsize\large{12}{14}}%
\newcommand\larg{\@setfontsize\larg{11}{13}}%
\renewcommand\Large{\@setfontsize\Large{16}{18}}%
\renewcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}%
\renewcommand\huge{\@setfontsize\huge\@xxpt{25}}%
\renewcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}%
%
\DeclareMathSizes{\@ixpt}{\@ixpt}{7}{5}%
\DeclareMathSizes{\@xpt}{\@xpt}{7}{5}%
\DeclareMathSizes{\@xipt}{\@xipt}{7}{5}%
%
\DeclareRobustCommand*\textsubscript[1]{%
  \@textsubscript{\selectfont#1}}%
%
\def\@textsubscript#1{%
  {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Layout Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%\RequirePackage{geometry}%
%
\newlength\columnhsize%
%
%% Regular Pages (for Opening page - redefined)
%
\if@iicol%
%
%% for double column used sn-medium design trim and page size %%
%
\setlength\headheight{12pt}%
\setlength\headsep{5.15mm}%
%
\setlength\columnsep{8mm}%
\setlength\columnhsize{76mm}%
%
\setlength\maxdepth{0pt}%
\setlength\footnotesep{7\p@}%
\setlength{\skip\footins}{18\p@ \@plus 6\p@ \@minus 3\p@}%
%
\RequirePackage[%
    reversemp,
    paperwidth=210mm,
    paperheight=297mm,
    top={26mm},
    headheight={12pt},
    headsep={5.15mm},
    text={160mm,216mm},
    marginparsep=5mm,
    marginparwidth=12mm,
    bindingoffset=6mm,
    footskip=10.13mm,twocolumn]{geometry}%
%
\renewcommand\footnoterule{%
  \kern3\p@%
  \hrule \@height.2mm \@width\columnwidth%
  \kern5.5\p@}%
%
\else%
%% For single column used smallcond design trim and page size %%
\RequirePackage[%
    reversemp,
    paperwidth=210mm,
    paperheight=297mm,
    top={26mm},
    headheight={5.5pt},
    headsep={5.6mm},
    text={31pc,194.25mm},
    marginparsep=5mm,
    marginparwidth=12mm,
    bindingoffset=6mm,
    footskip=10mm]{geometry}
%
    \setlength\maxdepth{0pt}%
    \setlength\columnsep{5mm}%
    \setlength{\marginparsep}{5mm}%
    \setlength{\marginparwidth}{12mm}%
    \setlength\footnotesep{5.75\p@}%
    \setlength{\skip\footins}{8\p@ \@plus 4\p@ \@minus 0\p@}%
%
\renewcommand\footnoterule{%
  \kern3\p@%
  \ifodd\c@page%
     \hrule \@height.2mm \@width\textwidth%
  \else%
     \hrule \@height.2mm \@width37mm
  \fi%
  \kern5.5\p@}%
%
\fi%
%
%
\setlength\parindent{1.5em}%
%
\def\StepUpCounter#1{\global\advance#1by 1\relax}%
\def\StepDownCounter#1{\global\advance#1by -1\relax}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Pagination Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Line spacing
\setlength\lineskip{1\p@}%
\setlength\normallineskip{1\p@}%
%%\renewcommand\baselinestretch{1.5}%
\parskip=0pt%
%
% Page break penalties
%
\@lowpenalty   51
\@medpenalty  151
\@highpenalty 301
%
% Disallow widows and orphans
%
\clubpenalty 10000
\widowpenalty 10000
%
% Disable page breaks before equations, allow pagebreaks after
% equations and discourage widow lines before equations.
%
\displaywidowpenalty 100
\predisplaypenalty   10000
\postdisplaypenalty  0
%
% Set these global demerits
%
\doublehyphendemerits 1000000   % corresponds to badness 800
\finalhyphendemerits  1000000  % corresponds to badness 1000
%
% Allow loose lines rather than overfull lines
%
\vbadness=9999
\tolerance=9999
%
% Allow breaking the page in the middle of a paragraph
%
\interlinepenalty 0
%
% Disallow breaking the page after a hyphenated line
\brokenpenalty 10000
%
% Hyphenation; don't split words into less than three characters
\lefthyphenmin=3
\righthyphenmin=3
%
% Float placement parameters
%
% The total number of floats that can be allowed on a page.
\setcounter{totalnumber}{3}
%
% The maximum number of floats at the top and bottom of a page.
\setcounter{topnumber}{5}
\setcounter{bottomnumber}{5}
%
% The maximum part of the top or bottom of a text page that can be
% occupied by floats. This is set so that at least four lines of text
% fit on the page.
\renewcommand\topfraction{.921}
\renewcommand\bottomfraction{.921}

% The minimum amount of a text page that must be occupied by text.
% This should accomodate four lines of text.
\renewcommand\textfraction{.13}

% The minimum amount of a float page that must be occupied by floats.
\renewcommand\floatpagefraction{.887}

% The same parameters repeated for double column output
\renewcommand\dbltopfraction{.88}
\renewcommand\dblfloatpagefraction{.88}

% Space between floats
\setlength\floatsep{18\p@ \@plus 4\p@ \@minus 2\p@}

% Space between floats and text
\setlength\textfloatsep{15\p@ \@plus 4\p@ \@minus 2\p@}

% Space above and below an inline figure
\setlength\intextsep   {18\p@ \@plus 4\p@ \@minus 2\p@}

% For double column floats
\setlength\dblfloatsep    {20\p@ \@plus 4\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{15\p@ \@plus 4\p@ \@minus 2\p@}

\hyphenation{Figure Figures Table Tables Equation Equations Section Sections Appendix Theorem Lemma}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Math Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% For above/below spacing
\def\eqnarray{%
   \stepcounter{equation}%
   \def\@currentlabel{\p@equation\theequation}%
   \global\@eqnswtrue
   \m@th
   \global\@eqcnt\z@
   \tabskip\@centering
   \let\\\@eqncr
   $$\everycr{}\halign to\displaywidth\bgroup
       \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
      &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil
      &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
         $\displaystyle{##}$\hfil\tabskip\@centering
      &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
         \tabskip\z@skip
      \cr
}
\def\endeqnarray{%
      \@@eqncr
      \egroup
      \global\advance\c@equation\m@ne
   $$\@ignoretrue
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Titles %%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\renewcommand\refname{References}%
\renewcommand\figurename{Fig.}% defined as per springer style
\renewcommand\tablename{Table}%
\renewcommand\appendixname{Appendix}%
\renewcommand\abstractname{Abstract}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Article Front Matter %%%%%%%%%%%%%%%%%%%%%%%%%%%
%

\def\raggedleft{\leftskip0pt plus 1fil\parfillskip=0pt\relax}%
\def\raggedright{\rightskip0pt plus 1fil\parfillskip=0pt\relax}%
\def\raggedcenter{\leftskip=0pt plus 0.5fil\rightskip=0pt plus 0.5fil%
\parfillskip=0pt\let\hb=\break}%
\def\titraggedcenter{\leftskip=12pt plus 0.5fil\rightskip=12pt plus 0.5fil%
\parfillskip=0pt\let\hb=\break}%
\def\absraggedcenter{\leftskip=24pt plus 0.5fil\rightskip=24pt plus 0.5fil%
\parfillskip=0pt\let\hb=\break}%

%
%%% Font Def
\def\Artcatfont{\reset@font\fontsize{8bp}{10bp}\selectfont}%
\def\Titlefont{\reset@font\fontsize{17bp}{22.5bp}\selectfont\titraggedcenter}%
\def\SubTitlefont{\reset@font\fontsize{14bp}{16.5bp}\selectfont\titraggedcenter}%
\def\Authorfont{\reset@font\fontsize{12bp}{14.5bp}\selectfont\boldmath\titraggedcenter}%
\def\addressfont{\reset@font\fontsize{11bp}{13.5bp}\selectfont\titraggedcenter}%
\def\abstractheadfont{\reset@font\fontsize{9bp}{11bp}\bfseries\selectfont\titraggedcenter}%
\def\abstractsubheadfont{\reset@font\fontsize{9bp}{11bp}\bfseries\selectfont}%
\def\abstractfont{\reset@font\fontsize{9bp}{11bp}\selectfont\leftskip=24pt\rightskip=24pt\parfillskip=0pt plus 1fil}%
\def\keywordfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont\leftskip=24pt\rightskip=24pt plus0.5fill}%
\def\historyfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont\leftskip=24pt\rightskip=24pt plus0.5fill}%

%% Article Type

\newbox\artcatbox%

\def\articletype#1{\if!#1!\else\setbox\artcatbox\hbox{\Artcatfont\hskip1mm#1\hskip1mm}\fi%
\gdef\ArtType{\fboxsep=0pt{\vbox to 4mm{\vfil%
              {\raggedright\box\artcatbox}\vfil}}}%
\gdef\@ArtType{#1}}%
%%\articletype{RESEARCH ARTICLE}%
\articletype{}%

%% Article Title

\renewcommand{\title}[2][]{%
\gdef\@checktitle{#1}\ifx\@checktitle\empty\gdef\@title{#2}%
\gdef\s@title{#2}\else\gdef\@title{#2}\gdef\s@title{#1}\fi%
\markboth{\textit{\s@title}}{\textit{\s@title}}}%

\def\subtitle#1{\gdef\@subtitle{#1}}\subtitle{}%

%% Cross Link for Author & Address
\def\jmkLabel#1{\@bsphack\protected@write\@auxout{}{\string\Newlabel{#1}{\@currentlabel}}\@esphack}%
\def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}}%
\def\jmkRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}}%

%% Article Author(s)
\let\sep\@empty%
\let\authorsep\@empty%
\newcount\aucount%
\newcount\corraucount%
\newcount\punctcount%
%
\def\artauthors{}%
\newif\if@auemail%
\newif\if@corauemail%
%
\def\au@and{\ifnum\punctcount=2\ and\else\unskip, \advance\punctcount by -1 \fi}%
%
\def\author{\advance\aucount by 1\@ifstar\@@corrauthor\@@author}%
%
\newcommand{\@@author}[2][]{\def\@authfrstarg{#1}\@corauemailfalse%
\g@addto@macro\artauthors{%
    \ifnum\aucount=1%
    \global\@auemailtrue%
    \else%
    \global\@auemailfalse%
    \fi%
    \Authorfont%
    \def\baselinestretch{1}%
    \authorsep{#2}\unskip\ifx\@authfrstarg\empty\else\textsuperscript{\smash{{%
      \@for\@@affmark:=#1\do{\edef\affnum{\@ifundefined{X@\@@affmark}{\@@affmark}{\jmkRef{\@@affmark}}}%
     \unskip\sep\affnum\let\sep=,}}}}\fi%
    \def\authorsep{{\au@and} }%%%
    \global\let\sep\@empty\global\let\@corref\@empty%
}}%
%
\newcommand{\@@corrauthor}[2][]{\def\@authfrstarg{#1}\@corauemailtrue\advance\corraucount by 1%
\g@addto@macro\artauthors{%
    \global\@auemailtrue%
    \Authorfont%
    \def\baselinestretch{1}%
    \authorsep{#2}\unskip\ifx\@authfrstarg\empty\else\textsuperscript{\smash{{%
      \@for\@@affmark:=#1\do{\edef\affnum{\@ifundefined{X@\@@affmark}{\@@affmark}{\jmkRef{\@@affmark}}}%
     \unskip\sep\affnum\let\sep=,}}}{*}\hskip-1pt}\fi\unskip%
    \def\authorsep{\au@and~}%%%
    \global\let\sep\@empty\global\let\@corref\@empty%
}}%
%%
%% Miscellaneous macros %%
%%
\def\fnm#1{\leavevmode\hbox{#1}}%
\def\sur#1{\unskip~\nobreak\leavevmode\hbox{#1}}%
\def\spfx#1{#1}%
\def\pfx#1{#1}%
\def\sfx#1{#1}%
\def\tanm#1{#1}%
\def\dgr#1{#1}%
%
%% Author Email
%
\let\nomail\relax%
\def\corrauthemail{}%
\def\authemail{}%

\newcount\emailcnt%

\def\email#1{\global\advance\emailcnt by 1\relax%
\if@corauemail%
   \g@addto@macro\corrauthemail{%
   \setcounter{footnote}{0}%
   \textcolor{blue}{#1};\ %
   }%
\else%
   \g@addto@macro\authemail{%
   \setcounter{footnote}{0}%
   \textcolor{blue}{#1};\ %
   }%
\fi}

%% Corrseponding Address
\def\@copycorthanks{}%
\def\auaddress{}%
\def\@auaddress{}%

\newcounter{affn}%
\newcount\addcount% To check the count of address

\renewcommand\theaffn{\arabic{affn}}%

\def\affil{\advance\addcount by 1\@ifstar\@@coraddress\@@address}%

\newcommand{\@@coraddress}[2][]{%\advance\addcount by 1
\g@addto@macro\auaddress{%
     \stepcounter{affn}%
     \xdef\@currentlabel{\theaffn}%
     \jmkLabel{\theaffn}%
     {\textsuperscript{#1*}#2.\par} }
}

%% Macros for present address

\newif\ifpresentaddress%

\def\@presentaddresstxt{}%
\def\presentaddresstxt#1{\gdef\@presentaddresstxt{#1:}}\presentaddresstxt{Present Address}%
\newcommand{\presentaddress}[1]{\gdef\@presentaddresstext{\@presentaddresstxt\par#1}\global\presentaddresstrue}%

%% Macros for equally contributed

\newif\ifequalcont%

%\def\@equalconttxt{}%
%\def\equalcontxt#1{\gdef\@equalconttxt{#1}}\equalcontxt{These authors contributed equally to this work.}%
%\newcommand{\equalcont}[1][\@equalconttxt]{\gdef\@equalconttext{#1}\g@addto@macro\artauthors{$^{\dagger}$}\global\equalconttrue}%

\def\@equalconttxt{}%
\def\equalcontxt#1{\gdef\@equalconttxt{#1}}\equalcontxt{}%
\newcommand{\equalcont}[1]{\gdef\@equalconttext{#1}\g@addto@macro\artauthors{$^{\dagger}$}\global\equalconttrue}%

%% Author Address

\newcommand{\@@address}[2][]{%%\advance\addcount by 1
\g@addto@macro\auaddress{%
     \stepcounter{affn}%
     \xdef\@currentlabel{\theaffn}%
     \jmkLabel{\theaffn}%
     {\textsuperscript{#1}#2.\par} }%\theaffn
}

%% Address tagging
\newcommand{\orgdiv}[1]{#1}%
\newcommand{\orgname}[1]{#1}%
\newcommand{\orgaddress}[1]{#1}%
\newcommand{\street}[1]{#1}%
\newcommand{\postcode}[1]{#1}%
\newcommand{\city}[1]{#1}%
\newcommand{\state}[1]{#1}%
\newcommand{\country}[1]{#1}%

%% Article notes

\def\@artnote{}%
\def\artnote#1{\gdef\@artnote{#1}}%

%% Miscellaneous notes

\def\@miscnote{}%
\def\miscnote#1{\gdef\@miscnote{\par\addvspace{3pt}#1}}%

%% Motto

\def\mottofont{\reset@font\fontfamily{\rmdefault}\fontsize{8.5bp}{10bp}\fontshape{it}\selectfont\raggedright}
%
\let\@motto\@empty
\def\mottoraggedright{\rightskip0mm\leftskip=42mm plus 1fil\parfillskip=0pt\relax}%
\newcommand{\motto}[2][]{\gdef\@headcheck{#1}\gdef\@motto{\@headcheck\ifx\@headcheck\@empty\vskip12pt\else\fi{\mottofont\mottoraggedright#2\par}}}

%% Article Abstract
\newcommand\abstracthead{\@startsection {section}{1}{\z@}{-22pt \@plus0ex \@minus0ex}{3pt}{\abstractheadfont}}
\newcommand\subabstracthead{\@startsection{subsection}{2}{\z@}{3pt \@plus0ex \@minus0ex}{-.5em}{\abstractsubheadfont}}

\def\@abstract{}%
\long\def\abstract#1{\def\@abstract{%
\let\paragraph\subabstracthead%
\abstractfont%
\abstracthead*{\abstractname}%

\def\printabstract{\ifx\@abstract\empty\else\@abstract\fi\par}%

\def\printkeywords{\ifx\@keywords\empty\else\@keywords\fi\par}%

%
%% Keywords
\def\keywordname{Keywords}%
\def\keywords#1{\ifx#1\empty\else\def\@keywords{\par\addvspace{10pt}{\keywordfont{\bfseries\keywordname:} #1\par}}\fi}%
\def\@keywords{}%

%% PACs

\def\pacsbullet{\hbox{\hskip2.5pt,\hskip2.5pt}}%

\def\change@commas#1,#2{%
  \ifx#2\@empty%
    #1%
  \else%
    #1\nobreak\hbox{\pacsbullet}\allowbreak\expandafter\change@commas%
  \fi%
  #2}%

\newcommand\keywordhead[1]{\par\addvspace{10pt}%
{{\keywordfont\bfseries#1:\ }}}%

\newcommand{\pacs}[1]{\keywordhead{\pacsname}#1}%
%
\newcount\PacsCount%
\PacsCount=0%
%
\newcount\PacsTmpCnt%
\PacsTmpCnt=1%
%
\gdef\StorePacsText#1#2{%
\edef\GetRoman{\romannumeral#1}%
\expandafter\gdef\csname\GetRoman StorePacsTxt\endcsname{#2}%
}%
%
\let\oldpacs\pacs%
\renewcommand\pacs[2][PAC Codes]{\gdef\pacsname{{\bfseries#1}}\gdef\@pacs{\keywordfont\raggedright\oldpacs\change@commas#2,\@empty\par}
\StepUpCounter{\PacsCount}%
\StorePacsText{\the\PacsCount}{\gdef\pacsname{{\bfseries#1}}\keywordfont\raggedright\oldpacs\change@commas#2,\@empty}%
}%

\def\@pacs{}%

%% Glossary

\def\gloshead{Glossary}%

\newenvironment{glos}[1][\gloshead]{\begingroup\parindent=0pt%
\section*{#1}
\def\item[##1]{##1,\ }}{%
\endgroup}%
%

%% Article History

\def\received#1{\g@addto@macro\@history{{Received #1}}}%
\def\revised#1{\g@addto@macro\@history{{; revised #1}}}%
\def\accepted#1{\g@addto@macro\@history{{; accepted #1}}}%

%% Remark on Front page %%

\newdimen\FMremarkdim%

\newcommand{\FMremark}{\begingroup\parindent=0pt\parskip=0pt%
\if@referee\singlespacing\fi%
\fboxsep=6pt\fboxrule=0.5pt%
\FMremarkdim=\textwidth%%\paperwidth%
\advance\FMremarkdim-\fboxsep%
\advance\FMremarkdim-2\fboxrule%
\if@referee\vskip-21pt\fi%
%%\fbox{\vbox{\hsize=\FMremarkdim\small%
\unvbox\fmremarkbox
%%}}%
\endgroup}

\newbox\fmremarkbox%

\newenvironment{fmremark}{\begingroup\parindent=0pt%
\fboxsep=6pt\fboxrule=0.5pt%
\FMremarkdim=\textwidth%%\paperwidth%
\advance\FMremarkdim-\fboxsep%
\advance\FMremarkdim-2\fboxrule%
\global\setbox\fmremarkbox\vbox\bgroup\small%
}{\egroup\endgroup}

%% Article Header Definition
\renewcommand{\@maketitle}{\newpage\null%
    \if@remarkboxon\vbox to 0pt{\vspace*{-78pt}\hspace*{-18pt}\FMremark}\else\vskip21pt\fi%%\par%
    \hsize\textwidth\parindent0pt%%%\vskip7pt%
    %% Aritle Type
    {\hbox to \textwidth{{\Artcatfont\ArtType\hfill}\par}}
    %% Aritle Title
    \ifx\@title\empty\else%
        \removelastskip\vskip20pt\nointerlineskip%
        {\Titlefont\@title\par}
        %\addcontentsline{toc}{chapter}{\@title}% for bookmarks
    \fi%
    %% Aritle SubTitle
    \ifx\@subtitle\empty\else%
        \vskip9pt%
        {{\SubTitlefont\@subtitle\par}}
    \fi%
    %% Aritle Authors, Address and Correspondings
    \ifnum\aucount>0
        \global\punctcount\aucount%
        \vskip20pt%
        \artauthors\par%%     authors and emails
        {\vskip7pt\addressfont\auaddress\par%%      corresponding adress
	 \removelastskip\vskip24pt%
	\ifnum\emailcnt>0\relax%
           \ifx\corrauthemail\@empty\else{\ifnum\aucount>1*\fi}%
	   Corresponding author(s). E-mail(s): \corrauthemail\par\fi%
	   \ifx\authemail\@empty\else Contributing authors:\ \authemail\fi%
        \fi%
        \ifequalcont{\par$^{\dagger}$\@equalconttext\par}\fi%
	 \removelastskip\vskip24pt%
        \ifpresentaddress{\par\@presentaddresstext\par}\fi%
	}
     \fi%
     {\printabstract\par}%
     {\printkeywords\par}%
     \ifx\@pacs\empty\else%
       \loop\ifnum\PacsCount>0%
          \csname\romannumeral\PacsTmpCnt StorePacsTxt\endcsname\par%
          \StepDownCounter{\PacsCount}%
          \StepUpCounter{\PacsTmpCnt}%
       \repeat%
    \fi%
    %%{\printhistory\par}%
    %%{\ifx\@motto\empty\else\@motto\fi}%
    \removelastskip\vskip36pt\vskip0pt}%

\usepackage{cuted}%
\@ifpackageloaded{cuted}{\gdef\@setmarks{}}{}%

%% Printing Article Header
\newdimen\firstpagehtcheck

\renewcommand\maketitle{\par
  \@afterindentfalse%
  \begingroup
    \gdef\UrlFont{\rmfamily}%
    \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
    \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\smash{\@thefnmark}}}}%
    \long\def\@makefntext##1{\parindent 1em\noindent\small\selectfont
            \hbox{\@textsuperscript{\normalfont\@thefnmark}}##1}%
    \if@twocolumn
      \ifnum \col@number=\@ne%
\setbox0=\vbox{\@maketitle}
\firstpagehtcheck=\ht0%
\advance\firstpagehtcheck by \dp0%
\ifdim\firstpagehtcheck>\textheight%
\setbox1=\vsplit0to2\textheight%
\setbox1=\vbox{\unvbox1}%
\setbox2=\vbox{\unvbox0}%
\unvbox1%
\stripsep=0pt%
\begin{strip}
\unvbox2%
\end{strip}
\else
\twocolumn[\@maketitle]%
\fi
\else
\@maketitle
\fi%
    \else%
      \newpage%
      \global\@topnum\z@% Prevents figures from going at top of page.
      \@maketitle%
    \fi%
  \endgroup%
  \ifx\@artnote\@empty\else\footnoteA{\@artnote}\fi%
  \ifx\@miscnote\@empty\else\footnoteA{\@miscnote\par}\fi%
  \setcounter{footnote}{0}%
  \global\let\thanks\relax%
  \global\let\artnote\relax%
  \global\let\maketitle\relax%
  \global\let\@maketitle\relax%
  \global\let\@thanks\@empty%
  \global\let\@author\@empty%
  \global\let\@date\@empty%
  \global\let\title\relax%
  \global\let\author\relax%
  \global\let\date\relax%
  \global\let\and\relax%
  \pagestyle{headings}%
  %%%print continuous abstract on next page
  \@afterheading%
  %%\vskip-18pt% this is included to avoid vertical space at the beginning of left column on article opening pages
}%

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Page Styles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
\def\opheaderfont{\reset@font\fontsize{10bp}{0bp}\selectfont}%
\def\headerfont{\reset@font\fontsize{10bp}{0bp}\selectfont}%
\def\footerfont{\reset@font\fontsize{10bp}{0bp}\selectfont}%

%% Regular Page Style
\def\ps@headings{%
    \def\@oddfoot{\hfill\thepage\hfill}%
    \let\@evenfoot\@oddfoot%
      \def\@evenhead{%
      \vbox to 0pt{\vspace*{-48pt}%
         \hbox to \hsize{\hfill \relax\hfill}}\par%%
      \hspace*{-\textwidth}\hbox to \hsize{\hfill}}%
      \def\@oddhead{%
      \vbox to 0pt{\vspace*{-48pt}%
         \hbox to \hsize{\hfill \relax\hfill}}\par%%
      \hspace*{-\textwidth}\hbox to \hsize{\hfill}}%
      \let\@mkboth\markboth%
      }%

%% Opening Page Style
\def\ps@titlepage{%
     %%\def\@oddhead{\vbox{\vskip-36pt\hbox to \textwidth{\hfill\includegraphics{springer-nature-logo}\hspace*{-1pt}}}}%
     %%\let\@oddhead\@empty\let\@evenhead\@empty%
      \def\@oddhead{%
      \vbox to 0pt{\vspace*{-38pt}%
         \hbox to \hsize{\hfill \hfill}}}%%
     \let\@evenhead\@oddhead%
     \def\@oddfoot{\vbox to 18pt{\vfill\reset@font\rmfamily\hfil\thepage\hfil}}%%
     \def\@evenfoot{}}%

\def\ps@plain{\let\@mkboth\@gobbletwo%
\let\@oddhead\@empty\let\@evenhead\@empty%
\def\@oddfoot{\vbox to 18pt{\vfill\reset@font\rmfamily\hfil ddd\thepage\hfil}}%
\let\@evenfoot\@oddfoot}%

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sections %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%

\def\numbered{\setcounter{secnumdepth}{3}}%
\def\unnumbered{\setcounter{secnumdepth}{0}}%
\numbered%% default is numbered Sections

\renewcommand\thesection      {\@arabic\c@section}%
\renewcommand\thesubsection   {\thesection.\@arabic\c@subsection}%
\renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}%
\renewcommand\theparagraph    {\thesubsubsection.\@arabic\c@paragraph}%
\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}%
%%
\def\@seccntformat#1{\csname the#1\endcsname\hskip.5em}%

\def\@sect#1#2#3#4#5#6[#7]#8{%
  \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
  \else
    \refstepcounter{#1}%
      \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  \fi
  \@tempskipa #5\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #6{%
        \@hangfrom{\hskip #3\relax\@svsec}%
          \interlinepenalty \@M #8\@@par}%
    \endgroup
    \csname #1mark\endcsname{#7}%
    \addcontentsline{toc}{#1}{%
      \ifnum #2>\c@secnumdepth \else
        \protect\numberline{\csname the#1\endcsname}%
      \fi
      #7}%
  \else
    \def\@svsechd{%
      #6{\hskip #3\relax
      \@svsec #8.}%
      \csname #1mark\endcsname{#7}%
      \addcontentsline{toc}{#1}{%
        \ifnum #2>\c@secnumdepth \else
          \protect\numberline{\csname the#1\endcsname}%
        \fi
        #7}}%
  \fi
  \@xsect{#5}}
%
\def\sectionfont{\reset@font\fontfamily{\rmdefault}\fontsize{14bp}{16bp}\bfseries\selectfont\raggedright\boldmath}%
\def\subsectionfont{\reset@font\fontfamily{\rmdefault}\fontsize{12bp}{14bp}\bfseries\selectfont\raggedright\boldmath}%
\def\subsubsectionfont{\reset@font\fontsize{11bp}{13bp}\bfseries\selectfont\raggedright\boldmath}%
\def\paragraphfont{\reset@font\fontsize{10bp}{12bp}\bfseries\itshape\selectfont\raggedright}%
%
\def\subparagraphfont{\itshape}%
\def\bmheadfont{\reset@font\fontfamily{\rmdefault}\fontsize{10bp}{12bp}\bfseries\selectfont\raggedright\boldmath}%
%
\renewcommand\section{\@startsection{section}{1}{\z@}%
                                    {-12pt \@plus -4pt \@minus -2pt}%
                                    {9pt}%
                                    {\sectionfont}}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
                                       {-12pt \@plus -4pt \@minus -2pt}%
                                       {6pt}%
                                       {\subsectionfont}}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
                                          {-12pt \@plus -4pt \@minus -2pt}%
                                          {6pt}%
                                          {\subsubsectionfont}}
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
                                      {-12pt \@plus -4pt \@minus-2pt}%
                                      {3pt}%
                                      {\paragraphfont}}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
                                         {6pt \@plus1ex \@minus.2ex}%
                                         {-1em}%
                                         {\subparagraphfont}}
\newcommand\bmhead{\@startsection{subparagraph}{5}{\z@}%
                                 {6pt \@plus1ex \@minus .2ex}%
                                 {-1em}%
                                 {\bmheadfont}}
%
\def\@startsection#1#2#3#4#5#6{%
  \if@noskipsec \leavevmode \fi
  \par
  \@tempskipa #4\relax
  \@afterindenttrue
  \ifdim \@tempskipa <\z@
    \@tempskipa -\@tempskipa \@afterindentfalse
  \fi
  \if@nobreak
    \everypar{}%
  \else
    \addpenalty\@secpenalty\addvspace\@tempskipa
  \fi
  \@ifstar
    {\@ssect{#3}{#4}{#5}{#6}}%
    {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Lists %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\newdimen\labelwidthi%
\newdimen\labelwidthii%
\newdimen\labelwidthiii%
\newdimen\labelwidthiv%

\def\normal@labelsep{0.5em}%
\labelsep\normal@labelsep%
\settowidth{\labelwidthi}{(iii)}%
\settowidth{\labelwidthii}{(d)}%
\settowidth{\labelwidthiii}{(iii)}%
\settowidth{\labelwidthiv}{(M)}%

\leftmargini\labelwidthi     \advance\leftmargini\labelsep
\leftmarginii\labelwidthii   \advance\leftmarginii\labelsep
\leftmarginiii\labelwidthiii \advance\leftmarginiii\labelsep
\leftmarginiv\labelwidthiv   \advance\leftmarginiv\labelsep

\def\setleftmargin#1#2{\settowidth{\@tempdima}{#2}\labelsep\normal@labelsep
  \csname labelwidth#1\endcsname\@tempdima
  \@tempdimb\@tempdima \advance\@tempdimb\labelsep
  \csname leftmargin#1\endcsname\@tempdimb}
\def\@listI{\leftmargin\leftmargini
  \labelwidth\labelwidthi \labelsep\normal@labelsep
%  \topsep \z@
  \topsep\baselineskip %%updated
  \partopsep\z@ \parsep\z@ \itemsep\z@
  \listparindent 1em}
\def\@listii{\leftmargin\leftmarginii
  \labelwidth\labelwidthii \labelsep\normal@labelsep
  \topsep\z@ \partopsep\z@ \parsep\z@ \itemsep\z@
  \listparindent 1em}
\def\@listiii{\leftmargin\leftmarginiii
  \labelwidth\labelwidthiii \labelsep\normal@labelsep
  \topsep\z@ \partopsep\z@ \parsep\z@ \itemsep\z@
  \listparindent 1em}
\def\@listiv{\leftmargin\leftmarginiv
  \labelwidth\labelwidthiv \labelsep\normal@labelsep
  \topsep\z@ \partopsep\z@ \parsep\z@ \itemsep\z@
  \listparindent 1em}
\let\@listi\@listI
\@listi
%
\setlength  \labelsep  {.5em}
\setlength  \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty   -\@lowpenalty
\@itempenalty     -\@lowpenalty
\def\labelitemi{$\bullet$}          \def\labelitemii{$\cdot$}
\def\labelenumi{\theenumi.}         \def\theenumi{\arabic{enumi}}
\def\labelenumii{(\alph{enumii})}   \def\theenumii{\alph{enumii}}
\def\labelenumiii{(\roman{enumiii})}\def\theenumiii{\roman{enumiii}}
\def\labelenumiv{(\Alph{enumiv})}   \def\theenumiv{\Alph{enumiv}}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Ordered & Unordered List  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\def\listfont{\normalsize}%
%
\def\enumargs{%
   \listfont%
   \leftmargini0pt%
   \leftmarginii0pt%
   \leftmarginiii0pt%
   \ifnum\@enumdepth=3\topsep0pt\else\ifnum\@enumdepth=2\topsep0pt\else\topsep 6pt\fi\fi%
   \partopsep     \z@%
   \itemsep       \z@%
   \parsep        \z@%
   \labelsep      0.5em%
   \rightmargin   \z@%
   \raggedright%
   \listparindent \parindent%
   \itemindent    \z@}%

\def\enumerate{%
    \@ifnextchar[{\@numerate}{\@numerate[0.]}}

\def\@numerate[#1]{\par%
     \ifnum \@enumdepth >3 \@toodeep\else
     \advance\@enumdepth \@ne
     \edef\@enumctr{enum\romannumeral\the\@enumdepth}
     \list{\csname label\@enumctr\endcsname}{%
       \enumargs%
       \setlength{\leftmargin}{\csname leftmargin\romannumeral\the\@enumdepth\endcsname}
       \usecounter{\@enumctr}
       \settowidth\labelwidth{#1}
       \addtolength{\leftmargin}{\labelwidth}
       \addtolength{\leftmargin}{\labelsep}
       \def\makelabel##1{\hss\llap{##1}}}%
     \fi
   }
\let\endenumerate\endlist

%%Unnumbered list%%

\def\unenumargs{%
   \listfont%
   \leftmargini\parindent%
   \topsep6pt%
   \partopsep     \z@%
   \itemsep       \z@%
   \parsep        \z@%
   \labelsep      0\p@%
   \rightmargin   \z@%
   \raggedright%
   \listparindent \parindent%
   \itemindent    -12pt}%

\def\unenumerate{%
    \@ifnextchar[{\@unenumerate}{\@unenumerate[0.]}}

\def\@unenumerate[#1]{\par%
     \ifnum \@enumdepth >3 \@toodeep\else
     \advance\@enumdepth \@ne
     \edef\@enumctr{enum\romannumeral\the\@enumdepth}
     \list{}{%
       \unenumargs
       \setlength{\leftmargin}{\csname leftmargin\romannumeral\the\@enumdepth\endcsname}
       \usecounter{\@enumctr}
       \settowidth\labelwidth{#1}
       \addtolength{\leftmargin}{0pt}
       \addtolength{\leftmargin}{0pt}
       \def\makelabel##1{\hss\llap{##1}}}%
     \fi
   }

\let\endunenumerate\endlist%

%% bulleted list

\def\itemargs{%
   \listfont%
   \leftmargini0pt%
   \leftmarginii0pt%
   \ifnum\@enumdepth=3\topsep0pt\else\ifnum\@enumdepth=2\topsep0pt\else\topsep 6pt\fi\fi%
   \partopsep     \z@%
   \itemsep       \z@%
   \parsep        \z@%
   \labelsep      0.5em%
   \rightmargin   \z@%
   \raggedright%
   \listparindent \z@%
   \itemindent    \z@}%

\renewcommand\labelitemi{\raise1pt\hbox{\textbullet}}%
\renewcommand\labelitemii{\textendash}%

\def\itemize{%
   \@ifnextchar[{\@itemize}{\@itemize[$\bullet$]}}

\def\@itemize[#1]{\par%
     \ifnum \@itemdepth >3 \@toodeep\else
     \advance\@itemdepth \@ne
     \edef\@itemctr{item\romannumeral\the\@itemdepth}
     \list{\csname label\@itemctr\endcsname}{%
       \itemargs
       \setlength{\leftmargin}{\csname leftmargin\romannumeral\the\@itemdepth\endcsname}
       \settowidth\labelwidth{#1}
       \addtolength{\leftmargin}{\labelwidth}
       \addtolength{\leftmargin}{\labelsep}
       \def\makelabel##1{\hss \llap{##1}}}%
     \fi
   }
\let\enditemize\endlist
%
\def\quote{\list{}{\itemindent\z@
   \leftmargin 1em \rightmargin \z@}%
\item[]}
\let\endquote\endlist
%
\def\descriptionlabel#1{\hspace\labelsep \itshape #1}
\def\description{\list{}{\labelwidth\z@
  \leftmargin \z@ \topsep6pt\itemindent \z@ %-\leftmargin
  \let\makelabel\descriptionlabel}}
\let\enddescription\endlist

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Float %%%%%%%%%%%%%%%%%%%%%%%%%%%%

\setlength\abovecaptionskip{2.25\p@}%
\setlength\belowcaptionskip{6\p@}%

\setlength\arraycolsep{2\p@}%
\setlength\tabcolsep{6\p@}%
\setlength\arrayrulewidth{.4\p@}%
\setlength\doublerulesep{2\p@}%
\setlength\tabbingsep{\labelsep}%

\def\fnum@figure{{\bfseries\figurename\space\thefigure}}%
\def\fnum@table{{\bfseries\tablename\space\thetable}}%

\def\FigName{figure}%

\long\def\@makecaption#1#2{%
    \ifx\FigName\@captype
      \vskip\abovecaptionskip
        \@figurecaption{#1}{#2}
    \else
        \@tablecaption{#1}{#2}
      \vskip\belowcaptionskip
    \fi%
}

%% Figure

\def\figurecaptionfont{\reset@font\fontfamily{\rmdefault}\fontsize{8}{9.5}\selectfont}%

\newdimen\figwidth%
\newdimen\figheight%
\newdimen\sidecapwidth
\newdimen\wrapcapline%
\newdimen\totalwrapline%
\newdimen\wraptotline%

%% Figures macro
\newbox\figurebox%
\newbox\wrapfigcapbox

\def\FIG#1#2{%
\setbox\figurebox\hbox{#1}%
%% Figure dimensions
\figwidth\wd\figurebox%
\figheight\ht\figurebox%
{\parbox{\hsize}{%
\centerline{\box\figurebox}%
%% Caption

%% Figures caption
\newbox\figcapbox
\newbox\capbox
\long\def\@figurecaption#1#2{{\figurecaptionfont{\bfseries#1}\hskip.7em#2\par}}%

\newenvironment{unnumfigure}{\begingroup\setlength{\topsep}{12pt}%
\begin{center}}{\end{center}\endgroup}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\@ifpackageloaded{booktabs}{\cmidrulewidth=.15pt}{}%
%
\def\tablecaptionfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont}%
\def\tablebodyfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont}%
\def\tablecolheadfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont\bfseries\boldmath}%
\def\tablefootnotefont{\reset@font\fontsize{8bp}{9.5bp}\selectfont}%

%% Table Macro

\newskip\headwidthskip%

\def\tabraggedcenter{\leftskip=0pt plus 0.5fil\rightskip=0pt plus 0.5fil\parfillskip=0pt}%

\newenvironment{@processtable}[4]{%
\setbox4=\hbox to \hsize{\hss%
\begin{minipage}[t]{#4}%
\tabraggedcenter%
\caption{#1}\par%
{\tablebodyfont\noindent\ignorespaces#2\par}\par\vglue6pt%
{\if!#3!\else{\tablefootnotefont#3}\fi}%
\end{minipage}%
\hss}%
\box4\par}%

\newcommand\TBL[3]{\begingroup%
%
\if!#1!\let\caption\relax\fi%
%
   \global\setbox\temptbox=\hbox{\bgroup{\tablebodyfont#2}\egroup}%
   \global\tempdime\wd\temptbox%
    \@processtable{#1}{\global\headwidthskip=\tempdime%
	 \vbox{#2}}{#3}{\tempdime}%
\endgroup}%

%% Table Caption
\newbox\tabcapbox%
\newbox\temptbox%
\newdimen\tempdime%
\newdimen\tabhtdime%

\long\def\@tablecaption#1#2{%
  \setbox\tabcapbox\vbox{\tablecaptionfont\raggedright%
  {\bfseries #1}{\hskip2mm}#2\vphantom{y}\par}%
  \box\tabcapbox%
}

%% Table Column Heads
\def\TCH#1{{\tablecolheadfont #1}}

%% Table Footnotes

\newenvironment{tablenotes}{\list{}{\setlength{\labelsep}{0pt}%
\setlength{\labelwidth}{0pt}%
\setlength{\leftmargin}{0pt}%
\setlength{\rightmargin}{0pt}%
\setlength{\topsep}{-6pt}%
\setlength{\itemsep}{2pt}%
\setlength{\partopsep}{0pt}%
\setlength{\listparindent}{0em}%
\setlength{\parsep}{0pt}}%
\item\relax%
}{\endlist}%

\def\tnote#1{$^{#1}$}%%

%% Table Rules

\def\toprule{%\noalign{\vskip3pt}
\noalign{\ifnum0=`}\fi
  \hrule \@height 0\p@ \@width 0pt
  \hrule \@height 0.75\p@ % <- rule height
  \hrule \@height 5pt \@width 0pt
  \futurelet\@tempa\@xhline}
% Middle rule
\def\midrule{\noalign{\ifnum0=`}\fi%
  \hrule \@height 3pt \@width 0pt
  \hrule \@height .5pt % <- rule height
  \hrule \@height 5pt \@width 0pt
  \futurelet \@tempa\@xhline}
% Bottom rule
\def\botrule{\noalign{\ifnum0=`}\fi
  \hrule \@height 3pt \@width 0pt
  \hrule \@height 0.75\p@ % <- rule height
  \hrule \@height 3pt \@width 0pt
  \futurelet\@tempa\@xhline}
%
\def\@@@cmidrule[#1-#2]#3#4{\global\@cmidla#1\relax
    \global\advance\@cmidla\m@ne
    \ifnum\@cmidla>0\global\let\@gtempa\@cmidrulea\else
    \global\let\@gtempa\@cmidruleb\fi
    \global\@cmidlb#2\relax
    \global\advance\@cmidlb-\@cmidla
    \global\@thisrulewidth=#3
    \@setrulekerning{#4}
    \ifnum\@lastruleclass=\z@\vskip 3\p@\fi
    \ifnum0=`{\fi}\@gtempa
    \noalign{\ifnum0=`}\fi\futurenonspacelet\@tempa\@xcmidrule}
\def\@xcmidrule{%
   \ifx\@tempa\cmidrule
       \vskip-\@thisrulewidth
       \global\@lastruleclass=\@ne
   \else \ifx\@tempa\morecmidrules
       \vskip \cmidrulesep
       \global\@lastruleclass=\@ne\else
       \vskip 5\p@
       \global\@lastruleclass=\z@
   \fi\fi
   \ifnum0=`{\fi}}
\let\cline\cmidrule

\usepackage[figuresright]{rotating}%
\usepackage{threeparttable}

\let\tableorg\table%
\let\endtableorg\endtable%

\let\sidewaystableorg\sidewaystable%
\let\endsidewaystableorg\endsidewaystable%

\renewenvironment{table}[1][]%
{\begin{tableorg}[#1]%
\begin{center}
\begin{threeparttable}
\tablebodyfont%
\renewcommand\footnotetext[2][]{{\removelastskip\vskip3pt%
\let\tablebodyfont\tablefootnotefont%
\hskip0pt\if!##1!\else{\smash{$^{##1}$}}\fi##2\par}}%
}{\end{threeparttable}\end{center}\end{tableorg}}

\renewenvironment{sidewaystable}[1][]%
{\begin{sidewaystableorg}[#1]%
\begin{center}
\begin{threeparttable}
\tablebodyfont%
\renewcommand\footnotetext[2][]{{\removelastskip\vskip3pt%
\let\tablebodyfont\tablefootnotefont%
\hskip0pt\if!##1!\else{\smash{$^{##1}$}}\fi##2\par}}%
}{\end{threeparttable}\end{center}\end{sidewaystableorg}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%% Other Env. %%%%%%%%%%%%%%%%%%%%%%%%%

\def\quotefont{\reset@font\fontfamily{\rmdefault}\fontsize{9}{11}\selectfont}%

\renewenvironment{quote}
               {\list{}{\topsep=0pt\topsep6pt\leftmargin=1em\raggedright\quotefont}%
                \item\relax}
               {\endlist}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Appendix %%%%%%%%%%%%%%%%%%%%%%%%%
%

\newif\ifbackmatter%
\newcommand{\backmatter}{\global\backmattertrue}%

\usepackage[title]{appendix}%

\@ifpackageloaded{appendix}{%
%
\renewenvironment{appendices}{%
  \@resets@pp
  \if@dotoc@pp
    \if@dopage@pp              % both page and toc
      \if@chapter@pp           % chapters
        \clear@ppage
      \fi
      \appendixpage
    \else                      % toc only
       \if@chapter@pp          % chapters
         \clear@ppage
       \fi
      \addappheadtotoc
    \fi
  \else
    \if@dopage@pp              % page only
      \appendixpage
    \fi
  \fi
  \if@chapter@pp
    \if@dotitletoc@pp \@redotocentry@pp{chapter} \fi
  \else
    \if@dotitletoc@pp \@redotocentry@pp{section} \fi
    \if@dohead@pp
      \def\sectionmark##1{%
        \if@twoside
          \markboth{\@formatsecmark@pp{##1}}{}
        \else
          \markright{\@formatsecmark@pp{##1}}{}
        \fi}
    \fi
    \if@dotitle@pp
      \def\sectionname{\appendixname}
      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
        \csname the##1\endcsname\quad}
    \fi
  \fi
}{%
  \@ppsaveapp\@pprestoresec}
%%
\AtBeginDocument{%
%
\let\oldappendices\appendices%
\let\oldendappendices\endappendices%
%%
\renewenvironment{appendices}{%
\setcounter{figure}{0}%
\setcounter{table}{0}%
\setcounter{equation}{0}%
%%
\begin{oldappendices}%
  \gdef\thefigure{\@Alph\c@section\arabic{figure}}%
  \gdef\thetable{\@Alph\c@section\arabic{table}}%
  \gdef\theequation{\@Alph\c@section\arabic{equation}}%
}{\end{oldappendices}}
}
%%
}{}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Article History  %%%%%%%%%%%%%%%%%%%%
%
\def\@history{}
\def\printhistory{{\par\addvspace{8pt}%
\historyfont\noindent%
\ifx\@history\empty\gdef\@history{Received xx xxx xxxx}\fi\@history\par}}%
%
%%%%%%%%%%%%%%%%%%%%%%% Footnotes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
\renewcommand\@makefntext[1]{%
    \hskip8pt{\smash{\@makefnmark}}#1}
%
\RequirePackage{hyperref}%
%%\RequirePackage{hypcap}%
\gdef\breakurldefns{%
\if@pdflatex\else%
  \RequirePackage[hyphenbreaks]{breakurl}%
%  \let\href\burlalt%
\fi}%
\breakurldefns%
%    \bgroup
%      \catcode`\&=12\relax
%      \hyper@normalise\burl@addtocharlistbefore{%}
%      \hyper@normalise\burl@addtocharlistafter{:/.?#&_,;!=+~}%% for extra breaks in url
%    \egroup
%    \burl@defifstructure
%
\hypersetup{%
        colorlinks,
        breaklinks=true,
        plainpages=false,%
        citecolor=blue,
        linkcolor=blue,
        urlcolor=blue,
        bookmarksopen=true,%
        bookmarksnumbered=false,%
        bookmarksdepth=5%
}
%
\AtBeginDocument{\renewcommand\UrlFont{\rmfamily}}%
%
\AtBeginDocument{%
\@ifpackageloaded{natbib}{%
  \renewcommand\bibsection{%
   \section*{\refname}%
  }%
}{}%
}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\pagestyle{headings}%
\pagenumbering{arabic}%
\sloppy%
\frenchspacing%
\flushbottom%

%%% special parameters for TeX
\adjdemerits=100
\linepenalty=100
%
%%%%%%%%%%%%%%% Biography
%
\RequirePackage{wrapfig}%
%
%
%  \begin{wrapfigure}[12]{r}[34pt]{5cm} <figure> \end{wrapfigure}
%                     --  -  ----  ---
%  [number of narrow lines] {placement} [overhang] {width of figure}
\newcount\wraplines%
%%\wraplines=5%
%
\newbox\@authorfigbox%
\newskip\@authorfigboxdim%
%
\newskip\biofigadjskip%
\biofigadjskip=0pt%
%
\def\authbiotextfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont}%
%
\newenvironment{biography}[2]{\par\addvspace{11.5pt plus3.375pt minus1.6875pt}%\lineno@off%
\def\author##1{{\bfseries##1}}%
\if!#1!\def\@authorfig{}\else\def\@authorfig{{#1}}\fi%
\setbox\@authorfigbox=\hbox{#1}%
\@authorfigboxdim=\wd\@authorfigbox%
\if@iicol\advance\@authorfigboxdim by -10pt\else\advance\@authorfigboxdim by -2pt\fi%
\wraplines=9\fboxrule=1pt\fboxsep=6pt%
\noindent{%
\ifx\@authorfig\@empty\else\unskip%
\begin{wrapfigure}[\wraplines]{l}[0pt]{\@authorfigboxdim}%{38.25mm}%
\vskip-19pt\addvspace{\biofigadjskip}%
\@authorfig%
\end{wrapfigure}%
\fi%
{\authbiotextfont#2\par}%
\par%
}}{\par\addvspace{10.5pt plus3.375pt minus1.6875pt}}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Theorem %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
\usepackage{amsthm}
\usepackage{fix-cm}

\@ifpackageloaded{amsthm}{%
%
%\let\proof\relax%
%\let\endproof\relax%

\def\@begintheorem#1#2[#3]{%
  \deferred@thm@head{\the\thm@headfont \thm@indent
    \@ifempty{#1}{\let\thmname\@gobble}{\let\thmname\@iden}%
    \@ifempty{#2}{\let\thmnumber\@gobble}{\let\thmnumber\@iden}%
    \@ifempty{#3}{\let\thmnote\@gobble}{\let\thmnote\@iden}%
    \thm@swap\swappedhead\thmhead{#1}{#2}{#3}%
    \the\thm@headpunct
    \thmheadnl % possibly a newline.
    \hskip\thm@headsep
  }%
  \ignorespaces
}

\def\@endtheorem{\endtrivlist\@endpefalse}

\AtBeginDocument{%
%
\DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi}

\DeclareSymbolFont{AMSa}{U}{msa}{m}{n}%
\DeclareMathSymbol{\opensquare}{\mathord}{AMSa}{"03}%
\def\qedsymbol{\ensuremath{\opensquare}}%
%
\newenvironment{spiproof}[1][\proofname]{\par\removelastskip%\vspace*{2pt}%
  \pushQED{\qed}%
  \small\normalfont \topsep7.5\p@\@plus7.5\p@\relax%
  \trivlist%
  \item[\hskip\labelsep%
        \itshape%
    #1\@addpunct{}]\ignorespaces%
}{%
  \popQED\endtrivlist\@endpefalse%
}%
%
\let\proof\spiproof\let\endproof\endspiproof%
%
}%
%
\def\thm@space@setup{%
\thm@preskip=12pt%
\thm@postskip=12pt}
%
%%%%%%%%%%%%%%%%%% StyleOne
%
\newtheoremstyle{thmstyleone}% Numbered
{18pt plus2pt minus1pt}% Space above
{18pt plus2pt minus1pt}% Space below
{\small\itshape}% Body font
{0pt}% Indent amount
{\small\bfseries}% Theorem head font
{}% Punctuation after theorem head
{.5em}% Space after theorem headi
{\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }\@upn{#2}}%
  \thmnote{ {\the\thm@notefont(#3)}}}% Theorem head spec (can be left empty, meaning `normal')
%
\newtheoremstyle{thmstyletwo}% Numbered
{18pt plus2pt minus1pt}% Space above
{18pt plus2pt minus1pt}% Space below
{\small\normalfont}% Body font
{0pt}% Indent amount
{\small\itshape}% Theorem head font
{}% Punctuation after theorem head
{.5em}% Space after theorem headi
{\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }{#2}}%
  \thmnote{ {\the\thm@notefont(#3)}}}% Theorem head spec (can be left empty, meaning `normal')
%
\newtheoremstyle{thmstylethree}% Definition
{18pt plus2pt minus1pt}% Space above
{18pt plus2pt minus1pt}% Space below
{\small\normalfont}% Body font
{0pt}% Indent amount
{\small\bfseries}% Theorem head font
{}% Punctuation after theorem head
{.5em}% Space after theorem headi
{\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }\@upn{#2}}%
  \thmnote{ {\the\thm@notefont(#3)}}}% Theorem head spec (can be left empty, meaning `normal')
%
\newtheoremstyle{thmstylefour}% Proof
{18pt plus2pt minus1pt}% Space above
{18pt plus2pt minus1pt}% Space below
{\small\normalfont}% Body font
{0pt}% Indent amount
{\small\itshape}% Theorem head font
{}% Punctuation after theorem head
{.5em}% Space after theorem headi
{\global\proofthmtrue\thmname{#1} \thmnote{#3}}% Theorem head spec (can be left empty, meaning `normal')
%
}{}

%% Macros for bibliographystyles %%

% \def\bibcommenthead{\if@bibcomment\begingroup\parindent=0pt\parskip=0pt%
% \removelastskip\vskip13pt\nointerlineskip%
%
% \vbox{\bibfont If you are submitting to one of the Nature Research journals, using the eJP
%  submission system, please include the references within the manuscript file itself. You may
%  do this by copying the reference list from your .bbl file, and pasting it into the bibliography
%  environment of the main manuscript .tex file.}\par%
% \removelastskip\nobreak\vskip13pt\nobreak%
% \endgroup\fi}%

\def\bibcommenthead{}%

\if@Spr@basic@refstyle%
\if@Numbered@refstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
\else%
 \usepackage[authoryear]{natbib}%
  \setcitestyle{aysep={}}
  \gdef\NumBib{NO}%
\fi%
  \bibliographystyle{sn-basic}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%

\if@Mathphys@numrefstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
  \bibliographystyle{sn-mathphys-num}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\else%
\if@Mathphys@ayrefstyle%
 \usepackage[authoryear]{natbib}%
  \gdef\NumBib{NO}%
  \setcitestyle{aysep={}}
  \bibliographystyle{sn-mathphys-ay}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi\fi%
\if@APS@refstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
  \bibliographystyle{sn-APS}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%
\if@Vancouver@numrefstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
  \bibliographystyle{sn-vancouver-num}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\else%
\if@Vancouver@ayrefstyle%
 \usepackage[authoryear]{natbib}%
  \gdef\NumBib{NO}%
  \setcitestyle{aysep={}}
  \bibliographystyle{sn-vancouver-ay}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi\fi%
\if@APA@refstyle%
\if@Numbered@refstyle%
  \usepackage[natbibapa]{apacite}%
  \gdef\NumBib{YES}%
\else%
  \usepackage[natbibapa]{apacite}%
  \gdef\NumBib{NO}%
\fi%
  \bibliographystyle{sn-apacite}%
  \def\refdoi#1{\urlstyle{rm}\url{#1}}%
  \renewcommand{\doiprefix}{}%
  \AtBeginDocument{%
    \renewcommand{\BPBI}{.}% Period between initials - command from apacite.sty
  }%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%
\if@Chicago@refstyle%
\if@Numbered@refstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
\else%
 \usepackage[authoryear]{natbib}%
  \gdef\NumBib{NO}%
  \setcitestyle{aysep={}}
\fi%
  \bibliographystyle{sn-chicago}%
  \hypersetup{urlcolor=black,colorlinks=false,pdfborder={0 0 0}}\urlstyle{same}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%
\if@Standard@Nature@refstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
  \bibliographystyle{sn-nature}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%

\AtBeginDocument{\allowdisplaybreaks}%

\def\eqnheadfont{\reset@font\fontfamily{\rmdefault}\fontsize{16}{18}\bfseries\selectfont}%

\newcommand{\eqnhead}[1]{\begingroup%
\begin{center}
{\eqnheadfont #1}\par%
\end{center}
\removelastskip\vskip24pt%
\thispagestyle{titlepage}%%
%%\thispagestyle{empty}%
\endgroup}

%% Macros for border matrix %%

\newif\if@borderstar

\def\bordermatrix{\@ifnextchar*{%
\@borderstartrue\@bordermatrix@i}{\@borderstarfalse\@bordermatrix@i*}%
}
\def\@bordermatrix@i*{\@ifnextchar[{\@bordermatrix@ii}{\@bordermatrix@ii[()]}}
\def\@bordermatrix@ii[#1]#2{%
\begingroup
\m@th\@tempdima8.75\p@\setbox\z@\vbox{%
\def\cr{\crcr\noalign{\kern 2\p@\global\let\cr\endline }}%
\ialign {$##$\hfil\kern 2\p@\kern\@tempdima & \thinspace %
\hfil $##$\hfil && \quad\hfil $##$\hfil\crcr\omit\strut %
\hfil\crcr\noalign{\kern -\baselineskip}#2\crcr\omit %
\strut\cr}}%
\setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
\setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
\setbox\tw@\hbox{%
$\kern\wd\@ne\kern -\@tempdima\left\@firstoftwo#1%
\if@borderstar\kern2pt\else\kern -\wd\@ne\fi%
\global\setbox\@ne\vbox{\box\@ne\if@borderstar\else\kern 2\p@\fi}%
\vcenter{\if@borderstar\else\kern -\ht\@ne\fi%
\unvbox\z@\kern-\if@borderstar2\fi\baselineskip}%
\if@borderstar\kern-2\@tempdima\kern2\p@\else\,\fi\right\@secondoftwo#1 $%
}\null \;\vbox{\kern\ht\@ne\box\tw@}%
\endgroup
}

%% Macros for line numbers %%

\if@vrulerlinenumberon%
%
\usepackage{vruler}%
%
%%\setvruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<MODE>][<ODD_HSHIFT]>][<EVEN_HSHIFT>][<VSHIFT>][<HEIGHT>]
\def\linenoon{%%\definecolor{blue}{gray}{0}%
\def\tiny{\normalsize\color{black}}%
\setvruler[12bp][1][1][3][1][1.18\textwidth][26pt][-7pt][0.99\textheight]% for even pages: left side; for odd pages: right side;
%%\linkbluecolor
}%
\linenoon%
\def\lineno@off{\unsetvruler}%
\fi%
%% url macros %%

\gdef\orcidlogo{%
\includegraphics{Orcidlogo.eps}%
}%

\gdef\orcid#1{\href{#1}{\orcidlogo}}%

\endinput
\ No newline at end of file
diff --git a/sn-article-template/bst/sn-apacite.bst b/sn-article-template/bst/sn-apacite.bst
new file mode 100644
index 0000000..497a2ef
--- /dev/null
+++ b/sn-article-template/bst/sn-apacite.bst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:be9346857b116ec0359319ff26ace70da573475e4c92c6fb9418f841ff7a7c75
+size 151345
diff --git a/sn-article-template/bst/sn-aps.bst b/sn-article-template/bst/sn-aps.bst
new file mode 100644
index 0000000..a210388
--- /dev/null
+++ b/sn-article-template/bst/sn-aps.bst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:51464202b6682152fcd80583e0898c18b6abc5e8486ec98a9cbabea2004de15d
+size 29828
diff --git a/sn-article-template/bst/sn-basic.bst b/sn-article-template/bst/sn-basic.bst
new file mode 100644
index 0000000..e6ed380
--- /dev/null
+++ b/sn-article-template/bst/sn-basic.bst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4b368414cc5593169907933b417aacfdb0ce905866a39bdf55d21aad65e9d46c
+size 35515
diff --git a/sn-article-template/bst/sn-chicago.bst b/sn-article-template/bst/sn-chicago.bst
new file mode 100644
index 0000000..071c55b
--- /dev/null
+++ b/sn-article-template/bst/sn-chicago.bst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:079647ab15887274acccfc3bd15b3e9928dd16adde8cfc95cf5f1bc5c98b7ba3
+size 33968
diff --git a/sn-article-template/bst/sn-mathphys-ay.bst b/sn-article-template/bst/sn-mathphys-ay.bst
new file mode 100644
index 0000000..a4ec9f6
--- /dev/null
+++ b/sn-article-template/bst/sn-mathphys-ay.bst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:6a2306683997db76b5e58190acea4dac360c742044114f6a923a4380fbab9008
+size 64023
diff --git a/sn-article-template/bst/sn-mathphys-num.bst b/sn-article-template/bst/sn-mathphys-num.bst
new file mode 100644
index 0000000..b12ef45
--- /dev/null
+++ b/sn-article-template/bst/sn-mathphys-num.bst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3a7c7fbcc1e7f9619de634fcea2f5bb7a245818a5942bc576e40ea001633332
+size 64164
diff --git a/sn-article-template/bst/sn-nature.bst b/sn-article-template/bst/sn-nature.bst
new file mode 100644
index 0000000..1d3296c
--- /dev/null
+++ b/sn-article-template/bst/sn-nature.bst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:638d68f5b0e92ffb25d64d29c7334e1bac6bbf54574b602bc633af8d96e1fd9b
+size 39056
diff --git a/sn-article-template/bst/sn-vancouver-ay.bst b/sn-article-template/bst/sn-vancouver-ay.bst
new file mode 100644
index 0000000..a124f11
--- /dev/null
+++ b/sn-article-template/bst/sn-vancouver-ay.bst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:8f4603d045e2e24c304acc9aa9f4389dc0877811c24ff74d62de1a7dad3ebb63
+size 39951
diff --git a/sn-article-template/bst/sn-vancouver-num.bst b/sn-article-template/bst/sn-vancouver-num.bst
new file mode 100644
index 0000000..bf67037
--- /dev/null
+++ b/sn-article-template/bst/sn-vancouver-num.bst
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:7fa6df12ec8e8945c86958a50fb703d181522745adcf72bf95a86f3633540e8a
+size 40758
diff --git a/sn-article-template/empty.eps b/sn-article-template/empty.eps
new file mode 100644
index 0000000..5d75774
--- /dev/null
+++ b/sn-article-template/empty.eps
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:aca23a40a6a8e1bf92b417dbf15ebdceaefd2e4066e8ec98747232237facaa04
+size 2890
diff --git a/sn-article-template/fig.eps b/sn-article-template/fig.eps
new file mode 100644
index 0000000..d28d980
--- /dev/null
+++ b/sn-article-template/fig.eps
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:000216a239b64210b463bb888e4be0a233410eccb24e7e4692de4f2ba940ee03
+size 91593
diff --git a/sn-article-template/sn-article.pdf b/sn-article-template/sn-article.pdf
new file mode 100644
index 0000000..eb0ed9d
--- /dev/null
+++ b/sn-article-template/sn-article.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:98f733c4946df6612fa8071dc864e3a43aa8be6dd7a4aacd1598cb6025216ac1
+size 421391
diff --git a/sn-article-template/sn-article.tex b/sn-article-template/sn-article.tex
new file mode 100644
index 0000000..bdc3503
--- /dev/null
+++ b/sn-article-template/sn-article.tex
@@ -0,0 +1,623 @@
+%Version 3.1 December 2024
+% See section 11 of the User Manual for version history
+%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%%                                                                 %%
+%% Please do not use \input{...} to include other tex files.       %%
+%% Submit your LaTeX manuscript as one .tex document.              %%
+%%                                                                 %%
+%% All additional figures and files should be attached             %%
+%% separately and not embedded in the \TeX\ document itself.       %%
+%%                                                                 %%
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%\documentclass[referee,sn-basic]{sn-jnl}% referee option is meant for double line spacing
+
+%%=======================================================%%
+%% to print line numbers in the margin use lineno option %%
+%%=======================================================%%
+
+%%\documentclass[lineno,pdflatex,sn-basic]{sn-jnl}% Basic Springer Nature Reference Style/Chemistry Reference Style
+
+%%=========================================================================================%%
+%% the documentclass is set to pdflatex as default. You can delete it if not appropriate.  %%
+%%=========================================================================================%%
+
+%%\documentclass[sn-basic]{sn-jnl}% Basic Springer Nature Reference Style/Chemistry Reference Style
+
+%%Note: the following reference styles support Namedate and Numbered referencing. By default the style follows the most common style. To switch between the options you can add or remove �Numbered� in the optional parenthesis.
+%%The option is available for: sn-basic.bst, sn-chicago.bst%
+
+%%\documentclass[pdflatex,sn-nature]{sn-jnl}% Style for submissions to Nature Portfolio journals
+%%\documentclass[pdflatex,sn-basic]{sn-jnl}% Basic Springer Nature Reference Style/Chemistry Reference Style
+\documentclass[pdflatex,sn-mathphys-num]{sn-jnl}% Math and Physical Sciences Numbered Reference Style
+%%\documentclass[pdflatex,sn-mathphys-ay]{sn-jnl}% Math and Physical Sciences Author Year Reference Style
+%%\documentclass[pdflatex,sn-aps]{sn-jnl}% American Physical Society (APS) Reference Style
+%%\documentclass[pdflatex,sn-vancouver-num]{sn-jnl}% Vancouver Numbered Reference Style
+%%\documentclass[pdflatex,sn-vancouver-ay]{sn-jnl}% Vancouver Author Year Reference Style
+%%\documentclass[pdflatex,sn-apa]{sn-jnl}% APA Reference Style
+%%\documentclass[pdflatex,sn-chicago]{sn-jnl}% Chicago-based Humanities Reference Style
+
+%%%% Standard Packages
+%%<additional latex packages if required can be included here>
+
+\usepackage{graphicx}%
+\usepackage{multirow}%
+\usepackage{amsmath,amssymb,amsfonts}%
+\usepackage{amsthm}%
+\usepackage{mathrsfs}%
+\usepackage[title]{appendix}%
+\usepackage{xcolor}%
+\usepackage{textcomp}%
+\usepackage{manyfoot}%
+\usepackage{booktabs}%
+\usepackage{algorithm}%
+\usepackage{algorithmicx}%
+\usepackage{algpseudocode}%
+\usepackage{listings}%
+%%%%
+
+%%%%%=============================================================================%%%%
+%%%%  Remarks: This template is provided to aid authors with the preparation
+%%%%  of original research articles intended for submission to journals published
+%%%%  by Springer Nature. The guidance has been prepared in partnership with
+%%%%  production teams to conform to Springer Nature technical requirements.
+%%%%  Editorial and presentation requirements differ among journal portfolios and
+%%%%  research disciplines. You may find sections in this template are irrelevant
+%%%%  to your work and are empowered to omit any such section if allowed by the
+%%%%  journal you intend to submit to. The submission guidelines and policies
+%%%%  of the journal take precedence. A detailed User Manual is available in the
+%%%%  template package for technical guidance.
+%%%%%=============================================================================%%%%
+
+%% as per the requirement new theorem styles can be included as shown below
+\theoremstyle{thmstyleone}%
+\newtheorem{theorem}{Theorem}%  meant for continuous numbers
+%%\newtheorem{theorem}{Theorem}[section]% meant for sectionwise numbers
+%% optional argument [theorem] produces theorem numbering sequence instead of independent numbers for Proposition
+\newtheorem{proposition}[theorem]{Proposition}%
+%%\newtheorem{proposition}{Proposition}% to get separate numbers for theorem and proposition etc.
+
+\theoremstyle{thmstyletwo}%
+\newtheorem{example}{Example}%
+\newtheorem{remark}{Remark}%
+
+\theoremstyle{thmstylethree}%
+\newtheorem{definition}{Definition}%
+
+\raggedbottom
+%%\unnumbered% uncomment this for unnumbered level heads
+
+\begin{document}
+
+\title[Article Title]{Article Title}
+
+%%=============================================================%%
+%% GivenName	-> \fnm{Joergen W.}
+%% Particle	-> \spfx{van der} -> surname prefix
+%% FamilyName	-> \sur{Ploeg}
+%% Suffix	-> \sfx{IV}
+%% \author*[1,2]{\fnm{Joergen W.} \spfx{van der} \sur{Ploeg}
+%%  \sfx{IV}}\email{iauthor@gmail.com}
+%%=============================================================%%
+
+\author*[1,2]{\fnm{First} \sur{Author}}\email{iauthor@gmail.com}
+
+\author[2,3]{\fnm{Second} \sur{Author}}\email{iiauthor@gmail.com}
+\equalcont{These authors contributed equally to this work.}
+
+\author[1,2]{\fnm{Third} \sur{Author}}\email{iiiauthor@gmail.com}
+\equalcont{These authors contributed equally to this work.}
+
+\affil*[1]{\orgdiv{Department}, \orgname{Organization}, \orgaddress{\street{Street}, \city{City}, \postcode{100190}, \state{State}, \country{Country}}}
+
+\affil[2]{\orgdiv{Department}, \orgname{Organization}, \orgaddress{\street{Street}, \city{City}, \postcode{10587}, \state{State}, \country{Country}}}
+
+\affil[3]{\orgdiv{Department}, \orgname{Organization}, \orgaddress{\street{Street}, \city{City}, \postcode{610101}, \state{State}, \country{Country}}}
+
+%%==================================%%
+%% Sample for unstructured abstract %%
+%%==================================%%
+
+\abstract{The abstract serves both as a general introduction to the topic and as a brief, non-technical summary of the main results and their implications. Authors are advised to check the author instructions for the journal they are submitting to for word limits and if structural elements like subheadings, citations, or equations are permitted.}
+
+%%================================%%
+%% Sample for structured abstract %%
+%%================================%%
+
+% \abstract{\textbf{Purpose:} The abstract serves both as a general introduction to the topic and as a brief, non-technical summary of the main results and their implications. The abstract must not include subheadings (unless expressly permitted in the journal's Instructions to Authors), equations or citations. As a guide the abstract should not exceed 200 words. Most journals do not set a hard limit however authors are advised to check the author instructions for the journal they are submitting to.
+%
+% \textbf{Methods:} The abstract serves both as a general introduction to the topic and as a brief, non-technical summary of the main results and their implications. The abstract must not include subheadings (unless expressly permitted in the journal's Instructions to Authors), equations or citations. As a guide the abstract should not exceed 200 words. Most journals do not set a hard limit however authors are advised to check the author instructions for the journal they are submitting to.
+%
+% \textbf{Results:} The abstract serves both as a general introduction to the topic and as a brief, non-technical summary of the main results and their implications. The abstract must not include subheadings (unless expressly permitted in the journal's Instructions to Authors), equations or citations. As a guide the abstract should not exceed 200 words. Most journals do not set a hard limit however authors are advised to check the author instructions for the journal they are submitting to.
+%
+% \textbf{Conclusion:} The abstract serves both as a general introduction to the topic and as a brief, non-technical summary of the main results and their implications. The abstract must not include subheadings (unless expressly permitted in the journal's Instructions to Authors), equations or citations. As a guide the abstract should not exceed 200 words. Most journals do not set a hard limit however authors are advised to check the author instructions for the journal they are submitting to.}
+
+\keywords{keyword1, Keyword2, Keyword3, Keyword4}
+
+%%\pacs[JEL Classification]{D8, H51}
+
+%%\pacs[MSC Classification]{35A01, 65L10, 65L12, 65L20, 65L70}
+
+\maketitle
+
+\section{Introduction}\label{sec1}
+
+The Introduction section, of referenced text \cite{bib1} expands on the background of the work (some overlap with the Abstract is acceptable). The introduction should not include subheadings.
+
+Springer Nature does not impose a strict layout as standard however authors are advised to check the individual requirements for the journal they are planning to submit to as there may be journal-level preferences. When preparing your text please also be aware that some stylistic choices are not supported in full text XML (publication version), including coloured font. These will not be replicated in the typeset article if it is accepted.
+
+\section{Results}\label{sec2}
+
+Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text.
+
+\section{This is an example for first level head---section head}\label{sec3}
+
+\subsection{This is an example for second level head---subsection head}\label{subsec2}
+
+\subsubsection{This is an example for third level head---subsubsection head}\label{subsubsec2}
+
+Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text.
+
+\section{Equations}\label{sec4}
+
+Equations in \LaTeX\ can either be inline or on-a-line by itself (``display equations''). For
+inline equations use the \verb+$...$+ commands. E.g.: The equation
+$H\psi = E \psi$ is written via the command \verb+$H \psi = E \psi$+.
+
+For display equations (with auto generated equation numbers)
+one can use the equation or align environments:
+\begin{equation}
+\|\tilde{X}(k)\|^2 \leq\frac{\sum\limits_{i=1}^{p}\left\|\tilde{Y}_i(k)\right\|^2+\sum\limits_{j=1}^{q}\left\|\tilde{Z}_j(k)\right\|^2 }{p+q}.\label{eq1}
+\end{equation}
+where,
+\begin{align}
+D_\mu &=  \partial_\mu - ig \frac{\lambda^a}{2} A^a_\mu \nonumber \\
+F^a_{\mu\nu} &= \partial_\mu A^a_\nu - \partial_\nu A^a_\mu + g f^{abc} A^b_\mu A^a_\nu \label{eq2}
+\end{align}
+Notice the use of \verb+\nonumber+ in the align environment at the end
+of each line, except the last, so as not to produce equation numbers on
+lines where no equation numbers are required. The \verb+\label{}+ command
+should only be used at the last line of an align environment where
+\verb+\nonumber+ is not used.
+\begin{equation}
+Y_\infty = \left( \frac{m}{\textrm{GeV}} \right)^{-3}
+    \left[ 1 + \frac{3 \ln(m/\textrm{GeV})}{15}
+    + \frac{\ln(c_2/5)}{15} \right]
+\end{equation}
+The class file also supports the use of \verb+\mathbb{}+, \verb+\mathscr{}+ and
+\verb+\mathcal{}+ commands. As such \verb+\mathbb{R}+, \verb+\mathscr{R}+
+and \verb+\mathcal{R}+ produces $\mathbb{R}$, $\mathscr{R}$ and $\mathcal{R}$
+respectively (refer Subsubsection~\ref{subsubsec2}).
+
+\section{Tables}\label{sec5}
+
+Tables can be inserted via the normal table and tabular environment. To put
+footnotes inside tables you should use \verb+\footnotetext[]{...}+ tag.
+The footnote appears just below the table itself (refer Tables~\ref{tab1} and \ref{tab2}).
+For the corresponding footnotemark use \verb+\footnotemark[...]+
+
+\begin{table}[h]
+\caption{Caption text}\label{tab1}%
+\begin{tabular}{@{}llll@{}}
+\toprule
+Column 1 & Column 2  & Column 3 & Column 4\\
+\midrule
+row 1    & data 1   & data 2  & data 3  \\
+row 2    & data 4   & data 5\footnotemark[1]  & data 6  \\
+row 3    & data 7   & data 8  & data 9\footnotemark[2]  \\
+\botrule
+\end{tabular}
+\footnotetext{Source: This is an example of table footnote. This is an example of table footnote.}
+\footnotetext[1]{Example for a first table footnote. This is an example of table footnote.}
+\footnotetext[2]{Example for a second table footnote. This is an example of table footnote.}
+\end{table}
+
+\noindent
+The input format for the above table is as follows:
+
+%%=============================================%%
+%% For presentation purpose, we have included  %%
+%% \bigskip command. Please ignore this.       %%
+%%=============================================%%
+\bigskip
+\begin{verbatim}
+\begin{table}[<placement-specifier>]
+\caption{<table-caption>}\label{<table-label>}%
+\begin{tabular}{@{}llll@{}}
+\toprule
+Column 1 & Column 2 & Column 3 & Column 4\\
+\midrule
+row 1 & data 1 & data 2	 & data 3 \\
+row 2 & data 4 & data 5\footnotemark[1] & data 6 \\
+row 3 & data 7 & data 8	 & data 9\footnotemark[2]\\
+\botrule
+\end{tabular}
+\footnotetext{Source: This is an example of table footnote.
+This is an example of table footnote.}
+\footnotetext[1]{Example for a first table footnote.
+This is an example of table footnote.}
+\footnotetext[2]{Example for a second table footnote.
+This is an example of table footnote.}
+\end{table}
+\end{verbatim}
+\bigskip
+%%=============================================%%
+%% For presentation purpose, we have included  %%
+%% \bigskip command. Please ignore this.       %%
+%%=============================================%%
+
+\begin{table}[h]
+\caption{Example of a lengthy table which is set to full textwidth}\label{tab2}
+\begin{tabular*}{\textwidth}{@{\extracolsep\fill}lcccccc}
+\toprule%
+& \multicolumn{3}{@{}c@{}}{Element 1\footnotemark[1]} & \multicolumn{3}{@{}c@{}}{Element 2\footnotemark[2]} \\\cmidrule{2-4}\cmidrule{5-7}%
+Project & Energy & $\sigma_{calc}$ & $\sigma_{expt}$ & Energy & $\sigma_{calc}$ & $\sigma_{expt}$ \\
+\midrule
+Element 3  & 990 A & 1168 & $1547\pm12$ & 780 A & 1166 & $1239\pm100$\\
+Element 4  & 500 A & 961  & $922\pm10$  & 900 A & 1268 & $1092\pm40$\\
+\botrule
+\end{tabular*}
+\footnotetext{Note: This is an example of table footnote. This is an example of table footnote this is an example of table footnote this is an example of~table footnote this is an example of table footnote.}
+\footnotetext[1]{Example for a first table footnote.}
+\footnotetext[2]{Example for a second table footnote.}
+\end{table}
+
+In case of double column layout, tables which do not fit in single column width should be set to full text width. For this, you need to use \verb+\begin{table*}+ \verb+...+ \verb+\end{table*}+ instead of \verb+\begin{table}+ \verb+...+ \verb+\end{table}+ environment. Lengthy tables which do not fit in textwidth should be set as rotated table. For this, you need to use \verb+\begin{sidewaystable}+ \verb+...+ \verb+\end{sidewaystable}+ instead of \verb+\begin{table*}+ \verb+...+ \verb+\end{table*}+ environment. This environment puts tables rotated to single column width. For tables rotated to double column width, use \verb+\begin{sidewaystable*}+ \verb+...+ \verb+\end{sidewaystable*}+.
+
+\begin{sidewaystable}
+\caption{Tables which are too long to fit, should be written using the ``sidewaystable'' environment as shown here}\label{tab3}
+\begin{tabular*}{\textheight}{@{\extracolsep\fill}lcccccc}
+\toprule%
+& \multicolumn{3}{@{}c@{}}{Element 1\footnotemark[1]}& \multicolumn{3}{@{}c@{}}{Element\footnotemark[2]} \\\cmidrule{2-4}\cmidrule{5-7}%
+Projectile & Energy	& $\sigma_{calc}$ & $\sigma_{expt}$ & Energy & $\sigma_{calc}$ & $\sigma_{expt}$ \\
+\midrule
+Element 3 & 990 A & 1168 & $1547\pm12$ & 780 A & 1166 & $1239\pm100$ \\
+Element 4 & 500 A & 961  & $922\pm10$  & 900 A & 1268 & $1092\pm40$ \\
+Element 5 & 990 A & 1168 & $1547\pm12$ & 780 A & 1166 & $1239\pm100$ \\
+Element 6 & 500 A & 961  & $922\pm10$  & 900 A & 1268 & $1092\pm40$ \\
+\botrule
+\end{tabular*}
+\footnotetext{Note: This is an example of table footnote this is an example of table footnote this is an example of table footnote this is an example of~table footnote this is an example of table footnote.}
+\footnotetext[1]{This is an example of table footnote.}
+\end{sidewaystable}
+
+\section{Figures}\label{sec6}
+
+As per the \LaTeX\ standards you need to use eps images for \LaTeX\ compilation and \verb+pdf/jpg/png+ images for \verb+PDFLaTeX+ compilation. This is one of the major difference between \LaTeX\ and \verb+PDFLaTeX+. Each image should be from a single input .eps/vector image file. Avoid using subfigures. The command for inserting images for \LaTeX\ and \verb+PDFLaTeX+ can be generalized. The package used to insert images in \verb+LaTeX/PDFLaTeX+ is the graphicx package. Figures can be inserted via the normal figure environment as shown in the below example:
+
+%%=============================================%%
+%% For presentation purpose, we have included  %%
+%% \bigskip command. Please ignore this.       %%
+%%=============================================%%
+\bigskip
+\begin{verbatim}
+\begin{figure}[<placement-specifier>]
+\centering
+\includegraphics{<eps-file>}
+\caption{<figure-caption>}\label{<figure-label>}
+\end{figure}
+\end{verbatim}
+\bigskip
+%%=============================================%%
+%% For presentation purpose, we have included  %%
+%% \bigskip command. Please ignore this.       %%
+%%=============================================%%
+
+\begin{figure}[h]
+\centering
+\includegraphics[width=0.9\textwidth]{fig.eps}
+\caption{This is a widefig. This is an example of long caption this is an example of long caption  this is an example of long caption this is an example of long caption}\label{fig1}
+\end{figure}
+
+In case of double column layout, the above format puts figure captions/images to single column width. To get spanned images, we need to provide \verb+\begin{figure*}+ \verb+...+ \verb+\end{figure*}+.
+
+For sample purpose, we have included the width of images in the optional argument of \verb+\includegraphics+ tag. Please ignore this.
+
+\section{Algorithms, Program codes and Listings}\label{sec7}
+
+Packages \verb+algorithm+, \verb+algorithmicx+ and \verb+algpseudocode+ are used for setting algorithms in \LaTeX\ using the format:
+
+%%=============================================%%
+%% For presentation purpose, we have included  %%
+%% \bigskip command. Please ignore this.       %%
+%%=============================================%%
+\bigskip
+\begin{verbatim}
+\begin{algorithm}
+\caption{<alg-caption>}\label{<alg-label>}
+\begin{algorithmic}[1]
+. . .
+\end{algorithmic}
+\end{algorithm}
+\end{verbatim}
+\bigskip
+%%=============================================%%
+%% For presentation purpose, we have included  %%
+%% \bigskip command. Please ignore this.       %%
+%%=============================================%%
+
+You may refer above listed package documentations for more details before setting \verb+algorithm+ environment. For program codes, the ``verbatim'' package is required and the command to be used is \verb+\begin{verbatim}+ \verb+...+ \verb+\end{verbatim}+.
+
+Similarly, for \verb+listings+, use the \verb+listings+ package. \verb+\begin{lstlisting}+ \verb+...+ \verb+\end{lstlisting}+ is used to set environments similar to \verb+verbatim+ environment. Refer to the \verb+lstlisting+ package documentation for more details.
+
+A fast exponentiation procedure:
+
+\lstset{texcl=true,basicstyle=\small\sf,commentstyle=\small\rm,mathescape=true,escapeinside={(*}{*)}}
+\begin{lstlisting}
+begin
+  for $i:=1$ to $10$ step $1$ do
+      expt($2,i$);
+      newline() od                (*\textrm{Comments will be set flush to the right margin}*)
+where
+proc expt($x,n$) $\equiv$
+  $z:=1$;
+  do if $n=0$ then exit fi;
+     do if odd($n$) then exit fi;
+        comment: (*\textrm{This is a comment statement;}*)
+        $n:=n/2$; $x:=x*x$ od;
+     { $n>0$ };
+     $n:=n-1$; $z:=z*x$ od;
+  print($z$).
+end
+\end{lstlisting}
+
+\begin{algorithm}
+\caption{Calculate $y = x^n$}\label{algo1}
+\begin{algorithmic}[1]
+\Require $n \geq 0 \vee x \neq 0$
+\Ensure $y = x^n$
+\State $y \Leftarrow 1$
+\If{$n < 0$}\label{algln2}
+        \State $X \Leftarrow 1 / x$
+        \State $N \Leftarrow -n$
+\Else
+        \State $X \Leftarrow x$
+        \State $N \Leftarrow n$
+\EndIf
+\While{$N \neq 0$}
+        \If{$N$ is even}
+            \State $X \Leftarrow X \times X$
+            \State $N \Leftarrow N / 2$
+        \Else[$N$ is odd]
+            \State $y \Leftarrow y \times X$
+            \State $N \Leftarrow N - 1$
+        \EndIf
+\EndWhile
+\end{algorithmic}
+\end{algorithm}
+
+%%=============================================%%
+%% For presentation purpose, we have included  %%
+%% \bigskip command. Please ignore this.       %%
+%%=============================================%%
+\bigskip
+\begin{minipage}{\hsize}%
+\lstset{frame=single,framexleftmargin=-1pt,framexrightmargin=-17pt,framesep=12pt,linewidth=0.98\textwidth,language=pascal}% Set your language (you can change the language for each code-block optionally)
+%%% Start your code-block
+\begin{lstlisting}
+for i:=maxint to 0 do
+begin
+{ do nothing }
+end;
+Write('Case insensitive ');
+Write('Pascal keywords.');
+\end{lstlisting}
+\end{minipage}
+
+\section{Cross referencing}\label{sec8}
+
+Environments such as figure, table, equation and align can have a label
+declared via the \verb+\label{#label}+ command. For figures and table
+environments use the \verb+\label{}+ command inside or just
+below the \verb+\caption{}+ command. You can then use the
+\verb+\ref{#label}+ command to cross-reference them. As an example, consider
+the label declared for Figure~\ref{fig1} which is
+\verb+\label{fig1}+. To cross-reference it, use the command
+\verb+Figure \ref{fig1}+, for which it comes up as
+``Figure~\ref{fig1}''.
+
+To reference line numbers in an algorithm, consider the label declared for the line number 2 of Algorithm~\ref{algo1} is \verb+\label{algln2}+. To cross-reference it, use the command \verb+\ref{algln2}+ for which it comes up as line~\ref{algln2} of Algorithm~\ref{algo1}.
+
+\subsection{Details on reference citations}\label{subsec7}
+
+Standard \LaTeX\ permits only numerical citations. To support both numerical and author-year citations this template uses \verb+natbib+ \LaTeX\ package. For style guidance please refer to the template user manual.
+
+Here is an example for \verb+\cite{...}+: \cite{bib1}. Another example for \verb+\citep{...}+: \citep{bib2}. For author-year citation mode, \verb+\cite{...}+ prints Jones et al. (1990) and \verb+\citep{...}+ prints (Jones et al., 1990).
+
+All cited bib entries are printed at the end of this article: \cite{bib3}, \cite{bib4}, \cite{bib5}, \cite{bib6}, \cite{bib7}, \cite{bib8}, \cite{bib9}, \cite{bib10}, \cite{bib11}, \cite{bib12} and \cite{bib13}.
+
+\section{Examples for theorem like environments}\label{sec10}
+
+For theorem like environments, we require \verb+amsthm+ package. There are three types of predefined theorem styles exists---\verb+thmstyleone+, \verb+thmstyletwo+ and \verb+thmstylethree+
+
+%%=============================================%%
+%% For presentation purpose, we have included  %%
+%% \bigskip command. Please ignore this.       %%
+%%=============================================%%
+\bigskip
+\begin{tabular}{|l|p{19pc}|}
+\hline
+\verb+thmstyleone+ & Numbered, theorem head in bold font and theorem text in italic style \\\hline
+\verb+thmstyletwo+ & Numbered, theorem head in roman font and theorem text in italic style \\\hline
+\verb+thmstylethree+ & Numbered, theorem head in bold font and theorem text in roman style \\\hline
+\end{tabular}
+\bigskip
+%%=============================================%%
+%% For presentation purpose, we have included  %%
+%% \bigskip command. Please ignore this.       %%
+%%=============================================%%
+
+For mathematics journals, theorem styles can be included as shown in the following examples:
+
+\begin{theorem}[Theorem subhead]\label{thm1}
+Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text.
+Example theorem text. Example theorem text. Example theorem text. Example theorem text. Example theorem text.
+Example theorem text.
+\end{theorem}
+
+Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text.
+
+\begin{proposition}
+Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text.
+Example proposition text. Example proposition text. Example proposition text. Example proposition text. Example proposition text.
+\end{proposition}
+
+Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text.
+
+\begin{example}
+Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem.
+\end{example}
+
+Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text.
+
+\begin{remark}
+Phasellus adipiscing semper elit. Proin fermentum massa
+ac quam. Sed diam turpis, molestie vitae, placerat a, molestie nec, leo. Maecenas lacinia. Nam ipsum ligula, eleifend
+at, accumsan nec, suscipit a, ipsum. Morbi blandit ligula feugiat magna. Nunc eleifend consequat lorem.
+\end{remark}
+
+Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text.
+
+\begin{definition}[Definition sub head]
+Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text. Example definition text.
+\end{definition}
+
+Additionally a predefined ``proof'' environment is available: \verb+\begin{proof}+ \verb+...+ \verb+\end{proof}+. This prints a ``Proof'' head in italic font style and the ``body text'' in roman font style with an open square at the end of each proof environment.
+
+\begin{proof}
+Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text.
+\end{proof}
+
+Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text. Sample body text.
+
+\begin{proof}[Proof of Theorem~{\upshape\ref{thm1}}]
+Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text. Example for proof text.
+\end{proof}
+
+\noindent
+For a quote environment, use \verb+\begin{quote}...\end{quote}+
+\begin{quote}
+Quoted text example. Aliquam porttitor quam a lacus. Praesent vel arcu ut tortor cursus volutpat. In vitae pede quis diam bibendum placerat. Fusce elementum
+convallis neque. Sed dolor orci, scelerisque ac, dapibus nec, ultricies ut, mi. Duis nec dui quis leo sagittis commodo.
+\end{quote}
+
+Sample body text. Sample body text. Sample body text. Sample body text. Sample body text (refer Figure~\ref{fig1}). Sample body text. Sample body text. Sample body text (refer Table~\ref{tab3}).
+
+\section{Methods}\label{sec11}
+
+Topical subheadings are allowed. Authors must ensure that their Methods section includes adequate experimental and characterization data necessary for others in the field to reproduce their work. Authors are encouraged to include RIIDs where appropriate.
+
+\textbf{Ethical approval declarations} (only required where applicable) Any article reporting experiment/s carried out on (i)~live vertebrate (or higher invertebrates), (ii)~humans or (iii)~human samples must include an unambiguous statement within the methods section that meets the following requirements:
+
+\begin{enumerate}[1.]
+\item Approval: a statement which confirms that all experimental protocols were approved by a named institutional and/or licensing committee. Please identify the approving body in the methods section
+
+\item Accordance: a statement explicitly saying that the methods were carried out in accordance with the relevant guidelines and regulations
+
+\item Informed consent (for experiments involving humans or human tissue samples): include a statement confirming that informed consent was obtained from all participants and/or their legal guardian/s
+\end{enumerate}
+
+If your manuscript includes potentially identifying patient/participant information, or if it describes human transplantation research, or if it reports results of a clinical trial then  additional information will be required. Please visit (\url{https://www.nature.com/nature-research/editorial-policies}) for Nature Portfolio journals, (\url{https://www.springer.com/gp/authors-editors/journal-author/journal-author-helpdesk/publishing-ethics/14214}) for Springer Nature journals, or (\url{https://www.biomedcentral.com/getpublished/editorial-policies\#ethics+and+consent}) for BMC.
+
+\section{Discussion}\label{sec12}
+
+Discussions should be brief and focused. In some disciplines use of Discussion or `Conclusion' is interchangeable. It is not mandatory to use both. Some journals prefer a section `Results and Discussion' followed by a section `Conclusion'. Please refer to Journal-level guidance for any specific requirements.
+
+\section{Conclusion}\label{sec13}
+
+Conclusions may be used to restate your hypothesis or research question, restate your major findings, explain the relevance and the added value of your work, highlight any limitations of your study, describe future directions for research and recommendations.
+
+In some disciplines use of Discussion or 'Conclusion' is interchangeable. It is not mandatory to use both. Please refer to Journal-level guidance for any specific requirements.
+
+\backmatter
+
+\bmhead{Supplementary information}
+
+If your article has accompanying supplementary file/s please state so here.
+
+Authors reporting data from electrophoretic gels and blots should supply the full unprocessed scans for key as part of their Supplementary information. This may be requested by the editorial team/s if it is missing.
+
+Please refer to Journal-level guidance for any specific requirements.
+
+\bmhead{Acknowledgements}
+
+Acknowledgements are not compulsory. Where included they should be brief. Grant or contribution numbers may be acknowledged.
+
+Please refer to Journal-level guidance for any specific requirements.
+
+\section*{Declarations}
+
+Some journals require declarations to be submitted in a standardised format. Please check the Instructions for Authors of the journal to which you are submitting to see if you need to complete this section. If yes, your manuscript must contain the following sections under the heading `Declarations':
+
+\begin{itemize}
+\item Funding
+\item Conflict of interest/Competing interests (check journal-specific guidelines for which heading to use)
+\item Ethics approval and consent to participate
+\item Consent for publication
+\item Data availability
+\item Materials availability
+\item Code availability
+\item Author contribution
+\end{itemize}
+
+\noindent
+If any of the sections are not relevant to your manuscript, please include the heading and write `Not applicable' for that section.
+
+%%===================================================%%
+%% For presentation purpose, we have included        %%
+%% \bigskip command. Please ignore this.             %%
+%%===================================================%%
+\bigskip
+\begin{flushleft}%
+Editorial Policies for:
+
+\bigskip\noindent
+Springer journals and proceedings: \url{https://www.springer.com/gp/editorial-policies}
+
+\bigskip\noindent
+Nature Portfolio journals: \url{https://www.nature.com/nature-research/editorial-policies}
+
+\bigskip\noindent
+\textit{Scientific Reports}: \url{https://www.nature.com/srep/journal-policies/editorial-policies}
+
+\bigskip\noindent
+BMC journals: \url{https://www.biomedcentral.com/getpublished/editorial-policies}
+\end{flushleft}
+
+\begin{appendices}
+
+\section{Section title of first appendix}\label{secA1}
+
+An appendix contains supplementary information that is not an essential part of the text itself but which may be helpful in providing a more comprehensive understanding of the research problem or it is information that is too cumbersome to be included in the body of the paper.
+
+%%=============================================%%
+%% For submissions to Nature Portfolio Journals %%
+%% please use the heading ``Extended Data''.   %%
+%%=============================================%%
+
+%%=============================================================%%
+%% Sample for another appendix section			       %%
+%%=============================================================%%
+
+%% \section{Example of another appendix section}\label{secA2}%
+%% Appendices may be used for helpful, supporting or essential material that would otherwise
+%% clutter, break up or be distracting to the text. Appendices can consist of sections, figures,
+%% tables and equations etc.
+
+\end{appendices}
+
+%%===========================================================================================%%
+%% If you are submitting to one of the Nature Portfolio journals, using the eJP submission   %%
+%% system, please include the references within the manuscript file itself. You may do this  %%
+%% by copying the reference list from your .bbl file, paste it into the main manuscript .tex %%
+%% file, and delete the associated \verb+\bibliography+ commands.                            %%
+%%===========================================================================================%%
+
+\bibliography{sn-bibliography}% common bib file
+%% if required, the content of .bbl file can be included here once bbl is generated
+%%\input sn-article.bbl
+
+\end{document}
diff --git a/sn-article-template/sn-bibliography.bib b/sn-article-template/sn-bibliography.bib
new file mode 100644
index 0000000..076a21b
--- /dev/null
+++ b/sn-article-template/sn-bibliography.bib
@@ -0,0 +1,164 @@
+
+%% Journal article
+@article{bib1,
+  author		= "Campbell, S. L. and Gear, C. W.",
+  title			= "The index of general nonlinear {D}{A}{E}{S}",
+  journal		= "Numer. {M}ath.",
+  volume		= "72",
+  number		= "2",
+  pages			= "173--196",
+  year			= "1995"
+}
+
+%% Journal article with DOI
+@article{bib2,
+  author		= "Slifka, M. K. and Whitton, J. L.",
+  title			= "Clinical implications of dysregulated cytokine production",
+  journal		= "J. {M}ol. {M}ed.",
+  volume		= "78",
+  pages			= "74--80",
+  year			= "2000",
+  doi			= "10.1007/s001090000086"
+}
+
+%% Journal article
+@article{bib3,
+  author		= "Hamburger, C.",
+  title			= "Quasimonotonicity, regularity and duality for nonlinear systems of
+					partial differential equations",
+  journal		= "Ann. Mat. Pura. Appl.",
+  volume		= "169",
+  number		= "2",
+  pages			= "321--354",
+  year			= "1995"
+}
+
+%% book, authored
+@book{bib4,
+  author		= "Geddes, K. O. and Czapor, S. R. and Labahn, G.",
+  title			= "Algorithms for {C}omputer {A}lgebra",
+  address		= "Boston",
+  publisher		= "Kluwer",
+  year			= "1992"
+}
+
+%% Item 8. Book, chapter
+@incollection{bib5,
+  author		= "Broy, M.",
+  title			= "Software engineering---from auxiliary to key technologies",
+  editor		= "Broy, M. and Denert, E.",
+  booktitle		= "Software Pioneers",
+  pages			= "10--13",
+  address		= "New {Y}ork",
+  publisher		= "Springer",
+  year			= "1992"
+}
+
+%% Book, edited
+@book{bib6,
+  editor		= "Seymour, R. S.",
+  title			= "Conductive {P}olymers",
+  address		= "New {Y}ork",
+  publisher		= "Plenum",
+  year			= "1981"
+}
+
+%% Chapter in a book in a series with volume titles
+@inproceedings{bib7,
+  author		= "Smith, S. E.",
+  title			= "Neuromuscular blocking drugs in man",
+  editor		= "Zaimis, E.",
+  volume		= "42",
+  booktitle		= "Neuromuscular junction. {H}andbook of experimental pharmacology",
+  pages			= "593--660",
+  address		= "Heidelberg",
+  publisher		= "Springer",
+  year			= "1976"
+}
+
+%% Paper presented at a conference
+@misc{bib8,
+  author		= "Chung, S. T. and Morris, R. L.",
+  title			= "Isolation and characterization of plasmid deoxyribonucleic acid from
+					Streptomyces fradiae",
+  year			= "1978",
+  note			= "Paper presented at the 3rd international symposium on the genetics
+					of industrial microorganisms, University of {W}isconsin, {M}adison,
+					4--9 June 1978"
+}
+
+%% Data citation example
+@misc{bib9,
+  author		= "Hao, Z. and AghaKouchak, A. and Nakhjiri, N. and Farahmand, A.",
+  title			= "Global integrated drought monitoring and prediction system (GIDMaPS) data sets",
+  year			= "2014",
+  note			= "figshare \url{https://doi.org/10.6084/m9.figshare.853801}"
+}
+
+%% Preprint citation example
+@misc{bib10,
+  author		= "Babichev, S. A. and Ries, J. and Lvovsky, A. I.",
+  title			= "Quantum scissors: teleportation of single-mode optical states by means
+					of a nonlocal single photon",
+  year			= "2002",
+  note			= "Preprint at \url{https://arxiv.org/abs/quant-ph/0208066v1}"
+}
+
+@article{bib11,
+  author		= "Beneke, M. and Buchalla, G. and Dunietz, I.",
+  title			= "Mixing induced {CP} asymmetries in inclusive {B} decays",
+  journal		= "Phys. {L}ett.",
+  volume		= "B393",
+  year			= "1997",
+  pages			= "132-142",
+  archivePrefix		= "arXiv",
+  eprint		= "0707.3168",
+  primaryClass		= "gr-gc"
+}
+
+@softmisc{bib12,
+  author		= "Stahl, B.",
+  title			= "deep{SIP}: deep learning of {S}upernova {I}a {P}arameters",
+  version		= "0.42",
+  keywords		= "Software",
+  howpublished		= "Astrophysics {S}ource {C}ode {L}ibrary",
+  year			= "2020",
+  month			= "Jun",
+  eid			= "ascl:2006.023",
+  pages			= "ascl:2006.023",
+  archivePrefix		= "ascl",
+  eprint		= "2006.023",
+  adsurl		= "{https://ui.adsabs.harvard.edu/abs/2020ascl.soft06023S}",
+  adsnote		= "Provided by the SAO/NASA Astrophysics Data System"
+}
+
+@article{bib13,
+  author = "Abbott, T. M. C. and others",
+  collaboration = "DES",
+  title = "{Dark Energy Survey Year 1 Results: Constraints on Extended Cosmological Models from Galaxy Clustering and Weak Lensing}",
+  eprint = "1810.02499",
+  archivePrefix = "arXiv",
+  primaryClass = "astro-ph.CO",
+  reportNumber = "FERMILAB-PUB-18-507-PPD",
+  doi = "10.1103/PhysRevD.99.123505",
+  journal = "Phys. Rev. D",
+  volume = "99",
+  number = "12",
+  pages = "123505",
+  year = "2019"
+}
+
+%%============================================================================%%
+%% while using chicago reference style, both abbreviated and expanded form of %%
+%% author name format is acceptable. Refer below example for expanded form    %%
+%%============================================================================%%
+
+%%  author		= "{Cameron, Deborah}", - single author
+%%  author		= "{Saito, Yukio} and {Hyuga, Hiroyuki}", - double author
+
+%%======================================%%
+%% Example for author names with suffix %%
+%%======================================%%
+
+%%  author		= "{Price, R. A. Jr} and {Curry, N. {III}} and McCann, K. E. and
+%%					Fielding, J. L. and {Abercrombie, E. Jr}",
diff --git a/sn-article-template/sn-jnl.cls b/sn-article-template/sn-jnl.cls
new file mode 100644
index 0000000..d25f07c
--- /dev/null
+++ b/sn-article-template/sn-jnl.cls
@@ -0,0 +1 @@
+%%
%% This is file `sn-jnl.cls',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% classes.dtx  (with options: `sn-jnl')
%%
%% This is a generated file.
%%
%% Copyright 1993 1994 1995 1996 1997 1998 1999 2000 2001 2002 2003 2004 2005 2006 2007 2008 2009
%% The LaTeX3 Project and any individual authors listed elsewhere
%% in this file.
%%
%% This file was generated from file(s) of the LaTeX base system.
%% --------------------------------------------------------------
%%
%% It 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.
%%
%% This file has the LPPL maintenance status "maintained".
%%
%% This file may only be distributed together with a copy of the LaTeX
%% base system. You may however distribute the LaTeX base system without
%% such generated files.
%%
%% The list of all files belonging to the LaTeX base distribution is
%% given in the file `manifest.txt'. See also `legal.txt' for additional
%% information.
%%
%% The list of derived (unpacked) files belonging to the distribution
%% and covered by LPPL is defined by the unpacking scripts (with
%% extension .ins) which are part of the distribution.
%% \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         \~}
\NeedsTeXFormat{LaTeX2e}[1995/12/01]
\ProvidesClass{sn-jnl}
              [2019/11/18 v0.1: An authoring template for Springer Journal articles]

\newif\if@restonecol
\newif\if@titlepage   \@titlepagefalse
\newif\if@cropmarkson \@cropmarksonfalse
\newif\ifDoublecol    \Doublecolfalse%
\newif\ifpagebody\global\pagebodyfalse%
\newif\if@iicol\global\@iicolfalse%
\newif\if@bibcomment\global\@bibcommentfalse%
\newif\if@referee\global\@refereefalse%
\newif\if@vrulerlinenumberon\global\@vrulerlinenumberonfalse%
\newif\if@pdflatex\global\@pdflatexfalse%
\newif\if@remarkboxon\global\@remarkboxonfalse%

\newif\if@Numbered@refstyle\global\@Numbered@refstylefalse% Namedate
\newif\if@Spr@basic@refstyle\global\@Spr@basic@refstylefalse% 1.Basic Springer Nature Reference Style/Chemistry Reference Style -> sn-basic.bst
\newif\if@Mathphys@numrefstyle\global\@Mathphys@numrefstylefalse% 2.Math and Physical Sciences Reference Style -> sn-mathphys.bst
\newif\if@Mathphys@ayrefstyle\global\@Mathphys@ayrefstylefalse% 2.Math and Physical Sciences Reference Style -> sn-mathphys.bst
\newif\if@APS@refstyle\global\@APS@refstylefalse% 3.American Physical Society (APS) Reference Style -> sn-APS.bst
\newif\if@Vancouver@numrefstyle\global\@Vancouver@numrefstylefalse% 4.Vancouver Reference Style -> sn-vancouver.bst
\newif\if@Vancouver@ayrefstyle\global\@Vancouver@ayrefstylefalse% 4.Vancouver Reference Style -> sn-vancouver.bst
\newif\if@APA@refstyle\global\@APA@refstylefalse% 5.APA-based Social Sciences/Psychology Reference Style -> sn-apacite.bst
\newif\if@Chicago@refstyle\global\@Chicago@refstylefalse% 6.Chicago-based Humanities Reference Style -> sn-chicago.bst
\newif\if@Standard@Nature@refstyle\global\@Standard@Nature@refstylefalse% 7.Standard Nature Research Style -> sn-nature.bst

%% Template Options
\DeclareOption{a4paper}{\PassOptionsToPackage{a4}{crop}}
\DeclareOption{a3paper}{\PassOptionsToClass{a3paper}{article}\PassOptionsToPackage{a3}{crop}}
\DeclareOption{centre}{\PassOptionsToPackage{center}{crop}}
\DeclareOption{crop}{\PassOptionsToPackage{frame}{crop}\global\@cropmarksontrue}
\DeclareOption{nocrop}{\PassOptionsToPackage{off}{crop}\global\@cropmarksontrue}
\DeclareOption{info}{\PassOptionsToPackage{info}{crop}}
\DeclareOption{noinfo}{\PassOptionsToPackage{noinfo}{crop}}

%% Classfile Options
\DeclareOption{oneside}{\@twosidefalse \@mparswitchfalse}
\DeclareOption{twoside}{\@twosidetrue  \@mparswitchtrue}
\DeclareOption{draft}{\setlength\overfullrule{5pt}}
\DeclareOption{titlepage}{\@titlepagetrue}
\DeclareOption{notitlepage}{\@titlepagefalse}
\DeclareOption{onecolumn}{\@twocolumnfalse}
\DeclareOption{twocolumn}{\@twocolumntrue}
\DeclareOption{openbib}{\let\if@openbib\iftrue}
\DeclareOption{pagegrid}{\global\pagebodytrue}%
\DeclareOption{iicol}{\global\@iicoltrue}%
\DeclareOption{bibcomment}{\global\@bibcommenttrue}%
\DeclareOption{referee}{\global\@refereetrue}%
\DeclareOption{lineno}{\global\@vrulerlinenumberontrue}%
\DeclareOption{pdflatex}{\global\@pdflatextrue}%
\DeclareOption{remarkboxoff}{\global\@remarkboxonfalse}%

\DeclareOption{sn-basic}{\global\@Spr@basic@refstyletrue}%
\DeclareOption{sn-mathphys-num}{\global\@Mathphys@numrefstyletrue}%
\DeclareOption{sn-mathphys-ay}{\global\@Mathphys@ayrefstyletrue}%
\DeclareOption{sn-aps}{\global\@APS@refstyletrue}%
\DeclareOption{sn-vancouver-num}{\global\@Vancouver@numrefstyletrue}%
\DeclareOption{sn-vancouver-ay}{\global\@Vancouver@ayrefstyletrue}%
\DeclareOption{sn-apa}{\global\@APA@refstyletrue}%
\DeclareOption{sn-chicago}{\global\@Chicago@refstyletrue}%
\DeclareOption{sn-nature}{\global\@Standard@Nature@refstyletrue}%

\DeclareOption{Numbered}{\global\@Numbered@refstyletrue}%
%\DeclareOption{NameDate}{\global\@Numbered@refstylefalse}%

%%\ExecuteOptions{twosidecrop,crop,centre,info,croppage}
\ProcessOptions
\LoadClass[twoside,fleqn]{article}

\gdef\refereedefns{%
\if@referee%
\usepackage{setspace}%
\doublespacing%
\fi}%
\refereedefns%

%% General Packages Used
%
%\AtBeginDocument{%
%%\newcommand*\ExtraParaSkip{12pt}%
%\SetFootnoteHook{\hspace*{-8pt}}%
%\DeclareNewFootnote{A}[gobble]%
%\setlength{\skip\footinsA}{0pt}
%}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Fonts & Sizes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%% Fonts Used
%%\RequirePackage[T1]{fontenc}%
%
\DeclareOldFontCommand{\rm}{\normalfont\rmfamily}{\mathrm}%
\DeclareOldFontCommand{\sf}{\normalfont\sffamily}{\mathsf}%
\DeclareOldFontCommand{\tt}{\normalfont\ttfamily}{\mathtt}%
\DeclareOldFontCommand{\bf}{\normalfont\bfseries}{\mathbf}%
\DeclareOldFontCommand{\it}{\normalfont\itshape}{\mathit}%
\DeclareOldFontCommand{\sl}{\normalfont\slshape}{\@nomath\sl}%
\DeclareOldFontCommand{\sc}{\normalfont\scshape}{\@nomath\sc}%
\DeclareRobustCommand*\cal{\@fontswitch\relax\mathcal}%
\DeclareRobustCommand*\mit{\@fontswitch\relax\mathnormal}%
%
\renewcommand\normalsize{%
   \@setfontsize\normalsize{10bp}{12bp}%
   \abovedisplayskip 12\p@ \@plus2\p@ \@minus1\p@
   \abovedisplayshortskip \z@ \@plus3\p@%
   \belowdisplayshortskip 3\p@ \@plus3\p@ \@minus3\p@%
   \belowdisplayskip \abovedisplayskip%
   \let\@listi\@listI}%
\normalsize%
%
\newcommand\medsize{%
   \@setfontsize\small\@xipt{13}%
   \abovedisplayskip 5\p@ \@plus3\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus2\p@
   \belowdisplayshortskip 3\p@ \@plus2\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 4\p@ \@plus2\p@ \@minus2\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
   \belowdisplayskip \abovedisplayskip}%
%
\renewcommand\small{%
   \@setfontsize\small\@ixpt{11}%
   \abovedisplayskip 5\p@ \@plus3\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus2\p@
   \belowdisplayshortskip 3\p@ \@plus2\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 4\p@ \@plus2\p@ \@minus2\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
   \belowdisplayskip \abovedisplayskip}%
%
\renewcommand\footnotesize{%
   \@setfontsize\footnotesize{7}{8}%
   \abovedisplayskip 5\p@ \@plus2\p@ \@minus4\p@
   \abovedisplayshortskip \z@ \@plus\p@
   \belowdisplayshortskip 3\p@ \@plus\p@ \@minus2\p@
   \def\@listi{\leftmargin\leftmargini
               \topsep 3\p@ \@plus\p@ \@minus\p@
               \parsep 2\p@ \@plus\p@ \@minus\p@
               \itemsep \parsep}%
   \belowdisplayskip \abovedisplayskip}
%
\renewcommand\scriptsize{\@setfontsize\scriptsize\@ixpt\@ixpt}%
\newcommand\scrisize{\@setfontsize\scrisize{9.3}{9}}%
\renewcommand\tiny{\@setfontsize\tiny\@vpt\@vipt}%
\renewcommand\large{\@setfontsize\large{12}{14}}%
\newcommand\larg{\@setfontsize\larg{11}{13}}%
\renewcommand\Large{\@setfontsize\Large{16}{18}}%
\renewcommand\LARGE{\@setfontsize\LARGE\@xviipt{22}}%
\renewcommand\huge{\@setfontsize\huge\@xxpt{25}}%
\renewcommand\Huge{\@setfontsize\Huge\@xxvpt{30}}%
%
\DeclareMathSizes{\@ixpt}{\@ixpt}{7}{5}%
\DeclareMathSizes{\@xpt}{\@xpt}{7}{5}%
\DeclareMathSizes{\@xipt}{\@xipt}{7}{5}%
%
\DeclareRobustCommand*\textsubscript[1]{%
  \@textsubscript{\selectfont#1}}%
%
\def\@textsubscript#1{%
  {\m@th\ensuremath{_{\mbox{\fontsize\sf@size\z@#1}}}}}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Layout Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%\RequirePackage{geometry}%
%
\newlength\columnhsize%
%
%% Regular Pages (for Opening page - redefined)
%
\if@iicol%
%
%% for double column used sn-medium design trim and page size %%
%
\setlength\headheight{12pt}%
\setlength\headsep{5.15mm}%
%
\setlength\columnsep{8mm}%
\setlength\columnhsize{76mm}%
%
\setlength\maxdepth{0pt}%
\setlength\footnotesep{7\p@}%
\setlength{\skip\footins}{18\p@ \@plus 6\p@ \@minus 3\p@}%
%
\RequirePackage[%
    reversemp,
    paperwidth=210mm,
    paperheight=297mm,
    top={26mm},
    headheight={12pt},
    headsep={5.15mm},
    text={160mm,216mm},
    marginparsep=5mm,
    marginparwidth=12mm,
    bindingoffset=6mm,
    footskip=10.13mm,twocolumn]{geometry}%
%
\renewcommand\footnoterule{%
  \kern3\p@%
  \hrule \@height.2mm \@width\columnwidth%
  \kern5.5\p@}%
%
\else%
%% For single column used smallcond design trim and page size %%
\RequirePackage[%
    reversemp,
    paperwidth=210mm,
    paperheight=297mm,
    top={26mm},
    headheight={5.5pt},
    headsep={5.6mm},
    text={31pc,194.25mm},
    marginparsep=5mm,
    marginparwidth=12mm,
    bindingoffset=6mm,
    footskip=10mm]{geometry}
%
    \setlength\maxdepth{0pt}%
    \setlength\columnsep{5mm}%
    \setlength{\marginparsep}{5mm}%
    \setlength{\marginparwidth}{12mm}%
    \setlength\footnotesep{5.75\p@}%
    \setlength{\skip\footins}{8\p@ \@plus 4\p@ \@minus 0\p@}%
%
\renewcommand\footnoterule{%
  \kern3\p@%
  \ifodd\c@page%
     \hrule \@height.2mm \@width\textwidth%
  \else%
     \hrule \@height.2mm \@width37mm
  \fi%
  \kern5.5\p@}%
%
\fi%
%
%
\setlength\parindent{1.5em}%
%
\def\StepUpCounter#1{\global\advance#1by 1\relax}%
\def\StepDownCounter#1{\global\advance#1by -1\relax}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Pagination Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Line spacing
\setlength\lineskip{1\p@}%
\setlength\normallineskip{1\p@}%
%%\renewcommand\baselinestretch{1.5}%
\parskip=0pt%
%
% Page break penalties
%
\@lowpenalty   51
\@medpenalty  151
\@highpenalty 301
%
% Disallow widows and orphans
%
\clubpenalty 10000
\widowpenalty 10000
%
% Disable page breaks before equations, allow pagebreaks after
% equations and discourage widow lines before equations.
%
\displaywidowpenalty 100
\predisplaypenalty   10000
\postdisplaypenalty  0
%
% Set these global demerits
%
\doublehyphendemerits 1000000   % corresponds to badness 800
\finalhyphendemerits  1000000  % corresponds to badness 1000
%
% Allow loose lines rather than overfull lines
%
\vbadness=9999
\tolerance=9999
%
% Allow breaking the page in the middle of a paragraph
%
\interlinepenalty 0
%
% Disallow breaking the page after a hyphenated line
\brokenpenalty 10000
%
% Hyphenation; don't split words into less than three characters
\lefthyphenmin=3
\righthyphenmin=3
%
% Float placement parameters
%
% The total number of floats that can be allowed on a page.
\setcounter{totalnumber}{3}
%
% The maximum number of floats at the top and bottom of a page.
\setcounter{topnumber}{5}
\setcounter{bottomnumber}{5}
%
% The maximum part of the top or bottom of a text page that can be
% occupied by floats. This is set so that at least four lines of text
% fit on the page.
\renewcommand\topfraction{.921}
\renewcommand\bottomfraction{.921}

% The minimum amount of a text page that must be occupied by text.
% This should accomodate four lines of text.
\renewcommand\textfraction{.13}

% The minimum amount of a float page that must be occupied by floats.
\renewcommand\floatpagefraction{.887}

% The same parameters repeated for double column output
\renewcommand\dbltopfraction{.88}
\renewcommand\dblfloatpagefraction{.88}

% Space between floats
\setlength\floatsep{18\p@ \@plus 4\p@ \@minus 2\p@}

% Space between floats and text
\setlength\textfloatsep{15\p@ \@plus 4\p@ \@minus 2\p@}

% Space above and below an inline figure
\setlength\intextsep   {18\p@ \@plus 4\p@ \@minus 2\p@}

% For double column floats
\setlength\dblfloatsep    {20\p@ \@plus 4\p@ \@minus 2\p@}
\setlength\dbltextfloatsep{15\p@ \@plus 4\p@ \@minus 2\p@}

\hyphenation{Figure Figures Table Tables Equation Equations Section Sections Appendix Theorem Lemma}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Math Settings %%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% For above/below spacing
\def\eqnarray{%
   \stepcounter{equation}%
   \def\@currentlabel{\p@equation\theequation}%
   \global\@eqnswtrue
   \m@th
   \global\@eqcnt\z@
   \tabskip\@centering
   \let\\\@eqncr
   $$\everycr{}\halign to\displaywidth\bgroup
       \hskip\@centering$\displaystyle\tabskip\z@skip{##}$\@eqnsel
      &\global\@eqcnt\@ne\hskip \tw@\arraycolsep \hfil${##}$\hfil
      &\global\@eqcnt\tw@ \hskip \tw@\arraycolsep
         $\displaystyle{##}$\hfil\tabskip\@centering
      &\global\@eqcnt\thr@@ \hb@xt@\z@\bgroup\hss##\egroup
         \tabskip\z@skip
      \cr
}
\def\endeqnarray{%
      \@@eqncr
      \egroup
      \global\advance\c@equation\m@ne
   $$\@ignoretrue
}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Titles %%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\renewcommand\refname{References}%
\renewcommand\figurename{Fig.}% defined as per springer style
\renewcommand\tablename{Table}%
\renewcommand\appendixname{Appendix}%
\renewcommand\abstractname{Abstract}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Article Front Matter %%%%%%%%%%%%%%%%%%%%%%%%%%%
%

\def\raggedleft{\leftskip0pt plus 1fil\parfillskip=0pt\relax}%
\def\raggedright{\rightskip0pt plus 1fil\parfillskip=0pt\relax}%
\def\raggedcenter{\leftskip=0pt plus 0.5fil\rightskip=0pt plus 0.5fil%
\parfillskip=0pt\let\hb=\break}%
\def\titraggedcenter{\leftskip=12pt plus 0.5fil\rightskip=12pt plus 0.5fil%
\parfillskip=0pt\let\hb=\break}%
\def\absraggedcenter{\leftskip=24pt plus 0.5fil\rightskip=24pt plus 0.5fil%
\parfillskip=0pt\let\hb=\break}%

%
%%% Font Def
\def\Artcatfont{\reset@font\fontsize{8bp}{10bp}\selectfont}%
\def\Titlefont{\reset@font\fontsize{17bp}{22.5bp}\selectfont\titraggedcenter}%
\def\SubTitlefont{\reset@font\fontsize{14bp}{16.5bp}\selectfont\titraggedcenter}%
\def\Authorfont{\reset@font\fontsize{12bp}{14.5bp}\selectfont\boldmath\titraggedcenter}%
\def\addressfont{\reset@font\fontsize{11bp}{13.5bp}\selectfont\titraggedcenter}%
\def\abstractheadfont{\reset@font\fontsize{9bp}{11bp}\bfseries\selectfont\titraggedcenter}%
\def\abstractsubheadfont{\reset@font\fontsize{9bp}{11bp}\bfseries\selectfont}%
\def\abstractfont{\reset@font\fontsize{9bp}{11bp}\selectfont\leftskip=24pt\rightskip=24pt\parfillskip=0pt plus 1fil}%
\def\keywordfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont\leftskip=24pt\rightskip=24pt plus0.5fill}%
\def\historyfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont\leftskip=24pt\rightskip=24pt plus0.5fill}%

%% Article Type

\newbox\artcatbox%

\def\articletype#1{\if!#1!\else\setbox\artcatbox\hbox{\Artcatfont\hskip1mm#1\hskip1mm}\fi%
\gdef\ArtType{\fboxsep=0pt{\vbox to 4mm{\vfil%
              {\raggedright\box\artcatbox}\vfil}}}%
\gdef\@ArtType{#1}}%
%%\articletype{RESEARCH ARTICLE}%
\articletype{}%

%% Article Title

\renewcommand{\title}[2][]{%
\gdef\@checktitle{#1}\ifx\@checktitle\empty\gdef\@title{#2}%
\gdef\s@title{#2}\else\gdef\@title{#2}\gdef\s@title{#1}\fi%
\markboth{\textit{\s@title}}{\textit{\s@title}}}%

\def\subtitle#1{\gdef\@subtitle{#1}}\subtitle{}%

%% Cross Link for Author & Address
\def\jmkLabel#1{\@bsphack\protected@write\@auxout{}{\string\Newlabel{#1}{\@currentlabel}}\@esphack}%
\def\Newlabel#1#2{\expandafter\xdef\csname X@#1\endcsname{#2}}%
\def\jmkRef#1{\@ifundefined{X@#1}{0}{\csname X@#1\endcsname}}%

%% Article Author(s)
\let\sep\@empty%
\let\authorsep\@empty%
\newcount\aucount%
\newcount\corraucount%
\newcount\punctcount%
%
\def\artauthors{}%
\newif\if@auemail%
\newif\if@corauemail%
%
\def\au@and{\ifnum\punctcount=2\ and\else\unskip, \advance\punctcount by -1 \fi}%
%
\def\author{\advance\aucount by 1\@ifstar\@@corrauthor\@@author}%
%
\newcommand{\@@author}[2][]{\def\@authfrstarg{#1}\@corauemailfalse%
\g@addto@macro\artauthors{%
    \ifnum\aucount=1%
    \global\@auemailtrue%
    \else%
    \global\@auemailfalse%
    \fi%
    \Authorfont%
    \def\baselinestretch{1}%
    \authorsep{#2}\unskip\ifx\@authfrstarg\empty\else\textsuperscript{\smash{{%
      \@for\@@affmark:=#1\do{\edef\affnum{\@ifundefined{X@\@@affmark}{\@@affmark}{\jmkRef{\@@affmark}}}%
     \unskip\sep\affnum\let\sep=,}}}}\fi%
    \def\authorsep{{\au@and} }%%%
    \global\let\sep\@empty\global\let\@corref\@empty%
}}%
%
\newcommand{\@@corrauthor}[2][]{\def\@authfrstarg{#1}\@corauemailtrue\advance\corraucount by 1%
\g@addto@macro\artauthors{%
    \global\@auemailtrue%
    \Authorfont%
    \def\baselinestretch{1}%
    \authorsep{#2}\unskip\ifx\@authfrstarg\empty\else\textsuperscript{\smash{{%
      \@for\@@affmark:=#1\do{\edef\affnum{\@ifundefined{X@\@@affmark}{\@@affmark}{\jmkRef{\@@affmark}}}%
     \unskip\sep\affnum\let\sep=,}}}{*}\hskip-1pt}\fi\unskip%
    \def\authorsep{\au@and~}%%%
    \global\let\sep\@empty\global\let\@corref\@empty%
}}%
%%
%% Miscellaneous macros %%
%%
\def\fnm#1{\leavevmode\hbox{#1}}%
\def\sur#1{\unskip~\nobreak\leavevmode\hbox{#1}}%
\def\spfx#1{#1}%
\def\pfx#1{#1}%
\def\sfx#1{#1}%
\def\tanm#1{#1}%
\def\dgr#1{#1}%
%
%% Author Email
%
\let\nomail\relax%
\def\corrauthemail{}%
\def\authemail{}%

\newcount\emailcnt%

\def\email#1{\global\advance\emailcnt by 1\relax%
\if@corauemail%
   \g@addto@macro\corrauthemail{%
   \setcounter{footnote}{0}%
   \textcolor{blue}{#1};\ %
   }%
\else%
   \g@addto@macro\authemail{%
   \setcounter{footnote}{0}%
   \textcolor{blue}{#1};\ %
   }%
\fi}

%% Corrseponding Address
\def\@copycorthanks{}%
\def\auaddress{}%
\def\@auaddress{}%

\newcounter{affn}%
\newcount\addcount% To check the count of address

\renewcommand\theaffn{\arabic{affn}}%

\def\affil{\advance\addcount by 1\@ifstar\@@coraddress\@@address}%

\newcommand{\@@coraddress}[2][]{%\advance\addcount by 1
\g@addto@macro\auaddress{%
     \stepcounter{affn}%
     \xdef\@currentlabel{\theaffn}%
     \jmkLabel{\theaffn}%
     {\textsuperscript{#1*}#2.\par} }
}

%% Macros for present address

\newif\ifpresentaddress%

\def\@presentaddresstxt{}%
\def\presentaddresstxt#1{\gdef\@presentaddresstxt{#1:}}\presentaddresstxt{Present Address}%
\newcommand{\presentaddress}[1]{\gdef\@presentaddresstext{\@presentaddresstxt\par#1}\global\presentaddresstrue}%

%% Macros for equally contributed

\newif\ifequalcont%

%\def\@equalconttxt{}%
%\def\equalcontxt#1{\gdef\@equalconttxt{#1}}\equalcontxt{These authors contributed equally to this work.}%
%\newcommand{\equalcont}[1][\@equalconttxt]{\gdef\@equalconttext{#1}\g@addto@macro\artauthors{$^{\dagger}$}\global\equalconttrue}%

\def\@equalconttxt{}%
\def\equalcontxt#1{\gdef\@equalconttxt{#1}}\equalcontxt{}%
\newcommand{\equalcont}[1]{\gdef\@equalconttext{#1}\g@addto@macro\artauthors{$^{\dagger}$}\global\equalconttrue}%

%% Author Address

\newcommand{\@@address}[2][]{%%\advance\addcount by 1
\g@addto@macro\auaddress{%
     \stepcounter{affn}%
     \xdef\@currentlabel{\theaffn}%
     \jmkLabel{\theaffn}%
     {\textsuperscript{#1}#2.\par} }%\theaffn
}

%% Address tagging
\newcommand{\orgdiv}[1]{#1}%
\newcommand{\orgname}[1]{#1}%
\newcommand{\orgaddress}[1]{#1}%
\newcommand{\street}[1]{#1}%
\newcommand{\postcode}[1]{#1}%
\newcommand{\city}[1]{#1}%
\newcommand{\state}[1]{#1}%
\newcommand{\country}[1]{#1}%

%% Article notes

\def\@artnote{}%
\def\artnote#1{\gdef\@artnote{#1}}%

%% Miscellaneous notes

\def\@miscnote{}%
\def\miscnote#1{\gdef\@miscnote{\par\addvspace{3pt}#1}}%

%% Motto

\def\mottofont{\reset@font\fontfamily{\rmdefault}\fontsize{8.5bp}{10bp}\fontshape{it}\selectfont\raggedright}
%
\let\@motto\@empty
\def\mottoraggedright{\rightskip0mm\leftskip=42mm plus 1fil\parfillskip=0pt\relax}%
\newcommand{\motto}[2][]{\gdef\@headcheck{#1}\gdef\@motto{\@headcheck\ifx\@headcheck\@empty\vskip12pt\else\fi{\mottofont\mottoraggedright#2\par}}}

%% Article Abstract
\newcommand\abstracthead{\@startsection {section}{1}{\z@}{-22pt \@plus0ex \@minus0ex}{3pt}{\abstractheadfont}}
\newcommand\subabstracthead{\@startsection{subsection}{2}{\z@}{3pt \@plus0ex \@minus0ex}{-.5em}{\abstractsubheadfont}}

\def\@abstract{}%
\long\def\abstract#1{\def\@abstract{%
\let\paragraph\subabstracthead%
\abstractfont%
\abstracthead*{\abstractname}%

\def\printabstract{\ifx\@abstract\empty\else\@abstract\fi\par}%

\def\printkeywords{\ifx\@keywords\empty\else\@keywords\fi\par}%

%
%% Keywords
\def\keywordname{Keywords}%
\def\keywords#1{\ifx#1\empty\else\def\@keywords{\par\addvspace{10pt}{\keywordfont{\bfseries\keywordname:} #1\par}}\fi}%
\def\@keywords{}%

%% PACs

\def\pacsbullet{\hbox{\hskip2.5pt,\hskip2.5pt}}%

\def\change@commas#1,#2{%
  \ifx#2\@empty%
    #1%
  \else%
    #1\nobreak\hbox{\pacsbullet}\allowbreak\expandafter\change@commas%
  \fi%
  #2}%

\newcommand\keywordhead[1]{\par\addvspace{10pt}%
{{\keywordfont\bfseries#1:\ }}}%

\newcommand{\pacs}[1]{\keywordhead{\pacsname}#1}%
%
\newcount\PacsCount%
\PacsCount=0%
%
\newcount\PacsTmpCnt%
\PacsTmpCnt=1%
%
\gdef\StorePacsText#1#2{%
\edef\GetRoman{\romannumeral#1}%
\expandafter\gdef\csname\GetRoman StorePacsTxt\endcsname{#2}%
}%
%
\let\oldpacs\pacs%
\renewcommand\pacs[2][PAC Codes]{\gdef\pacsname{{\bfseries#1}}\gdef\@pacs{\keywordfont\raggedright\oldpacs\change@commas#2,\@empty\par}
\StepUpCounter{\PacsCount}%
\StorePacsText{\the\PacsCount}{\gdef\pacsname{{\bfseries#1}}\keywordfont\raggedright\oldpacs\change@commas#2,\@empty}%
}%

\def\@pacs{}%

%% Glossary

\def\gloshead{Glossary}%

\newenvironment{glos}[1][\gloshead]{\begingroup\parindent=0pt%
\section*{#1}
\def\item[##1]{##1,\ }}{%
\endgroup}%
%

%% Article History

\def\received#1{\g@addto@macro\@history{{Received #1}}}%
\def\revised#1{\g@addto@macro\@history{{; revised #1}}}%
\def\accepted#1{\g@addto@macro\@history{{; accepted #1}}}%

%% Remark on Front page %%

\newdimen\FMremarkdim%

\newcommand{\FMremark}{\begingroup\parindent=0pt\parskip=0pt%
\if@referee\singlespacing\fi%
\fboxsep=6pt\fboxrule=0.5pt%
\FMremarkdim=\textwidth%%\paperwidth%
\advance\FMremarkdim-\fboxsep%
\advance\FMremarkdim-2\fboxrule%
\if@referee\vskip-21pt\fi%
%%\fbox{\vbox{\hsize=\FMremarkdim\small%
\unvbox\fmremarkbox
%%}}%
\endgroup}

\newbox\fmremarkbox%

\newenvironment{fmremark}{\begingroup\parindent=0pt%
\fboxsep=6pt\fboxrule=0.5pt%
\FMremarkdim=\textwidth%%\paperwidth%
\advance\FMremarkdim-\fboxsep%
\advance\FMremarkdim-2\fboxrule%
\global\setbox\fmremarkbox\vbox\bgroup\small%
}{\egroup\endgroup}

%% Article Header Definition
\renewcommand{\@maketitle}{\newpage\null%
    \if@remarkboxon\vbox to 0pt{\vspace*{-78pt}\hspace*{-18pt}\FMremark}\else\vskip21pt\fi%%\par%
    \hsize\textwidth\parindent0pt%%%\vskip7pt%
    %% Aritle Type
    {\hbox to \textwidth{{\Artcatfont\ArtType\hfill}\par}}
    %% Aritle Title
    \ifx\@title\empty\else%
        \removelastskip\vskip20pt\nointerlineskip%
        {\Titlefont\@title\par}
        %\addcontentsline{toc}{chapter}{\@title}% for bookmarks
    \fi%
    %% Aritle SubTitle
    \ifx\@subtitle\empty\else%
        \vskip9pt%
        {{\SubTitlefont\@subtitle\par}}
    \fi%
    %% Aritle Authors, Address and Correspondings
    \ifnum\aucount>0
        \global\punctcount\aucount%
        \vskip20pt%
        \artauthors\par%%     authors and emails
        {\vskip7pt\addressfont\auaddress\par%%      corresponding adress
	 \removelastskip\vskip24pt%
	\ifnum\emailcnt>0\relax%
           \ifx\corrauthemail\@empty\else{\ifnum\aucount>1*\fi}%
	   Corresponding author(s). E-mail(s): \corrauthemail\par\fi%
	   \ifx\authemail\@empty\else Contributing authors:\ \authemail\fi%
        \fi%
        \ifequalcont{\par$^{\dagger}$\@equalconttext\par}\fi%
	 \removelastskip\vskip24pt%
        \ifpresentaddress{\par\@presentaddresstext\par}\fi%
	}
     \fi%
     {\printabstract\par}%
     {\printkeywords\par}%
     \ifx\@pacs\empty\else%
       \loop\ifnum\PacsCount>0%
          \csname\romannumeral\PacsTmpCnt StorePacsTxt\endcsname\par%
          \StepDownCounter{\PacsCount}%
          \StepUpCounter{\PacsTmpCnt}%
       \repeat%
    \fi%
    %%{\printhistory\par}%
    %%{\ifx\@motto\empty\else\@motto\fi}%
    \removelastskip\vskip36pt\vskip0pt}%

\usepackage{cuted}%
\@ifpackageloaded{cuted}{\gdef\@setmarks{}}{}%

%% Printing Article Header
\newdimen\firstpagehtcheck

\renewcommand\maketitle{\par
  \@afterindentfalse%
  \begingroup
    \gdef\UrlFont{\rmfamily}%
    \renewcommand\thefootnote{\@fnsymbol\c@footnote}%
    \def\@makefnmark{\rlap{\@textsuperscript{\normalfont\smash{\@thefnmark}}}}%
    \long\def\@makefntext##1{\parindent 1em\noindent\small\selectfont
            \hbox{\@textsuperscript{\normalfont\@thefnmark}}##1}%
    \if@twocolumn
      \ifnum \col@number=\@ne%
\setbox0=\vbox{\@maketitle}
\firstpagehtcheck=\ht0%
\advance\firstpagehtcheck by \dp0%
\ifdim\firstpagehtcheck>\textheight%
\setbox1=\vsplit0to2\textheight%
\setbox1=\vbox{\unvbox1}%
\setbox2=\vbox{\unvbox0}%
\unvbox1%
\stripsep=0pt%
\begin{strip}
\unvbox2%
\end{strip}
\else
\twocolumn[\@maketitle]%
\fi
\else
\@maketitle
\fi%
    \else%
      \newpage%
      \global\@topnum\z@% Prevents figures from going at top of page.
      \@maketitle%
    \fi%
  \endgroup%
  \ifx\@artnote\@empty\else\footnoteA{\@artnote}\fi%
  \ifx\@miscnote\@empty\else\footnoteA{\@miscnote\par}\fi%
  \setcounter{footnote}{0}%
  \global\let\thanks\relax%
  \global\let\artnote\relax%
  \global\let\maketitle\relax%
  \global\let\@maketitle\relax%
  \global\let\@thanks\@empty%
  \global\let\@author\@empty%
  \global\let\@date\@empty%
  \global\let\title\relax%
  \global\let\author\relax%
  \global\let\date\relax%
  \global\let\and\relax%
  \pagestyle{headings}%
  %%%print continuous abstract on next page
  \@afterheading%
  %%\vskip-18pt% this is included to avoid vertical space at the beginning of left column on article opening pages
}%

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Page Styles %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
\def\opheaderfont{\reset@font\fontsize{10bp}{0bp}\selectfont}%
\def\headerfont{\reset@font\fontsize{10bp}{0bp}\selectfont}%
\def\footerfont{\reset@font\fontsize{10bp}{0bp}\selectfont}%

%% Regular Page Style
\def\ps@headings{%
    \def\@oddfoot{\hfill\thepage\hfill}%
    \let\@evenfoot\@oddfoot%
      \def\@evenhead{%
      \vbox to 0pt{\vspace*{-48pt}%
         \hbox to \hsize{\hfill \relax\hfill}}\par%%
      \hspace*{-\textwidth}\hbox to \hsize{\hfill}}%
      \def\@oddhead{%
      \vbox to 0pt{\vspace*{-48pt}%
         \hbox to \hsize{\hfill \relax\hfill}}\par%%
      \hspace*{-\textwidth}\hbox to \hsize{\hfill}}%
      \let\@mkboth\markboth%
      }%

%% Opening Page Style
\def\ps@titlepage{%
     %%\def\@oddhead{\vbox{\vskip-36pt\hbox to \textwidth{\hfill\includegraphics{springer-nature-logo}\hspace*{-1pt}}}}%
     %%\let\@oddhead\@empty\let\@evenhead\@empty%
      \def\@oddhead{%
      \vbox to 0pt{\vspace*{-38pt}%
         \hbox to \hsize{\hfill \hfill}}}%%
     \let\@evenhead\@oddhead%
     \def\@oddfoot{\vbox to 18pt{\vfill\reset@font\rmfamily\hfil\thepage\hfil}}%%
     \def\@evenfoot{}}%

\def\ps@plain{\let\@mkboth\@gobbletwo%
\let\@oddhead\@empty\let\@evenhead\@empty%
\def\@oddfoot{\vbox to 18pt{\vfill\reset@font\rmfamily\hfil ddd\thepage\hfil}}%
\let\@evenfoot\@oddfoot}%

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Sections %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%

\def\numbered{\setcounter{secnumdepth}{3}}%
\def\unnumbered{\setcounter{secnumdepth}{0}}%
\numbered%% default is numbered Sections

\renewcommand\thesection      {\@arabic\c@section}%
\renewcommand\thesubsection   {\thesection.\@arabic\c@subsection}%
\renewcommand\thesubsubsection{\thesubsection.\@arabic\c@subsubsection}%
\renewcommand\theparagraph    {\thesubsubsection.\@arabic\c@paragraph}%
\renewcommand\thesubparagraph {\theparagraph.\@arabic\c@subparagraph}%
%%
\def\@seccntformat#1{\csname the#1\endcsname\hskip.5em}%

\def\@sect#1#2#3#4#5#6[#7]#8{%
  \ifnum #2>\c@secnumdepth
    \let\@svsec\@empty
  \else
    \refstepcounter{#1}%
      \protected@edef\@svsec{\@seccntformat{#1}\relax}%
  \fi
  \@tempskipa #5\relax
  \ifdim \@tempskipa>\z@
    \begingroup
      #6{%
        \@hangfrom{\hskip #3\relax\@svsec}%
          \interlinepenalty \@M #8\@@par}%
    \endgroup
    \csname #1mark\endcsname{#7}%
    \addcontentsline{toc}{#1}{%
      \ifnum #2>\c@secnumdepth \else
        \protect\numberline{\csname the#1\endcsname}%
      \fi
      #7}%
  \else
    \def\@svsechd{%
      #6{\hskip #3\relax
      \@svsec #8.}%
      \csname #1mark\endcsname{#7}%
      \addcontentsline{toc}{#1}{%
        \ifnum #2>\c@secnumdepth \else
          \protect\numberline{\csname the#1\endcsname}%
        \fi
        #7}}%
  \fi
  \@xsect{#5}}
%
\def\sectionfont{\reset@font\fontfamily{\rmdefault}\fontsize{14bp}{16bp}\bfseries\selectfont\raggedright\boldmath}%
\def\subsectionfont{\reset@font\fontfamily{\rmdefault}\fontsize{12bp}{14bp}\bfseries\selectfont\raggedright\boldmath}%
\def\subsubsectionfont{\reset@font\fontsize{11bp}{13bp}\bfseries\selectfont\raggedright\boldmath}%
\def\paragraphfont{\reset@font\fontsize{10bp}{12bp}\bfseries\itshape\selectfont\raggedright}%
%
\def\subparagraphfont{\itshape}%
\def\bmheadfont{\reset@font\fontfamily{\rmdefault}\fontsize{10bp}{12bp}\bfseries\selectfont\raggedright\boldmath}%
%
\renewcommand\section{\@startsection{section}{1}{\z@}%
                                    {-12pt \@plus -4pt \@minus -2pt}%
                                    {9pt}%
                                    {\sectionfont}}
\renewcommand\subsection{\@startsection{subsection}{2}{\z@}%
                                       {-12pt \@plus -4pt \@minus -2pt}%
                                       {6pt}%
                                       {\subsectionfont}}
\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}%
                                          {-12pt \@plus -4pt \@minus -2pt}%
                                          {6pt}%
                                          {\subsubsectionfont}}
\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}%
                                      {-12pt \@plus -4pt \@minus-2pt}%
                                      {3pt}%
                                      {\paragraphfont}}
\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\z@}%
                                         {6pt \@plus1ex \@minus.2ex}%
                                         {-1em}%
                                         {\subparagraphfont}}
\newcommand\bmhead{\@startsection{subparagraph}{5}{\z@}%
                                 {6pt \@plus1ex \@minus .2ex}%
                                 {-1em}%
                                 {\bmheadfont}}
%
\def\@startsection#1#2#3#4#5#6{%
  \if@noskipsec \leavevmode \fi
  \par
  \@tempskipa #4\relax
  \@afterindenttrue
  \ifdim \@tempskipa <\z@
    \@tempskipa -\@tempskipa \@afterindentfalse
  \fi
  \if@nobreak
    \everypar{}%
  \else
    \addpenalty\@secpenalty\addvspace\@tempskipa
  \fi
  \@ifstar
    {\@ssect{#3}{#4}{#5}{#6}}%
    {\@dblarg{\@sect{#1}{#2}{#3}{#4}{#5}{#6}}}}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Lists %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\newdimen\labelwidthi%
\newdimen\labelwidthii%
\newdimen\labelwidthiii%
\newdimen\labelwidthiv%

\def\normal@labelsep{0.5em}%
\labelsep\normal@labelsep%
\settowidth{\labelwidthi}{(iii)}%
\settowidth{\labelwidthii}{(d)}%
\settowidth{\labelwidthiii}{(iii)}%
\settowidth{\labelwidthiv}{(M)}%

\leftmargini\labelwidthi     \advance\leftmargini\labelsep
\leftmarginii\labelwidthii   \advance\leftmarginii\labelsep
\leftmarginiii\labelwidthiii \advance\leftmarginiii\labelsep
\leftmarginiv\labelwidthiv   \advance\leftmarginiv\labelsep

\def\setleftmargin#1#2{\settowidth{\@tempdima}{#2}\labelsep\normal@labelsep
  \csname labelwidth#1\endcsname\@tempdima
  \@tempdimb\@tempdima \advance\@tempdimb\labelsep
  \csname leftmargin#1\endcsname\@tempdimb}
\def\@listI{\leftmargin\leftmargini
  \labelwidth\labelwidthi \labelsep\normal@labelsep
%  \topsep \z@
  \topsep\baselineskip %%updated
  \partopsep\z@ \parsep\z@ \itemsep\z@
  \listparindent 1em}
\def\@listii{\leftmargin\leftmarginii
  \labelwidth\labelwidthii \labelsep\normal@labelsep
  \topsep\z@ \partopsep\z@ \parsep\z@ \itemsep\z@
  \listparindent 1em}
\def\@listiii{\leftmargin\leftmarginiii
  \labelwidth\labelwidthiii \labelsep\normal@labelsep
  \topsep\z@ \partopsep\z@ \parsep\z@ \itemsep\z@
  \listparindent 1em}
\def\@listiv{\leftmargin\leftmarginiv
  \labelwidth\labelwidthiv \labelsep\normal@labelsep
  \topsep\z@ \partopsep\z@ \parsep\z@ \itemsep\z@
  \listparindent 1em}
\let\@listi\@listI
\@listi
%
\setlength  \labelsep  {.5em}
\setlength  \labelwidth{\leftmargini}
\addtolength\labelwidth{-\labelsep}
\@beginparpenalty -\@lowpenalty
\@endparpenalty   -\@lowpenalty
\@itempenalty     -\@lowpenalty
\def\labelitemi{$\bullet$}          \def\labelitemii{$\cdot$}
\def\labelenumi{\theenumi.}         \def\theenumi{\arabic{enumi}}
\def\labelenumii{(\alph{enumii})}   \def\theenumii{\alph{enumii}}
\def\labelenumiii{(\roman{enumiii})}\def\theenumiii{\roman{enumiii}}
\def\labelenumiv{(\Alph{enumiv})}   \def\theenumiv{\Alph{enumiv}}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Ordered & Unordered List  %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\def\listfont{\normalsize}%
%
\def\enumargs{%
   \listfont%
   \leftmargini0pt%
   \leftmarginii0pt%
   \leftmarginiii0pt%
   \ifnum\@enumdepth=3\topsep0pt\else\ifnum\@enumdepth=2\topsep0pt\else\topsep 6pt\fi\fi%
   \partopsep     \z@%
   \itemsep       \z@%
   \parsep        \z@%
   \labelsep      0.5em%
   \rightmargin   \z@%
   \raggedright%
   \listparindent \parindent%
   \itemindent    \z@}%

\def\enumerate{%
    \@ifnextchar[{\@numerate}{\@numerate[0.]}}

\def\@numerate[#1]{\par%
     \ifnum \@enumdepth >3 \@toodeep\else
     \advance\@enumdepth \@ne
     \edef\@enumctr{enum\romannumeral\the\@enumdepth}
     \list{\csname label\@enumctr\endcsname}{%
       \enumargs%
       \setlength{\leftmargin}{\csname leftmargin\romannumeral\the\@enumdepth\endcsname}
       \usecounter{\@enumctr}
       \settowidth\labelwidth{#1}
       \addtolength{\leftmargin}{\labelwidth}
       \addtolength{\leftmargin}{\labelsep}
       \def\makelabel##1{\hss\llap{##1}}}%
     \fi
   }
\let\endenumerate\endlist

%%Unnumbered list%%

\def\unenumargs{%
   \listfont%
   \leftmargini\parindent%
   \topsep6pt%
   \partopsep     \z@%
   \itemsep       \z@%
   \parsep        \z@%
   \labelsep      0\p@%
   \rightmargin   \z@%
   \raggedright%
   \listparindent \parindent%
   \itemindent    -12pt}%

\def\unenumerate{%
    \@ifnextchar[{\@unenumerate}{\@unenumerate[0.]}}

\def\@unenumerate[#1]{\par%
     \ifnum \@enumdepth >3 \@toodeep\else
     \advance\@enumdepth \@ne
     \edef\@enumctr{enum\romannumeral\the\@enumdepth}
     \list{}{%
       \unenumargs
       \setlength{\leftmargin}{\csname leftmargin\romannumeral\the\@enumdepth\endcsname}
       \usecounter{\@enumctr}
       \settowidth\labelwidth{#1}
       \addtolength{\leftmargin}{0pt}
       \addtolength{\leftmargin}{0pt}
       \def\makelabel##1{\hss\llap{##1}}}%
     \fi
   }

\let\endunenumerate\endlist%

%% bulleted list

\def\itemargs{%
   \listfont%
   \leftmargini0pt%
   \leftmarginii0pt%
   \ifnum\@enumdepth=3\topsep0pt\else\ifnum\@enumdepth=2\topsep0pt\else\topsep 6pt\fi\fi%
   \partopsep     \z@%
   \itemsep       \z@%
   \parsep        \z@%
   \labelsep      0.5em%
   \rightmargin   \z@%
   \raggedright%
   \listparindent \z@%
   \itemindent    \z@}%

\renewcommand\labelitemi{\raise1pt\hbox{\textbullet}}%
\renewcommand\labelitemii{\textendash}%

\def\itemize{%
   \@ifnextchar[{\@itemize}{\@itemize[$\bullet$]}}

\def\@itemize[#1]{\par%
     \ifnum \@itemdepth >3 \@toodeep\else
     \advance\@itemdepth \@ne
     \edef\@itemctr{item\romannumeral\the\@itemdepth}
     \list{\csname label\@itemctr\endcsname}{%
       \itemargs
       \setlength{\leftmargin}{\csname leftmargin\romannumeral\the\@itemdepth\endcsname}
       \settowidth\labelwidth{#1}
       \addtolength{\leftmargin}{\labelwidth}
       \addtolength{\leftmargin}{\labelsep}
       \def\makelabel##1{\hss \llap{##1}}}%
     \fi
   }
\let\enditemize\endlist
%
\def\quote{\list{}{\itemindent\z@
   \leftmargin 1em \rightmargin \z@}%
\item[]}
\let\endquote\endlist
%
\def\descriptionlabel#1{\hspace\labelsep \itshape #1}
\def\description{\list{}{\labelwidth\z@
  \leftmargin \z@ \topsep6pt\itemindent \z@ %-\leftmargin
  \let\makelabel\descriptionlabel}}
\let\enddescription\endlist

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Float %%%%%%%%%%%%%%%%%%%%%%%%%%%%

\setlength\abovecaptionskip{2.25\p@}%
\setlength\belowcaptionskip{6\p@}%

\setlength\arraycolsep{2\p@}%
\setlength\tabcolsep{6\p@}%
\setlength\arrayrulewidth{.4\p@}%
\setlength\doublerulesep{2\p@}%
\setlength\tabbingsep{\labelsep}%

\def\fnum@figure{{\bfseries\figurename\space\thefigure}}%
\def\fnum@table{{\bfseries\tablename\space\thetable}}%

\def\FigName{figure}%

\long\def\@makecaption#1#2{%
    \ifx\FigName\@captype
      \vskip\abovecaptionskip
        \@figurecaption{#1}{#2}
    \else
        \@tablecaption{#1}{#2}
      \vskip\belowcaptionskip
    \fi%
}

%% Figure

\def\figurecaptionfont{\reset@font\fontfamily{\rmdefault}\fontsize{8}{9.5}\selectfont}%

\newdimen\figwidth%
\newdimen\figheight%
\newdimen\sidecapwidth
\newdimen\wrapcapline%
\newdimen\totalwrapline%
\newdimen\wraptotline%

%% Figures macro
\newbox\figurebox%
\newbox\wrapfigcapbox

\def\FIG#1#2{%
\setbox\figurebox\hbox{#1}%
%% Figure dimensions
\figwidth\wd\figurebox%
\figheight\ht\figurebox%
{\parbox{\hsize}{%
\centerline{\box\figurebox}%
%% Caption

%% Figures caption
\newbox\figcapbox
\newbox\capbox
\long\def\@figurecaption#1#2{{\figurecaptionfont{\bfseries#1}\hskip.7em#2\par}}%

\newenvironment{unnumfigure}{\begingroup\setlength{\topsep}{12pt}%
\begin{center}}{\end{center}\endgroup}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\@ifpackageloaded{booktabs}{\cmidrulewidth=.15pt}{}%
%
\def\tablecaptionfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont}%
\def\tablebodyfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont}%
\def\tablecolheadfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont\bfseries\boldmath}%
\def\tablefootnotefont{\reset@font\fontsize{8bp}{9.5bp}\selectfont}%

%% Table Macro

\newskip\headwidthskip%

\def\tabraggedcenter{\leftskip=0pt plus 0.5fil\rightskip=0pt plus 0.5fil\parfillskip=0pt}%

\newenvironment{@processtable}[4]{%
\setbox4=\hbox to \hsize{\hss%
\begin{minipage}[t]{#4}%
\tabraggedcenter%
\caption{#1}\par%
{\tablebodyfont\noindent\ignorespaces#2\par}\par\vglue6pt%
{\if!#3!\else{\tablefootnotefont#3}\fi}%
\end{minipage}%
\hss}%
\box4\par}%

\newcommand\TBL[3]{\begingroup%
%
\if!#1!\let\caption\relax\fi%
%
   \global\setbox\temptbox=\hbox{\bgroup{\tablebodyfont#2}\egroup}%
   \global\tempdime\wd\temptbox%
    \@processtable{#1}{\global\headwidthskip=\tempdime%
	 \vbox{#2}}{#3}{\tempdime}%
\endgroup}%

%% Table Caption
\newbox\tabcapbox%
\newbox\temptbox%
\newdimen\tempdime%
\newdimen\tabhtdime%

\long\def\@tablecaption#1#2{%
  \setbox\tabcapbox\vbox{\tablecaptionfont\raggedright%
  {\bfseries #1}{\hskip2mm}#2\vphantom{y}\par}%
  \box\tabcapbox%
}

%% Table Column Heads
\def\TCH#1{{\tablecolheadfont #1}}

%% Table Footnotes

\newenvironment{tablenotes}{\list{}{\setlength{\labelsep}{0pt}%
\setlength{\labelwidth}{0pt}%
\setlength{\leftmargin}{0pt}%
\setlength{\rightmargin}{0pt}%
\setlength{\topsep}{-6pt}%
\setlength{\itemsep}{2pt}%
\setlength{\partopsep}{0pt}%
\setlength{\listparindent}{0em}%
\setlength{\parsep}{0pt}}%
\item\relax%
}{\endlist}%

\def\tnote#1{$^{#1}$}%%

%% Table Rules

\def\toprule{%\noalign{\vskip3pt}
\noalign{\ifnum0=`}\fi
  \hrule \@height 0\p@ \@width 0pt
  \hrule \@height 0.75\p@ % <- rule height
  \hrule \@height 5pt \@width 0pt
  \futurelet\@tempa\@xhline}
% Middle rule
\def\midrule{\noalign{\ifnum0=`}\fi%
  \hrule \@height 3pt \@width 0pt
  \hrule \@height .5pt % <- rule height
  \hrule \@height 5pt \@width 0pt
  \futurelet \@tempa\@xhline}
% Bottom rule
\def\botrule{\noalign{\ifnum0=`}\fi
  \hrule \@height 3pt \@width 0pt
  \hrule \@height 0.75\p@ % <- rule height
  \hrule \@height 3pt \@width 0pt
  \futurelet\@tempa\@xhline}
%
\def\@@@cmidrule[#1-#2]#3#4{\global\@cmidla#1\relax
    \global\advance\@cmidla\m@ne
    \ifnum\@cmidla>0\global\let\@gtempa\@cmidrulea\else
    \global\let\@gtempa\@cmidruleb\fi
    \global\@cmidlb#2\relax
    \global\advance\@cmidlb-\@cmidla
    \global\@thisrulewidth=#3
    \@setrulekerning{#4}
    \ifnum\@lastruleclass=\z@\vskip 3\p@\fi
    \ifnum0=`{\fi}\@gtempa
    \noalign{\ifnum0=`}\fi\futurenonspacelet\@tempa\@xcmidrule}
\def\@xcmidrule{%
   \ifx\@tempa\cmidrule
       \vskip-\@thisrulewidth
       \global\@lastruleclass=\@ne
   \else \ifx\@tempa\morecmidrules
       \vskip \cmidrulesep
       \global\@lastruleclass=\@ne\else
       \vskip 5\p@
       \global\@lastruleclass=\z@
   \fi\fi
   \ifnum0=`{\fi}}
\let\cline\cmidrule

\usepackage[figuresright]{rotating}%
\usepackage{threeparttable}

\let\tableorg\table%
\let\endtableorg\endtable%

\let\sidewaystableorg\sidewaystable%
\let\endsidewaystableorg\endsidewaystable%

\renewenvironment{table}[1][]%
{\begin{tableorg}[#1]%
\begin{center}
\begin{threeparttable}
\tablebodyfont%
\renewcommand\footnotetext[2][]{{\removelastskip\vskip3pt%
\let\tablebodyfont\tablefootnotefont%
\hskip0pt\if!##1!\else{\smash{$^{##1}$}}\fi##2\par}}%
}{\end{threeparttable}\end{center}\end{tableorg}}

\renewenvironment{sidewaystable}[1][]%
{\begin{sidewaystableorg}[#1]%
\begin{center}
\begin{threeparttable}
\tablebodyfont%
\renewcommand\footnotetext[2][]{{\removelastskip\vskip3pt%
\let\tablebodyfont\tablefootnotefont%
\hskip0pt\if!##1!\else{\smash{$^{##1}$}}\fi##2\par}}%
}{\end{threeparttable}\end{center}\end{sidewaystableorg}}

%%%%%%%%%%%%%%%%%%%%%%%%%%%% Other Env. %%%%%%%%%%%%%%%%%%%%%%%%%

\def\quotefont{\reset@font\fontfamily{\rmdefault}\fontsize{9}{11}\selectfont}%

\renewenvironment{quote}
               {\list{}{\topsep=0pt\topsep6pt\leftmargin=1em\raggedright\quotefont}%
                \item\relax}
               {\endlist}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%%% Appendix %%%%%%%%%%%%%%%%%%%%%%%%%
%

\newif\ifbackmatter%
\newcommand{\backmatter}{\global\backmattertrue}%

\usepackage[title]{appendix}%

\@ifpackageloaded{appendix}{%
%
\renewenvironment{appendices}{%
  \@resets@pp
  \if@dotoc@pp
    \if@dopage@pp              % both page and toc
      \if@chapter@pp           % chapters
        \clear@ppage
      \fi
      \appendixpage
    \else                      % toc only
       \if@chapter@pp          % chapters
         \clear@ppage
       \fi
      \addappheadtotoc
    \fi
  \else
    \if@dopage@pp              % page only
      \appendixpage
    \fi
  \fi
  \if@chapter@pp
    \if@dotitletoc@pp \@redotocentry@pp{chapter} \fi
  \else
    \if@dotitletoc@pp \@redotocentry@pp{section} \fi
    \if@dohead@pp
      \def\sectionmark##1{%
        \if@twoside
          \markboth{\@formatsecmark@pp{##1}}{}
        \else
          \markright{\@formatsecmark@pp{##1}}{}
        \fi}
    \fi
    \if@dotitle@pp
      \def\sectionname{\appendixname}
      \def\@seccntformat##1{\@ifundefined{##1name}{}{\csname ##1name\endcsname\ }%
        \csname the##1\endcsname\quad}
    \fi
  \fi
}{%
  \@ppsaveapp\@pprestoresec}
%%
\AtBeginDocument{%
%
\let\oldappendices\appendices%
\let\oldendappendices\endappendices%
%%
\renewenvironment{appendices}{%
\setcounter{figure}{0}%
\setcounter{table}{0}%
\setcounter{equation}{0}%
%%
\begin{oldappendices}%
  \gdef\thefigure{\@Alph\c@section\arabic{figure}}%
  \gdef\thetable{\@Alph\c@section\arabic{table}}%
  \gdef\theequation{\@Alph\c@section\arabic{equation}}%
}{\end{oldappendices}}
}
%%
}{}

%
%%%%%%%%%%%%%%%%%%%%%%%%%%% Article History  %%%%%%%%%%%%%%%%%%%%
%
\def\@history{}
\def\printhistory{{\par\addvspace{8pt}%
\historyfont\noindent%
\ifx\@history\empty\gdef\@history{Received xx xxx xxxx}\fi\@history\par}}%
%
%%%%%%%%%%%%%%%%%%%%%%% Footnotes %%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
\renewcommand\@makefntext[1]{%
    \hskip8pt{\smash{\@makefnmark}}#1}
%
\RequirePackage{hyperref}%
%%\RequirePackage{hypcap}%
\gdef\breakurldefns{%
\if@pdflatex\else%
  \RequirePackage[hyphenbreaks]{breakurl}%
%  \let\href\burlalt%
\fi}%
\breakurldefns%
%    \bgroup
%      \catcode`\&=12\relax
%      \hyper@normalise\burl@addtocharlistbefore{%}
%      \hyper@normalise\burl@addtocharlistafter{:/.?#&_,;!=+~}%% for extra breaks in url
%    \egroup
%    \burl@defifstructure
%
\hypersetup{%
        colorlinks,
        breaklinks=true,
        plainpages=false,%
        citecolor=blue,
        linkcolor=blue,
        urlcolor=blue,
        bookmarksopen=true,%
        bookmarksnumbered=false,%
        bookmarksdepth=5%
}
%
\AtBeginDocument{\renewcommand\UrlFont{\rmfamily}}%
%
\AtBeginDocument{%
\@ifpackageloaded{natbib}{%
  \renewcommand\bibsection{%
   \section*{\refname}%
  }%
}{}%
}%
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
\pagestyle{headings}%
\pagenumbering{arabic}%
\sloppy%
\frenchspacing%
\flushbottom%

%%% special parameters for TeX
\adjdemerits=100
\linepenalty=100
%
%%%%%%%%%%%%%%% Biography
%
\RequirePackage{wrapfig}%
%
%
%  \begin{wrapfigure}[12]{r}[34pt]{5cm} <figure> \end{wrapfigure}
%                     --  -  ----  ---
%  [number of narrow lines] {placement} [overhang] {width of figure}
\newcount\wraplines%
%%\wraplines=5%
%
\newbox\@authorfigbox%
\newskip\@authorfigboxdim%
%
\newskip\biofigadjskip%
\biofigadjskip=0pt%
%
\def\authbiotextfont{\reset@font\fontsize{8bp}{9.5bp}\selectfont}%
%
\newenvironment{biography}[2]{\par\addvspace{11.5pt plus3.375pt minus1.6875pt}%\lineno@off%
\def\author##1{{\bfseries##1}}%
\if!#1!\def\@authorfig{}\else\def\@authorfig{{#1}}\fi%
\setbox\@authorfigbox=\hbox{#1}%
\@authorfigboxdim=\wd\@authorfigbox%
\if@iicol\advance\@authorfigboxdim by -10pt\else\advance\@authorfigboxdim by -2pt\fi%
\wraplines=9\fboxrule=1pt\fboxsep=6pt%
\noindent{%
\ifx\@authorfig\@empty\else\unskip%
\begin{wrapfigure}[\wraplines]{l}[0pt]{\@authorfigboxdim}%{38.25mm}%
\vskip-19pt\addvspace{\biofigadjskip}%
\@authorfig%
\end{wrapfigure}%
\fi%
{\authbiotextfont#2\par}%
\par%
}}{\par\addvspace{10.5pt plus3.375pt minus1.6875pt}}
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Theorem %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
%
\usepackage{amsthm}
\usepackage{fix-cm}

\@ifpackageloaded{amsthm}{%
%
%\let\proof\relax%
%\let\endproof\relax%

\def\@begintheorem#1#2[#3]{%
  \deferred@thm@head{\the\thm@headfont \thm@indent
    \@ifempty{#1}{\let\thmname\@gobble}{\let\thmname\@iden}%
    \@ifempty{#2}{\let\thmnumber\@gobble}{\let\thmnumber\@iden}%
    \@ifempty{#3}{\let\thmnote\@gobble}{\let\thmnote\@iden}%
    \thm@swap\swappedhead\thmhead{#1}{#2}{#3}%
    \the\thm@headpunct
    \thmheadnl % possibly a newline.
    \hskip\thm@headsep
  }%
  \ignorespaces
}

\def\@endtheorem{\endtrivlist\@endpefalse}

\AtBeginDocument{%
%
\DeclareRobustCommand{\S}{\ifmmode\mathsection\else\textsection\fi}

\DeclareSymbolFont{AMSa}{U}{msa}{m}{n}%
\DeclareMathSymbol{\opensquare}{\mathord}{AMSa}{"03}%
\def\qedsymbol{\ensuremath{\opensquare}}%
%
\newenvironment{spiproof}[1][\proofname]{\par\removelastskip%\vspace*{2pt}%
  \pushQED{\qed}%
  \small\normalfont \topsep7.5\p@\@plus7.5\p@\relax%
  \trivlist%
  \item[\hskip\labelsep%
        \itshape%
    #1\@addpunct{}]\ignorespaces%
}{%
  \popQED\endtrivlist\@endpefalse%
}%
%
\let\proof\spiproof\let\endproof\endspiproof%
%
}%
%
\def\thm@space@setup{%
\thm@preskip=12pt%
\thm@postskip=12pt}
%
%%%%%%%%%%%%%%%%%% StyleOne
%
\newtheoremstyle{thmstyleone}% Numbered
{18pt plus2pt minus1pt}% Space above
{18pt plus2pt minus1pt}% Space below
{\small\itshape}% Body font
{0pt}% Indent amount
{\small\bfseries}% Theorem head font
{}% Punctuation after theorem head
{.5em}% Space after theorem headi
{\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }\@upn{#2}}%
  \thmnote{ {\the\thm@notefont(#3)}}}% Theorem head spec (can be left empty, meaning `normal')
%
\newtheoremstyle{thmstyletwo}% Numbered
{18pt plus2pt minus1pt}% Space above
{18pt plus2pt minus1pt}% Space below
{\small\normalfont}% Body font
{0pt}% Indent amount
{\small\itshape}% Theorem head font
{}% Punctuation after theorem head
{.5em}% Space after theorem headi
{\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }{#2}}%
  \thmnote{ {\the\thm@notefont(#3)}}}% Theorem head spec (can be left empty, meaning `normal')
%
\newtheoremstyle{thmstylethree}% Definition
{18pt plus2pt minus1pt}% Space above
{18pt plus2pt minus1pt}% Space below
{\small\normalfont}% Body font
{0pt}% Indent amount
{\small\bfseries}% Theorem head font
{}% Punctuation after theorem head
{.5em}% Space after theorem headi
{\thmname{#1}\thmnumber{\@ifnotempty{#1}{ }\@upn{#2}}%
  \thmnote{ {\the\thm@notefont(#3)}}}% Theorem head spec (can be left empty, meaning `normal')
%
\newtheoremstyle{thmstylefour}% Proof
{18pt plus2pt minus1pt}% Space above
{18pt plus2pt minus1pt}% Space below
{\small\normalfont}% Body font
{0pt}% Indent amount
{\small\itshape}% Theorem head font
{}% Punctuation after theorem head
{.5em}% Space after theorem headi
{\global\proofthmtrue\thmname{#1} \thmnote{#3}}% Theorem head spec (can be left empty, meaning `normal')
%
}{}

%% Macros for bibliographystyles %%

% \def\bibcommenthead{\if@bibcomment\begingroup\parindent=0pt\parskip=0pt%
% \removelastskip\vskip13pt\nointerlineskip%
%
% \vbox{\bibfont If you are submitting to one of the Nature Research journals, using the eJP
%  submission system, please include the references within the manuscript file itself. You may
%  do this by copying the reference list from your .bbl file, and pasting it into the bibliography
%  environment of the main manuscript .tex file.}\par%
% \removelastskip\nobreak\vskip13pt\nobreak%
% \endgroup\fi}%

\def\bibcommenthead{}%

\if@Spr@basic@refstyle%
\if@Numbered@refstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
\else%
 \usepackage[authoryear]{natbib}%
  \setcitestyle{aysep={}}
  \gdef\NumBib{NO}%
\fi%
  \bibliographystyle{sn-basic}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%

\if@Mathphys@numrefstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
  \bibliographystyle{sn-mathphys-num}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\else%
\if@Mathphys@ayrefstyle%
 \usepackage[authoryear]{natbib}%
  \gdef\NumBib{NO}%
  \setcitestyle{aysep={}}
  \bibliographystyle{sn-mathphys-ay}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi\fi%
\if@APS@refstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
  \bibliographystyle{sn-APS}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%
\if@Vancouver@numrefstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
  \bibliographystyle{sn-vancouver-num}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\else%
\if@Vancouver@ayrefstyle%
 \usepackage[authoryear]{natbib}%
  \gdef\NumBib{NO}%
  \setcitestyle{aysep={}}
  \bibliographystyle{sn-vancouver-ay}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi\fi%
\if@APA@refstyle%
\if@Numbered@refstyle%
  \usepackage[natbibapa]{apacite}%
  \gdef\NumBib{YES}%
\else%
  \usepackage[natbibapa]{apacite}%
  \gdef\NumBib{NO}%
\fi%
  \bibliographystyle{sn-apacite}%
  \def\refdoi#1{\urlstyle{rm}\url{#1}}%
  \renewcommand{\doiprefix}{}%
  \AtBeginDocument{%
    \renewcommand{\BPBI}{.}% Period between initials - command from apacite.sty
  }%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%
\if@Chicago@refstyle%
\if@Numbered@refstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
\else%
 \usepackage[authoryear]{natbib}%
  \gdef\NumBib{NO}%
  \setcitestyle{aysep={}}
\fi%
  \bibliographystyle{sn-chicago}%
  \hypersetup{urlcolor=black,colorlinks=false,pdfborder={0 0 0}}\urlstyle{same}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%
\if@Standard@Nature@refstyle%
  \usepackage[numbers,sort&compress]{natbib}%
  \gdef\NumBib{YES}%
  \bibliographystyle{sn-nature}%
  \setlength{\bibsep}{1em}%
  \def\bibfont{\reset@font\fontfamily{\rmdefault}\normalsize\selectfont}%
\fi%

\AtBeginDocument{\allowdisplaybreaks}%

\def\eqnheadfont{\reset@font\fontfamily{\rmdefault}\fontsize{16}{18}\bfseries\selectfont}%

\newcommand{\eqnhead}[1]{\begingroup%
\begin{center}
{\eqnheadfont #1}\par%
\end{center}
\removelastskip\vskip24pt%
\thispagestyle{titlepage}%%
%%\thispagestyle{empty}%
\endgroup}

%% Macros for border matrix %%

\newif\if@borderstar

\def\bordermatrix{\@ifnextchar*{%
\@borderstartrue\@bordermatrix@i}{\@borderstarfalse\@bordermatrix@i*}%
}
\def\@bordermatrix@i*{\@ifnextchar[{\@bordermatrix@ii}{\@bordermatrix@ii[()]}}
\def\@bordermatrix@ii[#1]#2{%
\begingroup
\m@th\@tempdima8.75\p@\setbox\z@\vbox{%
\def\cr{\crcr\noalign{\kern 2\p@\global\let\cr\endline }}%
\ialign {$##$\hfil\kern 2\p@\kern\@tempdima & \thinspace %
\hfil $##$\hfil && \quad\hfil $##$\hfil\crcr\omit\strut %
\hfil\crcr\noalign{\kern -\baselineskip}#2\crcr\omit %
\strut\cr}}%
\setbox\tw@\vbox{\unvcopy\z@\global\setbox\@ne\lastbox}%
\setbox\tw@\hbox{\unhbox\@ne\unskip\global\setbox\@ne\lastbox}%
\setbox\tw@\hbox{%
$\kern\wd\@ne\kern -\@tempdima\left\@firstoftwo#1%
\if@borderstar\kern2pt\else\kern -\wd\@ne\fi%
\global\setbox\@ne\vbox{\box\@ne\if@borderstar\else\kern 2\p@\fi}%
\vcenter{\if@borderstar\else\kern -\ht\@ne\fi%
\unvbox\z@\kern-\if@borderstar2\fi\baselineskip}%
\if@borderstar\kern-2\@tempdima\kern2\p@\else\,\fi\right\@secondoftwo#1 $%
}\null \;\vbox{\kern\ht\@ne\box\tw@}%
\endgroup
}

%% Macros for line numbers %%

\if@vrulerlinenumberon%
%
\usepackage{vruler}%
%
%%\setvruler[<SCALE>][<INITIAL_COUNT>][<STEP>][<DIGITS>][<MODE>][<ODD_HSHIFT]>][<EVEN_HSHIFT>][<VSHIFT>][<HEIGHT>]
\def\linenoon{%%\definecolor{blue}{gray}{0}%
\def\tiny{\normalsize\color{black}}%
\setvruler[12bp][1][1][3][1][1.18\textwidth][26pt][-7pt][0.99\textheight]% for even pages: left side; for odd pages: right side;
%%\linkbluecolor
}%
\linenoon%
\def\lineno@off{\unsetvruler}%
\fi%
%% url macros %%

\gdef\orcidlogo{%
\includegraphics{Orcidlogo.eps}%
}%

\gdef\orcid#1{\href{#1}{\orcidlogo}}%

\endinput
\ No newline at end of file
diff --git a/sn-article-template/user-manual.pdf b/sn-article-template/user-manual.pdf
new file mode 100644
index 0000000..cb3893c
--- /dev/null
+++ b/sn-article-template/user-manual.pdf
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:4bb5d025c3ec64825cb3f4e1590d7ecc73b51c3c7c53e06711f59d2e840ed9e9
+size 418495
diff --git a/画图/声子不连续/plot.ipynb b/画图/声子不连续/plot.ipynb
new file mode 100644
index 0000000..80ff2c7
--- /dev/null
+++ b/画图/声子不连续/plot.ipynb
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:c47738948df9dbb3a999edd0b09f7f2db84155db1e3367a8ce8d1199dc4abe52
+size 354454
diff --git a/画图/声子不连续/整体图.svg b/画图/声子不连续/整体图.svg
new file mode 100644
index 0000000..92c77d0
--- /dev/null
+++ b/画图/声子不连续/整体图.svg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:b3b88e7c23f63f1acb4c57542ba8c354c6d3b6a856ae8fa75cc813a5d94dff48
+size 135427
diff --git a/画图/声子不连续/部分图.svg b/画图/声子不连续/部分图.svg
new file mode 100644
index 0000000..b75e248
--- /dev/null
+++ b/画图/声子不连续/部分图.svg
@@ -0,0 +1,3 @@
+version https://git-lfs.github.com/spec/v1
+oid sha256:042c4162aba30654ccccc347278e7fd6cbce56ff0021f57717e108f12e4ad1b0
+size 28816
2025-03-25 18:27:01 +08:00

5333 lines
148 KiBLFS
Plaintext

%%
%% This is file `sn-apacite.bst',
%% generated with the docstrip utility.
%%
%% The original source files were: apacite.dtx
%%
%% This file may be distributed and/or modified under the
%% conditions of the LaTeX Project Public License, either
%% version 1.3 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.3 or later is part of all distributions of
%% LaTeX version 2005/12/01 or later.
FUNCTION {identify.apacite.version}
{ % Put identifying string in the .blg file
"sn-apacite.bst"
" [2024/07/19 v1.1 APA bibliography style]"
* top$
}
ENTRY
{ address
annote
annotate
author
booktitle
chair
chapter
day
doi
edition
editor
englishtitle
firstkey
howpublished
institution
journal
key
keywords
lastchecked
month
nihms
note
number
organization
originaladdress
originalbooktitle
originaledition
originaleditor
originaljournal
originalnumber
originalpages
originalpublisher
originalvolume
originalyear
pages
pmcid
publisher
school
series
symposium
text
title
translator
type
url
urldate
volume
year
eprint
archive
archivePrefix
primaryClass
eid
adsurl
adsnote
version
}
{ cite.order %% order of first citation
title.number %% for sorting titles
cite.initials %% dummy (0-1) indicating whether or not
%% initials of the 1st author must
%% be used for citing
cite.num.names.full %% number of names to be cited for full and
cite.num.names.short %% short cite
add.to.year %% For a, b, c, etc. after year
%% in multiple citations with same author-year
}
{ year.label %% For sorting entries by year
author.year.sort.label %% For sorting entries and checking whether
%% initials should be added, how many authors
%% should be cited and whether a, b, etc.
%% after year is necessary
title.sort.label %% for sorting titles
citeorder.sort.label %% for sorting by citation order
type.2 %% Replacement for type with misc entries and
%% entries that revert to misc.
}
INTEGERS { len pos name.max old.number numnames numnames.old
nameptr lastname format.num.names cite.initials.old
cite.num.names.old add.to.year.old forward
multiresult dot brace.level
}
STRINGS { s t u old.label field
aut1f aut1s aut1f.old aut1s.old
aut2 aut2.old
aut3 aut3.old
aut4 aut4.old
aut5 aut5.old
aut6 aut6.old
year.label.old
}
FUNCTION {test} { #0 }
FUNCTION {dump.stack}
{ "---- STACK {" cite$ * "} ----" * top$
stack$
"---- END STACK {" cite$ * "} ----" * top$
}
FUNCTION {make.index} { #0 }
FUNCTION {unsorted} { #0 }
MACRO {jan} {"{\APACmonth{01}}"}
MACRO {feb} {"{\APACmonth{02}}"}
MACRO {mar} {"{\APACmonth{03}}"}
MACRO {apr} {"{\APACmonth{04}}"}
MACRO {may} {"{\APACmonth{05}}"}
MACRO {jun} {"{\APACmonth{06}}"}
MACRO {jul} {"{\APACmonth{07}}"}
MACRO {aug} {"{\APACmonth{08}}"}
MACRO {sep} {"{\APACmonth{09}}"}
MACRO {oct} {"{\APACmonth{10}}"}
MACRO {nov} {"{\APACmonth{11}}"}
MACRO {dec} {"{\APACmonth{12}}"}
MACRO {winter} {"{\APACmonth{13}}"}
MACRO {spring} {"{\APACmonth{14}}"}
MACRO {summer} {"{\APACmonth{15}}"}
MACRO {fall} {"{\APACmonth{16}}"}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% issues warning if field is empty
% call with
% "field" field warning.if.empty
% Note that the first field must be between quotes
% because it is the fieldname for use in the warning message.
%
FUNCTION {warning.if.empty}
{ empty$
{ "No " swap$ * " in " * cite$ * warning$ }
{ pop$ }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% issues warning if title, type, and howpublished are empty
%
FUNCTION {check.relevant.fields}
{ title empty$
type empty$ and
howpublished empty$ and
{ "No title, type, and howpublished in " cite$ * warning$ }
'skip$
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% delivers 1 if (both editor and translator
% not empty and not equal to each other)
% 0 if (editor or translator empty) or
% (editor = translator)
%
FUNCTION {editor.ne.trans}
{ translator empty$
{ #0 }
{ editor empty$
{ #0 }
{ translator editor =
{ #0 }
{ #1 }
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {conv.int.to.str}
{ duplicate$ #10 <
{ "0000" swap$ int.to.str$ * }
{ duplicate$ #100 <
{ "000" swap$ int.to.str$ * }
{ duplicate$ #1000 <
{ "00" swap$ int.to.str$ * }
{ duplicate$ #10000 <
{ "0" swap$ int.to.str$ * }
{ int.to.str$ }
if$
}
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {ref.type}
{ type$ "article" =
type$ "magazine" =
type$ "newspaper" =
type$ "book" =
type$ "techreport" =
type$ "unpublished" =
type$ "misc" =
type$ "booklet" =
type$ "manual" =
type$ "proceedings" =
or
or
or
or
or
or
or
or
or
{ #1 }
{ type$ "incollection" =
type$ "phdthesis" =
type$ "mastersthesis" =
type$ "lecture" =
type$ "inbook" =
type$ "inproceedings" =
type$ "conference" =
type$ "intechreport" =
or
or
or
or
or
or
or
{ #2 }
{ type$ "literal" =
{ #3 }
{ #0 }
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {is.atype}
{ type$ "article" =
type$ "magazine" =
type$ "newspaper" =
type$ "incollection" =
type$ "inbook" =
type$ "inproceedings" =
type$ "conference" =
type$ "intechreport" =
type$ "manual" =
or
or
or
or
or
or
or
or
{ #1 }
{ journal empty$ not
%
type$ "phdthesis" =
type$ "mastersthesis" =
or
%
and
{ #1 }
{ type$ "misc" =
type empty$ not and
{ type "\bibmessage" =
type "\bibcomputerprogram" =
type "\bibcomputerprogrammanual" =
type "\bibcomputerprogramandmanual" =
type "\bibcomputersoftware" =
type "\bibcomputersoftwaremanual" =
type "\bibcomputersoftwareandmanual" =
type "\bibprogramminglanguage" =
or
or
or
or
or
or
or
{ #1 }
{ #0 }
if$
}
{ #0 }
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% connects two strings with connect string
% if one of them empty, then connect string
% is left out
%
% call with S1 S2 connectstring connect.check
%
FUNCTION {connect.check}
{ 'u :=
%
% if S2 = ""
%
duplicate$ empty$
%
% then remove S2
%
{ pop$
%
% S1 is on top of stack.
% if it is empty, it is replaced by the empty string ""
%
duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
%
% else swap S1 and S2 so that S1 can be checked
%
{ swap$
%
% if S1 is empty, remove S1 so that S2 is left on the
% stack and is the result is given
%
duplicate$ empty$
{ pop$ }
%
% now the real work starts:
% push the connect string "C"
% so that top of stack is "C" "S1" "S2"
% concatenate, so that top of stack is
% "S1+C" "S2"
%
{ u *
%
% swap and concatenate
%
swap$ *
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% connects two strings with space ("\ ")
% if length of second is 4 or larger,
% connects them with non-breaking space ("tie", "~")
% if length of second smaller than 4
%
% call with S1 S2 tie.or.space.connect
% result: "S1\ S2" or "S1~S2"
%
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #4 <
{ "~" }
{ "\ " }
if$
swap$ * *
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% connects two strings with comma (", ")
% if one of them is empty, the comma is left out
%
% call with S1 S2 connect.with.comma.check
% result: "S1, S2"
%
FUNCTION {connect.with.comma.check}
{ ", " connect.check }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% connects two strings with semicolon ("; ")
% if one of them is empty, semicolon is left out
%
% call with S1 S2 connect.with.semicolon.check
% result: "S1; S2"
%
FUNCTION {connect.with.semicolon.check}
{ "; " connect.check }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% connects two strings with colon (": ")
% if one of them is empty, colon is left out
%
% call with S1 S2 connect.with.colon.check
% result: "S1: S2"
%
FUNCTION {connect.with.colon.check}
{ ": " connect.check }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% connects two strings with space ("\ ")
%
% call with S1 S2 connect.with.space.check
% result: "S1\ S2"
%
FUNCTION {connect.with.space.check}
{ "\ " connect.check }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% encloses string in pre- and postfix string
% call with
% prefix postfix S enclose.check
% delivers empty string if S empty
%
FUNCTION {enclose.check}
{ duplicate$ empty$
{ pop$ pop$ pop$
""
}
{ swap$ * * }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% emphasizes top of stack
% call with
% "string" emphasize.check
%
FUNCTION {emphasize.check}
{ "\Bem{" swap$
"}" swap$
enclose.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% brackets top of stack
% call with
% "string" bracket
%
FUNCTION {bracket.check}
{ "[" swap$
"]" swap$
enclose.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% parenthesizes top of stack
% call with
% "string" parenthesize
%
FUNCTION {parenthesize.check}
{ "(" swap$
")" swap$
enclose.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% checks whether argument is "multiresult":
% whether it contains '-', '+', or ',' characters
% used with pages to check whether pp. or p. must be used
%
FUNCTION {multi.result.check}
{ 't :=
#0 'multiresult :=
%
% while (not multiresult) and (length(t) > 1) do
%
{ multiresult not
t text.length$ #1 >
and
}
%
% if t(1-2) = "--" or t(1) = "+" or ","
% then multiresult = 1
% else t = t(2-last)
%
{ t #1 #2 substring$ 's :=
"--" s =
{ #1 'multiresult := }
{ t #1 #1 substring$ 's :=
"+" s =
"," s =
or
{ #1 'multiresult := }
{ t #2 global.max$ substring$ 't := }
if$
}
if$
}
while$
multiresult
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Checks whether an author is a corporate author, i.e.,
% whether the field starts with "{\bibcorporate".
% Call with
% field is.bibcorporate
%
FUNCTION {is.bibcorporate}
{ #1 #14 substring$ "{\bibcorporate" = }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {sortify}
{ purify$
"l" change.case$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {remove.spaces}
{ % Remove spaces from string.
% Works best if string only contains alphanumeric characters and spaces.
's := % The original string
s text.length$ 'len := % Its length (no. of characters)
"" 't := % Initialize the transformed string
#0 'pos :=
%
% while (pos < len) do
%
{ pos len < }
{ pos #1 + 'pos :=
s pos #1 substring$ 'u :=
%
% u is the pos-th character in s
% If it is a space, move to next character,
% else copy character to output.
%
u " " =
'skip$
{ t u * 't := }
if$
}
while$
%
% Now push the result back on the stack
t
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% end block by writing what's left on the stack and
% starting a new line
%
FUNCTION {output.end.block}
{ write$
newline$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% end block by adding a period and writing what's left
% on the stack and starting a new line
%
FUNCTION {output.dot.end.block}
{ add.period$
output.end.block
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% starting new block by writing what's left on the stack,
% starting a new line and adding some extra space or
% whatever is more defined in \newblock
%
FUNCTION {output.new.block}
{ output.end.block
"\newblock" write$ newline$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% starting new block by writing what's left on the stack,
% starting a new line and adding some extra space or
% whatever is more defined in \newblock
%
FUNCTION {output.dot.new.block}
{ add.period$
output.new.block
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {start.new.block}
{ "\unskip\ " write$ newline$
"\newblock " write$ newline$
}
FUNCTION {sort.name.format.classic} { "{ll{}}{ f{}}{ vv{}}{ jj{}}" }
FUNCTION {cite.name.format.classic} { "{ll}" }
FUNCTION {author.name.format.classic} { "{ll}{, f{.}.}{ vv}{, jj}" }
FUNCTION {index.name.format.classic} { "{ll}{, f{.}.}{ vv}{, jj}" }
FUNCTION {sort.name.format} { "{vv{}}{ll{}}{ f{}}{ jj{}}" }
FUNCTION {cite.name.format} { "{vv }{ll}" }
FUNCTION {cite.initials.name.format} { "{f{.}.~~}{vv }{ll}{ jj}" }
FUNCTION {author.name.format} { "{vv }{ll}{, f{.}.}{, jj}" }
FUNCTION {editor.name.format} { "{f{.}.~~}{vv }{ll}{ jj}" }
FUNCTION {index.name.format} { "{vv }{ll}{, f{.}.}{, jj}" }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {init.initials}
{ "yyyyy" 'aut1f.old :=
"yyyyy" 'aut1s.old :=
#0 'cite.initials.old :=
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {update.no.initials}
{ 'field :=
field 'aut1f.old :=
field 'aut1s.old :=
#0 'cite.initials.old :=
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {check.add.initials.aut}
{ %
% If last name is equal to previous last name
% but initials are different, then initials should
% be cited. If initials are also the same, initials
% should be cited if that is the case for the previous
% author .
%
aut1s aut1s.old =
{ aut1f aut1f.old =
{ cite.initials.old 'cite.initials := }
{ #1 'cite.initials :=
aut1f 'aut1f.old :=
aut1s 'aut1s.old :=
cite.initials 'cite.initials.old :=
}
if$
}
{ %
% Different last name.
aut1f 'aut1f.old :=
aut1s 'aut1s.old :=
cite.initials 'cite.initials.old :=
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {check.add.initials.field}
{ 'field :=
field #1 cite.initials.name.format format.name$ 'aut1f :=
field #1 cite.name.format format.name$ 'aut1s :=
%
% Now do the actual work
%
check.add.initials.aut
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {check.add.initials}
{ %
% Check whether author or editor or other field acts as author.
% Initials are only relevant with author or editor.
%
firstkey empty$ not
{ key empty$ not
{ %
% Both key and firstkey are nonempty.
% Then, key is treated as last name of first author,
% and firstkey is treated as last name + initials of
% first author .
%
firstkey sortify remove.spaces 'aut1f :=
key sortify remove.spaces 'aut1s :=
check.add.initials.aut
}
{ firstkey sortify remove.spaces update.no.initials }
if$
}
{ key empty$ not
{ key sortify remove.spaces update.no.initials }
{ %
% No key or firstkey, so find out which field
% to use as author.
%
% Check reference type:
% if result is 1 then possibly editor acts as author
% 2 then editor does not act as author
% 3 then key should have been used
% 0 then unknown reference type
ref.type #2 =
{ %
% Format first author with and without initials
author empty$
{ title.sort.label update.no.initials }
{ author check.add.initials.field }
if$
}
{ %
% Format first author with and without initials
author empty$
{ editor empty$
{ title.sort.label update.no.initials }
{ editor check.add.initials.field }
if$
}
{ author check.add.initials.field }
if$
}
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {tentative.cite.num.names.field}
{ 'field :=
field num.names$ 'numnames :=
numnames #3 <
{ %
% 1 or 2 names: always cite all of them.
numnames 'cite.num.names.full :=
numnames 'cite.num.names.short :=
}
{ numnames #6 <
{ %
% 3-5 names: cite all of them the first time,
% only the first name later times
numnames 'cite.num.names.full :=
#1 'cite.num.names.short :=
}
{ %
% 6 or more names: cite only the first name
#1 'cite.num.names.full :=
#1 'cite.num.names.short :=
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {tentative.cite.num.names}
{ %
% Check whether author or editor or other field acts as author.
% Number of names is only relevant with author or editor.
%
firstkey empty$ not
{
#1 'cite.num.names.full :=
#1 'cite.num.names.short :=
}
{ key empty$ not
{
#1 'cite.num.names.full :=
#1 'cite.num.names.short :=
}
{ %
% No key or firstkey, so find out which field
% to use as author.
%
% Check reference type:
% if result is 1 then possibly editor acts as author
% 2 then editor does not act as author
% 3 then key should have been used
% 0 then unknown reference type
ref.type #2 =
{ %
% Format first author with and without initials
author empty$
{
#1 'cite.num.names.full :=
#1 'cite.num.names.short :=
}
{ author tentative.cite.num.names.field }
if$
}
{ %
% Format first author with and without initials
author empty$
{ editor empty$
{
#1 'cite.num.names.full :=
#1 'cite.num.names.short :=
}
{ editor tentative.cite.num.names.field }
if$
}
{ author tentative.cite.num.names.field }
if$
}
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {init.cite.num.names}
{ #0 'cite.num.names.old :=
#0 'numnames.old :=
"yyyy" 'year.label.old :=
#0 'add.to.year.old :=
"" 'aut1f.old :=
"" 'aut2.old :=
"" 'aut3.old :=
"" 'aut4.old :=
"" 'aut5.old :=
"" 'aut6.old :=
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {update.cite.num.names}
{ cite.num.names.short 'cite.num.names.old :=
numnames 'numnames.old :=
year.label 'year.label.old :=
add.to.year 'add.to.year.old :=
aut1f 'aut1f.old :=
aut2 'aut2.old :=
aut3 'aut3.old :=
aut4 'aut4.old :=
aut5 'aut5.old :=
aut6 'aut6.old :=
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.6.authors}
{ %
% First author: with initials.
%
field #1 cite.initials.name.format format.name$ 'aut1f :=
%
% Second and later authors: without initials.
%
numnames #1 >
name.max #1 >
and
{ %
% 2nd author
field #2 cite.name.format format.name$ 'aut2 :=
%
numnames #2 >
name.max #2 >
and
{ %
% 3nd author
field #3 cite.name.format format.name$ 'aut3 :=
%
numnames #3 >
name.max #3 >
and
{ %
% 4th author
field #4 cite.name.format format.name$ 'aut4 :=
%
numnames #4 >
name.max #4 >
and
{ %
% 5th author
field #5 cite.name.format format.name$ 'aut5 :=
%
numnames #5 >
name.max #5 >
and
{ %
% 6th author
field #6 cite.name.format format.name$ 'aut6 :=
}
{ %
% 5 authors: 6 is empty
%
"" 'aut6 :=
}
if$
}
{ %
% 4 authors: 5-6 are empty
%
"" 'aut5 :=
"" 'aut6 :=
}
if$
}
{ %
% 3 authors: 4-6 are empty
%
"" 'aut4 :=
"" 'aut5 :=
"" 'aut6 :=
}
if$
}
{ %
% 2 authors: 3-6 are empty
%
"" 'aut3 :=
"" 'aut4 :=
"" 'aut5 :=
"" 'aut6 :=
}
if$
}
{ %
% Only 1 author: 2-6 are empty
%
"" 'aut2 :=
"" 'aut3 :=
"" 'aut4 :=
"" 'aut5 :=
"" 'aut6 :=
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {change.add.to.year}
{
forward #1 =
{ %
% Moving forward: this add.to.year number must be 1 higher than
% previous.
%
add.to.year.old #0 >
{ add.to.year.old #1 + 'add.to.year := }
{ #2 'add.to.year := }
if$
}
{ %
% Moving backward: this add.to.year number must be 1 lower than
% previous.
%
add.to.year.old #1 - 'add.to.year :=
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {definitive.cite.num.names.1.or.2}
{ %
numnames numnames.old =
{ %
% Same number of names: ambiguity could arise. Check whether current
% and previous have the same author(s).
%
aut1f aut1f.old =
{ %
% Same first author: if the second author is also the same or if
% there is only one author, a's and b's should be added.
%
aut2 aut2.old =
numnames #2 =
and
%
numnames #1 =
or
{ %
% Same author(s): add to year.
%
change.add.to.year
}
{ %
% Different second author: no ambiguity possible.
%
skip$
}
if$
}
{ %
% Different first author: no ambiguity possible.
%
skip$
}
if$
}
{ %
% Different number of names: no ambiguity possible.
%
skip$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {definitive.cite.num.names.3.or.more}
{ %
% Check whether current and previous have the same first author.
%
aut1f aut1f.old =
{ %
% Same first author: check second author
%
aut2 aut2.old =
{ %
% Same 1st & 2nd author: check 3rd.
%
aut3 aut3.old =
{ %
% Same 1st-3rd authors: check 4th.
%
numnames.old #3 =
{ numnames #3 =
{ %
% Both current and previous have 3 authors, which are
% the same, so both have identical author-year
% combinations, so ambiguity should be resolved by
% a's and b's. Check whether more authors were
% necessary for previous one.
%
change.add.to.year
cite.num.names.short cite.num.names.old <
{ cite.num.names.old
'cite.num.names.short :=
}
'skip$
if$
}
{ %
% Previous has 3 authors, current has more, with same
% first 3, so at least 4 must be used for current to
% make a difference.
%
cite.num.names.short #4 <
{ #4 'cite.num.names.short := }
'skip$
if$
}
if$
}
{ numnames #3 =
{ %
% Current has 3 authors, previous has more, with same
% first 3, so all 3 of current must be used.
%
numnames 'cite.num.names.short :=
}
{ %
% Same 1st-3rd author and both current and previous
% have at least 4 authors: check 4th.
%
aut4 aut4.old =
{ %
% Same 1st-4th authors: check 5th.
%
numnames.old #4 =
{ numnames #4 =
{ %
% Both current and previous have 4 authors,
% which are the same, so both have
% identical author-year combinations, so
% ambiguity should be resolved by a's and
% b's. Check whether more authors were
% necessary for previous one.
%
change.add.to.year
cite.num.names.short cite.num.names.old <
{ cite.num.names.old
'cite.num.names.short :=
}
'skip$
if$
}
{ %
% Previous has 4 authors, current has more,
% with same first 4, so at least 5 must be
% used for current to make a difference.
%
cite.num.names.short #5 <
{ #5 'cite.num.names.short := }
'skip$
if$
}
if$
}
{ numnames #4 =
{ %
% Current has 4 authors, previous has more,
% with same first 4, so all 4 of current
% must be used.
%
numnames 'cite.num.names.short :=
}
{ %
% Same 1st-4th author and both current and
% previous have at least 5 authors: check
% 5th.
%
aut5 aut5.old =
{ %
% Same 1st-5th authors: check 6th.
%
numnames.old #5 =
{ numnames #5 =
{ %
% Both current and previous
% have 5 authors, which are the
% same, so both have identical
% author-year combinations, so
% ambiguity should be resolved
% by a's and b's. Check whether
% more authors were necessary
% for previous one.
%
change.add.to.year
cite.num.names.short
cite.num.names.old <
{ cite.num.names.old
'cite.num.names.short :=
}
'skip$
if$
}
{ %
% Previous has 5 authors,
% current has more, with same
% first 5, so at least 6 must
% be used for current to make
% a difference.
%
cite.num.names.short #6 <
{ #6 'cite.num.names.short := }
'skip$
if$
}
if$
}
{ numnames #5 =
{ %
% Current has 5 authors,
% previous has more, with same
% first 5, so all 5 of current
% must be used.
%
numnames 'cite.num.names.short :=
}
{ %
% Same 1st-5th author and both
% current and previous have at
% least 6 authors. If one has
% 6 authors and the other has
% more or the 6th is different,
% 6 should be used (which is
% the maximum).
%
numnames #6 >
numnames.old #6 =
and
%
numnames #6 =
numnames.old #6 >
and
%
or
%
aut6 aut6.old =
not
%
or
{ #6 cite.num.names.short <
{ #6
'cite.num.names.short
:=
}
'skip$
if$
}
{ %
% The first 6 authors are
% the same and either both
% have 6 or both have more.
% So for all practical
% purposes they have
% identical author-year
% combination, so ambiguity
% should be resolved by a's
% and b's. Check whether
% more authors were
% necessary for previous
% one.
%
change.add.to.year
cite.num.names.short
cite.num.names.old
<
{ cite.num.names.old
'cite.num.names.short
:=
}
'skip$
if$
}
if$
}
if$
}
if$
}
{ %
% Different 5th author: citing 5 authors is
% sufficient for this comparison.
%
cite.num.names.short #5 <
{ #5 'cite.num.names.short := }
'skip$
if$
}
if$
}
if$
}
if$
}
{ %
% Different 4th author: citing 4 authors is
% sufficient for this comparison.
%
cite.num.names.short #4 <
{ #4 'cite.num.names.short := }
'skip$
if$
}
if$
}
if$
}
if$
}
{ %
% Different 3rd author: citing 3 authors is sufficient for this
% comparison.
%
cite.num.names.short #3 <
{ #3 'cite.num.names.short := }
'skip$
if$
}
if$
}
{ %
% Different 2nd author: citing 2 authors is sufficient for this
% comparison.
%
cite.num.names.short #2 <
{ #2 'cite.num.names.short := }
'skip$
if$
}
if$
}
{ %
% Different first author: no ambiguity, move to next entry.
%
skip$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {definitive.cite.num.names.field}
{ 'field :=
field num.names$ 'numnames :=
%
% Format authors
%
format.6.authors
%
% Now compare authors with authors of previous entry.
%
cite.num.names.short numnames.old >
{ %
% The previous entry has less authors than already defined
% necessary to be cited. No ambiguity is possible and we're ready.
%
skip$
}
{ %
% Both previous and current entry have at least one author .
%
year.label year.label.old =
{ %
% Same year label: possibly ambiguous citation.
%
% First check: current and/or previous have 1 or
% 2 authors.
%
numnames #3 <
numnames.old #3 <
or
%
{ definitive.cite.num.names.1.or.2 }
{ definitive.cite.num.names.3.or.more }
if$
}
{ %
% Different year label: everything's fine,
% move to next entry.
%
skip$
}
if$
}
if$
%
% If during the previous process the name maximum is exceeded
% (which was not checked), correct this. NOTE: If the name
% maximum is smaller than 6, this could lead to ambiguous
% citations if, e.g., the year and the first 5 authors are
% the same, but the 6th author is different.
%
cite.num.names.short name.max >
{ name.max 'cite.num.names.short := }
'skip$
if$
%
% For a "full" cite, the number of names should always be at least
% as large as for a "short" cite.
%
cite.num.names.full cite.num.names.short <
{ cite.num.names.short 'cite.num.names.full := }
'skip$
if$
%
% Update "old" variables for next entry.
%
update.cite.num.names
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {definitive.cite.no.names}
{ %
% The formatted field that acts as author is on top
% of the stack.
'aut1f :=
"" 'aut2 :=
"" 'aut3 :=
"" 'aut4 :=
"" 'aut5 :=
"" 'aut6 :=
#1 'numnames :=
%
year.label year.label.old =
{ %
% Same year label: possibly ambiguous citation.
%
definitive.cite.num.names.1.or.2
}
{ %
% Different year label: everything's fine,
% move to next entry.
%
skip$
}
if$
%
% Update "old" variables for next entry.
%
update.cite.num.names
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {definitive.cite.num.names}
{ %
% Check whether author or editor or other field acts as author.
% Number of names is only relevant with author or editor.
%
firstkey empty$ not
{ firstkey sortify remove.spaces definitive.cite.no.names }
{ key empty$ not
{ key sortify remove.spaces definitive.cite.no.names }
{ %
% No key or firstkey, so find out which field
% to use as author.
%
% Check reference type:
% if result is 1 then possibly editor acts as author
% 2 then editor does not act as author
% 3 then key should have been used
% 0 then unknown reference type
ref.type #2 =
{ %
% Format first author with and without initials
author empty$
{ title.sort.label definitive.cite.no.names }
{ author definitive.cite.num.names.field }
if$
}
{ %
% Format first author with and without initials
author empty$
{ editor empty$
{ title.sort.label definitive.cite.no.names }
{ editor definitive.cite.num.names.field }
if$
}
{ author definitive.cite.num.names.field }
if$
}
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.tentative.year.sort.label}
{ %
% Implicit or explicit ``no date'' is put at the front
% (the year zero; years B.C. will imply complications)
% because these are possibly old works.
% ``In press'' is put at the end.
%
year empty$
{ "0000" 'year.label := }
{ year "\bibnodate" =
year "l" change.case$ "no date" = or
year "l" change.case$ "n.d." = or
{ "0000" 'year.label := }
{ year "\BIP" =
year "l" change.case$ "in press" = or
year "l" change.case$ "forthcoming" = or
{ "9999" 'year.label := }
{ % It is not checked whether the year field
% makes sense.
year sortify remove.spaces 'year.label :=
}
if$
}
if$
}
if$
%
% Push year sort label on the stack
year.label
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {month.number.day}
{ month empty$
{ "" }
{ month sortify remove.spaces
%
% Add the day when available.
day empty$
'skip$
{ "/" *
day sortify remove.spaces *
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.name.sort.label}
{ %
% Author or editor-acting-as-author available.
% => Make tentative "short cite with initials" author
% label (L1) of one of the forms
% "Last1 F1"
% "Last1 F1 Last2"
% "Last1 F1 zzzz" ("zzzz" representing et al.)
% => If more than 2 'authors': make label (L2) for 2nd-6th authors
% of one of the forms
% "Last2 Last3"
% "Last2 Last3 Last4"
% "Last2 Last3 Last4 Last5"
% "Last2 Last3 Last4 Last5 Last6"
% "Last2 Last3 Last4 Last5 Last6 zzzz"
%
% Then format year label (L3) of one of the forms:
% "0000" (missing year or explicit 'no date')
% "9999" ('in press')
% year (otherwise; don't use originalyear here yet)
%
% From earlier sorting of titles, we have title number. Convert
% to string, which gives title label (L4) .
%
% Then tentative sorting label (author.year.sort.label) is a
% concatenation of
% L1
% " "
% L3
% " "
% L2
% " "
% L4
%
% The name field is on top of the stack.
'field :=
%
% numnames is the total number of names contained in field
field num.names$ 'numnames :=
%
% Format first author
field #1 sort.name.format format.name$
%
% Format the second author if there are two, or else "zzzz" = et al.
numnames #1 =
'skip$
{ numnames #2 =
{ %
% Two authors: format second author
field #2 "{ll{}}" format.name$ 's :=
s "others" =
{ " zzzz" * } % Add "et al."-substitute
{ " " * s * } % Add second author
if$
}
{ " zzzz" * } % 3 or more authors: add "et al."-substitute
if$
}
if$
" " * % Add spaces
make.tentative.year.sort.label * % Add year (L3).
" " * % Add spaces
%
% Now build up L2 if applicable
numnames #3 <
'skip$
{ %
% Treat last author slightly differently
numnames name.max >
{ name.max 'lastname :=
" zzzz" % Push "et al."-substitute on stack
}
{ numnames 'lastname :=
"" % Push empty string on stack
}
if$
%
% Names 2 to "last" - 1
"" % Push empty string on stack
#2 'nameptr :=
{ nameptr lastname < }
{ % Add name no. nameptr
field nameptr "{ll{}}" format.name$ *
" " *
nameptr #1 + 'nameptr :=
}
while$
%
% "Last" author
field lastname "{ll{}}" format.name$ 's :=
s "others" =
{ "zzzz" * } % Add "et al."-substitute
{ s * } % Add last author
if$
%
swap$ * % Add the previously formatted empty string or
% "et al."-substitute if there are many authors.
* % Add L2 to the earlier labels.
}
if$
%
" " * % Add spaces
title.number conv.int.to.str * % Add sorted title number (L4).
sortify % Clean up and convert to lowercase
" " * % Add spaces
month.number.day * % Add month and day when available
'author.year.sort.label := % Assign result to sort label.
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.field.year.sort.label}
{ %
% 'field' acts as first author (L1), subsequent authors
% are empty (L2).
%
% Then format year label (L3) of one of the forms:
% "0000" (missing year or explicit 'no date')
% "9999" ('in press')
% year (otherwise; don't use originalyear here yet)
%
% From earlier sorting of titles, we have title number. Convert
% to string, which gives title label (L4) .
%
% Then tentative sorting label (author.year.sort.label) is a
% concatenation of
% L1
% " "
% L3
% " "
% L2
% " "
% L4
%
% 'field' is on top of the stack. It is already supposed to be cleaned
% (i.e., sortified and space-removed), so this is already L1.
" " * % Add spaces to L1
make.tentative.year.sort.label * % Add year (L3).
" " * % Add spaces
" " * % L2 is empty, add spaces
title.number conv.int.to.str * % Add sorted title number (L4).
sortify % Clean up and convert to lowercase
" " * % Add spaces
month.number.day * % Add month and day when available
'author.year.sort.label := % Assign result to sort label.
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.author.editor.sort.label}
{ author empty$
{ editor empty$
{ %
% Use what has previously been stored in title.sort.label
% as author substitute .
title.sort.label make.field.year.sort.label
}
{ editor make.name.sort.label }
if$
}
{ author make.name.sort.label }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.author.sort.label}
{ author empty$
{ %
% Use what has previously been stored in title.sort.label
% as author substitute .
title.sort.label make.field.year.sort.label
}
{ author make.name.sort.label }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.tentative.sort.label}
{ %
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% General strategy:
%
% Ordinary situation: author or editor-acting-as-author
% available.
% => Make tentative "short cite with initials" author
% label (L1) of one of the forms
% "Last1 F1"
% "Last1 F1 Last2"
% "Last1 F1 zzzz" ("zzzz" representing et al.)
% => If more than 2 'authors': make label (L2) for 2nd-6th authors
% of one of the forms
% "Last2 Last3"
% "Last2 Last3 Last4"
% "Last2 Last3 Last4 Last5"
% "Last2 Last3 Last4 Last5 Last6"
% "Last2 Last3 Last4 Last5 Last6 zzzz"
% When key is available (overrules author and editor fields):
% => L1 = key, L2 = ""
% No author, editor, and key: define title or substitute as key
% and format as key.
%
% Then format year label (L3) of one of the forms:
% "0000" (missing year or explicit 'no date')
% "9999" ('in press')
% year (otherwise; don't use originalyear here yet)
%
% From earlier sorting of titles, we have title number. Convert
% to string, which gives title label (L4) .
%
% Then tentative sorting label (author.year.sort.label) is a
% concatenation of
% L1
% " "
% L3
% " "
% L2
% " "
% L4
%
% This can then be sorted, from which it can be derived
% whether initials are necessary, how many names must
% be used for short and full citations, and whether "a"'s and
% "b"'s etc. are necessary behind the year labels.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% key and firstkey overrule author information
%
firstkey empty$ not
{ key empty$ not
{ %
% Both key and firstkey available:
% for sorting and checking initials, treat key as last
% name and firstkey as initials.
%
key sortify remove.spaces
" " *
firstkey sortify remove.spaces *
make.field.year.sort.label
}
{ firstkey sortify remove.spaces make.field.year.sort.label }
if$
}
{ key empty$ not
{ key sortify remove.spaces make.field.year.sort.label }
{ %
% No key or firstkey, so find out which field
% to use as author.
%
% Check reference type:
% if result is 1 then possibly editor acts as author
% 2 then editor does not act as author
% 3 then key should have been used
% 0 then unknown reference type
ref.type
duplicate$ #1 =
{ pop$
make.author.editor.sort.label
}
{ duplicate$ #2 =
{ pop$
make.author.sort.label
}
{ #3 =
{ "no key in " cite$ * warning$
make.author.editor.sort.label
}
{ make.author.editor.sort.label }
if$
}
if$
}
if$
}
if$
}
if$
%
author.year.sort.label 'sort.key$ :=
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.definitive.name.sort.label}
{ %
% Author or editor-acting-as-author available.
% => Make author-with-initials label (L1) of one of the forms
% "Last1 F1 Last2 F2 ... LastN FN"
% "Last1 F1 Last2 F2 ... Last6 F6 zzzz"
% (where N <= 6 is the total number of authors, and
% "zzzz" represents et al. if there are more than 6 authors)
% No author, editor, and key: define title or substitute as sort key.
%
% The name field is on top of the stack.
'field :=
%
% numnames is the total number of names contained in field
field num.names$ 'numnames :=
%
% If there are more than 6 authors, only 6 are mentioned.
numnames name.max >
{ name.max 'format.num.names := }
{ numnames 'format.num.names := }
if$
% Initialize stack with empty string
""
%
% Cycle over authors.
#1 'nameptr :=
{ nameptr format.num.names < }
{ % Format author and add spaces
field nameptr sort.name.format format.name$ *
" " *
nameptr #1 + 'nameptr :=
}
while$
% Format last author that must be formatted
field nameptr sort.name.format format.name$ *
% Add et al. if necessary
nameptr numnames <
{ " zzzz" * }
'skip$
if$
sortify % Clean up and change case
" " * % Add spaces
year.label * % Add year
" " * % Add spaces
title.number conv.int.to.str * % Add sorted title number
" " * % Add spaces
month.number.day * % Add month and day when available
'author.year.sort.label := % Assign result to sort label.
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.definitive.field.year.sort.label}
{ %
% 'field' acts as author (L1).
%
% Then format year label (L2) of one of the forms:
% "0000" (missing year or explicit `no date')
% "9999" (`in press')
% year (otherwise; don't use originalyear here yet)
%
% From earlier sorting of titles, we have title number. Convert
% to string, which gives title label (L3) .
%
% Then tentative sorting label (author.year.sort.label) is a
% concatenation of
% L1
% " "
% L2
% " "
% L3
%
% 'field' is on top of the stack. It is already supposed to be cleaned
% (i.e., sortified and space-removed), so this is already L1.
" " * % Add spaces
year.label * % Add year
" " * % Add spaces
title.number conv.int.to.str * % Add sorted title number
" " * % Add spaces
month.number.day * % Add month and day when available
'author.year.sort.label := % Assign result to sort label.
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.definitive.author.editor.sort.label}
{ author empty$
{ editor empty$
{ %
% Use what has previously been stored in title.sort.label
% as author substitute .
title.sort.label make.definitive.field.year.sort.label
}
{ editor make.definitive.name.sort.label }
if$
}
{ author make.definitive.name.sort.label }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.definitive.author.sort.label}
{ author empty$
{ %
% Use what has previously been stored in title.sort.label
% as author substitute .
title.sort.label make.definitive.field.year.sort.label
}
{ author make.definitive.name.sort.label }
if$
}
FUNCTION {make.final.sort.key}
{ ref.type #2 =
{ make.definitive.author.sort.label }
{ make.definitive.author.editor.sort.label }
if$
unsorted
{ citeorder.sort.label 'sort.key$ := }
{ author.year.sort.label 'sort.key$ := }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {chop.word}
{ 's :=
'len :=
s #1 len substring$ =
{ s len #1 + global.max$ substring$ }
{ s }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {chop.articles}
{ 's :=
"a " #2
"an " #3
"the " #4
s
chop.word
chop.word
chop.word
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.sort.title}
{ %
% Remove non-alphanumeric characters and change to lower case .
sortify
%
% Remove "a ", "an ", and "the " from the front .
chop.articles #1 entry.max$ substring$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.sort.title}
{ title empty$
{ text empty$
{ type empty$
{ howpublished empty$
{ note empty$
{ url empty$
{ " " }
{ url format.sort.title }
if$
}
{ note format.sort.title }
if$
}
{ howpublished format.sort.title }
if$
}
{ type format.sort.title }
if$
}
{ text format.sort.title }
if$
}
{ title format.sort.title }
if$
remove.spaces
'title.sort.label :=
title.sort.label 'sort.key$ :=
}
FUNCTION {make.title.number}
{ title.sort.label old.label =
{
old.number 'title.number :=
}
{
old.number #1 + 'title.number :=
title.number 'old.number :=
title.sort.label 'old.label :=
}
if$
}
FUNCTION {make.citeorder.number}
{ old.number #1 + 'cite.order :=
cite.order 'old.number :=
cite.order conv.int.to.str 'citeorder.sort.label :=
}
FUNCTION {last.part.name.format.classic} { "{ll}" }
FUNCTION {von.junior.name.format.classic} { "{ vv}{, jj}" }
FUNCTION {last.part.name.format} { "{vv }{ll}" }
FUNCTION {initials.with.space.name.format} { "{f.}" }
FUNCTION {von.last.junior.name.format} { "{vv }{ll}{ jj}" }
FUNCTION {von.junior.name.format} { "{, jj}" }
FUNCTION {one.complete.name.format} { "{vv }{ll}{, jj}{, ff}" }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {string.length}
{ #0 'pos :=
% If the next character exists, i.e., is not empty,
% add 1 to the string length.
% We cannot use empty$ because " " empty$ is true.
{ duplicate$ pos #1 + #1 substring$ "" = not }
{ pos #1 + 'pos := }
while$
pop$ pos
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {transform.spaces.and.hyphens}
{ 's := % The original string
s string.length 'len := % Its length (no. of characters)
"" 't := % Initialize the transformed string
#1 'pos :=
#0 'brace.level :=
%
% while (pos < len) do
%
{ pos len < }
{ % First, check whether we are at brace level 0
brace.level #0 =
{
% At least two characters left: check for ". ", ".~", and ".-".
% If so, replace and shift two positions.
s pos #2 substring$ ". " =
s pos #2 substring$ ".~" = or
{ t "." * 't :=
pos #2 + 'pos :=
}
{ s pos #2 substring$ ".-" =
{ t "\BHBI " * 't :=
pos #2 + 'pos :=
}
{ % neither is true, copy one character and shift one position
t s pos #1 substring$ * 't :=
% Check whether we need to increase brace level.
% Note that this is not sophisticated: it does not capture
% \{, \verb+}+, etc.
% Note also that unbalanced braces cause problems.
s pos #1 substring$ "{" =
{ brace.level #1 + 'brace.level := }
'skip$
if$
pos #1 + 'pos :=
}
if$
}
if$
}
{ % Not at brace level 0: copy result literally
t s pos #1 substring$ * 't :=
% Check whether we need to increase or decrease brace level.
% Note that this is not sophisticated: it does not capture
% \{, \verb+}+, etc.
s pos #1 substring$ "{" =
{ brace.level #1 + 'brace.level := }
{ s pos #1 substring$ "}" =
{ brace.level #1 - 'brace.level := }
'skip$
if$
}
if$
pos #1 + 'pos :=
}
if$
}
while$
%
pos len =
{ % Last character, copy
t s pos #1 substring$ * 't :=
}
{ % pos = len + 1, so s ends with ". " or ".-"
% This should not have happened, but make the best out of it.
% Push last two characters of s on the stack, i.e., ". " or ".-".
s len #1 - #2 substring$
% Remove "\BPBI " or "\BHBI " from t
t text.length$ 'len := % Length of t (no. of characters)
t #1 len #6 - substring$
% Concatenate and assign to t
swap$ * 't :=
}
if$
%
% Now push the result back on the stack
t
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.initials.with.hyphen}
{ % Format initials.
% Call with
% field authornumber format.initials.with.hyphen
% e.g.
% author #1 format.initials.with.hyphen
% Instead of field, a string may also be used.
%
% First, format initials in the default way, retaining spaces
% and hyphens.
initials.with.space.name.format format.name$
transform.spaces.and.hyphens
}
FUNCTION {format.last.part.name}
{ % Format a name with last.part.name.format,
% as part of more complicated things.
% Call with
% field authornumber format.last.part.name
% e.g.
% author #1 format.last.part.name
% Instead of field, a string may also be used.
last.part.name.format format.name$
}
FUNCTION {format.von.last.junior.name}
{ % Format a name with von.last.junior.name.format,
% for citing or as part of more complicated things.
% Call with
% field authornumber format.von.last.junior.name
% e.g.
% author #1 format.von.last.junior.name
% Instead of field, a string may also be used.
von.last.junior.name.format format.name$
}
FUNCTION {format.von.junior.name}
{ % Format a name with von.last.junior.name.format,
% for citing or as part of more complicated things.
% Call with
% field authornumber format.von.junior.name
% e.g.
% author #1 format.von.junior.name
% Instead of field, a string may also be used.
von.junior.name.format format.name$
}
FUNCTION {format.cite.initials.name}
{ % Format a name for citing with initials.
% Call with
% field authornumber format.cite.initials.name
% e.g.
% author #1 format.cite.initials.name
% Instead of field, a string may also be used.
%
% First, extract the complete name, format it in the canonical form,
% and push on the stack.
one.complete.name.format format.name$
%
% Format the initials and push on the stack.
duplicate$ #1 format.initials.with.hyphen
%
% Format the von-last-junior part and push on the stack.
swap$ #1 format.von.last.junior.name
%
% Connect with "~" hyphen (if they're both non-empty).
"~" connect.check
}
FUNCTION {format.author.name}
{ % Format an author name for the reference list.
% Call with
% field authornumber format.author.name
% e.g.
% author #1 format.author.name
% Instead of field, a string may also be used.
%
% First, extract the complete name, format it in the canonical form,
% and push on the stack.
one.complete.name.format format.name$
%
% Make two copies of the name, format the last name and push on the stack.
duplicate$ duplicate$ #1 format.last.part.name
%
% Format the initials and push on the stack.
swap$ #1 format.initials.with.hyphen
%
% Connect with last name.
connect.with.comma.check
%
% Format the von-junior part and connect with initials.
swap$ #1 format.von.junior.name "" connect.check
}
FUNCTION {format.editor.name}
{ % Format a name for the reference list as an editor.
% Call with
% field authornumber format.editor.name
% e.g.
% author #1 format.editor.name
% Instead of field, a string may also be used.
%
format.cite.initials.name
}
FUNCTION {format.index.name}
{ % Format an author name for the index.
% Call with
% field authornumber format.index.name
% e.g.
% author #1 format.index.name
% Instead of field, a string may also be used.
%
format.author.name
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {comma.between.two} { "\BCBT {}" }
FUNCTION {comma.between.names} { ", " }
FUNCTION {comma.before.last} { "\BCBL {}" }
FUNCTION {dots.before.last} { "\BDBL {}" }
FUNCTION {and.before.last} { "\ \BBA {} " }
FUNCTION {no.and.before.last} { " " }
FUNCTION {et.al.string.cite} { "\ \protect \BOthers {.}" }
FUNCTION {et.al.string} { "\ \BOthers {.}" }
FUNCTION {et.al.string.period} { "\ \BOthersPeriod {.}" }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {add.name.index}
{ %
%
make.index
{ "%" * write$ newline$
% Check for corporate author
field is.bibcorporate
{ "\corporateAX{" }
{ "\AX{" }
if$
write$
field nameptr sort.name.format format.name$ sortify write$ newline$
"@" write$
field nameptr format.index.name
"}%" * write$ newline$
}
{ "%" * write$ newline$ }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.name.cite.label}
{ 'field :=
'format.num.names :=
%
field num.names$ 'numnames := % numnames is the total number of names
% contained in field
%
% It is implicit in the APA manual that if "et al." would refer
% to exactly one author, then this author should be named
% instead of "et al."
%
format.num.names numnames #1 - =
{ numnames 'format.num.names := }
'skip$
if$
%
% Format first author: with or without initials
%
#1 'nameptr :=
cite.initials #1 =
{ field nameptr format.cite.initials.name }
{ field nameptr cite.name.format format.name$ }
if$
add.name.index % Add index entry when desired.
%
numnames #1 =
'skip$
{ format.num.names #1 =
{ %
% First author et al.
%
et.al.string.cite write$
}
{ numnames #2 =
{ %
% Given that format.num.names > 1, it is 2.
% Format second author.
%
#2 'nameptr :=
field nameptr cite.name.format format.name$ 's :=
%
% Check if 2nd author is explicit "others".
% If so, insert "et al." string.
%
s "others" =
{ et.al.string.cite write$ } % First et al.
{ %
% First \& Second
%
and.before.last write$
s
add.name.index % Add index entry when desired.
}
if$
}
{ %
% 3 or more names, 2 or more must be cited
%
% for nameptr := 2 to format.num.names - 1 do
%
#2 'nameptr :=
{ nameptr format.num.names < }
{ %
% Put comma between consecutive authors
%
comma.between.names write$
%
% Format and add next author
%
field nameptr cite.name.format format.name$
add.name.index % Add index entry when desired.
%
% Move to next author
%
nameptr #1 + 'nameptr :=
}
while$
%
% nameptr = format.num.names
% Format this author.
%
field nameptr cite.name.format format.name$ 's :=
%
format.num.names numnames =
{ %
% This is also the last author. Add (optional) comma.
%
comma.before.last write$
%
% Check if this author is explicit "others".
% If so, insert "et al." string.
%
s "others" =
{ et.al.string.cite write$ }
{ and.before.last write$
s
add.name.index % Add index entry when desired.
}
if$
}
{ %
% This is not the last author.
% Add comma, author name, and "et al."
%
comma.between.names write$
s
add.name.index % Add index entry when desired.
%
comma.before.last et.al.string.cite * write$
}
if$
}
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.title.cite.label}
{ %
% Formatting: check if formatted as article title or
% as book title, and insert this formatting.
%
is.atype
{ "\APACciteatitle {" }
{ "\APACcitebtitle {" }
if$
%
title empty$
{ text empty$
{ type empty$
{ howpublished empty$
{ note empty$
{ url empty$
{ cite$ }
{ url }
if$
}
{ note }
if$
}
{ howpublished }
if$
}
{ type }
if$
}
{ text }
if$
}
{ title }
if$
%
% Connect with formatting.
%
* "}" *
%
% Write to output
%
write$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.author.editor.cite.label}
{ author empty$
{ editor empty$
{ %
% No author or editor:
% Use title or other description as citation label.
%
make.title.cite.label
"}{%" write$ newline$
make.title.cite.label
}
{ cite.num.names.full editor make.name.cite.label
"}{%" write$ newline$
cite.num.names.short editor make.name.cite.label
}
if$
}
{ cite.num.names.full author make.name.cite.label
"}{%" write$ newline$
cite.num.names.short author make.name.cite.label
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.author.cite.label}
{ author empty$
{ %
% No author:
% Use title or other description as citation label.
%
make.title.cite.label
"}{%" write$ newline$
make.title.cite.label
}
{ cite.num.names.full author make.name.cite.label
"}{%" write$ newline$
cite.num.names.short author make.name.cite.label
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.definitive.year.supplement}
{ %
% Add "a", "b", etc. when necessary.
%
add.to.year #0 =
{ "" }
{ "{\protect "
year empty$
{ "\BCntND " * }
{ year "\bibnodate" =
year "l" change.case$ "no date" = or
year "l" change.case$ "n.d." = or
{ "\BCntND " * }
{ year "\BIP" =
year "l" change.case$ "in press" = or
year "l" change.case$ "forthcoming" = or
{ "\BCntIP " * }
{ "\BCnt " * }
if$
}
if$
}
if$
"{" * add.to.year int.to.str$ * "}}" *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {protect.year}
{ year empty$
{ "{\protect \bibnodate {}}" }
{ year "\bibnodate" =
year "l" change.case$ "no date" = or
year "l" change.case$ "n.d." = or
{ "{\protect \bibnodate {}}" }
{ year "\BIP" =
year "l" change.case$ "in press" = or
year "l" change.case$ "forthcoming" = or
{ "{\protect \BIP {}}" }
{ year }
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.definitive.year.label}
{ "{\protect \APACyear {"
originalyear empty$
{ protect.year }
{ originalyear "\bibnodate" = % date of original publication unknown
originalyear "l" change.case$ "no date" = or
originalyear "l" change.case$ "n.d." = or
{ translator empty$
{ protect.year }
{ "{\protect \BTRANSL {}}~" protect.year * }
if$
}
{ year empty$
{ originalyear "/{\protect \bibnodate {}}" * } % 1923/n.d.
{ originalyear year =
{ protect.year }
{ originalyear "/" * protect.year * } % 1923/1961
if$
}
if$
}
if$
}
if$
* "}}%" * write$ newline$
%
% Add "a", "b", etc. when necessary.
%
"{\protect \APACexlab {" "}}"
make.definitive.year.supplement enclose.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {make.cite.labels}
{ newline$
%
% Write a few lines for testing purposes.
%
test
{ "\bibitem [] {} \fullciteA {" cite$ * "}" * write$ newline$
"\bibitem [] {} \citeA {" cite$ * "}" * write$ newline$
}
'skip$
if$
%
"\bibitem [\protect \citeauthoryear {%" write$ newline$
%
% When key or firstkey is available, this takes precedence.
%
firstkey empty$ not
{ %
% Full cite: firstkey.
%
firstkey write$
"}{%" write$ newline$
%
% Short cite: if key is not empty and cite.initials is 0,
% then key, else firstkey.
%
cite.initials #0 =
key empty$ not
and
{ key }
{ firstkey }
if$
write$
}
{ key empty$ not
{ %
% No firstkey, but key available:
% Both full and short labels are key.
%
key write$
"}{%" write$ newline$
key write$
}
{ % No key or firstkey, so find out which field
% to use as author.
%
% Check reference type:
% if result is 1 then possibly editor acts as author
% 2 then editor does not act as author
% 3 then key should have been used
% 0 then unknown reference type
ref.type #2 =
{ make.author.cite.label }
{ make.author.editor.cite.label }
if$
}
if$
}
if$
"}{%" write$ newline$
%
% Make year label that's used for citations
%
make.definitive.year.label write$
"}]{%" write$ newline$
cite$ write$
"} " write$ newline$
% author.year.sort.label write$ newline$ % for testing purposes
% year.label write$ newline$ % for testing purposes
%
% If the item is used in a meta-analysis, indicate this with
% a star.
%
"\APACinsertmetastar {%" write$ newline$
cite$ write$
"}%" write$ newline$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {editor.postfix}
{ editor num.names$ #1 >
{ "(\BEDS)" }
{ "(\BED)" }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {editor.trans.postfix}
{ editor num.names$ #1 >
{ "(\BEDS{} \BAnd{} \BTRANSS)" }
{ "(\BED{} \BAnd{} \BTRANS)" }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% "(Trans.)" postfix
% translator must not be empty
%
FUNCTION {trans.postfix}
{ translator num.names$ #1 >
{ "(\BTRANSS)" }
{ "(\BTRANS)" }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {authors.editors.reflist.apa5}
{ 'field :=
'dot :=
%
field num.names$ 'numnames := % numnames is the total number of names
% contained in field
numnames 'format.num.names := % Format all authors
format.num.names name.max > % Unless this exceeds the maximum of 6.
{ dot
{ name.max 'format.num.names := } % Format 6 authors
{ cite.num.names.full 'format.num.names := } % Format 1 editor
if$
}
'skip$
if$
%
% Enclose authors in APACrefauthors environment to allow crude style
% options in \LaTeX.
"\begin{APACrefauthors}%"
write$ newline$
%
% It is kind of explicit in the APA manual that if "et al." would
% refer to exactly one author (the 7th), then this author should
% still be replaced by "et al.", unlike with citations.
% So format.num.names is not adapted.
%
% Format first author
%
#1 'nameptr :=
field nameptr format.author.name
%
% Add period if required and if this is the only author.
%
numnames #1 =
dot
and
{ add.period$ }
'skip$
if$
add.name.index % Add index entry when desired.
%
numnames #1 =
'skip$
{ format.num.names #1 =
{ %
% First author et al.
%
comma.between.two
%
% Add period if required.
%
dot
{ et.al.string.period * }
{ et.al.string * }
if$
write$
}
{ numnames #2 =
{ %
% Given that format.num.names > 1, it is 2.
%
comma.between.two write$
%
% Format second author.
%
#2 'nameptr :=
field nameptr format.author.name 's :=
%
% Check if 2nd author is explicit "others".
% If so, insert "et al." string.
%
s "others" =
{ %
% First et al.
% Add period if required.
%
dot
{ et.al.string.period }
{ et.al.string }
if$
write$
}
{ %
% First \& Second
%
and.before.last write$
%
% Add period if required.
%
dot
{ s add.period$ }
{ s }
if$
add.name.index % Add index entry when desired.
}
if$
}
{ %
% 3 or more names, 2 or more must be cited
%
% for nameptr := 2 to format.num.names - 1 do
%
#2 'nameptr :=
{ nameptr format.num.names < }
{ %
% Put comma between consecutive authors
%
comma.between.names write$
%
% Format and add next author
%
field nameptr format.author.name
add.name.index % Add index entry when desired.
%
% Move to next author
%
nameptr #1 + 'nameptr :=
}
while$
%
% nameptr = format.num.names
% Format this author.
%
field nameptr format.author.name 's :=
%
format.num.names numnames =
{ %
% This is also the last author. Add (optional) comma.
%
comma.before.last write$
%
% Check if this author is explicit "others".
% If so, insert "et al." string.
%
s "others" =
{ %
% Add period if required.
%
dot
{ et.al.string.period }
{ et.al.string }
if$
write$
}
{ and.before.last write$
%
% Add period if required.
%
dot
{ s add.period$ }
{ s }
if$
add.name.index % Add index entry when desired.
}
if$
}
{ %
% This is not the last author.
% Add comma, author name, and "et al."
%
comma.between.names write$
s
add.name.index % Add index entry when desired.
%
comma.before.last
%
% Add period if required.
%
dot
{ et.al.string.period * }
{ et.al.string * }
if$
write$
}
if$
}
if$
}
if$
}
if$
%
% End APACrefauthors environment.
"\end{APACrefauthors}%"
write$ newline$
}
FUNCTION {authors.reflist.apa6}
{ 'field :=
'dot :=
field num.names$ 'numnames :=
numnames #7 >
{ #7 'format.num.names := }
{ numnames 'format.num.names := }
if$
"\begin{APACrefauthors}%"
write$ newline$
#1 'nameptr :=
field nameptr format.author.name
numnames #1 =
{ dot
{ %add.period$
}
'skip$
if$
add.name.index
}
{ add.name.index
numnames #2 =
{ comma.between.two write$
#2 'nameptr :=
field nameptr format.author.name 's :=
s "others" =
{ "`others' not consistent with 6th ed. of the APA Manual"
warning$
dot
{ et.al.string.period }
{ et.al.string }
if$
write$ newline$
}
{ and.before.last write$
dot
{ s add.period$ }
{ s }
if$
add.name.index
}
if$
}
{ %% for nameptr := 2 to format.num.names - 1 do
#2 'nameptr :=
{ nameptr format.num.names < }
{ comma.between.names write$
field nameptr format.author.name
add.name.index
nameptr #1 + 'nameptr :=
}
while$
field numnames format.author.name 's :=
format.num.names numnames =
{ comma.before.last write$
s "others" =
{ "`others' not consistent with 6th ed. of the APA "
"Manual" *
warning$
dot
{ et.al.string.period }
{ et.al.string }
if$
write$
}
{ no.and.before.last write$
dot
{ s add.period$ }
{ s }
if$
add.name.index
}
if$
}
{ dots.before.last write$
s
add.name.index
}
if$
}
if$
}
if$
"\end{APACrefauthors}%"
write$ newline$
}
FUNCTION {format.author.names}
{ 'field :=
'dot :=
dot
{ dot field authors.reflist.apa6 }
{ dot field authors.editors.reflist.apa5 }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.authors}
{ #1 author format.author.names }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.editors.as.authors}
{ #0 editor format.author.names
"\ " editor.postfix * add.period$ write$ newline$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.ed.trans.as.authors}
{ #0 editor format.author.names
"\ " editor.trans.postfix * add.period$ write$ newline$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.editor.names}
{ 'field :=
%
field num.names$ 'numnames := % numnames is the total number of names
% contained in field
numnames 'format.num.names := % Format all authors
format.num.names name.max > % Unless this exceeds the maximum of 6.
{ #1 'format.num.names := } % Then it becomes 1 (First et al.)
'skip$
if$
%
% Format first editor
%
field #1 format.editor.name
%
numnames #1 =
'skip$
{ format.num.names #1 =
{ et.al.string * } % First editor et al., no comma.
{ numnames #2 =
{ %
% Given that format.num.names > 1, it is 2.
% No comma. Format second editor.
%
field #2 format.editor.name 's :=
%
% Check if 2nd editor is explicit "others".
% If so, insert "et al." string.
%
s "others" =
{ et.al.string * } % First et al.
{ and.before.last * s * } % First \& Second
if$
}
{ %
% 3 or more names, 2 or more must be cited
%
% for nameptr := 2 to format.num.names - 1 do
%
#2 'nameptr :=
{ nameptr format.num.names < }
{ %
% Put comma between consecutive editors
%
comma.between.names *
%
% Format and add next editor
%
field nameptr format.editor.name *
%
% Move to next editor
%
nameptr #1 + 'nameptr :=
}
while$
%
% nameptr = format.num.names
% Format this editor.
%
field nameptr format.editor.name 's :=
%
format.num.names numnames =
{ %
% This is also the last editor. Add (optional) comma.
%
comma.before.last *
%
% Check if this editor is explicit "others".
% If so, insert "et al." string.
%
s "others" =
{ et.al.string * }
{ and.before.last * s * }
if$
}
{ %
% This is not the last editor.
% Add comma, editor name, and "et al."
%
comma.between.names * s *
comma.before.last * et.al.string *
}
if$
}
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format editors in case editors do not act as authors
% (such as reference to chapter in edited book)
%
% L. W. Poon (Ed.) (1 editor)
% or
% A. S. Gurman \& D. P. Kniskern (Eds.) (2 editors)
% or
% L. Poon, A. Jones, \& D. P. Smith (Eds.) (>2 editors)
%
% editor must not be empty
%
FUNCTION {format.editors.in.line}
{ editor format.editor.names
editor.postfix connect.with.space.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format editors in case editors are also translators
% and do not act as authors
% (such as reference to chapter in edited book
% of translated articles)
%
% L. W. Poon (Ed. and Trans.) (1 editor)
% or
% A. S. Gurman \& D. P. Kniskern (Eds. and Trans.) (2 editors)
% or
% L. Poon, A. Jones, \& D. P. Smith (Eds. and Trans.) (>2 editors)
%
% editor must not be empty
%
FUNCTION {format.editors.trans.in.line}
{ editor format.editor.names
editor.trans.postfix connect.with.space.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format translators in case translators act as editors
% (such as reference to chapter in translated book)
%
% L. W. Poon (Trans.) (1 translator)
% or
% A. S. Gurman \& D. P. Kniskern (Trans.) (2 translators)
% or
% L. Poon, A. Jones, \& D. P. Smith (Trans.) (>2 translators)
%
% translator must not be empty
%
FUNCTION {format.translators.in.line}
{ translator format.editor.names
trans.postfix connect.with.space.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format translators in case translator does not act as editor
% (such as reference to translated book)
%
% L. Solotaroff, Trans.
%
FUNCTION {format.translators.in.paren.check}
{ translator empty$
{ "" }
{ translator format.editor.names
translator num.names$ #1 >
{ ", \BTRANSS{}" * }
{ ", \BTRANS{}" * }
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format editors and translators in case neither act as editor
% (such as reference to edited or translated book with a
% a single author)
%
% L. Solotaroff, Ed.
% L. Solotaroff, Ed. \& Trans.
% L. Solotaroff, Trans.
% L. Solotaroff, Ed. \& S. Prokofieff, Trans.
%
FUNCTION {format.editors.translators.in.paren.check}
{ editor empty$
{ translator empty$
{ "" }
{ translator format.editor.names
translator num.names$ #1 >
{ ", \BTRANSS{}" * }
{ ", \BTRANS{}" * }
if$
}
if$
}
{ editor format.editor.names
editor num.names$ #1 >
{ ", \BEDS{}" * }
{ ", \BED{}" * }
if$
translator empty$
'skip$
{ editor translator =
{ editor num.names$ #1 >
{ " \BAnd{} \BTRANSS" * }
{ " \BAnd{} \BTRANS" * }
if$
}
{ " \BAnd{} " *
translator format.editor.names *
translator num.names$ #1 >
{ ", \BTRANSS{}" * }
{ ", \BTRANS{}" * }
if$
}
if$
}
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% translator of article
%
FUNCTION {format.atrans.check}
{ format.translators.in.paren.check parenthesize.check }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format "In editor (Ed.), "
%
FUNCTION {format.in.editors}
{ "\BIn{} "
editor empty$
'skip$
{ format.editors.in.line * ", " * }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format "In translator (Trans.),"
%
FUNCTION {format.in.trans}
{ "\BIn{} "
translator empty$
'skip$
{ format.translators.in.line * ", " * }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format "In editor (Ed. and Trans.)"
% or "In editor (Ed.)" if editor not equal to translator
%
FUNCTION {format.in.editors.trans}
%{ "\BIn{} " Commented by SPI
{ " "
editor empty$
{ translator empty$
'skip$
{ format.translators.in.line * ", " * }
if$
}
{ translator empty$
{ format.editors.in.line * }
{ editor translator =
{ format.editors.trans.in.line * }
{ format.editors.in.line * }
if$
}
if$
", " *
}
if$
}
FUNCTION {in.format.in.editors.trans}
{ "\BIn{} "
editor empty$
{ translator empty$
'skip$
{ format.translators.in.line * ", " * }
if$
}
{ translator empty$
{ format.editors.in.line * }
{ editor translator =
{ format.editors.trans.in.line * }
{ format.editors.in.line * }
if$
}
if$
", " *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.year.check}
{ "\APACrefYear{"
protect.year *
%
% Add "a", "b", etc. when necessary.
%
make.definitive.year.supplement *
"}" *
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
FUNCTION {format.year.month.day.check}
{ "\APACrefYearMonthDay{"
protect.year *
%
% Add "a", "b", etc. when necessary.
%
make.definitive.year.supplement *
"}{" *
%
% Add month and day when present.
%
month empty$
'skip$
{ month * }
if$
"}{" *
day empty$
'skip$
{ day * }
if$
"}" *
}
FUNCTION {format.year.nomonth.day.check}
{ "\APACrefYearMonthDay{"
protect.year *
%
% Add "a", "b", etc. when necessary.
%
make.definitive.year.supplement *
"}{" *
%
% Add month and day when present.
%
month empty$
'skip$
{ }
if$
"}{" *
day empty$
'skip$
{ day * }
if$
"}" *
}
FUNCTION {format.atitle.no.dot}
{ "{\BBOQ}" swap$
"{\BBCQ}" swap$
duplicate$ empty$
'skip$
{ duplicate$
% Two arguments: Title twice: (1) don't change case; (2) change case
"\APACrefatitle {" swap$ * "} {" * swap$
"t" change.case$
* "}" *
}
if$
enclose.check
}
FUNCTION {format.atitle.dot}
{ "{\BBOQ}" swap$
"{\BBCQ}" swap$
duplicate$ empty$
'skip$
{ duplicate$
% Two arguments: Title twice: (1) don't change case; (2) change case
"\APACrefatitle {" swap$ * "} {" * swap$
"t" change.case$
* "}" * add.period$
}
if$
enclose.check
}
FUNCTION {format.atitle.connect}
{ swap$
duplicate$ empty$
{ pop$
format.atitle.dot
}
{ swap$
format.atitle.no.dot
swap$ connect.with.space.check
add.period$
}
if$
}
FUNCTION {format.btitle.no.dot}
{ duplicate$ empty$
{ pop$
""
}
{ duplicate$
% Two arguments: Title twice: (1) don't change case; (2) change case
"\APACrefbtitle {" swap$ * "} {" * swap$
"t" change.case$
* "}" *
}
if$
}
FUNCTION {format.btitle.dot}
{ duplicate$ empty$
{ pop$
""
}
{ add.period$ format.btitle.no.dot }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% title of book and similar
% field must be on top of stack
% second element on stack must be connected:
% if that is empty, then btitle.dot
% else btitle.no.dot, connect, and add period
%
FUNCTION {format.btitle.connect}
{ swap$
duplicate$ empty$
{ pop$
format.btitle.dot
}
{ swap$
format.btitle.no.dot
swap$ connect.with.space.check
add.period$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% title of book and similar
% field must be on top of stack
% second element on stack must be connected
%
FUNCTION {format.btitle.connect.no.dot}
{ swap$
duplicate$ empty$
{ pop$
format.btitle.no.dot
}
{ swap$
format.btitle.no.dot
swap$ connect.with.space.check
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format englishtitle (of nonenglish article, etc.)
%
FUNCTION {format.aetitle.check}
{ englishtitle empty$
{ "" }
{ % Two arguments: Title twice: (1) don't change case; (2) change case
"\APACrefaetitle {" englishtitle * "} {" *
englishtitle "t" change.case$ * "}" *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format englishtitle (of nonenglish book, etc.)
%
FUNCTION {format.betitle.check}
{ englishtitle empty$
{ "" }
{ % Two arguments: Title twice: (1) don't change case; (2) change case
"\APACrefbetitle {" englishtitle * "} {" *
englishtitle "t" change.case$ * "}" *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format type (of article, etc.)
%
FUNCTION {format.atype.check}
{ type bracket.check }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format title and englishtitle (of article, etc.)
%
FUNCTION {format.atitle.check}
{ format.aetitle.check
title format.atitle.connect
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format title, englishtitle, and type
% (of article, etc.)
%
FUNCTION {format.atitle.type.check}
{ format.aetitle.check
format.atype.check connect.with.space.check
title format.atitle.connect
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format title, englishtitle,
% and translator (of article, etc.)
%
FUNCTION {format.atitle.trans.check}
{ format.aetitle.check
format.atrans.check connect.with.space.check
title format.atitle.connect
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format title, englishtitle, type,
% and translator (of article, etc.)
%
FUNCTION {format.atitle.type.trans.check}
{ format.aetitle.check
format.atype.check connect.with.space.check
format.atrans.check connect.with.space.check
title format.atitle.connect
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format journal, volume, number and pages
% call with
% formatted.pages format.journal.vol.num.pages.check
%
FUNCTION { format.journal.vol.num.pages.check }
{ "journal" journal warning.if.empty
duplicate$ empty$
journal empty$ and
volume empty$ and
number empty$ and
{ pop$ "" }
{ "\APACjournalVolNumPages{" journal "" connect.check
"}{" * volume "" connect.check
"}{" * number "" connect.check
"}{" * swap$ "" connect.check
",}" *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% volume of book, checks whether
% "Volume" or "Volumes"
%
% call with
% field format.bvolume.check
%
FUNCTION {format.bvolume.check}
{ duplicate$ empty$
'skip$
{ duplicate$ multi.result.check
{ "\BVOLS" swap$ tie.or.space.connect }
{ "\BVOL" swap$ tie.or.space.connect }
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% edition of book, must not be empty
% call with
% field format.edition.check
%
FUNCTION {format.edition.check}
{ duplicate$ empty$
'skip$
{ "\PrintOrdinal{" swap$ * "}" *
"\BEd" connect.with.space.check
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% volume and edition of book
%
FUNCTION {format.bvol.edition.check}
{ edition format.edition.check
volume format.bvolume.check
connect.with.comma.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% volume and edition of book
%
FUNCTION {format.bvol.edition}
{ format.bvol.edition.check
parenthesize.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% volume and edition and translator of translated book
%
FUNCTION {format.bvol.edition.trans}
{ format.bvol.edition.check
format.translators.in.paren.check connect.with.semicolon.check
parenthesize.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% volume, edition, editor, and translator of (translated) book
%
FUNCTION {format.bvol.edition.editor.trans}
{ format.bvol.edition.check
format.editors.translators.in.paren.check connect.with.semicolon.check
parenthesize.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% formats pages by first checking if 1 or more pages
% and prefixing pages with "p." or "pp." (these strings
% are given in the commands \BPG and \BPGS, respectively),
% whichever is applicable, and do a tie or space connect
%
% call with
% field format.bpages.check
%
FUNCTION {format.bpages.check}
{ duplicate$ empty$
'skip$
{ duplicate$ multi.result.check
{ "\BPGS" swap$ tie.or.space.connect }
{ "\BPG~" swap$ * }
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% formats chapters by first checking if 1 or more chapters
% and prefixing pages with "chap." (this string
% is given in the commands \BCHAP and \BCHAPS, respectively),
% whichever is applicable, and do a tie or space connect
%
% call with
% field format.bchapter.check
%
FUNCTION {format.bchapter.check}
{ duplicate$ empty$
'skip$
{ duplicate$ multi.result.check
{ "\BCHAPS" swap$ tie.or.space.connect }
{ "\BCHAP" swap$ tie.or.space.connect }
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% volume, edition, and pages or chapter of article in book etc.
%
FUNCTION {format.bvol.edition.pages}
{ format.bvol.edition.check
pages empty$
{ chapter format.bchapter.check connect.with.comma.check }
{ pages format.bpages.check connect.with.comma.check }
if$
parenthesize.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% title, volume, edition of book
%
FUNCTION {format.btitle.vol.edition}
{ format.betitle.check
format.bvol.edition connect.with.space.check
title format.btitle.connect.no.dot
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% title, volume, edition, and translator of book
%
FUNCTION {format.btitle.vol.edition.trans}
{ format.betitle.check
format.bvol.edition.trans connect.with.space.check
title format.btitle.connect.no.dot
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% title, volume, edition, editor, and translator of book
%
FUNCTION {format.btitle.vol.edition.editor.trans}
{ format.betitle.check
format.bvol.edition.editor.trans connect.with.space.check
title format.btitle.connect.no.dot
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format address and publisher of book etc.
%
% New York: Wiley
% or
% Wiley (if address empty)
% or
% New York (if publisher empty)
%
FUNCTION {format.address.publisher}
{ %
% If publisher = author or publisher = "author" or publisher = "Author"
% then hand over the final choice how to format this to \LaTeX.
% (I could imagine similar code for editors, but the APA manual does
% not mention it and then we'd have to check whether the editor is in
% the author position, so let's keep it simple until someone complains.)
%
author empty$
publisher empty$ or
{ publisher "\APACaddressPublisher{" }
{ author publisher =
"author" publisher = or
"Author" publisher = or
{ author "\APACaddressPublisherEqAuth{" }
{ publisher "\APACaddressPublisher{" }
if$
}
if$
address "" connect.check "}{" *
% Recover publisher that was pushed onto the stack previously.
swap$ "" connect.check "}" *
}
FUNCTION {format.address.publisher.check}
{ publisher empty$
address empty$
and
'skip$
{
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.address.publisher
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format number as in reports: No. 2017
% call with
% field format.rnumber.check
%
FUNCTION {format.rnumber.check}
{ duplicate$ empty$
'skip$
{ duplicate$ multi.result.check
{ "\BNUMS" swap$ tie.or.space.connect }
{ "\BNUM" swap$ tie.or.space.connect }
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format type and number of a standalone item
% call with
% format.type.number
%
FUNCTION { format.type.number }
{ type empty$
{ type.2 }
{ type }
if$
number empty$
{ bracket.check }
{ number format.rnumber.check connect.with.space.check
parenthesize.check
}
if$
}
FUNCTION {format.howpublished}
{ howpublished empty$
'skip$
{ % clear the stack
duplicate$ empty$
'pop$
{ output.dot.new.block }
if$
"\APAChowpublished {" howpublished * "}" *
}
if$
}
FUNCTION {output.howpublished}
{ howpublished empty$
'skip$
{ "\APAChowpublished {" howpublished * "}" *
output.dot.new.block
}
if$
}
FUNCTION {howpublished.block}
{ howpublished empty$
'skip$
{ start.new.block
"\APAChowpublished {" howpublished * "}" *
output.dot.end.block
}
if$
}
FUNCTION {begin.end.url.env}
{ "\begin{APACrefURL} "
lastchecked empty$
{ urldate empty$
'skip$
{ "[{" * urldate * "}]" * }
if$
}
{ "[{" * lastchecked * "}]" * }
if$
" \end{APACrefURL} "
}
FUNCTION {begin.end.doi.env}
{ "\begin{APACrefDOI} "
" \end{APACrefDOI} "
}
FUNCTION {begin.end.msg.env}
{ "\begin{APACrefURLmsg} "
" \end{APACrefURLmsg} "
}
FUNCTION {format.url}
{ type.2 empty$
{ begin.end.url.env }
{ type.2 "\bibmessage" =
{ begin.end.msg.env }
{ begin.end.url.env }
if$
}
if$
%%"\url{" url * "}" *
"{" url * "}" *
enclose.check
}
FUNCTION {url.block}
{ doi empty$
{ url empty$
'skip$
{ start.new.block
format.url
output.end.block
}
if$
}
'skip$
if$
}
FUNCTION {format.doi}
{ begin.end.doi.env
"\doi{" doi * "}" *
enclose.check
}
FUNCTION {doi.block}
{ doi empty$
'skip$
{ start.new.block
format.doi
output.end.block
}
if$
}
FUNCTION {format.note}
{ "\APACrefnote{" "}" note enclose.check }
FUNCTION {note.block}
{ note empty$
'skip$
{ start.new.block
format.note
output.end.block
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format original year of publication and note
% (reprint or translation)
%
FUNCTION {format.orig.year.note}
{ originalyear empty$
{ format.note }
{ "\APACorigyearnote{"
originalyear "" connect.check "}{" *
note "" connect.check "}" *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format original journal of publication and note
% (reprint or translation)
%
FUNCTION {format.orig.journal.note}
{ "\APACorigjournalnote{"
originalyear "" connect.check "}{" *
originaljournal "" connect.check "}{" *
originalvolume "" connect.check "}{" *
originalnumber "" connect.check "}{" *
originalpages "" connect.check "}{" *
note "" connect.check "}" *
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format original book of publication and note
% (reprint or translation)
%
FUNCTION {format.orig.book.note}
{ "\APACorigbooknote{" originalyear "" connect.check "}{" *
%
originaleditor empty$
'skip$
{ originaleditor num.names$ #1 >
{ "\APACorigEDS {" * originaleditor format.editor.names * "}" * }
{ "\APACorigED {" * originaleditor format.editor.names * "}" * }
if$
}
if$
%
"}{" *
originalbooktitle format.btitle.no.dot "" connect.check "} {" *
originaledition format.edition.check "" connect.check "} {" *
originalvolume format.bvolume.check "" connect.check "} {" *
originalpages format.bpages.check "" connect.check "} {" *
originaladdress "" connect.check "} {" *
originalpublisher "" connect.check "} {" *
note "" connect.check "}" *
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format information about original publication of reprint
% and format optional note
%
FUNCTION {format.orig.note}
{ originaljournal empty$
{ originalbooktitle empty$
{ note empty$
{ originalyear empty$
'skip$
{ originalyear "\bibnodate" =
originalyear "l" change.case$ "no date" = or
originalyear "l" change.case$ "n.d." = or
'skip$
{ output.new.block
format.orig.year.note
}
if$
}
if$
}
{ output.new.block
format.orig.year.note
}
if$
}
{ output.new.block
format.orig.book.note
}
if$
}
{ output.new.block
format.orig.journal.note
}
if$
}
FUNCTION {fin.entry}
{ %doi empty$
% 'skip$
% { output.new.block
% format.doi
% }
% if$
output.end.block
"\PrintBackRefs{\CurrentBib}" write$ newline$
test
{ "\vspace{\baselineskip}" write$ newline$ }
'skip$
if$
}
FUNCTION {fin.entry.2}
{ doi.block
"\PrintBackRefs{\CurrentBib}" write$ newline$
test
{ "\vspace{\baselineskip}" write$ newline$ }
'skip$
if$
}
FUNCTION {format.archive}
{
archivePrefix empty$
{ "" }
{ archivePrefix ":" *}
if$
}
FUNCTION {format.primaryClass}
{
primaryClass empty$
{ "" }
{ " {[" primaryClass * "]}" *}
if$
}
FUNCTION {format.eprint}
{ eprint empty$
{ ""}
{ archive empty$
{"{\href{https://arxiv.org/abs/" eprint * "}" *
"{{" * format.archive * eprint * "}}}" *}
{ "{\href{https://arxiv.org/abs/" eprint * "}" *
"{{" * format.archive * eprint * "}}}" *}
if$
}
if$
}
FUNCTION {format.softmisc.archive}
{
archivePrefix empty$
{ "" }
{ "" }
if$
}
FUNCTION {format.softmisc.eprint}
{ eprint empty$
{ ""}
{ archive empty$
{"{\href{https://ascl.net/" format.softmisc.archive * eprint * "}" *
"{{" * format.archive * eprint * "}}}" *}
{"{\href{https://ascl.net/" format.softmisc.archive * eprint * "}" *
"{{" * format.archive * eprint * "}}}" *}
if$
}
if$
}
FUNCTION {periodical}
{
author empty$
%
% no author: possibly special issue with editors as authors
% (APA manual, ex. 11, p. 121)
%
{ editor empty$
%
% no author or editor: title serves as author.
% title formatted as article title (APA manual not consistent in this,
% compare statement on p. 119: ``treat as book title'' and
% example 8, p. 121: no underlining => article title)
%
{ format.atitle.type.trans.check output.new.block
%
% now formatted date on top of stack
%
output.dot.new.block
}
%
% format editor and year, and check if year is present
% format article title and check if title or type present
%
{ format.editors.as.authors start.new.block
%
% now formatted date on top of stack
%
output.dot.new.block
format.atitle.type.trans.check output.new.block
}
if$
}
%
% format author and year, and check if year is present
% format article title and check if title or type present
%
{ format.authors start.new.block
%
% now formatted date on top of stack
%
output.dot.new.block
format.atitle.type.trans.check output.new.block
}
if$
%
% format journal name, volume and issue number, and pages
% and check if journal not empty
%
format.journal.vol.num.pages.check
% output.new.block
doi empty$
'skip$
{ output.new.block
format.doi
}
if$
%
% if not empty, insert howpublished.
% (used if article is retrieved from the internet)
%
% format.howpublished add.period$
%
% format url
%
url empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
%
% possible reprint and optional note
%
format.orig.note
output.new.block
format.eprint
output.new.block
format.primaryClass
fin.entry
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% journal article
%
FUNCTION {article}
{ pages format.year.month.day.check periodical }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% magazine article
%
FUNCTION {magazine}
{ pages format.year.month.day.check periodical }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% newspaper article
%
FUNCTION {newspaper}
{ pages format.bpages.check format.year.month.day.check periodical }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% (translation of) entire book
%
FUNCTION {book}
{ %
% author or editor,
% year, title, englishtitle, translator
%
author empty$
%
% no author: possibly edited book with editors as authors
%
{ editor empty$
%
% no author or editor: title serves as author.
% title formatted as book title
%
{ format.btitle.vol.edition.trans
format.type.number connect.with.space.check
output.dot.new.block
format.year.check add.period$
}
%
% format editor and year, and check if year is present
% format booktitle, volume, and edition and check if title present
%
{ translator empty$
{ format.editors.as.authors start.new.block
format.year.check output.dot.new.block
format.btitle.vol.edition
}
%
% format translator correctly
%
{ translator editor =
not
{ format.editors.as.authors start.new.block
format.year.check output.dot.new.block
format.btitle.vol.edition.trans
}
{ format.ed.trans.as.authors start.new.block
format.year.check output.dot.new.block
format.btitle.vol.edition
}
if$
}
if$
format.type.number connect.with.space.check
add.period$
}
if$
}
%
% format author and year, and check if year is present
% format booktitle, volume, and edition and check if title present
%
{ format.authors start.new.block
format.year.check output.dot.new.block
format.btitle.vol.edition.editor.trans
format.type.number connect.with.space.check
add.period$
}
if$
%
% format address and publisher
%
format.address.publisher.check
%
% if not empty, insert howpublished.
% (used if book is retrieved from the internet)
%
format.howpublished add.period$
%
% format url
%
url empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
%
% format original publication (of reprint/translation)
% and optional note
%
format.orig.note
fin.entry
}
FUNCTION {incollection}
{ author empty$
{ editor.ne.trans
{ format.atitle.type.trans.check }
{ format.atitle.type.check }
if$
output.new.block
format.year.month.day.check add.period$
}
{ format.authors start.new.block
format.year.month.day.check output.dot.new.block
editor.ne.trans
{ format.atitle.type.trans.check }
{ format.atitle.type.check }
if$
}
if$
editor empty$
translator empty$ and
edition empty$ and
volume empty$ and
pages empty$ and
chapter empty$ and
booktitle empty$ and
'skip$
{
output.new.block
format.in.editors.trans
format.bvol.edition.pages
booktitle format.btitle.connect * add.period$
}
if$
format.address.publisher.check
format.howpublished add.period$
url empty$
'skip$
{
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
format.orig.note
fin.entry
}
FUNCTION {inbookcollection}
{ author empty$
{ editor.ne.trans
{ format.atitle.type.trans.check }
{ format.atitle.type.check }
if$
output.new.block
format.year.month.day.check add.period$
}
{ format.authors start.new.block
format.year.month.day.check output.dot.new.block
editor.ne.trans
{ format.atitle.type.trans.check }
{ format.atitle.type.check }
if$
}
if$
editor empty$
translator empty$ and
edition empty$ and
volume empty$ and
pages empty$ and
chapter empty$ and
booktitle empty$ and
'skip$
{
output.new.block
in.format.in.editors.trans
format.bvol.edition.pages
booktitle format.btitle.connect * add.period$
}
if$
format.address.publisher.check
format.howpublished add.period$
url empty$
'skip$
{
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
format.orig.note
fin.entry
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% technical report number
%
FUNCTION {format.tr.number}
{ type empty$
{ "\BTR{}" }
{ type "\bibnotype" =
{ "" }
{ type }
if$
}
if$
number format.rnumber.check connect.with.space.check
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% title, volume, edition, report number
%
FUNCTION {format.tr.title.number}
{ format.betitle.check
% Single out the situation in which there is no number
% and type = {\bibnotype}, i.e., no type as well.
% (Why not use book then?)
type empty$
{ % Now, we're in the regular situation with at least a
% number, a type, a volume, or an edition.
"\APACbVolEdTR{" format.bvol.edition.check * "}{" *
format.tr.number * "}" *
}
{ type "\bibnotype" =
number empty$
volume empty$
edition empty$
and
and
and
{ "" }
{ % Now, we're in the regular situation with at least a
% number, a type, a volume, or an edition.
"\APACbVolEdTR {" format.bvol.edition.check * "}{" *
format.tr.number * "}" *
}
if$
}
if$
connect.with.space.check
title format.btitle.connect
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% format address and institution of reports etc.
%
% Washington, DC: National Institute of Education
% or
% National Institute of Education (if address empty)
%
% warning if no institution
%
FUNCTION {format.address.institution.check}
{ url empty$
doi empty$ and
{ "institution" institution warning.if.empty
"address" address warning.if.empty
}
'skip$
if$
institution empty$
address empty$
and
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
%
% If institution = author or institution = "author"
% or institution = "Author" then hand over the final choice how to
% format this to \LaTeX. See also format.address.publisher
%
author empty$
institution empty$ or
{ institution "\APACaddressInstitution{" }
{ author institution =
"author" institution = or
"Author" institution = or
{ author "\APACaddressInstitutionEqAuth{" }
{ institution "\APACaddressInstitution{" }
if$
}
if$
address "" connect.check "}{" *
% Recover institution that was pushed onto the stack previously.
swap$ "" connect.check "}" *
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% reports
%
FUNCTION {techreport}
{ author empty$
%
% no author: possibly edited report with editors as authors
%
{ editor empty$
%
% no author or editor: title serves as author.
% title formatted as book title
%
{ format.tr.title.number output.dot.new.block
format.year.month.day.check add.period$
}
%
% format editor and year, and check if year is present
% format report title and check if title present
% format volume, edition, type, and number
%
{ format.editors.as.authors start.new.block
format.year.month.day.check output.dot.new.block
format.tr.title.number add.period$
}
if$
}
%
% format author and year, and check if year is present
% format report title and check if title present
% format volume, edition, type, and number
%
{ format.authors start.new.block
format.year.month.day.check output.dot.new.block
format.tr.title.number add.period$
}
if$
%
% format address and institution, check if institution present
%
format.address.institution.check
%
% if not empty, insert howpublished.
% (used if report is retrieved from the internet)
%
format.howpublished add.period$
%
% format url
%
url empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
%
% format optional note
%
note empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.note
}
if$
fin.entry
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% (translated) article or chapter in report
%
FUNCTION {intechreport}
{ author empty$
%
% no author: title serves as author.
% title formatted as article title (APA manual not consistent in this,
% compare statement on p. 119: ``treat as book title'' and
% example 8, p. 121: no underlining => article title)
%
{ editor.ne.trans
{ format.atitle.trans.check }
{ format.atitle.check }
if$
output.new.block
format.year.month.day.check output.dot.new.block
}
%
% format author and year, and check if year is present
% format article title and check if title or type present
%
{ format.authors start.new.block
format.year.month.day.check output.dot.new.block
editor.ne.trans
{ format.atitle.trans.check }
{ format.atitle.check }
if$
output.new.block
}
if$
%
% format "In " editor " (Ed. \& Trans.), "
% booktitle, volume, edition, pages
%
format.in.editors.trans
%
% volume, edition, report type and number, pages
%
"\APACbVolEdTRpgs {" format.bvol.edition.check * "} {" *
format.tr.number *
"} {" * pages format.bpages.check *
"}" *
%
booktitle format.btitle.connect *
add.period$
%
% format address and publisher
%
format.address.institution.check
%
% if not empty, insert howpublished.
% (used if report is retrieved from the internet)
%
format.howpublished add.period$
%
% format url
%
url empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
%
% format original publication (of reprint/translation)
% and optional note
%
format.orig.note
fin.entry
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% papers presented at conferences etc.
%
FUNCTION {lecture}
{ author empty$
{ "author" author warning.if.empty }
{ format.authors start.new.block }
if$
%
% format year, month, and day, and check if year present
% format title and check if title present
% format howpublished and check if howpublished present
%
format.year.month.day.check output.dot.new.block
symposium empty$
{ format.betitle.check
title format.btitle.connect output.new.block
howpublished empty$
{ "symposium and howpublished missing in " cite$ * warning$
""
}
{ "\APAChowpublished {" howpublished * "}" * }
if$
address connect.with.comma.check
}
{ format.atitle.type.check output.new.block
"\BIn{} "
chair empty$
'skip$
{ chair format.editor.names
chair num.names$ #1 >
{ "(\BCHAIRS)" }
{ "(\BCHAIR)" }
if$
connect.with.space.check * ", " *
}
if$
symposium format.btitle.no.dot *
format.howpublished
address connect.with.comma.check
}
if$
add.period$
%
% format url
%
url empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
%
% format optional note
%
note empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.note
}
if$
fin.entry
}
FUNCTION {format.ttitle.type.school}
{ doi empty$ not
url empty$ not or
howpublished empty$ not or
{ pop$ }
{ swap$ pop$ }
if$
type empty$
'skip$
{ type "\bibnotype" =
{ pop$
""
}
{ pop$
type
}
if$
}
if$
duplicate$ empty$
doi empty$
url empty$ and
howpublished empty$ and
address empty$
school empty$ and or and
{ 'pop$
title empty$ not
englishtitle empty$ not or
{ start.new.block }
'skip$
if$
""
}
{ start.new.block
"\APACtypeAddressSchool {" swap$ * "}{" *
doi empty$
url empty$ and
howpublished empty$ and
{ "}{}" * }
{ address "" connect.check "}{" *
school "" connect.check "}" *
}
if$
}
if$
format.betitle.check swap$
connect.with.space.check
"title" title warning.if.empty
title format.btitle.connect
}
FUNCTION {unpub.address.school.block}
{ doi empty$
url empty$ and
howpublished empty$ and
{ "school" school warning.if.empty
school empty$
address empty$ and
'skip$
{ start.new.block
"\APACaddressSchool {" address "" connect.check "}{" *
school "" connect.check "}" *
output.dot.end.block
}
if$
}
'skip$
if$
}
FUNCTION {thesis}
{ journal empty$ not
{ pop$ pop$
article
}
{ author empty$
{ "author" author warning.if.empty }
{ format.authors start.new.block }
if$
format.year.check output.dot.end.block
format.ttitle.type.school output.dot.end.block
unpub.address.school.block
howpublished.block
url.block
note.block
fin.entry.2
}
if$
}
FUNCTION {phdthesis}
{ "\BPhD" "\BUPhD" thesis }
FUNCTION {mastersthesis}
{ "\BMTh" "\BUMTh" thesis }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% title of something (used in unpublished and misc)
% english translation of title
% type and number of something
%
FUNCTION {format.btitle.type.num}
{ format.betitle.check
format.bvol.edition connect.with.space.check
format.type.number
connect.with.space.check
title empty$
{ add.period$ }
{ title format.btitle.connect }
if$
}
FUNCTION {format.version}
{
version empty$
{ "" }
{ " " * version *}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% title of message or software-related thing (used in misc)
% english translation of title
% type and number of something
%
FUNCTION {format.mtitle.type.num}
{ format.aetitle.check
format.bvol.edition connect.with.space.check
type.2 "\bibmessage" =
{ number empty$
'skip$
{ type.2 number tie.or.space.connect
bracket.check
connect.with.space.check
}
if$
}
{ format.type.number
connect.with.space.check
}
if$
title empty$
{ add.period$ }
{ title format.atitle.connect }
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% title, english translation of title,
% type and number of something (used in misc)
%
FUNCTION {output.misctitle.type.num}
{ type.2 empty$
{ format.btitle.type.num }
{ type.2 "\bibmessage" =
type.2 "\bibcomputerprogram" = or
type.2 "\bibcomputerprogrammanual" = or
type.2 "\bibcomputerprogramandmanual" = or
type.2 "\bibcomputersoftware" = or
type.2 "\bibcomputersoftwaremanual" = or
type.2 "\bibcomputersoftwareandmanual" = or
type.2 "\bibprogramminglanguage" = or
{ format.mtitle.type.num }
{ format.btitle.type.num }
if$
}
if$
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% unpublished manuscripts, etc.
%
FUNCTION {unpublished}
{ check.relevant.fields
author empty$
%
% no author: possibly edited book with editors as authors
%
{ editor empty$
%
% no author or editor: title serves as author.
% title formatted as book title
%
{ format.btitle.type.num output.new.block
format.year.month.day.check add.period$
}
%
% format editor and year, and check if year is present
% format book title, volume, and edition and check if title present
%
{ format.editors.as.authors start.new.block
format.year.month.day.check output.dot.new.block
format.btitle.type.num
}
if$
}
%
% format author and year, and check if year is present
% format book title, volume, and edition
% and check if title or type present
%
{ format.authors start.new.block
format.year.month.day.check output.dot.new.block
format.btitle.type.num
}
if$
howpublished empty$
organization empty$ and
address empty$ and
'skip$
{ output.new.block
"\APAChowpublished{" "}" howpublished enclose.check
organization connect.with.comma.check
address connect.with.comma.check
add.period$
}
if$
%
% format url
%
url empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
%
% format optional note
%
note empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.note
}
if$
fin.entry
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% nonprint media and other things that don't fit
%
FUNCTION {misc}
{ %
% To handle @manual: use type.2 instead of type.
type.2 empty$
type empty$ not and
{ type 'type.2 := }
'skip$
if$
%
author empty$
%
% no author: possibly edited item with editors as authors
%
{ editor empty$
%
% no author or editor: title/type serves as author.
% title formatted as book title
%
% if no title and no type, howpublished is title
%
{ title empty$
type.2 empty$ and
{ howpublished empty$
{ "No author, editor, title, type, and howpublished in "
cite$ * warning$
""
}
{ "\APAChowpublished{" howpublished * "}" * add.period$ }
if$
format.year.month.day.check add.period$
}
{ output.misctitle.type.num %output.new.block
format.year.month.day.check add.period$
format.howpublished add.period$
}
if$
}
%
% format editor and year, and check if year is present
% format book title, volume, and edition and check if title present
%
{ format.editors.as.authors start.new.block
format.year.month.day.check output.dot.new.block
output.misctitle.type.num output.dot.new.block
format.howpublished add.period$
}
if$
}
%
% format author and year, and check if year is present
% format book title, volume, and edition
% and check if title or type present
%
{ format.authors start.new.block
format.year.month.day.check output.dot.new.block
output.misctitle.type.num
format.howpublished add.period$
}
if$
%
address empty$
publisher empty$ and
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.address.publisher add.period$
}
if$
%
% format url
%
url empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
%
% format optional note
%
note empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.note
}
if$
fin.entry
}
FUNCTION {softmisc}
{ %
% To handle @manual: use type.2 instead of type.
type.2 empty$
type empty$ not and
{ type 'type.2 := }
'skip$
if$
%
author empty$
%
% no author: possibly edited item with editors as authors
%
{ editor empty$
%
% no author or editor: title/type serves as author.
% title formatted as book title
%
% if no title and no type, howpublished is title
%
{ title empty$
type.2 empty$ and
{ howpublished empty$
{ "No author, editor, title, type, and howpublished in "
cite$ * warning$
""
}
{ "\APAChowpublished{" howpublished * "}" * add.period$ }
if$
format.year.month.day.check add.period$
}
{ output.misctitle.type.num %output.new.block
format.year.month.day.check add.period$
format.howpublished add.period$
}
if$
}
%
% format editor and year, and check if year is present
% format book title, volume, and edition and check if title present
%
{ format.editors.as.authors start.new.block
format.year.month.day.check output.dot.new.block
output.misctitle.type.num output.dot.new.block
format.howpublished add.period$
}
if$
}
%
% format author and year, and check if year is present
% format book title, volume, and edition
% and check if title or type present
%
{ format.authors start.new.block
format.year.nomonth.day.check output.dot.new.block
output.misctitle.type.num
format.version
format.howpublished add.period$
}
if$
%
address empty$
publisher empty$ and
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.address.publisher add.period$
}
if$
%
% format url
%
url empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.url
}
if$
%
% format optional note
%
note empty$
'skip$
{ % Clear the stack
duplicate$ empty$
'skip$
{ output.new.block }
if$
format.note
}
if$
output.dot.new.block
format.softmisc.eprint
fin.entry
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% for legal cases and other cases that need to be
% done by hand
%
FUNCTION {literal}
{ "key" key warning.if.empty
"text" text warning.if.empty
text empty$
{ "" }
{ text }
if$
fin.entry
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% technical documentation
%
FUNCTION {manual}
{ %
% If type is empty, assume that it is a computer software manual.
%
type empty$
{ "\bibcomputersoftwaremanual" 'type.2 := }
'skip$
if$
misc
}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% booklet
%
FUNCTION {booklet}
{ misc }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% part of a book
%
FUNCTION {inbook}
{ inbookcollection }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% article in proceedings
%
FUNCTION {inproceedings}
{ incollection }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% article in proceedings (Kopka & Daly, 2004, p. 230)
%
FUNCTION {conference}
{ inproceedings }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% proceedings
%
FUNCTION {proceedings}
{ misc }
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% unknown types
%
FUNCTION {default.type}
{ misc }
FUNCTION {initialize}
{
#6 'name.max :=
%% #250 'entry.max$ :=
%% #5000 'global.max$ :=
}
FUNCTION {init.old.number}
{ #0 'old.number := }
FUNCTION {init.old.label}
{ "zzzzzz" 'old.label := }
FUNCTION {init.cite.initials.add.to.year}
{ #0 'cite.initials :=
#0 'add.to.year :=
}
FUNCTION {move.forward}
{ #1 'forward := }
FUNCTION {move.backward}
{ #0 'forward := }
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{}" write$ newline$
"\renewcommand{\doi}[1]{\url{https://doi.org/#1}}"
write$ newline$
"\bibcommenthead" write$ newline$
}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
FUNCTION {write.bbl.entry}
{
make.cite.labels
call.type$
}
READ
EXECUTE { identify.apacite.version }
EXECUTE { initialize }
EXECUTE { init.old.number }
ITERATE { make.citeorder.number }
ITERATE { make.sort.title }
SORT
EXECUTE { init.old.number }
EXECUTE { init.old.label }
ITERATE { make.title.number }
ITERATE { make.tentative.sort.label }
SORT
ITERATE { init.cite.initials.add.to.year }
EXECUTE { init.initials }
ITERATE { check.add.initials }
EXECUTE { init.initials }
REVERSE { check.add.initials }
ITERATE { tentative.cite.num.names }
EXECUTE { init.cite.num.names }
EXECUTE { move.forward }
ITERATE { definitive.cite.num.names }
EXECUTE { init.cite.num.names }
EXECUTE { move.backward }
REVERSE { definitive.cite.num.names }
ITERATE { make.final.sort.key }
SORT
EXECUTE { begin.bib }
ITERATE { write.bbl.entry }
EXECUTE { end.bib }
%%
%% End of file `sn-apacite.bst'.