Mosaikum 1.0
Von KerLeone



Zeitgemäße Verwendung von Fußnoten
 Aufsatz
Autor: KerLeone
25.11.2003

Zeitgemäße Verwendung von Fußnoten



Dieser Aufsatz wird eine neue Art von "Fußnote" vorstellen, die dem Lesen am Bildschirm stärker gerecht wird. Eine kleine Idee, aber für Leser wie Autor eine große Erleichterung. Wer es eilig hat kann die neue Fußnote gleich ausprobieren und den dafür benötigten Code ansehen. Ein Beispiel für die aufwendige Gestaltung einer Fußnote ist meine putziger Fußnotenkasten.

Wissenschaft und HTML

In der Wissenschaft haben sich zwar immer einige sehr früh darum bemüht, neue Technologien wie das Internet als Werkzeug zuverwenden (z.B. Grönemann, Olaf: Wissenschaftliches Publizieren mit HTML). Nicht zuletzt ist das Internet, das Web und die Formatierungssprache HTML unter anderem dafür entworfen worden bzw. hat von hier aus wesentliche Antriebe erfahren. Aber andererseits ist die Akzeptanz von neuen Technologien oft schleppend. Bei der Verwendung von HTML für das Verfassen und Publizieren von wissenschaftlichen Arbeiten gibt es sicherlich einige Hürden, aber nur zwei davon halte ich bis heute für bedeutend: Am ersten Punkt wird man so schnell nichts ändern können. Es wird immer Personen geben, die sich Texte lieber ausdrucken. Bei dem zweiten Punkt ändert sich aber gerade vieles. Zum einen kann man mit Textverarbeitungsprogrammen wie Word oder Open Office/Star Office mittlerweile komfortabel HTML-Seiten ausgeben. Zum anderen ist aber seit der Einführung von CSS die Erstellung von optisch ansprechenden Seiten auch ohne Code-Überladung möglich. Ich selbst organisiere etwa einen Großteil meine Texte und Notizen im HTML-Format. Die Texte und Notizen lassen sich so miteinander verknüpfen und man strickt damit an einem beliebig skalierbaren Wissensnetz, welches bisher getrennte Formate wie Kopien (Scans), Karteikarten, Notizenblätter und Aufsätze miteinander vereint. Auf welche Weise man auch immer einen HTML-Text erzeugt, ob mit Textverarbeitungsprogrammen oder mit selbstgeschriebenem HTML, ein Problem bleibt unsauber gelöst: Die Fußnote.

Der Sinn einer Fußnote

Die eigentliche Idee von Fußnoten ist immer noch, Ergänzungen, Anmerkungen und Quellenangaben vom Kerntext zu trennen, so dass es dem Leser überlassen bleibt, wie tief er in den Text einsteigt. Dabei ist es auch das Ziel, dem Leser einen möglichst einfachen Weg zu den Ergänzungen zu ermöglichen. Deshalb ist in den meisten wissenschaftlichen Arbeiten der Fußnote der Vorzug vor der Endnote gegeben.

Bisherige Verwendung von Fußnoten in HTML

Wie bei allen neuen Technologien überträgt man anfangs oft nur die alten Konzepte 1:1 auf das neue Medium. Die Fußnote wurde in HTML-Text meist optisch an die eines Drucktextes angelehnt.

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla faci.1 Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.2 Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Hier bemerkt man übrigens das erste ärgerliche Problem, nämlich, dass hochgestellter Text in den meisten Browsern kaum mehr lesbar ist und obendrein bei manchen Schriftarten die Zeilen verschiebt. Und so wurde die Fußnote erzeugt:
<a href="#Note1"><sup>1</sup></a>
---
<a name="Note1"><sup>1</sup></a>
<small>Hier der Text zu der Fußnote</small>
Hier kann man aber bereits mit CSS herumtricksen und auf das <sup>-Element verzichten.

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla faci.1 Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.2 Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Diese Fußnote ist wesentlich besser zu lesen und kann an jeden Text beliebig in Hochstellung und Font angepasst werden, ohne dass sich dadurch der Zeilenabstand ändert. Diese nachträgliche Änderung vollziehe ich übrigens immer im Stylesheet von Dokumenten, die ich mit Open-Office erstellt und nach HTML konvertiert habe. Hier der Code für diese Art von Fußnote: Anweisung im CSS-Bereich:
.besserefussnote {
                 font-size: 85%;
                 position:relative;
                 top:-7px;
                 margin-right:8px;
                 }
Und die Auszeichnung im Text:
<a href="#Note2" class="besserefussnote">2</a>

Nachteile bisheriger Fußnoten

Diese Art von Fußnoten hat zwei entscheidende Nachteile. Erstens verliert man sich, wenn man auf den Link geklickt hat, in einer Riesenliste von Fußnoten. Die angeklickte Fußnote steht zwar immer am Kopf der Seite, bzw. sie klebt regelrecht am oberen Rand. Aber dort liest man sehr ungern. Das zweite Problem ist, dass die Fußnoten physikalisch von den Stellen getrennt sind, auf die sie sich beziehen. Damit kann man größere Aufsätze unmöglich in HTML schreiben. Man ist auf ein Textverarbeitungsprogramm angewiesen, welches die Nummerierung fehlerfrei übernimmt und dann in HTML konvertiert.

Eine moderne Variante der Fußnote

Jetzt aber endlich zur Sache. Nachdem der Zweck der Fußnote eigentlich nur ist, einen Zusatztext optional anzuzeigen, kann man diesen auch an Ort und Stelle einblenden.

Hier nun die neue Form der "Fußnote":

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla faci.*(Und hier der Text der Fußnote.) Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat.*(Und hier der Text der Fußnote.) Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

Diese Information ist angenehmer zu lesen und bieten darüberhinaus mehrere Vorteile:

Technische Realisierung

Die oben vorgestellte Fußnote funktioniert mit Javascript/DOM. Diese Zusatzsprache besitzt in ihrer neuen Version die Möglichkeit, HTML-Seiten auch nach dem Ladevorgang durch den Anwender dynamisch verändern zu lassen. DHTML wurde diese Mögichkeit genannt, obwohl sich an dem HTML-Code nichts geändert hat.
Das Stylesheet der zwei Fußnoten-Klassen:
.fn {color:#0000FF; cursor:pointer}
.fnt {display:none; color:#800000}
So ist die Fußnote im HTML-Text eingebunden:
<span class="fn" onclick="zeigen(this)">*<span class="fnt">
Und hier der Text der Fußnote.</span></span>
Der innere Span-Tag umfasst den Fußnotentext und ist im Stylesheet als unsichtbar markiert (display:none). In den äußeren Span-Tag, der momentan nur mit einem Sternchen gefüllt ist, wird später die Fußnotennummer hineingeneriert.* (Hier kann man auch jedes andere Zeichen einfügen. Es hat sich gezeigt, dass Opera einen leeren Tag im Nachhinein nicht mehr füllen kann. Man sollte nur kein Leerzeichen verwenden, denn dann bekommt der Internet Explorer Probleme, falls vor der Fußnote ebenfalls ein Leerzeichen steht. Er meint vermutlich, zwei Leerzeichen hintereinander muss er nicht darstellen, und füllt im Nachhinein ebenfalls keine Nummer mehr ein.) Sie wird mit cursor:pointer und der blauen Farbe wie ein Link aussehen. Mit dem Javascript-Befehl onClick wird später beim Klicken auf die Nummer die Funktion aufgerufen, die den Text sichtbar macht. Mit dieser Technik werden die Fußnoten im Nachhinein sichtbar. Vorher müssen die Fußnoten allerding automatisch nummeriert werden, und dafür gibt es zwei Möglichkeiten.
Die Javascript-Variante der Nummerierung
Diese Variante hat den Vorteil, mit allen gängigen, aktuellen Browsern zu funktionieren. Beim Laden der Seite wird die Funktion "Wechseln" aufgerufen:
<body onLoad="wechseln()">
Die Funktion sucht in einer while-Schleife nach allen span-Elementen des Dokuments, ein Zähler i nummeriert diese, um sie später konkret ansprechen zu können. Sobald eines davon davon der Klassennamen fn trägt, wird dem Element der Inhalt des Zählers fnzahl zugewiesen, mit Klammern und der Zähler wird erhöht. Am Ende wird der Zähler i erhöht und der nächste span-Tag geprüft.
function wechseln() {
   var i = 0;
   var fnzahl=1;
   while (document.getElementsByTagName("span")[i] != null) {
     if (document.getElementsByTagName("span")[i].className
                                                   == "fn") {
        document.getElementsByTagName("span")[i].firstChild.data
                                               = "("+fnzahl+")";
        fnzahl++;
     }
   i++;
   }
}

Die CSS-Variante der Nummerierung

Die automatische Nummerierung von Fußnoten lässt sich besonders elegant auch mit CSS lösen. Dafür muss man der Klasse der Fußnotenzahl, in diesem Fall nun fncss genannt, eigentlich nur eine automatische Nummerierung zuweisen und in Anführungszeichen Klammern oder andere Zeichen angeben, die später die Fußnotennummer umfassen:
.fncss:before { content:"(" counter(fnzahl) ")";
             counter-increment:fnzahl
           }
Den Rest erledigt der Browser, zumindest der Opera-Browser, denn das ist der Nachteil der Variante: Der Internet-Explorer, und auch Mozilla/Netscape unterstüzen dieses sogenannte Pseudoformat noch nicht. Für die Zukunft ist das aber ein interessante Sache, denn auch Kapitel können damit automatisch nummeriert werden.

Duis autem vel eum iriure dolor in hendrerit in vulputate velit esse molestie consequat, vel illum dolore eu feugiat nulla faci. (Und hier der Text der Fußnote.) Lorem ipsum dolor sit amet, consectetuer adipiscing elit, sed diam nonummy nibh euismod tincidunt ut laoreet dolore magna aliquam erat volutpat. (Und hier der Text der Fußnote.) Ut wisi enim ad minim veniam, quis nostrud exerci tation ullamcorper suscipit lobortis nisl ut aliquip ex ea commodo consequat.

... und ganz ohne Javascript

Man kann sogar ganz auf Javascript verzichten. Dazu muss man die hover-Funktion von CSS nutzen und die Fußnote in einem Link verpacken. Auch diese Variante funktioniert momentan nur mit dem Opera-Browser. Allerdings finde ich es nicht so schön, dass man den Fußnotentext nur gezeigt bekommt, solange der Mauszeiger über der Fußnote steht. Diese Variante kann man auch dahingehend abändern, dass ein Kasten erscheint, in dem der Text der Fußnote steht. Das ist eine optisch schöne Lösung, hat aber den Nachteil, dass man im Layout links oder rechts genug Platz für diesen Kasten bereithalten muss. Ich möchte hier nicht näher auf diese Variante eingehen, habe aber eine Beispielseite parat: Dynamische Fußnoten ganz ohne Javascript.

Aufwendige Gestaltung der Fußnoten

Man muss noch nicht einmal auf eine komplizierte Gestaltung der Fußnoten verzichten. Ohne dass der Quellcode im Text komplizierter wird, kann man mit Javascript die Formatierung zentral im Kopf des Dokuments vorgeben. Diese Variante setzt allerdings gute Javascript-Kenntnisse vorraus, weil die HTML-Tags in Laufzeit mit Javascript generiert und beim Wegklicken des Fußnotenkastens wieder entfernt werden müssen. Ein Beispiel für so einen Fußnotekasten, der sich an das Design der Seite anpasst, ist mein "putzigster Fußnotenkasten der Welt"

Verwendung der modernen Fußnote

Wer nun diese Art von Fußnoten in seinen Online-Publikationen verwenden möchte, bekommt hier nun noch einmal eine komplette HTML-Datei mit der Javascript-Variante, die er in jeden beliebigen Editor kopieren und erweitern kann.
<html><head><title>Fussnoten mit Javascript</title></head>
<script language="JavaScript">
<!--
//Fussnotenscript von KerLeone (http://mosaikum.org)
function zeigen(FnTag) {
         if (FnTag.childNodes[1].style.display=="inline") {
                  FnTag.childNodes[1].style.display="none";
                  }
         else {
               FnTag.childNodes[1].style.display="inline";
               }
         }

function wechseln() {
   var i = 0;
   var fnzahl=1;
   while (document.getElementsByTagName("span")[i] != null) {
     if (document.getElementsByTagName("span")[i].className
                                                   == "fn") {
        document.getElementsByTagName("span")[i].firstChild.data
                                               = "("+fnzahl+")";
        fnzahl++;
     }
   i++;
   }
}

//-->
</script>

<style type="text/css">
<!--
.fn {color:#0000FF; cursor:pointer}
.fnt {display:none; color:#800000}
-->
</style>
<body onLoad="wechseln()">

Duis eum nulla faci.<span class="fn" onclick="zeigen(this)">*
<span class="fnt">(Und hier der Text der Fußnote.)</span></span>

</body>
</html>

1 Hier der Text zu der ersten Fußnote
2 Hier der Text zu der zweiten Fußnote