Nicholas Deutscher added file mdpi.bst  over 6 years ago

Commit id: d38bae69b9de5b72a68a57e079ed9c144ec4b0ff

deletions | additions      

         

%% Bibliography style for MDPI journals  ENTRY  { address  archiveprefix %  author  booktitle  chapter  edition  editor  eprint %  howpublished  institution  journal  key  month  note  number  organization  pages  primaryclass %  publisher  school  series  title  type  volume  year  url  urldate  nationality  }  {}  { label extra.label sort.label short.list }  INTEGERS { output.state before.all mid.sentence after.sentence after.block after.item }  FUNCTION {init.state.consts}  { #0 'before.all :=  #1 'mid.sentence :=  #2 'after.sentence :=  #3 'after.block :=  #4 'after.item :=  }  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$  { output.state after.item =  {"; " * write$}  {add.period$ " " * write$}   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 {output.checkwoa}  { 't :=  duplicate$ empty$  { pop$ }  '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$ "" }  { "{\em " swap$ * "}" * }  if$  }  FUNCTION {embolden}  { duplicate$ empty$  { pop$ "" }  { "{\bf " swap$ * "}" * }  if$  }  FUNCTION {website}  { duplicate$ empty$  { pop$ "" }  { "\url{" swap$ * "}" * }  if$  }  INTEGERS { nameptr namesleft numnames }  FUNCTION {format.names}  { 's :=  #1 'nameptr :=  s num.names$ 'numnames :=  numnames 'namesleft :=  { namesleft #0 > }  { s nameptr "{vv~}{ll}{, jj}{, f{.}}." format.name$ 't :=  nameptr #1 >  { namesleft #1 >  { "; " * t * }  { numnames #2 >  { "" * }  'skip$  if$  t "others" =  { " et~al." * }  { "; " * 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 >  { ", Eds." * }  { ", Ed." * }  if$  }  if$  }  FUNCTION {format.title}  { title empty$  { "" }  { title}  if$  }  FUNCTION {format.number.patent}  { number empty$  { "" }  { nationality empty$  { number}  { nationality " " * number *}  if$  }  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 empty$  { month empty$  { "" }  { "there's a month but no year in " cite$ * warning$  month  }  if$  }  { " " year embolden * }  if$  }  FUNCTION {format.bdate}  { year empty$  { month empty$  { "" }  { "there's a month but no year in " cite$ * warning$  month  }  if$  }  { " " year * }  if$  }  FUNCTION {format.pdate}  { year empty$  { month empty$  { "" }  { "there's a month but no year in " cite$ * warning$  month  }  if$  }  { month empty$  { " " year * }  { " " month * ", " * year * }  if$}  if$  }  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$  { "" }  { "Vol." volume tie.or.space.connect  series empty$  'skip$  { ", " * 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$ " ed." * }  { edition "t" change.case$ " ed." * }  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  { "pp." pages n.dashify tie.or.space.connect }  { "p." pages tie.or.space.connect }  if$  }  if$  }  FUNCTION {format.vol.num.pages}  { volume emphasize field.or.null  number empty$  'skip$  {   volume empty$  { "there's a number but no volume in " cite$ * warning$ }  'skip$  if$  }  if$  pages empty$  'skip$  { duplicate$ empty$  { pop$ format.pages }  { ",~" * pages n.dashify * }  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$  { edition empty$  {"In " booktitle emphasize *}   {"In " booktitle emphasize * ", " * edition * " ed." *}  if$  }  { edition empty$  {"In " booktitle emphasize * "; " * format.editors * }  {"In " booktitle emphasize * ", " * edition * " ed." * "; " * format.editors * }  if$  }  if$  }  if$  }  FUNCTION {format.in.ed.booktitle.proc}  { booktitle empty$  { "" }  { editor empty$  { edition empty$  {" " booktitle *}   {" " booktitle * ", " * edition * " ed." *}  if$  }  { edition empty$  {" " booktitle * "; " * format.editors * }  {" " booktitle * ", " * edition * " ed." * "; " * format.editors * }  if$  }  if$  }  if$  }  FUNCTION {format.publisher.and.address}  { publisher empty$  {""}  { address empty$  {publisher }  {publisher ": " * address *}  if$  }  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.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 "  }  { "Vol." 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$  "" *  }  { "{\em " * series * "\/}" * }  if$  }  { key * }  if$  }  { "" * }  if$  " \cite{" * 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 {\em " booktitle * "\/}" * }  if$  }  { "In " key * }  if$  }  { "In " * }  if$  " \cite{" * crossref * "}" *  }  FUNCTION {format.website}  { url empty$  { "" }  { "" url website *  urldate empty$  {"there is url but no urldate in " cite$ * warning$}  { ", accessed on " * urldate *}  if$  }  if$  }  %% the following function is modified from kp.bst at http://arxiv.org/hypertex/bibstyles/  FUNCTION {format.eprint}  {eprint empty$  { ""}  {primaryClass empty$  {" \href{http://xxx.lanl.gov/abs/" eprint * "}" * "{{\normalfont " * "[" * eprint * "]" * "}}" *}  {archivePrefix empty$  {" \href{http://xxx.lanl.gov/abs/" eprint * "}" * "{{\normalfont " * "[" * "arXiv:" * primaryClass * "/" * eprint * "]" * "}}" *}  {" \href{http://xxx.lanl.gov/abs/" eprint * "}" * "{{\normalfont " * "[" * archivePrefix * ":" * primaryClass * "/" * eprint * "]" * "}}" *}  if$  }  if$  }  if$  }  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  format.date * format.vol.num.pages "" * output  }  { format.article.crossref output.nonnull  format.pages output  }  if$  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {book}  { output.bibitem  author empty$  { format.editors "author and editor" output.check }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  new.block  format.btitle "title" output.check  format.edition output  after.item 'output.state :=  crossref missing$  { format.bvolume output  format.number.series output  format.publisher.and.address "publisher" output.check  %%% address output  }  {  format.book.crossref output.nonnull  }  if$  format.bdate "year" output.check  after.item 'output.state :=  format.chapter.pages output  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {booklet}  { output.bibitem  format.authors output  new.block  format.title "title" output.check  howpublished address new.block.checkb  howpublished output  address output  format.bdate output  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {inbook}  { output.bibitem  author empty$  { format.editors "author and editor" output.check }  { format.authors output.nonnull  crossref missing$  { "author and editor" editor either.or.check }  'skip$  if$  }  if$  %%% new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  after.item 'output.state :=  format.number.series output  %% new.sentence  format.publisher.and.address "publisher" output.check  format.bdate "year" output.check  after.item 'output.state :=  format.bvolume output  format.chapter.pages "chapter and pages" output.check    }  { format.chapter.pages "chapter and pages" output.check  new.block  format.book.crossref output.nonnull  format.bdate "year" output.check  }  if$  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {incollection}  { output.bibitem  format.authors "author" output.check  new.block  format.title "title" output.check  new.sentence  crossref missing$  { format.in.ed.booktitle "booktitle" output.check  after.item 'output.state :=  format.number.series output  % new.sentence  format.publisher.and.address "publisher" output.check  format.bdate "year" output.check  after.item 'output.state :=  format.bvolume output  format.chapter.pages output  }  { format.incoll.inproc.crossref output.nonnull  format.chapter.pages output  }  if$  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {inproceedings}  { output.bibitem  format.authors "author" output.check  new.block  format.title "title" output.check  new.block  crossref missing$  { format.in.ed.booktitle.proc "booktitle" output.check  address empty$  { organization publisher new.sentence.checkb  organization output  publisher output  format.bdate "year" output.check  }  { after.item 'output.state :=  organization output  format.publisher.and.address output.nonnull  format.bdate "year" output.check  after.item 'output.state :=  }  if$  format.number.series output  format.bvolume output  format.pages output  }  { format.incoll.inproc.crossref output.nonnull  format.pages output  }  if$  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {conference} { inproceedings }  FUNCTION {manual}  { output.bibitem  author empty$  { organization empty$  'skip$  { organization output.nonnull  address output  }  if$  }  { format.authors output.nonnull }  if$  new.block  format.btitle "title" output.check  author empty$  { organization empty$  { address new.block.checka  address output  }  'skip$  if$  }  { organization address new.block.checkb  organization output  address output  }  if$  format.edition output  format.bdate output  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {mastersthesis}  { output.bibitem  format.authors "author" output.check  new.block  format.title "title" output.check  new.block  "Master's thesis" format.thesis.type output.nonnull  school "school" output.check  address output  format.bdate "year" output.check  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {misc}  { output.bibitem  format.authors output  title howpublished new.block.checkb  format.title output  howpublished new.block.checka  howpublished output  format.bdate output  format.eprint output  new.block  note output  fin.entry  empty.misc.check  }  FUNCTION {phdthesis}  { output.bibitem  format.authors "author" output.check  new.block  format.title "title" output.check  new.block  "PhD thesis" format.thesis.type output.nonnull  school "school" output.check  address output  format.bdate "year" output.check  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {proceedings}  { output.bibitem  editor empty$  { organization output }  { format.editors output.nonnull }  if$  new.block  format.btitle "title" output.check  format.bvolume output  format.number.series output  address empty$  { editor empty$  { publisher new.sentence.checka }  { organization publisher new.sentence.checkb  organization output  }  if$  publisher output  format.bdate "year" output.check  }  { address output.nonnull  format.bdate "year" output.check  new.sentence  editor empty$  'skip$  { organization output }  if$  publisher output  }  if$  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {techreport}  { output.bibitem  format.authors "author" output.check  new.block  format.title "title" output.check  new.block  format.tr.number output.nonnull  institution "institution" output.check  address output  format.bdate "year" output.check  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {unpublished}  { output.bibitem  format.authors "author" output.check  new.block  format.title "title" output.check  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {www}  { output.bibitem  format.authors "author" output.checkwoa  new.block  format.website "url" output.check  format.eprint output  new.block  note output  fin.entry  }  FUNCTION {patent}  { output.bibitem  format.authors "author" output.check  new.block  format.title "title" output.check  new.block  format.number.patent "number" output.check  mid.sentence 'output.state :=  format.pdate "date" output.check  format.eprint output  new.block  note output  fin.entry  }  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$ " \em{et~al.}" * }  { #2 <  'skip$  { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =  { " \em{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 :=  }  INTEGERS { seq.num }  FUNCTION {init.seq}  { #0 'seq.num :=}  EXECUTE {init.seq}  FUNCTION {int.to.fix}  { "000000000" swap$ int.to.str$ *  #-1 #10 substring$  }  FUNCTION {presort}  { calc.label  label sortify  " "  *  seq.num #1 + 'seq.num :=  seq.num int.to.fix  'sort.label :=  sort.label *  #1 entry.max$ substring$  'sort.key$ :=  }  ITERATE {presort}  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 {begin.bib}  { "\begin{thebibliography}{-------}"  write$ newline$  "\providecommand{\natexlab}[1]{#1}"  write$ newline$  }  EXECUTE {begin.bib}  EXECUTE {init.state.consts}  ITERATE {call.type$}  FUNCTION {end.bib}  { newline$  "\end{thebibliography}" write$ newline$  }  EXECUTE {end.bib}