splncs03.bst 33 KB

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