source: Papers/itp-2013/splncs03.bst @ 3427

Last change on this file since 3427 was 2609, checked in by sacerdot, 7 years ago

Bibliography in place.

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