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