SHARE
TWEET

myHarvard.bst

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