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