ViewVC Help
View File | Revision Log | Show Annotations | View Changeset | Root Listing
root/group/trunk/matt_papers/canidacy_talk/jureco.bst
Revision: 62
Committed: Tue Aug 6 22:06:13 2002 UTC (22 years, 1 month ago) by mmeineke
File size: 56230 byte(s)
Log Message:

added a crapload of crap that may or may norbe neccassary. Time will tell. Also, got footnote references working.

File Contents

# User Rev Content
1 mmeineke 62 %%
2     %% This is file `jureco.bst',
3     %% generated with the docstrip utility.
4     %%
5     %% The original source files were:
6     %%
7     %% jurabib.dtx (with options: `jurecobst')
8     %% ----------------------------------------
9     %% BibTeX style for use with the jurabib package version v0.52n
10     %% Copyright (C) 1999, 2000, 2001, 2002 Jens Berger
11     %% See jurabib.ins for the copyright details.
12     %%
13     ENTRY{
14     address
15     author
16     booktitle
17     chapter
18     edition
19     editor
20     howpublished
21     institution
22     isbn
23     issn
24     journal
25     key
26     language
27     month
28     note
29     number
30     organization
31     pages
32     publisher
33     school
34     series
35     title
36     type
37     volume
38     year
39     %%
40     url
41     urldate
42     volumetitle
43     dissyear
44     howcited
45     juratitle
46     juraauthor
47     shorttitle
48     shortauthor
49     ssedition
50     titleaddon
51     booktitleaddon
52     editortype
53     sortkey
54     annote
55     gender
56     translator
57     flanguage
58     oyear
59     oaddress
60     opublisher
61     updated
62     totalpages
63     founder
64     }
65     { repeat-authors repeat-titles }
66     { label dummy.label extra.label sort.label current-authors
67     }
68    
69     INTEGERS { output.state before.all mid.sentence after.sentence after.block }
70    
71     INTEGERS { colon.after period.dash }
72    
73     FUNCTION {init.state.consts}
74     { #0 'before.all :=
75     #1 'mid.sentence :=
76     #2 'after.sentence :=
77     #3 'after.block :=
78     #4 'colon.after :=
79     #5 'period.dash :=
80     }
81    
82     STRINGS { s t u v w x }
83    
84     FUNCTION {output.nonnull}
85     { 's :=
86     output.state after.block =
87     { write$ }
88     { output.state before.all =
89     { write$ }
90     { output.state colon.after =
91     { "" * write$ }
92     { output.state period.dash =
93     { ", " * write$ }
94     { output.state mid.sentence =
95     { " " * write$ }
96     { write$ }
97     if$
98     }
99     if$
100     }
101     if$
102     }
103     if$
104     after.block 'output.state :=
105     }
106     if$
107     s
108     }
109    
110     FUNCTION {output}
111     { duplicate$ empty$
112     'pop$
113     'output.nonnull
114     if$
115     }
116    
117     FUNCTION {output.check}
118     { 't :=
119     duplicate$ empty$
120     { pop$ "Empty " t * " in " * cite$ * warning$ }
121     'output.nonnull
122     if$
123     }
124    
125     FUNCTION {not}
126     { { #0 }
127     { #1 }
128     if$
129     }
130    
131     FUNCTION {and}
132     { 'skip$
133     { pop$ #0 }
134     if$
135     }
136    
137     FUNCTION {or}
138     { { pop$ #1 }
139     'skip$
140     if$
141     }
142    
143     FUNCTION {is.num}
144     { chr.to.int$
145     duplicate$ "0" chr.to.int$ < not
146     swap$ "9" chr.to.int$ > not and
147     }
148    
149     FUNCTION {extract.num}
150     { duplicate$ 't :=
151     "" 's :=
152     { t empty$ not }
153     { t #1 #1 substring$
154     t #2 global.max$ substring$ 't :=
155     duplicate$ is.num
156     { s swap$ * 's := }
157     { pop$ "" 't := }
158     if$
159     }
160     while$
161     s empty$
162     'skip$
163     { pop$ s }
164     if$
165     }
166    
167     FUNCTION {convert.edition.superscript}
168     { edition extract.num "l" change.case$ 's :=
169     s "first" = s "1" = or s "erste" = or
170     { "1" 't := }
171     { s "second" = s "2" = or s "zweite" = or
172     { "2" 't := }
173     { s "third" = s "3" = or s "dritte" = or
174     { "3" 't := }
175     { s "fourth" = s "4" = or s "vierte" = or
176     { "4" 't := }
177     { s "fifth" = s "5" = or s "fuenfte" = or
178     { "5" 't := }
179     { s "sixth" = s "6" = or s "sechste" = or
180     { "6" 't := }
181     { s "seventh" = s "7" = or s "siebte" = or s "siebente" = or
182     { "7" 't := }
183     { s "eighth" = s "8" = or s "achte" = or
184     { "8" 't := }
185     { s "nineth" = s "9" = or s "neunte" = or
186     { "9" 't := }
187     { s #1 #1 substring$ is.num
188     { s "" * 't := }
189     { edition 't := }
190     if$
191     }
192     if$
193     }
194     if$
195     }
196     if$
197     }
198     if$
199     }
200     if$
201     }
202     if$
203     }
204     if$
205     }
206     if$
207     }
208     if$
209     t
210     }
211    
212     FUNCTION {n.dashify}
213     { 't :=
214     ""
215     { t empty$ not }
216     { t #1 #1 substring$ "-" =
217     { t #1 #2 substring$ "--" = not
218     { "--" * t #2 global.max$ substring$ 't := }
219     { { t #1 #1 substring$ "-" = }
220     { "-" * t #2 global.max$ substring$ 't := }
221     while$
222     }
223     if$
224     }
225     { t #1 #1 substring$ * t #2 global.max$ substring$ 't := }
226     if$
227     }
228     while$
229     }
230    
231     FUNCTION {output.bibitem.fst}
232     { newline$
233     "\bibitem[{" write$
234     shortauthor empty$
235     { juraauthor empty$
236     { author empty$
237     { editor empty$
238     { organization empty$
239     { "empty" write$ }
240     { organization write$ }
241     if$
242     }
243     { label write$ }
244     if$
245     }
246     { label write$ }
247     if$
248     }
249     { juraauthor write$ }
250     if$
251     }
252     { shortauthor write$ }
253     if$
254     "}%" write$
255     sortkey empty$
256     'skip$
257     { newline$ "% SORTKEY: [" sortkey * "]" * write$ }
258     if$
259     newline$
260     shorttitle empty$
261     { juratitle empty$
262     { journal empty$
263     { " {}%" write$ }
264     { " {" journal * "}%" * write$ }
265     if$
266     }
267     { " {" juratitle * "}%" * write$ }
268     if$
269     }
270     { " {" shorttitle * "}%" * write$ }
271     if$
272     newline$
273     repeat-authors
274     { " {{1}" write$ }
275     { " {{0}" write$ }
276     if$
277     howcited empty$
278     { "{}" write$ }
279     { "{" howcited * "}" * write$ }
280     if$
281     type$ empty$
282     { "{}" write$ }
283     { "{" type$ * "}" * write$ }
284     if$
285     year empty$
286     { "{}" write$ }
287     { "{" year * write$
288     extra.label "" =
289     'skip$
290     { "\el {" write$ extra.label write$ "}" write$ }
291     if$
292     "}" write$
293     }
294     if$
295     edition empty$
296     { "{}" write$ }
297     { "{" convert.edition.superscript extract.num * "}" * write$ }
298     if$
299     ssedition empty$
300     { "{}" write$ }
301     { "{" ssedition * "}" * write$ }
302     if$
303     language empty$
304     { "{}" write$ }
305     { "{" language * "}" * write$ }
306     if$
307     pages empty$
308     { "{}%" write$ }
309     { "{" write$ pages n.dashify write$ "}%" write$ }
310     if$
311     }
312    
313     FUNCTION {output.bibitem.snd}
314     { newline$
315     publisher empty$
316     { address empty$
317     { " {" write$ }
318     { " {" write$ address write$ }
319     if$
320     }
321     { address empty$
322     { " {" write$ }
323     { " {" write$ address write$ "\bpubaddr {} " write$ publisher write$ }
324     if$
325     }
326     if$
327     "}}%" write$ newline$
328     " {" write$
329     title empty$
330     { "{}%" write$ newline$ }
331     { "{" title * "}%" * write$ newline$ }
332     if$
333     gender empty$
334     { " {}" write$ }
335     { " {" gender * "}" * write$ }
336     if$
337     "{}{}{}{}{}{}{}}%" write$ newline$
338     " ]{" write$
339     cite$ write$
340     "}" write$
341     url empty$
342     'skip$
343     { newline$ " \jburldef {" write$ cite$ write$ "}{" write$ url write$ "}%" write$ }
344     if$
345     newline$
346     " \jbbibargs {" write$
347     ""
348     before.all 'output.state :=
349     }
350    
351     FUNCTION {output.bibitem}
352     { output.bibitem.fst
353     output.bibitem.snd
354     }
355    
356     FUNCTION {format.note}
357     { note empty$
358     'skip$
359     { output.state before.all =
360     {" \jbnote {}{" * note * "} " * }
361     {" \jbnote {1}{" * note * "} " * }
362     if$
363     }
364     if$
365     }
366    
367     FUNCTION {format.endnote}
368     { note empty$
369     { "" }
370     { " \jbendnote {" note * "}" * }
371     if$
372     }
373    
374     FUNCTION {fin.entry.endnote}
375     { " \jbdoitem" * write$
376     annote missing$
377     { " \bibAnnoteFile {" cite$ * "}" * write$ newline$ }
378     { " \bibAnnote {" annote * "}" * write$ newline$ }
379     if$
380     }
381    
382     FUNCTION {format.juradiss.book}
383     { dissyear empty$
384     { "" }
385     { type empty$
386     { school empty$
387     { "No university in " cite$ * warning$
388     " (\alsothesisname {} \jurthesisname\bibbdsep {} " dissyear * ")" * }
389     { " (\alsothesisname {} \jurthesisname, " school * "\bibbdsep {} " dissyear * ")" * * }
390     if$
391     }
392     { school empty$
393     { "No university in " cite$ * warning$
394     " (\alsothesisname {} " type * ", " * "\bibbdsep {} " dissyear * ")" * * }
395     { " (\alsothesisname {} " type * ", " * school * "\bibbdsep {} " dissyear * ")" * * }
396     if$
397     }
398     if$
399     }
400     if$
401     }
402    
403     FUNCTION {format.thesis}
404     { year empty$
405     { school empty$
406     { "No universtiy in " cite$ * warning$ }
407     { "There's a university, but no year in " cite$ * warning$ }
408     if$
409     ""
410     }
411     { type empty$
412     { school empty$
413     { "No university in " cite$ * warning$
414     type$ "mastersthesis" =
415     { "\apyformat {\mastersthesisname}" * }
416     { type$ "jurthesis" =
417     { "\apyformat {\jurthesisname}" * }
418     { "\apyformat {\phdthesisname}" * }
419     if$
420     }
421     if$
422     }
423     { type$ "mastersthesis" =
424     { "\mastersthesisname, \apyformat {" school * "}" * }
425     { type$ "jurthesis" =
426     { "\jurthesisname, \apyformat {" school * "}" * }
427     { "\phdthesisname, \apyformat {" school * "}" * }
428     if$
429     }
430     if$
431     }
432     if$
433     }
434     { school empty$
435     { "No university in " cite$ * warning$ type }
436     { type " \apyformat {" * school * "}" * }
437     if$
438     }
439     if$
440     }
441     if$
442     }
443    
444     FUNCTION {set.comma.pages.check}
445     { year empty$
446     'skip$
447     { pages empty$
448     { url empty$
449     'skip$
450     { ", " * }
451     if$
452     }
453     { ", " * }
454     if$
455     }
456     if$
457     }
458    
459     FUNCTION {set.period.dash}
460     { output.state before.all =
461     'skip$
462     { period.dash 'output.state := }
463     if$
464     }
465    
466     FUNCTION {set.period.dash.check}
467     { empty$
468     'skip$
469     'set.period.dash
470     if$
471     }
472    
473     FUNCTION {new.sentence}
474     { output.state before.all =
475     'skip$
476     { after.sentence 'output.state := }
477     if$
478     }
479    
480     FUNCTION {part.of.sentence}
481     { output.state before.all =
482     'skip$
483     { mid.sentence 'output.state := }
484     if$
485     }
486    
487     FUNCTION {new.sentence.checka}
488     { empty$
489     'skip$
490     'new.sentence
491     if$
492     }
493    
494     FUNCTION {field.or.null}
495     { duplicate$ empty$
496     { pop$ "" }
497     'skip$
498     if$
499     }
500    
501    
502     FUNCTION {get.final.nonrightbrace.char}
503     { { duplicate$
504     #-1 #1 substring$
505     duplicate$
506     "}" =
507     }
508     { pop$
509     #-2 global.max$ substring$
510     }
511     while$
512     swap$ pop$
513     }
514    
515    
516     FUNCTION {check.punct.instead.of.add.period}
517     { duplicate$
518     get.final.nonrightbrace.char
519     duplicate$ "." = swap$
520     duplicate$ "!" = swap$
521     "?" = or or
522     { "} " * }
523     { "}\bibatsep\ " * }
524     if$
525     }
526    
527    
528     FUNCTION {check.punct.instead.of.add.period.art}
529     { duplicate$
530     get.final.nonrightbrace.char
531     duplicate$ "." = swap$
532     duplicate$ "!" = swap$
533     "?" = or or
534     { "} " * }
535     { volume empty$
536     { pages empty$
537     { "}\ajtsep\ " * }
538     { crossref missing$
539     { month empty$
540     { "}\ajtsep\ " * }
541     { "}\ajtsep " * }
542     if$
543     }
544     { "}\ajtsep " * }
545     if$
546     }
547     if$
548     }
549     { "}\ajtsep\ " * }
550     if$
551     }
552     if$
553     }
554    
555     FUNCTION {emphasize}
556     { duplicate$ empty$
557     { pop$ "" }
558     { "\bibtfont {" swap$ check.punct.instead.of.add.period * }
559     if$
560     }
561    
562     FUNCTION {journaltitlemarkup}
563     { duplicate$ empty$
564     { pop$ "" }
565     { "\bibJTsep \bibjtfont {" swap$ check.punct.instead.of.add.period.art * }
566     if$
567     }
568    
569     FUNCTION {incollbooktitlemarkup}
570     { duplicate$ empty$
571     { pop$ "" }
572     { "\bibbtfont {" swap$ check.punct.instead.of.add.period * }
573     if$
574     }
575    
576     INTEGERS { nameptr namesleft numnames }
577    
578     FUNCTION { lastnamemarkup }
579     { duplicate$ empty$
580     { pop$ "" }
581     { "\bibnf {" swap$ * "}" * }
582     if$
583     }
584    
585     FUNCTION { editorlastnamemarkup }
586     { duplicate$ empty$
587     { pop$ "" }
588     { author empty$
589     { "\biblenf {" swap$ * "}" * } % lonely editor(s)!
590     { "\bibenf {" swap$ * "}" * }
591     if$
592     }
593     if$
594     }
595    
596     FUNCTION { othermarkup }
597     { duplicate$ empty$
598     { pop$ " {}" }
599     { " {" swap$ * "}" * }
600     if$
601     }
602    
603     FUNCTION {article.in.journal}
604     { duplicate$ empty$
605     { pop$ "" }
606     { author missing$
607     { title missing$
608     'skip$
609     { journaltitlemarkup "" swap$ * }
610     if$
611     }
612     { journaltitlemarkup "" swap$ * }
613     if$
614     }
615     if$
616     }
617    
618     FUNCTION {format.names} % NEW v0.5
619     { 's :=
620     #1 'nameptr :=
621     s num.names$ 'numnames :=
622     numnames 'namesleft :=
623     { namesleft #0 > }
624     { s nameptr "{ll}" format.name$ 't := t lastnamemarkup 't :=
625     s nameptr "{ff}" format.name$ othermarkup 'u :=
626     s nameptr "{f.}" format.name$ othermarkup 'v :=
627     s nameptr "{vv}" format.name$ othermarkup 'w :=
628     s nameptr "{jj}" format.name$ othermarkup 'x :=
629     t u * v * w * x * 't :=
630     nameptr #1 >
631     { namesleft #1 >
632     { numnames #3 >
633     { "" * }
634     { numnames #3 <
635     { "\Bibbtasep " * t * } % between (exactly) two authors
636     { "\Bibbfsasep " * t * } % between first and second author (if more than two)
637     if$
638     }
639     if$
640     }
641     { t "\bibnf {others} {} {} {} {}" =
642     t "\bibnf {others} {} {} {} {} \edfont {\editorsname}" = or
643     numnames #3 > or
644     { "\bibIMfont {\Bibetal}" * }
645     { numnames #3 <
646     { "\Bibbtasep " * t * } % between (exactly) two authors
647     { "\Bibbstasep " * t * } % between second and third author
648     if$
649     }
650     if$
651     }
652     if$
653     }
654     't
655     if$
656     nameptr #1 + 'nameptr :=
657     namesleft #1 - 'namesleft :=
658     }
659     while$
660     }
661    
662     FUNCTION {format.editor.names} % NEW v0.5
663     { 's :=
664     #1 'nameptr :=
665     s num.names$ 'numnames :=
666     numnames 'namesleft :=
667     { namesleft #0 > }
668     { s nameptr "{ll}" format.name$ 't := t editorlastnamemarkup 't :=
669     s nameptr "{ff}" format.name$ othermarkup 'u :=
670     s nameptr "{f.}" format.name$ othermarkup 'v :=
671     s nameptr "{vv}" format.name$ othermarkup 'w :=
672     s nameptr "{jj}" format.name$ othermarkup 'x :=
673     t u * v * w * x * 't :=
674     nameptr #1 >
675     { namesleft #1 >
676     { numnames #3 >
677     { "" * }
678     { numnames #3 <
679     { "\Bibbtesep " * t * } % between (exactly) two editors
680     { "\Bibbfsesep " * t * } % between first and second editor (if more than two)
681     if$
682     }
683     if$
684     }
685     { t "\bibenf {others} {} {} {} {}" =
686     t "\biblenf {others} {} {} {} {}" = or
687     t "\bibenf {others} {} {} {} {} \edfont {\editorsname}" = or
688     t "\biblenf {others} {} {} {} {} \edfont {\editorsname}" = or
689     numnames #3 > or
690     { "\bibIMfont {\Bibetal}" * }
691     { numnames #3 <
692     { "\Bibbtesep " * t * } % between (exactly) two editors
693     { "\Bibbstesep " * t * } % between second and third editor
694     if$
695     }
696     if$
697     }
698     if$
699     }
700     't
701     if$
702     nameptr #1 + 'nameptr :=
703     namesleft #1 - 'namesleft :=
704     }
705     while$
706     }
707    
708     FUNCTION {format.name.sig}
709     { 's :=
710     #1 'nameptr :=
711     s num.names$ 'numnames :=
712     numnames 'namesleft :=
713     { namesleft #0 > }
714     { s nameptr "{ff}{ vv}{ ll}{ jj}" format.name$ 't :=
715     nameptr #1 >
716     { namesleft #1 >
717     { "" * t * }
718     { t "others" =
719     { " et al." * }
720     { "" * t * }
721     if$
722     }
723     if$
724     }
725     't
726     if$
727     nameptr #1 + 'nameptr :=
728     namesleft #1 - 'namesleft :=
729     }
730     while$
731     }
732    
733    
734     FUNCTION {format.authors}
735     { author empty$
736     { "" }
737     { author format.names }
738     if$
739     }
740    
741     FUNCTION {format.founders}
742     { founder empty$
743     'skip$
744     { author empty$
745     'skip$
746     { " in: " * }
747     if$
748     founder format.names "\foundername" * *
749     editor empty$
750     'skip$
751     { author empty$
752     { "\afterfoundersep {}" * }
753     'skip$
754     if$
755     }
756     if$
757     }
758     if$
759     }
760    
761     FUNCTION {format.editors}
762     { editor empty$
763     { "" }
764     { author empty$
765     { editor format.editor.names
766     editortype empty$
767     { editor num.names$ #1 >
768     { "\fsted {\editorsname}" * }
769     { "\fsted {\editorname}" * }
770     if$
771     }
772     { "\fsted {(" editortype * ")}" * * }
773     if$
774     }
775     { founder empty$
776     { "\bibfnfont {;} " * }
777     { type$ "commented" =
778     { "\afterfoundersep {}" * }
779     { "\bibfnfont {;} " * }
780     if$
781     }
782     if$
783     editor format.editor.names *
784     editortype empty$
785     { editor num.names$ #1 >
786     { " \edfont {\editorsname}" * }
787     { " \edfont {\editorname}" * }
788     if$
789     }
790     { " \edfont {(" editortype * ")}" * * }
791     if$
792     }
793     if$
794     }
795     if$
796     }
797    
798     FUNCTION {format.snd.editors}
799     { editor empty$
800     { "" * }
801     { author empty$
802     { editortype empty$
803     { editor num.names$ #1 >
804     { "\snded {\sndeditorsname}" * }
805     { "\snded {\sndeditorname}" * }
806     if$
807     }
808     { "\snded {(" editortype * ")}" * * }
809     if$
810     }
811     'skip$
812     if$
813     }
814     if$
815     }
816    
817    
818     FUNCTION { set.after.author.sep }
819     { author empty$ editor empty$ and
820     { "}{jureco} {} {" "" * }
821     { year empty$
822     'skip$
823     { year missing$
824     { "\bibYear {}" * }
825     { "\bibYear {" * year * extra.label * "}" * }
826     if$
827     }
828     if$
829     "}{jureco} {} {" "" *
830     }
831     if$
832     }
833    
834     FUNCTION {format.names.info}
835     { 's :=
836     #1 'nameptr :=
837     s num.names$ 'numnames :=
838     numnames 'namesleft :=
839     { namesleft #0 > }
840     { s nameptr "{ff }{vv }{ll}" format.name$ 't :=
841     nameptr #1 >
842     { namesleft #1 >
843     { " " * t * }
844     { t "others" =
845     { " et al." * }
846     { " " * t * }
847     if$
848     }
849     if$
850     }
851     't
852     if$
853     nameptr #1 + 'nameptr :=
854     namesleft #1 - 'namesleft :=
855     }
856     while$
857     }
858    
859     FUNCTION { format.howcited }
860     { "} {\bibhowcited}" format.endnote * }
861    
862     FUNCTION { format.howcited.comment }
863     { edition empty$
864     { "} {\bibcommenthowcited}" format.endnote * }
865     { "} {\bibcommenthowcited}" format.endnote * *
866     author empty$ editor empty$ not and
867     { " \jbauthorinfo {" editor format.names.info " " title * * * "}{" cite$ "}" * * * }
868     { author empty$ shortauthor empty$ not and
869     { " \jbauthorinfo {" shortauthor format.names.info " " title * * * "}{" cite$ "}" * * * }
870     { " \jbauthorinfo {" author format.names.info " " title * * * "}{" cite$ "}" * * * }
871     if$
872     }
873     if$
874     }
875     if$
876     }
877    
878     FUNCTION { format.howcited.artperiod }
879     { "} {\bibartperiodhowcited}" format.endnote * }
880    
881     FUNCTION {format.ed.incoll}
882     { editor empty$
883     { "" }
884     { editor format.editor.names
885     editortype empty$
886     { editor num.names$ #1 >
887     { " \edfont {\editorsname}" * }
888     { " \edfont {\editorname}" * }
889     if$
890     }
891     { " \edfont {(" editortype * ")}" * * }
892     if$
893     }
894     if$
895     }
896    
897     FUNCTION {format.proceed.organization}
898     { organization empty$
899     { "" }
900     { organization " \organizationname {}" * }
901     if$
902     }
903    
904     FUNCTION {format.titleaddon}
905     { title empty$
906     { "" }
907     { titleaddon empty$
908     { "" }
909     { titleaddon "\bibatsep\ " * }
910     if$
911     }
912     if$
913     }
914    
915     FUNCTION {format.title}
916     { title empty$
917     { "" }
918     { "\bibtfont {" title check.punct.instead.of.add.period * format.titleaddon * }
919     if$
920     }
921    
922     FUNCTION {format.artperiodincoll.title}
923     { title empty$
924     { "" }
925     { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * }
926     if$
927     }
928    
929     FUNCTION {format.volumetitle}
930     { volumetitle empty$
931     { "" }
932     { volume empty$
933     { "There's a volumetitle but no volume in " cite$ * warning$ volumetitle ", " * }
934     { volumetitle ", " * }
935     if$
936     }
937     if$
938     }
939    
940     FUNCTION {add.extra.label}
941     { extra.label "" =
942     'skip$
943     { "\bibel {" extra.label * "}" * * }
944     if$
945     }
946    
947     FUNCTION {format.date}
948     { year empty$
949     { month empty$
950     { "" }
951     { "There's a month but no year in " cite$ * warning$ month }
952     if$
953     }
954     { month empty$
955     { edition empty$
956     'skip$
957     { "\jbssedbd {" convert.edition.superscript extract.num * "}" * * }
958     if$
959     year
960     add.extra.label
961     }
962     { month " " *
963     edition empty$
964     'skip$
965     { "\jbssedbd {" convert.edition.superscript extract.num * "}" * * }
966     if$
967     year *
968     add.extra.label
969     }
970     if$
971     }
972     if$
973     }
974    
975     FUNCTION {format.date.old}
976     { year empty$
977     { month empty$
978     { "" }
979     { "There's a month but no year in " cite$ * warning$ month }
980     if$
981     }
982     { month empty$
983     'year
984     { month " " * year * }
985     if$
986     }
987     if$
988     }
989    
990     FUNCTION {format.update}
991     { updated missing$ not
992     { "\updatesep {} \updatename {} " * updated * }
993     'skip$
994     if$
995     }
996    
997     FUNCTION {oaddress.opublisher.oyear.format}
998     { type$ "book" = type$ "inbook" = type$ "incollection" = or or
999     { oyear empty$
1000     { opublisher empty$
1001     { oaddress empty$
1002     'skip$
1003     { oaddress "\osep {} " * * }
1004     if$
1005     }
1006     { oaddress empty$
1007     { opublisher "\osep {} " * * }
1008     { oaddress "\bpubaddr {} " * opublisher "\osep {} " * * * }
1009     if$
1010     }
1011     if$
1012     }
1013     { year empty$
1014     { "oyear without year in " cite$ * warning$ }
1015     'skip$
1016     if$
1017     opublisher empty$
1018     { oaddress empty$
1019     { oyear * "\osep {} \reprintname {}, " * }
1020     { oaddress "\bibbdsep {} " * oyear "\osep {} " * * * }
1021     if$
1022     }
1023     { oaddress empty$
1024     { opublisher * "\bibbdsep {} " * oyear "\osep {} " * * }
1025     { oaddress "\bpubaddr {} " * opublisher "\bibbdsep {} " * * oyear "\osep {} " * * * }
1026     if$
1027     }
1028     if$
1029     }
1030     if$
1031     }
1032     'skip$
1033     if$
1034     }
1035    
1036     FUNCTION {make.translators}
1037     { before.all 'output.state :=
1038     translator empty$
1039     { flanguage empty$
1040     { "" }
1041     { "\translator {}{" flanguage "l" change.case$ * "}" *
1042     type$ "incollection" = not
1043     type$ "article" = not
1044     and
1045     { "{1} " * }
1046     { type$ "incollection" =
1047     { booktitle empty$
1048     { "{} " * }
1049     { "{1} " * }
1050     if$
1051     }
1052     { type$ "article" =
1053     { "{1}" * }
1054     { series empty$
1055     { "{} " * }
1056     { "{1} " * }
1057     if$
1058     }
1059     if$
1060     }
1061     if$
1062     }
1063     if$
1064     }
1065     if$
1066     }
1067     { "\translator {" translator * "}" *
1068     flanguage empty$
1069     { "{}" * }
1070     { "{" * flanguage "l" change.case$ * "}" * }
1071     if$
1072     type$ "incollection" = not
1073     type$ "article" = not
1074     and
1075     { "{1} " * }
1076     {
1077     type$ "incollection" =
1078     { booktitle empty$
1079     { "{} " * }
1080     { "{1} " * }
1081     if$
1082     }
1083     { type$ "article" =
1084     { "{1} " * }
1085     { series empty$
1086     { "{} " * }
1087     { "{1} " * }
1088     if$
1089     }
1090     if$
1091     }
1092     if$
1093     }
1094     if$
1095     }
1096     if$
1097     before.all 'output.state :=
1098     }
1099    
1100     FUNCTION {format.address.publisher.year}
1101     { publisher empty$
1102     { address empty$
1103     { institution empty$
1104     { "" }
1105     { " \apyformat {" oaddress.opublisher.oyear.format * institution "}" * }
1106     if$
1107     }
1108     { institution empty$
1109     { " \apyformat {" oaddress.opublisher.oyear.format * address "}" * }
1110     { " \apyformat {" oaddress.opublisher.oyear.format * address "\bpubaddr {} " * institution "}" * * }
1111     if$
1112     }
1113     if$
1114     }
1115     { address empty$
1116     { institution empty$
1117     { "There's only a publisher (no address) in " cite$ * warning$
1118     " \apyformat {" oaddress.opublisher.oyear.format * publisher "}" * }
1119     { " \apyformat {" oaddress.opublisher.oyear.format * publisher ", " * institution "}" * * }
1120     if$
1121     }
1122     { institution empty$
1123     { " \apyformat {" oaddress.opublisher.oyear.format * address "\bpubaddr {} " * publisher "}" * * }
1124     { " \apyformat {" oaddress.opublisher.oyear.format * address "\bpubaddr {} " * publisher ", " * institution "}" * * * }
1125     if$
1126     }
1127     if$
1128     }
1129     if$
1130     }
1131    
1132    
1133     FUNCTION {format.howpublished.address.year}
1134     { howpublished empty$
1135     { address empty$
1136     { "No address in " cite$ * warning$ }
1137     { " \apyformat {" oaddress.opublisher.oyear.format address * "}" * }
1138     if$
1139     }
1140     { address empty$
1141     { "There's only a howpublished (no address) in " cite$ * warning$ " \apyformat {" oaddress.opublisher.oyear.format howpublished * "}" * }
1142     { " \apyformat {" oaddress.opublisher.oyear.format address * "\bpubaddr {} " * howpublished "}" * * }
1143     if$
1144     }
1145     if$
1146     }
1147    
1148     FUNCTION {tie.or.space.connect}
1149     { duplicate$ text.length$ #4 <
1150     { "~" }
1151     { " " }
1152     if$
1153     swap$ * *
1154     }
1155    
1156     FUNCTION {bibvol.tie.or.space.connect}
1157     { duplicate$ text.length$ #4 <
1158     { "~" }
1159     { "{} " }
1160     if$
1161     swap$ * *
1162     }
1163    
1164     FUNCTION {format.btitle}{ title emphasize format.titleaddon * }
1165    
1166     FUNCTION {format.btitle.vol}
1167     { number empty$
1168     { series empty$
1169     { volume empty$
1170     { title emphasize format.titleaddon * }
1171     {
1172     title emphasize format.titleaddon * " \volumeformat {" volume * "} " * *
1173     }
1174     if$
1175     }
1176     { volume empty$
1177     { title emphasize format.titleaddon * }
1178     {
1179     title emphasize format.titleaddon * "\volumeformat {" volume * "} " * * series "\bibatsep\ " * *
1180     }
1181    
1182     if$
1183     }
1184     if$
1185     }
1186     { title emphasize format.titleaddon * }
1187     if$
1188     }
1189    
1190     FUNCTION {format.btitle.vol.inbook}
1191     { number empty$
1192     { series empty$
1193     { volume empty$
1194     { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * }
1195     { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon *
1196     " \volumeformat {" volume * "} " * *
1197     }
1198     if$
1199     }
1200     { volume empty$
1201     { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * }
1202     { series emphasize
1203     "\volumeformat {" volume * "} " * *
1204     "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * * }
1205     if$
1206     }
1207     if$
1208     }
1209     { "\bibapifont {" title check.punct.instead.of.add.period * format.titleaddon * }
1210     if$
1211     }
1212    
1213     FUNCTION {format.url}
1214     { url empty$
1215     { "" }
1216     {
1217     author empty$ title empty$ and
1218     'skip$
1219     { " " * }
1220     if$
1221     urldate empty$
1222     {"\jburluse {" cite$ * "}" * }
1223     {"\jburluse {" cite$ * "}\bibbudcsep {}\urldatecomment " * urldate * }
1224     if$
1225     }
1226     if$
1227     }
1228    
1229     FUNCTION {format.naked.url}
1230     { url empty$
1231     { "" }
1232     { urldate empty$
1233     { title empty$
1234     'skip$
1235     { title emphasize * }
1236     if$
1237     "\jburluse {" cite$ * "}" *
1238     }
1239     { title empty$
1240     'skip$
1241     { title emphasize * }
1242     if$
1243     "\jburluse {" cite$ * "}\bibbudcsep {}\urldatecomment " * urldate *
1244     }
1245     if$
1246     }
1247     if$
1248     }
1249    
1250     FUNCTION {format.series.number}
1251     { volume empty$
1252     { number empty$
1253     { series empty$
1254     { "" }
1255     { " \numberandseries {}{" series * "}" * }
1256     if$
1257     }
1258     { series empty$
1259     { " \numberandseries {" number * "}{}" * "There's a number but no series in " cite$ * warning$ }
1260     { " \numberandseries {" number * "}{" * series "}" * * }
1261     if$
1262     }
1263     if$
1264     }
1265     { series empty$
1266     { "" }
1267     { type$ "proceedings" =
1268     { " \numberandseries {}{" series * "}" * } % { " (" series * ")" * }
1269     { "" }
1270     if$
1271     }
1272     if$
1273     }
1274     if$
1275     }
1276    
1277     FUNCTION {first.ed} { "\firstedname" }
1278     FUNCTION {second.ed}{ "\secondedname" }
1279     FUNCTION {third.ed} { "\thirdedname" }
1280     FUNCTION {fourth.ed}{ "\fourthedname" }
1281     FUNCTION {fifth.ed} { "\fifthedname" }
1282     FUNCTION {th.ed} { "\thedname" }
1283    
1284     FUNCTION {convert.edition}
1285     { edition extract.num "l" change.case$ 's :=
1286     s "first" = s "1" = or
1287     { first.ed 't := }
1288     { s "second" = s "2" = or
1289     { second.ed 't := }
1290     { s "third" = s "3" = or
1291     { third.ed 't := }
1292     { s "fourth" = s "4" = or
1293     { fourth.ed 't := }
1294     { s "fifth" = s "5" = or
1295     { fifth.ed 't := }
1296     { s #1 #1 substring$ is.num
1297     { s th.ed * 't := }
1298     { edition 't := }
1299     if$
1300     }
1301     if$
1302     }
1303     if$
1304     }
1305     if$
1306     }
1307     if$
1308     }
1309     if$
1310     t
1311     }
1312    
1313     FUNCTION {format.edition}
1314     {
1315     edition empty$
1316     { "" }
1317     { "\jbedition {" * convert.edition "~\editionname {}\jbaensep} " * }% dot or not ???????
1318     if$
1319     }
1320    
1321     FUNCTION { format.isbn.issn }
1322     { isbn empty$
1323     { issn empty$
1324     { "" }
1325     { "\jbissn {" issn n.dashify tie.or.space.connect "}" * }
1326     if$
1327     }
1328     { "\jbisbn {" isbn n.dashify tie.or.space.connect "}" * }
1329     if$
1330     }
1331    
1332     FUNCTION { format.isbn.issn.old }
1333     { isbn empty$
1334     { issn empty$
1335     { "" }
1336     { ", \protect\mbox {ISSN}" issn n.dashify tie.or.space.connect }
1337     if$
1338     }
1339     { ", \protect\mbox {ISBN}" isbn n.dashify tie.or.space.connect }
1340     if$
1341     }
1342    
1343     INTEGERS { multiresult }
1344    
1345     FUNCTION {multi.page.check}
1346     { 't :=
1347     #0 'multiresult :=
1348     { multiresult not
1349     t empty$ not
1350     and
1351     }
1352     { t #1 #1 substring$
1353     duplicate$ "-" =
1354     swap$ duplicate$ "," =
1355     swap$ "+" =
1356     or or
1357     { #1 'multiresult := }
1358     { t #2 global.max$ substring$ 't := }
1359     if$
1360     }
1361     while$
1362     multiresult
1363     }
1364    
1365     FUNCTION {format.pages}
1366     { pages empty$
1367     { "" }
1368     {
1369     " \jbPages{" pages n.dashify * "}" *
1370     }
1371     if$
1372     }
1373    
1374     FUNCTION {multi.pagerange.check}
1375     { 't :=
1376     #0 'multiresult :=
1377     { multiresult not
1378     t empty$ not
1379     and
1380     }
1381     { t #1 #1 substring$
1382     duplicate$ "-" =
1383     swap$ duplicate$ "b" =
1384     swap$ "/" = or or
1385     { #1 'multiresult := }
1386     { t #2 global.max$ substring$ 't := }
1387     if$
1388     }
1389     while$
1390     multiresult
1391     }
1392    
1393     FUNCTION {check.missing.pages}
1394     { pages empty$
1395     { "Empty pages in " cite$ * warning$ }
1396     { pages multi.pagerange.check
1397     { "" * }
1398     { "There's only a starting page, no pagerange in " cite$ * warning$ }
1399     if$
1400     }
1401     if$
1402     }
1403    
1404     FUNCTION {format.pages.book}
1405     { pages empty$
1406     { "" }
1407     { " \jbpages {" pages " \bibtotalpagesname}" *}
1408     if$
1409     }
1410    
1411     FUNCTION {format.totalpages}
1412     { totalpages empty$
1413     { "" }
1414     {
1415     ", " totalpages "~\bibtotalpagesname" * *
1416     }
1417     if$
1418     }
1419    
1420     FUNCTION {format.vol.year.num.pages}
1421     { volume empty$
1422     { "" }
1423     { " \artvolumeformat {" volume * "}" * }
1424     if$
1425     number empty$
1426     'skip$
1427     { volume empty$
1428     { "" * }
1429     { ", " * }
1430     if$
1431     "\artnumberformat {" number * "}" * *
1432     }
1433     if$
1434     pages empty$
1435     'skip$
1436     { duplicate$ empty$
1437     { pop$ format.pages }
1438     { "" format.pages * * }
1439     if$
1440     }
1441     if$
1442     }
1443    
1444     FUNCTION {format.vol.bracedyear.num.pages}
1445     { volume empty$
1446     { "" }
1447     { " \pervolumeformat {" volume * "}" * }
1448     if$
1449     number empty$
1450     'skip$
1451     { volume empty$
1452     { "" * }
1453     { ", " * }
1454     if$
1455     "\pernumberformat {" number * "}" * *
1456     }
1457     if$
1458     pages empty$
1459     'skip$
1460     { duplicate$ empty$
1461     { pop$ format.pages }
1462     { "" format.pages * * }
1463     if$
1464     }
1465     if$
1466     }
1467    
1468     FUNCTION {format.vol.bracedyear.num.pages.orig}
1469     { volume "\bibvolumecomment\ " * field.or.null
1470     year empty$
1471     { "There's a volume but no year in " cite$ * warning$ }
1472     { " \peryearformat {" year * "}" * * }
1473     if$
1474     month empty$
1475     'skip$
1476     { ", " month * * }
1477     if$
1478     number empty$
1479     'skip$
1480     { ", Nr.~" number * *
1481     }
1482     if$
1483     pages empty$
1484     'skip$
1485     { duplicate$ empty$
1486     { pop$ format.pages }
1487     { "" format.pages * * }
1488     if$
1489     }
1490     if$
1491     }
1492    
1493     FUNCTION {format.chapter.pages}
1494     { chapter empty$
1495     'format.pages
1496     { type empty$
1497     { "\unskip.\,-- \bibchapterlongname" }
1498     { "\unskip.\,-- " type * }
1499     if$
1500     chapter tie.or.space.connect
1501     pages empty$
1502     'skip$
1503     { format.pages * }
1504     if$
1505     }
1506     if$
1507     }
1508    
1509     FUNCTION {format.booktitleaddon}
1510     { booktitle empty$
1511     { "" }
1512     { booktitleaddon empty$
1513     { "" }
1514     { booktitleaddon }
1515     if$
1516     }
1517     if$
1518     }
1519    
1520     FUNCTION {format.incoll.editor.booktitle}
1521     { booktitle empty$
1522     { "" }
1523     { editor empty$
1524     { volume empty$
1525     { "\incolledformat {}{}{" booktitle incollbooktitlemarkup format.booktitleaddon * * "}{}" *
1526     booktitleaddon empty$
1527     { "{} " * }
1528     { "{1} " * }
1529     if$
1530     }
1531     { "\incolledformat {}{}{" booktitle incollbooktitlemarkup format.booktitleaddon * * "}{" * volume * "}" *
1532     booktitleaddon empty$
1533     { "{} " * }
1534     { "{1} " * }
1535     if$
1536     }
1537     if$
1538     }
1539     { volume empty$
1540     { "\incolledformat {"
1541     editor empty$
1542     { "" }
1543     { editor format.editor.names "}" * *
1544     editor num.names$ #1 >
1545     { "{\edfont {\editorsname}}{" * }
1546     { editortype empty$
1547     { "{\edfont {\editorname}}{" * }
1548     { "{\edfont {(" * editortype * ")}}{" * }
1549     if$
1550     }
1551     if$
1552     }
1553     if$
1554     booktitle incollbooktitlemarkup * format.booktitleaddon * "}{}" *
1555     booktitleaddon empty$
1556     { "{} " * }
1557     { "{1} " * }
1558     if$
1559     }
1560     { "\incolledformat {" *
1561     editor empty$
1562     { "" }
1563     { editor format.editor.names "}" * *
1564     editor num.names$ #1 >
1565     { "{\edfont {\editorsname}}{" * }
1566     { editortype empty$
1567     { "{\edfont {\editorname}}{" * }
1568     { "{\edfont {(" * editortype * ")}}{" * }
1569     if$
1570     }
1571     if$
1572     }
1573     if$
1574     booktitle incollbooktitlemarkup * format.booktitleaddon * "}{" volume * "}" *
1575     booktitleaddon empty$
1576     { "{} " * }
1577     { "{1} " * }
1578     if$
1579     }
1580     if$
1581     }
1582     if$
1583     }
1584     if$
1585     }
1586    
1587     FUNCTION {format.tr.number.jur}
1588     { type empty$
1589     { number empty$
1590     { " -- \technicalreportname {} " }
1591     { "~(" number * ").\,-- \technicalreportname {} " * }
1592     if$
1593     }
1594     { number empty$
1595     { " -- " type * }
1596     { "~(" number * ").\,-- " type * " " * * }
1597     if$
1598     }
1599     if$
1600     }
1601    
1602     FUNCTION {format.article.crossref.bracedyear}
1603     { key empty$
1604     { journal empty$
1605     { "Need key or journal for " cite$ * " to crossref " * crossref * warning$ "" }
1606     { "\bibJTsep\bibjtfont {" journal * check.punct.instead.of.add.period.art * }
1607     if$
1608     volume empty$
1609     { "No volume in " cite$ * warning$ }
1610     { " \pervolumeformat {" volume * "} " * }
1611     if$
1612     pages empty$
1613     'skip$
1614     { duplicate$ empty$
1615     { pop$ format.pages }
1616     { format.pages * }
1617     if$
1618     }
1619     if$
1620     }
1621     { "" key * }
1622     if$
1623     "\ \protect\jbcrossrefchecked {" * crossref * "}\unskip" *
1624     }
1625    
1626     FUNCTION {format.article.crossref}
1627     { key empty$
1628     { journal empty$
1629     { "Need key or journal for " cite$ * " to crossref " * crossref * warning$ "" }
1630     { "\bibJTsep\bibjtfont {" journal * check.punct.instead.of.add.period.art * }
1631     if$
1632     }
1633     { "" key * }
1634     if$
1635     year empty$
1636     'skip$
1637     { year * }
1638     if$
1639     " \protect\jbcrossrefchecked {" crossref * "}" *
1640     }
1641    
1642     FUNCTION {format.book.crossref}
1643     { editor empty$
1644     editor field.or.null author field.or.null =
1645     or
1646     { key empty$
1647     { series empty$
1648     { "Need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * }
1649     { "" * }
1650     if$
1651     }
1652     { key * }
1653     if$
1654     }
1655     { "" * }
1656     if$
1657     volume empty$
1658     { "Empty volume in " cite$ * "'s crossref of " * crossref * warning$ ""
1659     " \protect\jbcrossrefchecked {" * crossref * "}\unskip" * }
1660     { " \protect\jbcrossrefchecked[" * volume * "]{" * crossref "}\unskip" * }
1661     if$
1662     }
1663    
1664     FUNCTION {format.incoll.inproc.crossref}
1665     {
1666     " \protect\jbincollcrossref {" * crossref * "}" *
1667     editor empty$
1668     { "{}" * }
1669     { "{1}" * }
1670     if$
1671     format.pages % *<== 0.5f removed too.
1672     }
1673    
1674     FUNCTION { format.editors.organization }
1675     { organization empty$
1676     'skip$
1677     { type$ "misc" =
1678     { organization }
1679     { author empty$
1680     { editor empty$
1681     { " " organization * " \organizationname {}" * }
1682     { "; " organization * " \organizationname {}" * }
1683     if$
1684     }
1685     { "; " organization * " \organizationname {}" * }
1686     if$
1687     }
1688     if$
1689     }
1690     if$
1691     }
1692    
1693     FUNCTION {article}
1694     { output.bibitem
1695     format.authors "author" output.check
1696     set.after.author.sep output
1697     format.artperiodincoll.title "title" output.check
1698     crossref missing$
1699     { journal article.in.journal output.nonnull
1700     new.sentence
1701     format.vol.year.num.pages output
1702     }
1703     { format.article.crossref output.nonnull }
1704     if$
1705     format.url output
1706     format.note
1707     format.isbn.issn output
1708     format.howcited.artperiod output
1709     check.missing.pages
1710     fin.entry.endnote
1711     }
1712    
1713     FUNCTION {commented}
1714     { output.bibitem
1715     author empty$
1716     { editor empty$
1717     { format.founders }
1718     { format.founders format.editors "editor" output.check }
1719     if$
1720     }
1721     { editor empty$
1722     { format.authors format.founders output.nonnull }
1723     { format.authors format.founders format.editors output.nonnull }
1724     if$
1725     }
1726     if$
1727     set.after.author.sep output
1728     crossref missing$
1729     { format.btitle.vol "title" output.check }
1730     { format.btitle "title" output.check }
1731     if$
1732     format.volumetitle output
1733     format.edition output
1734     format.address.publisher.year "publisher" output.check
1735     format.update
1736     new.sentence
1737     crossref missing$
1738     { format.series.number output }
1739     { format.book.crossref output.nonnull }
1740     if$
1741     format.url output
1742     format.pages output
1743     format.note
1744     format.howcited.comment output
1745     fin.entry.endnote
1746     }
1747    
1748     FUNCTION {periodical}
1749     { output.bibitem
1750     format.authors "author" output.check
1751     set.after.author.sep output
1752     format.artperiodincoll.title "title" output.check
1753     crossref missing$
1754     { journal article.in.journal output.nonnull
1755     new.sentence
1756     format.vol.bracedyear.num.pages output
1757     }
1758     { new.sentence format.article.crossref.bracedyear output.nonnull }
1759     if$
1760     format.url output
1761     format.note
1762     format.isbn.issn output
1763     format.howcited.artperiod output
1764     fin.entry.endnote
1765     }
1766    
1767     FUNCTION {book}
1768     { output.bibitem
1769     author empty$
1770     { editor empty$
1771     { "" "author and editor" output.check }
1772     { format.editors output.nonnull }
1773     if$
1774     }
1775     { editor empty$
1776     { format.authors output.nonnull }
1777     { format.authors "\jbtiafed {" format.editors * "}" * output.nonnull }
1778     if$
1779     }
1780     if$
1781     set.after.author.sep output
1782     crossref missing$
1783     { format.btitle.vol "title" output.check }
1784     { format.btitle "title" output.check }
1785     if$
1786     author empty$ not editor empty$ not and
1787     { "\jbedafti {\edbyname {} " editor * "," * * "} " * }
1788     'skip$
1789     if$
1790     make.translators output
1791     format.volumetitle output
1792     format.edition output
1793     format.address.publisher.year "publisher" output.check
1794     new.sentence
1795     format.juradiss.book output
1796     crossref missing$
1797     { format.series.number output }
1798     { format.book.crossref output.nonnull }
1799     if$
1800     format.url output
1801     format.pages output
1802     format.totalpages output
1803     format.note
1804     format.isbn.issn output
1805     format.howcited output
1806     fin.entry.endnote
1807     }
1808    
1809     FUNCTION {inbook}
1810     { output.bibitem
1811     author empty$
1812     { format.editors "author and editor" output.check }
1813     { editor empty$
1814     { format.authors output.nonnull }
1815     { format.authors format.editors output.nonnull }
1816     if$
1817     }
1818     if$
1819     set.after.author.sep output
1820     crossref missing$
1821     { chapter empty$
1822     { "There's no chapter in " cite$ * warning$ "" * }
1823     { type empty$
1824     { "\Bibchaptername{}" }
1825     { type }
1826     if$
1827     chapter tie.or.space.connect " In " * *
1828     }
1829     if$
1830     format.btitle.vol.inbook "title" output.check
1831     make.translators output
1832     format.volumetitle output
1833     format.edition output
1834     format.address.publisher.year "publisher" output.check
1835     new.sentence
1836     format.series.number output
1837     format.url output
1838     format.pages "pages" output.check
1839     format.note
1840     format.isbn.issn output
1841     }
1842     { chapter empty$
1843     { "There's no chapter in " cite$ * warning$ "" *
1844     format.btitle.vol.inbook "title" output.check
1845     }
1846     { type empty$
1847     { "\Bibchaptername{}" }
1848     { type }
1849     if$
1850     chapter tie.or.space.connect "" * *
1851     }
1852     if$
1853     format.volumetitle output
1854     format.book.crossref output.nonnull
1855     format.url output
1856     format.pages "pages" output.check
1857     format.note
1858     }
1859     if$
1860     part.of.sentence
1861     format.howcited output
1862     fin.entry.endnote
1863     }
1864    
1865     FUNCTION {incollection}
1866     { output.bibitem
1867     format.authors "author" output.check
1868     set.after.author.sep output
1869     format.artperiodincoll.title "title" output.check
1870     make.translators output
1871     crossref missing$
1872     { format.incoll.editor.booktitle "booktitle" output.check
1873     format.volumetitle output
1874     format.edition output
1875     format.address.publisher.year "publisher" output.check
1876     new.sentence
1877     format.series.number output
1878     format.url output
1879     format.isbn.issn output
1880     part.of.sentence
1881     format.chapter.pages output
1882     format.note
1883     }
1884     { format.volumetitle output
1885     format.incoll.inproc.crossref output.nonnull
1886     format.url output
1887     format.note
1888     }
1889     if$
1890     format.howcited output
1891     check.missing.pages
1892     fin.entry.endnote
1893     }
1894    
1895     FUNCTION {inproceedings}
1896     { output.bibitem
1897     format.authors "author" output.check
1898     set.after.author.sep output
1899     format.artperiodincoll.title "title" output.check
1900     crossref missing$
1901     { format.incoll.editor.booktitle "booktitle" output.check
1902     address empty$
1903     { organization new.sentence.checka
1904     organization output
1905     part.of.sentence
1906     format.address.publisher.year output
1907     }
1908     { format.address.publisher.year "publisher" output.check }
1909     if$
1910     new.sentence
1911     series empty$
1912     'skip$
1913     { format.series.number output }
1914     if$
1915     format.url output
1916     format.note
1917     format.isbn.issn output
1918     part.of.sentence
1919     format.pages output
1920     }
1921     { format.incoll.inproc.crossref output.nonnull
1922     format.url output
1923     format.note
1924     }
1925     if$
1926     format.howcited output
1927     fin.entry.endnote
1928     }
1929    
1930     FUNCTION {conference}{inproceedings}
1931    
1932     FUNCTION {manual}
1933     { output.bibitem
1934     author empty$
1935     { organization empty$
1936     'skip$
1937     { organization output.nonnull
1938     address output
1939     }
1940     if$
1941     }
1942     { format.authors output.nonnull }
1943     if$
1944     set.after.author.sep output
1945     format.btitle "title" output.check
1946     format.edition output
1947     author empty$
1948     { organization empty$
1949     { address output part.of.sentence }
1950     'skip$
1951     if$
1952     }
1953     { address "\bpubaddr {} " * organization * output
1954     part.of.sentence
1955     }
1956     if$
1957     format.date output
1958     pages set.period.dash.check
1959     format.pages.book output
1960     format.url output
1961     format.note
1962     format.howcited output
1963     fin.entry.endnote
1964     }
1965    
1966     FUNCTION {mastersthesis}
1967     { output.bibitem
1968     format.authors "author" output.check
1969     set.after.author.sep output
1970     format.btitle "title" output.check
1971     format.thesis output
1972     set.comma.pages.check
1973     pages new.sentence.checka
1974     format.pages output
1975     format.url output
1976     format.note
1977     format.howcited output
1978     fin.entry.endnote
1979     }
1980    
1981     FUNCTION {phdthesis}
1982     { output.bibitem
1983     format.authors "author" output.check
1984     set.after.author.sep output
1985     format.btitle "title" output.check
1986     format.thesis output
1987     set.comma.pages.check
1988     pages new.sentence.checka
1989     format.pages output
1990     format.url output
1991     format.note
1992     format.howcited output
1993     fin.entry.endnote
1994     }
1995    
1996     FUNCTION {jurthesis}
1997     { output.bibitem
1998     format.authors "author" output.check
1999     set.after.author.sep output
2000     format.btitle "title" output.check
2001     format.thesis output
2002     set.comma.pages.check
2003     pages new.sentence.checka
2004     format.pages output
2005     format.url output
2006     format.note
2007     format.howcited output
2008     fin.entry.endnote
2009     }
2010    
2011     FUNCTION {booklet}
2012     { output.bibitem
2013     format.authors "author" output.check
2014     set.after.author.sep output
2015     format.title "title" output.check
2016     format.howpublished.address.year output
2017     format.note
2018     format.url output
2019     format.howcited output
2020     fin.entry.endnote
2021     }
2022    
2023     FUNCTION {misc}
2024     { output.bibitem
2025     format.authors "author" output.check
2026     set.after.author.sep output
2027     format.title output
2028     format.howpublished.address.year output
2029     format.note
2030     format.url output
2031     format.howcited output
2032     fin.entry.endnote
2033     }
2034    
2035     FUNCTION {proceedings}
2036     { output.bibitem
2037     editor empty$
2038     { organization empty$
2039     'skip$
2040     { "\biblnfont {" organization * " \organizationname}" * output }
2041     if$
2042     }
2043     { format.editors output.nonnull }
2044     if$
2045     set.after.author.sep output
2046     format.btitle "title" output.check
2047     new.sentence
2048     editor empty$
2049     'skip$
2050     { format.proceed.organization output }
2051     if$
2052     new.sentence
2053     format.series.number output.nonnull
2054     volume empty$
2055     { "" output.nonnull }
2056     { "\volumeformat {" volume * "} " * "volume" output.check }
2057     if$
2058     format.address.publisher.year "publisher" output.check
2059     pages set.period.dash.check
2060     format.pages.book output
2061     format.url output
2062     format.note
2063     format.isbn.issn output
2064     format.howcited output
2065     fin.entry.endnote
2066     }
2067    
2068     FUNCTION {techreport}
2069     { output.bibitem
2070     author empty$
2071     { format.editors "author and editor" output.check }
2072     { editor empty$
2073     { format.authors output.nonnull }
2074     { format.authors format.editors output.nonnull }
2075     if$
2076     }
2077     if$
2078     set.after.author.sep output
2079     format.title "title" output.check
2080     institution new.sentence.checka
2081     institution empty$
2082     'skip$
2083     { " \apyformat {" institution * ", " * output.nonnull }
2084     if$
2085     format.address.publisher.year output
2086     number new.sentence.checka
2087     format.tr.number.jur "number" output.check
2088     pages set.period.dash.check
2089     format.pages.book output
2090     format.url output
2091     format.note
2092     format.isbn.issn output
2093     format.howcited output
2094     fin.entry.endnote
2095     }
2096    
2097     FUNCTION {www}
2098     { output.bibitem
2099     format.authors "author" output.check
2100     set.after.author.sep output
2101     format.naked.url output
2102     format.howcited output
2103     fin.entry.endnote
2104     }
2105    
2106     FUNCTION {lexicon}
2107     { output.bibitem
2108     set.after.author.sep output
2109     crossref missing$
2110     { format.btitle.vol "title" output.check }
2111     { format.btitle "title" output.check }
2112     if$
2113     author empty$
2114     { editor empty$
2115     'skip$
2116     { "\edbyname{} " * editor format.editor.names "," * * }
2117     if$
2118     }
2119     { "\byname{} " author format.names * "," * * }
2120     if$
2121     make.translators output
2122     format.volumetitle output
2123     format.edition output
2124     format.address.publisher.year "publisher" output.check
2125     new.sentence
2126     format.juradiss.book output
2127     crossref missing$
2128     { format.series.number output }
2129     { format.book.crossref output.nonnull }
2130     if$
2131     format.url output
2132     format.pages output
2133     format.totalpages output
2134     format.note
2135     format.isbn.issn output
2136     format.howcited output
2137     fin.entry.endnote
2138     }
2139    
2140     FUNCTION {unpublished}{misc}
2141    
2142     FUNCTION {default.type}{misc}
2143    
2144     MACRO {jan} {"\janname\ "}
2145     MACRO {feb} {"\febname\ "}
2146     MACRO {mar} {"\marname\ "}
2147     MACRO {apr} {"\aprname\ "}
2148     MACRO {may} {"\mayname\ "}
2149     MACRO {jun} {"\junname\ "}
2150     MACRO {jul} {"\julname\ "}
2151     MACRO {aug} {"\augname\ "}
2152     MACRO {sep} {"\sepname\ "}
2153     MACRO {oct} {"\octname\ "}
2154     MACRO {nov} {"\novname\ "}
2155     MACRO {dec} {"\decname\ "}
2156    
2157     READ
2158    
2159     FUNCTION {sortify}{ purify$ "l" change.case$ }
2160    
2161     INTEGERS { len }
2162    
2163     FUNCTION {chop.word}
2164     { 's :=
2165     'len :=
2166     s #1 len substring$ =
2167     { s len #1 + global.max$ substring$ }
2168     's
2169     if$
2170     }
2171    
2172     FUNCTION {format.lab.names}
2173     { 's := % for two: (Jones/de~Bruijn)
2174     s #1 "{vv~}{ll}" format.name$ % for three: (Jones/de~Bruijn/Smith)
2175     s num.names$ duplicate$ % for more: (Jones et\,al.)
2176     #2 <
2177     'pop$ % for just one person
2178     { duplicate$ duplicate$
2179     #3 >
2180     swap$ s swap$ "{ff }{vv }{ll}{ jj}" format.name$ "others" =
2181     or
2182     { pop$ "\Bibetal" * } % for 4 or more, or last is `others'
2183     { #2 =
2184     { "\jbbtasep " * s #2 "{vv~}{ll}" format.name$ * } % for (exactly) two
2185     { "\jbbfsasep " * s #2 "{vv~}{ll}" format.name$ * % for three
2186     "\jbbstasep " * s #3 "{vv~}{ll}" format.name$ *
2187     }
2188     if$
2189     }
2190     if$
2191     }
2192     if$
2193     year missing$
2194     'skip$
2195     { "\jbdy {" year * "}" * * }% dummy year to prevent from `1993a' and `2001b' for works by the same author
2196     if$
2197     }
2198    
2199     FUNCTION {format.editor.lab.names}
2200     { 's := % for two: (Jones/de~Bruijn)
2201     s #1 "{vv~}{ll}" format.name$ % for three: (Jones/de~Bruijn/Smith)
2202     s num.names$ duplicate$ % for more: (Jones et\,al.)
2203     #2 <
2204     'pop$ % for just one person
2205     { duplicate$ duplicate$
2206     #3 >
2207     swap$ s swap$ "{ff }{vv }{ll}{ jj}" format.name$ "others" =
2208     or
2209     { pop$ "\Bibetal" * } % for 4 or more, or last is `others'
2210     { #2 =
2211     { "\jbbtesep " * s #2 "{vv~}{ll}" format.name$ * } % for (exactly) two
2212     { "\jbbfsesep " * s #2 "{vv~}{ll}" format.name$ * % for three
2213     "\jbbstesep " * s #3 "{vv~}{ll}" format.name$ *
2214     }
2215     if$
2216     }
2217     if$
2218     }
2219     if$
2220     year missing$
2221     'skip$
2222     { "\jbdy {" year * "}" * * }% dummy year to prevent from `1993a' and `2001b' for works by the same author
2223     if$
2224     }
2225    
2226     FUNCTION {author.key.label}
2227     { author empty$
2228     { key empty$
2229     { cite$ #1 #3 substring$ }
2230     'key
2231     if$
2232     }
2233     { author format.lab.names }
2234     if$
2235     }
2236    
2237     FUNCTION {author.editor.key.label}
2238     { author empty$
2239     { editor empty$
2240     { key empty$
2241     { cite$ #1 #3 substring$ }
2242     'key
2243     if$
2244     }
2245     { editor format.editor.lab.names }
2246     if$
2247     }
2248     { author format.lab.names }
2249     if$
2250     }
2251    
2252     FUNCTION {editor.key.label}
2253     { editor empty$
2254     { key empty$
2255     { cite$ #1 #3 substring$ }
2256     'key
2257     if$
2258     }
2259     { editor format.editor.lab.names }
2260     if$
2261     }
2262    
2263     FUNCTION {calc.label}
2264     { type$ "book" = type$ "inbook" = or type$ "incollection" = or type$ "commented" = or type$ "lexicon" = or
2265     'author.editor.key.label
2266     { type$ "proceedings" =
2267     'editor.key.label
2268     'author.key.label
2269     if$
2270     }
2271     if$
2272     'label :=
2273     }
2274    
2275     FUNCTION {calc.dummy.label}
2276     { type$ "book" = type$ "inbook" = or type$ "incollection" = or type$ "commented" = or
2277     'author.editor.key.label
2278     { type$ "proceedings" =
2279     'editor.key.label
2280     'author.key.label
2281     if$
2282     }
2283     if$
2284     'dummy.label :=
2285     }
2286    
2287     FUNCTION {sort.format.names}
2288     { 's :=
2289     #1 'nameptr :=
2290     ""
2291     s num.names$ 'numnames :=
2292     numnames 'namesleft :=
2293     { namesleft #0 > }
2294     { nameptr #1 >
2295     { " " * }
2296     'skip$
2297     if$
2298     s nameptr "{ll{ }}{ ff{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
2299     nameptr numnames = t "\bibnf {others} {} {} {} {}" = and
2300     { "\Bibetal" * }
2301     { t sortify * }
2302     if$
2303     nameptr #1 + 'nameptr :=
2304     namesleft #1 - 'namesleft :=
2305     }
2306     while$
2307     }
2308    
2309     FUNCTION {sort.format.title}
2310     { 't :=
2311     "A " #2
2312     "An " #3
2313     "Der " #4
2314     "Die " #4
2315     "Das " #4
2316     "Ein " #4
2317     "Eine " #5
2318     "The " #4 t chop.word
2319     chop.word
2320     chop.word
2321     chop.word
2322     chop.word
2323     chop.word
2324     chop.word
2325     chop.word
2326     sortify
2327     #1 global.max$ substring$
2328     }
2329    
2330     FUNCTION {author.sort}
2331     { author empty$
2332     { key empty$
2333     {
2334     %% "to sort, need author or key in " cite$ * warning$
2335     ""
2336     }
2337     { key sortify }
2338     if$
2339     }
2340     { author sort.format.names }
2341     if$
2342     }
2343    
2344     FUNCTION {author.editor.sort}
2345     { author empty$
2346     { editor empty$
2347     { key empty$
2348     {
2349     %% "to sort, need author, editor, or key in " cite$ * warning$
2350     ""
2351     }
2352     { key sortify }
2353     if$
2354     }
2355     { editor sort.format.names }
2356     if$
2357     }
2358     { author sort.format.names }
2359     if$
2360     }
2361    
2362     FUNCTION {editor.sort}
2363     { editor empty$
2364     { key empty$
2365     { "to sort, need editor or key in " cite$ * warning$ "" }
2366     { key sortify }
2367     if$
2368     }
2369     { editor sort.format.names }
2370     if$
2371     }
2372    
2373     FUNCTION {presort}
2374     { calc.label
2375     calc.dummy.label
2376     sortkey empty$
2377     { type$ "book" =
2378     type$ "incollection" = or
2379     type$ "inbook" = or
2380     type$ "commented" = or
2381     'author.editor.sort
2382     { type$ "proceedings" =
2383     'editor.sort
2384     'author.sort
2385     if$
2386     }
2387     if$
2388     }
2389     {
2390     sortkey
2391     }
2392     if$
2393     " "
2394     *
2395     year field.or.null sortify
2396     *
2397     " "
2398     *
2399     title field.or.null
2400     sort.format.title
2401     *
2402     #1 entry.max$ substring$
2403     'sort.key$ :=
2404     }
2405    
2406     ITERATE {presort}
2407    
2408     %% FUNCTION {before.sort} { "BEFORE SORT:" top$ }
2409     %% EXECUTE {before.sort}
2410     %% FUNCTION {print.sort.keys} {sort.key$ top$}
2411     %% ITERATE {print.sort.keys}
2412    
2413     SORT
2414    
2415     %% FUNCTION {after.sort} {"AFTER SORT:" top$}
2416     %% EXECUTE {after.sort}
2417     %% ITERATE {print.sort.keys}
2418    
2419     STRINGS { last.dummy.label next.extra }
2420    
2421     INTEGERS { last.extra.num number.label }
2422    
2423     FUNCTION {forward.pass}
2424     { last.dummy.label dummy.label =
2425     { last.extra.num #1 + 'last.extra.num :=
2426     last.extra.num int.to.chr$ 'extra.label :=
2427     }
2428     { "a" chr.to.int$ 'last.extra.num :=
2429     "" 'extra.label :=
2430     dummy.label 'last.dummy.label :=
2431     }
2432     if$
2433     number.label #1 + 'number.label :=
2434     }
2435    
2436     FUNCTION {reverse.pass}
2437     { next.extra "b" =
2438     { "a" 'extra.label := }
2439     'skip$
2440     if$
2441     extra.label 'next.extra :=
2442     extra.label
2443     duplicate$ empty$
2444     'skip$
2445     { "" swap$ * }
2446     if$
2447     'extra.label :=
2448     dummy.label extra.label * 'dummy.label :=
2449     }
2450    
2451     ITERATE {forward.pass}
2452    
2453     REVERSE {reverse.pass}
2454    
2455     FUNCTION {set.current.authors}
2456     { author empty$
2457     { editor empty$
2458     { organization empty$
2459     { cite$ 'current-authors := }
2460     { organization 'current-authors := }
2461     if$
2462     }
2463     { editor format.names #1 entry.max$ substring$ 'current-authors := }
2464     %% ^^^^^^^^^^^^ NOT format.editor.names, otherwise \jb@@arg is always = 0!!!
2465     if$
2466     }
2467     { author format.names #1 entry.max$ substring$ 'current-authors := }
2468     if$
2469     }
2470    
2471    
2472     STRINGS { previous-authors
2473     }
2474    
2475     FUNCTION {initialize.previous.authors} { "" 'previous-authors := }
2476    
2477    
2478     FUNCTION {mark.repeat.authors}
2479     { current-authors previous-authors =
2480     { #1 'repeat-authors := }
2481     'skip$
2482     if$
2483     current-authors 'previous-authors :=
2484     }
2485    
2486    
2487     ITERATE {set.current.authors}
2488    
2489     EXECUTE {initialize.previous.authors}
2490    
2491     ITERATE {mark.repeat.authors}
2492    
2493     EXECUTE {initialize.previous.authors}
2494    
2495     REVERSE {mark.repeat.authors}
2496    
2497     FUNCTION {begin.bib}
2498     { preamble$ empty$
2499     'skip$
2500     { preamble$ write$ newline$ }
2501     if$
2502     "%" write$ newline$
2503     "% This bibliography was produced by using jureco.bst" write$ newline$
2504     "%" write$ newline$
2505     "\begin{thebibliography}{}" write$ newline$
2506     }
2507    
2508     EXECUTE {begin.bib}
2509    
2510     EXECUTE {init.state.consts}
2511    
2512     ITERATE {call.type$}
2513    
2514     FUNCTION {end.bib}
2515     { newline$
2516     "\end{thebibliography}" write$ newline$
2517     }
2518    
2519     EXECUTE {end.bib}
2520     %%
2521     %%
2522     %% End of file `jureco.bst'.