jss.bst 32 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182838485868788899091929394959697989910010110210310410510610710810911011111211311411511611711811912012112212312412512612712812913013113213313413513613713813914014114214314414514614714814915015115215315415515615715815916016116216316416516616716816917017117217317417517617717817918018118218318418518618718818919019119219319419519619719819920020120220320420520620720820921021121221321421521621721821922022122222322422522622722822923023123223323423523623723823924024124224324424524624724824925025125225325425525625725825926026126226326426526626726826927027127227327427527627727827928028128228328428528628728828929029129229329429529629729829930030130230330430530630730830931031131231331431531631731831932032132232332432532632732832933033133233333433533633733833934034134234334434534634734834935035135235335435535635735835936036136236336436536636736836937037137237337437537637737837938038138238338438538638738838939039139239339439539639739839940040140240340440540640740840941041141241341441541641741841942042142242342442542642742842943043143243343443543643743843944044144244344444544644744844945045145245345445545645745845946046146246346446546646746846947047147247347447547647747847948048148248348448548648748848949049149249349449549649749849950050150250350450550650750850951051151251351451551651751851952052152252352452552652752852953053153253353453553653753853954054154254354454554654754854955055155255355455555655755855956056156256356456556656756856957057157257357457557657757857958058158258358458558658758858959059159259359459559659759859960060160260360460560660760860961061161261361461561661761861962062162262362462562662762862963063163263363463563663763863964064164264364464564664764864965065165265365465565665765865966066166266366466566666766866967067167267367467567667767867968068168268368468568668768868969069169269369469569669769869970070170270370470570670770870971071171271371471571671771871972072172272372472572672772872973073173273373473573673773873974074174274374474574674774874975075175275375475575675775875976076176276376476576676776876977077177277377477577677777877978078178278378478578678778878979079179279379479579679779879980080180280380480580680780880981081181281381481581681781881982082182282382482582682782882983083183283383483583683783883984084184284384484584684784884985085185285385485585685785885986086186286386486586686786886987087187287387487587687787887988088188288388488588688788888989089189289389489589689789889990090190290390490590690790890991091191291391491591691791891992092192292392492592692792892993093193293393493593693793893994094194294394494594694794894995095195295395495595695795895996096196296396496596696796896997097197297397497597697797897998098198298398498598698798898999099199299399499599699799899910001001100210031004100510061007100810091010101110121013101410151016101710181019102010211022102310241025102610271028102910301031103210331034103510361037103810391040104110421043104410451046104710481049105010511052105310541055105610571058105910601061106210631064106510661067106810691070107110721073107410751076107710781079108010811082108310841085108610871088108910901091109210931094109510961097109810991100110111021103110411051106110711081109111011111112111311141115111611171118111911201121112211231124112511261127112811291130113111321133113411351136113711381139114011411142114311441145114611471148114911501151115211531154115511561157115811591160116111621163116411651166116711681169117011711172117311741175117611771178117911801181118211831184118511861187118811891190119111921193119411951196119711981199120012011202120312041205120612071208120912101211121212131214121512161217121812191220122112221223122412251226122712281229123012311232123312341235123612371238123912401241124212431244124512461247124812491250125112521253125412551256125712581259126012611262126312641265126612671268126912701271127212731274127512761277127812791280128112821283128412851286128712881289129012911292129312941295129612971298129913001301130213031304130513061307130813091310131113121313131413151316131713181319132013211322132313241325132613271328132913301331133213331334133513361337133813391340134113421343134413451346134713481349135013511352135313541355135613571358135913601361136213631364136513661367136813691370137113721373137413751376137713781379138013811382138313841385138613871388138913901391139213931394139513961397139813991400140114021403140414051406140714081409141014111412141314141415141614171418141914201421142214231424142514261427142814291430143114321433143414351436143714381439144014411442144314441445144614471448144914501451145214531454145514561457145814591460146114621463146414651466146714681469147014711472147314741475147614771478147914801481148214831484148514861487148814891490149114921493149414951496149714981499150015011502150315041505150615071508150915101511151215131514151515161517151815191520152115221523152415251526152715281529153015311532153315341535153615371538153915401541154215431544154515461547154815491550155115521553155415551556155715581559156015611562156315641565156615671568156915701571157215731574157515761577157815791580158115821583158415851586158715881589159015911592159315941595159615971598159916001601160216031604160516061607160816091610161116121613161416151616161716181619162016211622162316241625162616271628162916301631163216331634163516361637163816391640164116421643164416451646164716481649165016511652165316541655
  1. %%
  2. %% This is file `jss.bst',
  3. %% generated with the docstrip utility.
  4. %%
  5. %% The original source files were:
  6. %%
  7. %% merlin.mbs (with options: `ay,nat,nm-rvx,keyxyr,dt-beg,yr-par,note-yr,tit-qq,atit-u,trnum-it,vol-bf,volp-com,num-xser,pre-edn,isbn,issn,edpar,pp,ed,xedn,xand,etal-it,revdata,eprint,url,url-blk,doi,nfss')
  8. %%
  9. %% ** BibTeX style file for JSS publications (http://www.jstatsoft.org/)
  10. %%
  11. %% Copyright 1994-2011 Patrick W Daly
  12. %% License: GPL-2 | GPL-3
  13. % ===============================================================
  14. % IMPORTANT NOTICE:
  15. % This bibliographic style (bst) file has been generated from one or
  16. % more master bibliographic style (mbs) files, listed above, provided
  17. % with kind permission of Patrick W Daly.
  18. %
  19. % This generated file can be redistributed and/or modified under the terms
  20. % of the General Public License (Version 2 or 3).
  21. % ===============================================================
  22. % Name and version information of the main mbs file:
  23. % \ProvidesFile{merlin.mbs}[2011/11/18 4.33 (PWD, AO, DPC)]
  24. % For use with BibTeX version 0.99a or later
  25. %-------------------------------------------------------------------
  26. % This bibliography style file is intended for texts in ENGLISH
  27. % This is an author-year citation style bibliography. As such, it is
  28. % non-standard LaTeX, and requires a special package file to function properly.
  29. % Such a package is natbib.sty by Patrick W. Daly
  30. % The form of the \bibitem entries is
  31. % \bibitem[Jones et al.(1990)]{key}...
  32. % \bibitem[Jones et al.(1990)Jones, Baker, and Smith]{key}...
  33. % The essential feature is that the label (the part in brackets) consists
  34. % of the author names, as they should appear in the citation, with the year
  35. % in parentheses following. There must be no space before the opening
  36. % parenthesis!
  37. % With natbib v5.3, a full list of authors may also follow the year.
  38. % In natbib.sty, it is possible to define the type of enclosures that is
  39. % really wanted (brackets or parentheses), but in either case, there must
  40. % be parentheses in the label.
  41. % The \cite command functions as follows:
  42. % \citet{key} ==>> Jones et al. (1990)
  43. % \citet*{key} ==>> Jones, Baker, and Smith (1990)
  44. % \citep{key} ==>> (Jones et al., 1990)
  45. % \citep*{key} ==>> (Jones, Baker, and Smith, 1990)
  46. % \citep[chap. 2]{key} ==>> (Jones et al., 1990, chap. 2)
  47. % \citep[e.g.][]{key} ==>> (e.g. Jones et al., 1990)
  48. % \citep[e.g.][p. 32]{key} ==>> (e.g. Jones et al., 1990, p. 32)
  49. % \citeauthor{key} ==>> Jones et al.
  50. % \citeauthor*{key} ==>> Jones, Baker, and Smith
  51. % \citeyear{key} ==>> 1990
  52. %---------------------------------------------------------------------
  53. ENTRY
  54. { address
  55. archive
  56. author
  57. booktitle
  58. chapter
  59. collaboration
  60. doi
  61. edition
  62. editor
  63. eid
  64. eprint
  65. howpublished
  66. institution
  67. isbn
  68. issn
  69. journal
  70. key
  71. month
  72. note
  73. number
  74. numpages
  75. organization
  76. pages
  77. publisher
  78. school
  79. series
  80. title
  81. type
  82. url
  83. volume
  84. year
  85. }
  86. {}
  87. { label extra.label sort.label short.list }
  88. INTEGERS { output.state before.all mid.sentence after.sentence after.block }
  89. FUNCTION {init.state.consts}
  90. { #0 'before.all :=
  91. #1 'mid.sentence :=
  92. #2 'after.sentence :=
  93. #3 'after.block :=
  94. }
  95. STRINGS { s t}
  96. FUNCTION {output.nonnull}
  97. { 's :=
  98. output.state mid.sentence =
  99. { ", " * write$ }
  100. { output.state after.block =
  101. { add.period$ write$
  102. newline$
  103. "\newblock " write$
  104. }
  105. { output.state before.all =
  106. 'write$
  107. { add.period$ " " * write$ }
  108. if$
  109. }
  110. if$
  111. mid.sentence 'output.state :=
  112. }
  113. if$
  114. s
  115. }
  116. FUNCTION {output}
  117. { duplicate$ empty$
  118. 'pop$
  119. 'output.nonnull
  120. if$
  121. }
  122. FUNCTION {output.check}
  123. { 't :=
  124. duplicate$ empty$
  125. { pop$ "empty " t * " in " * cite$ * warning$ }
  126. 'output.nonnull
  127. if$
  128. }
  129. FUNCTION {fin.entry}
  130. { add.period$
  131. write$
  132. newline$
  133. }
  134. FUNCTION {new.block}
  135. { output.state before.all =
  136. 'skip$
  137. { after.block 'output.state := }
  138. if$
  139. }
  140. FUNCTION {new.sentence}
  141. { output.state after.block =
  142. 'skip$
  143. { output.state before.all =
  144. 'skip$
  145. { after.sentence 'output.state := }
  146. if$
  147. }
  148. if$
  149. }
  150. FUNCTION {add.blank}
  151. { " " * before.all 'output.state :=
  152. }
  153. FUNCTION {date.block}
  154. {
  155. new.block
  156. }
  157. FUNCTION {not}
  158. { { #0 }
  159. { #1 }
  160. if$
  161. }
  162. FUNCTION {and}
  163. { 'skip$
  164. { pop$ #0 }
  165. if$
  166. }
  167. FUNCTION {or}
  168. { { pop$ #1 }
  169. 'skip$
  170. if$
  171. }
  172. FUNCTION {non.stop}
  173. { duplicate$
  174. "}" * add.period$
  175. #-1 #1 substring$ "." =
  176. }
  177. STRINGS {z}
  178. FUNCTION {remove.dots}
  179. { 'z :=
  180. ""
  181. { z empty$ not }
  182. { z #1 #2 substring$
  183. duplicate$ "\." =
  184. { z #3 global.max$ substring$ 'z := * }
  185. { pop$
  186. z #1 #1 substring$
  187. z #2 global.max$ substring$ 'z :=
  188. duplicate$ "." = 'pop$
  189. { * }
  190. if$
  191. }
  192. if$
  193. }
  194. while$
  195. }
  196. FUNCTION {new.block.checkb}
  197. { empty$
  198. swap$ empty$
  199. and
  200. 'skip$
  201. 'new.block
  202. if$
  203. }
  204. FUNCTION {field.or.null}
  205. { duplicate$ empty$
  206. { pop$ "" }
  207. 'skip$
  208. if$
  209. }
  210. FUNCTION {emphasize}
  211. { duplicate$ empty$
  212. { pop$ "" }
  213. { "\emph{" swap$ * "}" * }
  214. if$
  215. }
  216. FUNCTION {bolden}
  217. { duplicate$ empty$
  218. { pop$ "" }
  219. { "\textbf{" swap$ * "}" * }
  220. if$
  221. }
  222. FUNCTION {tie.or.space.prefix}
  223. { duplicate$ text.length$ #3 <
  224. { "~" }
  225. { " " }
  226. if$
  227. swap$
  228. }
  229. FUNCTION {capitalize}
  230. { "u" change.case$ "t" change.case$ }
  231. FUNCTION {space.word}
  232. { " " swap$ * " " * }
  233. % Here are the language-specific definitions for explicit words.
  234. % Each function has a name bbl.xxx where xxx is the English word.
  235. % The language selected here is ENGLISH
  236. FUNCTION {bbl.and}
  237. { "and"}
  238. FUNCTION {bbl.etal}
  239. { "et~al." }
  240. FUNCTION {bbl.editors}
  241. { "eds." }
  242. FUNCTION {bbl.editor}
  243. { "ed." }
  244. FUNCTION {bbl.edby}
  245. { "edited by" }
  246. FUNCTION {bbl.edition}
  247. { "edition" }
  248. FUNCTION {bbl.volume}
  249. { "volume" }
  250. FUNCTION {bbl.of}
  251. { "of" }
  252. FUNCTION {bbl.number}
  253. { "number" }
  254. FUNCTION {bbl.nr}
  255. { "no." }
  256. FUNCTION {bbl.in}
  257. { "in" }
  258. FUNCTION {bbl.pages}
  259. { "pp." }
  260. FUNCTION {bbl.page}
  261. { "p." }
  262. FUNCTION {bbl.eidpp}
  263. { "pages" }
  264. FUNCTION {bbl.chapter}
  265. { "chapter" }
  266. FUNCTION {bbl.techrep}
  267. { "Technical Report" }
  268. FUNCTION {bbl.mthesis}
  269. { "Master's thesis" }
  270. FUNCTION {bbl.phdthesis}
  271. { "Ph.D. thesis" }
  272. MACRO {jan} {"January"}
  273. MACRO {feb} {"February"}
  274. MACRO {mar} {"March"}
  275. MACRO {apr} {"April"}
  276. MACRO {may} {"May"}
  277. MACRO {jun} {"June"}
  278. MACRO {jul} {"July"}
  279. MACRO {aug} {"August"}
  280. MACRO {sep} {"September"}
  281. MACRO {oct} {"October"}
  282. MACRO {nov} {"November"}
  283. MACRO {dec} {"December"}
  284. MACRO {acmcs} {"ACM Computing Surveys"}
  285. MACRO {acta} {"Acta Informatica"}
  286. MACRO {cacm} {"Communications of the ACM"}
  287. MACRO {ibmjrd} {"IBM Journal of Research and Development"}
  288. MACRO {ibmsj} {"IBM Systems Journal"}
  289. MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
  290. MACRO {ieeetc} {"IEEE Transactions on Computers"}
  291. MACRO {ieeetcad}
  292. {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  293. MACRO {ipl} {"Information Processing Letters"}
  294. MACRO {jacm} {"Journal of the ACM"}
  295. MACRO {jcss} {"Journal of Computer and System Sciences"}
  296. MACRO {scp} {"Science of Computer Programming"}
  297. MACRO {sicomp} {"SIAM Journal on Computing"}
  298. MACRO {tocs} {"ACM Transactions on Computer Systems"}
  299. MACRO {tods} {"ACM Transactions on Database Systems"}
  300. MACRO {tog} {"ACM Transactions on Graphics"}
  301. MACRO {toms} {"ACM Transactions on Mathematical Software"}
  302. MACRO {toois} {"ACM Transactions on Office Information Systems"}
  303. MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
  304. MACRO {tcs} {"Theoretical Computer Science"}
  305. FUNCTION {bibinfo.check}
  306. { swap$
  307. duplicate$ missing$
  308. {
  309. pop$ pop$
  310. ""
  311. }
  312. { duplicate$ empty$
  313. {
  314. swap$ pop$
  315. }
  316. { swap$
  317. pop$
  318. }
  319. if$
  320. }
  321. if$
  322. }
  323. FUNCTION {bibinfo.warn}
  324. { swap$
  325. duplicate$ missing$
  326. {
  327. swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
  328. ""
  329. }
  330. { duplicate$ empty$
  331. {
  332. swap$ "empty " swap$ * " in " * cite$ * warning$
  333. }
  334. { swap$
  335. pop$
  336. }
  337. if$
  338. }
  339. if$
  340. }
  341. FUNCTION {format.eprint}
  342. { eprint duplicate$ empty$
  343. 'skip$
  344. { "\eprint"
  345. archive empty$
  346. 'skip$
  347. { "[" * archive * "]" * }
  348. if$
  349. "{" * swap$ * "}" *
  350. }
  351. if$
  352. }
  353. FUNCTION {format.url}
  354. {
  355. url
  356. duplicate$ empty$
  357. { pop$ "" }
  358. { "\urlprefix\url{" swap$ * "}" * }
  359. if$
  360. }
  361. INTEGERS { nameptr namesleft numnames }
  362. STRINGS { bibinfo}
  363. FUNCTION {format.names}
  364. { 'bibinfo :=
  365. duplicate$ empty$ 'skip$ {
  366. 's :=
  367. "" 't :=
  368. #1 'nameptr :=
  369. s num.names$ 'numnames :=
  370. numnames 'namesleft :=
  371. { namesleft #0 > }
  372. { s nameptr
  373. "{vv~}{ll}{ jj}{ f{}}"
  374. format.name$
  375. remove.dots
  376. bibinfo bibinfo.check
  377. 't :=
  378. nameptr #1 >
  379. {
  380. namesleft #1 >
  381. { ", " * t * }
  382. {
  383. s nameptr "{ll}" format.name$ duplicate$ "others" =
  384. { 't := }
  385. { pop$ }
  386. if$
  387. "," *
  388. t "others" =
  389. {
  390. " " * bbl.etal emphasize *
  391. }
  392. { " " * t * }
  393. if$
  394. }
  395. if$
  396. }
  397. 't
  398. if$
  399. nameptr #1 + 'nameptr :=
  400. namesleft #1 - 'namesleft :=
  401. }
  402. while$
  403. } if$
  404. }
  405. FUNCTION {format.names.ed}
  406. {
  407. 'bibinfo :=
  408. duplicate$ empty$ 'skip$ {
  409. 's :=
  410. "" 't :=
  411. #1 'nameptr :=
  412. s num.names$ 'numnames :=
  413. numnames 'namesleft :=
  414. { namesleft #0 > }
  415. { s nameptr
  416. "{f{}~}{vv~}{ll}{ jj}"
  417. format.name$
  418. remove.dots
  419. bibinfo bibinfo.check
  420. 't :=
  421. nameptr #1 >
  422. {
  423. namesleft #1 >
  424. { ", " * t * }
  425. {
  426. s nameptr "{ll}" format.name$ duplicate$ "others" =
  427. { 't := }
  428. { pop$ }
  429. if$
  430. "," *
  431. t "others" =
  432. {
  433. " " * bbl.etal emphasize *
  434. }
  435. { " " * t * }
  436. if$
  437. }
  438. if$
  439. }
  440. 't
  441. if$
  442. nameptr #1 + 'nameptr :=
  443. namesleft #1 - 'namesleft :=
  444. }
  445. while$
  446. } if$
  447. }
  448. FUNCTION {format.key}
  449. { empty$
  450. { key field.or.null }
  451. { "" }
  452. if$
  453. }
  454. FUNCTION {format.authors}
  455. { author "author" format.names
  456. duplicate$ empty$ 'skip$
  457. { collaboration "collaboration" bibinfo.check
  458. duplicate$ empty$ 'skip$
  459. { " (" swap$ * ")" * }
  460. if$
  461. *
  462. }
  463. if$
  464. }
  465. FUNCTION {get.bbl.editor}
  466. { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
  467. FUNCTION {format.editors}
  468. { editor "editor" format.names duplicate$ empty$ 'skip$
  469. {
  470. " " *
  471. get.bbl.editor
  472. "(" swap$ * ")" *
  473. *
  474. }
  475. if$
  476. }
  477. FUNCTION {format.isbn}
  478. { isbn "isbn" bibinfo.check
  479. duplicate$ empty$ 'skip$
  480. {
  481. new.block
  482. "ISBN " swap$ *
  483. }
  484. if$
  485. }
  486. FUNCTION {format.issn}
  487. { issn "issn" bibinfo.check
  488. duplicate$ empty$ 'skip$
  489. {
  490. new.block
  491. "ISSN " swap$ *
  492. }
  493. if$
  494. }
  495. FUNCTION {format.doi}
  496. { doi empty$
  497. { "" }
  498. {
  499. new.block
  500. "\doi{" doi * "}" *
  501. }
  502. if$
  503. }
  504. FUNCTION {format.note}
  505. {
  506. note empty$
  507. { "" }
  508. { note #1 #1 substring$
  509. duplicate$ "{" =
  510. 'skip$
  511. { output.state mid.sentence =
  512. { "l" }
  513. { "u" }
  514. if$
  515. change.case$
  516. }
  517. if$
  518. note #2 global.max$ substring$ * "note" bibinfo.check
  519. }
  520. if$
  521. }
  522. FUNCTION {format.title}
  523. { title
  524. "title" bibinfo.check
  525. duplicate$ empty$ 'skip$
  526. {
  527. "\enquote{" swap$ *
  528. add.period$ "}" *
  529. }
  530. if$
  531. }
  532. FUNCTION {format.full.names}
  533. {'s :=
  534. "" 't :=
  535. #1 'nameptr :=
  536. s num.names$ 'numnames :=
  537. numnames 'namesleft :=
  538. { namesleft #0 > }
  539. { s nameptr
  540. "{vv~}{ll}" format.name$
  541. 't :=
  542. nameptr #1 >
  543. {
  544. namesleft #1 >
  545. { ", " * t * }
  546. {
  547. s nameptr "{ll}" format.name$ duplicate$ "others" =
  548. { 't := }
  549. { pop$ }
  550. if$
  551. t "others" =
  552. {
  553. " " * bbl.etal emphasize *
  554. }
  555. {
  556. numnames #2 >
  557. { "," * }
  558. 'skip$
  559. if$
  560. bbl.and
  561. space.word * t *
  562. }
  563. if$
  564. }
  565. if$
  566. }
  567. 't
  568. if$
  569. nameptr #1 + 'nameptr :=
  570. namesleft #1 - 'namesleft :=
  571. }
  572. while$
  573. }
  574. FUNCTION {author.editor.key.full}
  575. { author empty$
  576. { editor empty$
  577. { key empty$
  578. { cite$ #1 #3 substring$ }
  579. 'key
  580. if$
  581. }
  582. { editor format.full.names }
  583. if$
  584. }
  585. { author format.full.names }
  586. if$
  587. }
  588. FUNCTION {author.key.full}
  589. { author empty$
  590. { key empty$
  591. { cite$ #1 #3 substring$ }
  592. 'key
  593. if$
  594. }
  595. { author format.full.names }
  596. if$
  597. }
  598. FUNCTION {editor.key.full}
  599. { editor empty$
  600. { key empty$
  601. { cite$ #1 #3 substring$ }
  602. 'key
  603. if$
  604. }
  605. { editor format.full.names }
  606. if$
  607. }
  608. FUNCTION {make.full.names}
  609. { type$ "book" =
  610. type$ "inbook" =
  611. or
  612. 'author.editor.key.full
  613. { type$ "proceedings" =
  614. 'editor.key.full
  615. 'author.key.full
  616. if$
  617. }
  618. if$
  619. }
  620. FUNCTION {output.bibitem}
  621. { newline$
  622. "\bibitem[{" write$
  623. label write$
  624. ")" make.full.names duplicate$ short.list =
  625. { pop$ }
  626. { * }
  627. if$
  628. "}]{" * write$
  629. cite$ write$
  630. "}" write$
  631. newline$
  632. ""
  633. before.all 'output.state :=
  634. }
  635. FUNCTION {n.dashify}
  636. {
  637. 't :=
  638. ""
  639. { t empty$ not }
  640. { t #1 #1 substring$ "-" =
  641. { t #1 #2 substring$ "--" = not
  642. { "--" *
  643. t #2 global.max$ substring$ 't :=
  644. }
  645. { { t #1 #1 substring$ "-" = }
  646. { "-" *
  647. t #2 global.max$ substring$ 't :=
  648. }
  649. while$
  650. }
  651. if$
  652. }
  653. { t #1 #1 substring$ *
  654. t #2 global.max$ substring$ 't :=
  655. }
  656. if$
  657. }
  658. while$
  659. }
  660. FUNCTION {word.in}
  661. { bbl.in capitalize
  662. " " * }
  663. FUNCTION {format.date}
  664. { year "year" bibinfo.check duplicate$ empty$
  665. {
  666. "empty year in " cite$ * "; set to ????" * warning$
  667. pop$ "????"
  668. }
  669. 'skip$
  670. if$
  671. extra.label *
  672. before.all 'output.state :=
  673. " (" swap$ * ")" *
  674. }
  675. FUNCTION {format.btitle}
  676. { title "title" bibinfo.check
  677. duplicate$ empty$ 'skip$
  678. {
  679. emphasize
  680. }
  681. if$
  682. }
  683. FUNCTION {either.or.check}
  684. { empty$
  685. 'pop$
  686. { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  687. if$
  688. }
  689. FUNCTION {format.bvolume}
  690. { volume empty$
  691. { "" }
  692. { bbl.volume volume tie.or.space.prefix
  693. "volume" bibinfo.check * *
  694. series "series" bibinfo.check
  695. duplicate$ empty$ 'pop$
  696. { swap$ bbl.of space.word * swap$
  697. emphasize * }
  698. if$
  699. "volume and number" number either.or.check
  700. }
  701. if$
  702. }
  703. FUNCTION {format.number.series}
  704. { volume empty$
  705. { number empty$
  706. { series field.or.null }
  707. { series empty$
  708. { number "number" bibinfo.check }
  709. { output.state mid.sentence =
  710. { bbl.number }
  711. { bbl.number capitalize }
  712. if$
  713. number tie.or.space.prefix "number" bibinfo.check * *
  714. bbl.in space.word *
  715. series "series" bibinfo.check *
  716. }
  717. if$
  718. }
  719. if$
  720. }
  721. { "" }
  722. if$
  723. }
  724. FUNCTION {format.edition}
  725. { edition duplicate$ empty$ 'skip$
  726. {
  727. output.state mid.sentence =
  728. { "l" }
  729. { "t" }
  730. if$ change.case$
  731. "edition" bibinfo.check
  732. " " * bbl.edition *
  733. }
  734. if$
  735. }
  736. INTEGERS { multiresult }
  737. FUNCTION {multi.page.check}
  738. { 't :=
  739. #0 'multiresult :=
  740. { multiresult not
  741. t empty$ not
  742. and
  743. }
  744. { t #1 #1 substring$
  745. duplicate$ "-" =
  746. swap$ duplicate$ "," =
  747. swap$ "+" =
  748. or or
  749. { #1 'multiresult := }
  750. { t #2 global.max$ substring$ 't := }
  751. if$
  752. }
  753. while$
  754. multiresult
  755. }
  756. FUNCTION {format.pages}
  757. { pages duplicate$ empty$ 'skip$
  758. { duplicate$ multi.page.check
  759. {
  760. bbl.pages swap$
  761. n.dashify
  762. }
  763. {
  764. bbl.page swap$
  765. }
  766. if$
  767. tie.or.space.prefix
  768. "pages" bibinfo.check
  769. * *
  770. }
  771. if$
  772. }
  773. FUNCTION {format.journal.pages}
  774. { pages duplicate$ empty$ 'pop$
  775. { swap$ duplicate$ empty$
  776. { pop$ pop$ format.pages }
  777. {
  778. ", " *
  779. swap$
  780. n.dashify
  781. "pages" bibinfo.check
  782. *
  783. }
  784. if$
  785. }
  786. if$
  787. }
  788. FUNCTION {format.journal.eid}
  789. { eid "eid" bibinfo.check
  790. duplicate$ empty$ 'pop$
  791. { swap$ duplicate$ empty$ 'skip$
  792. {
  793. ", " *
  794. }
  795. if$
  796. swap$ *
  797. numpages empty$ 'skip$
  798. { bbl.eidpp numpages tie.or.space.prefix
  799. "numpages" bibinfo.check * *
  800. " (" swap$ * ")" * *
  801. }
  802. if$
  803. }
  804. if$
  805. }
  806. FUNCTION {format.vol.num.pages}
  807. { volume field.or.null
  808. duplicate$ empty$ 'skip$
  809. {
  810. "volume" bibinfo.check
  811. }
  812. if$
  813. bolden
  814. number "number" bibinfo.check duplicate$ empty$ 'skip$
  815. {
  816. swap$ duplicate$ empty$
  817. { "there's a number but no volume in " cite$ * warning$ }
  818. 'skip$
  819. if$
  820. swap$
  821. "(" swap$ * ")" *
  822. }
  823. if$ *
  824. eid empty$
  825. { format.journal.pages }
  826. { format.journal.eid }
  827. if$
  828. }
  829. FUNCTION {format.chapter.pages}
  830. { chapter empty$
  831. 'format.pages
  832. { type empty$
  833. { bbl.chapter }
  834. { type "l" change.case$
  835. "type" bibinfo.check
  836. }
  837. if$
  838. chapter tie.or.space.prefix
  839. "chapter" bibinfo.check
  840. * *
  841. pages empty$
  842. 'skip$
  843. { ", " * format.pages * }
  844. if$
  845. }
  846. if$
  847. }
  848. FUNCTION {format.booktitle}
  849. {
  850. booktitle "booktitle" bibinfo.check
  851. emphasize
  852. }
  853. FUNCTION {format.in.ed.booktitle}
  854. { format.booktitle duplicate$ empty$ 'skip$
  855. {
  856. editor "editor" format.names.ed duplicate$ empty$ 'pop$
  857. {
  858. " " *
  859. get.bbl.editor
  860. "(" swap$ * "), " *
  861. * swap$
  862. * }
  863. if$
  864. word.in swap$ *
  865. }
  866. if$
  867. }
  868. FUNCTION {format.thesis.type}
  869. { type duplicate$ empty$
  870. 'pop$
  871. { swap$ pop$
  872. "t" change.case$ "type" bibinfo.check
  873. }
  874. if$
  875. }
  876. FUNCTION {format.tr.number}
  877. { number "number" bibinfo.check
  878. type duplicate$ empty$
  879. { pop$ bbl.techrep }
  880. 'skip$
  881. if$
  882. "type" bibinfo.check
  883. swap$ duplicate$ empty$
  884. { pop$ "t" change.case$ }
  885. { tie.or.space.prefix * * }
  886. if$
  887. }
  888. FUNCTION {format.article.crossref}
  889. {
  890. word.in
  891. " \cite{" * crossref * "}" *
  892. }
  893. FUNCTION {format.book.crossref}
  894. { volume duplicate$ empty$
  895. { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  896. pop$ word.in
  897. }
  898. { bbl.volume
  899. capitalize
  900. swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
  901. }
  902. if$
  903. " \cite{" * crossref * "}" *
  904. }
  905. FUNCTION {format.incoll.inproc.crossref}
  906. {
  907. word.in
  908. " \cite{" * crossref * "}" *
  909. }
  910. FUNCTION {format.org.or.pub}
  911. { 't :=
  912. ""
  913. address empty$ t empty$ and
  914. 'skip$
  915. {
  916. t empty$
  917. { address "address" bibinfo.check *
  918. }
  919. { t *
  920. address empty$
  921. 'skip$
  922. { ", " * address "address" bibinfo.check * }
  923. if$
  924. }
  925. if$
  926. }
  927. if$
  928. }
  929. FUNCTION {format.publisher.address}
  930. { publisher "publisher" bibinfo.warn format.org.or.pub
  931. }
  932. FUNCTION {format.organization.address}
  933. { organization "organization" bibinfo.check format.org.or.pub
  934. }
  935. FUNCTION {article}
  936. { output.bibitem
  937. format.authors "author" output.check
  938. author format.key output
  939. format.date "year" output.check
  940. date.block
  941. format.title "title" output.check
  942. new.block
  943. crossref missing$
  944. {
  945. journal
  946. "journal" bibinfo.check
  947. emphasize
  948. "journal" output.check
  949. format.vol.num.pages output
  950. }
  951. { format.article.crossref output.nonnull
  952. format.pages output
  953. }
  954. if$
  955. format.issn output
  956. format.doi output
  957. new.block
  958. format.note output
  959. format.eprint output
  960. format.url output
  961. fin.entry
  962. }
  963. FUNCTION {book}
  964. { output.bibitem
  965. author empty$
  966. { format.editors "author and editor" output.check
  967. editor format.key output
  968. }
  969. { format.authors output.nonnull
  970. crossref missing$
  971. { "author and editor" editor either.or.check }
  972. 'skip$
  973. if$
  974. }
  975. if$
  976. format.date "year" output.check
  977. date.block
  978. format.btitle "title" output.check
  979. crossref missing$
  980. { format.bvolume output
  981. new.block
  982. format.number.series output
  983. format.edition output
  984. new.sentence
  985. format.publisher.address output
  986. }
  987. {
  988. new.block
  989. format.book.crossref output.nonnull
  990. }
  991. if$
  992. format.isbn output
  993. format.doi output
  994. new.block
  995. format.note output
  996. format.eprint output
  997. format.url output
  998. fin.entry
  999. }
  1000. FUNCTION {booklet}
  1001. { output.bibitem
  1002. format.authors output
  1003. author format.key output
  1004. format.date "year" output.check
  1005. date.block
  1006. format.title "title" output.check
  1007. new.block
  1008. howpublished "howpublished" bibinfo.check output
  1009. address "address" bibinfo.check output
  1010. format.isbn output
  1011. format.doi output
  1012. new.block
  1013. format.note output
  1014. format.eprint output
  1015. format.url output
  1016. fin.entry
  1017. }
  1018. FUNCTION {inbook}
  1019. { output.bibitem
  1020. author empty$
  1021. { format.editors "author and editor" output.check
  1022. editor format.key output
  1023. }
  1024. { format.authors output.nonnull
  1025. crossref missing$
  1026. { "author and editor" editor either.or.check }
  1027. 'skip$
  1028. if$
  1029. }
  1030. if$
  1031. format.date "year" output.check
  1032. date.block
  1033. format.btitle "title" output.check
  1034. crossref missing$
  1035. {
  1036. format.bvolume output
  1037. format.chapter.pages "chapter and pages" output.check
  1038. new.block
  1039. format.number.series output
  1040. format.edition output
  1041. new.sentence
  1042. format.publisher.address output
  1043. }
  1044. {
  1045. format.chapter.pages "chapter and pages" output.check
  1046. new.block
  1047. format.book.crossref output.nonnull
  1048. }
  1049. if$
  1050. crossref missing$
  1051. { format.isbn output }
  1052. 'skip$
  1053. if$
  1054. format.doi output
  1055. new.block
  1056. format.note output
  1057. format.eprint output
  1058. format.url output
  1059. fin.entry
  1060. }
  1061. FUNCTION {incollection}
  1062. { output.bibitem
  1063. format.authors "author" output.check
  1064. author format.key output
  1065. format.date "year" output.check
  1066. date.block
  1067. format.title "title" output.check
  1068. new.block
  1069. crossref missing$
  1070. { format.in.ed.booktitle "booktitle" output.check
  1071. format.bvolume output
  1072. format.number.series output
  1073. format.edition output
  1074. format.chapter.pages output
  1075. new.sentence
  1076. format.publisher.address output
  1077. format.isbn output
  1078. }
  1079. { format.incoll.inproc.crossref output.nonnull
  1080. format.chapter.pages output
  1081. }
  1082. if$
  1083. format.doi output
  1084. new.block
  1085. format.note output
  1086. format.eprint output
  1087. format.url output
  1088. fin.entry
  1089. }
  1090. FUNCTION {inproceedings}
  1091. { output.bibitem
  1092. format.authors "author" output.check
  1093. author format.key output
  1094. format.date "year" output.check
  1095. date.block
  1096. format.title "title" output.check
  1097. new.block
  1098. crossref missing$
  1099. { format.in.ed.booktitle "booktitle" output.check
  1100. format.bvolume output
  1101. format.number.series output
  1102. format.pages output
  1103. new.sentence
  1104. publisher empty$
  1105. { format.organization.address output }
  1106. { organization "organization" bibinfo.check output
  1107. format.publisher.address output
  1108. }
  1109. if$
  1110. format.isbn output
  1111. format.issn output
  1112. }
  1113. { format.incoll.inproc.crossref output.nonnull
  1114. format.pages output
  1115. }
  1116. if$
  1117. format.doi output
  1118. new.block
  1119. format.note output
  1120. format.eprint output
  1121. format.url output
  1122. fin.entry
  1123. }
  1124. FUNCTION {conference} { inproceedings }
  1125. FUNCTION {manual}
  1126. { output.bibitem
  1127. format.authors output
  1128. author format.key output
  1129. format.date "year" output.check
  1130. date.block
  1131. format.btitle "title" output.check
  1132. organization address new.block.checkb
  1133. organization "organization" bibinfo.check output
  1134. address "address" bibinfo.check output
  1135. format.edition output
  1136. format.doi output
  1137. new.block
  1138. format.note output
  1139. format.eprint output
  1140. format.url output
  1141. fin.entry
  1142. }
  1143. FUNCTION {mastersthesis}
  1144. { output.bibitem
  1145. format.authors "author" output.check
  1146. author format.key output
  1147. format.date "year" output.check
  1148. date.block
  1149. format.btitle
  1150. "title" output.check
  1151. new.block
  1152. bbl.mthesis format.thesis.type output.nonnull
  1153. school "school" bibinfo.warn output
  1154. address "address" bibinfo.check output
  1155. format.doi output
  1156. new.block
  1157. format.note output
  1158. format.eprint output
  1159. format.url output
  1160. fin.entry
  1161. }
  1162. FUNCTION {misc}
  1163. { output.bibitem
  1164. format.authors output
  1165. author format.key output
  1166. format.date "year" output.check
  1167. date.block
  1168. format.title output
  1169. new.block
  1170. howpublished "howpublished" bibinfo.check output
  1171. format.doi output
  1172. new.block
  1173. format.note output
  1174. format.eprint output
  1175. format.url output
  1176. fin.entry
  1177. }
  1178. FUNCTION {phdthesis}
  1179. { output.bibitem
  1180. format.authors "author" output.check
  1181. author format.key output
  1182. format.date "year" output.check
  1183. date.block
  1184. format.btitle
  1185. "title" output.check
  1186. new.block
  1187. bbl.phdthesis format.thesis.type output.nonnull
  1188. school "school" bibinfo.warn output
  1189. address "address" bibinfo.check output
  1190. format.doi output
  1191. new.block
  1192. format.note output
  1193. format.eprint output
  1194. format.url output
  1195. fin.entry
  1196. }
  1197. FUNCTION {proceedings}
  1198. { output.bibitem
  1199. format.editors output
  1200. editor format.key output
  1201. format.date "year" output.check
  1202. date.block
  1203. format.btitle "title" output.check
  1204. format.bvolume output
  1205. format.number.series output
  1206. new.sentence
  1207. publisher empty$
  1208. { format.organization.address output }
  1209. { organization "organization" bibinfo.check output
  1210. format.publisher.address output
  1211. }
  1212. if$
  1213. format.isbn output
  1214. format.issn output
  1215. format.doi output
  1216. new.block
  1217. format.note output
  1218. format.eprint output
  1219. format.url output
  1220. fin.entry
  1221. }
  1222. FUNCTION {techreport}
  1223. { output.bibitem
  1224. format.authors "author" output.check
  1225. author format.key output
  1226. format.date "year" output.check
  1227. date.block
  1228. format.title
  1229. "title" output.check
  1230. new.block
  1231. format.tr.number emphasize output.nonnull
  1232. institution "institution" bibinfo.warn output
  1233. address "address" bibinfo.check output
  1234. format.doi output
  1235. new.block
  1236. format.note output
  1237. format.eprint output
  1238. format.url output
  1239. fin.entry
  1240. }
  1241. FUNCTION {unpublished}
  1242. { output.bibitem
  1243. format.authors "author" output.check
  1244. author format.key output
  1245. format.date "year" output.check
  1246. date.block
  1247. format.title "title" output.check
  1248. format.doi output
  1249. new.block
  1250. format.note "note" output.check
  1251. format.eprint output
  1252. format.url output
  1253. fin.entry
  1254. }
  1255. FUNCTION {default.type} { misc }
  1256. READ
  1257. FUNCTION {sortify}
  1258. { purify$
  1259. "l" change.case$
  1260. }
  1261. INTEGERS { len }
  1262. FUNCTION {chop.word}
  1263. { 's :=
  1264. 'len :=
  1265. s #1 len substring$ =
  1266. { s len #1 + global.max$ substring$ }
  1267. 's
  1268. if$
  1269. }
  1270. FUNCTION {format.lab.names}
  1271. { 's :=
  1272. "" 't :=
  1273. s #1 "{vv~}{ll}" format.name$
  1274. s num.names$ duplicate$
  1275. #2 >
  1276. { pop$
  1277. " " * bbl.etal emphasize *
  1278. }
  1279. { #2 <
  1280. 'skip$
  1281. { s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  1282. {
  1283. " " * bbl.etal emphasize *
  1284. }
  1285. { bbl.and space.word * s #2 "{vv~}{ll}" format.name$
  1286. * }
  1287. if$
  1288. }
  1289. if$
  1290. }
  1291. if$
  1292. }
  1293. FUNCTION {author.key.label}
  1294. { author empty$
  1295. { key empty$
  1296. { cite$ #1 #3 substring$ }
  1297. 'key
  1298. if$
  1299. }
  1300. { author format.lab.names }
  1301. if$
  1302. }
  1303. FUNCTION {author.editor.key.label}
  1304. { author empty$
  1305. { editor empty$
  1306. { key empty$
  1307. { cite$ #1 #3 substring$ }
  1308. 'key
  1309. if$
  1310. }
  1311. { editor format.lab.names }
  1312. if$
  1313. }
  1314. { author format.lab.names }
  1315. if$
  1316. }
  1317. FUNCTION {editor.key.label}
  1318. { editor empty$
  1319. { key empty$
  1320. { cite$ #1 #3 substring$ }
  1321. 'key
  1322. if$
  1323. }
  1324. { editor format.lab.names }
  1325. if$
  1326. }
  1327. FUNCTION {calc.short.authors}
  1328. { type$ "book" =
  1329. type$ "inbook" =
  1330. or
  1331. 'author.editor.key.label
  1332. { type$ "proceedings" =
  1333. 'editor.key.label
  1334. 'author.key.label
  1335. if$
  1336. }
  1337. if$
  1338. 'short.list :=
  1339. }
  1340. FUNCTION {calc.label}
  1341. { calc.short.authors
  1342. short.list
  1343. "("
  1344. *
  1345. year duplicate$ empty$
  1346. short.list key field.or.null = or
  1347. { pop$ "" }
  1348. 'skip$
  1349. if$
  1350. *
  1351. 'label :=
  1352. }
  1353. FUNCTION {sort.format.names}
  1354. { 's :=
  1355. #1 'nameptr :=
  1356. ""
  1357. s num.names$ 'numnames :=
  1358. numnames 'namesleft :=
  1359. { namesleft #0 > }
  1360. { s nameptr
  1361. "{vv{ } }{ll{ }}{ f{ }}{ jj{ }}"
  1362. format.name$ 't :=
  1363. nameptr #1 >
  1364. {
  1365. " " *
  1366. namesleft #1 = t "others" = and
  1367. { "zzzzz" 't := }
  1368. 'skip$
  1369. if$
  1370. t sortify *
  1371. }
  1372. { t sortify * }
  1373. if$
  1374. nameptr #1 + 'nameptr :=
  1375. namesleft #1 - 'namesleft :=
  1376. }
  1377. while$
  1378. }
  1379. FUNCTION {sort.format.title}
  1380. { 't :=
  1381. "A " #2
  1382. "An " #3
  1383. "The " #4 t chop.word
  1384. chop.word
  1385. chop.word
  1386. sortify
  1387. #1 global.max$ substring$
  1388. }
  1389. FUNCTION {author.sort}
  1390. { author empty$
  1391. { key empty$
  1392. { "to sort, need author or key in " cite$ * warning$
  1393. ""
  1394. }
  1395. { key sortify }
  1396. if$
  1397. }
  1398. { author sort.format.names }
  1399. if$
  1400. }
  1401. FUNCTION {author.editor.sort}
  1402. { author empty$
  1403. { editor empty$
  1404. { key empty$
  1405. { "to sort, need author, editor, or key in " cite$ * warning$
  1406. ""
  1407. }
  1408. { key sortify }
  1409. if$
  1410. }
  1411. { editor sort.format.names }
  1412. if$
  1413. }
  1414. { author sort.format.names }
  1415. if$
  1416. }
  1417. FUNCTION {editor.sort}
  1418. { editor empty$
  1419. { key empty$
  1420. { "to sort, need editor or key in " cite$ * warning$
  1421. ""
  1422. }
  1423. { key sortify }
  1424. if$
  1425. }
  1426. { editor sort.format.names }
  1427. if$
  1428. }
  1429. FUNCTION {presort}
  1430. { calc.label
  1431. label sortify
  1432. " "
  1433. *
  1434. type$ "book" =
  1435. type$ "inbook" =
  1436. or
  1437. 'author.editor.sort
  1438. { type$ "proceedings" =
  1439. 'editor.sort
  1440. 'author.sort
  1441. if$
  1442. }
  1443. if$
  1444. #1 entry.max$ substring$
  1445. 'sort.label :=
  1446. sort.label
  1447. *
  1448. " "
  1449. *
  1450. title field.or.null
  1451. sort.format.title
  1452. *
  1453. #1 entry.max$ substring$
  1454. 'sort.key$ :=
  1455. }
  1456. ITERATE {presort}
  1457. SORT
  1458. STRINGS { last.label next.extra }
  1459. INTEGERS { last.extra.num last.extra.num.extended last.extra.num.blank number.label }
  1460. FUNCTION {initialize.extra.label.stuff}
  1461. { #0 int.to.chr$ 'last.label :=
  1462. "" 'next.extra :=
  1463. #0 'last.extra.num :=
  1464. "a" chr.to.int$ #1 - 'last.extra.num.blank :=
  1465. last.extra.num.blank 'last.extra.num.extended :=
  1466. #0 'number.label :=
  1467. }
  1468. FUNCTION {forward.pass}
  1469. { last.label label =
  1470. { last.extra.num #1 + 'last.extra.num :=
  1471. last.extra.num "z" chr.to.int$ >
  1472. { "a" chr.to.int$ 'last.extra.num :=
  1473. last.extra.num.extended #1 + 'last.extra.num.extended :=
  1474. }
  1475. 'skip$
  1476. if$
  1477. last.extra.num.extended last.extra.num.blank >
  1478. { last.extra.num.extended int.to.chr$
  1479. last.extra.num int.to.chr$
  1480. * 'extra.label := }
  1481. { last.extra.num int.to.chr$ 'extra.label := }
  1482. if$
  1483. }
  1484. { "a" chr.to.int$ 'last.extra.num :=
  1485. "" 'extra.label :=
  1486. label 'last.label :=
  1487. }
  1488. if$
  1489. number.label #1 + 'number.label :=
  1490. }
  1491. FUNCTION {reverse.pass}
  1492. { next.extra "b" =
  1493. { "a" 'extra.label := }
  1494. 'skip$
  1495. if$
  1496. extra.label 'next.extra :=
  1497. extra.label
  1498. duplicate$ empty$
  1499. 'skip$
  1500. { "{\natexlab{" swap$ * "}}" * }
  1501. if$
  1502. 'extra.label :=
  1503. label extra.label * 'label :=
  1504. }
  1505. EXECUTE {initialize.extra.label.stuff}
  1506. ITERATE {forward.pass}
  1507. REVERSE {reverse.pass}
  1508. FUNCTION {bib.sort.order}
  1509. { sort.label
  1510. " "
  1511. *
  1512. year field.or.null sortify
  1513. *
  1514. " "
  1515. *
  1516. title field.or.null
  1517. sort.format.title
  1518. *
  1519. #1 entry.max$ substring$
  1520. 'sort.key$ :=
  1521. }
  1522. ITERATE {bib.sort.order}
  1523. SORT
  1524. FUNCTION {begin.bib}
  1525. { preamble$ empty$
  1526. 'skip$
  1527. { preamble$ write$ newline$ }
  1528. if$
  1529. "\begin{thebibliography}{" number.label int.to.str$ * "}" *
  1530. write$ newline$
  1531. "\newcommand{\enquote}[1]{``#1''}"
  1532. write$ newline$
  1533. "\providecommand{\natexlab}[1]{#1}"
  1534. write$ newline$
  1535. "\providecommand{\url}[1]{\texttt{#1}}"
  1536. write$ newline$
  1537. "\providecommand{\urlprefix}{URL }"
  1538. write$ newline$
  1539. "\expandafter\ifx\csname urlstyle\endcsname\relax"
  1540. write$ newline$
  1541. " \providecommand{\doi}[1]{doi:\discretionary{}{}{}#1}\else"
  1542. write$ newline$
  1543. " \providecommand{\doi}{doi:\discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
  1544. write$ newline$
  1545. "\providecommand{\eprint}[2][]{\url{#2}}"
  1546. write$ newline$
  1547. }
  1548. EXECUTE {begin.bib}
  1549. EXECUTE {init.state.consts}
  1550. ITERATE {call.type$}
  1551. FUNCTION {end.bib}
  1552. { newline$
  1553. "\end{thebibliography}" write$ newline$
  1554. }
  1555. EXECUTE {end.bib}
  1556. %% End of customized bst file
  1557. %%
  1558. %% End of file `jss.bst'.