templates/icml2026/icml2026.bst
templates/icml2026/icml2026.bstBrowse 56 files
7,463 tokens
27,147 bytes
Token encoding: o200k_base
Snapshot 24fd22b
← Back to SKILL.md
1%% File: `icml2025.bst'2%% A modification of `plainnl.bst' for use with natbib package 3%%4%% Copyright 2010 Hal Daum\'e III5%% Modified by J. Fürnkranz6%% - Changed labels from (X and Y, 2000) to (X & Y, 2000)7%% - Changed References to last name first and abbreviated first names.8%% Modified by Iain Murray 2018 (who suggests adopting a standard .bst in future...)9%% - Made it actually use abbreviated first names10%%11%% Copyright 1993-2007 Patrick W Daly12%% Max-Planck-Institut f\"ur Sonnensystemforschung13%% Max-Planck-Str. 214%% D-37191 Katlenburg-Lindau15%% Germany16%% E-mail: daly@mps.mpg.de17%%18%% This program can be redistributed and/or modified under the terms19%% of the LaTeX Project Public License Distributed from CTAN20%% archives in directory macros/latex/base/lppl.txt; either21%% version 1 of the License, or any later version.22%%23 % Version and source file information:24 % \ProvidesFile{icml2010.mbs}[2007/11/26 1.93 (PWD)]25 %26 % BibTeX `plainnat' family27 % version 0.99b for BibTeX versions 0.99a or later,28 % for LaTeX versions 2.09 and 2e.29 %30 % For use with the `natbib.sty' package; emulates the corresponding31 % member of the `plain' family, but with author-year citations.32 %33 % With version 6.0 of `natbib.sty', it may also be used for numerical34 % citations, while retaining the commands \citeauthor, \citefullauthor,35 % and \citeyear to print the corresponding information.36 %37 % For version 7.0 of `natbib.sty', the KEY field replaces missing38 % authors/editors, and the date is left blank in \bibitem.39 %40 % Includes field EID for the sequence/citation number of electronic journals41 % which is used instead of page numbers.42 %43 % Includes fields ISBN and ISSN.44 %45 % Includes field URL for Internet addresses.46 %47 % Includes field DOI for Digital Object Idenfifiers.48 %49 % Works best with the url.sty package of Donald Arseneau.50 %51 % Works with identical authors and year are further sorted by52 % citation key, to preserve any natural sequence.53 %54ENTRY55 { address56 author57 booktitle58 chapter59 doi60 eid61 edition62 editor63 howpublished64 institution65 isbn66 issn67 journal68 key69 month70 note71 number72 organization73 pages74 publisher75 school76 series77 title78 type79 url80 volume81 year82 }83 {}84 { label extra.label sort.label short.list }85 86INTEGERS { output.state before.all mid.sentence after.sentence after.block }87 88FUNCTION {init.state.consts}89{ #0 'before.all :=90 #1 'mid.sentence :=91 #2 'after.sentence :=92 #3 'after.block :=93}94 95STRINGS { s t }96 97FUNCTION {output.nonnull}98{ 's :=99 output.state mid.sentence =100 { ", " * write$ }101 { output.state after.block =102 { add.period$ write$103 newline$104 "\newblock " write$105 }106 { output.state before.all =107 'write$108 { add.period$ " " * write$ }109 if$110 }111 if$112 mid.sentence 'output.state :=113 }114 if$115 s116}117 118FUNCTION {output}119{ duplicate$ empty$120 'pop$121 'output.nonnull122 if$123}124 125FUNCTION {output.check}126{ 't :=127 duplicate$ empty$128 { pop$ "empty " t * " in " * cite$ * warning$ }129 'output.nonnull130 if$131}132 133FUNCTION {fin.entry}134{ add.period$135 write$136 newline$137}138 139FUNCTION {new.block}140{ output.state before.all =141 'skip$142 { after.block 'output.state := }143 if$144}145 146FUNCTION {new.sentence}147{ output.state after.block =148 'skip$149 { output.state before.all =150 'skip$151 { after.sentence 'output.state := }152 if$153 }154 if$155}156 157FUNCTION {not}158{ { #0 }159 { #1 }160 if$161}162 163FUNCTION {and}164{ 'skip$165 { pop$ #0 }166 if$167}168 169FUNCTION {or}170{ { pop$ #1 }171 'skip$172 if$173}174 175FUNCTION {new.block.checka}176{ empty$177 'skip$178 'new.block179 if$180}181 182FUNCTION {new.block.checkb}183{ empty$184 swap$ empty$185 and186 'skip$187 'new.block188 if$189}190 191FUNCTION {new.sentence.checka}192{ empty$193 'skip$194 'new.sentence195 if$196}197 198FUNCTION {new.sentence.checkb}199{ empty$200 swap$ empty$201 and202 'skip$203 'new.sentence204 if$205}206 207FUNCTION {field.or.null}208{ duplicate$ empty$209 { pop$ "" }210 'skip$211 if$212}213 214FUNCTION {emphasize}215{ duplicate$ empty$216 { pop$ "" }217 { "\emph{" swap$ * "}" * }218 if$219}220 221INTEGERS { nameptr namesleft numnames }222 223FUNCTION {format.names}224{ 's :=225 #1 'nameptr :=226 s num.names$ 'numnames :=227 numnames 'namesleft :=228 { namesleft #0 > }229 { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=230 nameptr #1 >231 { namesleft #1 >232 { ", " * t * }233 { numnames #2 >234 { "," * }235 'skip$236 if$237 t "others" =238 { " et~al." * }239 { " and " * t * }240 if$241 }242 if$243 }244 't245 if$246 nameptr #1 + 'nameptr :=247 namesleft #1 - 'namesleft :=248 }249 while$250}251 252FUNCTION {format.key}253{ empty$254 { key field.or.null }255 { "" }256 if$257}258 259FUNCTION {format.authors}260{ author empty$261 { "" }262 { author format.names }263 if$264}265 266FUNCTION {format.editors}267{ editor empty$268 { "" }269 { editor format.names270 editor num.names$ #1 >271 { " (eds.)" * }272 { " (ed.)" * }273 if$274 }275 if$276}277 278FUNCTION {format.isbn}279{ isbn empty$280 { "" }281 { new.block "ISBN " isbn * }282 if$283}284 285FUNCTION {format.issn}286{ issn empty$287 { "" }288 { new.block "ISSN " issn * }289 if$290}291 292FUNCTION {format.url}293{ url empty$294 { "" }295 { new.block "URL \url{" url * "}" * }296 if$297}298 299FUNCTION {format.doi}300{ doi empty$301 { "" }302 { new.block "\doi{" doi * "}" * }303 if$304}305 306FUNCTION {format.title}307{ title empty$308 { "" }309 { title "t" change.case$ }310 if$311}312 313FUNCTION {format.full.names}314{'s :=315 #1 'nameptr :=316 s num.names$ 'numnames :=317 numnames 'namesleft :=318 { namesleft #0 > }319 { s nameptr320 "{vv~}{ll}" format.name$ 't :=321 nameptr #1 >322 {323 namesleft #1 >324 { ", " * t * }325 {326 numnames #2 >327 { "," * }328 'skip$329 if$330 t "others" =331 { " et~al." * }332 { " and " * t * }333 if$334 }335 if$336 }337 't338 if$339 nameptr #1 + 'nameptr :=340 namesleft #1 - 'namesleft :=341 }342 while$343}344 345FUNCTION {author.editor.full}346{ author empty$347 { editor empty$348 { "" }349 { editor format.full.names }350 if$351 }352 { author format.full.names }353 if$354}355 356FUNCTION {author.full}357{ author empty$358 { "" }359 { author format.full.names }360 if$361}362 363FUNCTION {editor.full}364{ editor empty$365 { "" }366 { editor format.full.names }367 if$368}369 370FUNCTION {make.full.names}371{ type$ "book" =372 type$ "inbook" =373 or374 'author.editor.full375 { type$ "proceedings" =376 'editor.full377 'author.full378 if$379 }380 if$381}382 383FUNCTION {output.bibitem}384{ newline$385 "\bibitem[" write$386 label write$387 ")" make.full.names duplicate$ short.list =388 { pop$ }389 { * }390 if$391 "]{" * write$392 cite$ write$393 "}" write$394 newline$395 ""396 before.all 'output.state :=397}398 399FUNCTION {n.dashify}400{ 't :=401 ""402 { t empty$ not }403 { t #1 #1 substring$ "-" =404 { t #1 #2 substring$ "--" = not405 { "--" *406 t #2 global.max$ substring$ 't :=407 }408 { { t #1 #1 substring$ "-" = }409 { "-" *410 t #2 global.max$ substring$ 't :=411 }412 while$413 }414 if$415 }416 { t #1 #1 substring$ *417 t #2 global.max$ substring$ 't :=418 }419 if$420 }421 while$422}423 424FUNCTION {format.date}425{ year duplicate$ empty$426 { "empty year in " cite$ * warning$427 pop$ "" }428 'skip$429 if$430 month empty$431 'skip$432 { month433 " " * swap$ *434 }435 if$436 extra.label *437}438 439FUNCTION {format.btitle}440{ title emphasize441}442 443FUNCTION {tie.or.space.connect}444{ duplicate$ text.length$ #3 <445 { "~" }446 { " " }447 if$448 swap$ * *449}450 451FUNCTION {either.or.check}452{ empty$453 'pop$454 { "can't use both " swap$ * " fields in " * cite$ * warning$ }455 if$456}457 458FUNCTION {format.bvolume}459{ volume empty$460 { "" }461 { "volume" volume tie.or.space.connect462 series empty$463 'skip$464 { " of " * series emphasize * }465 if$466 "volume and number" number either.or.check467 }468 if$469}470 471FUNCTION {format.number.series}472{ volume empty$473 { number empty$474 { series field.or.null }475 { output.state mid.sentence =476 { "number" }477 { "Number" }478 if$479 number tie.or.space.connect480 series empty$481 { "there's a number but no series in " cite$ * warning$ }482 { " in " * series * }483 if$484 }485 if$486 }487 { "" }488 if$489}490 491FUNCTION {format.edition}492{ edition empty$493 { "" }494 { output.state mid.sentence =495 { edition "l" change.case$ " edition" * }496 { edition "t" change.case$ " edition" * }497 if$498 }499 if$500}501 502INTEGERS { multiresult }503 504FUNCTION {multi.page.check}505{ 't :=506 #0 'multiresult :=507 { multiresult not508 t empty$ not509 and510 }511 { t #1 #1 substring$512 duplicate$ "-" =513 swap$ duplicate$ "," =514 swap$ "+" =515 or or516 { #1 'multiresult := }517 { t #2 global.max$ substring$ 't := }518 if$519 }520 while$521 multiresult522}523 524FUNCTION {format.pages}525{ pages empty$526 { "" }527 { pages multi.page.check528 { "pp.\ " pages n.dashify tie.or.space.connect }529 { "pp.\ " pages tie.or.space.connect }530 if$531 }532 if$533}534 535FUNCTION {format.eid}536{ eid empty$537 { "" }538 { "art." eid tie.or.space.connect }539 if$540}541 542FUNCTION {format.vol.num.pages}543{ volume field.or.null544 number empty$545 'skip$546 { "\penalty0 (" number * ")" * *547 volume empty$548 { "there's a number but no volume in " cite$ * warning$ }549 'skip$550 if$551 }552 if$553 pages empty$554 'skip$555 { duplicate$ empty$556 { pop$ format.pages }557 { ":\penalty0 " * pages n.dashify * }558 if$559 }560 if$561}562 563FUNCTION {format.vol.num.eid}564{ volume field.or.null565 number empty$566 'skip$567 { "\penalty0 (" number * ")" * *568 volume empty$569 { "there's a number but no volume in " cite$ * warning$ }570 'skip$571 if$572 }573 if$574 eid empty$575 'skip$576 { duplicate$ empty$577 { pop$ format.eid }578 { ":\penalty0 " * eid * }579 if$580 }581 if$582}583 584FUNCTION {format.chapter.pages}585{ chapter empty$586 'format.pages587 { type empty$588 { "chapter" }589 { type "l" change.case$ }590 if$591 chapter tie.or.space.connect592 pages empty$593 'skip$594 { ", " * format.pages * }595 if$596 }597 if$598}599 600FUNCTION {format.in.ed.booktitle}601{ booktitle empty$602 { "" }603 { editor empty$604 { "In " booktitle emphasize * }605 { "In " format.editors * ", " * booktitle emphasize * }606 if$607 }608 if$609}610 611FUNCTION {empty.misc.check}612{ author empty$ title empty$ howpublished empty$613 month empty$ year empty$ note empty$614 and and and and and615 key empty$ not and616 { "all relevant fields are empty in " cite$ * warning$ }617 'skip$618 if$619}620 621FUNCTION {format.thesis.type}622{ type empty$623 'skip$624 { pop$625 type "t" change.case$626 }627 if$628}629 630FUNCTION {format.tr.number}631{ type empty$632 { "Technical Report" }633 'type634 if$635 number empty$636 { "t" change.case$ }637 { number tie.or.space.connect }638 if$639}640 641FUNCTION {format.article.crossref}642{ key empty$643 { journal empty$644 { "need key or journal for " cite$ * " to crossref " * crossref *645 warning$646 ""647 }648 { "In \emph{" journal * "}" * }649 if$650 }651 { "In " }652 if$653 " \citet{" * crossref * "}" *654}655 656FUNCTION {format.book.crossref}657{ volume empty$658 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$659 "In "660 }661 { "Volume" volume tie.or.space.connect662 " of " *663 }664 if$665 editor empty$666 editor field.or.null author field.or.null =667 or668 { key empty$669 { series empty$670 { "need editor, key, or series for " cite$ * " to crossref " *671 crossref * warning$672 "" *673 }674 { "\emph{" * series * "}" * }675 if$676 }677 'skip$678 if$679 }680 'skip$681 if$682 " \citet{" * crossref * "}" *683}684 685FUNCTION {format.incoll.inproc.crossref}686{ editor empty$687 editor field.or.null author field.or.null =688 or689 { key empty$690 { booktitle empty$691 { "need editor, key, or booktitle for " cite$ * " to crossref " *692 crossref * warning$693 ""694 }695 { "In \emph{" booktitle * "}" * }696 if$697 }698 { "In " }699 if$700 }701 { "In " }702 if$703 " \citet{" * crossref * "}" *704}705 706FUNCTION {article}707{ output.bibitem708 format.authors "author" output.check709 author format.key output710 new.block711 format.title "title" output.check712 new.block713 crossref missing$714 { journal emphasize "journal" output.check715 eid empty$716 { format.vol.num.pages output }717 { format.vol.num.eid output }718 if$719 format.date "year" output.check720 }721 { format.article.crossref output.nonnull722 eid empty$723 { format.pages output }724 { format.eid output }725 if$726 }727 if$728 format.issn output729 format.doi output730 format.url output731 new.block732 note output733 fin.entry734}735 736FUNCTION {book}737{ output.bibitem738 author empty$739 { format.editors "author and editor" output.check740 editor format.key output741 }742 { format.authors output.nonnull743 crossref missing$744 { "author and editor" editor either.or.check }745 'skip$746 if$747 }748 if$749 new.block750 format.btitle "title" output.check751 crossref missing$752 { format.bvolume output753 new.block754 format.number.series output755 new.sentence756 publisher "publisher" output.check757 address output758 }759 { new.block760 format.book.crossref output.nonnull761 }762 if$763 format.edition output764 format.date "year" output.check765 format.isbn output766 format.doi output767 format.url output768 new.block769 note output770 fin.entry771}772 773FUNCTION {booklet}774{ output.bibitem775 format.authors output776 author format.key output777 new.block778 format.title "title" output.check779 howpublished address new.block.checkb780 howpublished output781 address output782 format.date output783 format.isbn output784 format.doi output785 format.url output786 new.block787 note output788 fin.entry789}790 791FUNCTION {inbook}792{ output.bibitem793 author empty$794 { format.editors "author and editor" output.check795 editor format.key output796 }797 { format.authors output.nonnull798 crossref missing$799 { "author and editor" editor either.or.check }800 'skip$801 if$802 }803 if$804 new.block805 format.btitle "title" output.check806 crossref missing$807 { format.bvolume output808 format.chapter.pages "chapter and pages" output.check809 new.block810 format.number.series output811 new.sentence812 publisher "publisher" output.check813 address output814 }815 { format.chapter.pages "chapter and pages" output.check816 new.block817 format.book.crossref output.nonnull818 }819 if$820 format.edition output821 format.date "year" output.check822 format.isbn output823 format.doi output824 format.url output825 new.block826 note output827 fin.entry828}829 830FUNCTION {incollection}831{ output.bibitem832 format.authors "author" output.check833 author format.key output834 new.block835 format.title "title" output.check836 new.block837 crossref missing$838 { format.in.ed.booktitle "booktitle" output.check839 format.bvolume output840 format.number.series output841 format.chapter.pages output842 new.sentence843 publisher "publisher" output.check844 address output845 format.edition output846 format.date "year" output.check847 }848 { format.incoll.inproc.crossref output.nonnull849 format.chapter.pages output850 }851 if$852 format.isbn output853 format.doi output854 format.url output855 new.block856 note output857 fin.entry858}859 860FUNCTION {inproceedings}861{ output.bibitem862 format.authors "author" output.check863 author format.key output864 new.block865 format.title "title" output.check866 new.block867 crossref missing$868 { format.in.ed.booktitle "booktitle" output.check869 format.bvolume output870 format.number.series output871 format.pages output872 address empty$873 { organization publisher new.sentence.checkb874 organization output875 publisher output876 format.date "year" output.check877 }878 { address output.nonnull879 format.date "year" output.check880 new.sentence881 organization output882 publisher output883 }884 if$885 }886 { format.incoll.inproc.crossref output.nonnull887 format.pages output888 }889 if$890 format.isbn output891 format.doi output892 format.url output893 new.block894 note output895 fin.entry896}897 898FUNCTION {conference} { inproceedings }899 900FUNCTION {manual}901{ output.bibitem902 format.authors output903 author format.key output904 new.block905 format.btitle "title" output.check906 organization address new.block.checkb907 organization output908 address output909 format.edition output910 format.date output911 format.url output912 new.block913 note output914 fin.entry915}916 917FUNCTION {mastersthesis}918{ output.bibitem919 format.authors "author" output.check920 author format.key output921 new.block922 format.title "title" output.check923 new.block924 "Master's thesis" format.thesis.type output.nonnull925 school "school" output.check926 address output927 format.date "year" output.check928 format.url output929 new.block930 note output931 fin.entry932}933 934FUNCTION {misc}935{ output.bibitem936 format.authors output937 author format.key output938 title howpublished new.block.checkb939 format.title output940 howpublished new.block.checka941 howpublished output942 format.date output943 format.issn output944 format.url output945 new.block946 note output947 fin.entry948 empty.misc.check949}950 951FUNCTION {phdthesis}952{ output.bibitem953 format.authors "author" output.check954 author format.key output955 new.block956 format.btitle "title" output.check957 new.block958 "PhD thesis" format.thesis.type output.nonnull959 school "school" output.check960 address output961 format.date "year" output.check962 format.url output963 new.block964 note output965 fin.entry966}967 968FUNCTION {proceedings}969{ output.bibitem970 format.editors output971 editor format.key output972 new.block973 format.btitle "title" output.check974 format.bvolume output975 format.number.series output976 address output977 format.date "year" output.check978 new.sentence979 organization output980 publisher output981 format.isbn output982 format.doi output983 format.url output984 new.block985 note output986 fin.entry987}988 989FUNCTION {techreport}990{ output.bibitem991 format.authors "author" output.check992 author format.key output993 new.block994 format.title "title" output.check995 new.block996 format.tr.number output.nonnull997 institution "institution" output.check998 address output999 format.date "year" output.check1000 format.url output1001 new.block1002 note output1003 fin.entry1004}1005 1006FUNCTION {unpublished}1007{ output.bibitem1008 format.authors "author" output.check1009 author format.key output1010 new.block1011 format.title "title" output.check1012 new.block1013 note "note" output.check1014 format.date output1015 format.url output1016 fin.entry1017}1018 1019FUNCTION {default.type} { misc }1020 1021 1022MACRO {jan} {"January"}1023 1024MACRO {feb} {"February"}1025 1026MACRO {mar} {"March"}1027 1028MACRO {apr} {"April"}1029 1030MACRO {may} {"May"}1031 1032MACRO {jun} {"June"}1033 1034MACRO {jul} {"July"}1035 1036MACRO {aug} {"August"}1037 1038MACRO {sep} {"September"}1039 1040MACRO {oct} {"October"}1041 1042MACRO {nov} {"November"}1043 1044MACRO {dec} {"December"}1045 1046 1047 1048MACRO {acmcs} {"ACM Computing Surveys"}1049 1050MACRO {acta} {"Acta Informatica"}1051 1052MACRO {cacm} {"Communications of the ACM"}1053 1054MACRO {ibmjrd} {"IBM Journal of Research and Development"}1055 1056MACRO {ibmsj} {"IBM Systems Journal"}1057 1058MACRO {ieeese} {"IEEE Transactions on Software Engineering"}1059 1060MACRO {ieeetc} {"IEEE Transactions on Computers"}1061 1062MACRO {ieeetcad}1063 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}1064 1065MACRO {ipl} {"Information Processing Letters"}1066 1067MACRO {jacm} {"Journal of the ACM"}1068 1069MACRO {jcss} {"Journal of Computer and System Sciences"}1070 1071MACRO {scp} {"Science of Computer Programming"}1072 1073MACRO {sicomp} {"SIAM Journal on Computing"}1074 1075MACRO {tocs} {"ACM Transactions on Computer Systems"}1076 1077MACRO {tods} {"ACM Transactions on Database Systems"}1078 1079MACRO {tog} {"ACM Transactions on Graphics"}1080 1081MACRO {toms} {"ACM Transactions on Mathematical Software"}1082 1083MACRO {toois} {"ACM Transactions on Office Information Systems"}1084 1085MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}1086 1087MACRO {tcs} {"Theoretical Computer Science"}1088 1089 1090READ1091 1092FUNCTION {sortify}1093{ purify$1094 "l" change.case$1095}1096 1097INTEGERS { len }1098 1099FUNCTION {chop.word}1100{ 's :=1101 'len :=1102 s #1 len substring$ =1103 { s len #1 + global.max$ substring$ }1104 's1105 if$1106}1107 1108FUNCTION {format.lab.names}1109{ 's :=1110 s #1 "{vv~}{ll}" format.name$1111 s num.names$ duplicate$1112 #2 >1113 { pop$ " et~al." * }1114 { #2 <1115 'skip$1116 { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =1117 { " et~al." * }1118 { " \& " * s #2 "{vv~}{ll}" format.name$ * }1119 if$1120 }1121 if$1122 }1123 if$1124}1125 1126FUNCTION {author.key.label}1127{ author empty$1128 { key empty$1129 { cite$ #1 #3 substring$ }1130 'key1131 if$1132 }1133 { author format.lab.names }1134 if$1135}1136 1137FUNCTION {author.editor.key.label}1138{ author empty$1139 { editor empty$1140 { key empty$1141 { cite$ #1 #3 substring$ }1142 'key1143 if$1144 }1145 { editor format.lab.names }1146 if$1147 }1148 { author format.lab.names }1149 if$1150}1151 1152FUNCTION {author.key.organization.label}1153{ author empty$1154 { key empty$1155 { organization empty$1156 { cite$ #1 #3 substring$ }1157 { "The " #4 organization chop.word #3 text.prefix$ }1158 if$1159 }1160 'key1161 if$1162 }1163 { author format.lab.names }1164 if$1165}1166 1167FUNCTION {editor.key.organization.label}1168{ editor empty$1169 { key empty$1170 { organization empty$1171 { cite$ #1 #3 substring$ }1172 { "The " #4 organization chop.word #3 text.prefix$ }1173 if$1174 }1175 'key1176 if$1177 }1178 { editor format.lab.names }1179 if$1180}1181 1182FUNCTION {calc.short.authors}1183{ type$ "book" =1184 type$ "inbook" =1185 or1186 'author.editor.key.label1187 { type$ "proceedings" =1188 'editor.key.organization.label1189 { type$ "manual" =1190 'author.key.organization.label1191 'author.key.label1192 if$1193 }1194 if$1195 }1196 if$1197 'short.list :=1198}1199 1200FUNCTION {calc.label}1201{ calc.short.authors1202 short.list1203 "("1204 *1205 year duplicate$ empty$1206 short.list key field.or.null = or1207 { pop$ "" }1208 'skip$1209 if$1210 *1211 'label :=1212}1213 1214FUNCTION {sort.format.names}1215{ 's :=1216 #1 'nameptr :=1217 ""1218 s num.names$ 'numnames :=1219 numnames 'namesleft :=1220 { namesleft #0 > }1221 {1222 s nameptr "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}" format.name$ 't :=1223 nameptr #1 >1224 {1225 " " *1226 namesleft #1 = t "others" = and1227 { "zzzzz" * }1228 { numnames #2 > nameptr #2 = and1229 { "zz" * year field.or.null * " " * }1230 'skip$1231 if$1232 t sortify *1233 }1234 if$1235 }1236 { t sortify * }1237 if$1238 nameptr #1 + 'nameptr :=1239 namesleft #1 - 'namesleft :=1240 }1241 while$1242}1243 1244FUNCTION {sort.format.title}1245{ 't :=1246 "A " #21247 "An " #31248 "The " #4 t chop.word1249 chop.word1250 chop.word1251 sortify1252 #1 global.max$ substring$1253}1254 1255FUNCTION {author.sort}1256{ author empty$1257 { key empty$1258 { "to sort, need author or key in " cite$ * warning$1259 ""1260 }1261 { key sortify }1262 if$1263 }1264 { author sort.format.names }1265 if$1266}1267 1268FUNCTION {author.editor.sort}1269{ author empty$1270 { editor empty$1271 { key empty$1272 { "to sort, need author, editor, or key in " cite$ * warning$1273 ""1274 }1275 { key sortify }1276 if$1277 }1278 { editor sort.format.names }1279 if$1280 }1281 { author sort.format.names }1282 if$1283}1284 1285FUNCTION {author.organization.sort}1286{ author empty$1287 { organization empty$1288 { key empty$1289 { "to sort, need author, organization, or key in " cite$ * warning$1290 ""1291 }1292 { key sortify }1293 if$1294 }1295 { "The " #4 organization chop.word sortify }1296 if$1297 }1298 { author sort.format.names }1299 if$1300}1301 1302FUNCTION {editor.organization.sort}1303{ editor empty$1304 { organization empty$1305 { key empty$1306 { "to sort, need editor, organization, or key in " cite$ * warning$1307 ""1308 }1309 { key sortify }1310 if$1311 }1312 { "The " #4 organization chop.word sortify }1313 if$1314 }1315 { editor sort.format.names }1316 if$1317}1318 1319 1320FUNCTION {presort}1321{ calc.label1322 label sortify1323 " "1324 *1325 type$ "book" =1326 type$ "inbook" =1327 or1328 'author.editor.sort1329 { type$ "proceedings" =1330 'editor.organization.sort1331 { type$ "manual" =1332 'author.organization.sort1333 'author.sort1334 if$1335 }1336 if$1337 }1338 if$1339 " "1340 *1341 year field.or.null sortify1342 *1343 " "1344 *1345 cite$1346 *1347 #1 entry.max$ substring$1348 'sort.label :=1349 sort.label *1350 #1 entry.max$ substring$1351 'sort.key$ :=1352}1353 1354ITERATE {presort}1355 1356SORT1357 1358STRINGS { longest.label last.label next.extra }1359 1360INTEGERS { longest.label.width last.extra.num number.label }1361 1362FUNCTION {initialize.longest.label}1363{ "" 'longest.label :=1364 #0 int.to.chr$ 'last.label :=1365 "" 'next.extra :=1366 #0 'longest.label.width :=1367 #0 'last.extra.num :=1368 #0 'number.label :=1369}1370 1371FUNCTION {forward.pass}1372{ last.label label =1373 { last.extra.num #1 + 'last.extra.num :=1374 last.extra.num int.to.chr$ 'extra.label :=1375 }1376 { "a" chr.to.int$ 'last.extra.num :=1377 "" 'extra.label :=1378 label 'last.label :=1379 }1380 if$1381 number.label #1 + 'number.label :=1382}1383 1384FUNCTION {reverse.pass}1385{ next.extra "b" =1386 { "a" 'extra.label := }1387 'skip$1388 if$1389 extra.label 'next.extra :=1390 extra.label1391 duplicate$ empty$1392 'skip$1393 { "{\natexlab{" swap$ * "}}" * }1394 if$1395 'extra.label :=1396 label extra.label * 'label :=1397}1398 1399EXECUTE {initialize.longest.label}1400 1401ITERATE {forward.pass}1402 1403REVERSE {reverse.pass}1404 1405FUNCTION {bib.sort.order}1406{ sort.label 'sort.key$ :=1407}1408 1409ITERATE {bib.sort.order}1410 1411SORT1412 1413FUNCTION {begin.bib}1414{ preamble$ empty$1415 'skip$1416 { preamble$ write$ newline$ }1417 if$1418 "\begin{thebibliography}{" number.label int.to.str$ * "}" *1419 write$ newline$1420 "\providecommand{\natexlab}[1]{#1}"1421 write$ newline$1422 "\providecommand{\url}[1]{\texttt{#1}}"1423 write$ newline$1424 "\expandafter\ifx\csname urlstyle\endcsname\relax"1425 write$ newline$1426 " \providecommand{\doi}[1]{doi: #1}\else"1427 write$ newline$1428 " \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"1429 write$ newline$1430}1431 1432EXECUTE {begin.bib}1433 1434EXECUTE {init.state.consts}1435 1436ITERATE {call.type$}1437 1438FUNCTION {end.bib}1439{ newline$1440 "\end{thebibliography}" write$ newline$1441}1442 1443EXECUTE {end.bib}1444