1666 lines
42 KiB
Plaintext
1666 lines
42 KiB
Plaintext
%% 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 <20> 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
|