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