spphys.bst 28 KB

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