spphys.bst 28 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980818283848586878889909192939495969798991001011021031041051061071081091101111121131141151161171181191201211221231241251261271281291301311321331341351361371381391401411421431441451461471481491501511521531541551561571581591601611621631641651661671681691701711721731741751761771781791801811821831841851861871881891901911921931941951961971981992002012022032042052062072082092102112122132142152162172182192202212222232242252262272282292302312322332342352362372382392402412422432442452462472482492502512522532542552562572582592602612622632642652662672682692702712722732742752762772782792802812822832842852862872882892902912922932942952962972982993003013023033043053063073083093103113123133143153163173183193203213223233243253263273283293303313323333343353363373383393403413423433443453463473483493503513523533543553563573583593603613623633643653663673683693703713723733743753763773783793803813823833843853863873883893903913923933943953963973983994004014024034044054064074084094104114124134144154164174184194204214224234244254264274284294304314324334344354364374384394404414424434444454464474484494504514524534544554564574584594604614624634644654664674684694704714724734744754764774784794804814824834844854864874884894904914924934944954964974984995005015025035045055065075085095105115125135145155165175185195205215225235245255265275285295305315325335345355365375385395405415425435445455465475485495505515525535545555565575585595605615625635645655665675685695705715725735745755765775785795805815825835845855865875885895905915925935945955965975985996006016026036046056066076086096106116126136146156166176186196206216226236246256266276286296306316326336346356366376386396406416426436446456466476486496506516526536546556566576586596606616626636646656666676686696706716726736746756766776786796806816826836846856866876886896906916926936946956966976986997007017027037047057067077087097107117127137147157167177187197207217227237247257267277287297307317327337347357367377387397407417427437447457467477487497507517527537547557567577587597607617627637647657667677687697707717727737747757767777787797807817827837847857867877887897907917927937947957967977987998008018028038048058068078088098108118128138148158168178188198208218228238248258268278288298308318328338348358368378388398408418428438448458468478488498508518528538548558568578588598608618628638648658668678688698708718728738748758768778788798808818828838848858868878888898908918928938948958968978988999009019029039049059069079089099109119129139149159169179189199209219229239249259269279289299309319329339349359369379389399409419429439449459469479489499509519529539549559569579589599609619629639649659669679689699709719729739749759769779789799809819829839849859869879889899909919929939949959969979989991000100110021003100410051006100710081009101010111012101310141015101610171018101910201021102210231024102510261027102810291030103110321033103410351036103710381039104010411042104310441045104610471048104910501051105210531054105510561057105810591060106110621063106410651066106710681069107010711072107310741075107610771078107910801081108210831084108510861087108810891090109110921093109410951096109710981099110011011102110311041105110611071108110911101111111211131114111511161117111811191120112111221123112411251126112711281129113011311132113311341135113611371138113911401141114211431144114511461147114811491150115111521153115411551156115711581159116011611162116311641165116611671168116911701171117211731174117511761177117811791180118111821183118411851186118711881189119011911192119311941195119611971198119912001201120212031204120512061207120812091210121112121213121412151216121712181219122012211222122312241225122612271228122912301231123212331234123512361237123812391240124112421243124412451246124712481249125012511252125312541255125612571258125912601261126212631264126512661267126812691270127112721273127412751276127712781279128012811282128312841285128612871288128912901291129212931294129512961297129812991300130113021303130413051306130713081309131013111312131313141315131613171318131913201321132213231324132513261327132813291330133113321333133413351336133713381339134013411342134313441345134613471348134913501351135213531354135513561357135813591360136113621363136413651366136713681369137013711372137313741375137613771378137913801381138213831384138513861387138813891390139113921393139413951396139713981399140014011402140314041405140614071408140914101411141214131414141514161417141814191420142114221423142414251426142714281429143014311432143314341435143614371438143914401441144214431444
  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. format.title "title" output.check
  983. crossref missing$
  984. {
  985. journal
  986. "journal" bibinfo.check
  987. "journal" output.check
  988. add.blank
  989. format.vol.num.pages output
  990. format.date "year" output.check
  991. }
  992. { format.article.crossref output.nonnull
  993. format.pages output
  994. }
  995. if$
  996. format.doi output
  997. new.block
  998. format.url output
  999. new.block
  1000. format.note output
  1001. fin.entry
  1002. }
  1003. FUNCTION {book}
  1004. { output.bibitem
  1005. author empty$
  1006. { format.editors "author and editor" output.check
  1007. }
  1008. { format.authors output.nonnull
  1009. crossref missing$
  1010. { "author and editor" editor either.or.check }
  1011. 'skip$
  1012. if$
  1013. }
  1014. if$
  1015. add.comma
  1016. format.btitle "title" output.check
  1017. crossref missing$
  1018. { format.bvolume output
  1019. format.edition output
  1020. new.block
  1021. format.number.series output
  1022. new.sentence
  1023. format.publisher.address output
  1024. }
  1025. {
  1026. new.block
  1027. format.book.crossref output.nonnull
  1028. format.date "year" output.check
  1029. }
  1030. if$
  1031. format.doi output
  1032. new.block
  1033. format.url output
  1034. new.block
  1035. format.note output
  1036. fin.entry
  1037. }
  1038. FUNCTION {booklet}
  1039. { output.bibitem
  1040. format.authors output
  1041. add.comma
  1042. format.title "title" output.check
  1043. new.block
  1044. howpublished "howpublished" bibinfo.check output
  1045. address "address" bibinfo.check output
  1046. format.date output
  1047. format.doi output
  1048. new.block
  1049. format.url output
  1050. new.block
  1051. format.note output
  1052. fin.entry
  1053. }
  1054. FUNCTION {inbook}
  1055. { output.bibitem
  1056. author empty$
  1057. { format.editors "author and editor" output.check
  1058. }
  1059. { format.authors output.nonnull
  1060. crossref missing$
  1061. { "author and editor" editor either.or.check }
  1062. 'skip$
  1063. if$
  1064. }
  1065. if$
  1066. add.comma
  1067. format.btitle "title" output.check
  1068. crossref missing$
  1069. {
  1070. format.publisher.address output
  1071. format.bvolume output
  1072. format.edition output
  1073. format.chapter.pages "chapter and pages" output.check
  1074. new.block
  1075. format.number.series output
  1076. new.sentence
  1077. }
  1078. {
  1079. format.chapter.pages "chapter and pages" output.check
  1080. new.block
  1081. format.book.crossref output.nonnull
  1082. format.date "year" output.check
  1083. }
  1084. if$
  1085. format.doi output
  1086. new.block
  1087. format.url output
  1088. new.block
  1089. format.note output
  1090. fin.entry
  1091. }
  1092. FUNCTION {incollection}
  1093. { output.bibitem
  1094. format.authors "author" output.check
  1095. add.comma
  1096. crossref missing$
  1097. { format.in.ed.booktitle "booktitle" output.check
  1098. format.edition output
  1099. format.number.series output
  1100. format.publisher.address output
  1101. format.chapter.pages output
  1102. new.sentence
  1103. }
  1104. { format.incoll.inproc.crossref output.nonnull
  1105. format.chapter.pages output
  1106. }
  1107. if$
  1108. format.doi output
  1109. new.block
  1110. format.url output
  1111. new.block
  1112. format.note output
  1113. fin.entry
  1114. }
  1115. FUNCTION {inproceedings}
  1116. { output.bibitem
  1117. format.authors "author" output.check
  1118. add.comma
  1119. crossref missing$
  1120. { format.in.ed.booktitle "booktitle" output.check
  1121. new.sentence
  1122. publisher empty$
  1123. { format.organization.address output }
  1124. { organization "organization" bibinfo.check output
  1125. format.publisher.address output
  1126. }
  1127. if$
  1128. format.bvolume output
  1129. format.number.series output
  1130. format.pages output
  1131. }
  1132. { format.incoll.inproc.crossref output.nonnull
  1133. format.pages output
  1134. }
  1135. if$
  1136. format.doi output
  1137. new.block
  1138. format.url output
  1139. new.block
  1140. format.note output
  1141. fin.entry
  1142. }
  1143. FUNCTION {conference} { inproceedings }
  1144. FUNCTION {manual}
  1145. { output.bibitem
  1146. author empty$
  1147. { organization "organization" bibinfo.check
  1148. duplicate$ empty$ 'pop$
  1149. { output
  1150. address "address" bibinfo.check output
  1151. }
  1152. if$
  1153. }
  1154. { format.authors output.nonnull }
  1155. if$
  1156. add.comma
  1157. format.btitle "title" output.check
  1158. author empty$
  1159. { organization empty$
  1160. {
  1161. address new.block.checka
  1162. address "address" bibinfo.check output
  1163. }
  1164. 'skip$
  1165. if$
  1166. }
  1167. {
  1168. organization address new.block.checkb
  1169. organization "organization" bibinfo.check output
  1170. address "address" bibinfo.check output
  1171. }
  1172. if$
  1173. format.edition output
  1174. format.date output
  1175. format.doi output
  1176. new.block
  1177. format.url output
  1178. new.block
  1179. format.note output
  1180. fin.entry
  1181. }
  1182. FUNCTION {mastersthesis}
  1183. { output.bibitem
  1184. format.authors "author" output.check
  1185. add.comma
  1186. format.title
  1187. "title" output.check
  1188. new.block
  1189. bbl.mthesis format.thesis.type output.nonnull
  1190. school "school" bibinfo.warn output
  1191. address "address" bibinfo.check output
  1192. format.date "year" output.check
  1193. format.doi output
  1194. new.block
  1195. format.url output
  1196. new.block
  1197. format.note output
  1198. fin.entry
  1199. }
  1200. FUNCTION {misc}
  1201. { output.bibitem
  1202. format.authors output
  1203. title howpublished new.block.checkb
  1204. format.title output
  1205. howpublished new.block.checka
  1206. howpublished "howpublished" bibinfo.check output
  1207. format.date output
  1208. format.doi output
  1209. new.block
  1210. format.url output
  1211. new.block
  1212. format.note output
  1213. fin.entry
  1214. empty.misc.check
  1215. }
  1216. FUNCTION {phdthesis}
  1217. { output.bibitem
  1218. format.authors "author" output.check
  1219. add.comma
  1220. format.title
  1221. "title" output.check
  1222. new.block
  1223. bbl.phdthesis format.thesis.type output.nonnull
  1224. school "school" bibinfo.warn output
  1225. address "address" bibinfo.check output
  1226. format.date "year" output.check
  1227. format.doi output
  1228. new.block
  1229. format.url output
  1230. new.block
  1231. format.note output
  1232. fin.entry
  1233. }
  1234. FUNCTION {proceedings}
  1235. { output.bibitem
  1236. editor empty$
  1237. { organization "organization" bibinfo.check output
  1238. }
  1239. { format.editors output.nonnull }
  1240. if$
  1241. new.block
  1242. format.btitle "title" output.check
  1243. format.bvolume output
  1244. format.number.series output
  1245. editor empty$
  1246. { publisher empty$
  1247. 'skip$
  1248. {
  1249. new.sentence
  1250. format.publisher.address output
  1251. }
  1252. if$
  1253. }
  1254. { publisher empty$
  1255. {
  1256. new.sentence
  1257. format.organization.address output }
  1258. {
  1259. new.sentence
  1260. organization "organization" bibinfo.check output
  1261. format.publisher.address output
  1262. }
  1263. if$
  1264. }
  1265. if$
  1266. format.doi output
  1267. new.block
  1268. format.url output
  1269. new.block
  1270. format.note output
  1271. fin.entry
  1272. }
  1273. FUNCTION {techreport}
  1274. { output.bibitem
  1275. format.authors "author" output.check
  1276. add.comma
  1277. format.title
  1278. "title" output.check
  1279. new.block
  1280. format.tr.number output.nonnull
  1281. institution "institution" bibinfo.warn output
  1282. address "address" bibinfo.check output
  1283. format.date "year" output.check
  1284. format.doi output
  1285. new.block
  1286. format.url output
  1287. new.block
  1288. format.note output
  1289. fin.entry
  1290. }
  1291. FUNCTION {unpublished}
  1292. { output.bibitem
  1293. format.authors "author" output.check
  1294. add.comma
  1295. format.title "title" output.check
  1296. format.date output
  1297. format.doi output
  1298. new.block
  1299. format.url output
  1300. new.block
  1301. format.note "note" output.check
  1302. fin.entry
  1303. }
  1304. FUNCTION {default.type} { misc }
  1305. READ
  1306. STRINGS { longest.label }
  1307. INTEGERS { number.label longest.label.width }
  1308. FUNCTION {initialize.longest.label}
  1309. { "" 'longest.label :=
  1310. #1 'number.label :=
  1311. #0 'longest.label.width :=
  1312. }
  1313. FUNCTION {longest.label.pass}
  1314. { number.label int.to.str$ 'label :=
  1315. number.label #1 + 'number.label :=
  1316. label width$ longest.label.width >
  1317. { label 'longest.label :=
  1318. label width$ 'longest.label.width :=
  1319. }
  1320. 'skip$
  1321. if$
  1322. }
  1323. EXECUTE {initialize.longest.label}
  1324. ITERATE {longest.label.pass}
  1325. FUNCTION {begin.bib}
  1326. { preamble$ empty$
  1327. 'skip$
  1328. { preamble$ write$ newline$ }
  1329. if$
  1330. "\begin{thebibliography}{" longest.label * "}" *
  1331. write$ newline$
  1332. "\providecommand{\url}[1]{{#1}}"
  1333. write$ newline$
  1334. "\providecommand{\urlprefix}{URL }"
  1335. write$ newline$
  1336. "\expandafter\ifx\csname urlstyle\endcsname\relax"
  1337. write$ newline$
  1338. " \providecommand{\doi}[1]{DOI \discretionary{}{}{}#1}\else"
  1339. write$ newline$
  1340. " \providecommand{\doi}{DOI \discretionary{}{}{}\begingroup \urlstyle{rm}\Url}\fi"
  1341. write$ newline$
  1342. }
  1343. EXECUTE {begin.bib}
  1344. EXECUTE {init.state.consts}
  1345. ITERATE {call.type$}
  1346. FUNCTION {end.bib}
  1347. { newline$
  1348. "\end{thebibliography}" write$ newline$
  1349. }
  1350. EXECUTE {end.bib}
  1351. %% End of customized bst file
  1352. %%
  1353. %% End of file `spphys.bst'.