Skip to main content
All modules

TemplateJournalsbiologymedicine

BMC (BioMed Central)

Official bmcart class for BioMed Central journals such as BMC Biology, BMC Bioinformatics, and Genome Biology, with the bmc-mathphys bibliography style.

LPPL 1.0+

Loading PDF preview…

What’s inside

  • Starter files
  • main.tex2.1 KB
    % Trimmed from the official BMC LaTeX template (bmc_article.tex),
    % http://media.biomedcentral.com/content/production/bmc_article-tex.zip
    \documentclass{bmcart}
    
    \usepackage[utf8]{inputenc}
    
    \startlocaldefs
    \endlocaldefs
    
    \begin{document}
    
    \begin{frontmatter}
    
    \begin{fmbox}
    \dochead{Research}
    
    \title{A sample article title}
    
    \author[
       addressref={aff1},
       corref={aff1},
       email={first.author@example.edu}
    ]{\inits{FA}\fnm{First} \snm{Author}}
    \author[
       addressref={aff2},
       email={second.author@example.org}
    ]{\inits{SA}\fnm{Second} \snm{Author}}
    
    \address[id=aff1]{%
      \orgname{Department of Biology, Example University},
      \city{City},
      \cny{Country}
    }
    \address[id=aff2]{%
      \orgname{Example Research Institute},
      \city{City},
      \cny{Country}
    }
    \end{fmbox}
    
    \begin{abstractbox}
    \begin{abstract}
    \parttitle{Background}
    BMC journals use a structured abstract; replace these part titles with the ones your target journal asks for.
    \parttitle{Results}
    Summarize the key findings here.
    \parttitle{Conclusions}
    State the take-home message.
    \end{abstract}
    
    \begin{keyword}
    \kwd{sample}
    \kwd{article}
    \kwd{template}
    \end{keyword}
    
    \end{abstractbox}
    
    \end{frontmatter}
    
    \section*{Background}
    Introduce the problem and cite prior work~\cite{darwin1859,doudna2014}. BMC journals use unnumbered sections; check your journal's instructions for the required section order.
    
    \section*{Methods}
    Display equations are numbered:
    \begin{equation}
      \frac{dS}{dt} = -\beta S I, \qquad \frac{dI}{dt} = \beta S I - \gamma I.
      \label{eq:sir}
    \end{equation}
    
    \section*{Results}
    Refer to Eq.~(\ref{eq:sir}) in the text. Small tables go in standard \texttt{table} environments; figures are referenced by caption at submission.
    
    \section*{Conclusions}
    Summarize the findings. Ask the agent in the chat to draft sections, structure the abstract, or format your reference list for you.
    
    \begin{backmatter}
    
    \section*{Competing interests}
    The authors declare that they have no competing interests.
    
    \section*{Acknowledgements}
    Thanks and funding notes go here.
    
    \bibliographystyle{bmc-mathphys}
    \bibliography{references}
    
    \end{backmatter}
    \end{document}
    
  • Libraries and docs
  • bmc-mathphys.bst60 KB
    %% This is file `bmc-mathphys.bst' (created: 2011-12-27)
    %% Compatible with bibtex version 0.99d.
    %%
    %% Please submit bugs or your comments to vtex@vtex.lt
    %% Start subject with a "[BMC] bibtex: " + subject
    %%
    %% Sorting entries is done by name and year fields!
    %%
    %% You are free to use this style file 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.
    %%
    %% LIMITATIONS:
    %% If you are getting error like
    %% "Sorry---you've exceeded BibTeX's number of string global-variables"
    %% that means you are using to old bibtex version. You should download latest version 0.99d. 
    %% (One of the binaries location is minimals.contextgarden.net/current/bin/common/)
    %%
    %% BibTeX programming: Linas Stonys, VTeX, Lithuania, lstonys@vtex.lt
    %
    % Changes:
    % 2013-07-15 -- added XML output (taken from bmc_article.bst) v2.0
    %
    % Settings:
    % It's possible to pass few options to bibtex style via @settings reference. 
    % To validate options, need to write that reference (@settings) citeing key (f.e: \citation{foo}) 
    % to aux file. From tex file it can be done with \nocite{} command.
    %
    %	Examples:
    %		1) To make unsorted bibliography (bibs listed as cited)  
    %			a) write to bib file:
    %				@settings{label, options="unsort"}
    %			b) write in tex file \nocite{label}
    %		
    %		2) To make author-year bibliography
    %			a) write to bib file:
    %				@settings{label, options="nameyear"}
    %			b) write in tex file \nocite{label}
    %		
    %		3) To make alphanumerical unsorted bibliography (bibs listed as cited)  
    %			a) write to bib file:
    %				@settings{label, options="alpha,unsort"}
    %			b) write in tex file \nocite{label}
    % 
    % By default, style produces unsorted bibliography. 
    %
    
    ENTRY
      { address
        author
        booktitle
        bnumber
        chapter
        doi
        edition
        editor
        howpublished
        institution
        isbn
        journal
        key
        month
        note
        number
        organization
        pages   
        publisher
        school
        series
        title
        type
        volume
        year
        url
        info
        options
        urldate
        eprint
      }
      {}
      { label extra.label sort.label short.list}
    
    INTEGERS { output.state before.all mid.sentence after.sentence
               after.block after.authors between.elements bother
               Nisbn Nmonth slen set.settings tmp month.printed}
    
    FUNCTION {init.state.consts}
    { #0 'before.all :=
      #1 'mid.sentence :=
      #2 'after.sentence :=
      #3 'after.block :=
      #4 'after.authors :=
      #5 'between.elements :=
    }
    
    STRINGS { s t  element}
    STRINGS { longest.label last.label list.string default.list}
    STRINGS { v l f j b temp.str}
    
    FUNCTION {output.nonnull}
    { 's :=
      output.state mid.sentence =
        { " " * write$ newline$}
        { output.state after.block =
            { add.period$ write$
              newline$
            }
            {
              output.state after.authors =
              { ": " * write$
                newline$
              }
              { output.state between.elements =
                  { ", " * write$ newline$}
                  { output.state before.all =
                      'write$
                      { add.period$ " " * write$ newline$}
                    if$
                  }
                if$
              }
              if$
            }
          if$
          mid.sentence 'output.state :=
        }
      if$
      s
    }
    
    FUNCTION {output}
    { duplicate$ empty$
        'pop$
        'output.nonnull
      if$
    }
    
    FUNCTION {output.check}
    { 't :=
      duplicate$ empty$
        { pop$ "empty " t * " in " * cite$ * warning$ }
        'output.nonnull
      if$
    }
    FUNCTION {fin.entry}
    { write$ newline$ }
    
    FUNCTION {stupid.colon}
    { after.authors 'output.state := }
    
    
    FUNCTION {insert.comma}
    { output.state before.all =
        'skip$
        { between.elements 'output.state := }
      if$
    }
    
    FUNCTION {new.sentence}
    { output.state after.block =
        'skip$
        { output.state before.all =
            'skip$
            { after.sentence 'output.state := }
          if$
        }
      if$
    }
    
    FUNCTION {not}
    {   { #0 }
        { #1 }
      if$
    }
    
    FUNCTION {and}
    {   'skip$
        { pop$ #0 }
      if$
    }
    
    FUNCTION {or}
    {   { pop$ #1 }
        'skip$
      if$
    }
    
    
    FUNCTION {field.or.null}
    { duplicate$ empty$
        { pop$ "" }
        'skip$
      if$
    }
    
    FUNCTION {sort.format.month}
    { 't :=
        t #1 #2 substring$ "01" =
        t	#1 #1 substring$ "1" =
        t	#2 #2 substring$ "" =
        and or
        { "January" }
        { t #1 #2 substring$ "02" =
          t	#1 #1 substring$ "2" =
          t	#2 #2 substring$ "" =
          and or
          { "February" }
          { t #1 #2 substring$ "03" =
             t #1 #1 substring$ "3" =
             t	#2 #2 substring$ "" =
             and or
            { "March" }
            { t #1 #2 substring$ "04" =
              t #1 #1 substring$ "4" =
              or
              { "April" }
              { t #1 #2 substring$ "05" =
                 t #1 #1 substring$ "5" =
                 or
                { "May" }
                { t #1 #2 substring$ "06" =
                  t #1 #1 substring$ "6" =
                  or
                  { "June" }
                  { t #1 #2 substring$ "07" =
                    t #1 #1 substring$ "7" =
                    or
                    { "July" }
                    { t #1 #2 substring$ "08" =
                       t #1 #1 substring$ "8" =
                       or
                      { "August" }
                      { t #1 #2 substring$ "09" =
                        t #1 #1 substring$ "9" =
                        or
                        { "September" }
                        { t #1 #2 substring$ "10" =
                          { "October" }
                          { t #1 #2 substring$ "11" =
                            { "November" }
                            { t #1 #2 substring$ "12" =
                              { "December" }
                              { t } % No match
                            if$
                            }
                          if$
                          }
                        if$
                        }
                      if$
                      }
                    if$
                    }
                  if$
                  }
                if$
                }
              if$
              }
            if$
            }
          if$
          }
        if$
        }
      if$
     
    }
    
    INTEGERS {sk}
    FUNCTION {is.num}
    {	chr.to.int$
       duplicate$ "0" chr.to.int$ < not
      swap$ "9" chr.to.int$ > not and
    }
    
    FUNCTION {make.tag}
    { 't :=
      duplicate$ empty$
        { pop$ "" }
        { bother #0 =
          {	
            t "volume" =
              {"\textbf{"  swap$ * "}" * }
              'skip$
            if$
          }
          { "\b" t * "{" * swap$ * "}" * }
        if$
        }
      if$
    }
    
    
    
    FUNCTION {springer.publisher}
    {publisher #1 #8 substring$ "Springer" =
        { "Springer"  }
        { publisher }
     if$
    }
    
    FUNCTION {format.pub.address}
    { publisher empty$
      howpublished empty$
      and
        { 
        address empty$
          'skip$
            {	volume empty$
                'insert.comma
                'new.sentence
              if$
              address
              type$ "inproceedings" =
                {"conflocation"}
                {"location"}
               if$	
              make.tag output
            }
          if$
        }
        { 
          address empty$
            {	publisher empty$
                {howpublished} 
                {springer.publisher} 
              if$ 
               "publisher" make.tag
              #1 bother =
                {", \blocation{???}" *  }
                'skip$
               if$
               output   
            }
            {
              publisher empty$
                {howpublished } 
                {springer.publisher } 
               if$ 
              "publisher" make.tag output
              insert.comma
              address "location" make.tag output
            }
          if$
        }
      if$
    }
    
    INTEGERS { nameptr namesleft numnames }
    
    FUNCTION {mk.tag}
    { 'temp.str :=
      duplicate$ empty$
        { pop$ "" }
        { 
          b "nothing" =
            'skip$
            { "\b" temp.str * "{" * swap$ * "}" * }
          if$
        }
      if$
    }
    
    FUNCTION {space.after.dot}
    {'j :=
      t 'f :=
      j 't := 
      s 'j :=
      "" 'l :=
      "" 's :=
      { t empty$ not }
      {   
        t #1 #3 substring$ "{-}" =
          { l  " {q}. " * 'l :=
            t #4 global.max$ substring$ 't :=
          }
           'skip$ 	
        if$
    
        t #1 #1 substring$ 's :=
        l  s * 'l := 
        s "." = 
          { 
            t #2 #1 substring$ " " =
              'skip$
               {
                l  " " * 'l := 
                 t #2 #4 substring$ "{\,}" =
                   { t #5 global.max$ substring$ 't := }
                   'skip$
                if$ 
              } 
            if$  
          } 
          'skip$
        if$    
          t #2 global.max$ substring$ 't :=
      }
      while$
      f 't :=
      j 's :=
      l 
    }
    
    FUNCTION {fix.inits}{
      't :=
       "" 'element :=
      { t empty$ not }
      {  
        t #1 #3 substring$ ".q." =
          { element  ".-" * 'element :=
            t #3 global.max$ substring$ 't :=
           }
           {element  t #1 #1 substring$ * 'element :=}
        if$
      
        t #2 global.max$ substring$ 't :=
      }
      while$
      element
    }
    
    FUNCTION {fix.snm}{
      't :=
       "" 'element :=
      { t empty$ not }
      {  
        t #1 #3 substring$ "{-}" =
          {element  "-" * 'element :=
            t #3 global.max$ substring$ 't :=
           }
           {element  t #1 #1 substring$ * 'element :=}
         if$
      
        t #2 global.max$ substring$ 't :=
      }
      while$
      element
    }
    
    FUNCTION {enbrace.dash}{
      't :=
      "" 'element :=
      { t empty$ not }
      {  
        t #1 #1 substring$ "-" =
          {element  "{-}" * 'element :=}
           {element  t #1 #1 substring$ * 'element :=}
        if$
        t #2 global.max$ substring$ 't :=
      }
      while$
      element
    }
    
    FUNCTION {fix.name}{	
    
      enbrace.dash 's :=
      "" 'l :=
      "" 't :=
    
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
      { namesleft #0 > }
      {
         s nameptr "{vv~}{ll}{, jj}" format.name$
         s nameptr "{, ff}" format.name$ space.after.dot * 'l :=
        #1 nameptr = 
          {l 't :=}
          {t " and " * l * 't := }
        if$
        nameptr #1 + 'nameptr := 
        namesleft #1 - 'namesleft :=
      }
      while$
      t 
    }
    
    FUNCTION {name.separator}{
      namesleft #1 >
        {", " * }
        'skip$
      if$
    }
    
    FUNCTION {format.author.editor}
    { 'b :=
    
      bother #1 =
      b "nothing" =
      or
        'skip$
        {"b" b * 'b :=}
      if$
    
       b "editor"  =
       b "beditor" =
       b "nothing" =
       or or
        {editor 's :=}
        {author 's :=}
      if$
      
       %% modifying name
      s fix.name 's :=
    
      "" 't :=	
     
      #1 'nameptr :=
      s num.names$ 'numnames :=
      numnames 'namesleft :=
        
      s numnames "{ll}" format.name$ 'l :=
      l  "others" =
       l  "{others}" =
       l  "et al." =
       l  "{et al.}" =
       or or or
         {#1 'tmp :=}
         {#0 'tmp :=}
      if$
        
      { namesleft #0 > }
      {	s nameptr "{vv}" 	  format.name$           "particle" mk.tag  'v := 
        s nameptr "{ll}" 	  format.name$ fix.snm   "snm"      mk.tag  'l :=   
        s nameptr "{f{.}.}" format.name$ fix.inits "inits"    mk.tag  'f := 
         s nameptr "{jj}" 	  format.name$           "suffix"   mk.tag  'j := 
      
        
         namesleft #1 =
         tmp #1 = 
         and
           {	b "bauthor" =
             b "beditor" =
            or
              {"et al."}
               {"\betal"}
            if$
            #1 'tmp :=
          }
           {
             b "bauthor" =
             b "beditor" =
             or
              {"\oauthor{"}
              {
                 b "nothing" =
                   {""}
                  {"\b" b * "{" *}
                if$
              }
            if$			
    
            v empty$
              'skip$
              {v * " " *}
            if$
            
               l empty$
                'skip$
              { l *} 		
            if$			
      
               f empty$
              'skip$
              {", " * f *} 		
            if$
      
               j empty$
                'skip$
              {" "  * j *} 		
            if$
    
             b "nothing" =
               {""}
              {"}"}  
            if$
          
            * "" 't :=
          } 
        if$
    
        name.separator
        write$ 
            
        namesleft #1 >
        b "nothing" = not
        and
          {	namesleft #2 =
             tmp #1 =
             and
              'skip$
              'newline$
             if$
          }
          'skip$
        if$
    
        nameptr #1 + 'nameptr := 
        namesleft #1 - 'namesleft :=
      }
      while$
    }
    
    FUNCTION {format.editors}
    { editor empty$
        'skip$
        {
          bother #0 =
            {	author empty$
                 {"editor"}
                 {"nothing"}
                if$
            }
            {"editor"}
          if$  
          format.author.editor
          editor num.names$ #1 >
            { " (eds.)" }
            { " (ed.)" }
          if$
          write$
        }
      if$
    }
    
    FUNCTION {format.authors}
    { author empty$
        'skip$
        {"author"  format.author.editor}
      if$
    }
    
    FUNCTION {cite.author.editor}
    { 's :=
      s #1 "{vv~}{ll}" format.name$
      s num.names$ duplicate$
      #2 >
        { pop$ " et~al." * }
        { #2 =
            {	s #2 "{vv~}{ll}{ jj}{ f}" format.name$ "others" =
                { " et~al."  * }
                { " and " * s #2 "{vv~}{ll}" format.name$ * }
               if$
             }
             'skip$
            if$
        }
      if$
    }
    
    FUNCTION {check.auth.edit.org}
    {author empty$
      {
        editor empty$
          {
            organization empty$
              {""}
              {organization}
            if$		
          }
          {editor cite.author.editor}
        if$		
      }
      {author cite.author.editor}
     if$	
    }
    
    FUNCTION {check.year}
    {	year empty$
        {""}
        {year extra.label *}
      if$	
    }
    
    INTEGERS { multiresult char.num k int}
    INTEGERS {str.length count return save.num1 save.num2}
    FUNCTION {is.in.list}{
      'f :=
      %%%% saveing "s" and "t"
      s 'j :=
      f 's :=
      t 'f :=  
      list.string text.length$ 'str.length :=
      list.string 't :=
    %  s text.length$ 'slen :=
      int   'save.num1 :=
      count 'save.num2 :=
      #1 'int :=
      #1 'count :=
      #0 'return :=
        
        { count str.length = not 
          #0 str.length = not
          and
        }
        {
           count #1 + 'count :=
           t int #1 substring$ "," =
            {
              t #1 int substring$ s "," * =
                {
                   #1 'return :=
                   str.length 'count :=
                }
                'skip$
               if$
              
              int #1 + 'int :=
               t int global.max$ substring$ 't :=
              #0 'int :=
            }
            'skip$
          if$	
          int #1 + 'int :=
        }
      while$
    
      save.num1 'int   :=
      save.num2 'count :=
      
      #0 return =
        { s t =
            {#1 'return :=}
            'skip$
          if$
        }
        'skip$
      if$
      %%%% returning original "s" and "t"
      j 's :=
      f 't :=  
      
      return		
    }
    
    INTEGERS {bibitem.count}
    
    FUNCTION {print.count}
    { bibitem.count #1 + 'bibitem.count :=
      newline$
      "%%% " 
      bibitem.count int.to.str$ * write$
    }
    FUNCTION {output.bibitem}
    { print.count
      newline$
      "\bibitem"
      "nameyear" is.in.list
         {
           "[\protect\citeauthoryear{" * write$
               check.auth.edit.org write$ 
           "}{" write$ 
               check.year write$ 
           "}]" 
        }
        'skip$
      if$
      "alpha" is.in.list
         {
           "[" * write$
          label write$
          "]" 
        }
        'skip$
      if$
    
      "{" * write$  
      cite$ write$
      "}" write$
    
      newline$
      "" before.all 'output.state :=
    }
    
    
    FUNCTION {string.to.integer}
    { 't :=
      t text.length$ 'k :=
      #1 'char.num :=
      { t char.num #1 substring$ 's :=
         s is.num
         s "." =
         or 
         char.num k = not
         and
       }
       { char.num #1 + 'char.num := }
      while$
      char.num #1 - 'char.num :=
      t #1 char.num substring$   
    }
    
     
    FUNCTION {find.integer}
    { 't :=
      #0 'int :=
        { int not
          t empty$ not
          and
        }
        { t #1 #1 substring$ 's :=
          s is.num 
            {#1 'int :=}
            { t #2 global.max$ substring$ 't := }
          if$
        }
      while$
      int 
    }
    
    function{title.lowerwords}{
    "a,an,and,of,the,for,in,to,over,from,on,or,so,than,that,this,as,but,with,by,at,down,up,upon,al,ale,aus,aux,d'Analyse,d'Analystes,d'Architecture,d'Etudes,d'Histoire,da,dans,de,degli,dei,del,"
    "dell',dell'Accademia,dell'Istituto,dell'Universita,della,delle,dem,der,des,detta,di,die,din,dlia,do,du,e,eXpress,ed,ego,el,em,en,et,fur,i,iz,l'Academie,l'Age,l'Antiquite," *
    "l'Approximation,l'Ecole,l'Histoire,l'I.S.U.P.,l'INSA,l'IREM,l'Indirizzo,l'Institut,l'Institute,l'UFR,l'Union,l'Universite,la,las,les,na,nella,per,po,si,sue,sur,ta,tes,und,van,voor,zu,zum,zur" *
    }
    
    FUNCTION {upercase.first.letters}{
      't :=
      "" 's :=
      #1 'int :=
      #1 'count :=
      list.string  'v :=
      "" 'b :=
      title.lowerwords 'list.string :=	
    
      t text.length$ 'slen :=
      
        {count slen = not }
        {t int #1 substring$ " " =
            {
              int #1 - 'int :=
              t #1 int substring$ 'b :=
              
              % if word not in title.lowerwords - uppercase first letter
              b is.in.list not
                {	b "l" change.case$ b =
                    { b "u" change.case$ "t" change.case$ 'b := }
                    'skip$
                  if$
                }
                'skip$
              if$
              
              int #1 + 'int :=
    
              s b " " *  * 's :=
              int #1 + 'int :=
               t int global.max$ substring$ 't :=
              #0 'int :=
            }
            'skip$
          if$	
          int #1 + 'int :=
          count #1 + 'count :=
    %			"count=" count int.to.str$ * " slen=" * slen int.to.str$ * top$
        }
      while$
      v 'list.string :=	
      % last word is "t" and need to check it too 
      s t
      t "l" change.case$ t =
        { "u" change.case$ "t" change.case$ }
        'skip$
      if$
      *
    }
    
    
    FUNCTION {format.title}
    { title empty$
        { "" }
        { title  
          "article" type$ =
          type$ "techreport" =
          type$ "inbook" =
          type$ "inproceedings" =
          type$ "incollection" =
          type$ "phdthesis" =
          type$ "mastersthesis" =
          or or or or or or
             {"t" change.case$}
             {	type$ "unpublished" =
               type$ "misc" =
               or
                 'skip$
                'upercase.first.letters
              if$
            }
          if$
        }
      if$
    }
    
    
    FUNCTION {note.presented}
    {	note #1 #9 substring$ "presented" = 
       note #1 #9 substring$ "Presented" = 
      or
    }
     
    FUNCTION {n.filter}
    { 't :=
      ""
      { t empty$ not }
      { t #1 #1 substring$ "," =
        t #1 #1 substring$ "\" =
        t #1 #1 substring$ "~" =
        or or
          { "" * 
            t #2 global.max$ substring$ 't := 
          }
          { t #1 #1 substring$ *
            t #2 global.max$ substring$ 't :=
          }
        if$
      }
      while$
    }
    
    FUNCTION {byear}
    { duplicate$ empty$
        { pop$ "" }
        {	't :=
           t text.length$ 'sk :=
          #5 sk =
            {	t #1 #4 substring$ 's :=
              t #5 #1 substring$ 'longest.label :=
              longest.label is.num not	
                {s "year" make.tag  
                  "nameyear" is.in.list	
                    {longest.label * }
                    'skip$
                  if$
                }
                {t "year" make.tag }
              if$
            }
            {	t "year" make.tag 
              "nameyear" is.in.list						
                {extra.label *}
                'skip$
              if$
            }
          if$
        }
      if$    
    }
    
    FUNCTION {format.date}
    { year empty$
        { "" }
        { year byear }
      if$
    }
    
    FUNCTION {parens}
    { "(" swap$ * ")" * }
    
    FUNCTION {format.date.parens}
    { year empty$
        { "" }
        { year byear parens }
      if$
    }
    
    FUNCTION {format.month}{ 
      month empty$
        {""}
        {month sort.format.month "confdate" make.tag}
      if$
    }
    
    FUNCTION {formatpatent.date}
    { year empty$
        'skip$
        { month empty$
           { year }
           {format.month " " * year *}
          if$
        }
      if$
    }
    
    FUNCTION {month.year.date}
    { year empty$
        {""}
        { month empty$
            {year byear}
            { format.month " " * year byear * }
          if$
          type$ "inproceedings" =
            'skip$
            {"(" swap$ * ")" * }
          if$
        }
      if$
    }
    
    FUNCTION {tie.or.space.connect}
    { duplicate$ text.length$ #3 <
        { "~" }
        { " " }
      if$
      swap$ * *
    }
    FUNCTION {format.volume}
    { volume empty$
        { "book" type$ =
            {number empty$
              {""}
              {"vol. " number "seriesno" make.tag *}
              if$
            }
            {""} 
          if$
        }
        {"vol. " volume "seriesno" make.tag *}
      if$
    }
    FUNCTION {format.volume2}
    { volume empty$
        {""} 
        {"vol. " volume "seriesno" make.tag *}
      if$
    }
    
    FUNCTION {format.art.vol}
    { 
     volume empty$
      {""}
      {volume n.filter "volume" make.tag}
      if$
      number empty$
        'skip$
        { "(" number "issue" make.tag * ")" * * }
      if$
    }
    
    FUNCTION {format.series}
    { series empty$
      'skip$ 
        {series "sertitle" make.tag}
      if$
    }
    
    FUNCTION {format.edition}
    { edition empty$
        { "" }
        { "" 'v :=
          "" 'l :=    
          "" 'f :=    
          edition "l" change.case$ 's :=
             "1" s =
             "first" s =  			
             or
               {
                 "1" 'v :=
                "st" 'l :=  
               }
               {
                 "2" s =
                 "second" s =  			
                 or
                   {
                     "2" 'v :=
                    "nd" 'l :=  
                   }
                   {
                     "3" s =
                     "third" s =  			
                     or
                       {
                         "3" 'v :=
                        "rd" 'l :=  
                       }
                       {
                         "4" s =
                         "fourth" s =  			
                         or
                           {
                             "4" 'v :=
                            "th" 'l :=  
                           }
                           {
                             "5" s =
                             "fifth" s =  			
                             or
                               {
                                 "5" 'v :=
                                "th" 'l :=  
                               }
                               {
                                 "6" s =
                                 "sixth" s =  			
                                 or
                                   {
                                     "6" 'v :=
                                    "th" 'l :=  
                                   }
                                   {
                                     "7" s =
                                     "seventh" s =  			
                                     or
                                       {
                                         "7" 'v :=
                                        "th" 'l :=  
                                       }
                                       {
                                         "8" s =
                                         "eighth" s =  			
                                         or
                                           {
                                             "8" 'v :=
                                            "th" 'l :=  
                                           }
                                           {
                                             "9" s =
                                             "nineth" s =  			
                                             or
                                               {
                                                 "9" 'v :=
                                                "th" 'l :=  
                                               }
                                               {
                                                   edition "t" change.case$ 'f :=
                                               }
                                             if$	 
                                           }
                                         if$	 
                                       }
                                     if$	 
                                   }
                                 if$	 
                               }
                             if$	 
                           }
                         if$	 
                       }
                     if$	 
                   }
                 if$	 
               }
             if$	 
            #0 bother =		
               {	f "" =
                   { v l *	'f :=}
                   'skip$
                 if$
               }
               {	f "" =
                   { "\bedition{" v * "}" * l *	'f :=}
                   { "\bedition{" f * "}" *	'f :=}
                 if$
               }
           if$
           f " edn." *
        }
      if$
    }
    FUNCTION {format.isbn}
    { isbn empty$
        { "" }
        { isbn "isbn" make.tag}	
      if$
    }
    
    INTEGERS {default.info}
    
    
    FUNCTION {multi.page.check}
    { 't :=
      #0 'multiresult :=
      "" 'l :=
    
        {t empty$ not}
        { t #1 #1 substring$  's :=
          
          s is.num not
            { "" l = not
                {t find.integer 
                    {#1 'multiresult := }
                    {#0 'multiresult := }
                    if$
                    "" 't :=
                 }
                 {
                 t #2 global.max$ substring$ 't :=
                 }
               if$	
            }
            { l  s * 'l :=
              t #2 global.max$ substring$ 't := 
            }
          if$
        }
      while$
      multiresult 
    }
    FUNCTION {clearpage}
    { 't :=
      "" 's :=
      "" 'l :=
      
        { t empty$ not }
        {
          t #1 #1 substring$ 's :=
          s is.num not
            'skip$
            {	l  s * 'l := 	}
          if$
          t #2 global.max$ substring$ 't :=
        }
      while$
      l
           
    }
    FUNCTION {do.pages}
    {'t :=
      "" 'j :=
      "" 'v :=
        {t empty$ not}
        { t #1 #1 substring$  's :=
          s is.num not
          s "," = not
          and
            { "" j = 
                 {
                   t #2 global.max$ substring$ 't :=
                 }
                {t find.integer 
                    { t clearpage  'v := }
                    'skip$
                    if$
                    "" 't := 
                 }
               if$	
            }
            {	j  s * 'j :=
                t #2 global.max$ substring$ 't := 
            }
          if$
        }
      while$
      j clearpage  'j :=
      j  "fpage" make.tag 
      "cnd" is.in.list
        'skip$
        {"--"  * v "lpage" make.tag *}
      if$
    }
    
    
    FUNCTION {format.pages}
    { pages empty$
        { "" }
        { pages multi.page.check
            {type$ "article" =
              {""}
              {"cnd" is.in.list
                 {"p. "}
                 {"pp. "}
                if$ 
              } 
             if$	
              pages do.pages *
            }
            {type$ "article" =
              {""}
              {"p. "} 
             if$	
              pages clearpage "fpage" make.tag *
            }
    
          if$
        }
      if$
    }
    
    FUNCTION {replace.tilde}
    { 't :=
      ""
        { t empty$ not }
        { t #1 #1 substring$ "~" =
                {   { t #1 #1 substring$ "~" = }
                    { "\texttildelow " *
                      t #2 global.max$ substring$ 't :=
                    }
                  while$
                }
            { t #1 #1 substring$ *
              t #2 global.max$ substring$ 't :=
            }
          if$
        }
      while$
    }
    
    
    FUNCTION {format.url}
    { url empty$
        'skip$
        { type$ "article" =
            'skip$	
            {	#0 bother =
                { "\url{" }
                 { "\burl{" }
              if$
              url replace.tilde * "}" * 
              output	
            }
          if$
           
           urldate empty$
               'skip$
             { "Accessed " urldate * output }
           if$
        }	
      if$
    }
    
    FUNCTION {publisher.month.pages}{
      publisher empty$ series empty$ and
         { address empty$
             'skip$
             'new.sentence
           if$
          format.pub.address
           
          pages empty$
            'skip$
             {insert.comma}
          if$  
           format.pages output
         
         }
         {
          pages empty$
              'skip$
              {insert.comma}
          if$  
          format.pages output
          publisher empty$
             'skip$
            {new.sentence}
          if$
          format.pub.address
         }
      if$
    }
    
    function{process.doi}{
      doi 't :=
        "" 'b :=
        #1 'int :=
    % 	"doi =" t * top$
    
      t text.length$ 'slen :=
      
        {int slen = not }
        {t int #3 substring$ "10." =
            {
              t int #1 - #1 substring$ 'b :=
              b "" = 
                {"a" 'b :=} % if b is empty need to set a letter
                'skip$
              if$
                
              b is.num not
                {
                   t int slen int - #1 + substring$ 't :=
                  slen #1 - 'int := 
                }
                'skip$
              if$
              
            }
            'skip$
          if$	
          int #1 + 'int :=
        }
      while$
      t
    }
    
    FUNCTION {format.doi}
    { doi empty$
      {""}
      { 
         "nodoi" is.in.list
          {""}
          {"doi:\doiurl{" process.doi * "}" * }
         if$
      }
      if$
    }
    
    FUNCTION {format.in.ed.booktitle}
    { booktitle empty$
        {#1 bother =
         "cnd" is.in.list not
         and
              { editor empty$
                    'skip$
                    { "In: " output write$ format.editors }
                if$
              }
              'skip$
          if$
        }
        { editor empty$
            { "In: " booktitle upercase.first.letters "btitle" make.tag * output}
            { "In: " output write$ format.editors  "" %%% pushing empty string to the empty stack
               booktitle upercase.first.letters "btitle" make.tag  output 
            }
          if$
        }
        
      if$
    }
    
    FUNCTION {format.in.ed}
    { title empty$
        'skip$
        { editor empty$
             {  title "btitle" make.tag output}
             { author empty$
              {  format.editors
                  stupid.colon
                  %format.date output
                  title "btitle" make.tag output
              }
              { "In: " output write$ format.editors  "" %%% pushing empty string to the empty stack
                title "btitle" make.tag output
              }
            if$
            }
         if$
         }
      if$
    }
    
    FUNCTION {format.tr.number}
    { type empty$
        { "Technical Report" }
        'type
      if$
      number empty$
        { "t" change.case$ }
        { number tie.or.space.connect }
      if$
    }
    
    FUNCTION {patent.number}
    { number empty$
        'skip$
        { number }
      if$
    }
    INTEGERS { len }
    
    FUNCTION {chop.word}
    { 's :=
      'len :=
      s #1 len substring$ =
        { s len #1 + global.max$ substring$ }
        's
      if$
    }   
     
    FUNCTION {format.inpres}
    { "l" change.case$ 't :=
      "in press: " #10
      "in press. " #10
      "in press " #9 t chop.word
      chop.word
      chop.word
      #1 global.max$ substring$
    }
    
    FUNCTION {bcomment.note}
    {	note empty$
        'skip$
         {note format.inpres "comment" make.tag output}
       if$
    }
    
    FUNCTION {empty.misc.check}
    { author empty$ title empty$ howpublished empty$
      month empty$ year empty$ note empty$
      and and and and and
        { "all relevant fields are empty in " cite$ * warning$ }
        'skip$
      if$
    }
    
    FUNCTION {format.thesis.type}
    { type empty$
        'skip$
        { pop$
          type "t" change.case$
        }
      if$
    }
    
    FUNCTION {format.chapter.and.note}
    {	note empty$ chapter empty$ organization empty$ and and
        'skip$
        {	chapter empty$
          "notnumber" last.label =
          or
            {organization empty$
                {	note "comment" make.tag output }
                {	note empty$
                    { organization "comment" make.tag output }
                    { organization ". " * note * "comment" make.tag output }
                 if$
                }
             if$
            }
            {	note empty$
                {	"Chap. "  chapter * "comment" make.tag output}
                {	type empty$
                    { "Chap. " }
                    { type "t" change.case$ "Section" = 
                         {	"Sect. " }
                        { "Chap. " }
                      if$	
                    }
                  if$
                  chapter * ". " * note * "comment" make.tag  output
                }
              if$
            }
          if$
        }
      if$		
    }
    
    FUNCTION {item.end}
    {	chapter empty$
      type$ "unpublished" = not 
      type$ "misc" = not 
      and	and
        {	new.sentence
          format.doi  output
        }
        'skip$
      if$
      
      type$ "unpublished" =
      type$ "misc" =
      or
        {	note empty$
            'skip$
            {note.presented
                'skip$
                {new.sentence note output}
             if$		
            }
          if$	
          format.date.parens output
        }
        { new.sentence
          type$ "proceedings" =
            {	author empty$ editor empty$ and
                'bcomment.note
                 'format.chapter.and.note 
               if$	
            }
             'format.chapter.and.note 
           if$		
        }
      if$
      list.string  'v :=
      default.list  'list.string :=
    
      type$ ".isbn" * is.in.list
      "cnd" is.in.list 
        or
        {
         new.sentence 
           format.isbn output
        }
         'skip$
      if$
      new.sentence
      eprint empty$
        'skip$
        {"\arxivurl{" eprint * "}" * output}
      if$ 
      chapter empty$
      type$ "unpublished" = not 
      type$ "misc" = not 
      and	and
        'skip$
        {	new.sentence
          format.doi  output
        }
      if$
      new.sentence
      format.url 
      v 'list.string :=
      fin.entry
    }
    FUNCTION {insert.element}
    {	#0 bother =
        {	element "{botherref}" * write$ newline$}
        {
          type$ "article" =
            {element "{barticle}" * write$ newline$}
            'skip$
          if$
          type$ "book" =
          type$ "proceedings" =
          type$ "manual" =
          type$ "booklet" =
          or or or 
            {element "{bbook}" * write$ newline$}
            'skip$
          if$
          
          type$ "inbook" =
            {	"notnumber" last.label =
                {element "{bchapter}" * write$ newline$}
                {element "{bbook}" * write$ newline$}
              if$	
            }
            'skip$
          if$
          
           type$ "incollection" =
           type$ "inproceedings" =
           type$ "conference" =
           or or
            {element "{bchapter}" * write$ newline$}
            'skip$
          if$
         }
      if$
    }
    FUNCTION {end.element}
    { "\end" 'element :=
      item.end
      insert.element
      "\endbibitem" write$ newline$
    }
    FUNCTION {begin.element}
    { "\begin" 'element :=
      insert.element
    }
    function {set.options}{
      options empty$
        'skip$
        {options 'list.string :=}
      if$	
    }
    
    FUNCTION {settings}
    {}
    
    FUNCTION {article}
    { output.bibitem
      author empty$
      institution empty$ 
      editor empty$
      and and
      journal empty$ 
      or
      year empty$ 
       or 
      %	above tagging rule means:
      % nead: (volume & (pages or number) ) or (doi [without volume, pages and number])
        volume empty$ not  
        pages empty$ not bnumber empty$ not or
        and
        
        volume empty$ pages empty$ bnumber empty$ and and
        doi empty$ not and  
        or
        not
      or
        {#0 'bother :=} 
         {#1 'bother :=}				 		  
      if$	
      begin.element
      author empty$
        { editor empty$
            'skip$
             {format.editors stupid.colon}
          if$
        }
        { format.authors stupid.colon}
      if$
      "cnd" is.in.list
        {
          journal empty$
            {format.title "atitle" make.tag "title" output.check}
             {journal "jtitle" make.tag  output}
          if$
        }
        {
          format.title "atitle" make.tag "title" output.check
          journal empty$
            'skip$
            {new.sentence journal "jtitle" make.tag  output}
          if$
        }
      if$	
       format.art.vol output
      pages empty$
        'skip$
        {insert.comma}
      if$
       format.pages output
       format.date.parens output
      end.element
    }
    
    
    FUNCTION {patent}
    { output.bibitem
      #0 'bother :=
      begin.element
      author empty$
      'skip$
        {format.authors stupid.colon}
      if$
      format.title "title" output.check
      add.period$
      patent.number output
      insert.comma
       formatpatent.date output
      end.element
    }
    
    FUNCTION { other } { patent }
    
    FUNCTION {book}
    { output.bibitem
      author empty$
      institution empty$ 
      organization empty$ 
      editor empty$
      and and and
      title empty$ 
       year empty$ 
       or or
        {#0 'bother :=} 
        {
          publisher empty$ address empty$ not and
            {#0 'bother :=} 
            {#1 'bother :=}
          if$
        } 
      if$	
      begin.element
      author empty$
        { editor empty$
          'skip$
           {format.editors stupid.colon}
          if$
        }
        { format.authors stupid.colon}
      if$
      format.title "btitle" make.tag "title" output.check
       series empty$
        {
          format.volume output
          insert.comma 
          format.edition output
        }
        {	edition empty$
            'skip$
            'insert.comma
          if$
          format.edition output
          new.sentence
          format.series output
          insert.comma 
          format.volume output
        }
      if$ 
      publisher.month.pages
      format.date.parens output
      end.element      
    }
    
    FUNCTION {booklet}
    {output.bibitem
      author empty$
      title empty$ 
       year empty$ 
       howpublished empty$  
       or or or
        {#0 'bother :=} 
        {#1 'bother :=} 
      if$	
    
      begin.element
      author empty$
        'skip$
        {format.authors stupid.colon}
      if$
      format.title "btitle" make.tag "title" output.check
      address empty$ publisher empty$ howpublished empty$ and and
        'skip$
        'new.sentence
      if$
      format.pub.address
      format.date.parens output
      end.element
    }
    
    FUNCTION {misc}
    {output.bibitem
       #0 'bother :=
      begin.element
      author empty$
        'skip$
        {format.authors stupid.colon}
      if$
      format.title "btitle" make.tag "title" output.check
      address empty$ publisher empty$ howpublished empty$ and and
        'skip$
        'new.sentence
      if$
      format.pub.address
      end.element
    }
    
    FUNCTION {inbook}
    { output.bibitem
       author empty$
      institution empty$ 
      organization empty$ 
      editor empty$
      and and and
      title empty$ 
       year empty$ 
       or or 
        {#0 'bother :=} 
        {
          publisher empty$ address empty$ not and
            {#0 'bother :=} 
            {#1 'bother :=}
          if$
        } 
      if$	
    
      chapter empty$
        {	"" 'last.label :=}
          {	chapter string.to.integer empty$ author empty$ not and
              {	"notnumber" 'last.label :=}
              {	"" 'last.label :=}
            if$
          }
        if$
      
      begin.element
       author empty$
        'skip$
        {format.authors stupid.colon}
      if$ 
      "notnumber" last.label =
        {	chapter "ctitle" make.tag output
          add.period$
        }
        'skip$
      if$
      format.in.ed 
      series empty$
        {
          insert.comma 
          format.volume output
          insert.comma 
          format.edition output
          new.sentence
        }
        {
          insert.comma
          format.edition output
          new.sentence
          format.series output
          volume empty$
            'skip$
             'insert.comma
          if$  
          format.volume output
        }
      if$ 
      publisher.month.pages
      publisher empty$ address empty$ edition empty$ series empty$ pages empty$ volume empty$ and and and and and
        'insert.comma
        'skip$
      if$
      format.date.parens output
      end.element
    }
    FUNCTION {incollection}
    { output.bibitem
      author empty$
      institution empty$ 
      and
      booktitle empty$ 
      title empty$
      year empty$ 
       or or or
        {#0 'bother :=} 
        {
          publisher empty$ address empty$ not and
            {#0 'bother :=} 
            {#1 'bother :=}
          if$
        } 
      if$	
      begin.element
      author empty$
        'skip$	
        {format.authors stupid.colon}
      if$		 
    
      "cnd" is.in.list
        {
          booktitle empty$ title empty$ not and
             {
              format.title "ctitle" make.tag "title" output.check
              new.sentence
            }
            'skip$
          if$		 
        }
        {
          format.title "ctitle" make.tag "title" output.check  
           title empty$
             'skip$
              {new.sentence}
           if$
        }
      if$
      format.in.ed.booktitle 
      series empty$
         {
            format.volume output
            insert.comma 
            format.edition output
         }
         {
            edition empty$
              'skip$
               {	insert.comma
                  format.edition output
              } 
            if$
            new.sentence 
            format.series output
            insert.comma
            format.volume output
         }
      if$ 
       publisher.month.pages
      format.date.parens output
      end.element
    }
    
    FUNCTION {inproceedings}
    { output.bibitem
      author empty$
      institution empty$ 
      and
      title empty$ 
      year empty$ 
       or or
        {#0 'bother :=} 
        {#1 'bother :=}
      if$	
      begin.element
      author empty$
      'skip$
        {format.authors stupid.colon}
      if$
      
      "cnd" is.in.list
        {
          booktitle empty$ title empty$ not and
             {
              format.title "ctitle" make.tag "title" output.check
              new.sentence
            }
            'skip$
          if$		 
        }
        {
          format.title "ctitle" make.tag "title" output.check
           title empty$ booktitle empty$ not and
            'skip$
            {new.sentence}
          if$
        }
      if$
     
      format.in.ed.booktitle 
      series empty$
          'skip$
          {new.sentence format.series output}
      if$  
      volume empty$ address empty$ publisher empty$ and and 
        'skip$
        'insert.comma
      if$
      format.volume output
      publisher.month.pages
      format.date.parens output
      end.element
    }
    
    FUNCTION {conference} { inproceedings }
    
    FUNCTION {manual}
    {	output.bibitem
      author empty$
      organization empty$ 
      title empty$ 
       year empty$ 
       address  empty$ 
       or or or or
        {#0 'bother :=} 
        {#1 'bother :=} 
      if$	
      begin.element
    
      author empty$
        { organization empty$
            'skip$
            { organization "publisher" make.tag output.nonnull
              stupid.colon% add.period$
            }
          if$
        }
        { format.authors stupid.colon}
      if$
      title empty$
        'skip$
        {format.title "btitle" make.tag output}
       if$
      edition empty$
         {new.sentence}
         {insert.comma}
      if$
      format.edition output
      edition empty$
        'skip$
         {new.sentence}
      if$
       author empty$ organization empty$
       or
        'skip$
        { organization "publisher" make.tag output.nonnull
          insert.comma
        }
      if$
      address empty$
        'skip$
         {addres
  • bmcart-biblio.sty11 KB
    %%
    %% LaTeX 2e packagee for the processing of LaTeX2e files
    %% for the BioMed Central
    %% Additional commands for the processing of structured reference list
    %%
    %% 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\bmc@common@bibl@date{2012/03/06}
    
    \NeedsTeXFormat{LaTeX2e}
    \ProvidesPackage{bmcart-biblio}[\bmc@common@bibl@date
                                      additional macros for the bibliography tagging A++ XML DTD (VS)]
    
    % Default bibliography style:
    \def\bibliography@style{10}
    \def\bibliography@style@name{BMC Reference Style}
    \def\bibliography@key{bmc}
    
    % vykdoma tik pirma opcija (t.y. tai leidzia "permusti" opcija per
    % \documentclass[foo,..]
    
    \def\only@first#1{\@ifundefined{o@f@}{\def\o@f@{}#1}{}}
    
    \DeclareOption{undef}    {\only@first{\def\bibliography@style{0}\def\bibliography@key{undef}
                              \def\bibliography@style@name{undefined}}} 
    \DeclareOption{basic}    {\only@first{\def\bibliography@style{1}\def\bibliography@key{basic}
                              \def\bibliography@style@name{Basic Springer}}} 
    \DeclareOption{chemistry}{\only@first{\def\bibliography@style{2}\def\bibliography@key{chemistry}
                              \def\bibliography@style@name{Chemistry}}} 
    \DeclareOption{mathphys} {\only@first{\def\bibliography@style{3}\def\bibliography@key{mathphys}
                              \def\bibliography@style@name{Math and Physical Sciences}}} 
    \DeclareOption{aps}      {\only@first{\def\bibliography@style{4}\def\bibliography@key{aps}
                              \def\bibliography@style@name{American Physical Society}}} 
    \DeclareOption{cs}       {\only@first{\def\bibliography@style{5}\def\bibliography@key{cs}
                              \def\bibliography@style@name{Computer Science}}}
    \DeclareOption{vancouver}{\only@first{\def\bibliography@style{6}\def\bibliography@key{vancouver}
                              \def\bibliography@style@name{Vancouver}}}
    \DeclareOption{apa}      {\only@first{\def\bibliography@style{7}\def\bibliography@key{apa}
                              \def\bibliography@style@name{APA}}}
    \DeclareOption{chicago}  {\only@first{\def\bibliography@style{8}\def\bibliography@key{chicago}
                              \def\bibliography@style@name{Chicago}}}
    \DeclareOption{ams}      {\only@first{\def\bibliography@style{9}\def\bibliography@key{ams}
                              \def\bibliography@style@name{AMS}}}
    \DeclareOption{bmc}      {\only@first{\def\bibliography@style{10}\def\bibliography@key{bmc}
                              \def\bibliography@style@name{BMC Reference Style}}}
    
    \ProcessOptions*
    
    
    %%% Common macros:
    \def\xml@attr{\@ifnextchar[{\get@attr}{\get@attr[]}}
    \def\get@attr[#1]#2{#2}
    
    \let\betal@style\relax
    
    \def\common@pub@types{%
      \let\binstitute\@firstofone%
      \def\betal{{\betal@style et al.}}%
      \let\byear\@firstofone%  
      \let\bfpage\@firstofone%
      \let\blpage\@firstofone%
      \let\binterref\xml@attr%
      \def\burl##1{{\csname burl@style\endcsname\surl{##1}}}
      \let\bcomment\@firstofone%
      \let\oauthor\@firstofone%
      \csname common@pub@types@hook\endcsname%
    }
    
    % Setting a "style" for a command:
    % \set@bibl@cmd{bvolume}  == \def\bvolume#1{{\bvolume@style #1}}
    
    \def\set@bibl@cmd#1{\expandafter\def\csname #1\endcsname##1{{\csname #1@style\endcsname##1}}}
    
    
    \AtBeginDocument{\let\doiurlchapter\doiurl}
    
    %%% BibEditorName 
    
    \def\xml@beditor#1{%
      \let\bprefix\@firstofone%
      \let\binits\@firstofone%
      \let\bsnm\@firstofone%
      \let\bparticle\@firstofone%
      \let\bsuffix\@firstofone%
      \let\bdegs\@firstofone%
    #1}
    
    %%% BibAuthorName
    
    \def\xml@bauthor#1{%
      \let\bprefix\@firstofone%
      \let\binits\@firstofone%
    %  \let\bsnm\@firstofone%
      \def\bsnm##1{{\csname bsnm@style\endcsname##1}}%
      \let\bparticle\@firstofone%
      \let\bsuffix\@firstofone%
      \let\bdegs\@firstofone%
    #1}
    
    
    %%% bsertitle
    
    \def\xml@bsertitle{\@ifnextchar[{\@xml@bsertitle}{\@xml@bsertitle[]}}
    
    \def\@xml@bsertitle[#1]#2{{\csname bsertitle@style\endcsname #2}}%
    
    \def\xml@batitle{\@ifnextchar[{\@xml@batitle}{\@xml@batitle[]}}
    \def\@xml@batitle[#1]#2{{\csname batitle@style\endcsname #2}}%
    
    \def\xml@bctitle{\@ifnextchar[{\@xml@bctitle}{\@xml@bctitle[]}}
    \def\@xml@bctitle[#1]#2{{\csname bctitle@style\endcsname #2}}%
    
    \def\xml@bbtitle{\@ifnextchar[{\@xml@bbtitle}{\@xml@bbtitle[]}}
    \def\@xml@bbtitle[#1]#2{{\csname bbtitle@style\endcsname #2}}%
    
    
    
    %%% BibArticle
    % \begin{barticle}
    % ...
    % \end{barticle}
    
    \def\barticle{%
      \common@pub@types%
      \let\bauthor\xml@bauthor%
      \let\batitle\xml@attr%
      \set@bibl@cmd{bjtitle}%
      \set@bibl@cmd{bvolume}%
      \set@bibl@cmd{bissue}%
      \let\bnumber\@firstofone%
    }
    \def\endbarticle{}
    
    
    %%% BibIssue
    % \begin{bissue}
    % ...
    % \end{bissue}
    
    \def\bissue{%
      \common@pub@types%
      \let\bauthor\xml@bauthor%
      \set@bibl@cmd{bjtitle}%
      \set@bibl@cmd{bvolume}%
      \set@bibl@cmd{bissue}%
      \set@bibl@cmd{bmonth}%
    }
    \def\endbissue{}
    
    
    %%% BibChapter
    % \begin{bchapter}
    % ...
    % \end{bchapter}
    
    \def\bchapter{%
      \common@pub@types%
      \let\bauthor\xml@bauthor%
      \let\bctitle\xml@attr% 
      \let\beditor\xml@beditor% 
      \let\binstitutionaled\@firstofone%
      \def\beds{eds.}%
      \let\bbtitle\xml@bbtitle
      \let\bedition\xml@attr% 
      \set@bibl@cmd{bconfname}%
      \set@bibl@cmd{bconflocation}%
      \set@bibl@cmd{bconfdate}%
      \let\bsertitle\xml@bsertitle% 
      \set@bibl@cmd{bseriesno}%
      \let\bpublisher\@firstofone% 
      \let\blocation\@firstofone%
      \let\bisbn\@firstofone%
    }
    
    \def\endbchapter{}
    
    %%% BibUnstructured
    % \begin{botherref}
    % ...
    % \end{botherref}
    
    \def\botherref{\let\binterref\xml@attr\let\oauthor\xml@bauthor\let\bauthor\xml@bauthor}
    \def\endbotherref{}
    
    
    %%% BibBook
    % \begin{bbook}
    % ...
    % \end{bbook}
    
    \def\bbook{%
      \common@pub@types%
      \let\bauthor\xml@bauthor% 
      \let\beditor\xml@beditor% 
      \let\binstitutionaled\@firstofone%
      \def\beds{eds.}%
      \let\bbtitle\xml@bbtitle
      \let\bedition\xml@attr% 
      \let\bconfname\@firstofone%
      \let\bconflocation\@firstofone%
      \let\bconfdate\@firstofone%
      \let\bsertitle\xml@bsertitle%
      \set@bibl@cmd{bseriesno}%
      \let\bpublisher\@firstofone%
      \let\blocation\@firstofone%
      \let\bisbn\@firstofone%
    }%
    
    
    \def\endbbook{}
    
    %%%
    \let\endbibitem\relax
    
    %%%%%% vancouver  puslapi nr. formavimas
    %% 17-19 -> 17-9
    %% 17-21 -> 17-21
    %% 1234-1345 -> 345
    
    \def\vcr@bfpage#1{%
      #1\nobreak%
      \test@if@number{#1}%
      \let\blpage\@firstofone%
      \if@page@isnumber\ifnum#1>9\def\@vcr@bfpage{#1}\let\blpage\fmt@blpage\fi\fi}
    
    
    \def\fmt@blpage#1{%
      \test@if@number{#1}%
      \if@page@isnumber%
        \ifnum\@vcr@bfpage<#1%
           \vcr@blpage{#1}% 
        \else%
           #1\@latex@error{sprbibl: [\cur@bibitem] \string\bfpage\space > \string\blpage!}{??}%
        \fi%
      \else%
        #1%
      \fi}
    
    % algoritmas
    % a) bfpage ir blpage daliname is 10 
    % b) if bfpage=blpage goto d
    % c) if bfpage<10 end else goto a
    % d) x:= blpage - int(blpage/10^i)*10^1
    
    \def\vcr@blpage#1{%
       \@tempcnta=\@vcr@bfpage%
       \@tempcntb=#1%
       \@tempcntc=1%
       \def\control@cnt{1}%
       \@whilenum\control@cnt>0\do{%
         \divide\@tempcnta by10%
         \divide\@tempcntb by10%
         \multiply\@tempcntc by10%
         \ifnum\@tempcnta=\@tempcntb\def\control@cnt{0}\@tempswatrue%
         \else%
           \ifnum\@tempcnta<10\relax\def\control@cnt{0}\@tempswafalse\fi%
         \fi}%
       \if@tempswa%
         \@tempcnta=#1%
         \@tempcntb=#1%
         \divide\@tempcntb by\@tempcntc%
         \multiply\@tempcntb by\@tempcntc%
         \advance\@tempcnta by-\@tempcntb%
         \the\@tempcnta%
       \else%
         #1%
       \fi}%
    
    \newif\if@page@isnumber 
    
    \def\test@if@number#1{%
      \@page@isnumberfalse% 
      \setbox\@tempboxa=\hbox{\@tempcnta=0#1\relax\ignorespaces}%
      \ifdim\wd\@tempboxa>\z@\else\@page@isnumbertrue\fi}
    
    %%%%%% Set bibliography styles:
    
    \ifcase\bibliography@style\relax
      \message{^^J Reference style: \bibliography@style@name^^J}%
    \or % basic
      \message{^^J Reference style: \bibliography@style@name^^J}%
      \def\common@pub@types@hook{\def\betal{{\betal@style et al}}}%
    \or % chemistry
      \message{^^J Reference style: \bibliography@style@name^^J}%
    \or % mathphys
      \message{^^J Reference style: \bibliography@style@name^^J}%
      \setattribute{bvolume}{style}{\bfseries}
    \or % aps
      \message{^^J Reference style: \bibliography@style@name^^J}%
      \setattribute{bvolume}{style}{\bfseries}
      \setattribute{bbtitle}{style}{\itshape}
    \or % cs
      \message{^^J Reference style: \bibliography@style@name^^J}%
      \setattribute{bvolume}{style}{\bfseries}
    \or % vancouver
      \message{^^J Reference style: \bibliography@style@name^^J}%
      \def\common@pub@types@hook{\let\bfpage\vcr@bfpage}
    \or % apa
      \message{^^J Reference style: \bibliography@style@name^^J}%
      \setattribute{bjtitle}{style}{\itshape}
      \setattribute{bvolume}{style}{\itshape}
      \setattribute{bbtitle}{style}{\itshape}
      \setattribute{bsertitle}{style}{\itshape}
      \setattribute{bseriesno}{style}{\itshape}
    \or % chicago
      \message{^^J Reference style: \bibliography@style@name^^J}%
      \setattribute{bbtitle}  {style}{\itshape}
      \setattribute{bjtitle}  {style}{\itshape}
      \setattribute{bsertitle}{style}{\itshape}
    \or % ams
      \message{^^J Reference style: \bibliography@style@name^^J}%
      \setattribute{batitle}{style}{\itshape}%  
      \setattribute{bctitle}{style}{\itshape}%  
      \g@addto@macro\barticle{\let\batitle\xml@batitle}%
      \setattribute{bvolume}{style}{\bfseries}%
      \setattribute{bseriesno}{style}{\bfseries}%
      \g@addto@macro\bbook{\setattribute{bbtitle}{style}{\itshape}}%
      \g@addto@macro\bchapter{\let\bctitle\xml@bctitle%
      \setattribute{bbtitle}{style}{\upshape}% 
      }%
    \or % bmc
      \message{^^J Reference style: \bibliography@style@name^^J}%
      \setattribute{bvolume}{style}{\bfseries}%
      \setattribute{batitle}{style}{\bfseries\mathversion{bold}}%
      \g@addto@macro\barticle{\let\batitle\xml@batitle}%
      \setattribute{bjtitle}{style}{\itshape}%
      \setattribute{bbtitle}{style}{\itshape}%
      \setattribute{bsertitle}{style}{\itshape}
      \setattribute{bctitle}{style}{\bfseries\mathversion{bold}}%
      \g@addto@macro\bchapter{\let\bctitle\xml@bctitle}%
    \fi
    
    \endinput
    
  • bmcart.cls54 KB
    %%
    %% 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://www.biomedcentral.com/authors/tex
    %%
    %% 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{bmcart.cls}
    \def\bmcart@version{2014/01/24}
    
    \NeedsTeXFormat{LaTeX2e}
    
    \ProvidesClass{bmcart}
       [\bmcart@version BioMed Central class (VS)]
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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{Submitted to BioMed Central}
    \let\journal@name\@empty
    \def\journal@url{http://www.biomedcentral.com/}
    \def\journal@id{-bmc}
    \def\paper@url{}
    \def\info@line{}
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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}{%
           \ims@href{\doi@base\@tempx\@tempy}{\csname doi@size\endcsname\@tempx}%
           \break%
           \ims@href{\doi@base\@tempx\@tempy}{\csname doi@size\endcsname\@tempy}}%
                              {%
           \expandafter\ims@href{\@tempx\@tempy}{\csname doi@size\endcsname\@tempx}%
           \break%
           \ims@href{\@tempx\@tempy}{\csname doi@size\endcsname\@tempy}}%
     \else%
        \@ifundefined{doi@url}%
            {\ims@href{\doi@base#1}{\csname doi@size\endcsname #1}}%
            {\ims@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}{%
           \ims@href{\arxiv@base\@tempx\@tempy}{\csname arxivurl@size\endcsname\@tempx}%
           \break%
           \ims@href{\arxiv@base\@tempx\@tempy}{\csname arxivurl@size\endcsname\@tempy}}%
                                {%
           \expandafter\ims@href{\@tempx\@tempy}{\csname arxivurl@size\endcsname\@tempx}%
           \break%
           \ims@href{\@tempx\@tempy}{\csname arxivurl@size\endcsname\@tempy}}%
     \else%
        \@ifundefined{arxiv@url}%
            {\ims@href{\arxiv@base#1}{\csname arxivurl@size\endcsname #1}}%
            {\ims@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} {\z@}
    \setattribute{subtitle}    {skip} {5\p@}
    \setattribute{authors}     {skip} {10\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{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} {Full list of author information is available at the end of the article\endgraf}
    \setattribute{presentaddress}   {text} {\textit{Present address: }}
    \setattribute{copyright}        {text} {\@runauthor\ \textit{\journal@name}}
    \setattribute{runninghead}      {text} {\@runauthor\ \textit{\journal@name} \hfill \thepage@fmt{\thepage}}
    \setattribute{footline}         {text} {\textcopyright\ \@copyrt\ \copyrightowner@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\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}
    
    
    %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% 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
           \@ifundefine
  • references.bib500 B
    @book{darwin1859,
      author    = {Darwin, Charles},
      title     = {On the Origin of Species by Means of Natural Selection},
      publisher = {John Murray},
      address   = {London},
      year      = {1859}
    }
    
    @article{doudna2014,
      author  = {Doudna, Jennifer A. and Charpentier, Emmanuelle},
      title   = {The New Frontier of Genome Engineering with CRISPR-Cas9},
      journal = {Science},
      volume  = {346},
      number  = {6213},
      pages   = {1258096},
      year    = {2014},
      doi     = {10.1126/science.1258096}
    }
    
  • main.pdfprebuilt · 96 KBReplaced by the first recompile.

    Binary file, seeded as-is.

  • main.synctex.gzprebuilt · 6.1 KBReplaced by the first recompile.

    Binary file, seeded as-is.