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 | |
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-, 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 | |
- 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 | |
- 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
- Erstes Element wird immer als Feld interpretiert
- Ist dieses leer:
- Quoted → Literal
- Unquoted + bekanntes Feld → Feldwert
- sonst → Literal
4. Konditionale Blöcke %...%
Konditionale Blöcke werden nur ausgegeben, wenn bestimmte Felder existieren.
Syntax ist wie folgt:
1 | |
Einzelnes Feld
1 | |
→ 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 | |
→ 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 | |
→ Wird ausgegeben, wenn mindestens eines der Felder existiert.
Negation (!)
1 | |
→ 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}
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ätstart: Startdatum eines Zeitraumsend: 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 | |
Ergebnis:
1 | |
Datum nach APA-Konvention:
1 | |
Ergebnis:
1 | |
Datumsbereiche
Start- und Enddatum können unabhängig voneinander formatiert werden:
1 | |
Ergebnis:
1 | |
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 | |
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 | |
Für ein deutschsprachiges Template kann die Schreibweise selbst festgelegt werden:
1 | |
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 | |
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 | |
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.