splncs.bst 21 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099
  1. % BibTeX bibliography style `splncs'
  2. % An attempt to match the bibliography style required for use with
  3. % numbered references in Springer Verlag's "Lecture Notes in Computer
  4. % Science" series. (See Springer's documentation for llncs.sty for
  5. % more details of the suggested reference format.) Note that this
  6. % file will not work for author-year style citations.
  7. % Use \documentclass{llncs} and \bibliographystyle{splncs}, and cite
  8. % a reference with (e.g.) \cite{smith77} to get a "[1]" in the text.
  9. % Copyright (C) 1999 Jason Noble.
  10. % Last updated: Friday 07 March 2006, 08:04:42 Frank Holzwarth, Springer
  11. %
  12. % Based on the BibTeX standard bibliography style `unsrt'
  13. ENTRY
  14. { address
  15. author
  16. booktitle
  17. chapter
  18. edition
  19. editor
  20. howpublished
  21. institution
  22. journal
  23. key
  24. month
  25. note
  26. number
  27. organization
  28. pages
  29. publisher
  30. school
  31. series
  32. title
  33. type
  34. volume
  35. year
  36. }
  37. {}
  38. { label }
  39. INTEGERS { output.state before.all mid.sentence after.sentence
  40. after.block after.authors between.elements}
  41. FUNCTION {init.state.consts}
  42. { #0 'before.all :=
  43. #1 'mid.sentence :=
  44. #2 'after.sentence :=
  45. #3 'after.block :=
  46. #4 'after.authors :=
  47. #5 'between.elements :=
  48. }
  49. STRINGS { s t }
  50. FUNCTION {output.nonnull}
  51. { 's :=
  52. output.state mid.sentence =
  53. { " " * write$ }
  54. { output.state after.block =
  55. { add.period$ write$
  56. newline$
  57. "\newblock " write$
  58. }
  59. {
  60. output.state after.authors =
  61. { ": " * write$
  62. newline$
  63. "\newblock " write$
  64. }
  65. { output.state between.elements =
  66. { ", " * write$ }
  67. { output.state before.all =
  68. 'write$
  69. { add.period$ " " * write$ }
  70. if$
  71. }
  72. if$
  73. }
  74. if$
  75. }
  76. if$
  77. mid.sentence 'output.state :=
  78. }
  79. if$
  80. s
  81. }
  82. FUNCTION {output}
  83. { duplicate$ empty$
  84. 'pop$
  85. 'output.nonnull
  86. if$
  87. }
  88. FUNCTION {output.check}
  89. { 't :=
  90. duplicate$ empty$
  91. { pop$ "empty " t * " in " * cite$ * warning$ }
  92. 'output.nonnull
  93. if$
  94. }
  95. FUNCTION {output.bibitem}
  96. { newline$
  97. "\bibitem{" write$
  98. cite$ write$
  99. "}" write$
  100. newline$
  101. ""
  102. before.all 'output.state :=
  103. }
  104. FUNCTION {fin.entry}
  105. { write$
  106. newline$
  107. }
  108. FUNCTION {new.block}
  109. { output.state before.all =
  110. 'skip$
  111. { after.block 'output.state := }
  112. if$
  113. }
  114. FUNCTION {stupid.colon}
  115. { after.authors 'output.state := }
  116. FUNCTION {insert.comma}
  117. { output.state before.all =
  118. 'skip$
  119. { between.elements 'output.state := }
  120. if$
  121. }
  122. FUNCTION {new.sentence}
  123. { output.state after.block =
  124. 'skip$
  125. { output.state before.all =
  126. 'skip$
  127. { after.sentence 'output.state := }
  128. if$
  129. }
  130. if$
  131. }
  132. FUNCTION {not}
  133. { { #0 }
  134. { #1 }
  135. if$
  136. }
  137. FUNCTION {and}
  138. { 'skip$
  139. { pop$ #0 }
  140. if$
  141. }
  142. FUNCTION {or}
  143. { { pop$ #1 }
  144. 'skip$
  145. if$
  146. }
  147. FUNCTION {new.block.checka}
  148. { empty$
  149. 'skip$
  150. 'new.block
  151. if$
  152. }
  153. FUNCTION {new.block.checkb}
  154. { empty$
  155. swap$ empty$
  156. and
  157. 'skip$
  158. 'new.block
  159. if$
  160. }
  161. FUNCTION {new.sentence.checka}
  162. { empty$
  163. 'skip$
  164. 'new.sentence
  165. if$
  166. }
  167. FUNCTION {new.sentence.checkb}
  168. { empty$
  169. swap$ empty$
  170. and
  171. 'skip$
  172. 'new.sentence
  173. if$
  174. }
  175. FUNCTION {field.or.null}
  176. { duplicate$ empty$
  177. { pop$ "" }
  178. 'skip$
  179. if$
  180. }
  181. FUNCTION {emphasize}
  182. { duplicate$ empty$
  183. { pop$ "" }
  184. { "" swap$ * "" * }
  185. if$
  186. }
  187. FUNCTION {bold}
  188. { duplicate$ empty$
  189. { pop$ "" }
  190. { "\textbf{" swap$ * "}" * }
  191. if$
  192. }
  193. FUNCTION {parens}
  194. { duplicate$ empty$
  195. { pop$ "" }
  196. { "(" swap$ * ")" * }
  197. if$
  198. }
  199. INTEGERS { nameptr namesleft numnames }
  200. FUNCTION {format.springer.names}
  201. { 's :=
  202. #1 'nameptr :=
  203. s num.names$ 'numnames :=
  204. numnames 'namesleft :=
  205. { namesleft #0 > }
  206. { s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't :=
  207. nameptr #1 >
  208. { namesleft #1 >
  209. { ", " * t * }
  210. { numnames #1 >
  211. { ", " * }
  212. 'skip$
  213. if$
  214. t "others" =
  215. { " et~al." * }
  216. { "" * t * }
  217. if$
  218. }
  219. if$
  220. }
  221. 't
  222. if$
  223. nameptr #1 + 'nameptr :=
  224. namesleft #1 - 'namesleft :=
  225. }
  226. while$
  227. }
  228. FUNCTION {format.names}
  229. { 's :=
  230. #1 'nameptr :=
  231. s num.names$ 'numnames :=
  232. numnames 'namesleft :=
  233. { namesleft #0 > }
  234. { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
  235. nameptr #1 >
  236. { namesleft #1 >
  237. { ", " * t * }
  238. { numnames #2 >
  239. { "," * }
  240. 'skip$
  241. if$
  242. t "others" =
  243. { " et~al." * }
  244. { " \& " * t * }
  245. if$
  246. }
  247. if$
  248. }
  249. 't
  250. if$
  251. nameptr #1 + 'nameptr :=
  252. namesleft #1 - 'namesleft :=
  253. }
  254. while$
  255. }
  256. FUNCTION {format.authors}
  257. { author empty$
  258. { "" }
  259. { author format.springer.names }
  260. if$
  261. }
  262. FUNCTION {format.editors}
  263. { editor empty$
  264. { "" }
  265. { editor format.springer.names
  266. editor num.names$ #1 >
  267. { ", eds." * }
  268. { ", ed." * }
  269. if$
  270. }
  271. if$
  272. }
  273. FUNCTION {format.title}
  274. { title empty$
  275. { "" }
  276. { title "t" change.case$ }
  277. if$
  278. }
  279. FUNCTION {n.dashify}
  280. { 't :=
  281. ""
  282. { t empty$ not }
  283. { t #1 #1 substring$ "-" =
  284. { t #1 #2 substring$ "--" = not
  285. { "--" *
  286. t #2 global.max$ substring$ 't :=
  287. }
  288. { { t #1 #1 substring$ "-" = }
  289. { "-" *
  290. t #2 global.max$ substring$ 't :=
  291. }
  292. while$
  293. }
  294. if$
  295. }
  296. { t #1 #1 substring$ *
  297. t #2 global.max$ substring$ 't :=
  298. }
  299. if$
  300. }
  301. while$
  302. }
  303. FUNCTION {format.date}
  304. { year empty$
  305. { month empty$
  306. { "" }
  307. { "there's a month but no year in " cite$ * warning$
  308. month
  309. }
  310. if$
  311. }
  312. { month empty$
  313. 'year
  314. { month " " * year * }
  315. if$
  316. }
  317. if$
  318. }
  319. FUNCTION {format.btitle}
  320. { title emphasize
  321. }
  322. FUNCTION {tie.or.space.connect}
  323. { duplicate$ text.length$ #3 <
  324. { "~" }
  325. { " " }
  326. if$
  327. swap$ * *
  328. }
  329. FUNCTION {either.or.check}
  330. { empty$
  331. 'pop$
  332. { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  333. if$
  334. }
  335. FUNCTION {format.bvolume}
  336. { volume empty$
  337. { "" }
  338. { "Volume" volume tie.or.space.connect
  339. series empty$
  340. 'skip$
  341. { " of " * series emphasize * }
  342. if$
  343. add.period$
  344. "volume and number" number either.or.check
  345. }
  346. if$
  347. }
  348. FUNCTION {format.number.series}
  349. { volume empty$
  350. { number empty$
  351. { series field.or.null }
  352. { output.state mid.sentence =
  353. { "number" }
  354. { "Number" }
  355. if$
  356. number tie.or.space.connect
  357. series empty$
  358. { "there's a number but no series in " cite$ * warning$ }
  359. { " in " * series * }
  360. if$
  361. }
  362. if$
  363. }
  364. { "" }
  365. if$
  366. }
  367. FUNCTION {format.edition}
  368. { edition empty$
  369. { "" }
  370. { output.state mid.sentence =
  371. { edition "l" change.case$ " edn." * }
  372. { edition "t" change.case$ " edn." * }
  373. if$
  374. }
  375. if$
  376. }
  377. INTEGERS { multiresult }
  378. FUNCTION {multi.page.check}
  379. { 't :=
  380. #0 'multiresult :=
  381. { multiresult not
  382. t empty$ not
  383. and
  384. }
  385. { t #1 #1 substring$
  386. duplicate$ "-" =
  387. swap$ duplicate$ "," =
  388. swap$ "+" =
  389. or or
  390. { #1 'multiresult := }
  391. { t #2 global.max$ substring$ 't := }
  392. if$
  393. }
  394. while$
  395. multiresult
  396. }
  397. FUNCTION {format.pages}
  398. { pages empty$
  399. { "" }
  400. { pages multi.page.check
  401. { "" pages n.dashify tie.or.space.connect }
  402. { "" pages tie.or.space.connect }
  403. if$
  404. }
  405. if$
  406. }
  407. FUNCTION {format.vol}
  408. { volume bold
  409. }
  410. FUNCTION {format.vol.num}
  411. { volume bold
  412. number empty$
  413. { }
  414. { number "(" swap$ * * ")" * }
  415. if$
  416. }
  417. FUNCTION {pre.format.pages}
  418. { pages empty$
  419. 'skip$
  420. { duplicate$ empty$
  421. { pop$ format.pages }
  422. { " " * pages n.dashify * }
  423. if$
  424. }
  425. if$
  426. }
  427. FUNCTION {format.chapter.pages}
  428. { chapter empty$
  429. 'format.pages
  430. { type empty$
  431. { "chapter" }
  432. { type "l" change.case$ }
  433. if$
  434. chapter tie.or.space.connect
  435. pages empty$
  436. 'skip$
  437. { " " * format.pages * }
  438. if$
  439. }
  440. if$
  441. }
  442. FUNCTION {format.in.ed.booktitle}
  443. { booktitle empty$
  444. { "" }
  445. { editor empty$
  446. { "In: " booktitle emphasize * }
  447. { "In " format.editors * ": " * booktitle emphasize * }
  448. if$
  449. }
  450. if$
  451. }
  452. FUNCTION {empty.misc.check}
  453. { author empty$ title empty$ howpublished empty$
  454. month empty$ year empty$ note empty$
  455. and and and and and
  456. { "all relevant fields are empty in " cite$ * warning$ }
  457. 'skip$
  458. if$
  459. }
  460. FUNCTION {format.thesis.type}
  461. { type empty$
  462. 'skip$
  463. { pop$
  464. type "t" change.case$
  465. }
  466. if$
  467. }
  468. FUNCTION {format.tr.number}
  469. { type empty$
  470. { "Technical Report" }
  471. 'type
  472. if$
  473. number empty$
  474. { "t" change.case$ }
  475. { number tie.or.space.connect }
  476. if$
  477. }
  478. FUNCTION {format.article.crossref}
  479. { key empty$
  480. { journal empty$
  481. { "need key or journal for " cite$ * " to crossref " * crossref *
  482. warning$
  483. ""
  484. }
  485. { "In {\em " journal * "\/}" * }
  486. if$
  487. }
  488. { "In " key * }
  489. if$
  490. " \cite{" * crossref * "}" *
  491. }
  492. FUNCTION {format.crossref.editor}
  493. { editor #1 "{vv~}{ll}" format.name$
  494. editor num.names$ duplicate$
  495. #2 >
  496. { pop$ " et~al." * }
  497. { #2 <
  498. 'skip$
  499. { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  500. { " et~al." * }
  501. { " and " * editor #2 "{vv~}{ll}" format.name$ * }
  502. if$
  503. }
  504. if$
  505. }
  506. if$
  507. }
  508. FUNCTION {format.book.crossref}
  509. { volume empty$
  510. { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  511. "In "
  512. }
  513. { "Volume" volume tie.or.space.connect
  514. " of " *
  515. }
  516. if$
  517. " \cite{" * crossref * "}" *
  518. }
  519. FUNCTION {format.incoll.inproc.crossref}
  520. { editor empty$
  521. editor field.or.null author field.or.null =
  522. or
  523. { key empty$
  524. { booktitle empty$
  525. { "need editor, key, or booktitle for " cite$ * " to crossref " *
  526. crossref * warning$
  527. ""
  528. }
  529. { "" }
  530. if$
  531. }
  532. { "" }
  533. if$
  534. }
  535. { "" }
  536. if$
  537. " \cite{" * crossref * "}" *
  538. }
  539. FUNCTION {and.the.note}
  540. { note output
  541. note empty$
  542. 'skip$
  543. { add.period$ }
  544. if$
  545. }
  546. FUNCTION {article}
  547. { output.bibitem
  548. format.authors "author" output.check
  549. stupid.colon
  550. format.title "title" output.check
  551. new.block
  552. crossref missing$
  553. { journal emphasize "journal" output.check
  554. format.vol.num output
  555. format.date parens output
  556. format.pages output
  557. }
  558. { format.article.crossref output.nonnull
  559. format.pages output
  560. }
  561. if$
  562. and.the.note
  563. fin.entry
  564. }
  565. FUNCTION {book}
  566. { output.bibitem
  567. author empty$
  568. { format.editors "author and editor" output.check }
  569. { format.authors output.nonnull
  570. crossref missing$
  571. { "author and editor" editor either.or.check }
  572. 'skip$
  573. if$
  574. }
  575. if$
  576. stupid.colon
  577. format.btitle "title" output.check
  578. new.sentence
  579. crossref missing$
  580. { format.edition output
  581. format.bvolume output
  582. new.block
  583. format.number.series output
  584. new.sentence
  585. publisher "publisher" output.check
  586. address empty$
  587. 'skip$
  588. { insert.comma }
  589. if$
  590. address output
  591. format.date parens output
  592. }
  593. { format.book.crossref output.nonnull
  594. }
  595. if$
  596. and.the.note
  597. fin.entry
  598. }
  599. FUNCTION {booklet}
  600. { output.bibitem
  601. format.authors output
  602. stupid.colon
  603. format.title "title" output.check
  604. howpublished address new.block.checkb
  605. howpublished output
  606. address empty$
  607. 'skip$
  608. { insert.comma }
  609. if$
  610. address output
  611. format.date parens output
  612. and.the.note
  613. fin.entry
  614. }
  615. FUNCTION {inbook}
  616. { output.bibitem
  617. author empty$
  618. { format.editors "author and editor" output.check }
  619. { format.authors output.nonnull
  620. crossref missing$
  621. { "author and editor" editor either.or.check }
  622. 'skip$
  623. if$
  624. }
  625. if$
  626. stupid.colon
  627. crossref missing$
  628. { chapter output
  629. new.block
  630. format.number.series output
  631. new.sentence
  632. "In:" output
  633. format.btitle "title" output.check
  634. new.sentence
  635. format.edition output
  636. format.bvolume output
  637. publisher "publisher" output.check
  638. address empty$
  639. 'skip$
  640. { insert.comma }
  641. if$
  642. address output
  643. format.date parens output
  644. }
  645. { chapter output
  646. new.block
  647. format.incoll.inproc.crossref output.nonnull
  648. }
  649. if$
  650. format.pages output
  651. and.the.note
  652. fin.entry
  653. }
  654. FUNCTION {incollection}
  655. { output.bibitem
  656. format.authors "author" output.check
  657. stupid.colon
  658. format.title "title" output.check
  659. new.block
  660. crossref missing$
  661. { format.in.ed.booktitle "booktitle" output.check
  662. new.sentence
  663. format.bvolume output
  664. format.number.series output
  665. new.block
  666. format.edition output
  667. publisher "publisher" output.check
  668. address empty$
  669. 'skip$
  670. { insert.comma }
  671. if$
  672. address output
  673. format.date parens output
  674. format.pages output
  675. }
  676. { format.incoll.inproc.crossref output.nonnull
  677. format.chapter.pages output
  678. }
  679. if$
  680. and.the.note
  681. fin.entry
  682. }
  683. FUNCTION {inproceedings}
  684. { output.bibitem
  685. format.authors "author" output.check
  686. stupid.colon
  687. format.title "title" output.check
  688. new.block
  689. crossref missing$
  690. { format.in.ed.booktitle "booktitle" output.check
  691. new.sentence
  692. format.bvolume output
  693. format.number.series output
  694. address empty$
  695. { organization publisher new.sentence.checkb
  696. organization empty$
  697. 'skip$
  698. { insert.comma }
  699. if$
  700. organization output
  701. publisher empty$
  702. 'skip$
  703. { insert.comma }
  704. if$
  705. publisher output
  706. format.date parens output
  707. }
  708. { insert.comma
  709. address output.nonnull
  710. organization empty$
  711. 'skip$
  712. { insert.comma }
  713. if$
  714. organization output
  715. publisher empty$
  716. 'skip$
  717. { insert.comma }
  718. if$
  719. publisher output
  720. format.date parens output
  721. }
  722. if$
  723. }
  724. { format.incoll.inproc.crossref output.nonnull
  725. }
  726. if$
  727. format.pages output
  728. and.the.note
  729. fin.entry
  730. }
  731. FUNCTION {conference} { inproceedings }
  732. FUNCTION {manual}
  733. { output.bibitem
  734. author empty$
  735. { organization empty$
  736. 'skip$
  737. { organization output.nonnull
  738. address output
  739. }
  740. if$
  741. }
  742. { format.authors output.nonnull }
  743. if$
  744. stupid.colon
  745. format.btitle "title" output.check
  746. author empty$
  747. { organization empty$
  748. { address new.block.checka
  749. address output
  750. }
  751. 'skip$
  752. if$
  753. }
  754. { organization address new.block.checkb
  755. organization output
  756. address empty$
  757. 'skip$
  758. { insert.comma }
  759. if$
  760. address output
  761. }
  762. if$
  763. new.sentence
  764. format.edition output
  765. format.date parens output
  766. and.the.note
  767. fin.entry
  768. }
  769. FUNCTION {mastersthesis}
  770. { output.bibitem
  771. format.authors "author" output.check
  772. stupid.colon
  773. format.title "title" output.check
  774. new.block
  775. "Master's thesis" format.thesis.type output.nonnull
  776. school empty$
  777. 'skip$
  778. { insert.comma }
  779. if$
  780. school "school" output.check
  781. address empty$
  782. 'skip$
  783. { insert.comma }
  784. if$
  785. address output
  786. format.date parens output
  787. and.the.note
  788. fin.entry
  789. }
  790. FUNCTION {misc}
  791. { output.bibitem
  792. format.authors "author" output.check
  793. stupid.colon
  794. format.title "title" output.check
  795. howpublished new.block.checka
  796. howpublished output
  797. format.date parens output
  798. and.the.note
  799. fin.entry
  800. empty.misc.check
  801. }
  802. FUNCTION {phdthesis}
  803. { output.bibitem
  804. format.authors "author" output.check
  805. stupid.colon
  806. format.btitle "title" output.check
  807. new.block
  808. "PhD thesis" format.thesis.type output.nonnull
  809. school empty$
  810. 'skip$
  811. { insert.comma }
  812. if$
  813. school "school" output.check
  814. address empty$
  815. 'skip$
  816. { insert.comma }
  817. if$
  818. address output
  819. format.date parens output
  820. and.the.note
  821. fin.entry
  822. }
  823. FUNCTION {proceedings}
  824. { output.bibitem
  825. editor empty$
  826. { organization empty$
  827. { "" }
  828. { organization output
  829. stupid.colon }
  830. if$
  831. }
  832. { format.editors output.nonnull
  833. stupid.colon
  834. }
  835. if$
  836. format.btitle "title" output.check
  837. new.block
  838. crossref missing$
  839. { format.in.ed.booktitle "booktitle" output.check
  840. new.sentence
  841. format.bvolume output
  842. format.number.series output
  843. address empty$
  844. { organization publisher new.sentence.checkb
  845. organization empty$
  846. 'skip$
  847. { insert.comma }
  848. if$
  849. organization output
  850. publisher empty$
  851. 'skip$
  852. { insert.comma }
  853. if$
  854. publisher output
  855. format.date parens output
  856. }
  857. { insert.comma
  858. address output.nonnull
  859. organization empty$
  860. 'skip$
  861. { insert.comma }
  862. if$
  863. organization output
  864. publisher empty$
  865. 'skip$
  866. { insert.comma }
  867. if$
  868. publisher output
  869. format.date parens output
  870. }
  871. if$
  872. }
  873. { format.incoll.inproc.crossref output.nonnull
  874. }
  875. if$
  876. and.the.note
  877. fin.entry
  878. }
  879. FUNCTION {techreport}
  880. { output.bibitem
  881. format.authors "author" output.check
  882. stupid.colon
  883. format.title "title" output.check
  884. new.block
  885. format.tr.number output.nonnull
  886. institution empty$
  887. 'skip$
  888. { insert.comma }
  889. if$
  890. institution "institution" output.check
  891. address empty$
  892. 'skip$
  893. { insert.comma }
  894. if$
  895. address output
  896. format.date parens output
  897. and.the.note
  898. fin.entry
  899. }
  900. FUNCTION {unpublished}
  901. { output.bibitem
  902. format.authors "author" output.check
  903. stupid.colon
  904. format.title "title" output.check
  905. new.block
  906. note "note" output.check
  907. format.date parens output
  908. fin.entry
  909. }
  910. FUNCTION {default.type} { misc }
  911. MACRO {jan} {"January"}
  912. MACRO {feb} {"February"}
  913. MACRO {mar} {"March"}
  914. MACRO {apr} {"April"}
  915. MACRO {may} {"May"}
  916. MACRO {jun} {"June"}
  917. MACRO {jul} {"July"}
  918. MACRO {aug} {"August"}
  919. MACRO {sep} {"September"}
  920. MACRO {oct} {"October"}
  921. MACRO {nov} {"November"}
  922. MACRO {dec} {"December"}
  923. MACRO {acmcs} {"ACM Computing Surveys"}
  924. MACRO {acta} {"Acta Informatica"}
  925. MACRO {cacm} {"Communications of the ACM"}
  926. MACRO {ibmjrd} {"IBM Journal of Research and Development"}
  927. MACRO {ibmsj} {"IBM Systems Journal"}
  928. MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
  929. MACRO {ieeetc} {"IEEE Transactions on Computers"}
  930. MACRO {ieeetcad}
  931. {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  932. MACRO {ipl} {"Information Processing Letters"}
  933. MACRO {jacm} {"Journal of the ACM"}
  934. MACRO {jcss} {"Journal of Computer and System Sciences"}
  935. MACRO {scp} {"Science of Computer Programming"}
  936. MACRO {sicomp} {"SIAM Journal on Computing"}
  937. MACRO {tocs} {"ACM Transactions on Computer Systems"}
  938. MACRO {tods} {"ACM Transactions on Database Systems"}
  939. MACRO {tog} {"ACM Transactions on Graphics"}
  940. MACRO {toms} {"ACM Transactions on Mathematical Software"}
  941. MACRO {toois} {"ACM Transactions on Office Information Systems"}
  942. MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
  943. MACRO {tcs} {"Theoretical Computer Science"}
  944. READ
  945. STRINGS { longest.label }
  946. INTEGERS { number.label longest.label.width }
  947. FUNCTION {initialize.longest.label}
  948. { "" 'longest.label :=
  949. #1 'number.label :=
  950. #0 'longest.label.width :=
  951. }
  952. FUNCTION {longest.label.pass}
  953. { number.label int.to.str$ 'label :=
  954. number.label #1 + 'number.label :=
  955. label width$ longest.label.width >
  956. { label 'longest.label :=
  957. label width$ 'longest.label.width :=
  958. }
  959. 'skip$
  960. if$
  961. }
  962. EXECUTE {initialize.longest.label}
  963. ITERATE {longest.label.pass}
  964. FUNCTION {begin.bib}
  965. { preamble$ empty$
  966. 'skip$
  967. { preamble$ write$ newline$ }
  968. if$
  969. "\begin{thebibliography}{" longest.label * "}" * write$ newline$
  970. }
  971. EXECUTE {begin.bib}
  972. EXECUTE {init.state.consts}
  973. ITERATE {call.type$}
  974. FUNCTION {end.bib}
  975. { newline$
  976. "\end{thebibliography}" write$ newline$
  977. }
  978. EXECUTE {end.bib}