jetpl.bst 24 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249
  1. %%
  2. %% This is file `bibgen.bst',
  3. %% generated with the docstrip utility.
  4. %%
  5. %% The original source files were:
  6. %%
  7. %% merlin.mbs (with options: `lang,seq-no,vonx,nm-init,ed-au,nmlm,m5,x3,mcite,mct-1,mct-x3,yr-par,xmth,tit-it,jtit-x,jttl-rm,vol-bf,vnum-x,volp-com,jpg-1,num-xser,jnm-x,pg-bk,pub-date,pub-xpar,ppx,ed,xedn,etal-xc,nfss ')
  8. %% *** My style file ***
  9. %% Copyright 1994-2007 Patrick W Daly
  10. % ===============================================================
  11. % IMPORTANT NOTICE:
  12. % This bibliographic style (bst) file has been generated from one or
  13. % more master bibliographic style (mbs) files, listed above.
  14. %
  15. % This generated file can be redistributed and/or modified under the terms
  16. % of the LaTeX Project Public License Distributed from CTAN
  17. % archives in directory macros/latex/base/lppl.txt; either
  18. % version 1 of the License, or any later version.
  19. % ===============================================================
  20. % Name and version information of the main mbs file:
  21. % \ProvidesFile{merlin.mbs}[2007/04/24 4.20 (PWD, AO, DPC)]
  22. % For use with BibTeX version 0.99a or later
  23. %-------------------------------------------------------------------
  24. % This bibliography style file is intended for texts in ENGLISH
  25. % This is a numerical citation style, and as such is standard LaTeX.
  26. % It requires no extra package to interface to the main text.
  27. % The form of the \bibitem entries is
  28. % \bibitem{key}...
  29. % Usage of \cite is as follows:
  30. % \cite{key} ==>> [#]
  31. % \cite[chap. 2]{key} ==>> [#, chap. 2]
  32. % where # is a number determined by the ordering in the reference list.
  33. % The order in the reference list is that by which the works were originally
  34. % cited in the text, or that in the database.
  35. %---------------------------------------------------------------------
  36. ENTRY
  37. { address
  38. author
  39. booktitle
  40. chapter
  41. edition
  42. editor
  43. eid
  44. howpublished
  45. institution
  46. journal
  47. key
  48. language
  49. month
  50. note
  51. number
  52. organization
  53. pages
  54. publisher
  55. school
  56. series
  57. title
  58. type
  59. volume
  60. year
  61. }
  62. {}
  63. { label }
  64. INTEGERS { output.state before.all mid.sentence after.sentence after.block }
  65. FUNCTION {init.state.consts}
  66. { #0 'before.all :=
  67. #1 'mid.sentence :=
  68. #2 'after.sentence :=
  69. #3 'after.block :=
  70. }
  71. STRINGS { s t}
  72. FUNCTION {output.nonnull}
  73. { 's :=
  74. output.state mid.sentence =
  75. { ", " * write$ }
  76. { output.state after.block =
  77. { add.period$ write$
  78. newline$
  79. "\newblock " write$
  80. }
  81. { output.state before.all =
  82. 'write$
  83. { add.period$ " " * write$ }
  84. if$
  85. }
  86. if$
  87. mid.sentence 'output.state :=
  88. }
  89. if$
  90. s
  91. }
  92. FUNCTION {output}
  93. { duplicate$ empty$
  94. 'pop$
  95. 'output.nonnull
  96. if$
  97. }
  98. FUNCTION {output.check}
  99. { 't :=
  100. duplicate$ empty$
  101. { pop$ "empty " t * " in " * cite$ * warning$ }
  102. 'output.nonnull
  103. if$
  104. }
  105. FUNCTION {fin.entry}
  106. { add.period$
  107. write$
  108. newline$
  109. }
  110. FUNCTION {new.block}
  111. { output.state before.all =
  112. 'skip$
  113. { after.block 'output.state := }
  114. if$
  115. }
  116. FUNCTION {new.sentence}
  117. { output.state after.block =
  118. 'skip$
  119. { output.state before.all =
  120. 'skip$
  121. { after.sentence 'output.state := }
  122. if$
  123. }
  124. if$
  125. }
  126. FUNCTION {add.blank}
  127. { " " * before.all 'output.state :=
  128. }
  129. FUNCTION {date.block}
  130. {
  131. new.block
  132. }
  133. FUNCTION {not}
  134. { { #0 }
  135. { #1 }
  136. if$
  137. }
  138. FUNCTION {and}
  139. { 'skip$
  140. { pop$ #0 }
  141. if$
  142. }
  143. FUNCTION {or}
  144. { { pop$ #1 }
  145. 'skip$
  146. if$
  147. }
  148. FUNCTION {new.block.checka}
  149. { empty$
  150. 'skip$
  151. 'new.block
  152. if$
  153. }
  154. FUNCTION {new.block.checkb}
  155. { empty$
  156. swap$ empty$
  157. and
  158. 'skip$
  159. 'new.block
  160. if$
  161. }
  162. FUNCTION {new.sentence.checka}
  163. { empty$
  164. 'skip$
  165. 'new.sentence
  166. if$
  167. }
  168. FUNCTION {new.sentence.checkb}
  169. { empty$
  170. swap$ empty$
  171. and
  172. 'skip$
  173. 'new.sentence
  174. if$
  175. }
  176. FUNCTION {field.or.null}
  177. { duplicate$ empty$
  178. { pop$ "" }
  179. 'skip$
  180. if$
  181. }
  182. FUNCTION {emphasize}
  183. { duplicate$ empty$
  184. { pop$ "" }
  185. { "{\em " swap$ * "\/}" * }
  186. if$
  187. }
  188. FUNCTION {bolden}
  189. { duplicate$ empty$
  190. { pop$ "" }
  191. { "{\bf " swap$ * "}" * }
  192. if$
  193. }
  194. FUNCTION {tie.or.space.prefix}
  195. { duplicate$ text.length$ #3 <
  196. { "~" }
  197. { " " }
  198. if$
  199. swap$
  200. }
  201. FUNCTION {capitalize}
  202. { "u" change.case$ "t" change.case$ }
  203. FUNCTION {space.word}
  204. { " " swap$ * " " * }
  205. % Here are the language-specific definitions for explicit words.
  206. % Each function has a name bbl.xxx where xxx is the English word.
  207. % The language selected here is ENGLISH
  208. FUNCTION {bbl.and}
  209. { "and"}
  210. FUNCTION {bbl.etal}
  211. { "et~al." }
  212. FUNCTION {bbl.editors}
  213. { "eds." }
  214. FUNCTION {bbl.editor}
  215. { "ed." }
  216. FUNCTION {bbl.edby}
  217. { "edited by" }
  218. FUNCTION {bbl.edition}
  219. { "edition" }
  220. FUNCTION {bbl.volume}
  221. { "volume" }
  222. FUNCTION {bbl.of}
  223. { "of" }
  224. FUNCTION {bbl.number}
  225. { "number" }
  226. FUNCTION {bbl.nr}
  227. { "no." }
  228. FUNCTION {bbl.in}
  229. { "in" }
  230. FUNCTION {bbl.pages}
  231. { "" }
  232. FUNCTION {bbl.page}
  233. { "" }
  234. FUNCTION {bbl.chapter}
  235. { "chapter" }
  236. FUNCTION {bbl.techrep}
  237. { "Technical Report" }
  238. FUNCTION {bbl.mthesis}
  239. { "Master's thesis" }
  240. FUNCTION {bbl.phdthesis}
  241. { "Ph.D. thesis" }
  242. MACRO {jan} {"January"}
  243. MACRO {feb} {"February"}
  244. MACRO {mar} {"March"}
  245. MACRO {apr} {"April"}
  246. MACRO {may} {"May"}
  247. MACRO {jun} {"June"}
  248. MACRO {jul} {"July"}
  249. MACRO {aug} {"August"}
  250. MACRO {sep} {"September"}
  251. MACRO {oct} {"October"}
  252. MACRO {nov} {"November"}
  253. MACRO {dec} {"December"}
  254. MACRO {acmcs} {"ACM Computing Surveys"}
  255. MACRO {acta} {"Acta Informatica"}
  256. MACRO {cacm} {"Communications of the ACM"}
  257. MACRO {ibmjrd} {"IBM Journal of Research and Development"}
  258. MACRO {ibmsj} {"IBM Systems Journal"}
  259. MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
  260. MACRO {ieeetc} {"IEEE Transactions on Computers"}
  261. MACRO {ieeetcad}
  262. {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
  263. MACRO {ipl} {"Information Processing Letters"}
  264. MACRO {jacm} {"Journal of the ACM"}
  265. MACRO {jcss} {"Journal of Computer and System Sciences"}
  266. MACRO {scp} {"Science of Computer Programming"}
  267. MACRO {sicomp} {"SIAM Journal on Computing"}
  268. MACRO {tocs} {"ACM Transactions on Computer Systems"}
  269. MACRO {tods} {"ACM Transactions on Database Systems"}
  270. MACRO {tog} {"ACM Transactions on Graphics"}
  271. MACRO {toms} {"ACM Transactions on Mathematical Software"}
  272. MACRO {toois} {"ACM Transactions on Office Information Systems"}
  273. MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
  274. MACRO {tcs} {"Theoretical Computer Science"}
  275. FUNCTION {bibinfo.check}
  276. { swap$
  277. duplicate$ missing$
  278. {
  279. pop$ pop$
  280. ""
  281. }
  282. { duplicate$ empty$
  283. {
  284. swap$ pop$
  285. }
  286. { swap$
  287. pop$
  288. }
  289. if$
  290. }
  291. if$
  292. }
  293. FUNCTION {bibinfo.warn}
  294. { swap$
  295. duplicate$ missing$
  296. {
  297. swap$ "missing " swap$ * " in " * cite$ * warning$ pop$
  298. ""
  299. }
  300. { duplicate$ empty$
  301. {
  302. swap$ "empty " swap$ * " in " * cite$ * warning$
  303. }
  304. { swap$
  305. pop$
  306. }
  307. if$
  308. }
  309. if$
  310. }
  311. INTEGERS { nameptr namesleft numnames }
  312. STRINGS { bibinfo}
  313. FUNCTION {format.names}
  314. { 'bibinfo :=
  315. duplicate$ empty$ 'skip$ {
  316. 's :=
  317. "" 't :=
  318. #1 'nameptr :=
  319. s num.names$ 'numnames :=
  320. numnames 'namesleft :=
  321. { namesleft #0 > }
  322. { s nameptr
  323. "{f.~}{vv~}{ll}{, jj}"
  324. format.name$
  325. bibinfo bibinfo.check
  326. 't :=
  327. nameptr #1 >
  328. {
  329. nameptr #5
  330. #1 + =
  331. numnames #3
  332. > and
  333. { "others" 't :=
  334. #1 'namesleft := }
  335. 'skip$
  336. if$
  337. namesleft #1 >
  338. { ", " * t * }
  339. {
  340. s nameptr "{ll}" format.name$ duplicate$ "others" =
  341. { 't := }
  342. { pop$ }
  343. if$
  344. numnames #2 >
  345. t "others" = not and
  346. { "," * }
  347. 'skip$
  348. if$
  349. t "others" =
  350. {
  351. " " * bbl.etal *
  352. }
  353. {
  354. bbl.and
  355. space.word * t *
  356. }
  357. if$
  358. }
  359. if$
  360. }
  361. 't
  362. if$
  363. nameptr #1 + 'nameptr :=
  364. namesleft #1 - 'namesleft :=
  365. }
  366. while$
  367. } if$
  368. }
  369. FUNCTION {format.names.ed}
  370. {
  371. format.names
  372. }
  373. FUNCTION {format.authors}
  374. { author "author" format.names
  375. }
  376. FUNCTION {get.bbl.editor}
  377. { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
  378. FUNCTION {format.editors}
  379. { editor "editor" format.names duplicate$ empty$ 'skip$
  380. {
  381. "," *
  382. " " *
  383. get.bbl.editor
  384. *
  385. }
  386. if$
  387. }
  388. FUNCTION {format.book.pages}
  389. { pages "pages" bibinfo.check
  390. duplicate$ empty$ 'skip$
  391. { " " * bbl.pages * }
  392. if$
  393. }
  394. FUNCTION {select.language}
  395. { duplicate$ empty$
  396. 'pop$
  397. { language empty$
  398. 'skip$
  399. { "{\selectlanguage{" language * "}" * swap$ * "}" * }
  400. if$
  401. }
  402. if$
  403. }
  404. FUNCTION {format.note}
  405. {
  406. note empty$
  407. { "" }
  408. { note #1 #1 substring$
  409. duplicate$ "{" =
  410. 'skip$
  411. { output.state mid.sentence =
  412. { "l" }
  413. { "u" }
  414. if$
  415. change.case$
  416. }
  417. if$
  418. note #2 global.max$ substring$ * "note" bibinfo.check
  419. }
  420. if$
  421. }
  422. FUNCTION {format.title}
  423. { title
  424. duplicate$ empty$ 'skip$
  425. { "t" change.case$ }
  426. if$
  427. "title" bibinfo.check
  428. duplicate$ empty$ 'skip$
  429. {
  430. emphasize
  431. select.language
  432. }
  433. if$
  434. }
  435. FUNCTION {output.bibitem}
  436. { newline$
  437. "\bibitem{" write$
  438. cite$ write$
  439. "}" write$
  440. newline$
  441. ""
  442. before.all 'output.state :=
  443. }
  444. FUNCTION {n.dashify}
  445. {
  446. 't :=
  447. ""
  448. { t empty$ not }
  449. { t #1 #1 substring$ "-" =
  450. { t #1 #2 substring$ "--" = not
  451. { "--" *
  452. t #2 global.max$ substring$ 't :=
  453. }
  454. { { t #1 #1 substring$ "-" = }
  455. { "-" *
  456. t #2 global.max$ substring$ 't :=
  457. }
  458. while$
  459. }
  460. if$
  461. }
  462. { t #1 #1 substring$ *
  463. t #2 global.max$ substring$ 't :=
  464. }
  465. if$
  466. }
  467. while$
  468. }
  469. FUNCTION {word.in}
  470. { bbl.in capitalize
  471. " " * }
  472. FUNCTION {format.date}
  473. {
  474. ""
  475. duplicate$ empty$
  476. year "year" bibinfo.check duplicate$ empty$
  477. { swap$ 'skip$
  478. { "there's a month but no year in " cite$ * warning$ }
  479. if$
  480. *
  481. }
  482. { swap$ 'skip$
  483. {
  484. swap$
  485. " " * swap$
  486. }
  487. if$
  488. *
  489. }
  490. if$
  491. duplicate$ empty$
  492. 'skip$
  493. {
  494. before.all 'output.state :=
  495. " (" swap$ * ")" *
  496. }
  497. if$
  498. }
  499. FUNCTION {format.btitle}
  500. { title "title" bibinfo.check
  501. duplicate$ empty$ 'skip$
  502. {
  503. emphasize
  504. select.language
  505. }
  506. if$
  507. }
  508. FUNCTION {either.or.check}
  509. { empty$
  510. 'pop$
  511. { "can't use both " swap$ * " fields in " * cite$ * warning$ }
  512. if$
  513. }
  514. FUNCTION {format.bvolume}
  515. { volume empty$
  516. { "" }
  517. { bbl.volume volume tie.or.space.prefix
  518. "volume" bibinfo.check * *
  519. series "series" bibinfo.check
  520. duplicate$ empty$ 'pop$
  521. { swap$ bbl.of space.word * swap$
  522. emphasize * }
  523. if$
  524. "volume and number" number either.or.check
  525. }
  526. if$
  527. }
  528. FUNCTION {format.number.series}
  529. { volume empty$
  530. { number empty$
  531. { series field.or.null }
  532. { series empty$
  533. { number "number" bibinfo.check }
  534. { output.state mid.sentence =
  535. { bbl.number }
  536. { bbl.number capitalize }
  537. if$
  538. number tie.or.space.prefix "number" bibinfo.check * *
  539. bbl.in space.word *
  540. series "series" bibinfo.check *
  541. }
  542. if$
  543. }
  544. if$
  545. }
  546. { "" }
  547. if$
  548. }
  549. FUNCTION {format.edition}
  550. { edition duplicate$ empty$ 'skip$
  551. {
  552. output.state mid.sentence =
  553. { "l" }
  554. { "t" }
  555. if$ change.case$
  556. "edition" bibinfo.check
  557. " " * bbl.edition *
  558. }
  559. if$
  560. }
  561. INTEGERS { multiresult }
  562. FUNCTION {multi.page.check}
  563. { 't :=
  564. #0 'multiresult :=
  565. { multiresult not
  566. t empty$ not
  567. and
  568. }
  569. { t #1 #1 substring$
  570. duplicate$ "-" =
  571. swap$ duplicate$ "," =
  572. swap$ "+" =
  573. or or
  574. { #1 'multiresult := }
  575. { t #2 global.max$ substring$ 't := }
  576. if$
  577. }
  578. while$
  579. multiresult
  580. }
  581. FUNCTION {format.pages}
  582. { pages duplicate$ empty$ 'skip$
  583. { duplicate$ multi.page.check
  584. {
  585. n.dashify
  586. }
  587. {
  588. }
  589. if$
  590. "pages" bibinfo.check
  591. }
  592. if$
  593. }
  594. FUNCTION {first.page}
  595. { 't :=
  596. ""
  597. { t empty$ not t #1 #1 substring$ "-" = not and }
  598. { t #1 #1 substring$ *
  599. t #2 global.max$ substring$ 't :=
  600. }
  601. while$
  602. }
  603. FUNCTION {format.journal.pages}
  604. { pages duplicate$ empty$ 'pop$
  605. { swap$ duplicate$ empty$
  606. { pop$ pop$ format.pages }
  607. {
  608. ", " *
  609. swap$
  610. first.page
  611. "pages" bibinfo.check
  612. *
  613. }
  614. if$
  615. }
  616. if$
  617. }
  618. FUNCTION {format.journal.eid}
  619. { eid "eid" bibinfo.check
  620. duplicate$ empty$ 'pop$
  621. { swap$ duplicate$ empty$ 'skip$
  622. {
  623. ", " *
  624. }
  625. if$
  626. swap$ *
  627. }
  628. if$
  629. }
  630. FUNCTION {format.vol.num.pages}
  631. { volume field.or.null
  632. duplicate$ empty$ 'skip$
  633. {
  634. "volume" bibinfo.check
  635. }
  636. if$
  637. bolden
  638. eid empty$
  639. { format.journal.pages }
  640. { format.journal.eid }
  641. if$
  642. }
  643. FUNCTION {format.chapter.pages}
  644. { chapter empty$
  645. 'format.pages
  646. { type empty$
  647. { bbl.chapter }
  648. { type "l" change.case$
  649. "type" bibinfo.check
  650. }
  651. if$
  652. chapter tie.or.space.prefix
  653. "chapter" bibinfo.check
  654. * *
  655. pages empty$
  656. 'skip$
  657. { ", " * format.pages * }
  658. if$
  659. }
  660. if$
  661. }
  662. FUNCTION {format.booktitle}
  663. {
  664. booktitle "booktitle" bibinfo.check
  665. emphasize
  666. }
  667. FUNCTION {format.in.ed.booktitle}
  668. { format.booktitle duplicate$ empty$ 'skip$
  669. {
  670. editor "editor" format.names.ed duplicate$ empty$ 'pop$
  671. {
  672. "," *
  673. " " *
  674. get.bbl.editor
  675. ", " *
  676. * swap$
  677. * }
  678. if$
  679. word.in swap$ *
  680. }
  681. if$
  682. }
  683. FUNCTION {empty.misc.check}
  684. { author empty$ title empty$ howpublished empty$
  685. month empty$ year empty$ note empty$
  686. and and and and and
  687. { "all relevant fields are empty in " cite$ * warning$ }
  688. 'skip$
  689. if$
  690. }
  691. FUNCTION {format.thesis.type}
  692. { type duplicate$ empty$
  693. 'pop$
  694. { swap$ pop$
  695. "t" change.case$ "type" bibinfo.check
  696. }
  697. if$
  698. }
  699. FUNCTION {format.tr.number}
  700. { number "number" bibinfo.check
  701. type duplicate$ empty$
  702. { pop$ bbl.techrep }
  703. 'skip$
  704. if$
  705. "type" bibinfo.check
  706. swap$ duplicate$ empty$
  707. { pop$ "t" change.case$ }
  708. { tie.or.space.prefix * * }
  709. if$
  710. }
  711. FUNCTION {format.article.crossref}
  712. {
  713. key duplicate$ empty$
  714. { pop$
  715. journal duplicate$ empty$
  716. { "need key or journal for " cite$ * " to crossref " * crossref * warning$ }
  717. { "journal" bibinfo.check emphasize word.in swap$ * }
  718. if$
  719. }
  720. { word.in swap$ * " " *}
  721. if$
  722. " \cite{" * crossref * "}" *
  723. }
  724. FUNCTION {format.crossref.editor}
  725. { editor #1 "{vv~}{ll}" format.name$
  726. "editor" bibinfo.check
  727. editor num.names$ duplicate$
  728. #2 >
  729. { pop$
  730. "editor" bibinfo.check
  731. " " * bbl.etal
  732. *
  733. }
  734. { #2 <
  735. 'skip$
  736. { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
  737. {
  738. "editor" bibinfo.check
  739. " " * bbl.etal
  740. *
  741. }
  742. {
  743. bbl.and space.word
  744. * editor #2 "{vv~}{ll}" format.name$
  745. "editor" bibinfo.check
  746. *
  747. }
  748. if$
  749. }
  750. if$
  751. }
  752. if$
  753. }
  754. FUNCTION {format.book.crossref}
  755. { volume duplicate$ empty$
  756. { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
  757. pop$ word.in
  758. }
  759. { bbl.volume
  760. capitalize
  761. swap$ tie.or.space.prefix "volume" bibinfo.check * * bbl.of space.word *
  762. }
  763. if$
  764. editor empty$
  765. editor field.or.null author field.or.null =
  766. or
  767. { key empty$
  768. { series empty$
  769. { "need editor, key, or series for " cite$ * " to crossref " *
  770. crossref * warning$
  771. "" *
  772. }
  773. { series emphasize * }
  774. if$
  775. }
  776. { key * }
  777. if$
  778. }
  779. { format.crossref.editor * }
  780. if$
  781. " \cite{" * crossref * "}" *
  782. }
  783. FUNCTION {format.incoll.inproc.crossref}
  784. {
  785. editor empty$
  786. editor field.or.null author field.or.null =
  787. or
  788. { key empty$
  789. { format.booktitle duplicate$ empty$
  790. { "need editor, key, or booktitle for " cite$ * " to crossref " *
  791. crossref * warning$
  792. }
  793. { word.in swap$ * }
  794. if$
  795. }
  796. { word.in key * " " *}
  797. if$
  798. }
  799. { word.in format.crossref.editor * " " *}
  800. if$
  801. " \cite{" * crossref * "}" *
  802. }
  803. FUNCTION {format.org.or.pub}
  804. { 't :=
  805. ""
  806. year empty$
  807. { "empty year in " cite$ * warning$ }
  808. 'skip$
  809. if$
  810. address empty$ t empty$ and
  811. year empty$ and
  812. 'skip$
  813. {
  814. t empty$
  815. { address "address" bibinfo.check *
  816. }
  817. { t *
  818. address empty$
  819. 'skip$
  820. { ", " * address "address" bibinfo.check * }
  821. if$
  822. }
  823. if$
  824. year empty$
  825. 'skip$
  826. { t empty$ address empty$ and
  827. 'skip$
  828. { ", " * }
  829. if$
  830. year "year" bibinfo.check
  831. *
  832. }
  833. if$
  834. }
  835. if$
  836. }
  837. FUNCTION {format.publisher.address}
  838. { publisher "publisher" bibinfo.warn format.org.or.pub
  839. }
  840. FUNCTION {format.organization.address}
  841. { organization "organization" bibinfo.check format.org.or.pub
  842. }
  843. FUNCTION {article}
  844. { output.bibitem
  845. format.authors "author" output.check
  846. new.block
  847. crossref missing$
  848. {
  849. journal
  850. "journal" bibinfo.check
  851. "journal" output.check
  852. add.blank
  853. format.vol.num.pages output
  854. format.date "year" output.check
  855. }
  856. { format.article.crossref output.nonnull
  857. format.pages output
  858. }
  859. if$
  860. new.block
  861. format.note output
  862. fin.entry
  863. }
  864. FUNCTION {book}
  865. { output.bibitem
  866. author empty$
  867. { format.editors "author and editor" output.check
  868. }
  869. { format.authors output.nonnull
  870. crossref missing$
  871. { "author and editor" editor either.or.check }
  872. 'skip$
  873. if$
  874. }
  875. if$
  876. new.block
  877. format.btitle "title" output.check
  878. crossref missing$
  879. { format.bvolume output
  880. new.block
  881. format.number.series output
  882. new.sentence
  883. format.publisher.address output
  884. }
  885. {
  886. new.block
  887. format.book.crossref output.nonnull
  888. format.date "year" output.check
  889. }
  890. if$
  891. format.edition output
  892. format.book.pages output
  893. new.block
  894. format.note output
  895. fin.entry
  896. }
  897. FUNCTION {booklet}
  898. { output.bibitem
  899. format.authors output
  900. new.block
  901. format.title "title" output.check
  902. new.block
  903. howpublished "howpublished" bibinfo.check output
  904. address "address" bibinfo.check output
  905. format.date output
  906. format.book.pages output
  907. new.block
  908. format.note output
  909. fin.entry
  910. }
  911. FUNCTION {inbook}
  912. { output.bibitem
  913. author empty$
  914. { format.editors "author and editor" output.check
  915. }
  916. { format.authors output.nonnull
  917. crossref missing$
  918. { "author and editor" editor either.or.check }
  919. 'skip$
  920. if$
  921. }
  922. if$
  923. new.block
  924. format.btitle "title" output.check
  925. crossref missing$
  926. {
  927. format.bvolume output
  928. format.chapter.pages "chapter and pages" output.check
  929. new.block
  930. format.number.series output
  931. new.sentence
  932. format.publisher.address output
  933. }
  934. {
  935. format.chapter.pages "chapter and pages" output.check
  936. new.block
  937. format.book.crossref output.nonnull
  938. format.date "year" output.check
  939. }
  940. if$
  941. format.edition output
  942. new.block
  943. format.note output
  944. fin.entry
  945. }
  946. FUNCTION {incollection}
  947. { output.bibitem
  948. format.authors "author" output.check
  949. new.block
  950. crossref missing$
  951. { format.in.ed.booktitle "booktitle" output.check
  952. format.bvolume output
  953. format.number.series output
  954. format.chapter.pages output
  955. new.sentence
  956. format.publisher.address output
  957. format.edition output
  958. }
  959. { format.incoll.inproc.crossref output.nonnull
  960. format.chapter.pages output
  961. }
  962. if$
  963. new.block
  964. format.note output
  965. fin.entry
  966. }
  967. FUNCTION {inproceedings}
  968. { output.bibitem
  969. format.authors "author" output.check
  970. new.block
  971. crossref missing$
  972. { format.in.ed.booktitle "booktitle" output.check
  973. format.bvolume output
  974. format.number.series output
  975. format.pages output
  976. new.sentence
  977. publisher empty$
  978. { format.organization.address output }
  979. { organization "organization" bibinfo.check output
  980. format.publisher.address output
  981. }
  982. if$
  983. }
  984. { format.incoll.inproc.crossref output.nonnull
  985. format.pages output
  986. }
  987. if$
  988. new.block
  989. format.note output
  990. fin.entry
  991. }
  992. FUNCTION {conference} { inproceedings }
  993. FUNCTION {manual}
  994. { output.bibitem
  995. author empty$
  996. { organization "organization" bibinfo.check
  997. duplicate$ empty$ 'pop$
  998. { output
  999. address "address" bibinfo.check output
  1000. }
  1001. if$
  1002. }
  1003. { format.authors output.nonnull }
  1004. if$
  1005. new.block
  1006. format.btitle "title" output.check
  1007. author empty$
  1008. { organization empty$
  1009. {
  1010. address new.block.checka
  1011. address "address" bibinfo.check output
  1012. }
  1013. 'skip$
  1014. if$
  1015. }
  1016. {
  1017. organization address new.block.checkb
  1018. organization "organization" bibinfo.check output
  1019. address "address" bibinfo.check output
  1020. }
  1021. if$
  1022. format.edition output
  1023. format.date output
  1024. new.block
  1025. format.note output
  1026. fin.entry
  1027. }
  1028. FUNCTION {mastersthesis}
  1029. { output.bibitem
  1030. format.authors "author" output.check
  1031. new.block
  1032. format.btitle
  1033. "title" output.check
  1034. new.block
  1035. bbl.mthesis format.thesis.type output.nonnull
  1036. school "school" bibinfo.warn output
  1037. address "address" bibinfo.check output
  1038. format.date "year" output.check
  1039. new.block
  1040. format.note output
  1041. fin.entry
  1042. }
  1043. FUNCTION {misc}
  1044. { output.bibitem
  1045. format.authors output
  1046. title howpublished new.block.checkb
  1047. format.title output
  1048. howpublished new.block.checka
  1049. howpublished "howpublished" bibinfo.check output
  1050. format.date output
  1051. new.block
  1052. format.note output
  1053. fin.entry
  1054. empty.misc.check
  1055. }
  1056. FUNCTION {phdthesis}
  1057. { output.bibitem
  1058. format.authors "author" output.check
  1059. new.block
  1060. format.btitle
  1061. "title" output.check
  1062. new.block
  1063. bbl.phdthesis format.thesis.type output.nonnull
  1064. school "school" bibinfo.warn output
  1065. address "address" bibinfo.check output
  1066. format.date "year" output.check
  1067. new.block
  1068. format.note output
  1069. fin.entry
  1070. }
  1071. FUNCTION {proceedings}
  1072. { output.bibitem
  1073. editor empty$
  1074. { organization "organization" bibinfo.check output
  1075. }
  1076. { format.editors output.nonnull }
  1077. if$
  1078. new.block
  1079. format.btitle "title" output.check
  1080. format.bvolume output
  1081. format.number.series output
  1082. editor empty$
  1083. { publisher empty$
  1084. {
  1085. new.sentence
  1086. format.publisher.address output
  1087. }
  1088. if$
  1089. }
  1090. { publisher empty$
  1091. {
  1092. new.sentence
  1093. format.organization.address output }
  1094. {
  1095. new.sentence
  1096. organization "organization" bibinfo.check output
  1097. format.publisher.address output
  1098. }
  1099. if$
  1100. }
  1101. if$
  1102. new.block
  1103. format.note output
  1104. fin.entry
  1105. }
  1106. FUNCTION {techreport}
  1107. { output.bibitem
  1108. format.authors "author" output.check
  1109. new.block
  1110. format.title
  1111. "title" output.check
  1112. new.block
  1113. format.tr.number output.nonnull
  1114. institution "institution" bibinfo.warn output
  1115. address "address" bibinfo.check output
  1116. format.date "year" output.check
  1117. new.block
  1118. format.note output
  1119. fin.entry
  1120. }
  1121. FUNCTION {unpublished}
  1122. { output.bibitem
  1123. format.authors "author" output.check
  1124. new.block
  1125. format.title "title" output.check
  1126. format.date output
  1127. new.block
  1128. format.note "note" output.check
  1129. fin.entry
  1130. }
  1131. FUNCTION {default.type} { misc }
  1132. READ
  1133. STRINGS { longest.label }
  1134. INTEGERS { number.label longest.label.width }
  1135. FUNCTION {initialize.longest.label}
  1136. { "" 'longest.label :=
  1137. #1 'number.label :=
  1138. #0 'longest.label.width :=
  1139. }
  1140. FUNCTION {longest.label.pass}
  1141. { number.label int.to.str$ 'label :=
  1142. number.label #1 + 'number.label :=
  1143. label width$ longest.label.width >
  1144. { label 'longest.label :=
  1145. label width$ 'longest.label.width :=
  1146. }
  1147. 'skip$
  1148. if$
  1149. }
  1150. EXECUTE {initialize.longest.label}
  1151. ITERATE {longest.label.pass}
  1152. FUNCTION {begin.bib}
  1153. { preamble$ empty$
  1154. 'skip$
  1155. { preamble$ write$ newline$ }
  1156. if$
  1157. "\begin{thebibliography}{" longest.label * "}" *
  1158. write$ newline$
  1159. "\providecommand{\selectlanguage}[1]{\relax}"
  1160. write$ newline$
  1161. }
  1162. EXECUTE {begin.bib}
  1163. EXECUTE {init.state.consts}
  1164. ITERATE {call.type$}
  1165. FUNCTION {end.bib}
  1166. { newline$
  1167. "\end{thebibliography}" write$ newline$
  1168. }
  1169. EXECUTE {end.bib}
  1170. %% End of customized bst file
  1171. %%
  1172. %% End of file `bibgen.bst'.