Aneamal-Version 2018-M01
Die Aneamal-Version 2018-M01 steht zum Herunterladen bereit.
Neu: Ein Kopf-, ein Fußbereich und eine CSS-Datei zur Gestaltung lassen sich mit einem hierarchischen System auf allen Seiten vollautomatisch einbinden. Da Ausnahmen sprichwörtlich die Regel bestätigen, kannst du auch leicht Ausnahmen von der Automatik setzen. So kannst du sie ohne Sorge, dich damit in ein starres Korsett zu zwingen, einsetzen.
Außerdem neu: Abschnitte einer Seite kann man nun zunächst ausgeblendet lassen und es dem Leser überlassen, sie aufzuklappen, wenn er sich für mehr Details, für ein Beispiel, für die Antwort auf eine von häufig gestellten Fragen, für die Lösung eines Rätsels, … interessiert.✻
Weitere Änderungen betreffen Metavariablen und Details bei der Übersetzung von Aneamal zu HTML. Auf dieser Seite stelle ich ausgewählte Neuerungen vor. Eine kurz gefasste Liste aller Änderungen findet sich in der Versionsgeschichte.
Übrigens, wenn du von der vorigen auf die neue Version aktualisieren möchtest, musst du ausschließlich diese drei Dateien ersetzen:
- aneamal/functions.php
- aneamal/html.php
- aneamal/main.php
Ansonsten brauchst du nichts zu ändern.
Automatisches Layout
Greift man mit dem Webbrowser auf eine Aneamalseite zu, werden nun ein Kopfbereich, ein Fußbereich und ein Stylesheet automatisch eingebunden – falls vorhanden. Angenommen, die Seite seite.nml im Verzeichnis /beiss/spiel/ unter der Domain example.org wird aufgerufen:
https://example.org/beiss/spiel/seite
Falls es auch eine Datei @header.nml im gleichen Verzeichnis gibt, im Beispiel also /beiss/spiel/@header.nml, wird sie als Kopfbereich eingebunden. Wenn es jene Datei nicht gibt, es jedoch eine Datei @header.nml im übergeordneten Verzeichnis gibt, also /beiss/@header.nml, wird diese als Kopfbereich eingebunden. Wenn es auch jene Datei nicht gibt, aber eine Datei @header.nml im wiederum übergeordneten Verzeichnis existiert, also /@header.nml, wird diese als Kopfbereich eingebunden …
Beim Fußbereich verhält es sich genauso mit Dateien namens @footer.nml und ein Stylesheet wird dementsprechend automatisch eingebunden, wenn es @look.css heißt.
Manuelles Layout
Kopfbereich, Fußbereich und/oder Stylesheet können auch in einer Aneamaldatei manuell angegeben werden. Das geht so:
@header: ->exempelkopf.nml
@footer: ->demofuss.nml
@look: ->zbgestaltung.css
Diese manuelle Angabe hat Vorrang vor Dateien zur automatischen Einbindung. Man kann auch angeben, dass die automatische Einbindung unterlassen werden soll, ohne dass stattdessen eine manuell angegebene Datei geladen werden soll. Das geht mit dem Wert off
:
@footer: off
@header: off
@look: off
Wenn man gar keine Datei automatisch einbinden möchte, muss man nicht jede Automatik einzeln abschalten. Man kann stattdessen einfach die Metavariable @layout: manual
setzen. Es steht einem dann noch immer frei, beispielsweise einen Fußbereich manuell zu laden:
@footer: ->/vorlagen/navigation.nml
@layout: manual
Die Metavariable @layout
kennt noch einen weiteren Wert, blank
. Wenn man in einer Aneamaldatei @layout: blank
setzt, wird bei direktem Aufruf dieser Datei gar nichts angezeigt. Vielleicht fragst du dich, wo das nützlich sein kann? Zum Beispiel in Dateien, die gar nicht direkt aufgerufen werden sollen, sondern die nur als eingebundener Bestandteil anderer Seiten sichtbar werden sollen.
Einblendbare Inhalte
Wenn man eine Überschrift mit Plus- statt Bindestrichen umgibt, sind die zugehörigen Inhalte zunächst ausgeblendet. Sie können per Klick auf die Überschrift eingeblendet werden.✻ So kann man weiterführende Informationen hinterlegen, die vielleicht nicht jeder Leser der Seite benötigt, die einigen Lesern aber einen Mehrwert bieten.
Standardüberschrift | Einblendendes Äquivalent |
---|---|
--- Meer --- |
+++ Meer +++ |
- - Meer - - |
+ + Meer + + |
Was genau sind zur Überschrift gehörige Inhalte, die aus- und eingeblendet werden können? Im Allgemeinen sind das alle Inhalte bis zur nächsten Überschrift oder Trennlinie gleichen oder wichtigeren Ranges. Wenn keine solche Überschrift mehr folgt, sind es in der Regel alle Inhalte bis zum Dateiende. Zitatblöcke und Heredocs verhalten sich dabei wie eine Datei: Zu einer Überschrift, die in einem Zitatblock steht, gehört also maximal alles bis zum Ende desselben Zitatblocks.
Beispiele
Im folgenden Beispiel wird eine Seite, die häufig gestellte Fragen zum Minigolf beantwortet, mit der neuen Technik umgesetzt. Dabei sind die Antworten zunächst ausgeblendet, sodass der Leser alle Fragen im Blick hat und schnell findet, was er wissen möchte. Klickt er auf eine Frage, so wird der zugehörige Inhalt eingeblendet. Die letzte Überschrift mit dem Hinweis, wohin man sich bei verbleibenden Unklarheiten wenden kann, ist hingegen immer sichtbar, da sie in ---
eigeschlossen ist.
=== Minigolf-FAQ === +++ Ist mein Mops ein Minigolf? +++ Nein, ein Mops ist ein Mini_w_olf. +++ Wieso „Minigolf“? Müsste das nicht „Polo“ heißen? +++ Beim Polo wird zwar ebenfalls ein Ball mit Schlägern traktiert, allerdings wird dieses Spiel zu Pferd ausgetragen. Beim Minigolf werden weder Pferde noch andere Reittiere eingesetzt. Der Name „Minigolf“ leitet sich vom Golfsport ab, welcher ganz ähnlich wie Minigolf gespielt wird, allerdings zum Spielen ein Vielfaches an Raum beansprucht. Die häufige Verwechslung von Minigolf und Polo kommt vermutlich daher, dass der kleine Bruder des Golfs, gemeint ist das Automobil von Volkswagen, „Polo“ heißt. Mit unserem Sport hat das nichts zu tun. +++ Sind beim Minigolf Schusswaffen erlaubt? +++ Nein! --- Wurde deine Frage nicht beantwortet? --- Dann schreibe uns per E-Mail an: faq\@minigolf.example
Das zweite Beispiel nutzt die Funktion, um die Lösung einer Denksportaufgabe zunächst ausgeblendet zu halten:
Ein Mann reist mit einem Wolf und einer Ziege und einem Kohlkopf. Sie kommen an einen Fluss, den sie überqueren müssen. Das vorhandene Boot trägt aber immer nur zwei der Reisenden. Rudern kann nur der Mann. Wie setzen sie alle über, ohne dass Wolf und Ziege oder Ziege und Kohlkopf ohne Aufsicht des Mannes sind – denn dann würde es Tote geben? +++ Lösung +++ Zuerst fährt der Mann mit der Ziege über den Fluss. Dann fährt der Mann allein zurück. Dann fährt der Mann mit dem Wolf über den Fluss. Dann fährt der Mann mit der Ziege zurück. Dann fährt der Mann mit dem Kohlkopf über den Fluss. Dann fährt der Mann allein zurück. Dann fährt der Mann mit der Ziege über den Fluss. +++ Übrigens: Dieses Rätsel ist über 1000 Jahre alt.
Der aus-/einblendbare Bereich endet hier bei der „anonymen Überschrift“ +++
. Anders als bei ---
wird mit +++
keine sichtbare Trennlinie erzeugt.
Übersetzung nach HTML und CSS
Hauptinhalte
Der Inhalt einer aufgerufenen Datei wird in HTML in ein <main>
-Element gepackt. Automatisch oder manuell geladene Fuß- und Kopfbereiche liegen vor und nach diesem Bereich.
Einblendbare Inhalte
Die neuen ein-/ausblendbaren Inhalte werden in HTML mit den Elementen <details>
und <summary>
umgesetzt.✻ So sähe das zweite Beispiel im Kern in HTML etwa so aus:
<details>
<summary><h2>Lösung</h2></summary>
<p>Zuerst fährt der Mann mit der Ziege über den Fluss.<br>
Dann fährt der Mann allein zurück.<br>
…
</details>
Tipp: Es kann bei der Gestaltung per CSS sinnvoll sein, die Überschriften im HTML-<summary>
-Element als inline-block
darzustellen, zum Beispiel per
summary > * {display:inline-block}
Formeln
Formelblöcke, die in Aneamal mit $$
markiert werden, werden in HTML mit <div role='math'>
markiert. Bislang wurde stattdessen <div style='position:relative'>
verwendet, falls auch eine Formelnummer angegeben war. Falls du diese CSS-Angabe benötigst, kannst du sie in deinem Stylesheet zum Beispiel so setzen:
div[role=math] {position:relative}
Formeln im Fließtext ($
) werden in HTML mit <span role='math'>
markiert.
Hinweise zu Bildern
Bei Bildern kann man in Aneamal seit langem Hinweise mit {…}
anfügen. So wurde beispielsweise
[i:Pudel]->bello.jpg{Wau wau!}
nach HTML in etwa so übersetzt:
<span title='Wau wau!'><img src='bello.jpg' alt='Pudel'></span>
Jetzt wandert das HTML-title
-Attribut direkt ins HTML-<img>
-Element:
<img src='bello.jpg' alt='Pudel' title='Wau wau!'>
Anmerkungen/Fußnoten
Anmerkungen wie beispielsweise Fußnoten werden in Aneamal unter drei Unterstriche ___
gesetzt. Bislang wurden diese mit <div class='_notes' role='note'><hr>
markiert. Stattdessen heißt es nun nur <div role='note'><hr>
. In Stylesheets kann man diese Bereich mit [role=note]
selektieren.
Unterzeilen in Überschriften
Unterzeilen innerhalb von Überschriften wurden bisher in HTML mit <span class='_subhead'>
markiert. Die Klasse entfällt nun, sodass eine Hauptüberschrift mit enthaltener Unterzeile so aussieht:
<h1>Überschrift<br><span>mit Unterzeile</span></h1>
In Stylesheets kann man die Unterzeilen mit h1 > br + span
beziehungsweise h2 > br + span
und h3 > br + span
in mittleren und untergeordneten Überschriften selektieren.
Metavariablen
Metavariablen sind nun auf eine Auswahl bekannter Schlüsselwörter wie author
, robots
, style
und header
beschränkt. Das hat zwei Vorteile: Eine Fehlermeldung weist einen nun darauf hin, wenn man sich vertippt hat und zum Beispiel @robert
statt des erwarteten @robots
geschrieben hat. Außerdem ist es nur möglich, bei der Weiterentwicklung von Aneamal zukünftig neue Funktionen mit Metavariablen zu verknüpfen, wenn sichergestellt ist, dass sie von Autoren nicht bereits für andere Zwecke genutzt werden, was zu unerwünschten Nebenwirkungen führen würde.
Es ist jedoch weiterhin möglich, beliebige Variablen zu verwenden, wenn man bei Ihrer Definition Sonderbedeutungen mit einem Backslash vor dem Schlüsselwort ausschließt. Folgendes Beispiel ist also nach wie vor möglich, obschon Batman
keine Aneamal bekannte Metavariable ist:
@ \Batman: Bruce Wayne
Falls du eine Aneamal noch unbekannte Metavariable benötigst, die aber bei der Ausgabe im HTML-Kopfbereich als HTML-<meta>
- oder -<link>
-Element auftauchen soll, um eine besondere Wirkung zu entfalten, kannst du dich an mich wenden und vorschlagen, sie demnächst zu den erlaubten Schlüsselwörtern hinzuzufügen. Eine schnelle Lösung ist das freilich nicht. Aber du hast noch eine Möglichkeit: Setze einen Bindestrich (-
) vor das Schlüsselwort; dann kannst du es frei wählen und es wird trotzdem ohne den Bindestrich in den HTML-Kopfbereich eingefügt, zum Beispiel:
@ -ICBM: 53.0769, 11.8612
Danksagung
Danke an David für sein umfangreiches Feedback, welches in die Weiterentwicklung von Aneamal eingeflossen ist.
✻ Leider unterstützen Microsofts Browser zum Zeitpunkt der Veröffentlichung dieser Aneamal-Version diese Funktion noch nicht. Siehe https://caniuse.com/#feat=details