1 %% ALPHADIN.BST Ausgabe [8] 10/10/00
2 %% (C) Klaus F. Lorenzen, Hamburg email: lorenzen.marxen@t-online.de
3 %% ersetzt ALPHADIN.BST Ausgabe [7,1] vom 23/11/99
4 %% ersetzt DinAlpha.BST von 1994
5 %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
6 %% ALPHADIN.BST wurde entwickelt aus BibTeX standard bibliography style
7 %% `alpha'.Mit ALPHADIN.BST werden Literaturverzeichnisse gemaess der deutschen
8 %% Zitiernorm DIN 1505 Teil 2 formatiert.
9 %% Analog zu den 4 US standard styles wird ein vollstaendiger Satz von
10 %% 4 DIN-gerechten bst-style Dateien veroeffentlicht (alphadin.bst,
11 %% plaindin.bst, unsrtdin.bst, abbrvdin.bst). Die gueltige Version
12 %% ist am schnellsten aus dem WWW ueber folgende URL zu beziehen
13 %% http://www.fh-hamburg.de/pers/Lorenzen/bibtex/
15 %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
16 %% WAS IST ALPHADIN.BST ?
17 %% Dieser style produziert "deutsche" Literaturzitate in Literaturverzeichnis-
18 %% sen gemaess der deutschen Norm DIN 1505, Teil 2 vom Jan. 1984.
19 %% Die Literaturzitate werden alphabetisch nach Verfassern sortiert
20 %% und sind durch abgekuerzte Verfasserbuchstaben plus Erscheinungsjahr in
21 %% eckigen Klammern gekennzeichnet.
22 %% Es gibt Unterschiede zwischen der US- und der deutschen Zitierkonvention,
23 %% was die bibliographischen Typen und die verschiedenen Trennzeichen zwischen
24 %% den Feldern angeht. Daher ist auch keine 100%ige Abbildung der beiden
25 %% Regelwerke aufeinander moeglich. Dies ist aber immer durch eine achtsame
26 %% Erfassung beherrschbar! Die vorliegenden DIN-styles versuchen einige
27 %% bibliographische Beschraenkungen der Originalstyles zu ueberwinden.
28 %% Es laesst sich in fast allen Faellen problemlos ein Original-bib-file
29 %% (d.i. die Datenbank, die die bibliographischen Informationen enthaelt)
30 %% wahlweise nach US-Norm oder deutscher DIN-Norm verarbeiten.
31 %% [Beispiel: Produzieren Sie mit der XAMPL.bib-Datenbank aus dem Original-
32 %% paket 2 verschiedene Literaturverzeichnisse.] Zu Gunsten
33 %% der Allgemeingueltigkeit von bib-files ist bei den Publikationstypen
34 %% (entry-types) und den bibliographischen Kategorien (fields) in Zweifels-
35 %% faellen immer die originale US-Bedeutung beibehalten worden.
36 %% Bei der Erfassung von Literaturquellen in bib-files
37 %% gelten folglich die in der TEX-Literatur veroeffentlichten Regeln.
38 %% Kommt es dennoch zu kleineren "Schoenheitsfehlern" im fertig gesetzten
39 %% output, so koennen diese so gut wie immer durch eine leicht veraenderte
40 %% Erfassung im bib-inputfile beseitigt werden. Last but not least koennen
41 %% Sie im output-file < *.bbl > noch letzte Hand zur Korrektur ansetzen.
43 %% UMGANG MIT FEHLERMELDUNGEN
44 %% Noch nicht alle ueberfluessigen Fehlermeldungen des Original-style sind
45 %% ausgemerzt. Die meisten Warnmeldungen beruhen auf
46 %% den andersartigen bibliographischen Regeln nach DIN 1505 und dem damit
47 %% verbundenen Ermessensspielraum, sind also in Wahrheit keine "Fehler".
48 %% Dennoch sollten Sie diese Warnungen beachten, um herauszufinden, ob
49 %% evtl. eine unzulaessige Kombination von Publikationstyp (=entry-type) und
50 %% "fields" vorgenommen worden ist. Das fuehrt mitunter zu Wasserfallartigen
51 %% Fehlermeldungen: meistens duerfen Sie das einfach ignorieren.
54 %% Hartmut Lueddecke, FH Hamburg habe ich fuer viele Verbesserungsvorschlaege
55 %% und stete Unterstuetzung zu danken. Vielen an dieser Stelle ungenannt
56 %% bleibenden Anwendern gilt mein Dank, die in den vergangenen Jahren durch
57 %% ihre Aufmerksamkeit dazu beigetragen haben, Fehler auszumerzen und
58 %% Verbesserungen vorzunehmen.
60 %% HINWEIS: es gibt eine Kombination von ALPHADIN.BST mit dem NATBIB-Stil
61 %% von Patrick W.Daly), womit Literaturverzeichnisse komplett nach
62 %% DIN 1505 Teil 2 UND Teil 3 formatiert werden koennen. Naeheres
63 %% per URL http://www.fh-hamburg.de/pers/Lorenzen/bibtex/
65 %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
66 %% Eine ausfuehrliches Internet-Tutorial mit Beispielen ist in Vorbereitung.
67 %% Fuer den Anfang ist diese Datei schon etwas kommentiert!
68 %% Kritik, Vorschlaege usw. bitte an :
69 %% FH Hamburg, Klaus F. Lorenzen, Grindelhof 30, 20146 Hamburg
70 %% e-mail: lorenzen.marxen@t-online.de
72 %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
73 % version 0.99c for BibTeX versions 0.99c or later, LaTeX2e
74 % Copyright (C) 1985, all rights reserved.
75 % Copying of this file is authorized only if either
76 % (1) you make absolutely no changes to your copy, including name, or
77 % (2) if you do make changes, you name it something other than
78 % bstdin.doc, plaindin.bst, unsrtdin.bst, alphadin.bst, and abbrvdin.bst.
79 % This restriction helps ensure that all standard styles are identical.
80 %% ==> The file btxbst.doc has the original documentation for style 'alpha'.
84 { address %% Verlagsort
85 author %% persoenlicher Urheber eines Werkes
86 booktitle %% a) Gesamttitel eines mehrbaendigen Werkes
87 % %% b) Titel des Sammelwerks, das einzelne selbstaendige
88 % %% Beitraege mit eigenem Titel enthaelt (->incollection)
89 chapter %% Kapitel in einem Buch (Monographie)
90 edition %% Auflagevermerk
91 editor %% Persoenl.Herausgeber oder Koerperschaftlicher Herausgeber
92 howpublished %% beliebiger Verlegervermerk: von wem, wo
93 institution %% Institution, die e.Verlagsfreie Veroeffentlichung betreibt
94 isbn %% Standardnr fuer Buecher
95 issn %% - " - : Zeitschriften u. Serien
96 journal %% Titel einer Zeitschrift
97 key %% Zusaetzlich vergebener Sortierschluessel, mitunter notwend.
98 month %% naehere Bestimmung des Erscheinungsjahres (-> macro 's)
99 note %% freies Eingabefeld fuer zusaetzliche Informationen
100 number %% Mehrfachbedeutung in Abhaengigkeit vom Eingabetyp
101 organization %% a) Name der Organisation/des Veranstalters e. Tagung,Konferenz
102 % %% b) Name einer Firma/Gesellschaft, die ein ->manual herausgab
103 pages %% Umfangsangaben, meist Seitenzahlen
105 school %% Hochschule/Universitaet, die eine Dipl.-Arb./Dissertation veroeff.
106 series %% Titel e.Reihe, in der ein best. Buchtitel erschienen ist
107 title %% Titel einer (namentlich gekennzeichneten) Veroeffentlichung
108 type %% Zusatzfeld z.Kennzeichnung e.besonderen Publikationstyps
109 volume %% a) Zaehlung bei einem mehrbaendigen Werk (-> book)
110 % %% b) Jahrgang einer Zeitschrift (-> article
111 year %% Erscheinungsjahr
114 { label extra.label sort.label }
116 INTEGERS { output.state before.all mid.sentence after.sentence after.block }
118 %% die folg. BOOLE'sche VAR steuern d. Ausg. ": " nach Urheber-Feldern
119 %% und ". - " vor ISBN oder Anmerkungen (NOTE)
121 INTEGERS { colon.after period.dash }
123 FUNCTION {init.state.consts}
126 #2 'after.sentence :=
131 INTEGERS { zahl lang }
133 STRINGS { h s t u v }
135 %% neue DIN-Funktion, 16/2/94
137 FUNCTION {output.nonnull}
139 output.state after.block =
144 { output.state before.all =
146 { output.state colon.after =
151 { output.state period.dash =
156 { output.state mid.sentence =
169 after.block 'output.state :=
182 FUNCTION {output.check}
185 { pop$ "empty " t * " in " * cite$ * warning$ }
190 FUNCTION {output.bibitem}
199 before.all 'output.state :=
202 FUNCTION {fin.entry} %%$$$ nach DIN neu 16/2/94
207 FUNCTION {set.period.dash} %% Wenn ein ". - " die Satzteile trennen soll.!
208 { output.state before.all =
210 { period.dash 'output.state := }
215 %% prueft, ob PAGES, ISBN- oder NOTE-Feld vh. ist und setzt dann ". - " davor.
217 FUNCTION {set.period.dash.check}
224 FUNCTION {set.colon.after} %%$$$ Wenn ein ": " d. Satzteile trennen soll!
225 { output.state before.all =
227 { colon.after 'output.state := }
231 %% neu / alt 17/2/94 Wenn ein " " die Satzteile trennen soll.!
232 FUNCTION {new.sentence}
233 { output.state before.all =
235 { after.sentence 'output.state := }
239 %% neu 17/2/94 Wenn ein ", " die Satzteile trennen soll.!
240 FUNCTION { part.of.sentence }
241 { output.state before.all =
243 { mid.sentence 'output.state := }
266 FUNCTION {new.sentence.checka}
273 FUNCTION {field.or.null}
280 INTEGERS { nameptr namesleft numnames }
287 { "\emph{" swap$ * "}" * }
291 %% neu, setzt Autor/Hrsg. in Kapitaelchen 9/3/94
292 FUNCTION { capitalize }
295 { "\textsc{" swap$ * "}" * }
299 %%$$$ DIN-Quellenangabe : spezieller unselbst. Teil ist erschienen "In: "
300 %% dem bibliogr. selbst. Werk, z.B. Zeitschrift, Buch
303 FUNCTION {article.in.journal}
308 { emphasize " " * * }%% wenn ein Zs-Heft als ganzes zitiert wird
309 { emphasize "{In: }" swap$ " " * * }
312 { emphasize "{In: }" swap$ " " * * }
318 %% nach Vorschlag von H.Lueddecke, um Adelspraedikate beim Sortieren
319 %% nach den(m) Vornamen aufzufuehren. Lo, 2/11/94
320 FUNCTION {format.names}
324 s num.names$ 'numnames :=
325 numnames 'namesleft :=
328 s nameptr "{vv~}{ll}" format.name$ 't :=%% das ergibt DIN-Ansetzung
329 %% Lue's Vorschlag s nameptr "{ll}" format.name$ 't :=
331 s nameptr "{, ff}" format.name$ 'u :=
332 %% Lue's Vorschlag s nameptr "{, ff}{ vv}" format.name$ 'u :=
333 u text.length$ 'lang :=
337 { u zahl #1 substring$ "~" =
339 { u #1 zahl #1 - substring$ 'v := }
342 v u zahl #2 substring$ * "." * 'v := }
351 %% der string fkt enthaelt " (Hrsg.)", wenn Editorfeld nicht leer ist
352 t v * fkt * 't := %% Komma nach Nachnamen wird oben erledigt!
353 %% t enthaelt nun d. formatierten Nnamen, Vnamen
361 %% %% n. schindle's hinweis 12/1/96 erweitert
362 t "\textsc{others}" = t "\textsc{others} (Hrsg.)" = or
363 { " [u.~a.]" * }%% 13/2/94
364 %%%% { "et~al." * } %% Geschmackssache, waehle eins von beiden
368 if$ %% Ende der namesleft-Pruefung
371 %% hierdurch wird bei jed. Schleifendurchgang das sich komplet-
372 %% tierende Zwischen-Namensergebnis wieder auf den stack gelegt
374 if$ %% Ende der nameptr-Pruefung
376 nameptr #1 + 'nameptr :=
377 namesleft #1 - 'namesleft :=
379 while$ %% Ende von { namesleft #0 > } ganz oben
380 "" 'fkt := %% fkt wird zurueckgesetzt
383 %%$$$ geaendert 14/2/94
385 FUNCTION {format.authors}
388 { author format.names }
392 %%$$$ geaend. 20/2/94 Anpassung an DIN, wonach Autor + Hrsg. zusammen vorkom-
395 FUNCTION {format.editors}
398 { "Weder Verfasser noch Hrsg. in " cite$ * warning$ }
407 " ; " * editor format.names *
414 %% Lo, 12/5/99 neue Funktion fuer proceedings, misc usw.
416 FUNCTION { format.editors.organization }
417 { organization empty$
421 { " ; " * organization " (Veranst.)" *}
427 %%$$$ Sonderfall: Herausgeber bei Typ incollection, 21/2/94
428 FUNCTION {format.ed.incoll}
437 FUNCTION {format.title}
440 { title } %% Text so wie er dasteht im Feld title
448 { t #1 #1 substring$ "-" =
449 { t #1 #2 substring$ "--" = not
451 t #2 global.max$ substring$ 't :=
453 { { t #1 #1 substring$ "-" = }
455 t #2 global.max$ substring$ 't :=
461 { t #1 #1 substring$ *
462 t #2 global.max$ substring$ 't :=
470 FUNCTION {format.date}
474 { "there's a month but no year in " cite$ * warning$
479 { month empty$ %% b. Buechern nur Jahr, ohne Monat ausgeb. im Impressum
481 { month " " * year * }
488 %%$$$ neue Fkt., 16/2/94 u. 14/3/94 das sog. Impressum
489 FUNCTION {format.address.publisher.year}
497 { "Es gibt einen Verlagsort, aber keinen Verlag in " cite$ * warning$
498 address ", " * format.date *
504 { "Es gibt nur eine Verlagsangabe in " cite$ * warning$
507 { publisher ", " * format.date * }
511 { address " : " * publisher * }
512 { address " : " * publisher * ", " * format.date * }
520 FUNCTION {format.btitle}
525 FUNCTION {tie.or.space.connect}
526 { duplicate$ text.length$ #3 <
533 FUNCTION {either.or.check}
536 { "can't use both " swap$ * " fields in " * cite$ * warning$ }
540 %% neu 8/3/94 in dieser Funkt. steckt im volume empty-Teil noch ein bug, der
541 %% aber ignoriert werden kann; das Ergebnis ist ok.
542 FUNCTION {format.btitle.vol}
547 { title emphasize ". Bd." * volume tie.or.space.connect }
551 { title emphasize }%% ein Buch, das zusaetzl. SERIES=Reihentitel besitzt
552 %% jetzt kommt d. Fall des mehrbaendigen Werkes mit Gesamttitel=SERIES
553 %% Zaehlung=VOLUME und Bandtitel=TITLE;
554 { series emphasize ". Bd." * volume tie.or.space.connect
555 ": " * "{\emph{" * title * "}}" * }
560 { title emphasize }%% wenn number ex., dann immer title-Feld
561 if$%% Ende number-test
565 %% Serien- / Reihentitel werden im Feld series gespeichert. Weist die
566 %% Serie eine Zaehlung der Einzeltitel auf, gibt man entweder nach DIN alles
567 %% in das Feld series so ein: ---> TITEL DER SERIE NR. (der Vorlage) <---
568 %% z. B. SERIES= { Mensch und Computer 12 }.
569 %% [ Die Nummer der Vorlage darf auch durch " ; " abgesetzt werden. ]
571 %% man gibt die Zaehlung in das Feld NUMBER ein, z.B. NUMBER = {12}.
573 %% Bei mehrbaendigen Werken steht d. Gesamttitel im Feld SERIES und die
574 %% Bandzaehlung im Feld VOLUME; NUMBER darf dann nicht besetzt sein!
575 %% Anderenfalls liegt ein Erfassungsfehler vor, da sich Reihe u. mehrbd.
576 %% Werk gegenseitig ausschliessen.
578 FUNCTION {format.series.number.din}
582 { "" }%% Ausstieg mit Nullstring
583 { "(" series * ")" * } %% d. Seriennr koennte auch gleich hier
584 %% im SERIES-Feld miterfasst werden
588 { "(" number tie.or.space.connect ")" *
589 "there's a number but no series in " cite$ * warning$
591 { "(" series * number tie.or.space.connect ")" * }
598 { type$ "proceedings" = %% Sonderfall, es darf VOLUME und NUMBER ex. !
600 { "(" series * ")" * }
601 { "(" series * number tie.or.space.connect ")" * }
604 { "" }%% Ausstieg mit Nullstring, s. Kommentar
606 }%% bei gezaehlten Reihen MUSS die Reihennr. im Feld NUMBER stehen!
607 if$ %% wenn also d. Feld VOLUME nicht leer ist, dann liegt ausser bei
608 %% Typ PROCEEDINGS falsche
609 } %% Erfassung vor und es erfolgt d. Ausstieg mit d. Nullstring!
613 %% seltener Fall bei MISC: Ausgabe einer Serie; die Nummer der Serie muss
614 %% in SERIES miterfasst werden 16/6/99
616 FUNCTION {format.misc.series}
619 { "(" series * ")" * }
625 %% Auflagenvermerke gibt man komplett, einschliesslich Abkuerzungen in
626 %% das Feld edition ein: ---> EDITION= { 3., erw. und verb. Aufl. }
627 %% oder fremdsprachlich: EDITION= { 2nd edition }
629 FUNCTION {format.edition}
637 FUNCTION { format.isbn.issn }
641 { "ISSN" issn n.dashify tie.or.space.connect }
644 { "ISBN" isbn n.dashify tie.or.space.connect }
648 %%$$$ geaendert, 21/2/94 gibt Seitenzahl bei BOOK-Typ und verwandten T. aus
649 FUNCTION {format.pages.book}
652 { "" pages n.dashify tie.or.space.connect " S" *} %% 17/12/95
656 %%$$$ alle anderen Seitenang. zB. Zeitschrft., INBOOK usw. a la Orig., 9/3/94
657 FUNCTION {format.pages}
660 { "S." pages n.dashify tie.or.space.connect }
664 %% Angaben v. Jahrgang, Jahr, Heftnr., Seiten bei Artikel-Typ
667 FUNCTION {format.vol.year.num.pages}
668 { volume field.or.null
670 { "Es gibt einen Jahrgang, aber kein Jahr in " cite$ * warning$ }
671 { " (" year * ")" * * }
679 { ", Nr. " number * * }
681 pages empty$%% Lo, 26/2/97
683 { ", " format.pages * *}%%
686 %% pages empty$%% das war die Fass. Nov. 96, die auch ging
688 %% { duplicate$ empty$
689 %% { pop$ format.pages }%% da pages leer, wird nur "" auf stack gelegt
690 %% { ", " format.pages * *}
698 FUNCTION {format.chapter.pages}
705 chapter tie.or.space.connect
708 { ", " * format.pages * }
714 %%$$$ geaendert 21/2/94
715 FUNCTION {format.in.ed.booktitle.din}
720 { "{In: }" booktitle emphasize * }%% n. Belieben fettes In:
721 { "{In: }" booktitle emphasize * %% - " -
722 " Bd." volume tie.or.space.connect *
727 { "{In: }" format.ed.incoll * ": " * booktitle emphasize * }
728 { "{In: }" format.ed.incoll * ": " * booktitle emphasize *
729 " Bd." volume tie.or.space.connect *
739 FUNCTION {format.thesis.type}
748 %% geaendert 23/2/94 i.Orig. wird zuerst die number, dann der type getestet
749 FUNCTION {format.tr.number.din}
752 { " -- Forschungsbericht" } %% bei Minimalangaben besser ohne "."!
753 { "(" number tie.or.space.connect "). -- Forschungsbericht" * }
757 { " -- " type * } %% bei Minimalangaben besser ohne "."!
758 { "(" number tie.or.space.connect "). -- " * type * }
765 FUNCTION {format.article.crossref}
768 { "need key or journal for " cite$ * " to crossref " * crossref *
772 { "{In: }{\em " journal * "\/}" * }%%
777 "{\cite{" * crossref * "}" * "}" * ", " * format.pages *
778 %% " (siehe \cite{" * crossref * "}" * "), " * format.pages *
781 %%geaendert 7/3/94 und noch einmal nach Lueddecke, s.o.
782 FUNCTION {format.crossref.editor}
783 %vorher,Lue { editor #1 "{vv~}{ll}" format.name$ " (Hrsg.)" *
784 { editor #1 "{ll}" format.name$ " (Hrsg.)" *
785 editor num.names$ duplicate$
787 { pop$ " [u.~a.]" * }
788 %% { pop$ " et~al." * }
791 { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
794 { " ; " * editor #2 "{vv~}{ll}" format.name$ * " (Hrsg.)" * }
803 FUNCTION {format.book.crossref}
805 { "empty volume in " cite$ * "'s crossref of " * crossref * warning$
809 { ". -- Bd." volume tie.or.space.connect
814 editor field.or.null author field.or.null =
818 { "need editor, key, or series for " cite$ * " to crossref " *
822 { "" * }%% dadurch kommt nach der Bandzaehl. gleich das label 2/6/99
823 %% { "{\emph{" * series * "}} {\texttt{siehe}}" * }
829 { "" * }%% nach der Bandzaehlung kommt gleich das label; Lo 2/6/99
830 %% { format.crossref.editor * }
832 "{\cite{" * crossref * "}" * "}" *
833 %% "{\cite{" * crossref * "}" * "}" * %%"), " * format.pages *
836 FUNCTION {format.incoll.inproc.crossref}
838 editor field.or.null author field.or.null =
842 { "need editor, key, or booktitle for " cite$ * " to crossref " *
846 { "{In: }{\emph " booktitle * "}" * }%% fettes In: n. Belieben
849 { "{In: }" }%% 26/5/99
850 %% { "{In: }" key * }
853 %% { "{In: }{\em " booktitle * "\/}" * }%%
854 { "{In: }" }%% Lo, 10/2/99 es sieht der reine Bezug (Referenz) besser aus!
856 %% " (siehe \cite{" * crossref * "}" * "), " * format.pages *
857 "{\cite{" * crossref * "}" * "}" * ", " * format.pages *%% das fette label, Lo 23/2/99
858 %% alte Vers. bis 27/2/97 " (siehe \cite{" * crossref * "}" * ")" *
864 format.authors "author" output.check
866 format.title "title" output.check
868 { journal article.in.journal output.nonnull % 26/2/97
870 format.vol.year.num.pages output
872 { format.article.crossref output.nonnull }
874 note set.period.dash.check
876 issn set.period.dash.check
877 format.isbn.issn output
881 %%$$$ geaendert, 20/2/94
885 { format.editors "author and editor" output.check }
886 { format.authors format.editors output.nonnull }
890 { format.btitle.vol "title" output.check }
891 { format.btitle "title" output.check }
893 format.edition "edition" output.check
894 format.address.publisher.year "publisher" output.check
897 { format.series.number.din output
898 pages set.period.dash.check%% 19/5/99 wie bei adinat.bst
899 format.pages.book output
901 { format.book.crossref output.nonnull
902 pages set.period.dash.check
903 format.pages.book output
906 note set.period.dash.check
908 isbn set.period.dash.check
909 format.isbn.issn output
916 %% unselbst. Teile eines Buches werden am Anf. genannt, dann d selbst. Quelle
918 { "Es fehlen die Kapitelangaben in " cite$ * warning$ }
920 { "Kap. " }%% d.i. die Standardvorgabe
921 { type }%% wenn man keine bes. Typform angeben will, koennte ein kl.
922 %% Zwischenraum gewaehlt werden, z.B. " \, "
924 chapter tie.or.space.connect " {In: }" * * %% n. Belieben fettes In:
928 %% -------- jetzt kommt der bibliogr. selbst. Teil
930 { format.editors "author and editor" output.check }
931 { format.authors output.nonnull
935 format.btitle.vol "title" output.check
937 { format.edition output
938 format.address.publisher.year "publisher" output.check
940 format.series.number.din output
943 format.pages "pages" output.check
944 note set.period.dash.check
947 { format.book.crossref output.nonnull
948 note set.period.dash.check
952 isbn set.period.dash.check
953 format.isbn.issn output
957 %% geaenderte Seitenzahlausgabe, wenn crossref-Feld benutzt wird, 27/2/97
958 FUNCTION {incollection}
960 format.authors "author" output.check
962 format.title "title" output.check
964 { format.in.ed.booktitle.din "booktitle" output.check
965 format.edition output
966 format.address.publisher.year "publisher" output.check
968 format.series.number.din output
969 note set.period.dash.check
971 isbn set.period.dash.check
972 issn set.period.dash.check
973 format.isbn.issn output
975 format.chapter.pages "pages" output.check
977 { format.incoll.inproc.crossref output.nonnull
978 note set.period.dash.check
980 isbn set.period.dash.check
981 issn set.period.dash.check
982 format.isbn.issn output
988 %% geaendert 22/2/94, 15/11/96 (Hinweis v. Alin Shindun, Uni Siegen)
989 FUNCTION {inproceedings}
991 format.authors "author" output.check
993 format.title "title" output.check
995 { format.in.ed.booktitle.din "booktitle" output.check
997 { organization new.sentence.checka
1000 format.address.publisher.year output
1002 { format.address.publisher.year "publisher" output.check }
1005 series empty$ %%neu nach Hinweis v. Alin Shindun, 15/11/96
1007 { format.series.number.din output }
1009 note set.period.dash.check
1011 isbn set.period.dash.check
1012 issn set.period.dash.check
1013 format.isbn.issn output
1017 { format.incoll.inproc.crossref output.nonnull
1018 note set.period.dash.check
1020 isbn set.period.dash.check
1021 issn set.period.dash.check
1022 format.isbn.issn output
1028 FUNCTION {conference} { inproceedings }%% nach Patashnik, wg US-Kompatibilitaet
1030 %% geaendert, 11/6/99
1034 { organization empty$
1037 {format.btitle "title" output.check }
1040 { organization output.nonnull
1042 format.btitle "title" output.check
1046 { format.authors output.nonnull
1048 format.btitle "title" output.check
1051 format.edition "edition" output.check
1053 { organization empty$
1060 { address ": " * organization * output
1065 pages set.period.dash.check
1066 format.pages.book output
1067 note set.period.dash.check
1072 %% MASTERSTHESIS ersetzt zugleich PHDTHESIS !! KFL, 17/2/94
1073 %% Ausgabe-Standard ist "Diplomarbeit", fuer andere Abschlussarbeiten
1074 %% bei der Erfassung TYPE="anderer Typ" eingeben.
1075 %% z.B. TYPE={Dissertation}, TYPE={Diss.}, TYPE={Habil.}, TYPE={Magisterarb.}
1077 FUNCTION {mastersthesis}
1079 format.authors "author" output.check
1081 format.btitle "title" output.check
1084 school "school" output.check
1086 "Diplomarbeit" format.thesis.type output.nonnull
1088 format.date "year" output.check
1089 %% pages new.sentence.checka
1090 pages set.period.dash.check
1091 format.pages.book output
1092 note set.period.dash.check
1097 FUNCTION {phdthesis} %% {mastersthesis}% ist identisch bis auf Standardwert, s.o.
1099 format.authors "author" output.check
1101 format.btitle "title" output.check
1104 school "school" output.check
1106 "Diss." format.thesis.type output.nonnull % koennte auch `Dissertation' sein
1108 format.date "year" output.check
1109 pages set.period.dash.check
1110 format.pages.book output
1111 note set.period.dash.check
1116 %% hiermit werden u.a. Normen erfasst
1122 { format.authors format.editors output.nonnull
1123 format.btitle output
1129 { note duplicate$ #1 #4 substring$ "Norm" =
1130 { output new.sentence
1137 { organization empty$
1139 { format.editors.organization output.nonnull
1143 { format.editors format.editors.organization output.nonnull
1147 { format.authors format.editors output.nonnull
1150 format.btitle output
1154 format.misc.series output%% neu 16/6/99
1155 note set.period.dash.check
1164 FUNCTION {booklet} {misc}%% booklet ist nach dt. Vorgehensweise oft ueberfluessig
1166 %% geaendert 21/5/99
1167 FUNCTION {proceedings}
1170 { organization empty$
1172 { organization " (Veranst.)" * output }
1175 { format.editors format.editors.organization output.nonnull }
1178 format.btitle "title" output.check
1180 { "" output.nonnull }
1181 { "{\textnormal{Bd.}}" volume tie.or.space.connect emphasize "volume" output.check }
1183 format.address.publisher.year "publisher" output.check
1185 format.series.number.din output.nonnull
1186 pages set.period.dash.check
1187 format.pages.book output
1188 note set.period.dash.check
1190 isbn set.period.dash.check
1191 issn set.period.dash.check
1192 format.isbn.issn output
1196 %% geaendert 23/2/94 auch fuer Firmenschriften u."a. zu benutzen
1197 FUNCTION {techreport}
1200 { format.editors "author and editor" output.check }
1201 { format.authors format.editors output.nonnull }
1204 format.title "title" output.check
1205 institution new.sentence.checka
1208 { " / " institution * output.nonnull }
1210 format.address.publisher.year output
1211 number new.sentence.checka
1212 format.tr.number.din "number" output.check
1214 pages set.period.dash.check
1215 format.pages.book output
1216 note "note" output.check
1217 isbn set.period.dash.check
1218 issn set.period.dash.check
1219 format.isbn.issn output
1223 FUNCTION {unpublished} {misc}%% author, title, note muessen sein! howpublished
1224 %% %% entfaellt natuerlich
1225 FUNCTION {default.type} { misc }
1227 MACRO {jan} {"Januar"}
1229 MACRO {feb} {"Februar"}
1231 MACRO {mar} {"M{\^^b a}rz"}
1232 %% nach Bernd Raichle, Febr. 1999
1234 MACRO {apr} {"April"}
1240 MACRO {jun} {"Juni"}
1242 MACRO {jul} {"Juli"}
1244 MACRO {aug} {"August"}
1246 MACRO {sep} {"September"}
1248 MACRO {okt} {"Oktober"}
1250 MACRO {oct} {"Oktober"}
1252 MACRO {nov} {"November"}
1254 MACRO {dez} {"Dezember"}
1256 MACRO {dec} {"Dezember"}
1258 %% stillgelegte Beispiele fuer den Gebrauch von Kuerzeln (hier Zs-Titel).
1260 %%MACRO {acmcs} {"ACM Computing Surveys"}
1262 %%MACRO {acta} {"Acta Informatica"}
1264 %%MACRO {cacm} {"Communications of the ACM"}
1266 %%MACRO {ibmjrd} {"IBM Journal of Research and Development"}
1268 %%MACRO {ibmsj} {"IBM Systems Journal"}
1270 %%MACRO {ieeese} {"IEEE Transactions on Software Engineering"}
1272 %%MACRO {ieeetc} {"IEEE Transactions on Computers"}
1275 %% {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"}
1277 %%MACRO {ipl} {"Information Processing Letters"}
1279 %%MACRO {jacm} {"Journal of the ACM"}
1290 FUNCTION {chop.word}
1293 s #1 len substring$ =
1294 { s len #1 + global.max$ substring$ }
1299 INTEGERS { et.al.char.used }
1301 FUNCTION {initialize.et.al.char.used}
1302 { #0 'et.al.char.used :=
1305 EXECUTE {initialize.et.al.char.used}
1307 FUNCTION {format.lab.names}
1309 s num.names$ 'numnames :=
1312 { #3 'namesleft := }
1313 { numnames 'namesleft := }
1318 { nameptr numnames =
1319 { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" =
1320 %% { "\," * %% kein besonderes Zeichen fuer "others" i. label
1321 { "{\etalchar{+}}" * %% ein plus-Zeichen (+) fuer "others"!
1322 #1 'et.al.char.used :=
1324 %% { s nameptr "{v{}}{l{}}" format.name$ * }
1325 { s nameptr "{l{}}" format.name$ * }
1328 %% { s nameptr "{v{}}{l{}}" format.name$ * }
1329 { s nameptr "{l{}}" format.name$ * }
1331 nameptr #1 + 'nameptr :=
1332 namesleft #1 - 'namesleft :=
1336 %% { "\," * %% s. Bemerkung oben
1337 { "{\etalchar{+}}" *
1338 #1 'et.al.char.used :=
1343 %% { s #1 "{v{}}{l{}}" format.name$
1344 { s #1 "{l{}}" format.name$
1345 duplicate$ text.length$ #2 <
1346 { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } %% vgl. Anmerkung!
1352 %% Anmerkung, Lo 14/12/95:
1353 %% wenn man in der letzten label-Bearbeitung #4 statt #3 setzt, dann werden
1354 %% auch Umlaute oder á an 3. Stelle im Namen korrekt in das label genommen.
1355 %% Tip: Aendere diese Zahl nur, wenn in einer Lit.-Liste der Umlautsonderfall
1356 %% stoerend auffaellt.
1358 FUNCTION {author.key.label}
1361 { cite$ #1 #3 substring$ }
1362 { key #3 text.prefix$ }
1365 { author format.lab.names }
1369 FUNCTION {author.editor.key.label}
1373 { cite$ #1 #3 substring$ }
1374 { key #3 text.prefix$ }
1377 { editor format.lab.names }
1380 { author format.lab.names }
1384 FUNCTION {author.key.organization.label}
1387 { organization empty$
1388 { cite$ #1 #3 substring$ }
1389 { "The " #4 organization chop.word #3 text.prefix$ }
1392 { key #3 text.prefix$ }
1395 { author format.lab.names }
1398 %% neu 19/5/99 damit eigene labels fuer Konferenzen erzeugt werden koennen,
1399 %% darf man zusaetzlich auch ein key-Feld eingeben. Das produziert
1400 %% dann vorrangig das label.
1401 FUNCTION {editor.key.organization.label}
1404 { organization empty$
1405 { cite$ #1 #3 substring$ }
1406 { "The " #4 organization chop.word organization } %% Lo, 26/1/98
1407 %% { "The " #4 organization chop.word #3 text.prefix$ }
1410 { key #5 text.prefix$ }%% man kann Laenge des key einstellen
1413 { key empty$%% wenn key vh., dann macht er das label! Lo,18/5/99
1414 { editor format.lab.names }
1415 { key #5 text.prefix$ }
1421 FUNCTION {calc.label}
1425 'author.editor.key.label
1426 { type$ "proceedings" =
1427 'editor.key.organization.label
1429 'author.key.organization.label
1437 year field.or.null purify$ #-1 #2 substring$
1440 year field.or.null purify$ #-1 #4 substring$
1442 sortify 'sort.label :=
1445 FUNCTION {sort.format.names}
1449 s num.names$ 'numnames :=
1450 numnames 'namesleft :=
1456 % s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't :=
1458 % Zeile geaendert, damit die Namenszusaetze wie von, de usw nach deutscher
1459 % Norm richtig einsortiert werden. 27.10.94 Lueddecke
1461 s nameptr "{ll{ }}{ ff{ }}{ vv{ }}{ jj{ }}" format.name$ 't :=
1462 nameptr numnames = t "others" = and
1464 %% { "et al" * }% Geschmackssache
1467 nameptr #1 + 'nameptr :=
1468 namesleft #1 - 'namesleft :=
1473 FUNCTION {sort.format.title}
1482 "The " #4 t chop.word
1491 #1 global.max$ substring$
1494 FUNCTION {author.sort}
1497 { "to sort, need author or key in " cite$ * warning$
1503 { author sort.format.names }
1507 FUNCTION {author.editor.sort}
1511 { "to sort, need author, editor, or key in " cite$ * warning$
1517 { editor sort.format.names }
1520 { author sort.format.names }
1524 FUNCTION {author.organization.sort}
1526 { organization empty$
1528 { "to sort, need author, organization, or key in " cite$ * warning$
1534 { "The " #4 organization chop.word sortify }
1537 { author sort.format.names }
1541 FUNCTION {editor.organization.sort}
1543 { organization empty$
1545 { "to sort, need editor, organization, or key in " cite$ * warning$
1551 { "The " #4 organization chop.word sortify }
1554 { editor sort.format.names }
1567 { type$ "proceedings" =
1568 'editor.organization.sort
1570 'author.organization.sort
1580 year field.or.null sortify
1587 #1 entry.max$ substring$
1595 STRINGS { longest.label last.sort.label next.extra }
1597 INTEGERS { longest.label.width last.extra.num }
1599 FUNCTION {initialize.longest.label}
1600 { "" 'longest.label :=
1601 #0 int.to.chr$ 'last.sort.label :=
1603 #0 'longest.label.width :=
1604 #0 'last.extra.num :=
1607 FUNCTION {forward.pass}
1608 { last.sort.label sort.label =
1609 { last.extra.num #1 + 'last.extra.num :=
1610 last.extra.num int.to.chr$ 'extra.label :=
1612 { "a" chr.to.int$ 'last.extra.num :=
1614 sort.label 'last.sort.label :=
1619 FUNCTION {reverse.pass}
1621 { "a" 'extra.label := }
1624 label extra.label * 'label :=
1625 label width$ longest.label.width >
1626 { label 'longest.label :=
1627 label width$ 'longest.label.width :=
1631 extra.label 'next.extra :=
1634 EXECUTE {initialize.longest.label}
1636 ITERATE {forward.pass}
1638 REVERSE {reverse.pass}
1640 FUNCTION {begin.bib}%%lt. Original wiederhergestellt 4/1/96
1642 { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ }
1647 { preamble$ write$ newline$ }
1649 "\begin{thebibliography}{" longest.label * "}" * write$ newline$
1654 EXECUTE {init.state.consts}
1656 ITERATE {call.type$}
1660 "\end{thebibliography}" write$ newline$
1665 %% Ende von ALPHADIN.BST KFL, 23/11/99