falkorlib 0.7.3 → 0.7.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,1519 @@
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
+
71
+ ENTRY
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 }
99
+ INTEGERS { output.state before.all mid.sentence after.sentence after.block }
100
+ FUNCTION {init.state.consts}
101
+ { #0 'before.all :=
102
+ #1 'mid.sentence :=
103
+ #2 'after.sentence :=
104
+ #3 'after.block :=
105
+ }
106
+ STRINGS { s t}
107
+ FUNCTION {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
+ }
128
+ FUNCTION {output}
129
+ { duplicate$ empty$
130
+ 'pop$
131
+ 'output.nonnull
132
+ if$
133
+ }
134
+ FUNCTION {output.check}
135
+ { 't :=
136
+ duplicate$ empty$
137
+ { pop$ "empty " t * " in " * cite$ * warning$ }
138
+ 'output.nonnull
139
+ if$
140
+ }
141
+ FUNCTION {fin.entry}
142
+ { duplicate$ empty$
143
+ 'pop$
144
+ 'write$
145
+ if$
146
+ newline$
147
+ }
148
+
149
+ FUNCTION {new.block}
150
+ { output.state before.all =
151
+ 'skip$
152
+ { after.block 'output.state := }
153
+ if$
154
+ }
155
+ FUNCTION {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
+ }
165
+ FUNCTION {add.blank}
166
+ { " " * before.all 'output.state :=
167
+ }
168
+
169
+
170
+ FUNCTION {add.colon}
171
+ { duplicate$ empty$
172
+ 'skip$
173
+ { ":" * add.blank }
174
+ if$
175
+ }
176
+
177
+ FUNCTION {date.block}
178
+ {
179
+ new.block
180
+ }
181
+
182
+ FUNCTION {not}
183
+ { { #0 }
184
+ { #1 }
185
+ if$
186
+ }
187
+ FUNCTION {and}
188
+ { 'skip$
189
+ { pop$ #0 }
190
+ if$
191
+ }
192
+ FUNCTION {or}
193
+ { { pop$ #1 }
194
+ 'skip$
195
+ if$
196
+ }
197
+ STRINGS {z}
198
+ FUNCTION {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
+ }
210
+ FUNCTION {new.block.checka}
211
+ { empty$
212
+ 'skip$
213
+ 'new.block
214
+ if$
215
+ }
216
+ FUNCTION {new.block.checkb}
217
+ { empty$
218
+ swap$ empty$
219
+ and
220
+ 'skip$
221
+ 'new.block
222
+ if$
223
+ }
224
+ FUNCTION {new.sentence.checka}
225
+ { empty$
226
+ 'skip$
227
+ 'new.sentence
228
+ if$
229
+ }
230
+ FUNCTION {new.sentence.checkb}
231
+ { empty$
232
+ swap$ empty$
233
+ and
234
+ 'skip$
235
+ 'new.sentence
236
+ if$
237
+ }
238
+ FUNCTION {field.or.null}
239
+ { duplicate$ empty$
240
+ { pop$ "" }
241
+ 'skip$
242
+ if$
243
+ }
244
+ FUNCTION {emphasize}
245
+ { skip$ }
246
+ FUNCTION {tie.or.space.prefix}
247
+ { duplicate$ text.length$ #3 <
248
+ { "~" }
249
+ { " " }
250
+ if$
251
+ swap$
252
+ }
253
+ FUNCTION {titto.space.prefix} % always introduce a space
254
+ { duplicate$ text.length$ #3 <
255
+ { " " }
256
+ { " " }
257
+ if$
258
+ swap$
259
+ }
260
+
261
+
262
+ FUNCTION {capitalize}
263
+ { "u" change.case$ "t" change.case$ }
264
+
265
+ FUNCTION {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
270
+ FUNCTION {bbl.and}
271
+ { "and"}
272
+
273
+ FUNCTION {bbl.etal}
274
+ { "et~al." }
275
+
276
+ FUNCTION {bbl.editors}
277
+ { "eds." }
278
+
279
+ FUNCTION {bbl.editor}
280
+ { "ed." }
281
+
282
+ FUNCTION {bbl.edby}
283
+ { "edited by" }
284
+
285
+ FUNCTION {bbl.edition}
286
+ { "edn." }
287
+
288
+ FUNCTION {bbl.volume}
289
+ { "vol." }
290
+
291
+ FUNCTION {titto.bbl.volume} % for handling journals
292
+ { "" }
293
+
294
+ FUNCTION {bbl.of}
295
+ { "of" }
296
+
297
+ FUNCTION {bbl.number}
298
+ { "no." }
299
+
300
+ FUNCTION {bbl.nr}
301
+ { "no." }
302
+
303
+ FUNCTION {bbl.in}
304
+ { "in" }
305
+
306
+ FUNCTION {bbl.pages}
307
+ { "pp." }
308
+
309
+ FUNCTION {bbl.page}
310
+ { "p." }
311
+
312
+ FUNCTION {titto.bbl.pages} % for journals
313
+ { "" }
314
+
315
+ FUNCTION {titto.bbl.page} % for journals
316
+ { "" }
317
+
318
+ FUNCTION {bbl.chapter}
319
+ { "chap." }
320
+
321
+ FUNCTION {bbl.techrep}
322
+ { "Tech. Rep." }
323
+
324
+ FUNCTION {bbl.mthesis}
325
+ { "Master's thesis" }
326
+
327
+ FUNCTION {bbl.phdthesis}
328
+ { "Ph.D. thesis" }
329
+
330
+ MACRO {jan} {"Jan."}
331
+
332
+ MACRO {feb} {"Feb."}
333
+
334
+ MACRO {mar} {"Mar."}
335
+
336
+ MACRO {apr} {"Apr."}
337
+
338
+ MACRO {may} {"May"}
339
+
340
+ MACRO {jun} {"Jun."}
341
+
342
+ MACRO {jul} {"Jul."}
343
+
344
+ MACRO {aug} {"Aug."}
345
+
346
+ MACRO {sep} {"Sep."}
347
+
348
+ MACRO {oct} {"Oct."}
349
+
350
+ MACRO {nov} {"Nov."}
351
+
352
+ MACRO {dec} {"Dec."}
353
+
354
+ MACRO {acmcs} {"ACM Comput. Surv."}
355
+
356
+ MACRO {acta} {"Acta Inf."}
357
+
358
+ MACRO {cacm} {"Commun. ACM"}
359
+
360
+ MACRO {ibmjrd} {"IBM J. Res. Dev."}
361
+
362
+ MACRO {ibmsj} {"IBM Syst.~J."}
363
+
364
+ MACRO {ieeese} {"IEEE Trans. Software Eng."}
365
+
366
+ MACRO {ieeetc} {"IEEE Trans. Comput."}
367
+
368
+ MACRO {ieeetcad}
369
+ {"IEEE Trans. Comput. Aid. Des."}
370
+
371
+ MACRO {ipl} {"Inf. Process. Lett."}
372
+
373
+ MACRO {jacm} {"J.~ACM"}
374
+
375
+ MACRO {jcss} {"J.~Comput. Syst. Sci."}
376
+
377
+ MACRO {scp} {"Sci. Comput. Program."}
378
+
379
+ MACRO {sicomp} {"SIAM J. Comput."}
380
+
381
+ MACRO {tocs} {"ACM Trans. Comput. Syst."}
382
+
383
+ MACRO {tods} {"ACM Trans. Database Syst."}
384
+
385
+ MACRO {tog} {"ACM Trans. Graphic."}
386
+
387
+ MACRO {toms} {"ACM Trans. Math. Software"}
388
+
389
+ MACRO {toois} {"ACM Trans. Office Inf. Syst."}
390
+
391
+ MACRO {toplas} {"ACM Trans. Progr. Lang. Syst."}
392
+
393
+ MACRO {tcs} {"Theor. Comput. Sci."}
394
+
395
+ FUNCTION {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
+ }
413
+ FUNCTION {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
+ }
431
+ FUNCTION {format.url}
432
+ { url empty$
433
+ { "" }
434
+ % { "\urlprefix\url{" url * "}" * }
435
+ { "\url{" url * "}" * } % changed in titto-lncs-02.bst
436
+ if$
437
+ }
438
+
439
+ INTEGERS { nameptr namesleft numnames }
440
+
441
+
442
+ STRINGS { bibinfo}
443
+
444
+ FUNCTION {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
+ }
485
+ FUNCTION {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
+ }
528
+ FUNCTION {format.authors}
529
+ { author "author" format.names
530
+ }
531
+ FUNCTION {get.bbl.editor}
532
+ { editor num.names$ #1 > 'bbl.editors 'bbl.editor if$ }
533
+
534
+ FUNCTION {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
+ }
545
+ FUNCTION {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
+
564
+ FUNCTION {format.title}
565
+ { title
566
+ duplicate$ empty$ 'skip$
567
+ { "t" change.case$ }
568
+ if$
569
+ "title" bibinfo.check
570
+ }
571
+ FUNCTION {output.bibitem}
572
+ { newline$
573
+ "\bibitem{" write$
574
+ cite$ write$
575
+ "}" write$
576
+ newline$
577
+ ""
578
+ before.all 'output.state :=
579
+ }
580
+
581
+ FUNCTION {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
+
607
+ FUNCTION {word.in}
608
+ { bbl.in capitalize
609
+ ":" *
610
+ " " * }
611
+
612
+ FUNCTION {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
+ }
640
+ FUNCTION {format.btitle}
641
+ { title "title" bibinfo.check
642
+ duplicate$ empty$ 'skip$
643
+ {
644
+ }
645
+ if$
646
+ }
647
+ FUNCTION {either.or.check}
648
+ { empty$
649
+ 'pop$
650
+ { "can't use both " swap$ * " fields in " * cite$ * warning$ }
651
+ if$
652
+ }
653
+ FUNCTION {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
+ }
666
+ FUNCTION {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
+
688
+ FUNCTION {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
+ }
700
+ INTEGERS { multiresult }
701
+ FUNCTION {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
+ }
720
+ FUNCTION {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
+ }
737
+ FUNCTION {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
+ }
758
+ FUNCTION {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
+ }
770
+ FUNCTION {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
+
799
+ FUNCTION {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
+
819
+ FUNCTION {format.booktitle}
820
+ {
821
+ booktitle "booktitle" bibinfo.check
822
+ }
823
+ FUNCTION {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
+ }
840
+ FUNCTION {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
+ }
849
+ FUNCTION {format.thesis.type}
850
+ { type duplicate$ empty$
851
+ 'pop$
852
+ { swap$ pop$
853
+ "t" change.case$ "type" bibinfo.check
854
+ }
855
+ if$
856
+ }
857
+ FUNCTION {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
+ }
869
+ FUNCTION {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
+ }
882
+ FUNCTION {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
+ }
912
+ FUNCTION {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
+ }
941
+ FUNCTION {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
+ }
961
+ FUNCTION {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
+ }
980
+ FUNCTION {format.publisher.address}
981
+ { publisher "publisher" bibinfo.warn format.org.or.pub
982
+ }
983
+
984
+ FUNCTION {format.organization.address}
985
+ { organization "organization" bibinfo.check format.org.or.pub
986
+ }
987
+
988
+ FUNCTION {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
+ }
1014
+ FUNCTION {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
+ }
1050
+ FUNCTION {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
+
1067
+ FUNCTION {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
+
1107
+ FUNCTION {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
+ }
1134
+ FUNCTION {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
+ }
1166
+ FUNCTION {conference} { inproceedings }
1167
+ FUNCTION {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
+
1206
+ FUNCTION {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
+
1225
+ FUNCTION {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
+ }
1241
+ FUNCTION {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
+
1260
+ FUNCTION {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
+
1303
+ FUNCTION {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
+
1322
+ FUNCTION {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
+
1336
+ FUNCTION {default.type} { misc }
1337
+ READ
1338
+ FUNCTION {sortify}
1339
+ { purify$
1340
+ "l" change.case$
1341
+ }
1342
+ INTEGERS { len }
1343
+ FUNCTION {chop.word}
1344
+ { 's :=
1345
+ 'len :=
1346
+ s #1 len substring$ =
1347
+ { s len #1 + global.max$ substring$ }
1348
+ 's
1349
+ if$
1350
+ }
1351
+ FUNCTION {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
+
1377
+ FUNCTION {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
+ }
1387
+ FUNCTION {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
+ }
1399
+ FUNCTION {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
+ }
1415
+ FUNCTION {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
+ }
1431
+ FUNCTION {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
+ }
1447
+ FUNCTION {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
+ }
1474
+ ITERATE {presort}
1475
+ SORT
1476
+ STRINGS { longest.label }
1477
+ INTEGERS { number.label longest.label.width }
1478
+ FUNCTION {initialize.longest.label}
1479
+ { "" 'longest.label :=
1480
+ #1 'number.label :=
1481
+ #0 'longest.label.width :=
1482
+ }
1483
+ FUNCTION {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
+ }
1493
+ EXECUTE {initialize.longest.label}
1494
+ ITERATE {longest.label.pass}
1495
+ FUNCTION {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
+ }
1507
+ EXECUTE {begin.bib}
1508
+ EXECUTE {init.state.consts}
1509
+ ITERATE {call.type$}
1510
+ FUNCTION {end.bib}
1511
+ { newline$
1512
+ "\end{thebibliography}" write$ newline$
1513
+ }
1514
+ EXECUTE {end.bib}
1515
+ %% End of customized bst file
1516
+ %%
1517
+ %% End of file `titto.bst'.
1518
+
1519
+