Camil Demetrescu  over 8 years ago

Commit id: d032ab25b87b331c982cbe975b3288233bfd4bab

deletions | additions      

         

%% File: `abbrvnat.bst'  %% A modification of `abbrv.bst' for use with natbib package   %%  %% Copyright 1993-2007 Patrick W Daly  %% Max-Planck-Institut f\"ur Sonnensystemforschung  %% Max-Planck-Str. 2  %% D-37191 Katlenburg-Lindau  %% Germany  %% E-mail: [email protected]  %%  %% This program can be redistributed and/or modified under the terms  %% of the LaTeX Project Public License Distributed from CTAN  %% archives in directory macros/latex/base/lppl.txt; either  %% version 1 of the License, or any later version.  %%  % Version and source file information:  % \ProvidesFile{natbst.mbs}[2007/11/26 1.93 (PWD)]  %  % BibTeX `plainnat' family  % version 0.99b for BibTeX versions 0.99a or later,  % for LaTeX versions 2.09 and 2e.  %  % For use with the `natbib.sty' package; emulates the corresponding  % member of the `plain' family, but with author-year citations.  %  % With version 6.0 of `natbib.sty', it may also be used for numerical  % citations, while retaining the commands \citeauthor, \citefullauthor,  % and \citeyear to print the corresponding information.  %  % For version 7.0 of `natbib.sty', the KEY field replaces missing  % authors/editors, and the date is left blank in \bibitem.  %  % Includes field EID for the sequence/citation number of electronic journals  % which is used instead of page numbers.  %  % Includes fields ISBN and ISSN.  %  % Includes field URL for Internet addresses.  %  % Includes field DOI for Digital Object Idenfifiers.  %  % Works best with the url.sty package of Donald Arseneau.  %  % Works with identical authors and year are further sorted by  % citation key, to preserve any natural sequence.  %  ENTRY  { address  author  booktitle  chapter  doi  eid  edition  editor  howpublished  institution  isbn  issn  journal  key  month  note  number  organization  pages  publisher  school  series  title  type  url  volume  year  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  }  STRINGS { s t }  FUNCTION {output.nonnull}  { 's :=  output.state mid.sentence =  { ", " * write$ }  { output.state after.block =  { add.period$ write$  newline$  "\newblock " write$  }  { output.state before.all =  'write$  { add.period$ " " * write$ }  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}  { add.period$  write$  newline$  }  FUNCTION {new.block}  { output.state before.all =  'skip$  { after.block '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 {new.block.checka}  { empty$  'skip$  'new.block  if$  }  FUNCTION {new.block.checkb}  { empty$  swap$ empty$  and  'skip$  'new.block  if$  }  FUNCTION {new.sentence.checka}  { empty$  'skip$  'new.sentence  if$  }  FUNCTION {new.sentence.checkb}  { empty$  swap$ empty$  and  'skip$  'new.sentence  if$  }  FUNCTION {field.or.null}  { duplicate$ empty$  { pop$ "" }  'skip$  if$  }  FUNCTION {emphasize}  { duplicate$ empty$  { pop$ "" }  { "\emph{" swap$ * "}" * }  if$  }  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 's :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ 't :=  nameptr #1 >  { namesleft #1 >  { ", " * t * }  { numnames #2 >  { "," * }  'skip$  if$  t "others" =  { " et~al." * }  { " and " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {format.key}  { empty$  { key field.or.null }  { "" }  if$  }  FUNCTION {format.authors}  { author empty$  { "" }  { author format.names }  if$  }  FUNCTION {format.editors}  { editor empty$  { "" }  { editor format.names  editor num.names$ #1 >  { ", editors" * }  { ", editor" * }  if$  }  if$  }  FUNCTION {format.isbn}  { isbn empty$  { "" }  { "" }  % ***CD150910 { new.block "ISBN " isbn * }  if$  }  FUNCTION {format.issn}  { issn empty$  { "" }  { new.block "ISSN " issn * }  if$  }  FUNCTION {format.url}  { url empty$  { "" }  { "" }  % ***CD150910 { new.block "URL \url{" url * "}" * }  if$  }  FUNCTION {format.doi}  { doi empty$  { "" }  { "" }  % ***CD150910 { new.block "\doi{" doi * "}" * }  if$  }  FUNCTION {format.title}  { title empty$  { "" }  { title "t" change.case$ }  if$  }  FUNCTION {format.full.names}  {'s :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr  "{vv~}{ll}" format.name$ 't :=  nameptr #1 >  {  namesleft #1 >  { ", " * t * }  {  numnames #2 >  { "," * }  'skip$  if$  t "others" =  { " et~al." * }  { " and " * t * }  if$  }  if$  }  't  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {author.editor.full}  { author empty$  { editor empty$  { "" }  { editor format.full.names }  if$  }  { author format.full.names }  if$  }  FUNCTION {author.full}  { author empty$  { "" }  { author format.full.names }  if$  }  FUNCTION {editor.full}  { editor empty$  { "" }  { editor format.full.names }  if$  }  FUNCTION {make.full.names}  { type$ "book" =  type$ "inbook" =  or  'author.editor.full  { type$ "proceedings" =  'editor.full  'author.full  if$  }  if$  }  FUNCTION {output.bibitem}  { newline$  "\bibitem[" write$  label write$  ")" make.full.names duplicate$ short.list =  { pop$ }  { * }  if$  "]{" * write$  cite$ write$  "}" write$  newline$  ""  before.all 'output.state :=  }  FUNCTION {n.dashify}  { 't :=  ""  { t empty$ not }  { t #1 #1 substring$ "-" =  { t #1 #2 substring$ "--" = not  { "--" *  t #2 global.max$ substring$ 't :=  }  { { t #1 #1 substring$ "-" = }  { "-" *  t #2 global.max$ substring$ 't :=  }  while$  }  if$  }  { t #1 #1 substring$ *  t #2 global.max$ substring$ 't :=  }  if$  }  while$  }  FUNCTION {format.date}  { year duplicate$ empty$  { "empty year in " cite$ * warning$  pop$ "" }  'skip$  if$  month empty$  'skip$  { month  " " * swap$ *  }  if$  extra.label *  }  FUNCTION {format.btitle}  { title emphasize  }  FUNCTION {tie.or.space.connect}  { duplicate$ text.length$ #3 <  { "~" }  { " " }  if$  swap$ * *  }  FUNCTION {either.or.check}  { empty$  'pop$  { "can't use both " swap$ * " fields in " * cite$ * warning$ }  if$  }  FUNCTION {format.bvolume}  { volume empty$  { "" }  { "volume" volume tie.or.space.connect  series empty$  'skip$  { " of " * series emphasize * }  if$  "volume and number" number either.or.check  }  if$  }  FUNCTION {format.number.series}  { volume empty$  { number empty$  { series field.or.null }  { output.state mid.sentence =  { "number" }  { "Number" }  if$  number tie.or.space.connect  series empty$  { "there's a number but no series in " cite$ * warning$ }  { " in " * series * }  if$  }  if$  }  { "" }  if$  }  FUNCTION {format.edition}  { edition empty$  { "" }  { output.state mid.sentence =  { edition "l" change.case$ " edition" * }  { edition "t" change.case$ " edition" * }  if$  }  if$  }  INTEGERS { multiresult }  FUNCTION {multi.page.check}  { 't :=  #0 'multiresult :=  { multiresult not  t empty$ not  and  }  { t #1 #1 substring$  duplicate$ "-" =  swap$ duplicate$ "," =  swap$ "+" =  or or  { #1 'multiresult := }  { t #2 global.max$ substring$ 't := }  if$  }  while$  multiresult  }  FUNCTION {format.pages}  { pages empty$  { "" }  { pages multi.page.check  { "pages" pages n.dashify tie.or.space.connect }  { "page" pages tie.or.space.connect }  if$  }  if$  }  FUNCTION {format.eid}  { eid empty$  { "" }  { "art." eid tie.or.space.connect }  if$  }  FUNCTION {format.vol.num.pages}  { volume field.or.null  number empty$  'skip$  { "\penalty0 (" number * ")" * *  volume empty$  { "there's a number but no volume in " cite$ * warning$ }  'skip$  if$  }  if$  pages empty$  'skip$  { duplicate$ empty$  { pop$ format.pages }  { ":\penalty0 " * pages n.dashify * }  if$  }  if$  }  FUNCTION {format.vol.num.eid}  { volume field.or.null  number empty$  'skip$  { "\penalty0 (" number * ")" * *  volume empty$  { "there's a number but no volume in " cite$ * warning$ }  'skip$  if$  }  if$  eid empty$  'skip$  { duplicate$ empty$  { pop$ format.eid }  { ":\penalty0 " * eid * }  if$  }  if$  }  FUNCTION {format.chapter.pages}  { chapter empty$  'format.pages  { type empty$  { "chapter" }  { type "l" change.case$ }  if$  chapter tie.or.space.connect  pages empty$  'skip$  { ", " * format.pages * }  if$  }  if$  }  FUNCTION {format.in.ed.booktitle}  { booktitle empty$  { "" }  { editor empty$  { "In " booktitle emphasize * }  { "In " format.editors * ", " * booktitle emphasize * }  if$  }  if$  }  FUNCTION {empty.misc.check}  { author empty$ title empty$ howpublished empty$  month empty$ year empty$ note empty$  and and and and and  key empty$ not 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.tr.number}  { type empty$  { "Technical Report" }  'type  if$  number empty$  { "t" change.case$ }  { number tie.or.space.connect }  if$  }  FUNCTION {format.article.crossref}  { key empty$  { journal empty$  { "need key or journal for " cite$ * " to crossref " * crossref *  warning$  ""  }  { "In \emph{" journal * "}" * }  if$  }  { "In " }  if$  " \citet{" * crossref * "}" *  }  FUNCTION {format.book.crossref}  { volume empty$  { "empty volume in " cite$ * "'s crossref of " * crossref * warning$  "In "  }  { "Volume" volume tie.or.space.connect  " of " *  }  if$  editor empty$  editor field.or.null author field.or.null =  or  { key empty$  { series empty$  { "need editor, key, or series for " cite$ * " to crossref " *  crossref * warning$  "" *  }  { "\emph{" * series * "}" * }  if$  }  'skip$  if$  }  'skip$  if$  " \citet{" * crossref * "}" *  }  FUNCTION {format.incoll.inproc.crossref}  { editor empty$  editor field.or.null author field.or.null =  or  { key empty$  { booktitle empty$  { "need editor, key, or booktitle for " cite$ * " to crossref " *  crossref * warning$  ""  }  { "In \emph{" booktitle * "}" * }  if$  }  { "In " }  if$  }  { "In " }  if$  " \citet{" * crossref * "}" *  }  FUNCTION {article}  { output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { journal emphasize "journal" output.check  eid empty$  { format.vol.num.pages output }  { format.vol.num.eid output }  if$  format.date "year" output.check  }  { format.article.crossref output.nonnull  eid empty$  { format.pages output }  { format.eid output }  if$  }  if$  format.issn output  format.doi output  format.url output  new.block  note output  fin.entry  }  FUNCTION {book}  { output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  crossref missing$  { format.bvolume output  new.block  format.number.series output  new.sentence  publisher "publisher" output.check  address output  }  { new.block  format.book.crossref output.nonnull  }  if$  format.edition output  format.date "year" output.check  format.isbn output  format.doi output  format.url output  new.block  note output  fin.entry  }  FUNCTION {booklet}  { output.bibitem  format.authors output  author format.key output  new.block  format.title "title" output.check  howpublished address new.block.checkb  howpublished output  address output  format.date output  format.isbn output  format.doi output  format.url output  new.block  note output  fin.entry  }  FUNCTION {inbook}  { output.bibitem  author empty$  { format.editors "author and editor" output.check  editor format.key output  }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  crossref missing$  { format.bvolume output  format.chapter.pages "chapter and pages" output.check  new.block  format.number.series output  new.sentence  publisher "publisher" output.check  address output  }  { format.chapter.pages "chapter and pages" output.check  new.block  format.book.crossref output.nonnull  }  if$  format.edition output  format.date "year" output.check  format.isbn output  format.doi output  format.url output  new.block  note output  fin.entry  }  FUNCTION {incollection}  { output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  format.chapter.pages output  new.sentence  publisher "publisher" output.check  address output  format.edition output  format.date "year" output.check  }  { format.incoll.inproc.crossref output.nonnull  format.chapter.pages output  }  if$  format.isbn output  format.doi output  format.url output  new.block  note output  fin.entry  }  FUNCTION {inproceedings}  { output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  format.bvolume output  format.number.series output  format.pages output  address empty$  { organization publisher new.sentence.checkb  organization output  publisher output  format.date "year" output.check  }  { address output.nonnull  format.date "year" output.check  new.sentence  organization output  publisher output  }  if$  }  { format.incoll.inproc.crossref output.nonnull  format.pages output  }  if$  format.isbn output  format.doi output  format.url output  new.block  note output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { output.bibitem  format.authors output  author format.key output  new.block  format.btitle "title" output.check  organization address new.block.checkb  organization output  address output  format.edition output  format.date output  format.url output  new.block  note output  fin.entry  }  FUNCTION {mastersthesis}  { output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  "Master's thesis" format.thesis.type output.nonnull  school "school" output.check  address output  format.date "year" output.check  format.url output  new.block  note output  fin.entry  }  FUNCTION {misc}  { output.bibitem  format.authors output  author format.key output  title howpublished new.block.checkb  format.title output  howpublished new.block.checka  howpublished output  format.date output  format.issn output  format.url output  new.block  note output  fin.entry  empty.misc.check  }  FUNCTION {phdthesis}  { output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.btitle "title" output.check  new.block  "PhD thesis" format.thesis.type output.nonnull  school "school" output.check  address output  format.date "year" output.check  format.url output  new.block  note output  fin.entry  }  FUNCTION {proceedings}  { output.bibitem  format.editors output  editor format.key output  new.block  format.btitle "title" output.check  format.bvolume output  format.number.series output  address output  format.date "year" output.check  new.sentence  organization output  publisher output  format.isbn output  format.doi output  format.url output  new.block  note output  fin.entry  }  FUNCTION {techreport}  { output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  format.tr.number output.nonnull  institution "institution" output.check  address output  format.date "year" output.check  format.url output  new.block  note output  fin.entry  }  FUNCTION {unpublished}  { output.bibitem  format.authors "author" output.check  author format.key output  new.block  format.title "title" output.check  new.block  note "note" output.check  format.date output  format.url output  fin.entry  }  FUNCTION {default.type} { misc }  MACRO {jan} {"Jan."}  MACRO {feb} {"Feb."}  MACRO {mar} {"Mar."}  MACRO {apr} {"Apr."}  MACRO {may} {"May"}  MACRO {jun} {"June"}  MACRO {jul} {"July"}  MACRO {aug} {"Aug."}  MACRO {sep} {"Sept."}  MACRO {oct} {"Oct."}  MACRO {nov} {"Nov."}  MACRO {dec} {"Dec."}  MACRO {acmcs} {"ACM Comput. Surv."}  MACRO {acta} {"Acta Inf."}  MACRO {cacm} {"Commun. ACM"}  MACRO {ibmjrd} {"IBM J. Res. Dev."}  MACRO {ibmsj} {"IBM Syst.~J."}  MACRO {ieeese} {"IEEE Trans. Softw. Eng."}  MACRO {ieeetc} {"IEEE Trans. Comput."}  MACRO {ieeetcad}  {"IEEE Trans. Comput.-Aided Design Integrated Circuits"}  MACRO {ipl} {"Inf. Process. Lett."}  MACRO {jacm} {"J.~ACM"}  MACRO {jcss} {"J.~Comput. Syst. Sci."}  MACRO {scp} {"Sci. Comput. Programming"}  MACRO {sicomp} {"SIAM J. Comput."}  MACRO {tocs} {"ACM Trans. Comput. Syst."}  MACRO {tods} {"ACM Trans. Database Syst."}  MACRO {tog} {"ACM Trans. Gr."}  MACRO {toms} {"ACM Trans. Math. Softw."}  MACRO {toois} {"ACM Trans. Office Inf. Syst."}  MACRO {toplas} {"ACM Trans. Prog. Lang. Syst."}  MACRO {tcs} {"Theoretical Comput. Sci."}  READ  FUNCTION {sortify}  { purify$  "l" change.case$  }  INTEGERS { len }  FUNCTION {chop.word}  { 's :=  'len :=  s #1 len substring$ =  { s len #1 + global.max$ substring$ }  's  if$  }  FUNCTION {format.lab.names}  { 's :=  s #1 "{vv~}{ll}" format.name$  s num.names$ duplicate$  #2 >  { pop$ " et~al." * }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  { " et~al." * }  { " and " * s #2 "{vv~}{ll}" format.name$ * }  if$  }  if$  }  if$  }  FUNCTION {author.key.label}  { author empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.editor.key.label}  { author empty$  { editor empty$  { key empty$  { cite$ #1 #3 substring$ }  'key  if$  }  { editor format.lab.names }  if$  }  { author format.lab.names }  if$  }  FUNCTION {author.key.organization.label}  { author empty$  { key empty$  { organization empty$  { cite$ #1 #3 substring$ }  { "The " #4 organization chop.word #3 text.prefix$ }  if$  }  'key  if$  }  { author format.lab.names }  if$  }  FUNCTION {editor.key.organization.label}  { editor empty$  { key empty$  { organization empty$  { cite$ #1 #3 substring$ }  { "The " #4 organization chop.word #3 text.prefix$ }  if$  }  'key  if$  }  { editor format.lab.names }  if$  }  FUNCTION {calc.short.authors}  { type$ "book" =  type$ "inbook" =  or  'author.editor.key.label  { type$ "proceedings" =  'editor.key.organization.label  { type$ "manual" =  'author.key.organization.label  'author.key.label  if$  }  if$  }  if$  'short.list :=  }  FUNCTION {calc.label}  { calc.short.authors  short.list  "("  *  year duplicate$ empty$  short.list key field.or.null = or  { pop$ "" }  'skip$  if$  *  'label :=  }  FUNCTION {sort.format.names}  { 's :=  #1 'nameptr :=  ""  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  {  s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=  nameptr #1 >  {  " " *  namesleft #1 = t "others" = and  { "zzzzz" * }  { numnames #2 > nameptr #2 = and  { "zz" * year field.or.null * " " * }  'skip$  if$  t sortify *  }  if$  }  { t sortify * }  if$  nameptr #1 + 'nameptr :=  namesleft #1 - 'namesleft :=  }  while$  }  FUNCTION {sort.format.title}  { 't :=  "A " #2  "An " #3  "The " #4 t chop.word  chop.word  chop.word  sortify  #1 global.max$ substring$  }  FUNCTION {author.sort}  { author empty$  { key empty$  { "to sort, need author or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.editor.sort}  { author empty$  { editor empty$  { key empty$  { "to sort, need author, editor, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { editor sort.format.names }  if$  }  { author sort.format.names }  if$  }  FUNCTION {author.organization.sort}  { author empty$  { organization empty$  { key empty$  { "to sort, need author, organization, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { "The " #4 organization chop.word sortify }  if$  }  { author sort.format.names }  if$  }  FUNCTION {editor.organization.sort}  { editor empty$  { organization empty$  { key empty$  { "to sort, need editor, organization, or key in " cite$ * warning$  ""  }  { key sortify }  if$  }  { "The " #4 organization chop.word sortify }  if$  }  { editor sort.format.names }  if$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  type$ "book" =  type$ "inbook" =  or  'author.editor.sort  { type$ "proceedings" =  'editor.organization.sort  { type$ "manual" =  'author.organization.sort  'author.sort  if$  }  if$  }  if$  " "  *  year field.or.null sortify  *  " "  *  cite$  *  #1 entry.max$ substring$  'sort.label :=  sort.label *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  SORT  STRINGS { longest.label last.label next.extra }  INTEGERS { longest.label.width last.extra.num number.label }  FUNCTION {initialize.longest.label}  { "" 'longest.label :=  #0 int.to.chr$ 'last.label :=  "" 'next.extra :=  #0 'longest.label.width :=  #0 'last.extra.num :=  #0 'number.label :=  }  FUNCTION {forward.pass}  { last.label label =  { last.extra.num #1 + 'last.extra.num :=  last.extra.num int.to.chr$ 'extra.label :=  }  { "a" chr.to.int$ 'last.extra.num :=  "" 'extra.label :=  label 'last.label :=  }  if$  number.label #1 + 'number.label :=  }  FUNCTION {reverse.pass}  { next.extra "b" =  { "a" 'extra.label := }  'skip$  if$  extra.label 'next.extra :=  extra.label  duplicate$ empty$  'skip$  { "{\natexlab{" swap$ * "}}" * }  if$  'extra.label :=  label extra.label * 'label :=  }  EXECUTE {initialize.longest.label}  ITERATE {forward.pass}  REVERSE {reverse.pass}  FUNCTION {bib.sort.order}  { sort.label 'sort.key$ :=  }  ITERATE {bib.sort.order}  SORT  FUNCTION {begin.bib}  { preamble$ empty$  'skip$  { preamble$ write$ newline$ }  if$  "\begin{thebibliography}{" number.label int.to.str$ * "}" *  write$ newline$  "\providecommand{\natexlab}[1]{#1}"  write$ newline$  "\providecommand{\url}[1]{\texttt{#1}}"  write$ newline$  "\expandafter\ifx\csname urlstyle\endcsname\relax"  write$ newline$  " \providecommand{\doi}[1]{doi: #1}\else"  write$ newline$  " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}         

% We recommend abbrvnat bibliography style.  \bibliographystyle{abbrvnat} \bibliographystyle{abbrvshortnat}  \bibliography{bibliography/biblio.bib}  %\AtEveryBibitem{\clearlist{language}} % clears language  %\AtEveryBibitem{\clearfield{note}} % clears notes  \end{document}