comparison Write Up/splncs.bst @ 3:475bddaf580c tip

Add report and Presentation
author Dave Moffat <d.j.moffat@qmul.ac.uk>
date Wed, 25 Feb 2015 16:07:05 +0000
parents
children
comparison
equal deleted inserted replaced
2:675ab63caba7 3:475bddaf580c
1 % BibTeX bibliography style `splncs'
2
3 % An attempt to match the bibliography style required for use with
4 % numbered references in Springer Verlag's "Lecture Notes in Computer
5 % Science" series. (See Springer's documentation for llncs.sty 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{splncs}, and cite
10 % a reference with (e.g.) \cite{smith77} to get a "[1]" in the text.
11
12 % Copyright (C) 1999 Jason Noble.
13 % Last updated: Thursday 20 May 1999, 13:22:19
14 %
15 % Based on the BibTeX standard bibliography style `unsrt'
16
17 ENTRY
18 { address
19 author
20 booktitle
21 chapter
22 edition
23 editor
24 howpublished
25 institution
26 journal
27 key
28 month
29 note
30 number
31 organization
32 pages
33 publisher
34 school
35 series
36 title
37 type
38 volume
39 year
40 }
41 {}
42 { label }
43
44 INTEGERS { output.state before.all mid.sentence after.sentence
45 after.block after.authors between.elements}
46
47 FUNCTION {init.state.consts}
48 { #0 'before.all :=
49 #1 'mid.sentence :=
50 #2 'after.sentence :=
51 #3 'after.block :=
52 #4 'after.authors :=
53 #5 'between.elements :=
54 }
55
56 STRINGS { s t }
57
58 FUNCTION {output.nonnull}
59 { 's :=
60 output.state mid.sentence =
61 { " " * write$ }
62 { output.state after.block =
63 { add.period$ write$
64 newline$
65 "\newblock " write$
66 }
67 {
68 output.state after.authors =
69 { ": " * write$
70 newline$
71 "\newblock " write$
72 }
73 { output.state between.elements =
74 { ", " * write$ }
75 { output.state before.all =
76 'write$
77 { add.period$ " " * write$ }
78 if$
79 }
80 if$
81 }
82 if$
83 }
84 if$
85 mid.sentence 'output.state :=
86 }
87 if$
88 s
89 }
90
91 FUNCTION {output}
92 { duplicate$ empty$
93 'pop$
94 'output.nonnull
95 if$
96 }
97
98 FUNCTION {output.check}
99 { 't :=
100 duplicate$ empty$
101 { pop$ "empty " t * " in " * cite$ * warning$ }
102 'output.nonnull
103 if$
104 }
105
106 FUNCTION {output.bibitem}
107 { newline$
108 "\bibitem{" write$
109 cite$ write$
110 "}" write$
111 newline$
112 ""
113 before.all 'output.state :=
114 }
115
116 FUNCTION {fin.entry}
117 { write$
118 newline$
119 }
120
121 FUNCTION {new.block}
122 { output.state before.all =
123 'skip$
124 { after.block 'output.state := }
125 if$
126 }
127
128 FUNCTION {stupid.colon}
129 { after.authors 'output.state := }
130
131 FUNCTION {insert.comma}
132 { output.state before.all =
133 'skip$
134 { between.elements 'output.state := }
135 if$
136 }
137
138 FUNCTION {new.sentence}
139 { output.state after.block =
140 'skip$
141 { output.state before.all =
142 'skip$
143 { after.sentence 'output.state := }
144 if$
145 }
146 if$
147 }
148
149 FUNCTION {not}
150 { { #0 }
151 { #1 }
152 if$
153 }
154
155 FUNCTION {and}
156 { 'skip$
157 { pop$ #0 }
158 if$
159 }
160
161 FUNCTION {or}
162 { { pop$ #1 }
163 'skip$
164 if$
165 }
166
167 FUNCTION {new.block.checka}
168 { empty$
169 'skip$
170 'new.block
171 if$
172 }
173
174 FUNCTION {new.block.checkb}
175 { empty$
176 swap$ empty$
177 and
178 'skip$
179 'new.block
180 if$
181 }
182
183 FUNCTION {new.sentence.checka}
184 { empty$
185 'skip$
186 'new.sentence
187 if$
188 }
189
190 FUNCTION {new.sentence.checkb}
191 { empty$
192 swap$ empty$
193 and
194 'skip$
195 'new.sentence
196 if$
197 }
198
199 FUNCTION {field.or.null}
200 { duplicate$ empty$
201 { pop$ "" }
202 'skip$
203 if$
204 }
205
206 FUNCTION {emphasize}
207 { duplicate$ empty$
208 { pop$ "" }
209 { "" swap$ * "" * }
210 if$
211 }
212
213 FUNCTION {bold}
214 { duplicate$ empty$
215 { pop$ "" }
216 { "\textbf{" swap$ * "}" * }
217 if$
218 }
219
220 FUNCTION {parens}
221 { duplicate$ empty$
222 { pop$ "" }
223 { "(" swap$ * ")" * }
224 if$
225 }
226
227 INTEGERS { nameptr namesleft numnames }
228
229 FUNCTION {format.springer.names}
230 { 's :=
231 #1 'nameptr :=
232 s num.names$ 'numnames :=
233 numnames 'namesleft :=
234 { namesleft #0 > }
235 { s nameptr "{vv~}{ll}{, jj}{, f{.}.}" format.name$ 't :=
236 nameptr #1 >
237 { namesleft #1 >
238 { ", " * t * }
239 { numnames #1 >
240 { ", " * }
241 'skip$
242 if$
243 t "others" =
244 { " et~al." * }
245 { "" * t * }
246 if$
247 }
248 if$
249 }
250 't
251 if$
252 nameptr #1 + 'nameptr :=
253 namesleft #1 - 'namesleft :=
254 }
255 while$
256 }
257
258 FUNCTION {format.names}
259 { 's :=
260 #1 'nameptr :=
261 s num.names$ 'numnames :=
262 numnames 'namesleft :=
263 { namesleft #0 > }
264 { s nameptr "{vv~}{ll}{, jj}{, f.}" format.name$ 't :=
265 nameptr #1 >
266 { namesleft #1 >
267 { ", " * t * }
268 { numnames #2 >
269 { "," * }
270 'skip$
271 if$
272 t "others" =
273 { " et~al." * }
274 { " \& " * t * }
275 if$
276 }
277 if$
278 }
279 't
280 if$
281 nameptr #1 + 'nameptr :=
282 namesleft #1 - 'namesleft :=
283 }
284 while$
285 }
286
287 FUNCTION {format.authors}
288 { author empty$
289 { "" }
290 { author format.springer.names }
291 if$
292 }
293
294 FUNCTION {format.editors}
295 { editor empty$
296 { "" }
297 { editor format.springer.names
298 editor num.names$ #1 >
299 { ", eds." * }
300 { ", ed." * }
301 if$
302 }
303 if$
304 }
305
306 FUNCTION {format.title}
307 { title empty$
308 { "" }
309 { title "t" change.case$ }
310 if$
311 }
312
313 FUNCTION {n.dashify}
314 { 't :=
315 ""
316 { t empty$ not }
317 { t #1 #1 substring$ "-" =
318 { t #1 #2 substring$ "--" = not
319 { "--" *
320 t #2 global.max$ substring$ 't :=
321 }
322 { { t #1 #1 substring$ "-" = }
323 { "-" *
324 t #2 global.max$ substring$ 't :=
325 }
326 while$
327 }
328 if$
329 }
330 { t #1 #1 substring$ *
331 t #2 global.max$ substring$ 't :=
332 }
333 if$
334 }
335 while$
336 }
337
338 FUNCTION {format.date}
339 { year empty$
340 { "there's no year in " cite$ * warning$ }
341 'year
342 if$
343 }
344
345 FUNCTION {format.btitle}
346 { title emphasize
347 }
348
349 FUNCTION {tie.or.space.connect}
350 { duplicate$ text.length$ #3 <
351 { "~" }
352 { " " }
353 if$
354 swap$ * *
355 }
356
357 FUNCTION {either.or.check}
358 { empty$
359 'pop$
360 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
361 if$
362 }
363
364 FUNCTION {format.bvolume}
365 { volume empty$
366 { "" }
367 { "Volume" volume tie.or.space.connect
368 series empty$
369 'skip$
370 { " of " * series emphasize * }
371 if$
372 add.period$
373 "volume and number" number either.or.check
374 }
375 if$
376 }
377
378 FUNCTION {format.number.series}
379 { volume empty$
380 { number empty$
381 { series field.or.null }
382 { output.state mid.sentence =
383 { "number" }
384 { "Number" }
385 if$
386 number tie.or.space.connect
387 series empty$
388 { "there's a number but no series in " cite$ * warning$ }
389 { " in " * series * }
390 if$
391 }
392 if$
393 }
394 { "" }
395 if$
396 }
397
398 FUNCTION {format.edition}
399 { edition empty$
400 { "" }
401 { output.state mid.sentence =
402 { edition "l" change.case$ " edn." * }
403 { edition "t" change.case$ " edn." * }
404 if$
405 }
406 if$
407 }
408
409 INTEGERS { multiresult }
410
411 FUNCTION {multi.page.check}
412 { 't :=
413 #0 'multiresult :=
414 { multiresult not
415 t empty$ not
416 and
417 }
418 { t #1 #1 substring$
419 duplicate$ "-" =
420 swap$ duplicate$ "," =
421 swap$ "+" =
422 or or
423 { #1 'multiresult := }
424 { t #2 global.max$ substring$ 't := }
425 if$
426 }
427 while$
428 multiresult
429 }
430
431 FUNCTION {format.pages}
432 { pages empty$
433 { "" }
434 { pages multi.page.check
435 { "" pages n.dashify tie.or.space.connect }
436 { "" pages tie.or.space.connect }
437 if$
438 }
439 if$
440 }
441
442 FUNCTION {format.vol}
443 { volume bold
444 }
445
446 FUNCTION {pre.format.pages}
447 { pages empty$
448 'skip$
449 { duplicate$ empty$
450 { pop$ format.pages }
451 { " " * pages n.dashify * }
452 if$
453 }
454 if$
455 }
456
457 FUNCTION {format.chapter.pages}
458 { chapter empty$
459 'format.pages
460 { type empty$
461 { "chapter" }
462 { type "l" change.case$ }
463 if$
464 chapter tie.or.space.connect
465 pages empty$
466 'skip$
467 { " " * format.pages * }
468 if$
469 }
470 if$
471 }
472
473 FUNCTION {format.in.ed.booktitle}
474 { booktitle empty$
475 { "" }
476 { editor empty$
477 { "In: " booktitle emphasize * }
478 { "In " format.editors * ": " * booktitle emphasize * }
479 if$
480 }
481 if$
482 }
483
484 FUNCTION {empty.misc.check}
485 { author empty$ title empty$ howpublished empty$
486 month empty$ year empty$ note empty$
487 and and and and and
488 { "all relevant fields are empty in " cite$ * warning$ }
489 'skip$
490 if$
491 }
492
493 FUNCTION {format.thesis.type}
494 { type empty$
495 'skip$
496 { pop$
497 type "t" change.case$
498 }
499 if$
500 }
501
502 FUNCTION {format.tr.number}
503 { type empty$
504 { "Technical Report" }
505 'type
506 if$
507 number empty$
508 { "t" change.case$ }
509 { number tie.or.space.connect }
510 if$
511 }
512
513 FUNCTION {format.article.crossref}
514 { key empty$
515 { journal empty$
516 { "need key or journal for " cite$ * " to crossref " * crossref *
517 warning$
518 ""
519 }
520 { "In {\em " journal * "\/}" * }
521 if$
522 }
523 { "In " key * }
524 if$
525 " \cite{" * crossref * "}" *
526 }
527
528 FUNCTION {format.crossref.editor}
529 { editor #1 "{vv~}{ll}" format.name$
530 editor num.names$ duplicate$
531 #2 >
532 { pop$ " et~al." * }
533 { #2 <
534 'skip$
535 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
536 { " et~al." * }
537 { " and " * editor #2 "{vv~}{ll}" format.name$ * }
538 if$
539 }
540 if$
541 }
542 if$
543 }
544
545 FUNCTION {format.book.crossref}
546 { volume empty$
547 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
548 "In "
549 }
550 { "Volume" volume tie.or.space.connect
551 " of " *
552 }
553 if$
554 " \cite{" * crossref * "}" *
555 }
556
557 FUNCTION {format.incoll.inproc.crossref}
558 { editor empty$
559 editor field.or.null author field.or.null =
560 or
561 { key empty$
562 { booktitle empty$
563 { "need editor, key, or booktitle for " cite$ * " to crossref " *
564 crossref * warning$
565 ""
566 }
567 { "" }
568 if$
569 }
570 { "" }
571 if$
572 }
573 { "" }
574 if$
575 " \cite{" * crossref * "}" *
576 }
577
578 FUNCTION {and.the.note}
579 { note output
580 note empty$
581 'skip$
582 { add.period$ }
583 if$
584 }
585
586 FUNCTION {article}
587 { output.bibitem
588 format.authors "author" output.check
589 stupid.colon
590 format.title "title" output.check
591 new.block
592 crossref missing$
593 { journal emphasize "journal" output.check
594 format.vol output
595 format.date parens output
596 format.pages output
597 }
598 { format.article.crossref output.nonnull
599 format.pages output
600 }
601 if$
602 and.the.note
603 fin.entry
604 }
605
606 FUNCTION {book}
607 { output.bibitem
608 author empty$
609 { format.editors "author and editor" output.check }
610 { format.authors output.nonnull
611 crossref missing$
612 { "author and editor" editor either.or.check }
613 'skip$
614 if$
615 }
616 if$
617 stupid.colon
618 format.btitle "title" output.check
619 new.sentence
620 crossref missing$
621 { format.edition output
622 format.bvolume output
623 new.block
624 format.number.series output
625 new.sentence
626 publisher "publisher" output.check
627 address empty$
628 'skip$
629 { insert.comma }
630 if$
631 address output
632 format.date parens output
633 }
634 { format.book.crossref output.nonnull
635 }
636 if$
637 and.the.note
638 fin.entry
639 }
640
641 FUNCTION {booklet}
642 { output.bibitem
643 format.authors output
644 stupid.colon
645 format.title "title" output.check
646 howpublished address new.block.checkb
647 howpublished output
648 address empty$
649 'skip$
650 { insert.comma }
651 if$
652 address output
653 format.date parens output
654 and.the.note
655 fin.entry
656 }
657
658 FUNCTION {inbook}
659 { output.bibitem
660 author empty$
661 { format.editors "author and editor" output.check }
662 { format.authors output.nonnull
663 crossref missing$
664 { "author and editor" editor either.or.check }
665 'skip$
666 if$
667 }
668 if$
669 stupid.colon
670 crossref missing$
671 { chapter output
672 new.block
673 format.number.series output
674 new.sentence
675 "In:" output
676 format.btitle "title" output.check
677 new.sentence
678 format.edition output
679 format.bvolume output
680 publisher "publisher" output.check
681 address empty$
682 'skip$
683 { insert.comma }
684 if$
685 address output
686 format.date parens output
687 }
688 { chapter output
689 new.block
690 format.incoll.inproc.crossref output.nonnull
691 }
692 if$
693 format.pages output
694 and.the.note
695 fin.entry
696 }
697
698 FUNCTION {incollection}
699 { output.bibitem
700 format.authors "author" output.check
701 stupid.colon
702 format.title "title" output.check
703 new.block
704 crossref missing$
705 { format.in.ed.booktitle "booktitle" output.check
706 new.sentence
707 format.bvolume output
708 format.number.series output
709 new.block
710 format.edition output
711 publisher "publisher" output.check
712 address empty$
713 'skip$
714 { insert.comma }
715 if$
716 address output
717 format.date parens output
718 format.pages output
719 }
720 { format.incoll.inproc.crossref output.nonnull
721 format.chapter.pages output
722 }
723 if$
724 and.the.note
725 fin.entry
726 }
727
728 FUNCTION {inproceedings}
729 { output.bibitem
730 format.authors "author" output.check
731 stupid.colon
732 format.title "title" output.check
733 new.block
734 crossref missing$
735 { format.in.ed.booktitle "booktitle" output.check
736 new.sentence
737 format.bvolume output
738 format.number.series output
739 address empty$
740 { organization publisher new.sentence.checkb
741 organization empty$
742 'skip$
743 { insert.comma }
744 if$
745 organization output
746 publisher empty$
747 'skip$
748 { insert.comma }
749 if$
750 publisher output
751 format.date parens output
752 }
753 { insert.comma
754 address output.nonnull
755 organization empty$
756 'skip$
757 { insert.comma }
758 if$
759 organization output
760 publisher empty$
761 'skip$
762 { insert.comma }
763 if$
764 publisher output
765 format.date parens output
766 }
767 if$
768 }
769 { format.incoll.inproc.crossref output.nonnull
770 }
771 if$
772 format.pages output
773 and.the.note
774 fin.entry
775 }
776
777 FUNCTION {conference} { inproceedings }
778
779 FUNCTION {manual}
780 { output.bibitem
781 author empty$
782 { organization empty$
783 'skip$
784 { organization output.nonnull
785 address output
786 }
787 if$
788 }
789 { format.authors output.nonnull }
790 if$
791 stupid.colon
792 format.btitle "title" output.check
793 author empty$
794 { organization empty$
795 { address new.block.checka
796 address output
797 }
798 'skip$
799 if$
800 }
801 { organization address new.block.checkb
802 organization output
803 address empty$
804 'skip$
805 { insert.comma }
806 if$
807 address output
808 }
809 if$
810 new.sentence
811 format.edition output
812 format.date parens output
813 and.the.note
814 fin.entry
815 }
816
817 FUNCTION {mastersthesis}
818 { output.bibitem
819 format.authors "author" output.check
820 stupid.colon
821 format.title "title" output.check
822 new.block
823 "Master's thesis" format.thesis.type output.nonnull
824 school empty$
825 'skip$
826 { insert.comma }
827 if$
828 school "school" output.check
829 address empty$
830 'skip$
831 { insert.comma }
832 if$
833 address output
834 format.date parens output
835 and.the.note
836 fin.entry
837 }
838
839 FUNCTION {misc}
840 { output.bibitem
841 format.authors "author" output.check
842 stupid.colon
843 format.title "title" output.check
844 howpublished new.block.checka
845 howpublished output
846 format.date parens output
847 and.the.note
848 fin.entry
849 empty.misc.check
850 }
851
852 FUNCTION {phdthesis}
853 { output.bibitem
854 format.authors "author" output.check
855 stupid.colon
856 format.btitle "title" output.check
857 new.block
858 "PhD thesis" format.thesis.type output.nonnull
859 school empty$
860 'skip$
861 { insert.comma }
862 if$
863 school "school" output.check
864 address empty$
865 'skip$
866 { insert.comma }
867 if$
868 address output
869 format.date parens output
870 and.the.note
871 fin.entry
872 }
873
874 FUNCTION {proceedings}
875 { output.bibitem
876 editor empty$
877 { organization empty$
878 { "" }
879 { organization output
880 stupid.colon }
881 if$
882 }
883 { format.editors output.nonnull
884 stupid.colon
885 }
886 if$
887 format.btitle "title" output.check
888 new.block
889 crossref missing$
890 { format.in.ed.booktitle "booktitle" output.check
891 new.sentence
892 format.bvolume output
893 format.number.series output
894 address empty$
895 { organization publisher new.sentence.checkb
896 organization empty$
897 'skip$
898 { insert.comma }
899 if$
900 organization output
901 publisher empty$
902 'skip$
903 { insert.comma }
904 if$
905 publisher output
906 format.date parens output
907 }
908 { insert.comma
909 address output.nonnull
910 organization empty$
911 'skip$
912 { insert.comma }
913 if$
914 organization output
915 publisher empty$
916 'skip$
917 { insert.comma }
918 if$
919 publisher output
920 format.date parens output
921 }
922 if$
923 }
924 { format.incoll.inproc.crossref output.nonnull
925 }
926 if$
927 and.the.note
928 fin.entry
929 }
930
931 FUNCTION {techreport}
932 { output.bibitem
933 format.authors "author" output.check
934 stupid.colon
935 format.title "title" output.check
936 new.block
937 format.tr.number output.nonnull
938 institution empty$
939 'skip$
940 { insert.comma }
941 if$
942 institution "institution" output.check
943 address empty$
944 'skip$
945 { insert.comma }
946 if$
947 address output
948 format.date parens output
949 and.the.note
950 fin.entry
951 }
952
953 FUNCTION {unpublished}
954 { output.bibitem
955 format.authors "author" output.check
956 stupid.colon
957 format.title "title" output.check
958 new.block
959 note "note" output.check
960 format.date parens output
961 fin.entry
962 }
963
964 FUNCTION {default.type} { misc }
965
966 MACRO {jan} {"January"}
967
968 MACRO {feb} {"February"}
969
970 MACRO {mar} {"March"}
971
972 MACRO {apr} {"April"}
973
974 MACRO {may} {"May"}
975
976 MACRO {jun} {"June"}
977
978 MACRO {jul} {"July"}
979
980 MACRO {aug} {"August"}
981
982 MACRO {sep} {"September"}
983
984 MACRO {oct} {"October"}
985
986 MACRO {nov} {"November"}
987
988 MACRO {dec} {"December"}
989
990 MACRO {acmcs} {"ACM Computing Surveys"}
991
992 MACRO {acta} {"Acta Informatica"}
993
994 MACRO {cacm} {"Communications of the ACM"}
995
996 MACRO {ibmjrd} {"IBM Journal of Research and Development"}
997
998 MACRO {ibmsj} {"IBM Systems Journal"}
999
1000 MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
1001
1002 MACRO {ieeetc} {"IEEE Transactions on Computers"}
1003
1004 MACRO {ieeetcad}
1005 {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
1006
1007 MACRO {ipl} {"Information Processing Letters"}
1008
1009 MACRO {jacm} {"Journal of the ACM"}
1010
1011 MACRO {jcss} {"Journal of Computer and System Sciences"}
1012
1013 MACRO {scp} {"Science of Computer Programming"}
1014
1015 MACRO {sicomp} {"SIAM Journal on Computing"}
1016
1017 MACRO {tocs} {"ACM Transactions on Computer Systems"}
1018
1019 MACRO {tods} {"ACM Transactions on Database Systems"}
1020
1021 MACRO {tog} {"ACM Transactions on Graphics"}
1022
1023 MACRO {toms} {"ACM Transactions on Mathematical Software"}
1024
1025 MACRO {toois} {"ACM Transactions on Office Information Systems"}
1026
1027 MACRO {toplas} {"ACM Transactions on Programming Languages and Systems"}
1028
1029 MACRO {tcs} {"Theoretical Computer Science"}
1030
1031 READ
1032
1033 STRINGS { longest.label }
1034
1035 INTEGERS { number.label longest.label.width }
1036
1037 FUNCTION {initialize.longest.label}
1038 { "" 'longest.label :=
1039 #1 'number.label :=
1040 #0 'longest.label.width :=
1041 }
1042
1043 FUNCTION {longest.label.pass}
1044 { number.label int.to.str$ 'label :=
1045 number.label #1 + 'number.label :=
1046 label width$ longest.label.width >
1047 { label 'longest.label :=
1048 label width$ 'longest.label.width :=
1049 }
1050 'skip$
1051 if$
1052 }
1053
1054 EXECUTE {initialize.longest.label}
1055
1056 ITERATE {longest.label.pass}
1057
1058 FUNCTION {begin.bib}
1059 { preamble$ empty$
1060 'skip$
1061 { preamble$ write$ newline$ }
1062 if$
1063 "\begin{thebibliography}{" longest.label * "}" * write$ newline$
1064 }
1065
1066 EXECUTE {begin.bib}
1067
1068 EXECUTE {init.state.consts}
1069
1070 ITERATE {call.type$}
1071
1072 FUNCTION {end.bib}
1073 { newline$
1074 "\end{thebibliography}" write$ newline$
1075 }
1076
1077 EXECUTE {end.bib}
1078
1079
1080