Vor vielen, vielen Jahren, nachdem ich gezeigt hatte, wie man mit KOMA-Script verschiedene Elemente eines Dokuments, beispielsweise Kapitelüberschriften einfärben kann, erhielt ich die vermutlich verblüffendste Anfrage überhaupt. Ein Benutzer wollte wissen, wie er alle Großbuchstaben eines Dokuments beispielsweise grün färben könne.
Leider liegt die Anfrage so lange zurück, dass ich den entsprechenden E-Mail-Wechsel nicht mehr habe. Er fand also vermutlich noch in meiner Maus-Zeit statt. Über die Motivation des Anwenders weiß ich daher leider nichts zu berichten. Ich erinnere mich aber, dass er sehr bestimmt darauf bestand, dass sein Anliegen ernst gemeint und ihm wichtig sei.
Wenn mir Menschen so etwas versichern, neige ich dazu, mir auch dann Gedanken zu dem Problem zu machen, wenn es mir zunächst aberwitzig erscheint. Für mich war das damals der Einstieg, mich ein wenig mit virtuellen Fonts zu beschäftigen.
Virtuelle Fonts sind bei TeX Fonts, die nicht direkt über Schriftdateien angesprochen werden. Stattdessen besteht der Font neben einer normalen tfm-Datei (tfm = TeX Font Metric) aus einer speziellen DVI-Datei, in der für die Buchstaben Satzanweisungen enthalten sind. Auf diese Weise kann man beispielsweise mehrere Buchstaben zu einem neuen Buchstaben kombinieren oder auch Zeichenpositionen vertauschen. Meine grobe Idee war, dass man auf diesem Weg eigentlich jeden Großbuchstaben durch ein \special
mit einer Farbänderung und dem Buchstaben selbst ersetzen könnte. Ob ich dem Fragesteller diese Idee präsentiert habe, entzieht sich meiner Erinnerung. Heute wäre eine solche Lösung ohnehin nur wenig nützlich, würde sie doch bei der PDF-Ausgabe schon deshalb versagen, weil entsprechende \special
-Anweisungen von pdfTeX nicht ausgewertet würden.
Eine andere Idee zur Lösung des Problems, nämlich mit einem sed- oder awk-Script im Quelltext allen Großbuchstaben ein »\textcolor{green}
« voranzustellen, stößt ebenfalls auf Probleme, weil Grobuchstaben natürlich auch Teil von Anweisungen sein können. Es müssten also zumindest Anweisungen erkannt und ausgenommen werden. Unter der Voraussetzungen, dass Anweisungen immer mit einem Backslash beginnen, wäre das zumindest mit perl kein größeres Problem. Es gibt aber auch Fälle, in denen Großbuchstaben zu Steuerungszwecken im Quellcode eingesetzt werden, man denke beispielsweise an die Möglichkeit der H-Positionierung des floats-Pakets. Dies kann die Suchregel beliebig verkomplizieren. Erschwerend kommt hinzu, dass man so auch nicht alle Großbuchstaben erfasst. Für Dinge wie die Überschrift des Inhaltsverzeichnisses müsste man weitere Vorkehrungen treffen.
Da ich zu meiner Atari-Zeit auch das Werkzeug dvidvi weiterentwickelt habe, kam bei mir sicher auch die Idee auf, einen speziellen DVI-Treiber zu schreiben, der direkt die aktuelle Farbe auswertet und jeden Großbuchstaben mit passenden specials umgab. Da ich in den Tiefen meiner Quellcodesammlungen einen solchen jedoch nicht finden konnte, habe ich diese Idee offensichtlich nicht praktisch umgesetzt. Auch diese Lösung wäre heutzutage nur eingeschränkt tauglich.
Ich gehe davon aus, dass ich die Anfrage nie wirklich befriedigend beantworten konnte. Seit ich sie bei einem TeX-Stammtisch im letzten Jahr erwähnt habe, beschäftigt sich mich hin und wieder. Falls jemand eine einfache und damit geniale Lösung für dieses Problem findet, wäre sie sicherlich eine Artikel beispielsweise in Die TeXnische Komödie wert.
Nachtrag: Die Lösung dieses Problems dürfte mit Hilfe von luaTeX recht einfach sein. Dazu muss man eigentlich nur die Node-Liste durchgehen und vor (und nach) den Nodes für ausgewählte Buchstaben die gewünschte Farbänderung durchführen.