%% %% This is file `asmejour.bst', initially generated with the docstrip utility and extensively customized. %% %% *** This bibtex style follows ASME journals *** %% %% %% This file is asmejour.bst, version 1.08 dated 2024/02/03. %% %% This file was generated and edited by John Lienhard. %% This file is a derivative work under Clause 6 of the LPPL license. %% %% The generated file and the modifications are based on the formats that ASME is using in %% published journal papers in early 2022. Details of the modifications follow. %% %% Created entry: @online{...} for web publications (and aliased it to @www and @electronic) %% Created fields: eventdate, urldate, urltype, venue, fourth, fourthtype %% Format for url: urlprefix = {}, format.web.urldate, bbl.urldate; urltype = {} changes "accessed" to other text. %% Added fields: venue and eventdate to @inproceedings %% Added field: version={}, format.version to @book, @online, @manual; versiontype = {} changes "Version" to other %% Updated doi: doi url prefix updated to https://doi.org/ %% %% Remove "emphasize" from journal article, and linked doi (or else url) to journal name (or book title) %% without explicitly showing the urls. The urls may be added to the note = {..} field to display explicitly %% doilink fn is similar to tex.stackexchange.com/questions/76174/set-doi-link-on-journal-name-with-bibtex-bst %% Modified fin.entry to omit period after a url, including a separate version for article and book which have %% hyperlinks to titles. %% %% Capitalize: Vol., Chap., & No. %% Remove "emphasize" before comma in format.bvolume, %% @incollection: move chapter and edition, change format.in.ed.booktitle, modify format for "series" %% %% Modify \eprint to include full url, and provided some macros for archive={..} ... %% ....this format is uncommon in ASME journals so implemented only as a url (but can easily patch if needed) %% %% Change format.note capitalizations from "l" to "t" and "u" to "t" respectively. %% %% Included macros for the titles of ASME's journals, following ASME formats (updated 4/10/20) %% %% %% Modifications in v1.03 (2020/04/12) %% %% @article: add warning for empty pages; change ordering of numpages "pages" for eid %% @book: reorder edition, version, and volume %% @inbook: reorder edition, version, volume, etc.; hyperlink title to doi, url, or eprint %% @incollection: create format.doi.booktitle to hyperlink title of collection to doi, url, or eprint. %% @inproceedings: move venue, eventdate, and paper number toward end; warn that address should not be used with venue; %% warn for empty venue and empty date; %% create format.pvolume and format.in.ed.proctitle, to permit both [paper] number and volume %% print either organization or publisher but not both %% add bbl.paperno = "Paper No." and enable type ={} to change it (this is not backward compatible!) %% hyperlink paper number to doi, or url, or eprint by default. %% @inserialcollection: new entry type created to deal with citing articles in edited volumes that %% come under different titles in a an ongoing series. This changes the placement %% of Vol. number in the reference, putting series name and volume in ( ) after title. %% This calls a new function format.in.ed.serialtitle. Hyperlink title of book. %% For most uses, ordinary @incollection will be preferred. %% This edit also reverts @incollection and @inproceedings to use Series, Vol. after eds, %% which is consistent with many ASME references %% @proceedings: edit order of fields; warn that address should not be used with venue; %% print either organization or publisher but not both; %% hyperlink title of proceedings to doi, url, or eprint; %% provide format.alt.link to print the hyperlink if the report number is empty. %% @techrep: move report number after address; hyperlink report number to doi, url, or eprint; %% provide format.alt.link to print the hyperlink if the report number is empty. %% provide institution.address function %% %% Modifications in v1.04 (2020/04/15) %% add hdl macro as a synonym for hndl %% separate format.serial.volume from format.bvolume; %% arrange format.bvolume to order vol and series as ", Vol. X of Series Title", which affects %% @book, @inbook, @incollection, and @proceedings. %% %% Modifications in v1.05 (2021/12/23) %% convert remaining http:// prefixes to https:// %% replace \href{}{} in \eprint by \url %% provide \hrefurl for compatibility with LaTeX3 pdfmanagement %% use \hrefurl in doilink, rather than \href %% add macro text "jht" for "ASME J. Heat Transfer-Trans. ASME" %% %% Modifications in v1.06 (2022/12/30) %% add macro text "jhmt" for "ASME J. Heat Mass Transfer" %% %% Modifications in v1.07 (2023/05/06) %% correct code that provides \hrefurl %% %% Modifications in v1.08 (2024/02/03) %% correct punctuation in journal macros %% %% Author: John H. Lienhard V %% Department of Mechanical Engineering %% Massachusetts Institute of Technology %% Cambridge, MA 02139-4307 USA %% %======================================================================== %% LICENSE: %% %% Copyright (c) 2020 John H. Lienhard %% %% Permission is hereby granted, free of charge, to any person obtaining a copy of this software and %% associated documentation files (the "Software"), to deal in the Software without restriction, %% including without limitation the rights to use, copy, modify, merge, publish, distribute, sublicense, %% and/or sell copies of the Software, and to permit persons to whom the Software is furnished to do so, %% subject to the following conditions: %% %% The above copyright notice and this permission notice shall be included in all copies or %% substantial portions of the Software. %% %% The software is provided "as is", without warranty of any kind, express or implied, including but %% not limited to the warranties of merchantability, fitness for a particular purpose and noninfringement. %% in no event shall the authors or copyright holders be liable for any claim, damages or other liability, %% whether in an action of contract, tort or otherwise, arising from, out of or in connection with the %% software or the use or other dealings in the software. %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% % The original source files for docstrip were: % % merlin.mbs (with options: `seq-no,nm-rev,jnrlst,dt-beg,xmth,tit-qq,atit-u,thtit-a,vol-bf,volp-com,jwdpg,pp-last,num-xser,numser,ser-vol,ser-ed,pre-edn,doi,edby,edbyy,blk-com,in-x,pp,ed,abr,ednx,ord,jabr,revdata,eprint,url,url-blk,eprint,url,url-nt,em-it,nfss,') % ---------------------------------------- % % Copyright 1994-2011 Patrick W Daly % =============================================================== % IMPORTANT NOTICE: % This bibliographic style (bst) file has been generated from one or % more master bibliographic style (mbs) files, listed above. % % This generated file 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. % =============================================================== % Name and version information of the main mbs file: % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)] % For use with BibTeX version 0.99a or later % % =============================================================== %------------------------------------------------------------------- %------------------------------------------------------------------- % This bibliography style file is intended for texts in ENGLISH % This is a numerical citation style, and as such is standard LaTeX. % It requires no extra package to interface to the main text. % The form of the \bibitem entries is % \bibitem{key}... % Usage of \cite is as follows: % \cite{key} ==>> [#] % \cite[chap. 2]{key} ==>> [#, chap. 2] % where # is a number determined by the ordering in the reference list. % The order in the reference list is that by which the works were originally % cited in the text, or that in the database. %--------------------------------------------------------------------- ENTRY { address archive author booktitle chapter collaboration doi edition editor eid eprint eventdate howpublished institution journal key month note number numpages organization pages publisher school series title type url urldate urltype venue version versiontype volume year } {} { label } 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} { url empty$ { eprint empty$ { add.period$ write$ newline$ }{ write$ newline$ } if$ }{ write$ newline$ } if$ } %% For entries that hyperlink content FUNCTION {fin.urllink.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 {add.blank} { " " * before.all 'output.state := } FUNCTION {date.block} { skip$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {non.stop} { duplicate$ "}" * add.period$ #-1 #1 substring$ "." = } 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$ "" } { "\textit{" swap$ * "}" * } if$ } FUNCTION {bolden} { duplicate$ empty$ { pop$ "" } { "\textbf{" swap$ * "}" * } if$ } FUNCTION {tie.or.space.prefix} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ } FUNCTION {capitalize} { "u" change.case$ "t" change.case$ } FUNCTION {space.word} { " " swap$ * " " * } % Here are the language-specific definitions for explicit words. % Each function has a name bbl.xxx where xxx is the English word. % The language selected here is ENGLISH FUNCTION {bbl.and} { "and"} FUNCTION {bbl.etal} { "et~al." } FUNCTION {bbl.editors} { "eds." } FUNCTION {bbl.editor} { "ed." } FUNCTION {bbl.edby} { "edited by" } FUNCTION {bbl.edition} { "ed." } FUNCTION {bbl.volume} { "Vol." } FUNCTION {bbl.of} { "of" } FUNCTION {bbl.number} { "No." } FUNCTION {bbl.nr} { "No." } FUNCTION {bbl.in} { "in" } FUNCTION {bbl.pages} { "pp." } FUNCTION {bbl.page} { "p." } FUNCTION {bbl.eidpp} { "pages" } FUNCTION {bbl.chapter} { "Chap." } FUNCTION {bbl.techrep} { "Tech. Rep." } FUNCTION {bbl.paperno} { "Paper No." } FUNCTION {bbl.mthesis} { "Master's thesis" } FUNCTION {bbl.phdthesis} { "Ph.D. thesis" } FUNCTION {bbl.first} { "1st" } FUNCTION {bbl.second} { "2nd" } FUNCTION {bbl.third} { "3rd" } FUNCTION {bbl.fourth} { "4th" } FUNCTION {bbl.fifth} { "5th" } FUNCTION {bbl.st} { "st" } FUNCTION {bbl.nd} { "nd" } FUNCTION {bbl.rd} { "rd" } FUNCTION {bbl.th} { "th" } FUNCTION {bbl.urldate} { "accessed" } FUNCTION {bbl.version} { "Version" } MACRO {jan} {"Jan."} MACRO {feb} {"Feb."} MACRO {mar} {"Mar."} MACRO {apr} {"Apr."} MACRO {may} {"May"} MACRO {jun} {"Jun."} MACRO {jul} {"Jul."} MACRO {aug} {"Aug."} MACRO {sep} {"Sep."} MACRO {oct} {"Oct."} MACRO {nov} {"Nov."} MACRO {dec} {"Dec."} FUNCTION {eng.ord} { duplicate$ "1" swap$ * #-2 #1 substring$ "1" = { bbl.th * } { duplicate$ #-1 #1 substring$ duplicate$ "1" = { pop$ bbl.st * } { duplicate$ "2" = { pop$ bbl.nd * } { "3" = { bbl.rd * } { bbl.th * } if$ } if$ } if$ } if$ } MACRO {arxiv} {"https://arxiv.org/abs/"} MACRO {googlebooks} {"https://books.google.com/books?id="} MACRO {hdl} {"https://hdl.handle.net/"} MACRO {hndl} {"https://hdl.handle.net/"} MACRO {jstor} {"https://www.jstor.org/stable/"} MACRO {oclc} {"https://www.worldcat.org/oclc/"} MACRO {pubmed} {"https://www.ncbi.nlm.nih.gov/pubmed/"} MACRO {amr} {"Appl.\ Mech.\ Rev."} MACRO {lds} {"ASME Letters Dynamic Systems"} MACRO {jru} {"ASME J. Risk Uncertainty"} MACRO {jsbc} {"ASME J. Sustainable Bldg.\ and Cities"} MACRO {jam} {"ASME J. Appl.\ Mech."} MACRO {jbe} {"ASME J. Biomed.\ Eng."} MACRO {jcnd} {"ASME J. Comput.\ Nonlin.\ Dyn."} MACRO {jcise} {"ASME J. Comput.\ Inf.\ Sci.\ Eng."} MACRO {jds} {"J. Dyn.\ Syst.---T. ASME"} MACRO {jep} {"ASME J. Electron.\ Packag."} MACRO {jert} {"ASME J. Energy Resour."} MACRO {jegtp} {"ASME J. Eng.\ Gas Turbines Power"} MACRO {jem} {"ASME J. Eng.\ Mater."} MACRO {jfe} {"ASME J. Fluids Eng."} MACRO {jfcst} {"ASME J. Fuel Cell Sci.\ Tech."} MACRO {jht} {"ASME J. Heat Transfer---Trans.\ ASME"} MACRO {jhmt} {"ASME J. Heat Mass Transfer"} MACRO {jmse} {"ASME J. Manuf.\ Sci.\ E."} MACRO {jmd} {"ASME J. Mech.\ Des."} MACRO {jmr} {"ASME J. Mech.\ Robot."} MACRO {jmdv} {"ASME J. Med.\ Devices"} MACRO {jmnm} {"ASME J. Micro Nano-Manuf."} MACRO {jnem} {"ASME J. Nanotech Eng.\ Med."} MACRO {joma} {"ASME J. Offshore Mech.\ Arct."} MACRO {jpv} {"ASME J. Press.\ Vess."} MACRO {jse} {"ASME J. Sol.\ Energy"} MACRO {jtsea} {"ASME J. Therm.\ Sci.\ Eng.\ Appl."} MACRO {jtb} {"ASME J. Tribol."} MACRO {jtm} {"ASME J. Turbomach."} MACRO {jva} {"ASME J. Vib.\ Acoust."} 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.\ Software Eng."} MACRO {ieeetc} {"IEEE Trans.\ Comput."} MACRO {ieeetcad} {"IEEE Trans. Comput.\ Aid.\ Des."} MACRO {ipl} {"Inf.\ Process.\ Lett."} MACRO {jacm} {"J.~ACM"} MACRO {jcss} {"J.~Comput.\ Syst.\ Sci."} MACRO {scp} {"Sci.\ Comput.\ Program."} MACRO {sicomp} {"SIAM J. Comput."} MACRO {tocs} {"ACM Trans.\ Comput.\ Syst."} MACRO {tods} {"ACM Trans.\ Database Syst."} MACRO {tog} {"ACM Trans.\ Graphic."} MACRO {toms} {"ACM Trans.\ Math.\ Software"} MACRO {toois} {"ACM Trans.\ Office Inf.\ Syst."} MACRO {toplas} {"ACM Trans.\ Progr.\ Lang.\ Syst."} MACRO {tcs} {"Theor.\ Comput.\ Sci."} FUNCTION {bibinfo.check} { swap$ duplicate$ missing$ { pop$ pop$ "" } { duplicate$ empty$ { swap$ pop$ } { swap$ pop$ } if$ } if$ } FUNCTION {bibinfo.warn} { swap$ duplicate$ missing$ { swap$ "missing " swap$ * " in " * cite$ * warning$ pop$ "" } { duplicate$ empty$ { swap$ "empty " swap$ * " in " * cite$ * warning$ } { swap$ pop$ } if$ } if$ } FUNCTION {format.eprint} { eprint duplicate$ empty$ 'skip$ { "\eprint" archive empty$ { "there's an eprint but no archive in " cite$ * warning$ } { "[" * archive * "]" * } if$ "{" * swap$ * "}" * } if$ } FUNCTION {format.version} { version empty$ {""} {version "version" bibinfo.check versiontype duplicate$ empty$ { pop$ bbl.version } 'skip$ if$ "versiontype" bibinfo.check swap$ duplicate$ empty$ { pop$ "t" change.case$ } { tie.or.space.prefix * * } if$ } if$ } FUNCTION {format.web.urldate} { urldate empty$ {""} {urldate "urldate" bibinfo.check urltype duplicate$ empty$ { pop$ bbl.urldate } 'skip$ if$ "urltype" bibinfo.check swap$ duplicate$ empty$ { pop$ "t" change.case$ } { tie.or.space.prefix * * } if$ ", " * } if$ } FUNCTION {format.url} { url duplicate$ empty$ { pop$ "" } { "\urlprefix\url{" swap$ * "}" * format.web.urldate swap$ * } if$ } INTEGERS { nameptr namesleft numnames } STRINGS { bibinfo} FUNCTION {format.names} { 'bibinfo := duplicate$ empty$ 'skip$ { 's := "" 't := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}{, f.}{, jj}" format.name$ bibinfo bibinfo.check 't := nameptr #1 > { namesleft #1 > { ", " * t * } { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ numnames #2 > { "," * } 'skip$ if$ t "others" = { " " * bbl.etal * } { bbl.and space.word * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } if$ } FUNCTION {format.names.ed} { 'bibinfo := duplicate$ empty$ 'skip$ { 's := "" 't := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{f.~}{vv~}{ll}{, jj}" format.name$ bibinfo bibinfo.check 't := nameptr #1 > { namesleft #1 > { ", " * t * } { s nameptr "{ll}" format.name$ duplicate$ "others" = { 't := } { pop$ } if$ numnames #2 > { "," * } 'skip$ if$ t "others" = { " " * bbl.etal * } { bbl.and space.word * t * } if$ } if$ } 't if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } if$ } FUNCTION {format.authors} { author "author" format.names duplicate$ empty$ 'skip$ { collaboration "collaboration" bibinfo.check duplicate$ empty$ 'skip$ { " (" swap$ * ")" * } if$ * } if$ } FUNCTION {get.bbl.editor} { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ } FUNCTION {format.editors} { editor "editor" format.names duplicate$ empty$ 'skip$ { "," * " " * get.bbl.editor * } if$ } FUNCTION {format.doi} { doi empty$ { "" } { "\doi{" doi * "}" * } if$ } FUNCTION {doilink} { duplicate$ empty$ { pop$ "" } { doi empty$ { url empty$ { eprint empty$ { skip$ } { "\hrefurl{" archive eprint * * "}{" * swap$ * "}" * } if$ } { "\hrefurl{" url * "}{" * swap$ * "}" * } if$ } { "\hrefurl{https://doi.org/" doi * "}{" * swap$ * "}" * } if$ } if$ } FUNCTION {format.note} { note empty$ { "" } { note #1 #1 substring$ duplicate$ "{" = 'skip$ { output.state mid.sentence = { "t" } { "t" } if$ change.case$ } if$ note #2 global.max$ substring$ * "note" bibinfo.check } if$ } FUNCTION {format.title} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { "\enquote{" swap$ * non.stop { ",} " * } { "} " * } if$ } if$ } FUNCTION {end.quote.title} { title empty$ 'skip$ { before.all 'output.state := } if$ } FUNCTION {output.bibitem} { newline$ "\bibitem{" 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 {word.in} { "" } FUNCTION {format.date} { "" duplicate$ empty$ year "year" bibinfo.check duplicate$ empty$ { swap$ 'skip$ { "there's a month but no year in " cite$ * warning$ } if$ * } { swap$ 'skip$ { swap$ " " * swap$ } if$ * } if$ } FUNCTION {format.btitle} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { emphasize } if$ } FUNCTION {format.doi.btitle} { title "title" bibinfo.check duplicate$ empty$ 'skip$ { doilink emphasize } if$ } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } FUNCTION {format.bvolume} { volume empty$ { "" } { bbl.volume volume tie.or.space.prefix "volume" bibinfo.check * * series "series" bibinfo.check duplicate$ empty$ 'pop$ { swap$ bbl.of space.word * swap$ * } if$ "volume and number" number either.or.check } if$ } FUNCTION {format.pvolume} { volume empty$ { "" } { bbl.volume volume tie.or.space.prefix "volume" bibinfo.check * * series "series" bibinfo.check duplicate$ empty$ 'pop$ { ", " * swap$ *} if$ } if$ } FUNCTION {format.serial.volume} { volume empty$ { "" } { bbl.volume volume tie.or.space.prefix "volume" bibinfo.check * * series "series" bibinfo.check duplicate$ empty$ 'pop$ { ", " * swap$ *} if$ "volume and number" number either.or.check } if$ } FUNCTION {format.number.series} { volume empty$ { number empty$ { series field.or.null } { series empty$ { number "number" bibinfo.check } { output.state mid.sentence = { bbl.number } { bbl.number capitalize } if$ number tie.or.space.prefix "number" bibinfo.check * * bbl.in space.word * series "series" bibinfo.check * } if$ } if$ } { "" } if$ } FUNCTION {is.num} { chr.to.int$ duplicate$ "0" chr.to.int$ < not swap$ "9" chr.to.int$ > not and } FUNCTION {extract.num} { duplicate$ 't := "" 's := { t empty$ not } { t #1 #1 substring$ t #2 global.max$ substring$ 't := duplicate$ is.num { s swap$ * 's := } { pop$ "" 't := } if$ } while$ s empty$ 'skip$ { pop$ s } if$ } FUNCTION {convert.edition} { extract.num "l" change.case$ 's := s "first" = s "1" = or { bbl.first 't := } { s "second" = s "2" = or { bbl.second 't := } { s "third" = s "3" = or { bbl.third 't := } { s "fourth" = s "4" = or { bbl.fourth 't := } { s "fifth" = s "5" = or { bbl.fifth 't := } { s #1 #1 substring$ is.num { s eng.ord 't := } { edition 't := } if$ } if$ } if$ } if$ } if$ } if$ t } FUNCTION {format.edition} { edition duplicate$ empty$ 'skip$ { convert.edition output.state mid.sentence = { "l" } { "t" } if$ change.case$ "edition" bibinfo.check " " * bbl.edition * } 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 duplicate$ empty$ 'skip$ { duplicate$ multi.page.check { bbl.pages swap$ n.dashify } { bbl.page swap$ } if$ tie.or.space.prefix "pages" bibinfo.check * * } if$ } FUNCTION {format.journal.pages} { pages duplicate$ empty$ { "empty pages in " cite$ * warning$ } 'skip$ if$ duplicate$ empty$ 'pop$ { swap$ duplicate$ empty$ { pop$ pop$ format.pages} { ", " * swap$ n.dashify pages multi.page.check 'bbl.pages 'bbl.page if$ swap$ tie.or.space.prefix "pages" bibinfo.check * * * } if$ } if$ } FUNCTION {format.journal.eid} { eid "eid" bibinfo.check duplicate$ empty$ 'pop$ { swap$ duplicate$ empty$ 'skip$ { ", " * } if$ swap$ * numpages empty$ 'skip$ { numpages bbl.eidpp tie.or.space.prefix "numpages" bibinfo.check * * " (" swap$ * ")" * * } if$ } if$ } FUNCTION {format.vol.num.pages} { volume field.or.null duplicate$ empty$ 'skip$ { "volume" bibinfo.check } if$ bolden number "number" bibinfo.check duplicate$ empty$ 'skip$ { swap$ duplicate$ empty$ { "there's a number but no volume in " cite$ * warning$ } 'skip$ if$ swap$ "(" swap$ * ")" * } if$ * } FUNCTION {format.chapter.pages} { chapter empty$ { "" } { type empty$ { bbl.chapter } { type "l" change.case$ "type" bibinfo.check } if$ chapter tie.or.space.prefix "chapter" bibinfo.check * * } if$ } FUNCTION {format.booktitle} { booktitle "booktitle" bibinfo.check emphasize } FUNCTION {format.doi.booktitle} { booktitle "booktitle" bibinfo.check doilink emphasize } FUNCTION {format.in.ed.booktitle} { format.doi.booktitle duplicate$ empty$ 'skip$ { format.edition duplicate$ empty$ 'pop$ { ", " swap$ * * } if$ editor "editor" format.names.ed duplicate$ empty$ 'pop$ { get.bbl.editor swap$ "," * " " * swap$ * swap$ "," * " " * swap$ * } if$ format.bvolume duplicate$ empty$ 'pop$ { ", " swap$ * * } if$ word.in swap$ * } if$ } FUNCTION {format.in.ed.proctitle} { format.booktitle duplicate$ empty$ 'skip$ { format.edition duplicate$ empty$ 'pop$ { ", " swap$ * * } if$ editor "editor" format.names.ed duplicate$ empty$ 'pop$ { get.bbl.editor swap$ "," * " " * swap$ * swap$ "," * " " * swap$ * } if$ format.pvolume duplicate$ empty$ 'pop$ { ", " swap$ * * } if$ word.in swap$ * } if$ } FUNCTION {format.in.ed.serialtitle} { format.doi.booktitle duplicate$ empty$ 'skip$ { format.serial.volume duplicate$ empty$ 'pop$ { " (" swap$ * * ")" *} if$ format.edition duplicate$ empty$ 'pop$ { ", " swap$ * * } if$ editor "editor" format.names.ed duplicate$ empty$ 'pop$ { get.bbl.editor swap$ "," * " " * swap$ * swap$ "," * " " * swap$ * } if$ word.in swap$ * } 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 duplicate$ empty$ 'pop$ { swap$ pop$ "t" change.case$ "type" bibinfo.check } if$ } FUNCTION {format.alt.link} { doi empty$ { url empty$ { eprint empty$ { format.note output fin.urllink.entry } { format.note output format.eprint output fin.entry } if$ } { format.note output format.url output fin.entry } if$ } { format.doi output format.note output fin.urllink.entry } if$ } FUNCTION {format.tr.number} { number "number" bibinfo.check type duplicate$ empty$ { pop$ bbl.techrep } 'skip$ if$ "type" bibinfo.check swap$ duplicate$ empty$ { pop$ "t" change.case$ } { tie.or.space.prefix * * } if$ duplicate$ empty$ 'skip$ { doilink } if$ } FUNCTION {format.paper.number} { number "number" bibinfo.check type duplicate$ empty$ { pop$ bbl.paperno } 'skip$ if$ "type" bibinfo.check swap$ duplicate$ empty$ { pop$ "t" change.case$ } { tie.or.space.prefix * * } if$ duplicate$ empty$ 'skip$ { doilink } if$ } FUNCTION {format.venue} { venue "venue" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.eventdate} { eventdate "eventdate" bibinfo.check duplicate$ empty$ 'skip$ { } if$ } FUNCTION {format.article.crossref} { key duplicate$ empty$ { pop$ journal duplicate$ empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ } { "journal" bibinfo.check emphasize word.in swap$ * } if$ } { word.in swap$ * " " *} if$ " \cite{" * crossref * "}" * } FUNCTION {format.crossref.editor} { editor #1 "{vv~}{ll}" format.name$ "editor" bibinfo.check editor num.names$ duplicate$ #2 > { pop$ "editor" bibinfo.check " " * bbl.etal * } { #2 < 'skip$ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { "editor" bibinfo.check " " * bbl.etal * } { bbl.and space.word * editor #2 "{vv~}{ll}" format.name$ "editor" bibinfo.check * } if$ } if$ } if$ } FUNCTION {format.book.crossref} { volume duplicate$ empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ pop$ word.in } { bbl.volume swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word * } 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$ "" * } { series emphasize * } if$ } { key * } if$ } { format.crossref.editor * } if$ " \cite{" * crossref * "}" * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ editor field.or.null author field.or.null = or { key empty$ { format.booktitle duplicate$ empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ } { word.in swap$ * } if$ } { word.in key * " " *} if$ } { word.in format.crossref.editor * " " *} if$ " \cite{" * crossref * "}" * } FUNCTION {format.org.or.pub} { 't := "" address empty$ t empty$ and 'skip$ { t empty$ { address "address" bibinfo.check * } { t * address empty$ 'skip$ { ", " * address "address" bibinfo.check * } if$ } if$ } if$ } FUNCTION {format.publisher.address} { publisher "publisher" bibinfo.warn format.org.or.pub } FUNCTION {format.organization.address} { organization "organization" bibinfo.check format.org.or.pub } FUNCTION {format.institution.address} { institution "institution" bibinfo.check format.org.or.pub } FUNCTION {article} { output.bibitem format.authors "author" output.check format.date "year" output.check date.block format.title "title" output.check end.quote.title crossref missing$ { journal "journal" bibinfo.check doilink "journal" output.check format.vol.num.pages output } { format.article.crossref output.nonnull } if$ eid empty$ { format.journal.pages } { format.journal.eid } if$ format.note output fin.urllink.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$ format.date "year" output.check date.block format.doi.btitle "title" output.check crossref missing$ { format.edition output format.version output format.bvolume output format.number.series output format.publisher.address output } { format.book.crossref output.nonnull } if$ format.note output fin.urllink.entry } FUNCTION {booklet} { output.bibitem format.authors output format.date output date.block format.title "title" output.check end.quote.title howpublished "howpublished" bibinfo.check output address "address" bibinfo.check output format.doi output format.note output format.eprint output format.url 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$ format.date "year" output.check date.block format.doi.btitle "title" output.check crossref missing$ { format.edition output format.version output format.bvolume output format.number.series output format.publisher.address output format.chapter.pages "chapter and pages" output.check } { format.chapter.pages "chapter and pages" output.check format.book.crossref output.nonnull } if$ format.pages "pages" output.check format.note output fin.urllink.entry } FUNCTION {incollection} { output.bibitem format.authors "author" output.check format.date "year" output.check date.block format.title "title" output.check end.quote.title crossref missing$ { format.in.ed.booktitle "booktitle" output.check format.number.series output format.publisher.address output format.chapter.pages output } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ format.pages "pages" output.check format.note output fin.urllink.entry } FUNCTION {inserialcollection} { output.bibitem format.authors "author" output.check format.date "year" output.check date.block format.title "title" output.check end.quote.title crossref missing$ { format.in.ed.serialtitle "booktitle" output.check format.number.series output format.publisher.address output format.chapter.pages output } { format.incoll.inproc.crossref output.nonnull format.chapter.pages output } if$ format.pages "pages" output.check format.note output fin.urllink.entry } FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check format.date "year" output.check date.block format.title "title" output.check end.quote.title crossref missing$ { format.in.ed.proctitle "booktitle" output.check publisher empty$ { format.organization.address output } { format.publisher.address output } if$ } { format.incoll.inproc.crossref output.nonnull } if$ venue empty$ { venue "venue" output.check} { "address and venue" address either.or.check format.venue output } if$ format.eventdate "eventdate" output.check number empty$ { format.pages "pages" output.check format.alt.link } { format.paper.number "number" output.check format.pages "pages" output.check format.note output fin.urllink.entry } if$ } FUNCTION {conference} { inproceedings } FUNCTION {manual} { output.bibitem author empty$ { organization "organization" bibinfo.check duplicate$ empty$ 'pop$ { output address "address" bibinfo.check output } if$ } { format.authors output.nonnull } if$ format.date output date.block format.btitle "title" output.check format.edition output format.version output author empty$ { organization empty$ { address "address" bibinfo.check output } 'skip$ if$ } { organization "organization" bibinfo.check output address "address" bibinfo.check output } if$ format.doi output format.note output format.eprint output format.url output fin.entry } FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check format.date "year" output.check date.block format.title "title" output.check end.quote.title bbl.mthesis format.thesis.type output.nonnull school "school" bibinfo.warn output address "address" bibinfo.check output format.doi output format.note output format.eprint output format.url output fin.entry } FUNCTION {misc} { output.bibitem format.authors output format.date output format.title output end.quote.title howpublished "howpublished" bibinfo.check output format.doi output format.note output format.eprint output format.url output fin.entry empty.misc.check } FUNCTION {online} { 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$ format.date "year" output.check date.block format.title "title" output.check end.quote.title format.version output organization "organization" bibinfo.warn output address "address" bibinfo.check output format.doi output format.note output format.eprint output format.url "url" bibinfo.warn output fin.entry } FUNCTION {electronic} { online } FUNCTION {www} { online } FUNCTION {phdthesis} { output.bibitem format.authors "author" output.check format.date "year" output.check date.block format.title "title" output.check end.quote.title bbl.phdthesis format.thesis.type output.nonnull school "school" bibinfo.warn output address "address" bibinfo.check output format.doi output format.note output format.eprint output format.url output fin.entry } FUNCTION {proceedings} { output.bibitem editor empty$ { organization "organization" bibinfo.check output } { format.editors output.nonnull } if$ format.date "year" output.check date.block format.doi.btitle "title" output.check format.bvolume output editor empty$ { publisher empty$ { format.number.series output } { format.number.series output format.publisher.address output } if$ } { publisher empty$ { format.number.series output format.organization.address output } { format.number.series output format.publisher.address output } if$ } if$ "address and venue" address either.or.check format.venue "venue" output.check format.eventdate "eventdate" output.check format.note output fin.urllink.entry } FUNCTION {techreport} { output.bibitem format.authors "author" output.check format.date "year" output.check date.block format.title "title" output.check end.quote.title format.institution.address output number empty$ { format.alt.link } { format.tr.number output.nonnull format.note output fin.urllink.entry } if$ } FUNCTION {unpublished} { output.bibitem format.authors "author" output.check format.date output date.block format.title "title" output.check end.quote.title format.doi output format.note "note" output.check format.eprint output format.url output fin.entry } FUNCTION {default.type} { misc } READ STRINGS { longest.label } INTEGERS { number.label longest.label.width } FUNCTION {initialize.longest.label} { "" 'longest.label := #1 'number.label := #0 'longest.label.width := } FUNCTION {longest.label.pass} { number.label int.to.str$ 'label := number.label #1 + 'number.label := label width$ longest.label.width > { label 'longest.label := label width$ 'longest.label.width := } 'skip$ if$ } EXECUTE {initialize.longest.label} ITERATE {longest.label.pass} FUNCTION {begin.bib} { preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\begin{thebibliography}{" longest.label * "}" * write$ newline$ "\newcommand{\enquote}[1]{``#1''}" write$ newline$ "\providecommand{\url}[1]{\texttt{#1}}" write$ newline$ "\providecommand{\urlprefix}{}" write$ newline$ "\expandafter\ifx\csname urlstyle\endcsname\relax" write$ newline$ " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else" write$ newline$ " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi" write$ newline$ "\providecommand{\eprint}[2][]{\urlprefix\url{#1#2}}" write$ newline$ "\providecommand{\hrefurl}[2]{\href{#1}{#2}}" write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } EXECUTE {end.bib} %% End of customized bst file %% %% End of file `asmejour.bst'.