Tabellen und Texte

Zu den immer wiederkehrenden Aufgabe im Umgang mit (alten) Texten gehört es, ein Digitalisat in ein anderes digitales Format zu übertragen. Ein Ausschnitt des Nibelungenliedes in der Fassung der Handschrift A wurde von einem fleißigen Helfer sorgfältig abgetippt und ist in einer Datei mit der Endung .txt abgespeichert worden:

 
Ez wuohs in Burgonden ein schoene magedin
daz in allen landen niht schoeners mohte sin
Chriemhilt was si geheizzen vnde was ein schoene wip
darumbe mvosen degene vil verliesen den lip 

Diese Transkription soll jetzt auf einer Website angezeigt werden. Zusätzlich ist eine spätere Weiternutzung der für diesen Zweck erzeugten HTML-Fassung in einer E-Book-Publikation geplant. Die Abfolge der Verszeilen muss selbstverständlich jeweils und auf jedem gewählten Wiedergabegerät erkennbar bleiben. Es ist deshalb vorgesehen, dass die Verszeilen, die in der .txt-Datei je eine Zeile einnehmen, in der HTML-Fassung separat durch Markup ausgezeichnet werden. Ein (vereinfacht wiedergegebenes) Gerüst der HTML-Datei besteht bereits:

<!DOCTYPE html>
<html>
  <body>
<!-- weiterer Inhalt -->     
      <ol>
<!-- ... hier soll der mittelhochdeutsche Text eingefügt werden -->
     </ol>
<!-- weiterer Inhalt -->
   </body>
<html>

 

Jetzt geht es also nur noch darum, zwischen die beiden tags <ol> und </ol> (ol = ordererd list) den Text der Absätze einzufügen und jeweils ein Starttag <li> voran und ein Endtag </li> hinter sie zu stellen (li = list element). Das klingt allerdings nach einer reichlich monotonen Aufgabe. Der eine oder andere Fan der Serie mag sich bei solchen Aufgabenstellungen an die Stelle eines Bart Simpson zu Beginn jeder Folge versetzt fühlen, ein Stück Kreide in der Hand, die große leere Schultafel vor sich. Es gibt jedoch viele Möglichkeiten, eine nicht ganz so stupide Lösung zu finden, um das gewünschte Ziel zu erreichen. Vielleicht die simpelste ist es, eine Tabellenkalkulation zu diesem Zweck einzusetzen. Eine solche dürfte auf den meisten Arbeitsrechnern als Teil des dort installierten Office-Paketes vorhanden sein. Andernfalls gibt es für Calc, dem zu Libre Office (bzw. Open Office) gehörenden Programm, oder in dem von Google bereitgestellten Dienst Tabellen, die Möglichkeit, eine (kostenlose) Onlinelösung zu verwenden. Die im folgenden vorgestellte Methode funktioniert jedenfalls vollkommen identisch in Excel, Calc oder der Android-Variante.

Als erstes wird der Ausgangstext komplett in die Zwischenablage kopiert. Dann wird in einer leeren Arbeitsmappe der Tabellenkalkulation der eigenen Präferenz die zweite Zelle der ersten Zeile markiert (B1). Hierhin fügen wir den Text ohne weitere Formatierungsangaben ein: :

Die Tabellenkalkulation übernimmt die Absatzformatierung der Vorlage. Der Text wird zeilenweise in die Spalte B der Tabelle eingesetzt. Momentan sieht es so aus, als ob sich die Textzeilen über mehrere Spalten erstrecken würden. Tatsächlich sind sie jedoch auf Zellen der Spalte B beschränkt. Wir können uns davon überzeugen, indem wir die Breite der Spalte verändern. Dazu positionieren wir den Mauscursor in die Überschriftenzeile auf die Grenze zwischen die hinterlegten Kästchen mit den Buchstaben B und C und verschieben dann die Grenze zwischen den Spalten bei gedrückter linker Maustaste.

Vor die erste Zelle mit einem Textinhalt, in die Zelle A1, geben wir als Text <li>> ein. In die Zelle nach dem Text, also C1, schreiben wir </li>:

Nun setzen wir den Cursor in die Zelle D1 und schreiben folgende Anweisung, die wir durch die Eingabetaste abschließen:

=A1 & B1 & C1

Das Gleichheitszeichen zu Beginn der Eingabe signalisiert, dass der von uns eingegeben Text als Formel zu verstehen ist, die Leerzeichen sind nur als Erleichterung für unsere Augen verwendet worden und könnten auch wegbleiben. Nach dem Betätigen der Eingabetaste sollten wir das Ergebnis der Formelanwendung sehen. Es ist die Zeichenkette, die sich aus dem durch das „Kaufmannsund“ & signalisierten Zusammenfügen des Zelleninhalts von A1, B1 und C1 ergibt:

D1 enthält den durch das Markup ausgezeichneten Text der ersten Verszeile, so wie wir ihn in die HTML-Datei einsetzen wollen. Wir können ihn mit Kopieren ebenso leicht aus der Tabelle entnehmen, wie wir ihn zuvor per Einfügen in diese eingetragen haben, und dann umgekehrt den Inhalt der Zwischenablage wieder in die HTML-Datei einsetzen. Es wäre allerdings ein sehr mühseliges Verfahren, wollten wir die beschriebenen Arbeitsschritte für jede einzelne Verszeile des Textes wiederholen. Das müssen wir jedoch gar nicht! Denn jetzt können wir eine der zahlreichen kleinen Hilfestellungen nutzen, die Tabellenkalkulationen den Anwendern bei repetiven Aufgaben anbieten.

Wird eine Zelle der Tabelle angeklickt und damit markiert, dann wird sie von einem Rahmen umgeben, dessen rechte, untere Ecke eine quadratförmige Verdickung aufweist. Wir markieren die Zelle A1 und steuern das kleine Quadrat mit dem Mauscursor an, bis dieser sich in ein kleines (in Calc ist es nicht ganz so klein) schwarzes Kreuz oder Plussymbol verwandelt:

Wir können nun mit gedrückter linker Maustaste den markierten Rahmen in der Spalte herabziehen. Sobald wir den Mausknopf loslassen (äquivalent: den Finger vom Touchpad des Laptops nehmen), wird automatisch der Inhalt der Zelle A1 in alle Zellen übertragen, die nun von dem Rahmen umgeben sind. Auf diese Weise ist es uns ein leichtes, alle Zellen in Spalte A vor einer mit Text gefüllten Zelle in Spalte B mit dem Einleitungstag <li> zu füllen.

Auf gleiche Weise können wir nach den Textzeilen verfahren. Wir markieren diesmal allerdings gleich zwei Zellen der Tabelle, C1 und D1 (linken Mausknopf gedrückt halten und Cursor verschieben):

Wenn wir nun wie zuvor das Quadrat in der unteren rechten Ecke des Rahmens anklicken und den schwarzen Plus-Cursor nach unten ziehen, kopieren wir nicht nur den Textinhalt von C1 in die darunterliegenden Zellen, sondern auch die Formel in D1. Diese wird jedoch nicht buchstabengetreu übernommen. Das wollen wir auch gar nicht, denn es würde dazu führen, dass in jeder Zelle der Spalte D derselbe Text, nämlich die Aneinanderreihung von A1, B1, C1, zu finden wäre (Ez wuohs in Burgonden …). Tatsächlich reiht die Formel in Zeile 2 jedoch A2, B2 und C2, in der dritten Zeile A3, B3 und C3 usw.. Dieses adaptive Kopierverfahren erleichtert viele Arbeitsschritte beim Umgang mit Formeln in Tabellen. Tatsächlich muss man mehr Aufwand betreiben, falls man einmal ausdrücklich möchte, dass eine Formel „buchstäblich“, ohne Anpassung, in kopierte Zellen übernommen wird. Auch wir profitieren vom intelligenten Kopierverfahren und können nun per copy & paste sämtliche von tags umrahmte Verszeilen in die HTML-Datei übernehmen.

Da sich der Text der tags von Zeile zu Zeile nicht ändert, können wir für unser Beispiel sogar darauf verzichten , die tags in die Zellen der Spalten A und C einzuschreiben. Denn es genügt folgende Formel in D1, um zum selben Ergebnis zu gelangen:

="<li>" & B1 & "</li>

Unser zuerst verwendetes Verfahren mag ein wenig umständlicher erscheinen, ist aber vermutlich etwas einfacher für denjenigen nachzuvollziehen und für eigene Zwecke abzuwandeln, der bisher wenige Erfahrungen mit dieser Art von Programmen gesammelt hat.

Wir widmen uns jedoch abschließend einer Erweiterung der Aufgabenstellung, die es tatsächlich nötig macht, den Inhalt zweier Zellen in die Formel einzubeziehen. HTML ordnet einem Listenelement einer geordneten Liste einen Index zu. Da es sich beim Textausschnitt um ein Zitat handelt, wollen wir natürlich, dass stets die korrekte Zeilennummerierung verwendet wird. Eine geordnete Liste in HTML erhöht, von einem Startwert ausgehend, den Index der Folgeelemente automatisch jeweils um eins. Eigentlich bräuchten wir bei einem zusammenhängenden Textausschnitt also nur einmal einen Wert anzugeben. Wir haben uns jedoch entschlossen, die Zeilennummerierung jeder Verszeile einzeln zu erfassen und im <li>-Element festzuschreiben. Möglicherweise merkt man daran, wie sehr wir uns als Wissenschaftler einer gewissen Pedanterie verpflichtet fühlen. Wir denken aber auch an das künftige E-Book und erhalten uns mit dieser Maßnahme die Option, die Zitate aus dem Text für dieses umzustellen, zu portionieren und auf mehrere von anderen HTML-Elementen unterbrochene, geordnete Listen zu verteilen.

Die Zeilennummern werden wir in der inzwischen nicht mehr für Formatierungszwecke benötigten Spalte A notieren. Da die Abfolge der Textzeilen (vorerst) intakt ist, können wir wiederum das adaptive Kopierverfahren verwenden, um die Verse fortlaufend zu nummerieren. Dazu tragen wir in A1 und in A2 jeweils die aufeinander folgenden Versnummerierungen ein. Wenn wir nun die beiden Zellen gemeinsam markieren und danach den Rahmen nach unten ziehen, werden die vom Rahmen erfassten folgenden Zellen mit Zahlenwerten gefüllt, die das Intervall wiederholen, das sich zwischen A1 und A2 feststellen lässt.

Jetzt müssen wir nur noch unsere Formel in D1 anpassen. Der Index eines Listeneintrags in HTML wird im Attribut value gespeichert und wie alle Attribute zwischen Anführungszeichen eingeschlossen. Anführungszeichen haben aber auch in den Formeln der Tabellenkalkulationen eine Aufgabe haben. Wir haben sie bereits genutzt, um Zeichenketten („<li>“) dazwischen zu notieren. Um anzuzeigen, dass wir jetzt ein Anführungszeichen in einer Zeichenkette (und nicht zur äußeren Kennzeichnung der Zeichenkette) meinen, müssen eine besondere Kodierung verwenden. Die nun etwas sperrigere Formel in D1 lautet:

="li value="""&A1&""">"&B1&"&</li>"

Nachdem wir sie in die restlichen Zellen von D übernommen haben, können wir wie gewohnt, mit copy & paste unsere Arbeit (lange vor dem Pausenklingeln) abschließen:

Veröffentlicht von

Doktor Tom

Klar, Studium der Computerlinguistik und Germanistik mit Spezialisierung auf das Mittelhochdeutsche. So gesehen Digital Humanist. Vor allem aber Tüftler, der Spaß an ungewöhnlichen Aufgabenstellungen und einfachen, aber effizienten Lösungen hat.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

I accept that my given data and my IP address is sent to a server in the USA only for the purpose of spam prevention through the Akismet program.More information on Akismet and GDPR.