Unterstreichung und Durchstreichung (ulem/soul)

Das Unterstreichen ist die eine Textauszeichnung, von der Leute mit Satzkenntnis abraten – und das nicht aus Geschmacksdünkel. Schreibmaschinen kannten keine Kursivschrift; um ein Wort hervorzuheben, blieb nur, den Wagen zurückzufahren und Unterstriche darunterzuschlagen. In einem Manuskript für die Druckerei war ein einfacher Strich unter dem Wort eine Anweisung an den Setzer: dieses Wort kursiv setzen. Unterstreichen war nie eine Auszeichnung, sondern die Notation für eine. LaTeX erbt diese Geschichte gleich doppelt: \underline ist im Kern ein Mathematikbefehl und schiebt eine lange Passage in den rechten Rand, statt sie umzubrechen; und ulem, das Paket, das jeder dagegen lädt, beschreibt seinen Zweck auf CTAN damit, die Ausgabe so aussehen zu lassen, „als käme sie aus einer Schreibmaschine“. Diese Seite zeigt, wie man in LaTeX unterstreicht – \underline, \uline, \ul –, worin sich ulem und soul unterscheiden und wann eigentlich \emph gemeint war.

Warum \underline in den Rand läuft, statt umzubrechen

Weil \underline ein Mathematikbefehl ist und sein Argument in eine einzige, unteilbare Box setzt. Er braucht kein Paket und funktioniert im Text ebenso wie in Formeln, doch zu Hause ist er im Mathematikmodus – er zieht den Strich unter die Variable in $\underline{x}$. Im laufenden Satz öffnet LaTeX um das Argument herum stillschweigend den Mathematikmodus, setzt das Ganze als eine waagerechte Box und legt eine Linie darunter. In einer Box gibt es keine Umbruchstellen; ist die Passage breiter als die Satzbreite, findet TeX keine Trennmöglichkeit und lässt sie über den rechten Rand hinauslaufen.

latex
% fine for a single short word
This word is \underline{underlined} in running text.

% the box has no break points, so TeX pushes it into the margin
\underline{a phrase far too long to fit on one line of this measure}

Die Meldung im Log lohnt sich zu kennen, denn es ist keine Fehlermeldung, sondern eine Warnung: Overfull \hbox (…pt too wide) in paragraph at lines …, und das Bruchstück, das TeX daneben ausgibt, sieht aus wie []$[]$. Diese beiden Dollarzeichen sind das Geständnis – LaTeX zeigt selbst, dass es den Satz in den Mathematikmodus gepackt hat, um ihn zu unterstreichen. Der zweite, leisere Mangel ist die Lage der Linie. \underline setzt sie in fester Tiefe, ohne auf die Buchstaben darüber zu achten; bei Unterlängen wie g und p scheint der Strich dann durch die Zeichen zu schneiden.

Die ehrliche Arbeitsteilung lautet also: \underline für die Mathematik, wo das Argument ohnehin ein Zeichen ist und in einer Formel steht – und ein Paket, sobald die Linie in einem Satz liegen soll. Zwei Pakete übernehmen diese Aufgabe, und sie sind nicht austauschbar. ulem liefert Unterstreichungen und Durchstreichungen, die umbrechen; soul liefert einen Textmarker und Sperrsatz. Bevor eines von beiden geladen wird, lohnt allerdings ein Blick darauf, was eine Unterstreichung ursprünglich bedeutete – meist entscheidet sich daran, ob man überhaupt eine will.

Warum Fachleute vom Unterstreichen abraten

Weil eine Unterstreichung ein Ersatz ist – und das Ersetzte liegt heute auf der Tastatur. Schreibmaschinen kannten weder Fett noch Kursiv; um ein Wort zu markieren, blieb nur, den Wagen zurückzufahren und Unterstriche unter die bereits getippten Buchstaben zu schlagen. Im Druckgewerbe übernahm derselbe Strich eine zweite Aufgabe: Im ausgezeichneten Typoskript war die Unterstreichung eine Anweisung an den Setzer. Ein gerader Strich unter dem Wort bedeutete kursiv, eine Wellenlinie fett, ein doppelter Strich Kapitälchen, ein dreifacher Versalien. Der Autor unterstrich, weil er keine Kursive setzen konnte. Der Setzer, der es konnte, las den Strich und warf ihn weg.

Deshalb überlebt die Unterstreichung in der Software und verschwindet aus den Satzlehrbüchern: Textverarbeitungen erbten die Tasten der Schreibmaschine, während der Bleisatz nie eine Unterstreichung im Angebot hatte. Die Werkzeuge von LaTeX stehen zu dieser Herkunft. Donald Arseneaus ulem, dessen Copyright-Vermerk 1989 beginnt, wird auf CTAN so beschrieben, dass es \em und \emph durch Unterstreichung ersetzt, „damit die Ausgabe aussieht, als käme sie aus einer Schreibmaschine“, und das Handbuch nennt als Einsatzfall Text, „der in einem zur Veröffentlichung eingereichten Manuskript unterstrichen werden muss“. ulem wurde nicht geschrieben, um ein fertiges PDF zu schmücken, sondern um ein Typoskript zu erzeugen.

Daraus folgt die Faustregel. Soll die Leserin nur auf einem Wort verweilen, schreiben Sie \emph{...} und überlassen der Dokumentklasse, wie Hervorhebung aussieht – in den meisten Klassen kursiv, und bei verschachtelter Hervorhebung korrekt zurück auf aufrecht. Echte Unterstreichungen bleiben den Stellen vorbehalten, an denen die Linie Information trägt und nicht Tonfall: eine Streichung im Korrekturentwurf, eine Unterschriftszeile, ein auszufüllendes Feld, ein Link. Alles Weitere setzt einen solchen Grund voraus.

ulem: Unterstreichungen und Durchstreichungen, die umbrechen

Laden Sie \usepackage[normalem]{ulem} und schreiben Sie \uline{...}, wo vorher \underline{...} stand: Die Linie bricht nun am Zeilenende um, läuft durch die Wortzwischenräume und verträgt Silbentrennung. Das Paket führt das ganze Vokabular der Korrekturzeichen – Doppellinie, Wellenlinie, Linie durch das Wort, diagonale Schraffur, Striche und Punkte –, denn genau dieses Vokabular braucht ein ausgezeichnetes Manuskript. Im Mathematikmodus reicht \uline die Aufgabe stillschweigend an \underline weiter; man kann es also überall verwenden.

BefehlWas gezeichnet wird
\ulineUnterstreichung, bricht am Zeilenende um
\uulineDoppelte Unterstreichung; Korrekturzeichen für Kapitälchen
\uwaveWellenlinie; Korrekturzeichen für Fettschrift
\soutDurchstreichung: eine Linie mitten durch das Wort
\xoutTilgung: der Text wird mit wiederholten / überdruckt
\dashulineGestrichelte Unterstreichung
\dotulineGepunktete Unterstreichung

Zwei Parameter steuern die Linie, und sie werden unterschiedlich gesetzt – eine bekannte Stolperstelle. \ULthickness ist die Strichstärke, voreingestellt auf .4pt, aber es ist ein Makro und keine Länge; es verlangt \renewcommand{\ULthickness}{0.8pt}, \setlength greift nicht. \ULdepth ist der Abstand von der Grundlinie zur Linie und eine echte Länge, gesetzt mit \setlength; ihr Vorgabewert ist der Merkwert \maxdimen, der ulem anweist, die Tiefe aus der aktuellen Schrift zu bestimmen. Diese beiden Stellschrauben erklären mehr über das Paket, als sie vermuten lassen: \sout ist nichts anderes als eine Unterstreichung mit \ULdepth auf -.55ex. Eine negative Tiefe hebt die Linie von der Grundlinie ab, mitten durch das Wort – eine Durchstreichung ist in ulem also eine absichtlich falsch platzierte Unterstreichung. \xout ist noch schlichter: Es überdruckt den Text mit wiederholten /.

latex
\usepackage[normalem]{ulem}
\renewcommand{\ULthickness}{0.8pt}  % a macro, so \renewcommand
\setlength{\ULdepth}{1.8pt}         % a length, so \setlength

\uline{important} \uuline{urgent} \uwave{boat}
\sout{wrong} \xout{removed}
\dashuline{dashing} \dotuline{dotty}

Warum \emph plötzlich unterstreicht: die Option normalem

Weil ein blankes \usepackage{ulem} die Hervorhebung umdefiniert – und das Handbuch sagt es ohne Umschweife: „In LaTeX ulem replaces italics with underlining in text emphasized by \em or \emph.“ Das ist kein Fehler, sondern der ursprüngliche Zweck des Pakets; man erinnere sich, wozu es geschrieben wurde. Die Folge ist allerdings, dass ein Dokument, das zweihundert Seiten lang friedlich \emph benutzt hat, unter jeder Hervorhebung eine Linie bekommt, sobald man das Paket für ein einziges unterstrichenes Wort lädt. Verschachtelt wird es schlimmer: Das normale \emph wechselt bei Verschachtelung zwischen kursiv und aufrecht, die Variante von ulem dagegen „generates multiple underlining; it does not alternate on and off“ – die Striche summieren sich.

Die Abhilfe ist ein Wort in den Optionen: \usepackage[normalem]{ulem}. Die Hervorhebung verhält sich dann wieder normal, und Linien erscheinen nur dort, wo \uline und seine Geschwister ausdrücklich stehen. Denselben Schalter gibt es als Deklaration – \normalem schaltet die Ersetzung ab, \ULforem wieder an –, sodass sich mitten im Dokument umschalten lässt, falls tatsächlich ein Typoskript entsteht. In der Praxis: ulem jedes Mal mit [normalem] laden, solange sich kein Grund dagegen laut aussprechen lässt.

latex
\usepackage[normalem]{ulem}

% \emph keeps its italics; a rule appears only where you ask for one
This is \emph{emphasis}, and this is \uline{underlined}.

% \ULforem brings the substitution back, \normalem switches it off again

soul: hervorheben mit \hl, sperren mit \so

Wer eine gelbe Markerspur will oder gesperrte Buchstaben zur Hervorhebung, greift zu soul – und das Paket kommt auf einem ganz anderen Weg ans Ziel. Es übergibt den Text der Silbentrennung von TeX, bekommt Silben und Zeichen zurück und wirkt dann in den Lücken dazwischen. Genau deshalb kann es ein Wort sperren und trotzdem den Zeilenumbruch mitten darin zulassen. Melchior Franz, der es geschrieben hat, nimmt der naheliegenden Vermutung über den Namen im Handbuch gleich den Wind aus den Segeln: „the package name soul is only a combination of the two macro names \so (space out) and \ul (underline)—nothing poetic at all.“ Gepflegt wird es heute von der Oberdiek Package Support Group; seit Version 3 ist das alte soulutf8 einverleibt, UTF-8-Eingabe funktioniert also ohne Zusatzpaket.

BefehlWirkung
\soSperren – vergrößert die Buchstabenabstände
\capsAbstände für Versalien und Kapitälchen
\ulUnterstreichung mit Zeilenumbruch
\stDurchstreichung (Überdrucken)
\hlHervorhebung wie mit dem Marker; voreingestellt gelb, braucht color oder xcolor

Die Farbe wird je Effekt gesetzt: \setulcolor für die Unterstreichung, \setstcolor für die Durchstreichung, \sethlcolor für die Hervorhebung; ein leeres Argument schaltet die Einfärbung wieder ab. Voreingestellt ist die Hervorhebung gelb, die beiden Linien sind schwarz. Eine Falle gehört klar benannt: \hl hebt nur dann farbig hervor, wenn color oder xcolor geladen ist. Fehlt das Paket, weicht der Befehl klaglos auf Unterstreichung aus – am Bildschirm sieht das genau aus wie eine Hervorhebung, die nicht erscheint. Eigene Farbtöne legt \definecolor an, und \sethlcolor nimmt sie entgegen.

latex
\usepackage{color,soul}
\definecolor{lightblue}{rgb}{.90,.95,1}
\sethlcolor{lightblue}

\so{letterspacing} \ul{underlining} \st{overstriking}
\hl{this is highlighted in light blue}
\ul{Auf{}lage}              % {} keeps the fl ligature from forming
\so{foo \mbox{little} bar}   % \mbox, not bare braces, around hyphenable text

Der Preis der zeichenweisen Verarbeitung ist, dass das Argument kein gewöhnliches LaTeX mehr ist. soul muss jedes Token lesen, bevor der Absatzbau von TeX es zu sehen bekommt; einige Konstruktionen sind darum verboten – und das Scheitern ist laut: Package soul error: Reconstruction failed, dazu ein schwarzes Quadrat an der betreffenden Stelle in der Ausgabe, damit sich der Fehler auf der Seite finden lässt. Die Regeln, die man sich merken sollte:

  • Formeln brauchen $...$. Zwischen Dollarzeichen funktionieren sie, die LaTeX-Form \(...\) nicht.
  • Klammern gruppieren, dürfen aber keine Umbruchstelle verstecken. \so{foo {little} bar} löst Reconstruction failed aus, weil die Gruppe eine Trennstelle enthält – und ein Leerzeichen zählt als solche. Stattdessen \so{foo \mbox{little} bar} schreiben.
  • Keine Verschachtelung. \ul{foo \so{bar} baz} ist nicht erlaubt. Wer es wirklich braucht, setzt das Innere zuerst in eine Box und nimmt in Kauf, dass diese nicht umbricht.
  • Ligaturen von Hand auflösen. In \ul, \st und \hl an der Stelle, an der keine Ligatur entstehen soll, {} oder \null einfügen (\ul{Auf{}lage}).
  • \verb, Umgebungen und Befehlsdefinitionen sind ausgeschlossen. Für Material, das unverändert durchlaufen soll, gibt es \soulomit{...} als Notausgang.

ulem oder soul: welches Paket wofür

Für Korrekturzeichen ulem, für Hervorhebungen soul; wer beides braucht, lädt beides – die Befehlsnamen kollidieren nicht, denn ulem liefert \uline und soul liefert \ul. ulem ist das nachsichtigere der beiden: Ins Argument darf fast alles, und wenn der Umbruch unschön ausfällt, bricht es wenigstens um. soul passt seine Linie sorgfältiger an die Buchstaben an und bringt mit demselben Ladebefehl \hl und \so mit, doch sein Argument ist, wie die Liste zeigt, eine eingeschränkte Sprache. Ein Entwurf, der „das streichen, den Ersatz unterstreichen“ verlangt, kommt mit ulem und [normalem] am schnellsten ans Ziel; ein Entwurf, der einen gelben Marker für die Gutachterin braucht, hat nur einen Kandidaten – ulem kennt gar keine Hervorhebung.

Streichungen und Ergänzungen im Entwurf kennzeichnen

Der am besten zu rechtfertigende Einsatz von \sout und \uline ist ein Entwurf, der zeigen muss, was sich geändert hat. Schreiben Sie die Linienbefehle aber nicht in den Fließtext. Schreiben Sie, was gemeint ist, und überlassen Sie einem Makro, wie es gedruckt wird: \deleted{...} und \added{...} hinter einem Schalter kosten drei Zeilen Präambel und ersparen vor der Abgabe eine komplette Suchen-und-Löschen-Runde. Außerdem bleibt die Quelle lesbar, denn \deleted{der alte Schätzwert} sagt etwas, was \sout{der alte Schätzwert} nicht sagt.

latex
\usepackage[normalem]{ulem}
\newif\ifrevisions
\revisionstrue                 % final version: \revisionsfalse

\newcommand{\deleted}[1]{\ifrevisions\sout{#1}\fi}
\newcommand{\added}[1]{\ifrevisions\uline{#1}\else #1\fi}

% The estimate was \deleted{0.42} \added{0.51}.

Zwei Gewohnheiten verhindern Unfälle. Halten Sie Korrekturmarken und Hervorhebung in getrennten Vokabularen – \emph für den Tonfall, \deleted und \added für die Historie –, damit das Umlegen des Schalters die Bedeutung des Textes nie berührt. Und nehmen Sie „einmal mit ausgeschaltetem Schalter setzen und das PDF ansehen“ in die Abgabe-Checkliste auf: Eine übersehene Durchstreichung in der Druckvorlage ist genau die Sorte Fehler, die niemandem auffällt, bis sie gedruckt ist.

CJK-Text unterstreichen und das Problem mit Tagged PDF

Zwei Grenzen sollte man kennen, bevor man sich festlegt. Erstens sind beide Pakete für die lateinische Schrift geschrieben. ulem und soul rechnen mit Wörtern, Trennstellen und Wortzwischenraum – nichts davon liefert eine Folge japanischer, chinesischer oder koreanischer Zeichen, weshalb eine lange unterstrichene CJK-Passage gern an falscher Stelle oder gar nicht umbricht. Die japanische TeX-Gemeinde antwortet darauf mit eigenen Paketen; meist empfohlen wird jumoline mit seinen Befehlen \Underline, \Midline und \Overline, das außerhalb des CTAN verbreitet wird und nicht zum Lieferumfang von TeX Live gehört. Zweitens führt das CTAN sowohl ulem als auch soul unter dem Thema „tagged PDF incompatible“ – das wiegt schwerer, je weiter LaTeX in Richtung barrierefreier Ausgabe geht; und ein gelbes \hl, das am Bildschirm gut aussieht, wird im Schwarzweißdruck zum grauen Schleier. Beides lieber vor der Abgabefrist prüfen als danach.