From eacbf5bb4d57af21c731f41251015d3b991ad490 Mon Sep 17 00:00:00 2001 From: guest Date: Fri, 30 Nov 2007 13:41:25 +0000 Subject: final version, initial import git-svn-id: svn+ssh://mecka.net/home/svn/rtcorba-thesis@1 cba7306a-a4a0-4afd-bcb4-bd19f8a24309 --- wisealpha.bst | 1841 +++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1841 insertions(+) create mode 100755 wisealpha.bst (limited to 'wisealpha.bst') diff --git a/wisealpha.bst b/wisealpha.bst new file mode 100755 index 0000000..a42d4a4 --- /dev/null +++ b/wisealpha.bst @@ -0,0 +1,1841 @@ +%%**************************************** +%%* * +%%* TU Dresden * +%%* Lehrstuhl für Wirtschaftsinformatik, * +%%* insbesondere Systementwicklung * +%%* * +%%**************************************** +%% +%% LaTeX-Vorlage fuer Doktor-, Diplom- und Seminararbeiten +%% Formatierung des Literaturverzeichnisses +%% +%% Version: $Revision: 1.8 $ + +%% ALPHADIN.BST Ausgabe [7,1] vom 23/11/99 +%% (C) Klaus F. Lorenzen, Hamburg email: lorenzen.marxen@t-online.de +%% ersetzt ALPHADIN.BST Ausgabe [6] von 1997 +%% 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 g)lt 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 +%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~ +%% ==> 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 + 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 + 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) + 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 } + +% AG: Diese Funktion und nur diese Funktion bringt eine kursive +% Formatierung ein. Sie wird für alle Tittel verwendet. +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$ +% Empty Stack Bug behoben, wenn Autor und Titel fehlen 27.08.2000 +% { " " * *}%% wenn ein Zs-Heft als ganzes zitiert wird + { " " *}%% wenn ein Zs-Heft als ganzes zitiert wird + { "{In: }" swap$ ", " * * } + if$ + } + { "{In: }" swap$ ", " * * } + if$ + } + if$ +} + +%% nach Vorschlag von H.Lueddecke, um Adelspraedikate beim Sortieren +%% nach den(m) Vornamen aufzufuehren. Lo, 2/11/94 +%% AG, 22.08.2000: Vornamen werden ab jetzt abgekuertzt +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 := +%% dinalpha's Vorschlag: s nameptr "{, ff}" format.name$ 'u := + s nameptr "{, f.}" 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 sdack 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 +%% 10.04.01 AG: Herausgeberschaft werden fett und mit dem einmaligen +%% Verweis Hrsg. gesetzt. +FUNCTION {format.ed.incoll} +{ editor empty$ + { "" } + { " (Hrsg.)" 'fkt := + editor format.names + } + if$ +} + +% Wenn's einen Titel hat, dann kursiv ausgeben. Die Funktion +% format.btitle wird dann ueberfluessig. +FUNCTION {format.title} +{ title empty$ + { "" } + { title emphasize } + 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$ %Ende address empty$ (Zeile 501) + } + { address empty$ + { year empty$ + { "Es gibt nur eine Verlagsangabe aber keine Jahreszahl in " cite$ * warning$ + publisher + } + { publisher ", " * format.date * } + if$ %Ende year empty$ (Zeile 513) + } + { year empty$ + { address ": " * publisher * } + { address ": " * publisher * ", " * format.date * } + if$ %Ende year empty(Zeile 520) + } + if$ %Ende address empty$ (Zeile 512) + } + if$ %Ende address empty$ (Zeile 501) +} + +FUNCTION {tie.or.space.connect} +{ duplicate$ text.length$ #10 < + { "~" } + { " " } + 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 " (Band" * volume tie.or.space.connect ")" * emphasize } + 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 ". Band" * volume tie.or.space.connect + ": " * title * emphasize } + 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. +%% AG: Die hier eingefuegten oeffnenden und schliessenden Klammern kommen weg. +%% +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$ %%Ende von series empty$ + } + { series empty$ + { "" number tie.or.space.connect "" * + "there's a number but no series in " cite$ * warning$ + } + { "" series * number tie.or.space.connect "" * } + if$ %% Ende von Series empty$ + } + if$ %%Ende von number empty$ + } + { series empty$ + %% Kein Serientitel angegeben -> Nullstring + { "" } + %% Serientitel vorhanden + { type empty$ + %% kein Typ angegeben, nur VOLUME oder NUMBER erlaubt + { number empty$ + %% laufende Nummer nicht vorhanden -> alles ok + { "" series * "" *} + %% VOLUME und NUMBER vorhanden -> Fehlermeldung + %% nur Ausgabe der Serie + { "" series * "" * + "VOLUME und NUMBER sind nur für TYPE Proceedings in " cite$ * + " gleichzeitig erlaubt." * warning$ + } + if$ %%Ende von number empty$ (Zeile 605) + } + %% Typ vorhanden + { type "proceedings" = + %% Type entspricht Proceedings + %% -> es sind Werte für VOLUME und NUMBER erlaubt + { number empty$ + %% laufende Nummer ist nicht vorhanden + { "" series * "" *} + %% laufende Nummer ist vorhanden -> mit ausgeben + { "" series * number tie.or.space.connect "" *} + if$ %% Ende number empty$ (Zeile 619) + } + %% Type entspricht nicht Proceedings + %% es darf nur im Feld Number oder im Feld VOLUME + %% etwas verzeichnet sein + { number empty$ + %% laufende Nummer nicht vorhanden -> alles ok + { "" series * "" *} + %% VOLUME und NUMBER vorhanden -> Fehlermeldung + %% nur Ausgabe der Serie + { "" series * "" * + "VOLUME und NUMBER sind nur für TYPE Proceedings in " cite$ + * "gleichzeitig erlaubt." * warning$ + } + if$ %%Ende von number empty$ (Zeile 629) + } + if$ %%Ende von type "proceedings" = (Zeile 601) + } + if$ %% Ende von type empty$ (Zeile 603) + } + if$ %%Ende von series empty$ (Zeile 599) + } + if$ %% Ende von volume empty (Zeile 582) +} + +%Falls Series angegeben wurde, wird ein Komma auf dem Stack hinterlegt +FUNCTION {set.comma.after.series} { + series empty$ + 'skip$ + { part.of.sentence } + 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$ +} + +%AG: Platzhalter fuer die Formatierung von Buchbaenden +FUNCTION {format.volume} +{ volume empty$ + { "" } + { volume } + 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 * ")" * tie.or.space.connect } + if$ + month empty$ + 'skip$ + { ", " month * * } + if$ + number empty$ + 'skip$ + { number tie.or.space.connect } + if$ + pages empty$%% Lo, 26/2/97 + 'skip$ + { ", " format.pages * *}%% + 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 * %% - " - + " Band" volume tie.or.space.connect * + } + if$ + } + { volume empty$ + { "{In: }" format.ed.incoll * ": " * booktitle emphasize * } + { "{In: }" format.ed.incoll * ": " * booktitle emphasize * + " Band" 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 +%% Geaendert (28.06.2000): tie.or.space.connect ersetzt durch einfache +%% Leerzeichen, da sonst unmittelbar nach der öffnenden Klammer ein Leerzeichen +%% stand. +FUNCTION {format.tr.number.din} +{ type empty$ + { number empty$ + { "Forschungsbericht" } %% bei Minimalangaben besser ohne "."! + % You can't pop from Literal empty stack + { "Forschungsbericht " number * } + if$ + } + { number empty$ + { type } %% bei Minimalangaben besser ohne "."! + % You can't pop from Literal empty stack + { type " " * number * } + 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 * +} + +%%geaendert 7/3/94 und noch einmal nach Lueddecke, s.o. +FUNCTION {format.crossref.editor} + { 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 " + } + { ". -- Band" 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 + if$ + } + { key * } + if$ + } + { "" * }%% nach der Bandzaehlung kommt gleich das label; Lo 2/6/99 +%% { format.crossref.editor * } + if$ + "{\cite{" * crossref * "}" * "}" * +%% "{\cite{" * crossref * "}" * "}" * %%"), " * format.pages * +} + +%% AG: Fuer meine Begriffe soll bei angegebener Referenz nur +%% ein In: plus Zitierschluessel generiert werden! +%% Falls zusaetzlich zur Crossref noch ein Buchtitel oder ein Editor +%% angegeben wurde, wird eine Warnung ausgegeben, dass diese Angaben +%% nicht exportiert werden. +%%FUNCTION {format.incoll.inproc.crossref} { +%% "In: {\cite{" crossref * "}" * "}" * ", " * format.pages * +%% booktitle empty$ +%% 'skip$ +%% { "Fuer den Eintrag " cite$ * " wurde eine Crossreference und ein " * +%% "Buchtitel angegeben. Der Buchtitel wird ignoriert." * "(" * booktitle * ")" * warning$ +%% } +%% if$ +%% editor empty$ +%% 'skip$ +%% { "Fuer den Eintrag " cite$ * " wurde eine Crossreference und ein " * +%% "Editor angegeben. Der Editor wird ignoriert." * warning$ +%% } +%% if$ +%%} + +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: }" booktitle * emphasize }%% fettes In: n. Belieben + if$ + } + { "{In: }" }%% 26/5/99 + if$ + } + { "{In: }" }%% Lo, 10/2/99 es sieht der reine Bezug (Referenz) besser aus! + if$ + "{\cite{" * crossref * "}" * "}" * ", " * format.pages * +} + +%%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 +%% Entgegen den TeX-Regeln verlangt die DIN Norm eine Auflagennummer für jedes +%% Buch. Dies wurde jedoch wieder zurückgenommen. Somit gelten die TeX-Regeln +%% wieder. +FUNCTION {book} +{ 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 + format.series.number.din output + set.comma.after.series + %AG hier müssen wir noch den Band (volume) einschreiben + %Die Formatierung haben wir natürlich von der edition geklaut. + volume empty$ + 'skip$ + { format.volume output.nonnull + part.of.sentence } + if$ + %AG: Nur bei angegebener Edition, setzen wir ein Komma danach ein + edition empty$ + 'skip$ + { format.edition output.nonnull + part.of.sentence } + if$ + format.address.publisher.year "publisher" output.check + new.sentence + +%% AG: Nach meinem Dafuerhalten sollten ein Buch keine Crossreferenz haben! +%% 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. " output }%% d.i. die Standardvorgabe + { type output}%% wenn man keine bes. Typform angeben will, koennte ein kl. +%% Zwischenraum gewaehlt werden, z.B. " \, " + if$ + } + if$ + chapter tie.or.space.connect " {In: }" * %% n. Belieben fettes In: +%% -------- 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 +%% nach Texregeln sind die Seitenzahlen nicht zwingend + format.pages output +%% 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.series.number.din output + set.comma.after.series + format.address.publisher.year "publisher" output.check + new.sentence + note set.period.dash.check + note output + isbn set.period.dash.check + issn set.period.dash.check + format.isbn.issn output + part.of.sentence +% %% Nach texregeln sind die Seitenangaben nicht zwingend + format.chapter.pages output +% %% 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 "year" output.check + } + { format.address.publisher.year "year" 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.title "title" output.check } + if$ + } + { organization output.nonnull + set.colon.after + format.title "title" output.check + } + if$ + } + { format.authors output.nonnull + set.colon.after + format.title "title" output.check + } + if$ +%% Nach Texregeln ist die Auflage nicht gefordert + format.edition output +%% 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 +} + +%% 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.title "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 +} + +%% Dissertationen +FUNCTION {phdthesis} +{ output.bibitem + format.authors "author" output.check + set.colon.after + format.title "title" output.check + address output + part.of.sentence + school "school" output.check + part.of.sentence + "Dissertation" 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 +} + +%% hiermit werden u.a. Normen erfasst +FUNCTION {misc} +{ output.bibitem + note empty$ + { title empty$ +%% Stack isn't empty bug (CK) + { "" output} +%% { "" } +%% Naechste Zeile verursacht einen Stack isn't empty bug, +%% falls kein Autor angegeben wurde +%% {format.authors format.editors output.nonnull +%% Stack isn't empty bug (AG) mit den Zeilen aus book behoben + {author empty$ + {editor empty$ + { "" output} + {format.editors "author and editor" output.check } + if$} + { format.authors format.editors output.nonnull } + if$ + + set.colon.after + format.title output + howpublished output + part.of.sentence + format.date output + } + if$ %%title empty + } +%% Hier wird geprüft, ob die Anmerkung mit 'Norm' beginnt + {note duplicate$ #1 #4 substring$ "Norm" = + %% Anmerkung beginnt mit 'Norm' + {output new.sentence + format.date output + format.title output + } + %% Anmerkung beginnt nicht mit 'Norm' +%% Stack isn't empty bug (CK) + {output pop$ "" +%% {pop$ "" + author empty$ + %% Tag Autor frei + { editor empty$ + %% Tag Herausgeber leer + { organization empty$ + %%Tag Organization frei + { 'skip$ } + %%Tag Organization belegt + { format.editors.organization output.nonnull + set.colon.after } + if$ %%organization empty + } + %% Tag Herausgeber belegt + { format.editors format.editors.organization output.nonnull + set.colon.after } + if$ %%editor empty + } + %% Tag Autor belegt + { format.authors format.editors output.nonnull + set.colon.after + } + if$ %%author empty + format.title output + howpublished output + format.date output + new.sentence + format.misc.series output%% neu 16/6/99 + note set.period.dash.check + note output + } + if$ %%note duplicate ... + } + if$ %% note empty + fin.entry +} + +%%FUNCTION {booklet} {misc}%% booklet ist nach dt. Vorgehensweise oft ueberfluessig +FUNCTION {booklet} +{ output.bibitem + format.authors output + format.title "title" output.check + howpublished output + address output + format.date output + note output + fin.entry +} + +%% geaendert 21/5/99 +FUNCTION {proceedings} +{ output.bibitem + editor empty$ + { organization empty$ + { "" output} + { organization " (Veranst.)" * output } + if$ + } + { format.editors format.editors.organization output.nonnull } + if$ + set.colon.after + format.title "title" output.check + format.series.number.din output.nonnull + set.comma.after.series + volume empty$ + { "" output.nonnull } + { "{\textnormal{Band}}" volume tie.or.space.connect "volume" output.check } + if$ + format.address.publisher.year "year" output.check + new.sentence + 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 empty$ + 'skip$ + { institution output.nonnull + part.of.sentence } + if$ + format.tr.number.din "number" output.check + part.of.sentence + format.address.publisher.year "year" output.check + number new.sentence.checka +% AG: Jetzt direkt nach dem Titel +% format.tr.number.din "number" output.check + %% new.sentence + pages set.period.dash.check + format.pages.book output +%% Nach Texregeln ist die Anmerkung nicht zwingend + note 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 = + % Genau ein Autor + {s #1 "{ll}" format.name$ #4 text.prefix$} + 'skip$ + if$ + numnames #2 = + %Genau zwei Autoren + {s #1 "{ll}" format.name$ #2 text.prefix$ s #2 "{ll}" format.name$ #2 + text.prefix$ *} + 'skip$ + if$ + numnames #2 > + %Mehr als zwei Autoren + {s #1 "{ll}" format.name$ #3 text.prefix$ "$^+$" *} + 'skip$ + if$ +% 's := +% s num.names$ 'numnames := +% numnames #1 > +% { numnames #4 > +% { #3 'namesleft := } +% { numnames 'namesleft := } +% if$ +% #1 'nameptr := +% "" +% %% Eingangsbedingung für Whileschleife +% { 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$ #4 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 #4 text.prefix$ } + if$ + } + { author format.lab.names } + if$ +} + +FUNCTION {author.editor.key.label} +{ author empty$ + { editor empty$ + { key empty$ + { cite$ #1 #3 substring$ } + { key #4 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 #4 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" = + type$ "misc" = + or + 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 "{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} + + +%$Log: wisealpha.bst,v $ +%Revision 1.8 2004/03/19 14:39:57 gehlert +%Volumen bei Büchern berücksichtigen +% +%Revision 1.7 2002/12/03 10:03:58 gehlert +%Ändern der Feinheitden beim Formatieren der BibTeX-Einträge. +% +%Revision 1.5 2001/10/22 08:30:05 andreasg +%no message +% +%Revision 1.4 2001/10/22 08:14:43 andreasg +%* Bisher wurde bei Büchern nach dem Titel ein Komma gesetzt. Bei allen +% anderen Einträgen erfolgte dagegen ein Punkt. Dieser Fehler wurde behoben +%* Die fette Formatierung der Herausgeberschaft ist nur bei gleichzeitigem +% Vorhandensein von Autoren notwendig und stößt oft auf Kritik (Alternative?). +% Aus dem Grund wurde ein Befehl \empheditors eingeführt, der die Editoren +% standardmäßig fett formatiert. Ist das nicht erwünscht, so muss man lediglich +% diesen Befehl entsprechend überschreiben. +% +%Revision 1.3 2001/10/22 08:06:45 andreasg +%* Die Titel in inbook, incollection und inproceedings werden kursiv +% gesetzt. +%* Die Herausgeberschaft wird nicht mehr durch Angabe der Zeichenkette +% "(Hrsg.)" von den Autoren abgesetzt, sondern wird fett hervorgehoben. +% Dabei steht nach dem letzten Herausgeber wiederum der String "(Hrsg.)" +% (ebenfalls fett). +% +%Revision 1.2 2001/10/22 07:57:24 andreasg +%no message +% -- cgit v1.2.3