From 29768744ac7416e5165df988c2cf71be14b2810f Mon Sep 17 00:00:00 2001 From: Brandon Goodell <b-g-goodell@users.noreply.github.com> Date: Thu, 31 Aug 2017 16:44:47 -0600 Subject: [PATCH] Create mrl.cls --- .../mrl.cls | 1831 +++++++++++++++++ 1 file changed, 1831 insertions(+) create mode 100644 publications/research-bulletins/in-prog/MRL-9999 - Threshold Multisignatures/mrl.cls diff --git a/publications/research-bulletins/in-prog/MRL-9999 - Threshold Multisignatures/mrl.cls b/publications/research-bulletins/in-prog/MRL-9999 - Threshold Multisignatures/mrl.cls new file mode 100644 index 0000000..a8c3965 --- /dev/null +++ b/publications/research-bulletins/in-prog/MRL-9999 - Threshold Multisignatures/mrl.cls @@ -0,0 +1,1831 @@ +%% +%% LaTeX 2e class file for the processing of LaTeX2e files +%% for the BioMed Central +%% +%% Macros written by Vytas Statulevicius, VTeX, Lithuania +%% for the BioMed Central +%% Please submit bugs or your comments to vytas@vtex.lt +%% +%% The original distribution is located at: +%% http://support.e-publications.org/bmc +%% +%% This class file loads standart "article.cls" with appropriate +%% settings and then redefines layout according to BMC style +%% A lot of efforts are done for the possibility of extraction of +%% information from the LaTeX file +%% +%% You are free to use this style class as you see fit, provided +%% that you do not make changes to the file. +%% If you DO make changes, you are required to rename this file. +%% +%% It may be distributed under the terms of the LaTeX Project Public +%% License, as described in lppl.txt in the base LaTeX distribution. +%% Either version 1.0 or, at your option, any later version. +%% +%% \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 \~} +%% +%% +%% Bug fixes and changes: +%% at end of file + +\def\bmcart@name{mrl.cls} +\def\bmcart@version{2012/06/27} + +\NeedsTeXFormat{LaTeX2e} + +\ProvidesClass{mrl} + [\bmcart@version Monero Research Lab] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% General options: + +% Print id line at bottom of the page: +\DeclareOption{noinfoline}{\AtBeginDocument{\let\info@line\@empty}} +\DeclareOption{infoline} {\AtBeginDocument{\let\info@line\infoline@text}} + +% Put lines numbers in margins +\newif\ifnumberlines@ \numberlines@false +\DeclareOption{linenumbers}{\numberlines@true} +\DeclareOption{nolinenumbers}{\numberlines@false} + +% Spacing +\DeclareOption{doublespacing}{\AtBeginDocument{\renewcommand{\baselinestretch}{1.4}\large\normalsize}} +\DeclareOption{singlespacing}{\AtBeginDocument{\renewcommand{\baselinestretch}{1.0}\large\normalsize}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Loading standart "article" class + +\PassOptionsToClass{twoside}{article} +\PassOptionsToPackage{fleqn}{amsmath} +\PassOptionsToPackage{sort&compress,numbers}{natbib} +\PassOptionsToPackage{colorlinks,citecolor=blue,urlcolor=blue,linkcolor=blue,pagecolor=blue}{hyperref} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\ProcessOptions* + +\LoadClass{article} + +%%% start of "vsfleqn2.sty" +\newdimen\mathindent +\AtEndOfClass{\mathindent\leftmargini} +% +\def\mathtrivlist{\parsep\parskip\topsep\abovedisplayskip + \ifnum\@listdepth>0 \advance\mathindent by-\leftmargin\fi% + \@trivlist \labelwidth\z@ \leftmargin\z@ + \itemindent\z@ \def\makelabel##1{##1}} + +\def\endmathtrivlist{\endtrivlist} +% \[ \] +\renewcommand\[{\relax + \ifmmode\@badmath + \else + \begin{mathtrivlist}% + \@beginparpenalty\predisplaypenalty + \@endparpenalty\postdisplaypenalty + \item[]\leavevmode + \hb@xt@\linewidth\bgroup $\m@th\displaystyle %$ + \hskip\mathindent\bgroup + \fi} +\renewcommand\]{\relax + \ifmmode + \egroup $\hfil% $ + \egroup + \end{mathtrivlist}% + \else \@badmath + \fi} +% EQUATION +\renewenvironment{equation}% + {\@beginparpenalty\predisplaypenalty + \@endparpenalty\postdisplaypenalty + \refstepcounter{equation}% + \mathtrivlist \item[]\leavevmode + \hb@xt@\linewidth\bgroup $\m@th% $ + \displaystyle + \hskip\mathindent}% + {$\hfil % $ + \displaywidth\linewidth\hbox{\@eqnnum}% + \egroup + \endmathtrivlist} +% EQNARRAY +\renewenvironment{eqnarray}{% + \stepcounter{equation}% + \def\@currentlabel{\p@equation\theequation}% + \global\@eqnswtrue\m@th + \global\@eqcnt\z@ + \tabskip\mathindent + \let\\=\@eqncr +% \setlength\abovedisplayskip{\topsep}% +% \ifvmode +% \addtolength\abovedisplayskip{\partopsep}% +% \fi +% \addtolength\abovedisplayskip{\parskip}% +% \setlength\belowdisplayskip{\abovedisplayskip}% + \setlength\belowdisplayshortskip{\abovedisplayskip}% + \setlength\abovedisplayshortskip{\abovedisplayskip}% + $$\everycr{}\halign to\linewidth% $$ + \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}% + {\@@eqncr + \egroup + \global\advance\c@equation\m@ne$$% $$ + \@ignoretrue + } +%%% end of "vsfleqn2.sty" + +\RequirePackage{keyval} +\RequirePackage{xcolor} +\definecolor{bmcblue}{rgb}{0,0.2,0.4} + +\RequirePackage{lastpage} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Modifications and "add-on" for article.cls starts: + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Initiate some info: +\def\journal@name{Monero Research Lab} +%\let\journal@name\@empty +\def\journal@url{http://monero.cc/} +\def\journal@id{-mrl} +\def\paper@url{} +\def\info@line{} +%\def\copyrightowner@text{Monero Research Lab} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% Page dimensions + +%% dimensions: text + + \setlength\parindent {8\p@} + \def\true@parindent {8\p@} + \if@twocolumn + \setlength\textheight {651\p@}% 648bp + \setlength\textwidth {484\p@}% 170mm + \else + \setlength\textheight {653\p@}% 650.9bp + \setlength\textwidth {361\p@}% 127mm + \fi + + + \setlength\columnsep {5mm} + \@settopoint\columnsep + \@tempdima=\textwidth + \advance\@tempdima by-\columnsep + \divide\@tempdima by2 + \setlength\columnwidth {\@tempdima} + \@settopoint\columnwidth + \setlength\columnseprule{0\p@} + + \mathindent20\p@ + +%% dimensions: heads + + \setlength\headheight{12\p@} + \setlength\headsep {44\p@} + \setlength\topskip {14\p@} + \setlength\footskip {2\p@} + \setlength\maxdepth {.5\topskip} + +%% dimensions: side margins + + \setlength\topmargin {27\p@} % 12mm + \if@twocolumn + \setlength\oddsidemargin {57\p@}% 20mm gutter margin + \setlength\evensidemargin {57\p@}% 20mm outer margin + \else + \setlength\oddsidemargin {118\p@}% 41.5mm gutter margin + \setlength\evensidemargin {118\p@}% 41.5mm outer margin + \fi + + \advance\oddsidemargin by-1in + \advance\evensidemargin by-1in + \advance\topmargin by-1in + + \def\set@fp@margins{% + \setlength\oddsidemargin {179\p@}% 63mm first page gutter margin + \setlength\evensidemargin {57\p@}% 20mm outer first page margin + \advance\oddsidemargin by-1in + \advance\evensidemargin by-1in + } + \if@twocolumn\else + \let\set@fp@margin@hook\set@fp@margins + \fi + +%% dimensions: skips + + \if@twocolumn + \setlength\smallskipamount{6\p@ \@plus 1\p@ \@minus 1\p@} + \setlength\medskipamount {12\p@ \@plus 3\p@ \@minus 3\p@} + \setlength\bigskipamount {18\p@ \@plus 6\p@ \@minus 3\p@} + \else + \setlength\smallskipamount{7\p@ \@plus 1\p@ \@minus 1\p@} + \setlength\medskipamount {14\p@ \@plus 3\p@ \@minus 3\p@} + \setlength\bigskipamount {22\p@ \@plus 6\p@ \@minus 3\p@} + \fi + +%% dimensions: page-breaking penalties + + \clubpenalty=10000 + \widowpenalty=10000 + \if@twocolumn + \displaywidowpenalty=50 + \fi + \predisplaypenalty=10000 % Breaking before a math display. + \pretolerance=100 % Badness tolerance for the first pass (before hyphenation) + \tolerance=800 % Badness tolerance after hyphenation + \hbadness=800 % Badness above which bad hboxes will be shown + \emergencystretch=3\p@ + \hfuzz=1\p@ % do not be to critical about boxes + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fontsizes + + \if@twocolumn + \renewcommand\normalsize{% + \@setfontsize\normalsize\@xpt{12\p@ \@plus.25\p@ \@minus.4\p@}% + \abovedisplayskip 12\p@ \@plus2\p@ \@minus2\p@ + \abovedisplayshortskip 7\p@ \@plus2\p@ + \belowdisplayshortskip 7\p@ \@plus2\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} + \else + \renewcommand\normalsize{% + \@setfontsize\normalsize\@xpt{14.2\p@ \@plus.3\p@ \@minus.5\p@}% + \abovedisplayskip 14.15\p@ \@plus2\p@ \@minus2\p@ + \abovedisplayshortskip 7\p@ \@plus2\p@ + \belowdisplayshortskip 7\p@ \@plus2\p@ + \belowdisplayskip \abovedisplayskip + \let\@listi\@listI} + \fi + + \renewcommand\small{% + \@setfontsize\small\@ixpt{11\p@ plus .2\p@ minus .2\p@}% + \abovedisplayskip 7.5\p@ \@plus4\p@ \@minus1\p@ + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \abovedisplayskip + \belowdisplayshortskip \abovedisplayskip} + + \renewcommand\footnotesize{% + \@setfontsize\footnotesize\@viiipt{9\p@ plus .1pt minus .1pt}%% + \abovedisplayskip 6\p@ \@plus4\p@ \@minus1\p@ + \belowdisplayskip \abovedisplayskip + \abovedisplayshortskip \abovedisplayskip + \belowdisplayshortskip \abovedisplayskip} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% setattribute, getattribute, do@option@list + +\def\setattribute{\@ifnextchar[\@setattribute{\@setattribute[]}} +\def\@setattribute[#1]#2#3#4{\expandafter\gdef\csname #2@#3\endcsname{#4}} +\def\getattribute#1#2{\csname #1@#2\endcsname} +\def\sep@key@value#1=#2/?/#3{\setattribute{#3}{#1}{#2}} +\def\do@option@list#1#2{% + \@for\curr@option:={#2}\do{% + \expandafter\sep@key@value\curr@option/?/{#1}\relax + }% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% newpseudoenvironment +% same as \newenvironment, but new environment do not have additional groups \bgroup \egroup +% (i.e. all definitions are not local + +\let\org@begin\begin +\let\org@end\end +\def\begin#1{% + \@ifundefined{pseudo@#1}% + {\org@begin{#1}}{\csname pseudo@#1\endcsname[0]\relax}% + } +\def\end#1{% + \@ifundefined{pseudo@#1}% + {\org@end{#1}}{\csname pseudo@#1\endcsname[1]\relax}% + } +\def\newpseudoenvironment#1#2#3{% + \expandafter\gdef\csname pseudo@#1\endcsname[##1]{% + \relax\ifcase##1\relax\def\@@next@@{#2}\or\def\@@next@@{#3}\else\let\@@next@@\relax\fi\@@next@@}% + } + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% startlocaldefs, endlocaldefs + +\def\startlocaldefs{\makeatletter} +\def\endlocaldefs{\makeatother} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% thanksref, thanksmark, thankslabel, thankstext +% to be safe with hyperref we will use original LaTeX definitions: +% + +\def\saferef#1{\expandafter\safe@setref\csname r@#1\endcsname\@firstoftwo{#1}} +\let\safe@setref\@setref + +\def\safelabel#1{% + \@ifundefined{thanksnewlabel@#1}% + {\@bsphack\protected@write\@auxout{}{\string\thanksnewlabel{#1}{{\@currentlabel}{\thepage}}}\@esphack} + {}% + \@namedef{thanksnewlabel@#1}{}} + +\let\thanksnewlabel\newlabel + +% we want to use various counters: +\def\usethankscounter#1{% + \@ifundefined{current@thankscounter}{\gdef\previous@thankscounter{#1}}{\xdef\previous@thankscounter{\current@thankscounter}}% + \def\current@thankscounter{#1}} + +\def\restorethankscounter{\xdef\current@thankscounter{\previous@thankscounter}} + +\newcounter{thanks} +%\def\thethanks{\@fnsymbol\c@thanks} +\def\thethanks{\@arabic\c@thanks} +\usethankscounter{thanks} + +\def\thanksmark@fmt#1{\hbox{$^{#1}$}} +\def\thanksref@sep{,} + +% hooks for the hyperref: +\def\thankref@hyperlink#1{\saferef{#1thanks}} +\def\thanks@hypertarget#1{} + +% Isvedame zymes +\def\thanksref{\@ifnextchar[{\@tempswatrue\@thanksref}{\@tempswafalse\@thanksref[]}} + +\def\@thanksref[#1]#2{% + \if@tempswa% [] + \thanksmark@fmt{#1}% + \else% + \let\@tempa\@empty% + \thanksmark@fmt{\@for\@tempb:=#2\do{% + \@tempa\let\@tempa\thanksref@sep% + \edef\@tempb{\expandafter\@firstofone\@tempb\@empty}% + \thankref@hyperlink{\@tempb}}}% + \fi} + +% Suformuojame ir isvedame zyme +\def\thanksmark{\@ifnextchar[{\@tempswatrue\@thanksmark}{\@tempswafalse\@thanksmark[]}} + +\def\@thanksmark[#1]#2{% + \@thankslabel[#1]{#2}% + \safelabel{#2thanks}% + \thanksmark@fmt{\expandafter\saferef{#2thanks}\thanks@hypertarget{#2}}} + +% Suformuojame tik zyme +\def\thankslabel{\@ifnextchar[{\@tempswatrue\@thankslabel}{\@tempswafalse\@thankslabel[]}} + +\def\@thankslabel[#1]#2{% + \if@tempswa% [] + \protected@edef\@currentlabel{#1}% + \else% + \refstepcounter{\current@thankscounter}% + \fi% + \safelabel{#2thanks}}% + +% Suformuojame zyme ir idedame teksta i \@thanks: +\def\thankstext{\@ifnextchar[{\@tempswatrue\@thankstext}{\@tempswafalse\@thankstext[]}} + +\def\@thankstext[#1]#2#3{% + \@thankslabel[#1]{#2}% + \protected@xdef\@thanks{\@thanks\protect\thanks@thefnmark{#2thanks}% + \protect\@footnotetext{\thanks@hypertarget{#2}#3}}}% + +\def\thanks@thefnmark#1{\begingroup\unrestored@protected@xdef\@thefnmark{\saferef{#1}}\endgroup}% + + + +% ST makrosas savo numeracijos sistemos sukurimui +\def\setvaluelist#1#2{\@tempcnta=0\relax + \@for\@curr@val:=#2\do{% + \advance\@tempcnta by1\relax + \expandafter\protected@xdef\csname #1@item@\the\@tempcnta\endcsname{\@curr@val}% + }% + \expandafter\protected@xdef\csname #1@item@0\endcsname{\the\@tempcnta}% +} +\xdef\getitemvalue#1#2{\noexpand\csname #1@item@#2\endcsname} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \ead, \printead + +\def\email@text{} +\def\url@text{http://} +\def\ead@sep{;~} + +% naudojame keyval paketa +\define@key{ead}{email}[true]{\def\ead@type{email}} +\define@key{ead}{url}[true]{\def\ead@type{url}} +\define@key{ead}{label}{\def\ead@label{#1}} + +\DeclareRobustCommand\ead[2][label= ,email]{{% + \def\ead@type{email}% default + \setkeys{ead}{#1}% + \def\texttildelow{\noexpand\texttildelow}% + \protected@edef\@currentlabel{#2}% + \safelabel{\ead@label @\ead@type}}} + +\newif\ifnot@ead@star + +\DeclareRobustCommand{\printead}{\@ifstar{\not@ead@starfalse\@printead}{\not@ead@startrue\@printead}} + +\def\@printead{\@ifnextchar[{\@tempswatrue\@@printead}{\@tempswafalse\@@printead[]}} + +\def\@@printead[#1]#2{% + \if@tempswa% [] + {\ead@size #1}% + \else% + \def\ead@type{email}% + \def\ead@prefix{mailto:}% + \let\ead@text\email@text% + \let\@ead@sep\relax% + \@for\ead@ref:=#2\do{% + \@ead@sep\let\@ead@sep\ead@sep% + \@ifundefined{r@\ead@ref @url}{}{\let\ead@text\url@text\def\ead@type{url}\def\ead@prefix{http://}}% + \ifnot@ead@star\ead@text\fi{\ead@size\def\null{}\ims@href{\ead@prefix\saferef{\ead@ref @\ead@type}}{\saferef{\ead@ref @\ead@type}}}% + \let\ead@text\relax}% + \fi% +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% normaltext, nohyphen, no@harm + +% normalus tekstas (justify) +\def\normaltext{\let\\=\@normalcr% + \leftskip\z@ \@rightskip\z@ \rightskip\@rightskip% + \parfillskip\@flushglue} + +% skiemenavimo isjungimas +\def\nohyphen{\pretolerance=\@M \tolerance=\@M \hyphenpenalty=\@M \exhyphenpenalty=\@M} + +\def\no@harm{\let\thanks=\@gobble\let\thanksref=\@gobble\let~\space\def\ead[##1]##2{}\let\\=\@empty \def\protect{\noexpand\protect\noexpand}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% url@fmt + + +\def\journalurl#1{\def\journal@url{#1}} +\def\paperurl#1{\def\paper@url{#1}} + +\def\doi#1{% + \gdef\@doi{#1}% + \gdef\doi@text{\url@fmt{DOI: }{\ttfamily}{#1}{\doi@base\@doi}}% +} + +\def\@doi{} + +\def\doi@base{http://dx.doi.org/} + +% {url}{text} +\def\ims@href#1#2{#2} + +% {prefix}{font}{text}{url} + +\def\url@fmt#1#2#3#4{% + \edef\@tempa{#3}% + \ifx\@tempa\@empty% + \else% + #1{#2\ims@href{#4}{#3}}% + \fi} + +%%%%%%%%%%%%%%%%%%% doiurl + +\@ifundefined{doi@base}{\def\doi@base{http://dx.doi.org/}}{} + +\DeclareRobustCommand\doiurl[1]{{% + \def\\{}% + \check@doiurl@prefix#1http://\end% + \check@doiurl@break#1\\\end\relax% + \if@doiurlbreak% + \@ifundefined{doi@url}{% + \href{\doi@base\@tempx\@tempy}{\csname doi@size\endcsname\@tempx}% + \break% + \href{\doi@base\@tempx\@tempy}{\csname doi@size\endcsname\@tempy}}% + {% + \expandafter\href{\@tempx\@tempy}{\csname doi@size\endcsname\@tempx}% + \break% + \href{\@tempx\@tempy}{\csname doi@size\endcsname\@tempy}}% + \else% + \@ifundefined{doi@url}% + {\href{\doi@base#1}{\csname doi@size\endcsname #1}}% + {\href{#1}{\csname doi@size\endcsname #1}}% + \fi}} + + +\def\check@doiurl@prefix#1http://#2\end{\ifx.#2.\else\def\doi@url{fullurl}\fi} + +\newif\if@doiurlbreak \@doiurlbreakfalse + +\def\check@doiurl@break#1\\#2\end{% + \ifx.#2.\@doiurlbreakfalse% + \else% + \@doiurlbreaktrue% + \def\@tempx{#1}% + \def\@tempy{#2}% + \fi} + +%%%%%%%%%%%%%%%%%%% arxivurl + +%% \arxivurl{http://arxiv.org/abs/math.PR/0603300} +%% \arxivurl{math.PR/0603300} +%% \arxivurl{http://\\arxiv.org/abs/math.PR/0603300} +%% \arxivurl{math.PR/\\0603300} + +\@ifundefined{arxiv@base}{\def\arxiv@base{http://arxiv.org/abs/}}{} + +\DeclareRobustCommand\arxivurl[1]{{% + \def\\{}% + \check@arxivurl@prefix#1http://\end% + \check@arxivurl@break#1\\\end\relax% + \if@arxivurlbreak% + \@ifundefined{arxiv@url}{% + \href{\arxiv@base\@tempx\@tempy}{\csname arxivurl@size\endcsname\@tempx}% + \break% + \href{\arxiv@base\@tempx\@tempy}{\csname arxivurl@size\endcsname\@tempy}}% + {% + \expandafter\href{\@tempx\@tempy}{\csname arxivurl@size\endcsname\@tempx}% + \break% + \href{\@tempx\@tempy}{\csname arxivurl@size\endcsname\@tempy}}% + \else% + \@ifundefined{arxiv@url}% + {\href{\arxiv@base#1}{\csname arxivurl@size\endcsname #1}}% + {\href{#1}{\csname arxivurl@size\endcsname #1}}% + \fi}} + + +\def\check@arxivurl@prefix#1http://#2\end{\ifx.#2.\else\def\arxiv@url{fullurl}\fi} + +\newif\if@arxivurlbreak \@arxivurlbreakfalse + +\def\check@arxivurl@break#1\\#2\end{% + \ifx.#2.\@arxivurlbreakfalse% + \else% + \@arxivurlbreaktrue% + \def\@tempx{#1}% + \def\@tempy{#2}% + \fi} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% RUNNING HEADS + +\def\runtitle#1{\gdef\@runtitle{#1}} +\def\runauthor#1{\gdef\@runauthor{#1}\global\let\copauthor\@runauthor} +\def\@runauthor{} +\def\@lastpage{0} + +\def\thepage@fmt#1{Page #1 of \@lastpage} +\def\thepage@fmt#1{Page #1 of \pageref{LastPage}} + +\def\headline@hook{} +\let\ps@copyright@hook\relax + +% normal RH +\def\ps@bmcheadings{% + \def\etal{\textit{et al.}}% + \let\@mkboth\@gobbletwo% + \def\@evenfoot{\csname footline@hook\endcsname\hfill}% + \let\@oddfoot\@evenfoot + \def\@oddhead{\headline@hook\hskip-\rhindent@width\hbox to\z@{\parbox[t]{\textarea@width}{\runninghead@size\runninghead@text}\hss}\hfill}% + \let\@evenhead\@oddhead% +}% + + +% First page RH +\def\ps@copyright{\csname set@fp@margin@hook\endcsname% + \def\etal{\textit{et al.}}% + \let\@mkboth\@gobbletwo% + \def\@evenhead{\ps@copyright@hook\headline@hook\hskip-\leftarea@width\parbox[t]{\textarea@width}{\copyright@size\copyright@text}\hfill}% + \let\@oddhead\@evenhead% + \def\@oddfoot{\csname footline@hook\endcsname\hfill\hfill}% + \let\@evenfoot\@oddfoot} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LIST ENVIRONMENTS + +\parsep\z@ +\topsep\z@ +\partopsep\z@ +\itemsep\z@ +\labelsep.5em + +\def\@listI{\leftmargin\leftmargini + \parsep\z@ + \topsep\z@ + \itemsep\z@} + +\def\list@parindent{8\p@} + + +\def\labelenumi{\theenumi\hskip6\p@} + +% quotation +\let\quotation@size\normalsize +\def\quotation@itemindent{\list@parindent} +\def\quotation@parindent{\list@parindent} +\def\quotation@leftmargin{\list@parindent} +\let\quotation@rightmargin\z@ +\let\quotation@topsep\smallskipamount + +\def\quotation{% + \list{}{\quotation@size% + \listparindent\quotation@parindent% + \itemindent \quotation@itemindent% + \rightmargin\quotation@rightmargin \leftmargin\quotation@leftmargin% + \partopsep\z@ \topsep\quotation@topsep \parsep\z@% + }% + \item[\Q@strut]\relax} + +\def\endquotation{\endlist} + +\def\Q@strut{\leavevmode\hbox{\vrule height9pt depth1pt width0pt}} + +% quote +\let\quote@size\normalsize +\def\quote@indent{\z@} +\def\quote@leftmargin{2pc} +\def\quote@rightmargin{\z@} +\let\quote@topsep\smallskipamount + +\def\quote{% + \list{}{\quote@size% + \listparindent\quote@indent% + \itemindent \listparindent% + \rightmargin\quote@rightmargin \leftmargin\quote@leftmargin% + \partopsep\z@ \topsep\quote@topsep \parsep\z@% + }% + \item\relax} + +\def\endquote{\endlist} + +\def\@listii {\leftmargin\leftmarginii + \labelwidth\leftmarginii + \advance\labelwidth-\labelsep + \topsep\z@ + \parsep\z@ + \itemsep \parsep} + +\def\@listiii{\leftmargin\leftmarginiii + \labelwidth\leftmarginiii + \advance\labelwidth-\labelsep + \topsep\z@ + \parsep z@ + \partopsep\z@ + \itemsep\topsep} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TABLE, FIGURE + +% settings for table caption +\setattribute{floatcaption} {size}{\footnotesize\bfseries\mathversion{bold}\raggedright} +\setattribute{floatcaptionname}{size}{\bfseries} + +\setlength\abovecaptionskip{0\p@} +\setlength\belowcaptionskip{4\p@} + +\long\def\@makecaption#1#2{ + \vskip\abovecaptionskip + \parbox[t]{\hsize}{\floatcaption@size{\floatcaptionname@size #1}\hskip.5em #2\par}% + \vskip\belowcaptionskip} + + +\def\@floatboxreset{% + \reset@font + \footnotesize + \sffamily + \@setminipage + \centering +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FIGURE - in box + +\newbox\bmcfloat@box +\newif\if@figurestar + +\setattribute{figure}{sep}{6.25\p@} + +\def\figure{\@figurestarfalse\@ifnextchar[{\@figure}{\@figure[t]}} + +\def\@figure[#1]{\def\figure@pars{#1}% + \def\@captype{figure}% + \def\csentence##1{{\mathversion{bold}\bfseries ##1}}% +% \csname @figure@hook\endcsname% +% \let\@makecaption\@makefigurecaption% +% \let\@floatboxreset\figure@boxreset% + \setbox\bmcfloat@box=\vbox\bgroup\figure@settings} + +\def\endfigure{% + \par% + \egroup% + \edef\reserved@a{\noexpand\@xfloat{figure}[\figure@pars]} + \reserved@a\makefigure@float\end@float +} + + +\DeclareRobustCommand\fig@textbf[1]{{\floatcaptionname@size #1}}% + +\def\figure@settings{% + \let\textbf\fig@textbf% + \setattribute{floatcaption}{size}{\footnotesize\sffamily\raggedright} + \if@figurestar\hsize=\textwidth\fi% + \@tempdima\hsize% + \advance\@tempdima by-\figure@sep% + \advance\@tempdima by-\figure@sep% + \hsize\@tempdima% + \parindent\z@% + \centering% + \setlength\abovecaptionskip{6\p@}% + \setlength\belowcaptionskip{0\p@}% +} + +\def\makefigure@float{ + \setlength{\fboxsep}{\figure@sep}% + \setlength{\fboxrule}{0.25\p@}% + \fcolorbox{bmcblue}{white}{\box\bmcfloat@box}} + +\@namedef{figure*}{\@figurestartrue\@ifnextchar[{\@figure}{\@figure[t]}} + +\@namedef{endfigure*}{% + \egroup% + \edef\reserved@a{\noexpand\@xdblfloat{figure}[\figure@pars]} + \reserved@a\makefigure@float\end@dblfloat +} + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FOOTNOTE + +\def\footnoterule{\kern-3\p@ \hrule \@width \footnoterule@width \kern 2.6\p@} % the \hrule is .4pt high + +\let\orig@footnoterule\footnoterule + +\renewcommand\@makefntext[1]{\noindent\parindent8\p@\@makefnmark #1} + +\def\@makefnmark{\csname makefnmark@hook\endcsname\@textsuperscript{\normalfont[\@thefnmark]}}% + +% hook for hyperref +\def\@makefntext@fmt#1{\@makefnmark} + +\def\freefootnotetext[#1]{% + \begingroup\unrestored@protected@xdef\@thefnmark{#1}\endgroup\@footnotetext} + +\def\footnote@size{\fontsize{7}{8}\raggedright} + +\long\def\@footnotetext#1{\insert\footins{% + \reset@font\footnote@size + \interlinepenalty\interfootnotelinepenalty + \splittopskip\footnotesep + \splitmaxdepth \dp\strutbox \floatingpenalty \@MM + \hsize\columnwidth \@parboxrestore + \protected@edef\@currentlabel{% + \csname p@footnote\endcsname\@thefnmark + }% + \color@begingroup + \@makefntext{% + \rule\z@\footnotesep\ignorespaces#1\@finalstrut\strutbox}% + \color@endgroup}}% + + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% MAIN SETTINGS - COMMON FOR 1 and 2 col's layouts + + +\setattribute{frontmatter} {style} {\raggedright} +\setattribute{address} {style} {\raggedright} +\setattribute{affiliation} {style} {\raggedright} +\setattribute{abstract} {style} {\raggedright} +\setattribute{keyword} {style} {\normaltext\raggedright} +\setattribute{backmatter} {style} {\raggedright} + +% FRONT MATTER SKIPS +\setattribute{dochead} {skip} {-\topskip} +\setattribute{title} {skip} {10\p@} +\setattribute{subtitle} {skip} {5\p@} +\setattribute{date} {skip} {10\p@} +\setattribute{authors} {skip} {2\p@} +\setattribute{note} {skip} {8\p@} +\setattribute{copyright} {skip} {23\p@} +\setattribute{address} {skip} {4\p@ plus 2\p@} +\setattribute{history} {skip} {\Smallskipamount} +\setattribute{abstract} {skip} {0\p@} +\setattribute{keyword} {skip} {5\p@} +\setattribute{abbr} {skip} {\medskipamount} +\setattribute{frontmatter} {skip} {\bigskip} + +\setattribute{copyrightlogo}{cmd}{} + +% FRONT MATTER FONTS +\setattribute{dochead} {size} {\sffamily\fontsize{13pt}{13pt}\bfseries\selectfont\color{white}} +\setattribute{title} {size} {\sffamily\fontsize{24pt}{26pt}\selectfont\raggedright} +\setattribute{subtitle} {size} {\sffamily\fontsize{20pt}{22pt}\selectfont\raggedright} +\setattribute{author} {size} {\sffamily\fontsize{11pt}{14pt}\selectfont\raggedright} +\setattribute{date} {size} {\sffamily\fontsize{11pt}{14pt}\selectfont\raggedright} +\setattribute{address} {size} {} +\setattribute{note} {size} {\sffamily\fontsize{10pt}{13pt}\selectfont\raggedright} +\setattribute{thanksbox} {size} {\sffamily\fontsize{7pt}{9pt}\selectfont\raggedright} +\setattribute{history} {size} {\mdseries} +\setattribute{abstract} {size} {\sffamily\fontsize{10}{12}\selectfont} +\setattribute{abstractname}{size} {\bfseries} +\setattribute{keyword} {size} {\sffamily\fontsize{10}{12}\selectfont} +\setattribute{keywordname} {size} {\bfseries} + +\setattribute{runninghead} {size} {\sffamily\fontsize{8}{10}\selectfont} +\setattribute{footline} {size} {\sffamily\fontsize{7}{8}\selectfont} +\setattribute{copyright} {size} {\sffamily\fontsize{8}{10}\selectfont} +\setattribute{backmatter} {size} {\sffamily\fontsize{7}{9}\selectfont\raggedright} +\setattribute{ead} {size} {} + +% COPYRIGHT TEXT, etc. +\setattribute{address} {text} {Author details} +\setattribute{corref} {text} {Correspondence: } +\setattribute{authorinfo} {text} {} +\setattribute{presentaddress} {text} {\textit{Present address: }} +\setattribute{copyright} {text} {\copyright\,\textit{\journal@name}} +\setattribute{runninghead} {text} {\copyright\,\textit{\journal@name} \hfill \thepage@fmt{\thepage}} +\setattribute{footline} {text} {} +\setattribute{pdfsubject} {text} {\journal@name} + +% URL +\setattribute{article} {url} {} + +% SEPARATIONS + +\setattribute{author} {sep} {, } +\setattribute{authorand} {sep} {~and } +\setattribute{address} {sep} {. } + +% KEYWORDS +\setattribute{keyword} {AMS} {AMS Subject Classification} +\setattribute{keyword} {MSC} {Mathematics Subject Classification} +\setattribute{keyword} {MSC2010} {Mathematics Subject Classification (2010)} +\setattribute{keyword} {MSCnoyear}{Mathematics Subject Classification} +\setattribute{keyword} {KWD} {Keywords} +\setattribute{keyword} {JEL} {JEL Classification} +\setattribute{keyword} {PACS} {PACS Codes} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FRONT MATTER FORMATTING PARAMETERS + + +% FRONT MATTER SKIPS +\if@twocolumn +\setattribute{abstractbox} {skip} {24\p@} +\else +\setattribute{abstractbox} {skip} {-1\p@} +\fi + +\setattribute{frontmatter} {cmd} {% + \frontmatter@skip% + \global\@afterindentfalse% + \@afterheading} + +% FRONT MATTER DIMENSIONS +\setattribute{textarea} {width} {484\p@} %170mm 1 puslapio maksimalus plotis +\if@twocolumn +\setattribute{leftarea} {width} {\z@} +\setattribute{rhindent} {width} {\z@} +\else +\setattribute{leftarea} {width} {122\p@} %38mm+5mm=43mm +\setattribute{rhindent} {width} {61\p@} %21.5mm = 41.5-20 rh issikisimas normaliuose puslapiuose +\fi +\setattribute{leftcol} {width} {108\p@} %38mm 1 puslapio isnasu dezutes plotis +\setattribute{colsep} {width} {14\p@} %5mm +\if@twocolumn +\setattribute{footnoterule}{width} {\columnwidth}% +\else +\setattribute{footnoterule}{width} {\textwidth}% +\fi + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FRONTMATTER + +% COUNTERS, ETC +\newcounter{author} +\newcounter{address} +\newdimen\sv@mathsurround +\let\hy@frontmatter\relax +\let\hy@endfrontmatter\relax + +\def\frontmatter{% + \global\c@author\z@ + \global\c@address\z@ +% + \thispagestyle{copyright}% +% + \csname frontmatter@hook \endcsname% + \sv@mathsurround\mathsurround% + \m@th + \set@frontmatter@cmd + \set@frontmatter@keys + \parindent\z@ + \frontmatter@style + \hy@frontmatter + \ignorespaces} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ENDFRONTMATTER + +\def\endfrontmatter{% + \global\@topnum\z@ +% + \@thanks% +% + \write@pdfinfo{\hy@fauthor}{\csname fauthor@\firstauthor@id\endcsname} + \write@pdfinfo{\hy@author}{\the\authors@list} + \write@pdfinfo{\hy@subject}{\pdfsubject@text} + \write@pdfinfo{\hy@keywords}{\the\keywords@list} +% + \hy@endfrontmatter +% + \immediate\write\@mainaux{\string\global\string\@namedef{num@address}{\the\c@address}}% + \immediate\write\@mainaux{\string\global\string\@namedef{num@author}{\the\c@author}}% + \set@authorcorref@notset% +% + \global\mathsurround\sv@mathsurround + \global\let\@thanks\@empty +% + \set@runauthor +% + \csname frontmatter@hook\endcsname% + \aftergroup\frontmatter@cmd + \aftergroup\insert@thanksbox + } + \if@twocolumn + \def\insert@thanksbox{\insert\footins{\unvbox\thanks@box}} + \else + \let\insert@thanksbox\relax + \fi + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \set@frontmatter@cmd + +\def\set@frontmatter@cmd{% + \let\maketitle\relax + \let\fmbox\bmc@fmbox + \let\endfmbox\bmc@endfmbox + \let\dochead\bmc@dochead + \let\title\bmc@title + \let\subtitle\bmc@subtitle + \let\author\bmc@author + \let\address\bmc@address + \let\date\bmc@date + \let\artnotes\bmc@artnotes + \let\endartnotes\bmc@endartnotes + \let\abstractbox\bmc@abstractbox + \let\endabstractbox\bmc@endabstractbox + \let\abstract\bmc@abstract + \let\endabstract\bmc@endabstract + \let\keyword\bmc@keyword + \let\endkeyword\bmc@endkeyword + \let\thanksbox\bmc@thanksbox + \let\endthanksbox\bmc@endthanksbox +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% FMBOX + +\newif\if@fmbox \@fmboxfalse +\newbox\fm@box + +\def\bmc@fmbox{% + \setbox\fm@box=\vbox\bgroup + \@fmboxtrue + \hsize=\textarea@width + } + +\def\bmc@endfmbox{% + \par + \auto@set@thanksbox% + \csname endfmbox@hook\endcsname% +\egroup% +\if@twocolumn + \emergencystretch=1pc \twocolumn[\box\fm@box\medskip] +\else + \hbox to\textwidth{\hss\box\fm@box} + \vskip\abstract@skip + \vbox to\z@{\llap{\box\thanks@box\hskip\colsep@width}\vss} +\fi} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DOCHEAD + +\let\dochead@hook\relax + +\def\bmc@dochead{\@ifnextchar[{\dochead@fmt}{\dochead@fmt[]}} + +\def\dochead@fmt[#1]#2{% +\bgroup% + \@tempdima=\hsize% + \advance\@tempdima by-8\p@% + \setlength{\fboxsep}{4\p@}% + \setlength{\fboxrule}{\z@}% + \fcolorbox{bmcblue}{bmcblue}{\hbox to\@tempdima{\dochead@size\MakeUppercase{#2}}}%\hfill\fontshape{n}\selectfont\smash{\dochead@hook}}} +\egroup} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% TITLE + +\let\PREHOOK@title@fmt\@gobble + +\def\bmc@title{\@ifnextchar[{\title@fmt}{\title@fmt[]}} + +\def\title@fmt[#1]#2{% + \vskip\title@skip% + \setkeys{title}{#1}% + \bgroup% + \no@harm% + \let\protect\relax% + \xdef\@runtitle{#2}% + \egroup% + \bgroup% + \no@harm% + \let\protect\relax% + \xdef\@argi{#2}% + \egroup% + \write@pdfinfo{\hy@title}{\@argi}% + \bgroup + \PREHOOK@title@fmt{#2}% + \title@size\csname pretitle@text\endcsname #2\par% + \egroup} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% SUBTITLE + +\def\bmc@subtitle{\@ifnextchar[{\subtitle@fmt}{\subtitle@fmt[]}} + +\def\subtitle@fmt[#1]#2{% + \vskip\subtitle@skip + \setkeys{title}{#1}% + \bgroup% + \subtitle@size #2\par% + \egroup} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% DATE + +\def\bmc@date{\@ifnextchar[{\date@fmt}{\date@fmt[]}} + +\def\date@fmt[#1]#2{% + \vskip\date@skip + \setkeys{title}{#1}% + \bgroup% + \date@size #2\par% + \egroup} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% set@frontmatter@keys + +\def\set@frontmatter@keys{% + \@tempcnta=0\relax% + \@ifundefined{num@address}{}{\@tempcnta=\num@address\relax}% + \ifnum\@tempcnta=1\relax% +% \define@key{author}{addressref}{}% +% \define@key{author}{presentaddressref}{}% + \define@key{author}{corref}{}% + \global\let\address@thanksref\@gobble + \global\let\printaddresses\relax + \fi% + \@tempcnta=0\relax% + \@ifundefined{num@author}{}{\@tempcnta=\num@author\relax}% + \ifnum\@tempcnta=1\relax% + \global\@namedef{num@address}{1} +% \define@key{author}{addressref}{}% +% \define@key{author}{presentaddressref}{\expandafter\gdef\csname presentaddressref@##1\endcsname{}}% +% \gdef\printauthor##1{\unskip}% + \global\let\address@thanksref\@gobble + \global\let\printaddresses\relax + \global\let\corref@thanksmark\@gobble + \global\let\corref@thanksref\@gobble + \fi% +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \thanksmark etc + +\def\thanksmark@fmt#1{{\textsuperscript{#1}}} + +\def\thethanks{\getitemvalue{bmcsymbol}{\@arabic\c@thanks}} + +\setvaluelist{bmcsymbol}{*,\textdagger,\^{}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% AUTHOR - keys + +% \author[id=au1,addressref={aff1,aff2},presentaddressref=aff3,corref={aff1,aff2},thanksref={t1}]{\inits{}\fnm{} \snm{} \suffix{}\ead{}} +% \author@au1 =\inits \snm \suffix +% \fauthor@au1=\fnm \snm \suffix +% \corref@au1 =\corref@text +% +% automatiniam formatavimui: +% \def\addressref@aff1{} +% \emaillist@au1 ={e1,e2} +% \authorslist@aff1 ={au1,au2} +% \authorslist@present@aff1 ={au1,au2} +% \correflist@au1 ={aff1,aff2} +% \authors@id@list ={au1,au2,au3...} +% +% tikriname ar nebuvo panaudotas id: + + \def\check@xx@id#1#2{\@ifundefined{#1@#2}{}{\@latex@error{Command <#1>: id=#2 was allready used!}{}}} + + \newif\ifauthor@corref + \newif\ifauthor@email + + \define@key{author}{id}{% + \def\author@id{#1}% + \check@xx@id{author}{#1}% + \@ifundefined{authors@id@list}{\xdef\authors@id@list{#1}}{\xdef\authors@id@list{\authors@id@list,#1}}} + + \define@key{author}{email}{% + \author@emailtrue% + \ead[label=\author@id]{#1}} + + \define@key{author}{thanksref}{% + % \current@thanksref@list={aff1,aff2} + % \def\thanksref@aff1{} + \edef\current@thanksref@list{#1}% + \@for\thanksref@id:=#1\do{\expandafter\gdef\csname thanksref@\thanksref@id\endcsname{}}} + +% alias for thanksref + \define@key{author}{noteref}{% + % \current@thanksref@list={aff1,aff2} + % \def\thanksref@aff1{} + \edef\current@thanksref@list{#1}% + \@for\thanksref@id:=#1\do{\expandafter\gdef\csname thanksref@\thanksref@id\endcsname{}}} + + \define@key{author}{addressref}{% + % \current@address@list={aff1,aff2} + % \def\addressref@aff1{} + \edef\current@address@list{#1}% + \@for\addressref@id:=#1\do{\expandafter\gdef\csname addressref@\addressref@id\endcsname{}}} + + \define@key{author}{presentaddressref}{% + % \current@address@list={aff1,aff2}% + % \def\presentaddressref@aff1{}% + \@ifundefined{addressref@#1}{\edef\current@paddress@list{#1}}{}% + \@for\addressref@id:=#1\do{\expandafter\gdef\csname presentaddressref@\addressref@id\endcsname{}}% + \@for\addressref@id:=#1\do{\expandafter\gdef\csname addressref@\addressref@id\endcsname{}}} + + \define@key{author}{corref}[]{% +% \corref@list={aff1,aff2}% + \global\let\set@authorcorref@notset\relax% + \global\author@correftrue% + \ifx.#1.\else\xdef\corref@list{#1}\fi% +} + + \def\add@to@addressref@list#1{\@ifundefined{addressref@list}{\edef\addressref@list{#1}}{\edef\addressref@list{\addressref@list, #1}}} + \def\add@to@thanksref@list#1{\@ifundefined{thanksref@list}{\edef\thanksref@list{#1}}{\edef\thanksref@list{\thanksref@list, #1}}} + + \def\set@authorcorref@notset{\immediate\write\@mainaux{\string\global\string\authorcorref@notsettrue}} + + \def\set@author@lists{% + \let\thanksref@list\relax% + \let\addressref@list\relax% + \@ifundefined{current@address@list}{}{\add@to@addressref@list{\current@address@list}}% + \@ifundefined{current@paddress@list}{}{\add@to@addressref@list{\current@paddress@list}}% + \@ifundefined{current@thanksref@list}{}{\add@to@thanksref@list{\current@thanksref@list}}% +} + + \def\print@author@lists{% + \@ifundefined{addressref@list}{}{\address@thanksref{\addressref@list}}% + \ifauthor@corref\def\thanksref@sep{}\corref@thanksref{\corr@author@id}\fi% + \@ifundefined{thanksref@list}{}{\def\thanksref@sep{}\thanksref{\thanksref@list}}% +} + +\let\address@thanksref\thanksref +\let\corref@thanksref\thanksref + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% AUTHOR +% if corref is not set, we will use first author with an email as a corresponding author +% \corr@author@id -> {au1} +% \corref@list -> {aff1,aff2} + +\newif\ifauthorcorref@notset \authorcorref@notsetfalse + + +\def\bmc@author{\@ifnextchar[{\author@fmt}{\author@fmt[]}} + +\def\author@fmt[#1]#2{% + \stepcounter{author}{% + \csname author@cmd\endcsname% + \author@correffalse% + \xdef\author@id{au\the\c@author}% + \setkeys{author}{#1}% + \@ifundefined{num@author}{\@tempcnta=10\relax}{\@tempcnta=\num@author\relax}% + \def\a@sep{, }% + \ifnum\@tempcnta>1\relax% + \ifnum\c@author=\@tempcnta% + \let\a@sep\authorand@sep% + \else% + \let\a@sep\author@sep% + \fi% + \fi% +% + \ifauthorcorref@notset% + \ifauthor@email% email is set + \author@correftrue% + \global\authorcorref@notsetfalse% + \fi% + \fi% + \ifauthor@corref% + \xdef\corr@author@id{\author@id}% + \@ifundefined{corref@list}% + {\@ifundefined{current@address@list}{}{\xdef\corref@list{\current@address@list}}}% + {}% + \fi% +% + \ifnum\c@author=1 \author@fmt@init \let\a@sep\relax \xdef\first@author@id{\author@id}\fi% + \bgroup% F. Author + \def\inits##1{##1}\def\fnm##1{}\def\snm##1{##1}\def\particle##1{##1}\def\suffix##1{##1}% + \no@harm% + \xdef\author@arg{#2}% + \egroup% + \expandafter\protected@xdef\csname author@\author@id\endcsname{\author@arg}% + \bgroup% First Author + \def\inits##1{}\def\fnm##1{##1}\def\particle##1{##1}\def\snm##1{##1}\def\suffix##1{##1}% + \no@harm% + \xdef\author@arg{#2}% + \ifnum\c@author=1\addto@authors@list{#2}\xdef\firstauthor@id{\author@id}\else\addto@authors@list{, #2}\fi% + \egroup% + \expandafter\protected@xdef\csname fauthor@\author@id\endcsname{\author@arg}% + \bgroup% Author + \def\inits##1{}\def\fnm##1{\ignorespaces}\def\particle##1{}\def\snm##1{##1}\def\suffix##1{}% + \no@harm% + \expandafter\xdef\csname runauthor@\the\c@author @snm\endcsname{#2}% + \egroup% + \bgroup% + \author@size% + \def\inits##1{}\def\fnm##1{##1}\def\snm##1{##1}\def\particle##1{##1}\def\suffix##1{##1}% + \set@author@lists% + \a@sep\authorname@fmt{#2}\print@author@lists% + \egroup}% + \ignorespaces} + +\def\author@fmt@init{% + \vskip\authors@skip% + \author@size% + \leavevmode} + +\def\authorname@fmt#1{#1} + +\def\set@runauthor{% + \ifnum\c@author=1\relax + \gdef\@runauthor{\@nameuse{runauthor@1@snm}}% + \else + \ifnum\c@author=2\relax + \gdef\@runauthor{\@nameuse{runauthor@1@snm} and \@nameuse{runauthor@2@snm}}% + \else + \@ifundefined{runauthor@1@snm}{}{\gdef\@runauthor{\@nameuse{runauthor@1@snm} \etal}}% + \fi + \fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ADDRESS + +% \address[id=aff1]{} + + \define@key{address}{id}{% + \def\address@id{#1}% + \check@xx@id{address}{#1}% +} + + +\def\bmc@address{\@ifnextchar[{\address@fmt}{\address@fmt[]}} + + +\def\address@fmt[#1]#2{% + \stepcounter{address}% + \xdef\address@id{aff\the\c@address}% + \setkeys{address}{#1}% + \@ifundefined{address@id@list}{\xdef\address@id@list{\address@id}}{\xdef\address@id@list{\address@id@list,\address@id}}% + \expandafter\newtoks\csname address@\address@id\endcsname% + \global\csname address@\address@id\endcsname={#2}% +} + + +\def\address@definitions{ + \def\\{\break}% + \def\orgdiv##1{##1}\def\orgname##1{##1}% + \def\street##1{##1}\def\postcode##1{##1}% + \def\postbox##1{##1}\def\city##1{##1}\def\state##1{##1}\def\cny##1{##1}% + \let\interref\surl% +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% printaddress{aff1} + +\newcounter{addressref} +\def\theaddressref{\arabic{addressref}} + +\newif\if@address@mark \@address@marktrue + +\define@key{printaddress}{nomark}[true]{ + \let\thanksmark\@gobble% + \let\thanksref\@gobble}% + +\define@key{printaddress}{addrprefix}{\def\addr@prefix{#1}}% +\let\addr@prefix\relax + +\DeclareRobustCommand{\printaddress}{\@ifnextchar[{\printaddress@fmt}{\printaddress@fmt[]}} + +\def\printaddress@fmt[#1]#2{% +\bgroup% + \setkeys{printaddress}{#1}% + \address@size% + \parindent\z@% + \address@definitions% + \set@address@mark% + \usethankscounter{addressref}\thanksmark{#2}\restorethankscounter% + \addr@prefix% + \@ifundefined{presentaddressref@#2}{}{\presentaddress@text}% + \expandafter\the\@nameuse{address@#2}\unskip\address@sep% +\egroup} + + +\def\thanksbox@printaddress@fmt[#1]#2{% +\bgroup% + \setkeys{printaddress}{#1}% + \address@size% + \parindent\z@% + \address@definitions% + \set@address@mark% + \thanksref{#2}% + \addr@prefix% + \expandafter\the\@nameuse{address@#2}\par% +\egroup} + + +\def\set@address@mark{% + \ifnum\c@author=1\relax \@address@markfalse\fi% + \ifnum\c@address=1\relax \@address@markfalse \fi% + \if@address@mark\else\let\thanksmark\@gobble\let\thanksref\@gobble\fi% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% printaddresses{} + +\def\printaddresses{ + \heading*{\address@text} + \bgroup + \backmatter@style\backmatter@size + \@ifundefined{address@id@list}{}{\@for\address@id:=\address@id@list\do{\printaddress{\address@id}}}% + \csname contributing@text\endcsname% + \par + \egroup + \global\let\printaddresses\relax} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ARTNOTES + +\newif\if@firstnote \@firstnotetrue + +\newenvironment{bmc@artnotes}{% + \def\note{\@ifnextchar[{\@bmcartnote}{\note@nopars}}% + \def\contributionnote##1{\gdef\contributing@text{##1}}% + \note@size% +}{} + + +\def\note@nopars#1{\if@firstnote\vskip\note@skip\@firstnotefalse\fi #1\par} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \artnote + +\def\bmcartnote{\@ifnextchar[{\@bmcartnote}{\@bmcartnote[]}} + +\define@key{bmcartnote}{id}{% + \def\bmcartnote@id{#1}% + \@ifundefined{bmcartnote@id@list}{\xdef\bmcartnote@id@list{#1}}{\xdef\bmcartnote@id@list{\bmcartnote@id@list,#1}}} + +\define@key{bmcartnote}{symbol}{\def\bmcartnote@symbol{#1}} + + +\def\@bmcartnote[#1]#2{{% + \setkeys{bmcartnote}{#1}% + \expandafter\protected@xdef\csname bmcartnote@\bmcartnote@id\endcsname{#2}% + \@ifundefined{bmcartnote@symbol}{}{\expandafter\protected@xdef\csname bmcartnote@symbol@\bmcartnote@id\endcsname{\bmcartnote@symbol}} +}} + + +\def\printartnote#1{% +\bgroup + \@ifundefined{bmcartnote@symbol@#1}% + {\leavevmode\thanksmark{#1}}% + {\edef\@tempa{\csname bmcartnote@symbol@#1\endcsname}\leavevmode\thanksmark[\@tempa]{#1}}% + \@nameuse{bmcartnote@#1}% +\egroup} + +\def\printartnotes{% + \@ifundefined{bmcartnote@id@list}{}{\@for\bmcnote@id:=\bmcartnote@id@list\do{\printartnote{\bmcnote@id}}}% + \global\let\printartnotes\relax% +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% THANKSBOX + +\newbox\thanks@box + +\def\bmc@thanksbox{\@ifnextchar[{\@thanksbox}{\@thanksbox[]}} + +\def\@thanksbox[#1]{% + \global\let\auto@set@thanksbox\relax% + \global\setbox\thanks@box=\vtop\bgroup + \if@twocolumn% + \hsize=\columnwidth% + \else% + \hsize=\leftcol@width% + \hrule width\leftcol@width height0.15\p@% + \vskip2\p@% + \fi% + \thanksbox@size% + \let\printaddress@fmt\thanksbox@printaddress@fmt% + \setkeys{thanksbox}{#1}% + \parindent\z@% + \if@twocolumn\rule\z@\footnotesep\fi% + \ignorespaces% +} + +\def\bmc@endthanksbox{\par\egroup} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \auto@set@thanksbox + +\def\auto@set@thanksbox{% + \@thanksbox[]{% + \@ifundefined{corr@author@id}{}{\printcorrtext{\corr@author@id}}% + \@ifundefined{corref@list}{}{\@for\address@id:=\corref@list\do{\printaddress{\address@id}}\par}% + \authorinfo@text + \printartnotes% + \par + \egroup}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \printcorremail + +% \printcorremail{<thanksref>}{<email-ref>} + +\def\printcorremail#1#2{% + \@ifundefined{num@author}{\@tempcnta=0}{\@tempcnta=\num@author} + \ifnum\@tempcnta=1\relax\else\thanksmark{#1}\fi% + \corref@text\printead*{#2}\par +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \printcorrtext + +%\printcorrtext{<corrauthor@id>} + +\def\printcorrtext#1{% + \corref@thanksmark{#1}% + \corref@text% + \@ifundefined{r@#1@email}{}{\printead*{#1}}% + \par +} + +\let\corref@thanksmark\thanksmark + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ABSTRACTBOX + +\setattribute{absboxsep} {width} {10.25\p@} + +\newbox\abstract@box + +\def\bmc@abstractbox{\@ifnextchar[{\@abstractbox}{\@abstractbox[]}} + +\def\@abstractbox[#1]{% + \@tempdima=\hsize% + \advance\@tempdima by-\absboxsep@width% + \advance\@tempdima by-\absboxsep@width% + \setkeys{abstractbox}{#1}% + \setbox\abstract@box=\vbox\bgroup% + \hsize=\@tempdima% + \ignorespaces% +} + +\def\bmc@endabstractbox{% + \par% + \egroup% + \vglue\abstractbox@skip + \setlength{\fboxsep}{10\p@}% + \setlength{\fboxrule}{0.5\p@}% + \fcolorbox{bmcblue}{white}{\box\abstract@box} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% ABSTRACT + +\def\abstractname@skip{\par\vskip3\p@} + +\newif\if@first@abstract \@first@abstracttrue + +\define@key{abstract}{title}{\def\abstractname{#1}} + +\gdef\bmc@abstract{\@ifnextchar[{\abstract@fmt}{\abstract@fmt[]}} + +\def\abstract@fmt[#1]{% + \if@first@abstract\csname firstabstract@cmd\endcsname\else \vskip\abstract@skip\fi% + \global\@first@abstractfalse% + \def\parttitle##1{% + \vskip3\p@ + \noindent{\bfseries ##1:}} + \setkeys{abstract}{#1}% + \abstract@style% + \abstract@size% + \parindent\true@parindent% + \phantomsection\addcontentsline{toc}{section}{\abstractname}% + \noindent{\abstractname@size\abstractname}\abstractname@skip\ignorespaces\noindent} + + +\def\bmc@endabstract{\par} + +\let\phantomsection\relax + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% KEYWORD +% raktas=class +\setattribute[default]{keyword}{class}{KWD} +\setattribute[default]{keyword}{language}{english} + +% \keyword@class-> KWD +% \keyword@KWD -> AMS 2000... + +%\setattribute{keyword}{language}{french} + +\gdef\bmc@keyword{\@ifnextchar[{\bmc@@keyword}{\bmc@@keyword[class=KWD]}} + +\gdef\bmc@@keyword[#1]{% +% + \do@option@list{keyword}{#1}% + \long\def\@tempa{MSC}% + \ifx\keyword@class\@tempa% + \def\keyword@skip{\z@}% + \fi% +% + \def\sep{\unskip; }% + \vskip\keyword@skip +% + \def\keyword@name{\csname keyword@\keyword@class\endcsname}% + \let\kwd@sep\relax +% + \keyword@style% + \keyword@size% + \parindent\true@parindent% + \def\\{\hfill\break}% + \noindent{\keywordname@size\keyword@name:}\enspace} + +\def\bmc@endkeyword{\par} + +% \kwd[; ]{foo} + \newif\if@firstkeywordinlist \@firstkeywordinlisttrue + + \DeclareRobustCommand*\kwd{\@ifnextchar[\@kwd{\@kwd[\kwd@sep]}}% + + \def\@kwd[#1]#2{% + \ifx.#2.\else\expandafter\gdef\csname @\keyword@class\endcsname{}\fi% + \unskip#1{#2}\if@firstkeywordinlist\addto@keywords@list{#2}\@firstkeywordinlistfalse\else\addto@keywords@list{, #2}\fi\let\kwd@sep\sep}% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% BACKMATTER + +\newenvironment{backmatter} + {\medskip\backmatter@style\backmatter@size\let\section\heading} + {} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% interaction with hyperref + +\def\test@hyperref{\@ifundefined{Hy@SetCatcodes}{}{\bmcart@hyperref@settings}} + +\AtBeginDocument{\test@hyperref} + +\def\bmcart@hyperref@settings{% +% from hyperref maketitle + \def\hy@frontmatter{% + \let\H@@origfootnotemark\@footnotemark + \let\H@@origfootnotetext\@footnotetext + \let\@footnotemark\H@@footnotemark + \let\@footnotetext\H@@footnotetext} + \def\hy@endfrontmatter{ + \ifx\@footnotemark\H@@footnotemark + \let\@footnotemark\H@@origfootnotemark + \fi + \ifx\@footnotetext\H@@footnotetext + \let\@footnotetext\H@@origfootnotetext + \fi} +% hooks for the \thanksref, \thankstext: + \def\thankref@hyperlink##1{% + \edef\@tempx{##1thanks}% + \hbox{\hyperlink{##1}{\saferef{\@tempx}}}} + \def\thanks@hypertarget##1{\smash{\raise\baselineskip\hbox{\protect\hypertarget{##1}{}}}} +% redefine pagenumbering +% \let\pagenumbering\ims@pagenumbering +% activate href + \let\ims@href\href% + \let\safe@phantomsection\phantomsection +% put document info + \def\write@pdfinfo##1##2{\protected@write\@auxout{\no@harm}{\string\gdef\string##1{##2}}} + \@ifundefined{hy@title}{}{\pdfstringdef\@pdftitle{\hy@title}} + \@ifundefined{hy@author}{}{\pdfstringdef\@pdfauthor{\hy@author}} + \@ifundefined{hy@subject}{}{\pdfstringdef\@pdfsubject{\hy@subject}} + \@ifundefined{hy@keywords}{}{\pdfstringdef\@pdfkeywords{\hy@keywords}} +% MathSciNet: + \def\MR##1{\href{http://www.ams.org/mathscinet-getitem?mr=##1}{MR##1}} +} + +\def\write@pdfinfo#1#2{} + +\newtoks\authors@list +\def\addto@authors@list#1{% + \begingroup% + \no@harm% + \xdef\@act{\global\noexpand\authors@list{\the\authors@list#1}}\@act% + \endgroup} + +\newtoks\keywords@list +\def\addto@keywords@list#1{% + \begingroup% + \no@harm% + \xdef\@act{\global\noexpand\keywords@list{\the\keywords@list#1}}\@act% + \endgroup} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% section, subsection etc. +% we do not like article appearance: + +\renewcommand\section{\@startsection {section}{1}{\z@}% + {-\medskipamount}% + {0.001\p@}% + {\sffamily\large\bfseries\raggedright\nohyphen}} + +\renewcommand\subsection{\@startsection {subsection}{2}{\z@}% + {-\medskipamount}% + {0.001\p@}% + {\sffamily\raggedright\nohyphen}} + +\renewcommand\subsubsection{\@startsection{subsubsection}{3}{\z@}% + {-\medskipamount}% + {0.001\p@}% + {\itshape\raggedright}} + +\renewcommand\paragraph{\@startsection{paragraph}{4}{\z@}% + {\medskipamount}% + {-10pt}% + {\itshape}} + +\renewcommand\subparagraph{\@startsection{subparagraph}{5}{\parindent}% + {0.1pt}% + {-1em}% + {\itshape}} + + +% Format for the counter: + \def\section@numbersep{} + \def\subsection@numbersep{} + \def\subsubsection@numbersep{} + \def\paragraph@numbersep{} + \def\subparagraph@numbersep{} + +% Format for the counter: +\def\@seccntformat#1{{\csname #1@prefix\endcsname\csname the#1\endcsname\csname#1@numbersep\endcsname\enspace}} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% HEADING + +\newcommand\heading{\@startsection{section}{1}{\z@}% + {\smallskipamount}% + {0.001\p@}% + {\backmatter@size\bfseries}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% APPENDIX + + + \renewcommand\appendix{\par + \let\section@cnt@size\appendix@size% + \let\old@section\section% + \def\section{\@ifnextchar*{\@appsectionstar}{\@appsectionnostar}}% + \def\section@prefix{\appendixname\ }% + \def\section@numbersep{:}% + \setcounter{section}{0}% + \setcounter{subsection}{0}% + \gdef\thesection{\@Alph\c@section} +} + + \def\@appsectionstar*#1{% + \old@section*{#1}% + \setcounter{section}{1}% + \addcontentsline{toc}{section}{#1} +} + + \def\@appsectionnostar#1{% + \ifx.#1.% + \def\section@numbersep{}\old@section[\appendixname\ \thesection]{}% + \else% + \def\section@numbersep{:}\old@section{#1}% + \fi} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% thebibliography + + \let\saved@thebibliography\thebibliography + \def\thebibliography{% + \printaddresses% + \backmatter@style\backmatter@size + \let\section\heading\saved@thebibliography} + \def\@biblabel#1{#1.} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fix if natbib is loaded: + +\def\bmcfix@natbib{% + \def\bibfont{\backmatter@style\backmatter@size} + \def\bibsection{% + \printaddresses% + \heading*{\refname}} + \def\bibnumfmt##1{##1.} + \setlength\bibsep{0pt}} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fix if amsmath is loaded: + +\def\bmcfix@amsmath{% + \allowdisplaybreaks +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% fix if amsthm is loaded: + +\def\bmcfix@amsthm{% + \thm@notefont{\upshape} + \newtheoremstyle{plain} {\medskipamount}{\medskipamount}{\itshape}{\z@}{\bfseries}{}{1em}{} + \newtheoremstyle{definition}{\medskipamount}{\medskipamount}{\normalfont}{\z@}{\bfseries}{}{1em}{} + \newtheoremstyle{remark} {\medskipamount}{\medskipamount}{\normalfont}{\z@}{\itshape}{}{1em}{} +% + \renewenvironment{proof}[1][\proofname]{\par + \pushQED{\qed}% + \normalfont \topsep\medskipamount% + \trivlist + \labelsep.5em% + \item[\hskip\labelsep + \itshape ##1\@addpunct{}]\ignorespaces + }{\popQED\endtrivlist\@endpefalse} +} + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% check for the loaded classes: + +\AtBeginDocument{% + \@ifpackageloaded{natbib}{\bmcfix@natbib}{}% + \@ifpackageloaded{amsthm}{\bmcfix@amsthm}{}% +} + + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% number lines + +\ifnumberlines@ + + \long\def\l@addto@macro#1#2{% + \toks@\expandafter{#1#2}% + \edef#1{\the\toks@}} + + \setattribute{numberlines}{size}{\scriptsize\ttfamily} + \setattribute{numberlines}{skip}{0\p@} + + \def\numberlines@hook{% + \l@addto@macro\@evenhead\put@numberlines@box% + \l@addto@macro\@oddhead\put@numberlines@box} + + \g@addto@macro\ps@bmcheadings\numberlines@hook + \g@addto@macro\ps@copyright\numberlines@hook + + \newbox\numberlines@box + \newskip\numberlines@box@skip + + \def\set@numberlines@box{% + \setlength\numberlines@box@skip\headsep + \addtolength\numberlines@box@skip{5\p@} + % + \setbox\numberlines@box\vtop to\textheight{% + \parindent\z@ + \vskip\z@ + \@tempcnta=0 + \@tempdima=\z@ + \loop + \advance\@tempcnta by1 + \advance\@tempdima by\baselineskip + \hbox to\textwidth{% + \llap{\numberlines@size\the\@tempcnta\kern\numberlines@skip} + \hfill + \rlap{\numberlines@size\kern\numberlines@skip\the\@tempcnta}} + \ifdim\@tempdima<\textheight\repeat + \vss + }% + % + \ht\numberlines@box\z@ + \dp\numberlines@box\z@ + } + + \def\put@numberlines@box{\lower\numberlines@box@skip\hbox to\z@{\hss\copy\numberlines@box}} + + \AtBeginDocument{\set@numberlines@box} + +\fi + +%**************** INICIALIZATION + +\@twosidetrue +\pagenumbering{arabic} +\frenchspacing +%\init@settings +\pagestyle{bmcheadings} + +\endinput +%% +%% End of file `bmcart.cls'.