sagev.bst 26 KB

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