SHARE
TWEET

myHarvard.bst

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