bib-style.bst 28 KB

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