%% ALPHADIN.BST Ausgabe [8] 10/10/00 %% (C) Klaus F. Lorenzen, Hamburg email: lorenzen.marxen@t-online.de %% ersetzt ALPHADIN.BST Ausgabe [7,1] vom 23/11/99 %% ersetzt DinAlpha.BST von 1994 %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% ALPHADIN.BST wurde entwickelt aus BibTeX standard bibliography style %% `alpha'.Mit ALPHADIN.BST werden Literaturverzeichnisse gemaess der deutschen %% Zitiernorm DIN 1505 Teil 2 formatiert. %% Analog zu den 4 US standard styles wird ein vollstaendiger Satz von %% 4 DIN-gerechten bst-style Dateien veroeffentlicht (alphadin.bst, %% plaindin.bst, unsrtdin.bst, abbrvdin.bst). Die gueltige Version %% ist am schnellsten aus dem WWW ueber folgende URL zu beziehen %% http://www.fh-hamburg.de/pers/Lorenzen/bibtex/ %% Stand: 16/6/99 %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% WAS IST ALPHADIN.BST ? %% Dieser style produziert "deutsche" Literaturzitate in Literaturverzeichnis- %% sen gemaess der deutschen Norm DIN 1505, Teil 2 vom Jan. 1984. %% Die Literaturzitate werden alphabetisch nach Verfassern sortiert %% und sind durch abgekuerzte Verfasserbuchstaben plus Erscheinungsjahr in %% eckigen Klammern gekennzeichnet. %% Es gibt Unterschiede zwischen der US- und der deutschen Zitierkonvention, %% was die bibliographischen Typen und die verschiedenen Trennzeichen zwischen %% den Feldern angeht. Daher ist auch keine 100%ige Abbildung der beiden %% Regelwerke aufeinander moeglich. Dies ist aber immer durch eine achtsame %% Erfassung beherrschbar! Die vorliegenden DIN-styles versuchen einige %% bibliographische Beschraenkungen der Originalstyles zu ueberwinden. %% Es laesst sich in fast allen Faellen problemlos ein Original-bib-file %% (d.i. die Datenbank, die die bibliographischen Informationen enthaelt) %% wahlweise nach US-Norm oder deutscher DIN-Norm verarbeiten. %% [Beispiel: Produzieren Sie mit der XAMPL.bib-Datenbank aus dem Original- %% paket 2 verschiedene Literaturverzeichnisse.] Zu Gunsten %% der Allgemeingueltigkeit von bib-files ist bei den Publikationstypen %% (entry-types) und den bibliographischen Kategorien (fields) in Zweifels- %% faellen immer die originale US-Bedeutung beibehalten worden. %% Bei der Erfassung von Literaturquellen in bib-files %% gelten folglich die in der TEX-Literatur veroeffentlichten Regeln. %% Kommt es dennoch zu kleineren "Schoenheitsfehlern" im fertig gesetzten %% output, so koennen diese so gut wie immer durch eine leicht veraenderte %% Erfassung im bib-inputfile beseitigt werden. Last but not least koennen %% Sie im output-file < *.bbl > noch letzte Hand zur Korrektur ansetzen. % %% UMGANG MIT FEHLERMELDUNGEN %% Noch nicht alle ueberfluessigen Fehlermeldungen des Original-style sind %% ausgemerzt. Die meisten Warnmeldungen beruhen auf %% den andersartigen bibliographischen Regeln nach DIN 1505 und dem damit %% verbundenen Ermessensspielraum, sind also in Wahrheit keine "Fehler". %% Dennoch sollten Sie diese Warnungen beachten, um herauszufinden, ob %% evtl. eine unzulaessige Kombination von Publikationstyp (=entry-type) und %% "fields" vorgenommen worden ist. Das fuehrt mitunter zu Wasserfallartigen %% Fehlermeldungen: meistens duerfen Sie das einfach ignorieren. %% %% DANKSAGUNG %% Hartmut Lueddecke, FH Hamburg habe ich fuer viele Verbesserungsvorschlaege %% und stete Unterstuetzung zu danken. Vielen an dieser Stelle ungenannt %% bleibenden Anwendern gilt mein Dank, die in den vergangenen Jahren durch %% ihre Aufmerksamkeit dazu beigetragen haben, Fehler auszumerzen und %% Verbesserungen vorzunehmen. %% %% HINWEIS: es gibt eine Kombination von ALPHADIN.BST mit dem NATBIB-Stil %% von Patrick W.Daly), womit Literaturverzeichnisse komplett nach %% DIN 1505 Teil 2 UND Teil 3 formatiert werden koennen. Naeheres %% per URL http://www.fh-hamburg.de/pers/Lorenzen/bibtex/ %% %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ %% Eine ausfuehrliches Internet-Tutorial mit Beispielen ist in Vorbereitung. %% Fuer den Anfang ist diese Datei schon etwas kommentiert! %% Kritik, Vorschlaege usw. bitte an : %% FH Hamburg, Klaus F. Lorenzen, Grindelhof 30, 20146 Hamburg %% e-mail: lorenzen.marxen@t-online.de %% 16/6/99 %% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ % version 0.99c for BibTeX versions 0.99c or later, LaTeX2e % Copyright (C) 1985, all rights reserved. % Copying of this file is authorized only if either % (1) you make absolutely no changes to your copy, including name, or % (2) if you do make changes, you name it something other than % bstdin.doc, plaindin.bst, unsrtdin.bst, alphadin.bst, and abbrvdin.bst. % This restriction helps ensure that all standard styles are identical. %% ==> The file btxbst.doc has the original documentation for style 'alpha'. %% ENTRY { address %% Verlagsort author %% persoenlicher Urheber eines Werkes booktitle %% a) Gesamttitel eines mehrbaendigen Werkes % %% b) Titel des Sammelwerks, das einzelne selbstaendige % %% Beitraege mit eigenem Titel enthaelt (->incollection) chapter %% Kapitel in einem Buch (Monographie) edition %% Auflagevermerk editor %% Persoenl.Herausgeber oder Koerperschaftlicher Herausgeber howpublished %% beliebiger Verlegervermerk: von wem, wo institution %% Institution, die e.Verlagsfreie Veroeffentlichung betreibt isbn %% Standardnr fuer Buecher issn %% - " - : Zeitschriften u. Serien journal %% Titel einer Zeitschrift key %% Zusaetzlich vergebener Sortierschluessel, mitunter notwend. month %% naehere Bestimmung des Erscheinungsjahres (-> macro 's) note %% freies Eingabefeld fuer zusaetzliche Informationen number %% Mehrfachbedeutung in Abhaengigkeit vom Eingabetyp organization %% a) Name der Organisation/des Veranstalters e. Tagung,Konferenz % %% b) Name einer Firma/Gesellschaft, die ein ->manual herausgab pages %% Umfangsangaben, meist Seitenzahlen publisher %% Verlag school %% Hochschule/Universitaet, die eine Dipl.-Arb./Dissertation veroeff. series %% Titel e.Reihe, in der ein best. Buchtitel erschienen ist title %% Titel einer (namentlich gekennzeichneten) Veroeffentlichung type %% Zusatzfeld z.Kennzeichnung e.besonderen Publikationstyps volume %% a) Zaehlung bei einem mehrbaendigen Werk (-> book) % %% b) Jahrgang einer Zeitschrift (-> article year %% Erscheinungsjahr } {} { label extra.label sort.label } INTEGERS { output.state before.all mid.sentence after.sentence after.block } %% die folg. BOOLE'sche VAR steuern d. Ausg. ": " nach Urheber-Feldern %% und ". - " vor ISBN oder Anmerkungen (NOTE) INTEGERS { colon.after period.dash } FUNCTION {init.state.consts} { #0 'before.all := #1 'mid.sentence := #2 'after.sentence := #3 'after.block := #4 'colon.after := #5 'period.dash := } INTEGERS { zahl lang } STRINGS { h s t u v } %% neue DIN-Funktion, 16/2/94 FUNCTION {output.nonnull} { 's := output.state after.block = { add.period$ write$ newline$ "\newblock " write$ } { output.state before.all = { write$ } { output.state colon.after = { ": " * write$ newline$ "\newblock " write$ } { output.state period.dash = { ". -- " * write$ newline$ "\newblock " write$ } { output.state mid.sentence = { ", " * write$ } { write$ newline$ "\newblock " write$ } if$ } if$ } if$ } if$ after.block 'output.state := } if$ s } FUNCTION {output} { duplicate$ empty$ 'pop$ 'output.nonnull if$ } FUNCTION {output.check} { 't := duplicate$ empty$ { pop$ "empty " t * " in " * cite$ * warning$ } 'output.nonnull if$ } FUNCTION {output.bibitem} { newline$ "\bibitem[" write$ label write$ "]{" write$ cite$ write$ "}" write$ newline$ "" before.all 'output.state := } FUNCTION {fin.entry} %%$$$ nach DIN neu 16/2/94 { write$ newline$ } FUNCTION {set.period.dash} %% Wenn ein ". - " die Satzteile trennen soll.! { output.state before.all = 'skip$ { period.dash 'output.state := } if$ } %% neu 16/2/94 %% prueft, ob PAGES, ISBN- oder NOTE-Feld vh. ist und setzt dann ". - " davor. FUNCTION {set.period.dash.check} { empty$ 'skip$ 'set.period.dash if$ } FUNCTION {set.colon.after} %%$$$ Wenn ein ": " d. Satzteile trennen soll! { output.state before.all = 'skip$ { colon.after 'output.state := } if$ } %% neu / alt 17/2/94 Wenn ein " " die Satzteile trennen soll.! FUNCTION {new.sentence} { output.state before.all = 'skip$ { after.sentence 'output.state := } if$ } %% neu 17/2/94 Wenn ein ", " die Satzteile trennen soll.! FUNCTION { part.of.sentence } { output.state before.all = 'skip$ { mid.sentence 'output.state := } if$ } FUNCTION {not} { { #0 } { #1 } if$ } FUNCTION {and} { 'skip$ { pop$ #0 } if$ } FUNCTION {or} { { pop$ #1 } 'skip$ if$ } FUNCTION {new.sentence.checka} { empty$ 'skip$ 'new.sentence if$ } FUNCTION {field.or.null} { duplicate$ empty$ { pop$ "" } 'skip$ if$ } INTEGERS { nameptr namesleft numnames } STRINGS { fkt } FUNCTION {emphasize} { duplicate$ empty$ { pop$ "" } { "\emph{" swap$ * "}" * } if$ } %% neu, setzt Autor/Hrsg. in Kapitaelchen 9/3/94 FUNCTION { capitalize } { duplicate$ empty$ { pop$ "" } { "\textsc{" swap$ * "}" * } if$ } %%$$$ DIN-Quellenangabe : spezieller unselbst. Teil ist erschienen "In: " %% dem bibliogr. selbst. Werk, z.B. Zeitschrift, Buch %% 1/4/96 FUNCTION {article.in.journal} { duplicate$ empty$ { pop$ "" } { author missing$ { title missing$ { emphasize " " * * }%% wenn ein Zs-Heft als ganzes zitiert wird { emphasize "{In: }" swap$ " " * * } if$ } { emphasize "{In: }" swap$ " " * * } if$ } if$ } %% nach Vorschlag von H.Lueddecke, um Adelspraedikate beim Sortieren %% nach den(m) Vornamen aufzufuehren. Lo, 2/11/94 FUNCTION {format.names} { 's := "" 'u := #1 'nameptr := s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { s nameptr "{vv~}{ll}" format.name$ 't :=%% das ergibt DIN-Ansetzung %% Lue's Vorschlag s nameptr "{ll}" format.name$ 't := t capitalize 't := s nameptr "{, ff}" format.name$ 'u := %% Lue's Vorschlag s nameptr "{, ff}{ vv}" format.name$ 'u := u text.length$ 'lang := #1 'zahl := "" 'v := { zahl lang < } { u zahl #1 substring$ "~" = { v "" = { u #1 zahl #1 - substring$ 'v := } 'skip$ if$ v u zahl #2 substring$ * "." * 'v := } 'skip$ if$ zahl #1 + 'zahl := } while$ v "" = { u 'v := } 'skip$ if$ %% der string fkt enthaelt " (Hrsg.)", wenn Editorfeld nicht leer ist t v * fkt * 't := %% Komma nach Nachnamen wird oben erledigt! %% t enthaelt nun d. formatierten Nnamen, Vnamen nameptr #1 > { namesleft #1 > { " ; " * t * } { numnames #2 > { " " * } 'skip$ if$ %% %% n. schindle's hinweis 12/1/96 erweitert t "\textsc{others}" = t "\textsc{others} (Hrsg.)" = or { " [u.~a.]" * }%% 13/2/94 %%%% { "et~al." * } %% Geschmackssache, waehle eins von beiden { " ; " * t * } if$ } if$ %% Ende der namesleft-Pruefung } 't %% hierdurch wird bei jed. Schleifendurchgang das sich komplet- %% tierende Zwischen-Namensergebnis wieder auf den stack gelegt if$ %% Ende der nameptr-Pruefung nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ %% Ende von { namesleft #0 > } ganz oben "" 'fkt := %% fkt wird zurueckgesetzt } %%$$$ geaendert 14/2/94 FUNCTION {format.authors} { author empty$ { "" } { author format.names } if$ } %%$$$ geaend. 20/2/94 Anpassung an DIN, wonach Autor + Hrsg. zusammen vorkom- %% men duerfen.!! FUNCTION {format.editors} { editor empty$ { author empty$ { "Weder Verfasser noch Hrsg. in " cite$ * warning$ } 'skip$ if$ } { author empty$ { " (Hrsg.)" 'fkt := editor format.names } { " (Hrsg.)" 'fkt := " ; " * editor format.names * } if$ } if$ } %% Lo, 12/5/99 neue Funktion fuer proceedings, misc usw. FUNCTION { format.editors.organization } { organization empty$ 'skip$ { type$ "misc" = { organization } { " ; " * organization " (Veranst.)" *} if$ } if$ } %%$$$ Sonderfall: Herausgeber bei Typ incollection, 21/2/94 FUNCTION {format.ed.incoll} { editor empty$ { "" } { " (Hrsg.)" 'fkt := editor format.names } if$ } FUNCTION {format.title} { title empty$ { "" } { title } %% Text so wie er dasteht im Feld title if$ } FUNCTION {n.dashify} { 't := "" { t empty$ not } { t #1 #1 substring$ "-" = { t #1 #2 substring$ "--" = not { "--" * t #2 global.max$ substring$ 't := } { { t #1 #1 substring$ "-" = } { "-" * t #2 global.max$ substring$ 't := } while$ } if$ } { t #1 #1 substring$ * t #2 global.max$ substring$ 't := } if$ } while$ } %% geaendert 24/2/94 FUNCTION {format.date} { year empty$ { month empty$ { "" } { "there's a month but no year in " cite$ * warning$ month } if$ } { month empty$ %% b. Buechern nur Jahr, ohne Monat ausgeb. im Impressum 'year { month " " * year * } if$ } if$ } %% %%$$$ neue Fkt., 16/2/94 u. 14/3/94 das sog. Impressum FUNCTION {format.address.publisher.year} { publisher empty$ { address empty$ { year empty$ { "" } { year } if$ } { "Es gibt einen Verlagsort, aber keinen Verlag in " cite$ * warning$ address ", " * format.date * } if$ } { address empty$ { year empty$ { "Es gibt nur eine Verlagsangabe in " cite$ * warning$ publisher } { publisher ", " * format.date * } if$ } { year empty$ { address " : " * publisher * } { address " : " * publisher * ", " * format.date * } if$ } if$ } if$ } FUNCTION {format.btitle} { title emphasize } FUNCTION {tie.or.space.connect} { duplicate$ text.length$ #3 < { "~" } { " " } if$ swap$ * * } FUNCTION {either.or.check} { empty$ 'pop$ { "can't use both " swap$ * " fields in " * cite$ * warning$ } if$ } %% neu 8/3/94 in dieser Funkt. steckt im volume empty-Teil noch ein bug, der %% aber ignoriert werden kann; das Ergebnis ist ok. FUNCTION {format.btitle.vol} { number empty$ { series empty$ { volume empty$ { title emphasize } { title emphasize ". Bd." * volume tie.or.space.connect } if$ } { volume empty$ { title emphasize }%% ein Buch, das zusaetzl. SERIES=Reihentitel besitzt %% jetzt kommt d. Fall des mehrbaendigen Werkes mit Gesamttitel=SERIES %% Zaehlung=VOLUME und Bandtitel=TITLE; { series emphasize ". Bd." * volume tie.or.space.connect ": " * "{\emph{" * title * "}}" * } if$ } if$%% series-test } { title emphasize }%% wenn number ex., dann immer title-Feld if$%% Ende number-test } %%$$$ neu 16/2/94 %% Serien- / Reihentitel werden im Feld series gespeichert. Weist die %% Serie eine Zaehlung der Einzeltitel auf, gibt man entweder nach DIN alles %% in das Feld series so ein: ---> TITEL DER SERIE NR. (der Vorlage) <--- %% z. B. SERIES= { Mensch und Computer 12 }. %% [ Die Nummer der Vorlage darf auch durch " ; " abgesetzt werden. ] %% oder: %% man gibt die Zaehlung in das Feld NUMBER ein, z.B. NUMBER = {12}. %% Achtung!! %% Bei mehrbaendigen Werken steht d. Gesamttitel im Feld SERIES und die %% Bandzaehlung im Feld VOLUME; NUMBER darf dann nicht besetzt sein! %% Anderenfalls liegt ein Erfassungsfehler vor, da sich Reihe u. mehrbd. %% Werk gegenseitig ausschliessen. FUNCTION {format.series.number.din} { volume empty$ { number empty$ { series empty$ { "" }%% Ausstieg mit Nullstring { "(" series * ")" * } %% d. Seriennr koennte auch gleich hier %% im SERIES-Feld miterfasst werden if$ } { series empty$ { "(" number tie.or.space.connect ")" * "there's a number but no series in " cite$ * warning$ } { "(" series * number tie.or.space.connect ")" * } if$ } if$ } { series empty$ { "" } { type$ "proceedings" = %% Sonderfall, es darf VOLUME und NUMBER ex. ! { number empty$ { "(" series * ")" * } { "(" series * number tie.or.space.connect ")" * } if$ } { "" }%% Ausstieg mit Nullstring, s. Kommentar if$ }%% bei gezaehlten Reihen MUSS die Reihennr. im Feld NUMBER stehen! if$ %% wenn also d. Feld VOLUME nicht leer ist, dann liegt ausser bei %% Typ PROCEEDINGS falsche } %% Erfassung vor und es erfolgt d. Ausstieg mit d. Nullstring! if$ } %% seltener Fall bei MISC: Ausgabe einer Serie; die Nummer der Serie muss %% in SERIES miterfasst werden 16/6/99 FUNCTION {format.misc.series} { series empty$ { "" } { "(" series * ")" * } if$ } %%$$$ 16/2/94 %% Auflagenvermerke gibt man komplett, einschliesslich Abkuerzungen in %% das Feld edition ein: ---> EDITION= { 3., erw. und verb. Aufl. } %% oder fremdsprachlich: EDITION= { 2nd edition } FUNCTION {format.edition} { edition empty$ { "" } { edition } if$ } %%$$$ neu, 18/3/94 FUNCTION { format.isbn.issn } { isbn empty$ { issn empty$ { "" } { "ISSN" issn n.dashify tie.or.space.connect } if$ } { "ISBN" isbn n.dashify tie.or.space.connect } if$ } %%$$$ geaendert, 21/2/94 gibt Seitenzahl bei BOOK-Typ und verwandten T. aus FUNCTION {format.pages.book} { pages empty$ { "" } { "" pages n.dashify tie.or.space.connect " S" *} %% 17/12/95 if$ } %%$$$ alle anderen Seitenang. zB. Zeitschrft., INBOOK usw. a la Orig., 9/3/94 FUNCTION {format.pages} { pages empty$ { "" } { "S." pages n.dashify tie.or.space.connect } if$ } %% Angaben v. Jahrgang, Jahr, Heftnr., Seiten bei Artikel-Typ %% 14/3/94, 26/2/97 FUNCTION {format.vol.year.num.pages} { volume field.or.null year empty$ { "Es gibt einen Jahrgang, aber kein Jahr in " cite$ * warning$ } { " (" year * ")" * * } if$ month empty$ 'skip$ { ", " month * * } if$ number empty$ 'skip$ { ", Nr. " number * * } if$ pages empty$%% Lo, 26/2/97 'skip$ { ", " format.pages * *}%% if$ %% pages empty$%% das war die Fass. Nov. 96, die auch ging %% 'skip$ %% { duplicate$ empty$ %% { pop$ format.pages }%% da pages leer, wird nur "" auf stack gelegt %% { ", " format.pages * *} %% if$ %% } %% if$ } %% geaendert 21/2/94 FUNCTION {format.chapter.pages} { chapter empty$ 'format.pages { type empty$ { "Kapitel " } { type } if$ chapter tie.or.space.connect pages empty$ 'skip$ { ", " * format.pages * } if$ } if$ } %%$$$ geaendert 21/2/94 FUNCTION {format.in.ed.booktitle.din} { booktitle empty$ { "" } { editor empty$ { volume empty$ { "{In: }" booktitle emphasize * }%% n. Belieben fettes In: { "{In: }" booktitle emphasize * %% - " - " Bd." volume tie.or.space.connect * } if$ } { volume empty$ { "{In: }" format.ed.incoll * ": " * booktitle emphasize * } { "{In: }" format.ed.incoll * ": " * booktitle emphasize * " Bd." volume tie.or.space.connect * } if$ } if$ } if$ } %% geaendert 1/3/94 FUNCTION {format.thesis.type} { type empty$ 'skip$ { pop$ type } if$ } %% geaendert 23/2/94 i.Orig. wird zuerst die number, dann der type getestet FUNCTION {format.tr.number.din} { type empty$ { number empty$ { " -- Forschungsbericht" } %% bei Minimalangaben besser ohne "."! { "(" number tie.or.space.connect "). -- Forschungsbericht" * } if$ } { number empty$ { " -- " type * } %% bei Minimalangaben besser ohne "."! { "(" number tie.or.space.connect "). -- " * type * } if$ } if$ } FUNCTION {format.article.crossref} { key empty$ { journal empty$ { "need key or journal for " cite$ * " to crossref " * crossref * warning$ "" } { "{In: }{\em " journal * "\/}" * }%% if$ } { "{In: }" key * }%% if$ "{\cite{" * crossref * "}" * "}" * ", " * format.pages * %% " (siehe \cite{" * crossref * "}" * "), " * format.pages * } %%geaendert 7/3/94 und noch einmal nach Lueddecke, s.o. FUNCTION {format.crossref.editor} %vorher,Lue { editor #1 "{vv~}{ll}" format.name$ " (Hrsg.)" * { editor #1 "{ll}" format.name$ " (Hrsg.)" * editor num.names$ duplicate$ #2 > { pop$ " [u.~a.]" * } %% { pop$ " et~al." * } { #2 < 'skip$ { editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" = { " [u.~a.]" } %% { " et~al." * } { " ; " * editor #2 "{vv~}{ll}" format.name$ * " (Hrsg.)" * } if$ } if$ } if$ } FUNCTION {format.book.crossref} { volume empty$ { "empty volume in " cite$ * "'s crossref of " * crossref * warning$ "{\texttt{siehe}} " %% "(siehe " } { ". -- Bd." volume tie.or.space.connect " von " * } if$ editor empty$ editor field.or.null author field.or.null = or { key empty$ { series empty$ { "need editor, key, or series for " cite$ * " to crossref " * crossref * warning$ "" * } { "" * }%% dadurch kommt nach der Bandzaehl. gleich das label 2/6/99 %% { "{\emph{" * series * "}} {\texttt{siehe}}" * } if$ } { key * } if$ } { "" * }%% nach der Bandzaehlung kommt gleich das label; Lo 2/6/99 %% { format.crossref.editor * } if$ "{\cite{" * crossref * "}" * "}" * %% "{\cite{" * crossref * "}" * "}" * %%"), " * format.pages * } FUNCTION {format.incoll.inproc.crossref} { editor empty$ editor field.or.null author field.or.null = or { key empty$ { booktitle empty$ { "need editor, key, or booktitle for " cite$ * " to crossref " * crossref * warning$ "" } { "{In: }{\emph " booktitle * "}" * }%% fettes In: n. Belieben if$ } { "{In: }" }%% 26/5/99 %% { "{In: }" key * } if$ } %% { "{In: }{\em " booktitle * "\/}" * }%% { "{In: }" }%% Lo, 10/2/99 es sieht der reine Bezug (Referenz) besser aus! if$ %% " (siehe \cite{" * crossref * "}" * "), " * format.pages * "{\cite{" * crossref * "}" * "}" * ", " * format.pages *%% das fette label, Lo 23/2/99 %% alte Vers. bis 27/2/97 " (siehe \cite{" * crossref * "}" * ")" * } %%geaendert FUNCTION {article} { output.bibitem format.authors "author" output.check set.colon.after format.title "title" output.check crossref missing$ { journal article.in.journal output.nonnull % 26/2/97 new.sentence format.vol.year.num.pages output } { format.article.crossref output.nonnull } if$ note set.period.dash.check note output issn set.period.dash.check format.isbn.issn output fin.entry } %%$$$ geaendert, 20/2/94 FUNCTION {book} { output.bibitem author empty$ { format.editors "author and editor" output.check } { format.authors format.editors output.nonnull } if$ set.colon.after crossref missing$ { format.btitle.vol "title" output.check } { format.btitle "title" output.check } if$ format.edition "edition" output.check format.address.publisher.year "publisher" output.check new.sentence crossref missing$ { format.series.number.din output pages set.period.dash.check%% 19/5/99 wie bei adinat.bst format.pages.book output } { format.book.crossref output.nonnull pages set.period.dash.check format.pages.book output } if$ note set.period.dash.check note output isbn set.period.dash.check format.isbn.issn output fin.entry } %% geaendert 23/2/94 FUNCTION {inbook} { output.bibitem %% unselbst. Teile eines Buches werden am Anf. genannt, dann d selbst. Quelle chapter empty$ { "Es fehlen die Kapitelangaben in " cite$ * warning$ } { type empty$ { "Kap. " }%% d.i. die Standardvorgabe { type }%% wenn man keine bes. Typform angeben will, koennte ein kl. %% Zwischenraum gewaehlt werden, z.B. " \, " if$ chapter tie.or.space.connect " {In: }" * * %% n. Belieben fettes In: } if$ %% -------- jetzt kommt der bibliogr. selbst. Teil author empty$ { format.editors "author and editor" output.check } { format.authors output.nonnull } if$ set.colon.after format.btitle.vol "title" output.check crossref missing$ { format.edition output format.address.publisher.year "publisher" output.check new.sentence format.series.number.din output %% vorher note ... part.of.sentence format.pages "pages" output.check note set.period.dash.check note output } { format.book.crossref output.nonnull note set.period.dash.check note output } if$ isbn set.period.dash.check format.isbn.issn output fin.entry } %% geaenderte Seitenzahlausgabe, wenn crossref-Feld benutzt wird, 27/2/97 FUNCTION {incollection} { output.bibitem format.authors "author" output.check set.colon.after format.title "title" output.check crossref missing$ { format.in.ed.booktitle.din "booktitle" output.check format.edition output format.address.publisher.year "publisher" output.check new.sentence format.series.number.din output note set.period.dash.check note output isbn set.period.dash.check issn set.period.dash.check format.isbn.issn output part.of.sentence format.chapter.pages "pages" output.check } { format.incoll.inproc.crossref output.nonnull note set.period.dash.check note output isbn set.period.dash.check issn set.period.dash.check format.isbn.issn output } if$ fin.entry } %% geaendert 22/2/94, 15/11/96 (Hinweis v. Alin Shindun, Uni Siegen) FUNCTION {inproceedings} { output.bibitem format.authors "author" output.check set.colon.after format.title "title" output.check crossref missing$ { format.in.ed.booktitle.din "booktitle" output.check address empty$ { organization new.sentence.checka organization output part.of.sentence format.address.publisher.year output } { format.address.publisher.year "publisher" output.check } if$ new.sentence series empty$ %%neu nach Hinweis v. Alin Shindun, 15/11/96 'skip$ { format.series.number.din output } if$ note set.period.dash.check note output isbn set.period.dash.check issn set.period.dash.check format.isbn.issn output part.of.sentence format.pages output } { format.incoll.inproc.crossref output.nonnull note set.period.dash.check note output isbn set.period.dash.check issn set.period.dash.check format.isbn.issn output } if$ fin.entry } FUNCTION {conference} { inproceedings }%% nach Patashnik, wg US-Kompatibilitaet %% geaendert, 11/6/99 FUNCTION {manual} { output.bibitem author empty$ { organization empty$ { title empty$ 'skip$ {format.btitle "title" output.check } if$ } { organization output.nonnull set.colon.after format.btitle "title" output.check } if$ } { format.authors output.nonnull set.colon.after format.btitle "title" output.check } if$ format.edition "edition" output.check author empty$ { organization empty$ { address output part.of.sentence } 'skip$ if$ } { address ": " * organization * output part.of.sentence } if$ format.date output pages set.period.dash.check format.pages.book output note set.period.dash.check note output fin.entry } %% MASTERSTHESIS ersetzt zugleich PHDTHESIS !! KFL, 17/2/94 %% Ausgabe-Standard ist "Diplomarbeit", fuer andere Abschlussarbeiten %% bei der Erfassung TYPE="anderer Typ" eingeben. %% z.B. TYPE={Dissertation}, TYPE={Diss.}, TYPE={Habil.}, TYPE={Magisterarb.} %% FUNCTION {mastersthesis} { output.bibitem format.authors "author" output.check set.colon.after format.btitle "title" output.check address output part.of.sentence school "school" output.check part.of.sentence "Diplomarbeit" format.thesis.type output.nonnull part.of.sentence format.date "year" output.check %% pages new.sentence.checka pages set.period.dash.check format.pages.book output note set.period.dash.check note output fin.entry } FUNCTION {phdthesis} %% {mastersthesis}% ist identisch bis auf Standardwert, s.o. { output.bibitem format.authors "author" output.check set.colon.after format.btitle "title" output.check address output part.of.sentence school "school" output.check part.of.sentence "Diss." format.thesis.type output.nonnull % koennte auch `Dissertation' sein part.of.sentence format.date "year" output.check pages set.period.dash.check format.pages.book output note set.period.dash.check note output fin.entry } %% hiermit werden u.a. Normen erfasst FUNCTION {misc} { output.bibitem note empty$ { title empty$ { "" } { format.authors format.editors output.nonnull format.btitle output howpublished output format.date output } if$ } { note duplicate$ #1 #4 substring$ "Norm" = { output new.sentence format.date output format.title output } { pop$ "" author empty$ { editor empty$ { organization empty$ { 'skip$ } { format.editors.organization output.nonnull set.colon.after } if$ } { format.editors format.editors.organization output.nonnull set.colon.after } if$ } { format.authors format.editors output.nonnull set.colon.after } if$ format.btitle output howpublished output format.date output new.sentence format.misc.series output%% neu 16/6/99 note set.period.dash.check note output } if$ } if$ fin.entry } FUNCTION {booklet} {misc}%% booklet ist nach dt. Vorgehensweise oft ueberfluessig %% geaendert 21/5/99 FUNCTION {proceedings} { output.bibitem editor empty$ { organization empty$ { "" } { organization " (Veranst.)" * output } if$ } { format.editors format.editors.organization output.nonnull } if$ set.colon.after format.btitle "title" output.check volume empty$ { "" output.nonnull } { "{\textnormal{Bd.}}" volume tie.or.space.connect emphasize "volume" output.check } if$ format.address.publisher.year "publisher" output.check new.sentence format.series.number.din output.nonnull pages set.period.dash.check format.pages.book output note set.period.dash.check note output isbn set.period.dash.check issn set.period.dash.check format.isbn.issn output fin.entry } %% geaendert 23/2/94 auch fuer Firmenschriften u."a. zu benutzen FUNCTION {techreport} { output.bibitem author empty$ { format.editors "author and editor" output.check } { format.authors format.editors output.nonnull } if$ set.colon.after format.title "title" output.check institution new.sentence.checka institution empty$ 'skip$ { " / " institution * output.nonnull } if$ format.address.publisher.year output number new.sentence.checka format.tr.number.din "number" output.check %% new.sentence pages set.period.dash.check format.pages.book output note "note" output.check isbn set.period.dash.check issn set.period.dash.check format.isbn.issn output fin.entry } FUNCTION {unpublished} {misc}%% author, title, note muessen sein! howpublished %% %% entfaellt natuerlich FUNCTION {default.type} { misc } MACRO {jan} {"Januar"} MACRO {feb} {"Februar"} MACRO {mar} {"M{\^^b a}rz"} %% nach Bernd Raichle, Febr. 1999 MACRO {apr} {"April"} MACRO {mai} {"Mai"} MACRO {may} {"Mai"} MACRO {jun} {"Juni"} MACRO {jul} {"Juli"} MACRO {aug} {"August"} MACRO {sep} {"September"} MACRO {okt} {"Oktober"} MACRO {oct} {"Oktober"} MACRO {nov} {"November"} MACRO {dez} {"Dezember"} MACRO {dec} {"Dezember"} %% stillgelegte Beispiele fuer den Gebrauch von Kuerzeln (hier Zs-Titel). %%MACRO {acmcs} {"ACM Computing Surveys"} %%MACRO {acta} {"Acta Informatica"} %%MACRO {cacm} {"Communications of the ACM"} %%MACRO {ibmjrd} {"IBM Journal of Research and Development"} %%MACRO {ibmsj} {"IBM Systems Journal"} %%MACRO {ieeese} {"IEEE Transactions on Software Engineering"} %%MACRO {ieeetc} {"IEEE Transactions on Computers"} %%MACRO {ieeetcad} %% {"IEEE Transactions on Computer-Aided Design of Integrated Circuits"} %%MACRO {ipl} {"Information Processing Letters"} %%MACRO {jacm} {"Journal of the ACM"} READ FUNCTION {sortify} { purify$ "l" change.case$ } INTEGERS { len } FUNCTION {chop.word} { 's := 'len := s #1 len substring$ = { s len #1 + global.max$ substring$ } 's if$ } INTEGERS { et.al.char.used } FUNCTION {initialize.et.al.char.used} { #0 'et.al.char.used := } EXECUTE {initialize.et.al.char.used} FUNCTION {format.lab.names} { 's := s num.names$ 'numnames := numnames #1 > { numnames #4 > { #3 'namesleft := } { numnames 'namesleft := } if$ #1 'nameptr := "" { namesleft #0 > } { nameptr numnames = { s nameptr "{ff }{vv }{ll}{ jj}" format.name$ "others" = %% { "\," * %% kein besonderes Zeichen fuer "others" i. label { "{\etalchar{+}}" * %% ein plus-Zeichen (+) fuer "others"! #1 'et.al.char.used := } %% { s nameptr "{v{}}{l{}}" format.name$ * } { s nameptr "{l{}}" format.name$ * } if$ } %% { s nameptr "{v{}}{l{}}" format.name$ * } { s nameptr "{l{}}" format.name$ * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ numnames #4 > %% { "\," * %% s. Bemerkung oben { "{\etalchar{+}}" * #1 'et.al.char.used := } 'skip$ if$ } %% { s #1 "{v{}}{l{}}" format.name$ { s #1 "{l{}}" format.name$ duplicate$ text.length$ #2 < { pop$ s #1 "{ll}" format.name$ #3 text.prefix$ } %% vgl. Anmerkung! 'skip$ if$ } if$ } %% Anmerkung, Lo 14/12/95: %% wenn man in der letzten label-Bearbeitung #4 statt #3 setzt, dann werden %% auch Umlaute oder � an 3. Stelle im Namen korrekt in das label genommen. %% Tip: Aendere diese Zahl nur, wenn in einer Lit.-Liste der Umlautsonderfall %% stoerend auffaellt. FUNCTION {author.key.label} { author empty$ { key empty$ { cite$ #1 #3 substring$ } { key #3 text.prefix$ } if$ } { author format.lab.names } if$ } FUNCTION {author.editor.key.label} { author empty$ { editor empty$ { key empty$ { cite$ #1 #3 substring$ } { key #3 text.prefix$ } if$ } { editor format.lab.names } if$ } { author format.lab.names } if$ } FUNCTION {author.key.organization.label} { author empty$ { key empty$ { organization empty$ { cite$ #1 #3 substring$ } { "The " #4 organization chop.word #3 text.prefix$ } if$ } { key #3 text.prefix$ } if$ } { author format.lab.names } if$ } %% neu 19/5/99 damit eigene labels fuer Konferenzen erzeugt werden koennen, %% darf man zusaetzlich auch ein key-Feld eingeben. Das produziert %% dann vorrangig das label. FUNCTION {editor.key.organization.label} { editor empty$ { key empty$ { organization empty$ { cite$ #1 #3 substring$ } { "The " #4 organization chop.word organization } %% Lo, 26/1/98 %% { "The " #4 organization chop.word #3 text.prefix$ } if$ } { key #5 text.prefix$ }%% man kann Laenge des key einstellen if$ } { key empty$%% wenn key vh., dann macht er das label! Lo,18/5/99 { editor format.lab.names } { key #5 text.prefix$ } if$ } if$ } FUNCTION {calc.label} { type$ "book" = type$ "inbook" = or 'author.editor.key.label { type$ "proceedings" = 'editor.key.organization.label { type$ "manual" = 'author.key.organization.label 'author.key.label if$ } if$ } if$ duplicate$ year field.or.null purify$ #-1 #2 substring$ * 'label := year field.or.null purify$ #-1 #4 substring$ * sortify 'sort.label := } FUNCTION {sort.format.names} { 's := #1 'nameptr := "" s num.names$ 'numnames := numnames 'namesleft := { namesleft #0 > } { nameptr #1 > { " " * } 'skip$ if$ % s nameptr "{vv{ } }{ll{ }}{ ff{ }}{ jj{ }}" format.name$ 't := % % Zeile geaendert, damit die Namenszusaetze wie von, de usw nach deutscher % Norm richtig einsortiert werden. 27.10.94 Lueddecke % s nameptr "{ll{ }}{ ff{ }}{ vv{ }}{ jj{ }}" format.name$ 't := nameptr numnames = t "others" = and { "[u.~a.]" * } %% { "et al" * }% Geschmackssache { t sortify * } if$ nameptr #1 + 'nameptr := namesleft #1 - 'namesleft := } while$ } FUNCTION {sort.format.title} { 't := "A " #2 "An " #3 "Der " #4 "Die " #4 "Das " #4 "Ein " #4 "Eine " #5 "The " #4 t chop.word chop.word chop.word chop.word chop.word chop.word chop.word chop.word sortify #1 global.max$ substring$ } FUNCTION {author.sort} { author empty$ { key empty$ { "to sort, need author or key in " cite$ * warning$ "" } { key sortify } if$ } { author sort.format.names } if$ } FUNCTION {author.editor.sort} { author empty$ { editor empty$ { key empty$ { "to sort, need author, editor, or key in " cite$ * warning$ "" } { key sortify } if$ } { editor sort.format.names } if$ } { author sort.format.names } if$ } FUNCTION {author.organization.sort} { author empty$ { organization empty$ { key empty$ { "to sort, need author, organization, or key in " cite$ * warning$ "" } { key sortify } if$ } { "The " #4 organization chop.word sortify } if$ } { author sort.format.names } if$ } FUNCTION {editor.organization.sort} { editor empty$ { organization empty$ { key empty$ { "to sort, need editor, organization, or key in " cite$ * warning$ "" } { key sortify } if$ } { "The " #4 organization chop.word sortify } if$ } { editor sort.format.names } if$ } FUNCTION {presort} { calc.label sort.label " " * type$ "book" = type$ "inbook" = or 'author.editor.sort { type$ "proceedings" = 'editor.organization.sort { type$ "manual" = 'author.organization.sort 'author.sort if$ } if$ } if$ * " " * year field.or.null sortify * " " * title field.or.null sort.format.title * #1 entry.max$ substring$ 'sort.key$ := } ITERATE {presort} SORT STRINGS { longest.label last.sort.label next.extra } INTEGERS { longest.label.width last.extra.num } FUNCTION {initialize.longest.label} { "" 'longest.label := #0 int.to.chr$ 'last.sort.label := "" 'next.extra := #0 'longest.label.width := #0 'last.extra.num := } FUNCTION {forward.pass} { last.sort.label sort.label = { last.extra.num #1 + 'last.extra.num := last.extra.num int.to.chr$ 'extra.label := } { "a" chr.to.int$ 'last.extra.num := "" 'extra.label := sort.label 'last.sort.label := } if$ } FUNCTION {reverse.pass} { next.extra "b" = { "a" 'extra.label := } 'skip$ if$ label extra.label * 'label := label width$ longest.label.width > { label 'longest.label := label width$ 'longest.label.width := } 'skip$ if$ extra.label 'next.extra := } EXECUTE {initialize.longest.label} ITERATE {forward.pass} REVERSE {reverse.pass} FUNCTION {begin.bib}%%lt. Original wiederhergestellt 4/1/96 { et.al.char.used { "\newcommand{\etalchar}[1]{$^{#1}$}" write$ newline$ } 'skip$ if$ preamble$ empty$ 'skip$ { preamble$ write$ newline$ } if$ "\begin{thebibliography}{" longest.label * "}" * write$ newline$ } EXECUTE {begin.bib} EXECUTE {init.state.consts} ITERATE {call.type$} FUNCTION {end.bib} { newline$ "\end{thebibliography}" write$ newline$ } EXECUTE {end.bib} %% Ende von ALPHADIN.BST KFL, 23/11/99