Skip to content
Snippets Groups Projects

Compare revisions

Changes are shown as if the source revision was being merged into the target revision. Learn more about comparing revisions.

Source

Select target project
No results found

Target

Select target project
  • deniz.cingoez/robocup-speechrec
  • t.dilger/robocup-speechrec
  • msterz/robocup-speechrec
  • patric.steckstor/robocup-speechrec
  • jennifer.lee/robocup-speechrec
  • jharin/robocup-speechrec
  • f.thiemer/robocup-speechrec
  • augustin.harter/robocup-speechrec
  • jleichert/robocup-speechrec
9 results
Show changes
Showing
with 0 additions and 3446 deletions
% NATBIB.CFG in Verbindung mit natbib.sty
% Lorenzen, 2006-01-02
% diese Konfigurationsdatei wird zuletzt eingelesen und
% enth"alt die lokal gew"unschten Einstellungen f"ur den
% Bibliographie-- und Zitierstil
\newcommand{\bibstyle@natdin}%
{\bibpunct{(}{)}{;}{a}{}{,~}
\gdef\NAT@biblabelnum##1{\textbf{##1}\\}}
%% nach dieser Definition wird das label (dinatlabel) fett geschrieben, dann Zeilenumbruch;
%% darunter der bibliographische Beleg
\bibstyle@natdin
%% Einzug der Belege nach der Einordnungsmarke
\setlength{\bibhang}{7mm}
%% natdin.bst Vers. [3.1] 2006-01-02 mit PWD cite-multimode
%%
%% Aenderungen seit Vers. [3.0bx]:
%% a) Funktions-Zusaetze bei Autoren sind nun moeglich
%% b) Internetquellen ohne Zusatz "Online--Ressource" !
%% c) verbesserte INPROCEEDINGS, PROCEEDINGS-Funktionen
%% d) neue TECHREPORT und MANUAL-Funktionen
%% e) neue format.pages.book-Funktion
%% f) neue format.online.lastchecked-Funktion
%%
%%
%% K.F.Lorenzen (Copyright 1994-2006) email: lorenzen.marxen@t-online.de
%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%% Mit diesem BibTex-style werden Literaturverzeichnisse nach dem deutschen
%% Standard DIN 1505, Teil 2 und 3 formatiert. Die label im Quellen-/
%% Literaturverzeichnis sind vom Typ 'Verfasser - Jahr' und
%% entsprechen den Zitatformen im Text. Es koennen alle von
%% Patrick W. Daly im natbib-Paket implementierten Zitierbefehle
%% genutzt werden. Eine Kurzbeschreibung liegt als Datei natnotes.pdf zusammen
%% mit der im Aufbau befindlichen Beschreibung des natdin-Stils
%% unter der URL http://www.haw-hamburg.de/pers/Lorenzen/bibtex.
%% Eine Anleitung zur Anwendung der Norm DIN 1505 findet sich unter der
%% URL http://www.bui.haw-hamburg.de/pers/klaus.lorenzen/ASP/litverz.pdf
%%
%% Es werden nun auch Elektronische Online / Offline Ressourcen wie
%% Internetquellen, CD-ROM usw. verarbeitet. Dazu kommen spezielle
%% Publikationsformen wie Patente, Normen, Karten, Fernsehaufzeichnungen,
%% Gesetzesstellen, Spiele u.a.
%
%% NATDIN.BST muss zusammen mit NATBIB.STY von Patrick W. Daly und der in
%% dieser Verteilung modifizierten Konfiguration NATBIB.CFG aufgerufen
%% werden. NATDIN.BST ist vorzugsweise in den ...\bibtex\bst - Pfad zu
%% stellen. Die jeweils individuelle Konfiguration NATBIB.CFG wird am
%% besten in das Verzeichnis der LaTex-Quelle selbst gelegt.
%%
%% Eine Muster-Konfiguration wird auf Vorschlag von Helge Baumann eingefuegt:
% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
% NATBIB.CFG in Verbindung mit natbib.sty Lorenzen, 2005-05-31
% diese Konfigurationsdatei wird zuletzt eingelesen und
% enthaelt die lokal gewuenschten Einstellungen fuer den
% Bibliographie-- und Zitierstil
%
% \newcommand{\bibstyle@natdin}%
% {\bibpunct{(}{)}{;}{a}{}{,~}
% \gdef\NAT@biblabelnum##1{\textbf{##1}\\}} %% \\ bewirkt Zeilenumbruch
% %% nach label-Ausgabe
%
% \bibstyle@natdin
%
% % Einzug der Belege nach der Einordnungsmarke
% \setlength{\bibhang}{7mm}
%
%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%%
%% Zur Gewaehrleistung der Allgemeingueltigkeit von bib-files gelten
%% in den DIN-styles mit einer einzigen Ausnahme die in der Tex-Literatur
%% veroeffentlichten originalen Definitionen und Regeln fuer die
%% Publikationstypen (entry-types) und die bibliographischen Felder (fields).
%% Die Ausnahme bezieht sich auf den entry-type PROCEEDINGS und das Feld
%% address, fuer das Oren Patashnik dort die Sonderbedeutung "Konferenzort"
%% gewaehlt hatte. In den DIN-Stilen behaelt address auch hier seine normale
%% Bedeutung als "Verlagsort" bei!
%% In einigen entry-types werden zu Gunsten bibliographischer Vollstaendigkeit
%% mehr optionale Felder verwendet als seinerzeit von Patashnik angegeben.
%% Treten "Schoenheitsfehler" im fertig gesetzten output auf,
%% lassen sich diese so gut wie immer durch eine veraenderte
%% Erfassung im bib-inputfile beseitigen. Oren Patashnik empfiehlt, die
%% Definition der Felder weit auszulegen. Last but not least koennen
%% Sie im output-file < *.bbl > noch letzte Hand zur Korrektur ansetzen.
%% Wegen der meist langen Internetadressen kann es zu "unschoenen" Luecken
%% im Belegtext kommen. Dann muss mit \underfull hbox.... gekaempft werden.
%%
%% Die Darstellung von Internetadressen wird durch das Zusatzpaket
%% url.sty ver 3.1, 15-Mar-2004 von Donald Arseneau erheblich verbessert und
%% wird sehr empfohlen.
%%
%% HYPERREF-Paket: wird dieses Paket zusaetzlich geladen, werden im output
%% aktivierbare externe (URLs usw.) und interne (Dokumentbezogene) Links
%% gesetzt. Sehr gute Zusammenarbeit mit PDFLaTex u.a.
%
%% WARN- UND FEHLERMELDUNGEN
%% Ursache von Warnmeldungen sind meistens ausgelassene Felder oder
%% Erfassungs-"Fehler". Letztere haengen teilweise mit den gegenueber US-
%% Gepflogenheiten andersartigen bibliographischen Regeln nach DIN 1505
%% zusammen. Sie sind also in Wahrheit keine "Fehler" und duerfen fast immer
%% ignoriert werden. Dennoch pruefen Sie diese Warnungen, um heraus zu finden,
%% ob Publikationstyp (=entry-type) und "fields" eventuell unzulaessig
%% kombiniert worden sind.
%% Echte Fehler ("errors") duerften nur noch bei bibliographisch falscher
%% Erfassung auftreten. Pruefen Sie die Syntax, den entry-type und die fields.
%% Zu guter letzt: Qualitaetsmasstab ist einzig der DIN-konforme output!
%%
%% DANKSAGUNG
%% Hartmut Lueddecke, HAW Hamburg, hat viele Verbesserungsvorschlaege
%% in die frueheren Versionen eingebracht. Ihm danke ich herzlich.
%% Patrick W. Daly, dem Entwickler des Natbib-Stils, verdanke ich viele
%% Anregungen und den steten Ansporn, die DIN-Stile zu verbessern.
%% Helge Baumann hatte mit seiner Weiterentwicklung meines alten natdin.bst
%% zu dinat.bst (Vers. 2001) die volle Zitierkapazitaet des natbib-Pakets
%% eingefuehrt. Damit war ein deutlicher Zugewinn erreicht. Von ihm stammt
%% der in der vorliegenden natdin.bst-Version 3.0x neu eingefuehrte Befehl
%% \dinatlabel unter seinem von H. Baumann vergebenen Namen.
%% Viele an dieser Stelle ungenannt bleibende Anwender haben mich in
%% den vergangenen Jahren auf Fehler oder Verbesserungsmoeglichkeiten
%% aufmerksam gemacht und so diesen Stil mitentwickelt. Ihnen gilt mein
%% besonderer Dank. Ihr Feedback ist immer willkommen und eine Ermunterung.
%%
%% Klaus F. Lorenzen
%%
%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%% version 0.99c for BibTeX versions 0.99c or later, LaTeX2e version
%% 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
%% natdin.bst, natbib.sty
%% This restriction helps ensure that all standard styles are identical.
%% ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
%%
%% NEUE FELDER
%% Zur Erfassung von Internetquellen, E-mail u.a. gibt es folgende
%% neue Felder: doi, lastchecked (nach Gray), url, urn
%% Internetquellen (z.B. auch E-mail) werden vorzugsweise mit dem
%% BOOKLET-Typ erfasst.
%% Normen, Patente, Schutzrechte, Gesetzesstellen sind mit dem MISC-Typ
%% zu erfassen.
%%
ENTRY
{ address %% Verlagsort (immer!)
author %% persoenlicher Urheber eines Werkes oder am Zustandekommen
%% beteiligte Personen(=Mitarbeiter, Uebersetzer, Redakteur u.a.)
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)
doi %%% Digital Object Identifier ->article
edition %% a) Auflagevermerk
% %% b) bei selbst. elektron. Quellen == Version ->booklet
editor %% Persoenl.Herausgeber oder Koerperschaftlicher Herausgeber
howpublished %% beliebiger Verlegervermerk: veroeffentlicht "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.
lastchecked %% neues Feld fuer das Datum des Online-Abrufs
% %% einer Internetquelle (n. GRAY )
month %% naehere Bestimmung des Erscheinungsjahres -> macro 's
note %% freies Eingabefeld fuer zusaetzliche Informationen z. Quelle
number %% Versch. Bedeutungen in Abhaengigkeit vom Eingabetyp:
% %% a) Bandnummer einer gezaehlten Reihe (series)
% %% b) Heftnummer einer Zeitschrift ->article
% %% c) Nummer eines Forschungsberichts ->techreport
organization %% a) Name der Organisation/des Organisators 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
url %% neues Feld URL ( Uniform Resource Locator ):
% %% Serveradresse einer Internetquelle
urn %% neues Feld URN ( Uniform Resource Name ):
% %% Persistent Identifier einer Internetquelle
volume %% a) Zaehlung bei einem mehrbaendigen Werk ->book/->proceedings
% %% b) Jahrgang einer Zeitschrift ->article
year %% Erscheinungsjahr
}
{}
{ label extra.label sort.label short.list dinat.label}
%%%----------------------------------------------------------------------------
% Einige Standardvorgaben, die vom Benutzer veraendert werden koennen.
%%%----------------------------------------------------------------------------
% Abkuerzung ("... und andere") bei Mehrverfasserquellen:
FUNCTION { ua.etal } { " u.\,a." } %% evtl. auch in eckigen Klammern " [u.\,a.]"
%% oder lateinisch: FUNCTION { ua.etal } { " et~al." }
FUNCTION { und } { " und " }
%% oder ausgeschrieben: FUNCTION { und } { " und " }
% Einige elektronische Medien erhalten nach DIN 1505 eine "Ergaenzende Angabe"
% zusaetzlich zum materiellen Typ, z.B. CD ROM oder DVD u.a.:
FUNCTION { eress } { "Elektronische Ressource" }
%%%-----------------------------------------------------------------------------------
INTEGERS { output.state before.all mid.sentence after.sentence after.block }
INTEGERS { after.firstblock }
INTEGERS { colon.after period.dash }
INTEGERS { zahl lang }
INTEGERS { len }
INTEGERS { longest.label.width last.extra.num number.label }
INTEGERS { nameptr namesleft numnames }
INTEGERS { ptr collation collrest }
STRINGS { longest.label last.label next.extra }
STRINGS { h s t u v w }
STRINGS { fkt }
%%---------------------------
FUNCTION {init.state.consts}
{ #0 'before.all :=
#1 'mid.sentence :=
#2 'after.sentence :=
#3 'after.block :=
#4 'colon.after :=
#5 'period.dash :=
#6 'after.firstblock :=
}
FUNCTION {set.period.dash} %% Wenn ein ". - " die Satzteile trennen soll.!
{ output.state before.all =
'skip$
{ period.dash 'output.state := }
if$
}
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$
}
%% 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 {new.sentence.checka}
{ empty$
'skip$
'new.sentence
if$
}
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$ }
{ output.state after.sentence =
{ " " * write$ }
{ output.state after.firstblock =
{ add.period$ write$
newline$
"\newblock " write$
}
{ write$
newline$
"\newblock " write$
}
if$
}
if$
}
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 {new.block}
{ output.state before.all =
'skip$
{ after.block 'output.state := }
if$
}
FUNCTION {not}
{ { #0 }
{ #1 }
if$
}
FUNCTION {and}
{ 'skip$
{ pop$ #0 }
if$
}
FUNCTION {or}
{ { pop$ #1 }
'skip$
if$
}
FUNCTION {format.date}
{ year duplicate$ empty$
{ "empty year in " cite$ * warning$
pop$ "" }
'skip$
if$
month empty$
'skip$
{ type$ "book" =
type$ "inbook" =
OR
'skip$
{ month " " * swap$ * }
if$
}
if$
%% ohne Extrabuchstabe beim Erscheinungsjahr
}
FUNCTION {format.edition.or.date}
{ edition empty$ year empty$ and
{ "" }
{ edition empty$
{ type empty$ NOT
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ " gesendet: " "-- " type * swap$ *
format.date *
}
{ "\,Version:\,"
format.date *
}
if$
}
{ "\,Version:\,"
format.date *
}
if$
}
{ year empty$
{ "\,Version:\," edition * }
{ "\,Version:\," edition * ", " *
format.date *
}
if$
}
if$
}
if$
}
FUNCTION {format.online.lastcheck}
{ lastchecked empty$
{ url empty$ doi empty$ urn empty$ and and
{ skip$ }
{ "" output }
if$
}
{ url empty$ doi empty$ urn empty$ and and
{ "there's a lastchecked date but no url, urn or doi in "
cite$ * warning$
}
{ part.of.sentence
lastchecked "Abruf: " swap$ * output
}
if$
}
if$
}
FUNCTION {format.maillist.lastcheck}
{ type empty$ NOT
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ format.online.lastcheck }
'skip$
if$
}
'skip$
if$
}
FUNCTION {format.doi}
{ doi empty$
{ "" }
{ new.block "\url{http://dx.doi.org/" doi * "}" *
%% { new.block "\url{http://dx.medra.org/" doi * "}" *
}
if$
}
FUNCTION {format.url}
{ urn missing$
{ doi missing$
{ url empty$
{ "" }
{ type empty$ NOT
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ type$ "incollection" =
{ "" }
{ "\,Absenderadresse: \url{" url * "}" * }
if$
}
{ "\url{" url * "}" * }%% evtl. "URL" oder "<...>"
if$
}
{ "\url{" url * "}" * } %% evtl. "URL" oder "<...>"
if$
}
if$
}
{ format.doi }
if$
}
{ "\url{http://nbn-resolving.de/urn/resolver.pl?urn=" urn * "}" *
}
if$
}
FUNCTION {format.maillist.url}
{ url empty$
{ "" }
{ type empty$
{ "" }
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ "\url{" url * "}" * }
{ "" }
if$
}
if$
}
if$
}
FUNCTION {format.full.names}
{'s :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{ s nameptr
"{vv~}{ll}" format.name$ 't :=
nameptr #1 >
{
namesleft #1 >
{ ", " * t * }
{
numnames #2 >
{ "," * }
'skip$
if$
t "others" =
{ ua.etal * }
{ und * t * }
if$
}
if$
}
't
if$
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$
}
FUNCTION {author.editor.full}
{ author empty$
{ editor empty$
{ "" }
{ editor format.full.names }
if$
}
{ author format.full.names }
if$
}
FUNCTION {author.full}
{ author empty$
{ "" }
{ author format.full.names }
if$
}
FUNCTION {editor.full}
{ editor empty$
{ "" }
{ editor format.full.names }
if$
}
FUNCTION {make.full.names}
{ type$ "book" =
type$ "inbook" =
or
'author.editor.full
{ type$ "proceedings" =
'editor.full
'author.full
if$
}
if$
}
FUNCTION {output.bibitem}
{ newline$
"\bibitem[" write$
label write$
")" make.full.names duplicate$ short.list =
{ pop$ }
{ * }
if$
"]{" * write$
cite$ write$
"}" write$
newline$
"\dinatlabel{" dinat.label * "} " * %% Zeilenumbruch steht in NATBIB.CFG!
write$
""
before.all 'output.state :=
}
FUNCTION {fin.entry}
{ write$
newline$
}
FUNCTION {field.or.null}
{ duplicate$ empty$
{ pop$ "" }
'skip$
if$
}
FUNCTION {emphasize}
{ duplicate$ empty$
{ pop$ "" }
{ "\emph{" swap$ * "}" * }
if$
}
FUNCTION { capitalize }
{ duplicate$ empty$
{ pop$ "" }
{ "\textsc{" swap$ * "}" * }
if$
}
FUNCTION {article.in.journal}
{ duplicate$ empty$
{ pop$ "" }
{ author missing$ title missing$ and
{ emphasize }
{ emphasize "{In: }" swap$ * }
if$
}
if$
}
FUNCTION {format.names}
{ 's :=
"" 'u :=
#1 'nameptr :=
s num.names$ 'numnames :=
numnames 'namesleft :=
{ namesleft #0 > }
{
s nameptr "{ll}" format.name$ 't :=
t capitalize 't :=
s nameptr "{ jj}" format.name$ 'w :=
s nameptr "{, ff}{ vv}{ jj}" 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$ * "." * w * 'v :=
}
'skip$
if$
zahl #1 + 'zahl := }
while$
v "" =
{ u 'v := }
'skip$
if$
t v * fkt * 't :=
nameptr #1 >
{ namesleft #1 >
{ " ; " * t * }
{ numnames #2 >
{ " " * }
'skip$
if$
t "\textsc{others}" = t "\textsc{others} (Hrsg.)" = or
{ ua.etal * }
{ " ; " * t * }
if$
}
if$ %% Ende der namesleft-Pruefung
}
't
if$ %% Ende der nameptr-Pruefung
nameptr #1 + 'nameptr :=
namesleft #1 - 'namesleft :=
}
while$ %% Ende von { namesleft #0 > } ganz oben
"" 'fkt := %% fkt wird zurueckgesetzt
}
FUNCTION {format.authors}
{ author empty$
{ "" }
{ author format.names }
if$
}
FUNCTION {format.editors}
{ editor empty$
{ author empty$
{ "empty author and editor in " cite$ * warning$ "" }
'skip$
if$
}
{ author empty$
{ " (Hrsg.)" 'fkt :=
editor format.names
}
{ " (Hrsg.)" 'fkt :=
" ; " * editor format.names *
}
if$
}
if$
}
%% 2005-11-11
FUNCTION { format.authors.organization }
{ type$ "misc" =
{ organization empty$
{ author empty$
{ "" }
{ author format.names " (Erfinder)" * }
if$
}
{ author empty$
{ organization }
{ author format.names " (Erfinder); " *
organization * " (Anmelder)" *
}
if$
}
if$
}
{ type$ "manual" =
{ organization empty$
{ format.authors }
{ author empty$
{ organization capitalize " (Hrsg.)" * }
{ author format.names }
if$
}
if$
}
'skip$
if$
}
if$
}
FUNCTION { format.editors.organization }
{ organization empty$
'skip$
{ type$ "misc" =
{ organization }
{ * " ; " * organization " (Veranst.)" *}
if$
}
if$
}
FUNCTION { format.tr.institution }
{ institution empty$
'skip$
{ institution capitalize }
if$
}
FUNCTION {format.ed.incoll}
{ editor empty$
{ "" }
{ " (Hrsg.)" 'fkt :=
editor format.names
format.editors.organization
}
if$
}
FUNCTION {format.title}
{ title empty$
{ "" }
{ title } %% Text so wie er dasteht im Feld title
if$
}
FUNCTION {format.number}
{ number empty$
{ "" }
{ number " " * } %% Text so wie er im Feld number steht plus " "
if$
}
FUNCTION {format.digital.type}
{ type empty$
{ "" }
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
{ "" }
{ type } %% Typ einer digitalen Ressource in Form einer
%% "Ergaenzenden Angabe", so wie er dasteht;
%% Alternativ kann dieser Text auch in NOTE erfasst werden.
if$
}
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$
}
%% 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$
}
FUNCTION {format.version.url}
{ url empty$ doi empty$ urn empty$ and and
{ type$ "techreport" =
{ format.edition }
{ "" }
if$
}
{ format.edition.or.date output format.url }
if$
}
FUNCTION {format.edition.or.version}
{ url empty$ doi empty$ urn empty$ and and
{ format.edition }
{ format.edition.or.date }
if$
}
FUNCTION {format.address.publisher.year}
{ publisher empty$
{ address empty$
{ year empty$
{ "" }
{ year }
if$
}
{ "there's an address but no publisher in " cite$ * warning$
address ", " * format.date *
}
if$
}
{ address empty$
{ year empty$
{ "neither address nor publication date in " cite$ * warning$
publisher
}
{ publisher ", " * format.date * }
if$
}
{ year empty$
{ address " : " * publisher * }
{ address " : " * publisher * ", " * format.date * }
if$
}
if$
}
if$
}
FUNCTION {format.howpublished}
{ url missing$ urn missing$ doi missing$ AND AND
{ howpublished empty$
{ address empty$
{ type empty$
{ "" }
{ type #-1 #4 substring$ "mail" =
{ "(gesendet: " new.sentence
format.date * ")" *
}
{ "" }
if$
}
if$
format.date *
}
{ address ", " * format.date * }
if$
}
{ address empty$
{ howpublished ", " * format.date * }
{ address " : " * howpublished * ", " * format.date * }
if$
}
if$
}
{ howpublished empty$
{ "" }
{ howpublished }
if$
}
if$
}
FUNCTION {format.btitle}
{ title emphasize
}
FUNCTION {tie.or.space.connect}
{ duplicate$ text.length$ #3 <
{ "~" }
{ " " }
if$
swap$ * *
}
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
}
FUNCTION {format.series.number.din}
{ volume empty$
{ number empty$
{ series empty$
{ "" }
{ "(" 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. !
type$ "inproceedings" = OR
{ 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/INPROCEEDINGS falsche
} %% Erfassung vor und es erfolgt d. Ausstieg mit d. Nullstring!
if$
}
FUNCTION {format.tr.series.or.number}
{ number empty$
{ series empty$
{ "" }
{ "(" series * ")" * }
if$
}
{ series empty$
{ "(" number * ")" * }
{ "(" series * number tie.or.space.connect ")" * }
if$
}
if$
}
FUNCTION {format.misc.series}
{ series empty$
{ "" }
{ "(" series * ")" * }
if$
}
FUNCTION { format.doi.urn }
{ urn empty$
{ doi empty$
{ "" }
{ "DOI" doi n.dashify tie.or.space.connect }
if$
}
{ "URN" urn n.dashify tie.or.space.connect }
if$
}
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$
}
FUNCTION {format.pages}
{ pages empty$
{ "" }
{ url empty$
{ "S." pages n.dashify tie.or.space.connect }
{ pages }
if$
}
if$
}
FUNCTION {format.pages.book}
{ pages empty$
{ "" }
{ note empty$ isbn empty$ AND
{ "" pages n.dashify tie.or.space.connect " S" *
add.period$
}
{ "" pages n.dashify tie.or.space.connect " S" *
}
if$
}
if$
}
FUNCTION {format.pages.bkcollation}
{ pages empty$
{ "" }
{ "" pages n.dashify tie.or.space.connect }
if$
}
FUNCTION {format.bkpages.collat.check}
{ 's :=
#1 'ptr :=
s text.length$ 'collation :=
collation #1 =
{ format.pages.book }
{
collation 'collrest :=
{ collrest #0 > }
{ s ptr #2 substring$ 't :=
t "S." =
{ format.pages.bkcollation
#0 'collrest := }
{ ptr #1 + 'ptr :=
collrest #1 - 'collrest :=
#1 collrest =
{ format.pages.book }
{ skip$ }
if$
}
if$
}
while$
}
if$
}
FUNCTION {format.vol.year.num.pages}
{ volume field.or.null
year empty$
{ "there's no year in " cite$ * warning$ }
{ " (" year * ")" * * }
if$
month empty$
'skip$
{ ", " month * * }
if$
number empty$
'skip$
{ ", Nr. " number * * }
if$
pages empty$
'skip$
{ duplicate$ empty$
{ pop$ "" }
{ title missing$
{ ", " pages format.bkpages.collat.check * *}
{ ", " format.pages * *}
if$
}
if$
}
if$
}
FUNCTION {format.chapter.inbook}
{ duplicate$ empty$
{ pop$ "empty chapter in " cite$ * warning$ }
{ type empty$
{ "\emph{Kapitel\/} " swap$ tie.or.space.connect }
{ type " " * swap$ * }%% wenn keine bes. Abschnittsform gen. werden soll,
%% koennte e. kl. Zwischenraum gewaehlt werden, z.B. " \, "
if$
}
if$
}
FUNCTION {format.chapter.pages}
{ chapter empty$
'format.pages
{ type empty$
{ "Kapitel " }
{ url empty$
{ type }
{ "Kapitel " }
if$
}
if$
chapter tie.or.space.connect
pages empty$
'skip$
{ ", " * format.pages * }
if$
}
if$
}
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$
}
FUNCTION {format.thesis.tr.type}
{ type empty$
'skip$
{ pop$
type
}
if$
}
FUNCTION {format.article.crossref}
{ key empty$
{ journal empty$
{ "need key or journal for " cite$ * " to crossref " * crossref *
warning$
""
}
{ "{In: }{\emph " journal * "}" * }%% n. Belieben fettes In:
if$
}
{ "{In: }" key * }%% s.o. fettes In:
if$
" {\textbf{\citep{" * crossref * "}" * "}" * "}" * ", " * format.pages *
}
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$ ua.etal * }
{ #2 <
'skip$
{ editor #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ ua.etal * }
{ " ; " * editor #2 "{vv~}{ll}" format.name$ * " (Hrsg.)" * }
if$
}
if$
}
if$
}
FUNCTION {format.inbk.vol.title}
{ volume empty$
{ " In: " }
{ title empty$
{ " In: Bd." volume tie.or.space.connect
" von " *
}
{ "In: Bd." volume tie.or.space.connect ": " * title emphasize *
" (" * year * ") in " *
}
if$
}
if$
}
FUNCTION {format.book.crossref}
{ type$ "inbook" =
{ format.inbk.vol.title }
{ volume empty$
{ "empty volume in " cite$ * "'s crossref of " * crossref * warning$
" "
}
{ ". -- Bd." volume tie.or.space.connect
" von " *
}
if$
}
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 Band Nr. gleich das label 2/6/99
%% { "{\emph{" * series * "}} {\textbf{siehe}} " * }
if$
}
{ key * }
if$
}
{ "" * }
if$
"{\textbf{\citep{" * crossref * "}" * "}" * "}" *
}
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 * "}" * }%%
if$
}
{ "{In: }" }
if$
}
{ "{In: }" }
if$
"{\textbf{\citep{" * crossref * "}" * "}" * "}" * %% ", " * format.pages *
}
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
new.sentence
format.vol.year.num.pages output
format.url output
}
{ format.article.crossref output.nonnull }
if$
format.online.lastcheck
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
issn set.period.dash.check
format.isbn.issn output
note set.period.dash.check
note output
fin.entry
}
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 output
format.address.publisher.year "publisher" output.check
new.sentence
crossref missing$
{ format.series.number.din output }
{ format.book.crossref output.nonnull }
if$
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
format.doi output
format.url output
new.block
isbn set.period.dash.check
format.isbn.issn output
note set.period.dash.check
note output
fin.entry
}
FUNCTION {booklet}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check }
{ format.authors format.editors output.nonnull }
if$
set.colon.after
format.btitle "title" output.check
format.edition.or.version output
format.url output
format.online.lastcheck
format.howpublished output
series new.sentence.checka
format.series.number.din output
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
type set.period.dash.check
format.digital.type output
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
note set.period.dash.check
note output
format.isbn.issn output
fin.entry
}
FUNCTION {inbook}
{ output.bibitem
chapter format.chapter.inbook output.nonnull
crossref missing$
{ author empty$
{ format.editors "\,{In:\,}" swap$ * "author and editor" output.check }
{ format.authors "\,{In:\,}" swap$ * output.nonnull }
if$
author empty$ editor empty$ AND
{ before.all 'output.state := }
{ set.colon.after }
if$
format.btitle.vol "title" output.check
format.edition output
format.address.publisher.year "publisher" output.check
new.sentence
format.series.number.din output
isbn set.period.dash.check
format.isbn.issn output
}
{ format.book.crossref output.nonnull
}
if$
part.of.sentence
format.pages output
note set.period.dash.check
note output
fin.entry
}
FUNCTION {incollection}
{ output.bibitem
format.authors "author" output.check
set.colon.after
format.title "title" output.check
format.version.url output
type empty$ NOT
{ type #-1 #4 substring$ "mail" =
type #1 #4 substring$ "Mail" =
OR
'skip$
{ format.online.lastcheck }
if$
}
{ format.online.lastcheck }
if$
crossref missing$
{ format.in.ed.booktitle.din "booktitle" output.check
format.edition output
format.address.publisher.year "publisher" output.check
format.maillist.url output
format.maillist.lastcheck
new.sentence
format.series.number.din output
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
isbn set.period.dash.check
issn set.period.dash.check
format.isbn.issn output
}
{ format.incoll.inproc.crossref output.nonnull }
if$
part.of.sentence
format.chapter.pages "pages" output.check
note set.period.dash.check
note output
fin.entry
}
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
format.series.number.din output
isbn set.period.dash.check
issn set.period.dash.check
format.isbn.issn output
}
{ format.incoll.inproc.crossref output.nonnull }
if$
part.of.sentence
format.pages output
note set.period.dash.check
note output
fin.entry
}
FUNCTION {conference} { inproceedings }%% nach Patashnik, wg US-Kompatibilitaet
FUNCTION {manual}
{ output.bibitem
author empty$
{ organization empty$
{ title empty$
'skip$
{format.btitle "title" output.check }
if$
}
'skip$
if$
}
'skip$
if$
format.authors.organization output.nonnull
set.colon.after
format.btitle "title" output.check
format.edition "edition" output.check
author empty$ organization empty$ AND
{ address "address" output.check
part.of.sentence
}
{ organization empty$
{ address "address" output.check
part.of.sentence
}
{ address ": " * organization * output
part.of.sentence
}
if$
}
if$
format.date output
number empty$
'skip$
{ "(" number * ") " * output }
if$
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
format.doi output
format.url output
format.online.lastcheck
note set.period.dash.check
note output
fin.entry
}
%% Standard ist "Diplomarbeit", anderes mit TYPE="anderer Typ" erfassen!
%% z.B. TYPE={Hausarbeit}, 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.tr.type output.nonnull
part.of.sentence
format.date "year" output.check
format.url output
format.online.lastcheck
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
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.tr.type output.nonnull % koennte auch `Dissertation' sein
part.of.sentence
format.date "year" output.check
format.url output
format.online.lastcheck
doi set.period.dash.check
urn set.period.dash.check
format.doi.urn output
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
note set.period.dash.check
note output
fin.entry
}
%% Normen, Vornormen, Schutzrechte (Patente) werden hiermit erfasst;
%% E-mail, (auch Internetressourcen moeglich; besser --> booklet-Fkt!)
%% das type-Feld uebernimmt eine wichtige Steuerfunktion:
FUNCTION {misc}
{ output.bibitem
type missing$ not
{ type duplicate$ #1 #4 substring$ "Norm" =
type #1 #4 substring$ "Vorn" = OR
{ " " *
format.number * output
new.sentence
format.date output
title empty$
{ skip$ }
{ add.period$ new.sentence }
if$
format.btitle "title" output.check
note set.period.dash.check
note output
}
{ duplicate$ #1 #6 substring$ "Schutz" =
{ " " * format.number * output
new.sentence
"(" * format.date ")" * output
add.period$ new.sentence
format.authors.organization add.period$ output
note output
}
%% wenn irgendein anderer Typ eingetragen ist
{ pop$ pop$ ""
title empty$
{ note empty$
{ url empty$
{ "there's no relevant field in " cite$ warning$
pop$ ""
}
{ format.url output }%%%
if$
}
{ note " " * output.nonnull }
if$
}
{ 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.nonnull
url empty$
{ format.edition output
format.howpublished output}
{ format.howpublished output
format.edition.or.version output
format.url output
}
if$
format.online.lastcheck
new.sentence
format.misc.series output
note set.period.dash.check
note output
}
if$
}
if$
}
if$
}
%% wenn es keinen type gibt
{ title empty$
{ note empty$
{ url empty$
{ "there's no relevant field in " cite$ warning$
pop$ ""
}
{ format.url output }%%% das waere e. reine URL
if$
}
{ note " " * output.nonnull
}
if$
}
{ 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.nonnull
url empty$
{ format.edition output
format.howpublished output}
{ format.howpublished output
format.url output
format.edition.or.date output
format.online.lastcheck
}
if$
new.sentence
format.misc.series output
note set.period.dash.check
note output
}
if$
}
if$
fin.entry
}
FUNCTION {proceedings}
{ output.bibitem
editor empty$
{ organization empty$
{ "empty organization and editor in " cite$ * warning$ }
{ organization " (Veranst.)" * output }
if$
}
{ format.editors format.editors.organization output.nonnull }
if$
set.colon.after
format.btitle "title" output.check
volume empty$
'skip$
{ "{\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 empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
isbn set.period.dash.check
issn set.period.dash.check
format.isbn.issn output
note set.period.dash.check
note output
fin.entry
}
FUNCTION {techreport}
{ output.bibitem
author empty$
{ format.editors "author and editor" output.check
format.tr.institution output.nonnull }
{ format.authors format.editors output.nonnull }
if$
set.colon.after
format.title "title" output.check
institution empty$
'skip$
{ author empty$ editor empty$ AND
'skip$
{ institution new.sentence.checka
"/ " institution * output.nonnull
}
if$
}
if$
format.version.url output
format.online.lastcheck
format.address.publisher.year output
number new.sentence.checka
format.tr.series.or.number "number" output.check
"Forschungsbericht" format.thesis.tr.type set.period.dash.check
"Forschungsbericht" format.thesis.tr.type output
pages empty$
{ skip$ }
{ pages set.period.dash.check
pages format.bkpages.collat.check output
}
if$
isbn set.period.dash.check
issn set.period.dash.check
format.isbn.issn output
note set.period.dash.check
note "note" output.check
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"}
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"}
READ
FUNCTION {sortify}
{ purify$
"l" change.case$
}
FUNCTION {chop.word}
{ 's :=
'len :=
s #1 len substring$ =
{ s len #1 + global.max$ substring$ }
's
if$
}
FUNCTION {format.lab.names}
{ 's :=
s #1 "{vv~}{ll}" format.name$
s num.names$ duplicate$
#2 >
{ pop$ ua.etal * }
{ #2 <
'skip$
{ s #2 "{ff }{vv }{ll}{ jj}" format.name$ "others" =
{ ua.etal * }
{ und * s #2 "{vv~}{ll}" format.name$ * }
if$
}
if$
}
if$
}
FUNCTION {author.key.label}
{ author empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ author format.lab.names }
if$
}
FUNCTION {author.editor.key.label}
{ author empty$
{ editor empty$
{ key empty$
{ cite$ #1 #3 substring$ }
'key
if$
}
{ year empty$
'key
{ editor format.lab.names }
if$
}
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 }
if$
}
{ author format.lab.names }
if$
}
FUNCTION {editor.key.organization.label}
{ editor empty$
{ key empty$
{ organization empty$
{ cite$ #1 #3 substring$ }
{ "The " #4 organization chop.word #4 text.prefix$ }
if$
}
{ key }
if$
}
{ key empty$%% das key-feld soll zwangsweise das label machen!
{ editor format.lab.names }
{ key }%%das ganze label
if$
}
if$
}
FUNCTION {calc.short.authors}
{ type$ "book" =
type$ "booklet" =
type$ "inbook" =
or or
'author.editor.key.label
{ type$ "proceedings" =
'editor.key.organization.label
{ type$ "manual" =
'author.key.organization.label
'author.key.label
if$
}
if$
}
if$
'short.list :=
}
FUNCTION {calc.label}
{ calc.short.authors
short.list
"("
*
%% year duplicate$ empty$
%% short.list key field.or.null = or
%% { pop$ "" }
%% 'skip$
%% if$
year field.or.null purify$ #1 #4 substring$
*
'label :=
short.list " " *
year field.or.null purify$ #1 #4 substring$ * 'dinat.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
{ ua.etal * }
{ 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.PWD}%% so war es in plainnat
{ 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 {editor.organization.sort}%%das key-Feld soll z. Sortieren ben. werden
{ key empty$
{ editor empty$
{ organization empty$
{ "to sort, need editor, organization, or key in " cite$ * warning$
""
}
{ "The " #4 organization chop.word sortify }
if$
}
{ editor sort.format.names }
if$
}
{ key sortify }
if$
}
FUNCTION {presort}
{ calc.label
label sortify
" "
*
type$ "book" =
type$ "booklet" =
type$ "inbook" =
or 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.label :=
sort.label *
#1 entry.max$ substring$
'sort.key$ :=
}
ITERATE {presort}
SORT
FUNCTION {initialize.longest.label}
{ "" 'longest.label :=
#0 int.to.chr$ 'last.label :=
"" 'next.extra :=
#0 'longest.label.width :=
#0 'last.extra.num :=
#0 'number.label :=
}
FUNCTION {forward.pass}
{ last.label 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 :=
label 'last.label :=
}
if$
number.label #1 + 'number.label :=
}
FUNCTION {reverse.pass}
{ next.extra "b" =
{ "a" 'extra.label := }
'skip$
if$
extra.label 'next.extra :=
extra.label
duplicate$ empty$
'skip$
{ "{\natexlab{" swap$ * "}}" * }
if$
'extra.label :=
label extra.label * 'label :=
dinat.label extra.label * 'dinat.label :=
}
EXECUTE {initialize.longest.label}
ITERATE {forward.pass}
REVERSE {reverse.pass}
FUNCTION {bib.sort.order}
{ sort.label 'sort.key$ :=
}
ITERATE {bib.sort.order}
SORT
FUNCTION {begin.bib}
{ preamble$ empty$
'skip$
{ preamble$ write$ newline$ }
if$
"\begin{thebibliography}{" number.label int.to.str$ * "}" *
write$ newline$ newline$
"% this bibliography is generated by nd24.bst [3.0c2] from 2005-12-21"
write$ newline$ newline$
"\providecommand{\natexlab}[1]{#1}"
write$ newline$
"\providecommand{\url}[1]{\texttt{#1}}"
write$ newline$
"\makeatletter"
write$ newline$
"\newcommand{\dinatlabel}[1]%"
write$ newline$
"{\ifNAT@numbers\else\NAT@biblabelnum{#1}\fi}"
write$ newline$
"\makeatother"
write$ newline$
"\expandafter\ifx\csname urlstyle\endcsname\relax"
write$ newline$
" \providecommand{\doi}[1]{doi: #1}\else"
write$ newline$
" \providecommand{\doi}{doi: \begingroup \urlstyle{rm}\Url}\fi"
write$ newline$
}
EXECUTE {begin.bib}
EXECUTE {init.state.consts}
ITERATE {call.type$}
FUNCTION {end.bib}
{ newline$
"\end{thebibliography}" write$ newline$
}
EXECUTE {end.bib}
%%
%% This is file `nomencl.ist',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% nomencl.dtx (with options: `idxstyle')
%%
%% Copyright 1996 Boris Veytsman
%% Copyright 1999-2001 Bernd Schandl
%% www http://sarovar.org/projects/nomencl
%%
%% This file can be redistributed and/or modified under the terms
%% of the LaTeX Project Public License distributed from CTAN
%% archives in the directory macros/latex/base/lppl.txt; either
%% version 1.2 of the license, or (at your option) any later version.
%%
%%
%% Nomenclature style file for MAKEINDEX.
%% For nomencl v2.5 (and later)
%%
%% Formats glossary entries to show, e.g. nomenclature of equations.
%%
%% Written by Boris Veytsman boris@plmsc.psu.edu
%% Changed by Bernd Schandl schandl@gmx.net (starting 1999/02/20)
%% Changed by Lee Netherton ltn100@users.sourceforge.net
%% (starting 2005/03/31)
%%
%% Changes:
%% 2005/04/27. Updates to the documentation, including support for hyperref (LN)
%% 2005/04/20. Improvements to Italian option, and minor documentation
%% changes (LN)
%% 2005/03/31. Made more compatible with other glossary packages. (LN)
%% Added option to include nomenclature in TOC. (LN)
%% 1996/11/25. Change quote character to % (BV)
%% 1999/02/20. Removed setting of actual to its default value
%% Removed setting of quote to '%' to get its default '"' instead
%% Changed group_skip to do nothing; user should use \nomgroup
%% Changed spacing in gls file
%%
%% \CharacterTable
%% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z
%% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z
%% Digits \0\1\2\3\4\5\6\7\8\9
%% Exclamation \! Double quote \" Hash (number) \#
%% Dollar \$ Percent \% Ampersand \&
%% Acute accent \' Left paren \( Right paren \)
%% Asterisk \* Plus \+ Comma \,
%% Minus \- Point \. Solidus \/
%% Colon \: Semicolon \; Less than \<
%% Equals \= Greater than \> Question mark \?
%% Commercial at \@ Left bracket \[ Backslash \\
%% Right bracket \] Circumflex \^ Underscore \_
%% Grave accent \` Left brace \{ Vertical bar \|
%% Right brace \} Tilde \~}
%%
%% ---- for input file ----
keyword "\\nomenclatureentry"
%% Germans might want to change this and delete the two %%
%% quote '"'
%% ---- for output file ----
preamble "\\begin{thenomenclature} \n"%
postamble "\n\n\\end{thenomenclature}\n" group_skip "\n"
delim_0 ""
delim_1 ""
delim_2 ""
%% The next lines will produce some warnings when
%% running Makeindex as they try to cover two different
%% versions of the program:
lethead_prefix "\n \\nomgroup{"
lethead_suffix "}\n"
lethead_flag 1
heading_prefix "\n \\nomgroup{"
heading_suffix "}\n"
headings_flag 1
File deleted
source.isreditor.jar = src/
output.isreditor.jar = bin/
bin.includes = plugin.xml,\
isreditor.jar,\
icons/,\
lib/
src.includes = lib/xerces.jar,\
src/IsrGrammarXmlDefinition.dtd
jars.compile.order = isreditor.jar
<contexts>
<context id="viewer" title="Isr-grammar-viewer">
<topic href="/PLUGINS_ROOT/org.eclipse.platform.doc.isv/guide/ua_help_context.htm" label="Context-sensitive help">
<enablement>
<with variable="platform">
<test property="org.eclipse.core.runtime.isBundleInstalled" args="org.eclipse.platform.doc.isv"/>
</with>
</enablement>
</topic>
</context>
</contexts>
isr-eclipse-plugin/icons/sample.gif

983 B

File deleted
File deleted
<?xml version="1.0" encoding="UTF-8"?>
<?eclipse version="3.0"?>
<plugin>
<extension id="hterhors.editor.isr.editor" point="org.eclipse.ui.editors">
<editor id="hterhors.editor.ISREditor" name="ISR-Editor"
class="hterhors.editor.ISREditor" contributorClass="hterhors.editor.ISREditorContributor"
extensions="grm" icon="icons/sample.gif">
</editor>
</extension>
<extension id="problemmarker" name="Error Marker"
point="org.eclipse.core.resources.markers">
<super type="org.eclipse.core.resources.marker" />
<attribute name="severity" />
<attribute name="message" />
<attribute name="location" />
<persistent value="true" />
</extension>
<extension point="org.eclipse.ui.popupMenus">
<objectContribution id="hterhors.editor.xmlconverter.converttoxmlaction.contribution"
nameFilter="*.grm" objectClass="org.eclipse.core.resources.IFile">
<action id="hterhors.editor.xmlconverter.converttoxmlaction"
class="hterhors.editor.xmlconverter.ConvertToXMLAction"
definitionId="hterhors.editor.xmlconverter.converttoxmlaction.definition"
enablesFor="1"
icon="icons/sample.gif" label="Convert to XML" menubarPath="additions">
</action>
</objectContribution>
</extension>
<extension point="org.eclipse.ui.perspectives">
<perspective id="hterhors.editor.perspective.IsrPerspective"
name="Isr Grammar" class="hterhors.editor.perspective.IsrPerspective"
icon="icons/sample.gif">
</perspective>
</extension>
<extension point="org.eclipse.ui.views">
<category id="view" name="Isr-grammar-viewer">
</category>
<view id="hterhors.editor.zest.IsrGraphView" name="Isr-grammar-viewer"
category="view" class="hterhors.editor.zest.IsrGraphView" icon="icons/sample.gif">
</view>
</extension>
<extension point="org.eclipse.ui.perspectiveExtensions">
<perspectiveExtension targetID="org.eclipse.jdt.ui.JavaPerspective">
<view id="hterhors.editor.zest.IsrGraphView" ratio="0.9"
relationship="right" relative="org.eclipse.ui.editorss">
</view>
</perspectiveExtension>
</extension>
<!--extension point="org.eclipse.help.contexts">
<contexts file="contexts.xml">
</contexts>
</extension-->
<extension point="org.eclipse.ui.commands">
<category id="visualization.category" name="Isr visualization">
</category>
<command id="isr.graph.visualization" name="Update graph"
categoryId="visualization.category">
</command>
</extension>
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.zest.UpdateGraphHandler"
commandId="isr.graph.visualization">
</handler>
</extension>
<extension point="org.eclipse.ui.bindings">
<key commandId="isr.graph.visualization" contextId="org.eclipse.ui.contexts.window"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="M1+Shift+V">
</key>
</extension>
<!-- GRID -->
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.zest.layouthandler.GridLayoutGraphHandler"
commandId="grid.graph">
</handler>
</extension>
<extension point="org.eclipse.ui.commands">
<category id="visualization.category" name="Isr visualization">
</category>
<command id="grid.graph" name="Grid-Layout"
categoryId="visualization.category">
</command>
</extension>
<!-- HORIZONTAL -->
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.zest.layouthandler.HorizontalTreeLayoutGraphHandler"
commandId="horizontal.tree.graph">
</handler>
</extension>
<extension point="org.eclipse.ui.commands">
<category id="visualization.category" name="Isr visualization">
</category>
<command id="horizontal.tree.graph" name="Horizontal-Tree-Layout"
categoryId="visualization.category">
</command>
</extension>
<!-- RADIAL -->
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.zest.layouthandler.RadialLayoutGraphHandler"
commandId="radial.graph">
</handler>
</extension>
<extension point="org.eclipse.ui.commands">
<category id="visualization.category" name="Isr visualization">
</category>
<command id="radial.graph" name="Radial-Tree-Layout"
categoryId="visualization.category">
</command>
</extension>
<!-- SPRING -->
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.zest.layouthandler.SpringLayoutGraphHandler"
commandId="spring.graph">
</handler>
</extension>
<extension point="org.eclipse.ui.commands">
<category id="visualization.category" name="Isr visualization">
</category>
<command id="spring.graph" name="Spring-Tree-Layout"
categoryId="visualization.category">
</command>
</extension>
<!-- TREE -->
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.zest.layouthandler.TreeLayoutGraphHandler"
commandId="tree.graph">
</handler>
</extension>
<extension point="org.eclipse.ui.commands">
<category id="visualization.category" name="Isr visualization">
</category>
<command id="tree.graph" name="Tree-Layout"
categoryId="visualization.category">
</command>
</extension>
<!-- VERTICAL -->
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.zest.layouthandler.VerticalLayoutGraphHandler"
commandId="vertical.graph">
</handler>
</extension>
<extension point="org.eclipse.ui.commands">
<category id="visualization.category" name="Isr visualization">
</category>
<command id="vertical.graph" name="Vertical-Tree-Layout"
categoryId="visualization.category">
</command>
</extension>
<!-- Parser -->
<extension point="org.eclipse.ui.commands">
<category id="visualization.category" name="Parse sentences">
</category>
<command id="parse.sentences" name="Parse sentences"
categoryId="visualization.category">
</command>
</extension>
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.sentenceparser.ParseSentenceHandler"
commandId="parse.sentences">
</handler>
</extension>
<extension point="org.eclipse.ui.bindings">
<key commandId="parse.sentences" contextId="org.eclipse.ui.contexts.window"
schemeId="org.eclipse.ui.defaultAcceleratorConfiguration" sequence="M1+Shift+P">
</key>
</extension>
<!-- isr.info GENERAL -->
<extension point="org.eclipse.ui.commands">
<category id="isr.info.category" name="General">
</category>
<command id="isr.general.info" name="General"
categoryId="isr.info.category">
</command>
</extension>
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.info.InfoGeneralHandler"
commandId="isr.general.info">
</handler>
</extension>
<!-- isr.info EXAMPLE -->
<extension point="org.eclipse.ui.commands">
<category id="isr.info.category" name="Example">
</category>
<command id="isr.example.info" name="Example"
categoryId="isr.info.category">
</command>
</extension>
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.info.InfoExampleHandler"
commandId="isr.example.info">
</handler>
</extension>
<!-- isr.info SYNTAX -->
<extension point="org.eclipse.ui.commands">
<category id="isr.info.category" name="Syntax">
</category>
<command id="isr.syntax.info" name="Syntax"
categoryId="isr.info.category">
</command>
</extension>
<extension point="org.eclipse.ui.handlers">
<handler class="hterhors.editor.info.InfoSyntaxHandler"
commandId="isr.syntax.info">
</handler>
</extension>
<extension point="org.eclipse.ui.menus">
<menuContribution locationURI="menu:org.eclipse.ui.main.menu?after=additions">
<menu id="isr.menu" label="Isr" mnemonic="I">
<menu id="isr.menu.infos" label="Info" mnemonic="I">
<command id="isr.general.info.command" commandId="isr.general.info"
mnemonic="G">
</command>
<command id="isr.example.info.command" commandId="isr.example.info"
mnemonic="E">
</command>
<command id="isr.syntax.info.command" commandId="isr.syntax.info"
mnemonic="S">
</command>
</menu>
<command id="parse.sentences.command" commandId="parse.sentences"
mnemonic="P">
</command>
<command id="update.graph.command" commandId="isr.graph.visualization"
mnemonic="U">
</command>
<menu id="isr.menu.layouts" label="Graph layouts" mnemonic="L">
<command id="horizontal.tree.graph.command" commandId="horizontal.tree.graph"
mnemonic="H">
</command>
<command id="radial.graph.command" commandId="radial.graph"
mnemonic="R">
</command>
<command id="spring.graph.command" commandId="spring.graph"
mnemonic="S">
</command>
<command id="tree.graph.command" commandId="tree.graph"
mnemonic="T">
</command>
<command id="vertical.graph.command" commandId="vertical.graph"
mnemonic="V">
</command>
<command id="grid.graph.command" commandId="grid.graph"
mnemonic="G">
</command>
</menu>
<visibleWhen checkEnabled="false">
<with variable="selection">
<iterate ifEmpty="false" operator="or">
<!--or>
<adapt type="org.eclipse.core.resources.IResource">
<or>
<test property="org.eclipse.core.resources.extension"
value="grm">
</test>
</or>
</adapt-->
<with variable="activeEditorInput">
<adapt type="org.eclipse.core.resources.IResource">
<or>
<test property="org.eclipse.core.resources.extension"
value="grm">
</test>
</or>
</adapt>
</with>
<!--/or-->
</iterate>
</with>
</visibleWhen>
</menu>
</menuContribution>
<menuContribution
locationURI="toolbar:org.eclipse.ui.main.toolbar?after=additions">
<toolbar id="isr.toolbars.update.graph">
<command id="isr.toolbar.update.graph.command" commandId="isr.graph.visualization"
icon="icons/sample.gif" tooltip="Update graph-visualization">
<visibleWhen checkEnabled="false">
<with variable="selection">
<iterate ifEmpty="false" operator="or">
<with variable="activeEditorInput">
<adapt type="org.eclipse.core.resources.IResource">
<test property="org.eclipse.core.resources.extension"
value="grm">
</test>
</adapt>
</with>
</iterate>
</with>
</visibleWhen>
</command>
</toolbar>
</menuContribution>
</extension>
<extension point="org.eclipse.ui.workbench.texteditor.hyperlinkDetectors">
<hyperlinkDetector id="hterhors.editor.hyperlink.isrhyperlinkdetector"
name="IsrHyperLink" class="hterhors.editor.hyperlink.IsrHyperLinkDetector"
targetId="org.eclipse.ui.DefaultTextEditor">
</hyperlinkDetector>
</extension>
</plugin>
\ No newline at end of file
<!ELEMENT ISR_GRAMMAR (Start,DeclarationNonTerminal*)>
<!ELEMENT Start (Or?)*>
<!ATTLIST Start name CDATA #REQUIRED>
<!ELEMENT Terminal EMPTY>
<!ATTLIST Terminal name CDATA #REQUIRED>
<!ELEMENT NonTerminal EMPTY>
<!ATTLIST NonTerminal name CDATA #REQUIRED>
<!ELEMENT Or (NonTerminal|Terminal)*>
<!ELEMENT DeclarationNonTerminal (Or?)*>
<!ATTLIST DeclarationNonTerminal name CDATA #REQUIRED>
<?xml version="1.0" encoding="ISO-8859-1"?>
<!--
SRGS XML Grammar Form DTD (20020524)
Copyright 1998-2002 W3C (MIT, INRIA, Keio), All Rights Reserved.
Permission to use, copy, modify and distribute the SRGS DTD and
its accompanying documentation for any purpose and without fee is
hereby granted in perpetuity, provided that the above copyright
notice and this paragraph appear in all copies.
The copyright holders make no representation about the suitability
of the DTD for any purpose. It is provided "as is" without expressed
or implied warranty.
-->
<!ENTITY % uri "CDATA">
<!ENTITY % rule-expansion "#PCDATA | token | ruleref
| item | one-of | tag ">
<!ENTITY % grammar-header "( meta | metadata | lexicon )*">
<!ENTITY % grammar-body "( rule )*">
<!ELEMENT ruleref EMPTY>
<!ATTLIST ruleref
uri %uri; #IMPLIED
type CDATA #IMPLIED
special (NULL | VOID | GARBAGE) #IMPLIED
xml:lang NMTOKEN #IMPLIED
>
<!ELEMENT token (#PCDATA)>
<!ATTLIST token
xml:lang NMTOKEN #IMPLIED
>
<!ELEMENT tag (#PCDATA)>
<!ELEMENT one-of (item)+>
<!ATTLIST one-of
xml:lang NMTOKEN #IMPLIED
>
<!ELEMENT item (%rule-expansion;)*>
<!ATTLIST item
repeat NMTOKEN #IMPLIED
repeat-prob NMTOKEN #IMPLIED
weight NMTOKEN #IMPLIED
xml:lang NMTOKEN #IMPLIED
>
<!ELEMENT rule (%rule-expansion; | example)*>
<!ATTLIST rule
id ID #REQUIRED
scope (private | public) "private"
>
<!ELEMENT example (#PCDATA)>
<!ELEMENT lexicon EMPTY>
<!ATTLIST lexicon
uri %uri;#REQUIRED
type CDATA #IMPLIED
>
<!ELEMENT meta EMPTY>
<!ATTLIST meta
name NMTOKEN #IMPLIED
content CDATA #REQUIRED
http-equiv NMTOKEN #IMPLIED
>
<!ELEMENT metadata EMPTY>
<!ELEMENT grammar (%grammar-header;, %grammar-body;)>
<!ATTLIST grammar
tag-format %uri; #IMPLIED
xml:base %uri; #IMPLIED
version NMTOKEN #REQUIRED
xml:lang NMTOKEN #IMPLIED
xmlns CDATA #REQUIRED
xmlns:xsi CDATA #IMPLIED
xsi:schemaLocation CDATA #IMPLIED
root IDREF #IMPLIED
mode (voice | dtmf) "voice"
>
\ No newline at end of file
package hterhors;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import org.eclipse.ui.plugin.AbstractUIPlugin;
import org.osgi.framework.BundleContext;
/**
* The main plugin class to be used in the desktop.
*/
public class Activator extends AbstractUIPlugin {
// The shared instance.
/**
* @uml.property name="plugin"
* @uml.associationEnd
*/
private static Activator plugin;
// Resource bundle.
/**
* @uml.property name="resourceBundle"
*/
private ResourceBundle resourceBundle;
/**
* The constructor.
*/
public Activator() {
super();
plugin = this;
try {
resourceBundle = ResourceBundle
.getBundle("hterhors.EditorPluginResources");
} catch (MissingResourceException x) {
resourceBundle = null;
}
}
/**
* This method is called upon plug-in activation
*/
public void start(BundleContext context) throws Exception {
super.start(context);
}
/**
* This method is called when the plug-in is stopped
*/
public void stop(BundleContext context) throws Exception {
super.stop(context);
}
/**
* Returns the shared instance.
*/
public static Activator getDefault() {
return plugin;
}
/**
* Returns the string from the plugin's resource bundle, or 'key' if not
* found.
*/
public static String getResourceString(String key) {
ResourceBundle bundle = Activator.getDefault()
.getResourceBundle();
try {
return (bundle != null) ? bundle.getString(key) : key;
} catch (MissingResourceException e) {
return key;
}
}
/**
* Returns the plugin's resource bundle,
* @uml.property name="resourceBundle"
*/
public ResourceBundle getResourceBundle() {
return resourceBundle;
}
}
ContentAssistProposal.label=Content Assists@Ctrl+SPACE
ContentAssistProposal.tooltip=Content Assist
ContentAssistProposal.image=
ContentAssistProposal.description=Content Assist
ContentAssistTip.label=Content Tip@Ctrl+SHIFT+SPACE
ContentAssistTip.tooltip=Content Tip
ContentAssistTip.image=
ContentAssistTip.description=Content Tip
ContentFormatProposal.label=Content Format@Ctrl+SHIFT+F
ContentFormatProposal.tooltip=Content Format
ContentFormatProposal.image=
ContentFormatProposal.description=Content Format
ContentFormatTip.label=Content Tip@Ctrl+SHIFT+SPACE
ContentFormatTip.tooltip=Content Tip
ContentFormatTip.image=
ContentFormatTip.description=Content Tip
package hterhors.editor;
import java.util.HashMap;
import java.util.Iterator;
import java.util.Map;
import org.eclipse.swt.graphics.Color;
import org.eclipse.swt.graphics.RGB;
import org.eclipse.swt.widgets.Display;
/**
* This class manages the
* @author Hendrik
*
*/
public class ColorManager {
protected Map fColorTable = new HashMap(10);
public void dispose() {
Iterator e = fColorTable.values().iterator();
while (e.hasNext())
((Color) e.next()).dispose();
}
public Color getColor(RGB rgb) {
Color color = (Color) fColorTable.get(rgb);
if (color == null) {
color = new Color(Display.getCurrent(), rgb);
fColorTable.put(rgb, color);
}
return color;
}
}
package hterhors.editor;
import org.eclipse.jface.text.BadLocationException;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextDoubleClickStrategy;
import org.eclipse.jface.text.ITextViewer;
/**
* Implements the editors double click strategy.
*
* @author Hendrik
*
*/
public class DoubleClickStrategy implements ITextDoubleClickStrategy {
protected ITextViewer fText;
@Override
public void doubleClicked(ITextViewer part) {
int pos = part.getSelectedRange().x;
if (pos < 0)
return;
fText = part;
selectWord(pos);
}
/**
* This method calculates the word which should be selected.
*
* @param caretPos
* the cursors current position
*/
protected void selectWord(int caretPos) {
IDocument doc = fText.getDocument();
int startPos, endPos;
try {
int pos = caretPos;
char c;
while (pos >= 0) {
c = doc.getChar(pos);
if (!Character.isJavaIdentifierPart(c))
break;
--pos;
}
startPos = pos;
pos = caretPos;
int length = doc.getLength();
while (pos < length) {
c = doc.getChar(pos);
if (!Character.isJavaIdentifierPart(c))
break;
++pos;
}
endPos = pos;
selectRange(startPos, endPos);
return;
} catch (BadLocationException x) {
}
return;
}
/**
* Triggers the selection.
*
* @param startPos
* startposition
* @param stopPos
* stopposition
*/
private void selectRange(int startPos, int stopPos) {
int offset = startPos + 1;
int length = stopPos - offset;
fText.setSelectedRange(offset, length);
}
}
\ No newline at end of file
package hterhors.editor;
import org.eclipse.swt.graphics.RGB;
public interface IISRColorConstants {
RGB DEC_NON_TERMINAL = new RGB(128, 0, 128);
RGB NON_TERMINAL = new RGB(0, 0, 192);
RGB START = new RGB(225, 0, 255);
RGB DEFAULT = new RGB(0, 0, 0);
RGB OR = new RGB(8, 255, 8);
RGB NUMBER = new RGB(192, 192, 0);
RGB IGNORE = new RGB(200, 0, 0);
RGB JOKER = new RGB(192, 128, 128);
RGB DEC_NON_TERMINAL_GRAPH = new RGB(255, 64, 255);
RGB NON_TERMINAL_GRAPH = new RGB(128, 128, 255);
RGB START_GRAPH = new RGB(225, 128, 255);
RGB OR_GRAPH = new RGB(0, 255, 0);
RGB IGNORE_GRAPH = new RGB(255, 128, 128);
RGB JOKER_GRAPH = new RGB(255, 192, 192);
}
\ No newline at end of file
package hterhors.editor;
import hterhors.editor.markers.IsrRuleValidator;
import java.util.ArrayList;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.CompletionProposal;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
/**
* @author Hendrik
*/
class ISRContentAssistantDefaultProcessor implements IContentAssistProcessor {
private final IContextInformation[] NO_CONTEXTS = {};
private final char[] PROPOSAL_ACTIVATION_CHARS = { 's', 'f', 'p', 'n', 'm', };
private ICompletionProposal[] NO_COMPLETIONS = {};
private int override = 0;
private String preSpace = "";
protected static final String lineSeparator = System
.getProperty("line.separator");
/**
* Use this method to set the size for overriding by using content-assistant.
* @param override The size to be override.
* @uml.property name="override"
*/
public void setOverride(int override) {
this.override = override;
}
@Override
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
int offset) {
try {
IDocument document = viewer.getDocument();
ArrayList<CompletionProposal> result = new ArrayList<CompletionProposal>();
if (!IsrRuleValidator.startSymbolExists(document.get())) {
result.add(new CompletionProposal(
preSpace + "$$S: ;" + lineSeparator,
offset,
override,
5 + preSpace.length(),
null,
"New start-symbol",
null,
"The '$$S' symbol is the start symbol and must be included\n"
+ "in the grammar. Additionally, the '$$SS' symbol is predefined and\n"
+ "must not be used in the grammatic description. "));
}
for (String nonterminal : IsrRuleValidator
.getMissingNontermDec(document.get())) {
result.add(new CompletionProposal(preSpace + "$" + nonterminal
+ ": ;" + lineSeparator, offset, override, 3
+ nonterminal.length() + preSpace.length(), null,
nonterminal + " - Missing!", null,
"Add the missing nonterminal-declaration ($"
+ nonterminal + ":) to the grammar."));
}
result.add(new CompletionProposal(
preSpace + "$: ;" + lineSeparator,
offset,
override,
1 + preSpace.length(),
null,
"New declaration",
null,
"\"NONTERMINAL\" symbols are defined equally as TERMINAL symbols but\n"
+ "must have a '$' or '$$' prefix.\n"
+ "Symbols with '$$' prefix are technical symbols which are describe\n"
+ "at \"New technical-nonterminal-declaration\"\n."
+ " The declaration ends with ':' and the whole rule ends with ending-symbol ';'."));
result.add(new CompletionProposal(preSpace + "[] $: ;"
+ lineSeparator, offset, override, 1 + preSpace.length(),
null, "Numbered Rule", null,
"This is the number of the rule. Its an optional information."));
result.add(new CompletionProposal(
preSpace + "$$: ;" + lineSeparator,
offset,
override,
2 + preSpace.length(),
null,
"New technical-nonterminal-declaration",
null,
"\"Technical symbols\" are nonterminal symbols of the grammar which\n"
+ "are not relevant for the understanding process but restrict\n"
+ "word sequences which are allowed by the grammar. They are marked\n"
+ "in the symbol table so that a parser can use this information\n"
+ "when generating the parsing output."));
result.add(new CompletionProposal(
preSpace + "%IGNORE = ;" + lineSeparator,
offset,
override,
10 + preSpace.length(),
null,
"New ignore-rule",
null,
"The \" IGNORE list\" is a list of terminal symbols defined in the\n"
+ "lexicon. A parser can use this list in order to skip some\n"
+ "of these words from the word sequence analysed by the parser.\n"
+ "This may be useful when hesitations like \"er\" should be ignored.\n\n"
+ "An ignore-rule starts with \"%IGNORE =\"\nfollowed by N terminal-symbols and\n"
+ "is closed with closing-symbol \";\"\n\nExample:\n %IGNORE= eh ehm ah er;"));
result.add(new CompletionProposal(
preSpace + "%IGNORE = eh ehm er ah ahm ;" + lineSeparator,
offset,
override,
29 + preSpace.length(),
null,
"Predefined ignore rule.",
null,
"Creates a predefined ignore rule using most used ignore words.\n"
+ "The \" IGNORE list\" is a list of terminal symbols defined in the\n"
+ "lexicon. A parser can use this list in order to skip some\n"
+ "of these words from the word sequence analysed by the parser.\n"
+ "This may be useful when hesitations like \"er\" should be ignored."));
return (ICompletionProposal[]) result
.toArray(new ICompletionProposal[result.size()]);
} catch (Exception e) {
e.printStackTrace();
return NO_COMPLETIONS;
}
}
@Override
public IContextInformation[] computeContextInformation(ITextViewer viewer,
int offset) {
return NO_CONTEXTS;
}
@Override
public char[] getCompletionProposalAutoActivationCharacters() {
return null;
}
@Override
public char[] getContextInformationAutoActivationCharacters() {
return null;
}
@Override
public IContextInformationValidator getContextInformationValidator() {
return null;
}
@Override
public String getErrorMessage() {
return "ERR";
}
}
package hterhors.editor;
import java.util.ArrayList;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.CompletionProposal;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
/**
* @author Hendrik
*/
class ISRContentAssistantIgnoreRuleProcessor implements IContentAssistProcessor {
private final IContextInformation[] NO_CONTEXTS = {};
private ICompletionProposal[] NO_COMPLETIONS = {};
private int override = 0;
private String preSpace = "";
protected static final String lineSeparator = System
.getProperty("line.separator");
/**
* Use this method to set the size for overriding by using content-assistant.
* @param override The size to be override.
* @uml.property name="override"
*/
public void setOverride(int override) {
this.override = override;
}
@Override
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
int offset) {
try {
ArrayList<CompletionProposal> result = new ArrayList<CompletionProposal>();
result.add(new CompletionProposal(
preSpace + "newTerminal ",
offset,
override,
preSpace.length(),
null,
"New terminal",
null,
"\"TERMINAL\" symbols are sequences of letters from the set [a-zA-Z_\\-\\\"0-9].\n"
+ "They must be started by a letter from the subset [a-zA-Z_\\\"]."));
return (ICompletionProposal[]) result
.toArray(new ICompletionProposal[result.size()]);
} catch (Exception e) {
e.printStackTrace();
return NO_COMPLETIONS;
}
}
@Override
public IContextInformation[] computeContextInformation(ITextViewer viewer,
int offset) {
return NO_CONTEXTS;
}
@Override
public char[] getCompletionProposalAutoActivationCharacters() {
return null;
}
@Override
public char[] getContextInformationAutoActivationCharacters() {
return null;
}
@Override
public IContextInformationValidator getContextInformationValidator() {
return null;
}
@Override
public String getErrorMessage() {
return "ERR";
}
}
package hterhors.editor;
import hterhors.editor.markers.IsrRuleValidator;
import java.util.ArrayList;
import org.eclipse.jface.text.IDocument;
import org.eclipse.jface.text.ITextViewer;
import org.eclipse.jface.text.contentassist.CompletionProposal;
import org.eclipse.jface.text.contentassist.ICompletionProposal;
import org.eclipse.jface.text.contentassist.IContentAssistProcessor;
import org.eclipse.jface.text.contentassist.IContextInformation;
import org.eclipse.jface.text.contentassist.IContextInformationValidator;
/**
* @author Hendrik
*/
class ISRContentAssistantRuleProcessor implements IContentAssistProcessor {
private final IContextInformation[] NO_CONTEXTS = {};
private ICompletionProposal[] NO_COMPLETIONS = {};
private int override = 0;
private String preSpace = "";
protected static final String lineSeparator = System
.getProperty("line.separator");
/**
* Use this method to set the size for overriding by using content-assistant.
* @param override The size to be override.
* @uml.property name="override"
*/
public void setOverride(int override) {
this.override = override;
}
@Override
public ICompletionProposal[] computeCompletionProposals(ITextViewer viewer,
int offset) {
try {
IDocument document = viewer.getDocument();
ArrayList<CompletionProposal> result = new ArrayList<CompletionProposal>();
for (String missing : IsrRuleValidator
.getUnusedNonterminals(document.get())) {
result.add(new CompletionProposal(preSpace + "$" + missing
+ " ", offset, override, 2 + missing.length()
+ preSpace.length(), null, missing + " - Unused!",
null, "Add the declared but not used nonterminal ("
+ missing + ")to the rule."));
}
result.add(new CompletionProposal(preSpace + "| ", offset,
override, 2 + preSpace.length(), null, "Or", null,
"Add the or-symbol to the rule."));
result.add(new CompletionProposal(preSpace + "$ ", offset,
override, 1 + preSpace.length(), null, "Nonterminal", null,
"Add New nonterminal-symbol to the current rule."));
result.add(new CompletionProposal(
preSpace + "!*",
offset,
override,
2 + preSpace.length(),
null,
"New joker-symbol",
null,
"\"TERMINAL\" symbols are sequences of letters from the set [a-zA-Z_\\-\\\"0-9].\n"
+ "They must be started by a letter from the subset [a-zA-Z_\\\"].\n"
+ "The joker symbol is denoted by '!*'.\n\n"
+ "The \" joker symbol\" is a special terminal symbol of the grammar which\n"
+ "must not be defined in the lexicon.\n"
+ "If the parser is called with a terminal symbol which is defined\n"
+ "in the lexicon and the corresponding action table entry is empty\n"
+ "it can use this joker symbol in order to get a defined parser\n"
+ "action. The former terminal symbol has to be parsed afterwards.\n"
+ "The joker symbol can be used in the grammar description in order\n"
+ "to define such parser actions. It is handled in the same way\n"
+ "as other terminal symbols defined in the lexicon but does not\n"
+ "correspond to an input symbol. Therefore, it can be called\n"
+ "a virtuell symbol. A special action 'VSHIFT' (virtual shift)\n"
+ "is introduced when generating the action table.\n"
+ "A parser used in a speech recognizer can add a penalty to the \n"
+ "score of the word sequence when shifting the joker symbol. "));
result.add(new CompletionProposal(
preSpace + "newTerminal ",
offset,
override,
preSpace.length(),
null,
"New terminal",
null,
"\"TERMINAL\" symbols are sequences of letters from the set [a-zA-Z_\\-\\\"0-9].\n"
+ "They must be started by a letter from the subset [a-zA-Z_\\\"].\n"
+ "The joker symbol is denoted by '!*'."));
for (String nonterminalDec : IsrRuleValidator
.getNonterminalsDeclarations(document.get())) {
result.add(new CompletionProposal(
preSpace + "$" + nonterminalDec + " ", offset, override, 2
+ nonterminalDec.length() + preSpace.length(), null,
nonterminalDec + " - Existing!", null,
"Add the existing nonterminal ($" + nonterminalDec
+ ") to the rule."));
}
return (ICompletionProposal[]) result
.toArray(new ICompletionProposal[result.size()]);
} catch (Exception e) {
e.printStackTrace();
return NO_COMPLETIONS;
}
}
@Override
public IContextInformation[] computeContextInformation(ITextViewer viewer,
int offset) {
return NO_CONTEXTS;
}
@Override
public char[] getCompletionProposalAutoActivationCharacters() {
return null;
}
@Override
public char[] getContextInformationAutoActivationCharacters() {
return null;
}
@Override
public IContextInformationValidator getContextInformationValidator() {
return null;
}
@Override
public String getErrorMessage() {
return "ERR";
}
}