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:

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