Zum Inhalt

Template-Syntax

Diese Dokumentation beschreibt die Template-Syntax, mit der in OSIRIS individuelle Zitationsstile definiert werden können. Sie richtet sich an Personen, die den offiziellen Zitationsstil ihres Instituts (z. B. für Publikationen) möglichst genau nachbauen möchten.

Grundprinzip

Ein Zitations-Template ist ein Text mit Platzhaltern, der zur Laufzeit mit den Daten einer Aktivität gefüllt wird.

Beispiel:

1
{authors}. {title}. %journal ({year})% {journal}, {year}.

OSIRIS ersetzt dabei: - Feld-Platzhalter ({…}) durch konkrete Werte - Konditionale Blöcke (%…%) nur dann, wenn bestimmte Felder existieren - leere Klammern, doppelte Satzzeichen usw. automatisch

Bei neuen Aktivitäten wird ein Standard-Template verwendet, das aus Autoren, Titel und Jahr besteht. Dieses Template kann (und sollte) individuell angepasst werden. Besonders wenn deine Aktivitäten dir nur als leere Vorlage angezeigt werden, kannst du hier ansetzen.

1. Feld-Platzhalter

Einfacher Feldzugriff

  • {title}
  • {year}
  • {journal}

→ Wird durch den Inhalt des jeweiligen Feldes ersetzt. - Existiert das Feld nicht oder ist leer → leerer String - Arrays (z. B. Autorenlisten) werden automatisch mit , zusammengefügt - MongoDB-Objekte werden intern korrekt aufgelöst

Um herauszufinden, welche Felder zur Verfügung stehen, kann man den Template Baukasten verwenden. Dort sind alle Felder mit Beispieldaten aufgelistet.

Für benutzerdefinierte Felder gilt: Der Feldname ist die ID, die du bei der Anlage des benutzerdefinierten Feldes vergeben hast.

2. Autoren-, Editor- und Supervisor-Templates

Für Autoren, Editoren und Supervisoren gibt es eine eigene Template-Sprache. Damit lassen sich Personenlisten flexibel formatieren.

Die Grundstruktur lautet:

1
2
3
authors-{Namensformat}-{Optionen}
editors-{Namensformat}-{Optionen}
supervisors-{Namensformat}-{Optionen}

authors-, editors- oder supervisors- muss immer am Anfang stehen. Danach folgt das Namensformat. Weitere Optionen für Trennzeichen und Personenlimits können mit - angehängt und flexibel kombiniert werden.

Namensformate

Code Ausgabe-Beispiel
last f. Koblitz J.
last f Koblitz J
f last J Koblitz
f. last J. Koblitz
last first Koblitz, Julia
first last Julia Koblitz
last, f. Koblitz, J.
last, f Koblitz, J
last, first Koblitz, Julia

Trennzeichen

Code Wirkung
(kein Code) Komma und „and“: A, B and C
amp Ersetzt „and“ durch „&“: A, B & C
amp+comma Verwendet „, &“ als letzten Trenner: A, B, & C
semicolon Verwendet Semikolons statt Kommas: A; B and C

Personenlimit

Code Bedeutung
(kein Code) Alle Personen anzeigen
etal6 Maximal 6 Personen anzeigen, danach „et al.“
ellipses5 Bis zu 4 Personen und die letzte Person anzeigen; dazwischen wird gegebenenfalls „...“ verwendet

Die Zahl kann an das gewünschte Limit angepasst werden, zum Beispiel etal3 oder ellipses10.

Editor-Suffix

Editor-Suffixe gelten nur für editors-. Bei authors- und supervisors- werden sie nicht verwendet.

Code Wirkung
eds Immer „(eds.)“ nach der Liste
ed „(ed.)“ bei einer Person, sonst „(eds.)“
Eds Immer „(Eds.)“ nach der Liste
Ed „(Ed.)“ bei einer Person, sonst „(Eds.)“

Beispielkombinationen

Format Ausgabe-Beispiel
authors-last f. Koblitz J., Stark T. and Miller L.
editors-first last-amp-ed Julia Koblitz, Tony Stark & Lois Miller (eds.)
authors-last, f-etal3 Koblitz, J, Stark, T, Miller, L et al.
authors-last first-amp+comma Koblitz, Julia, Stark, Tony, & Miller, Lois
editors-f. last-semicolon-Eds J. Koblitz; T. Stark and L. Miller (Eds.)
supervisors-last f.-semicolon-ellipses5 Koblitz J.; Stark T.; Miller L.; Wayne B. ... Parker P.

Falls eine benötigte Formatierung noch nicht abgebildet werden kann, kann dafür ein Ticket auf GitHub erstellt werden.

3. Fallback / Priorität

Mit | kann ein Fallback definiert werden.

Literal als Fallback

1
{doi|"ohne DOI"}
  • Wenn doi leer ist → Text ohne DOI
  • Literale müssen in Anführungszeichen stehen (")
  • Wichtig: Dies gilt nur für das Fallback, nicht für konditionale Blöcke! Dort müssen Literale nicht in Anführungszeichen stehen und Felder müssen dafür in {} gesetzt werden. Der Grund für diese Inkonsistenz ist, dass eine Verschachtelung mehrerer {} schwer lesbar und fehleranfällig wäre.

Feld als Fallback

1
{doi|link}
  • Wenn doi leer ist → Wert aus dem Feld link
  • Wenn link kein bekanntes Feld wäre, würde es als Literal interpretiert und so ausgegeben werden.

Regel zur Auflösung

  1. Erstes Element wird immer als Feld interpretiert
  2. Ist dieses leer:
  3. Quoted → Literal
  4. Unquoted + bekanntes Feld → Feldwert
  5. sonst → Literal

4. Konditionale Blöcke %...%

Konditionale Blöcke werden nur ausgegeben, wenn bestimmte Felder existieren.

Syntax ist wie folgt:

1
%BEDINGUNG Text%

Einzelnes Feld

1
%journal ({journal})%

→ Wird nur ausgegeben, wenn journal existiert und nicht leer ist. Dadurch werden leere Klammern vermieden. (Leere Klammern werden später automatisch entfernt, dies ist also nur ein Beispiel für die Verwendung von Konditionen.)

UND-Bedingung (&)

1
%journal&year ({journal}, {year})%

→ Wird nur ausgegeben, wenn alle Felder existieren.

Typischer Use Case: - Jahr nur, wenn auch Journal existiert - Band/Heft nur, wenn Seiten existieren

ODER-Bedingung (|)

1
%doi|link (Verfügbar unter: {doi|link})%

→ Wird ausgegeben, wenn mindestens eines der Felder existiert.

Negation (!)

1
%!title (Kein Titel vorhanden)%

→ Wird nur ausgegeben, wenn title nicht existiert oder leer ist.

Sonderfall: Platzhalterwert -

Ein Feld mit dem Wert - gilt als leer → Kondition schlägt fehl

5. Datumsformatierung {date:format}

2.1.0

Datumsfelder können mit einem individuellen Format ausgegeben werden. Dazu wird nach dem Feldnamen, getrennt durch einen Doppelpunkt, das gewünschte Datumsformat angegeben.

Verfügbare Datumsfelder:

  • date: Datum einer Aktivität
  • start: Startdatum eines Zeitraums
  • end: Enddatum eines Zeitraums

Häufig verwendete Formatzeichen

Zeichen Bedeutung Beispiel
Y Vierstelliges Jahr 2026
y Zweistelliges Jahr 26
F Vollständiger Monatsname July
M Abgekürzter Monatsname Jul
m Monat mit führender Null 07
n Monat ohne führende Null 7
d Tag mit führender Null 04
j Tag ohne führende Null 4

Weitere Formatzeichen sind in der PHP-Dokumentation zur Datumsformatierung beschrieben.

Beispiele

ISO-Datum:

1
{date:Y-m-d}

Ergebnis:

1
2026-07-24

Datum nach APA-Konvention:

1
({date:Y}, {date:F j})

Ergebnis:

1
(2026, July 24)

Datumsbereiche

Start- und Enddatum können unabhängig voneinander formatiert werden:

1
{start:Y, F j}–{end:Y, F j}

Ergebnis:

1
2026, July 24–2026, July 26

Optionales Enddatum

Bei einem normalen Datumsbereich bedeutet ein fehlendes Enddatum, dass die Aktivität nur am Startdatum stattgefunden hat. Das Enddatum und der Gedankenstrich können deshalb in einen konditionalen Block gesetzt werden:

1
{start:Y, F j}%end –{end:Y, F j}%

Ist kein Enddatum vorhanden, wird nur das Startdatum ausgegeben.

Laufender Datumsbereich

Bei einem laufenden Datumsbereich bedeutet ein fehlendes Enddatum, dass die Aktivität noch andauert. Über einen Literal-Fallback kann dafür ein beliebiger Text eingesetzt werden:

1
{start:Y, F j}–{end:Y, F j|"Today"}

Für ein deutschsprachiges Template kann die Schreibweise selbst festgelegt werden:

1
{start:j. F Y}–{end:j. F Y|"heute"}

Dadurch kann für jedes Template individuell entschieden werden, welche Sprache und Großschreibung verwendet werden soll.

Kompakte Datumsbereiche mit end-compact

Mit end-compact werden übereinstimmende Bestandteile von Start- und Enddatum nicht wiederholt:

1
({start:Y, F j}%end-compact –{end-compact:Y, F j}%)

Je nach Zeitraum entstehen automatisch folgende Ausgaben:

  • Gleicher Tag: (2026, July 24)
  • Gleicher Monat: (2026, July 24–26)
  • Anderer Monat: (2026, July 30–August 2)
  • Anderes Jahr: (2026, December 30–2027, January 2)

Fehlt das Enddatum oder entspricht es dem Startdatum, bleibt end-compact leer. Deshalb sollte auch der Gedankenstrich innerhalb eines konditionalen Blocks stehen.

6. Automatische Bereinigung

Nach der Ersetzung führt OSIRIS eine automatische Format-Bereinigung durch:

Entfernt werden u. a.: - Leere Klammern: () oder [] - Überflüssige Leerzeichen - Mehrfache Punkte oder Kommas - Kommas vor Satzende - Kommas nach <br /> (Zeilenumbruch)

Beispiel-Template:

1
{authors}. {title}. ({journal}) {year}.

Ohne Journal: Müller J. Titel. 2024.

Kein händisches Abfangen nötig ✅

7. Die Sprache der Templates

Einige Felder können in mehreren Sprachen ausgegeben werden, z. B. der Monat oder die Art der Abschlussarbeit. Standardmäßig wird die Sprache der OSIRIS-Benutzeroberfläche verwendet, was allerdings bei unterschiedlichen Nutzern zu uneinheitlichen Zitaten führen kann. Deshalb empfehlen wir, die Sprache der Templates explizit festzulegen. Dies kannst du in den allgemeinen Einstellungen tun.

8. Grenzen der aktuellen Syntax

Nicht unterstützt wird bisher: - Verschachtelte Konditionen - Mathematische Vergleiche - Explizite else-Zweige

➡️ Ziel ist Nachvollziehbarkeit und Wartbarkeit, nicht Turing-Vollständigkeit.