Unterstreichung und Durchstreichung (ulem/soul)

Sie möchten eine Phrase unterstreichen oder durchstreichen, um sie als gelöscht zu markieren – auf dieser Seite finden Sie die Tools dafür. LaTeXs eingebauter \underline{...} funktioniert in jedem Dokument, aber es ist eigentlich ein mathematischer Befehl: Er kann nicht über Zeilen hinweg umbrechen und sieht grob aus. Für langen Text verwenden Sie die zeilenumbrechenden Unterstreichungen und Durchstreichungen des ulem-Pakets; Für den Buchstabenabstand und eine Markierstift-Hervorhebung verwenden Sie das Paket soul. Beachten Sie, dass Unterstreichungen als Mittel zur Hervorhebung im westlichen Schriftsatz im Allgemeinen vermieden werden – zur Hervorhebung greifen Sie nach \emph (siehe separate Seite).

Der eingebaute \underline und seine Grenzen

Schreiben Sie \underline{the phrase to underline}, dann wird unter dem Argument eine Linie gezogen. Dafür ist kein Paket nötig, und es funktioniert sowohl im Text als auch in der Mathematik. Tatsächlich ist die eigentliche Heimat dieses Befehls der Mathematikmodus: Er ist das Werkzeug, das eine Linie unter eine Variable setzt, etwa in $\underline{x}$. Wenn Sie ihn im Text verwenden, hilft die Vorstellung, dass LaTeX eine Box unterstreicht, deren Inhalt es als Mathematik behandelt hat; damit wird sein Verhalten verständlich.

latex
This word is \underline{underlined} in running text.

Daraus ergeben sich zwei Schwächen. Erstens erzeugt \underline ein einzelnes unzerbrechliches Kästchen, sodass es am Ende einer Zeile nicht umgebrochen werden kann: Wenn die unterstrichene Phrase nicht in die Zeilenbreite passt, läuft sie in den rechten Rand über, statt umgebrochen zu werden. Ein einzelnes kurzes Wort ist in Ordnung, aber wenn Sie eine lange Phrase oder einen ganzen Satz unterstreichen, fällt es auseinander. Zweitens wird die Dicke oder Position der Linie nicht an die Glyphen angepasst (insbesondere an Unterlängen wie g und p), sodass die Linie möglicherweise in die Buchstaben schneidet und grob aussieht.

Kurz gesagt, \underline reicht aus, um „in der Mathematik einen Strich unter ein Symbol zu zeichnen“ und „ein sehr kurzes Wort schnell zu unterstreichen“, ist aber nicht zum Unterstreichen von Fließtext geeignet. Für Unterstreichungen und Durchstreichungen im Fließtext, die über Zeilen hinweg umbrochen werden müssen oder die sauber aussehen sollen, wenden Sie sich an ulem oder soul weiter unten.

ulem – zeilenumbrechende Unterstreichungen und Durchstreichungen

Das ulem-Paket von Donald Arseneau bietet Unterstreichungen, die an Zeilenenden ordnungsgemäß umbrechen. Es bietet außerdem doppelte und wellenförmige Unterstreichungen, eine durchgestrichene (horizontale Linie), eine durchgestrichene (diagonale Schraffur), gestrichelte und punktierte Unterstreichungen – den vollständigen Satz an Linien, die zum Löschen und Korrekturlesen verwendet werden. Laden Sie es mit \usepackage{ulem} und verwenden Sie jedes als Befehl mit einem Argument.

BefehlWirkung
\ulineUnterstreichung (Zeilenumbrüche)
\uulineDoppelte Unterstreichung
\uwaveWellenförmige Unterstreichung
\soutDurchgestrichen (durchgestrichenes Wort)
\xoutDurchstreichen (diagonale Schraffur über dem Text)
\dashulineGestrichelte Unterstreichung
\dotulineGepunktete Unterstreichung
latex
\uline{important} \uuline{urgent} \uwave{boat}
\sout{wrong} \xout{removed}
\dashuline{dashing} \dotuline{dotty}

Sie können die Linie mit zwei Parametern optimieren. Die Tiefe (der Abstand von der Textgrundlinie bis zum Lineal) beträgt die Länge \ULdepth und die Dicke beträgt \ULthickness. Beachten Sie, dass \ULthickness ein Makro und keine Länge ist. Sie legen es also mit \renewcommand und nicht mit \setlength (\renewcommand{\ULthickness}{1pt}) fest. \ULdepth ist eine gewöhnliche Länge, festgelegt mit \setlength; Standardmäßig passt es sich an die aktuelle Schriftart an.

Das Paket ist auch erweiterbar. Mit \markoverwith können Sie durch wiederholtes Überstreichen mit einer beliebigen Form neue Linienarten definieren, und eine \useunder{underline-command}{font-declaration}{font-command}-Deklaration ersetzt die Unterstreichung eines bestimmten Befehls zur Schriftartauswahl.

Das entscheidende Problem: ulem unterstreicht \emph

Das bringt jeden zum Stolpern, der es nicht weiß. Wenn Sie ulem laden, wird \emph (und in gewissem Maße auch \em) standardmäßig unterstrichen statt kursiv geschrieben. In den eigenen Worten des Pakets: „ulem ersetzt normalerweise Kursivschrift durch Unterstreichung im Text, der durch \emph hervorgehoben wird.“ Jedes Mal, wenn Sie Hervorhebungen markieren, wird eine Linie unter Ihren Text gezogen, und Sie sind überrascht, das Manuskript voller Unterstreichungen vorzufinden. Schlimmer noch, durch die Verschachtelung von \emph ergibt sich nicht mehr der übliche Wechsel von \emph zwischen kursiv und aufrecht – es werden lediglich mehr Unterstreichungen angehäuft.

Die Abhilfe ist Standard: Laden Sie es mit der Option [normalem]. Dann behält \emph sein ordnungsgemäßes Kursivverhalten bei und Unterstreichungen erfolgen nur dort, wo Sie explizit \uline und Freunde schreiben. Um mitten im Dokument zu wechseln, können Sie auch die Deklaration \normalem verwenden (und \ULforem, um die Standardeinstellung wiederherzustellen). Sofern Sie keinen besonderen Grund haben, ist es am sichersten, jedes Mal ulem mit [normalem] zu laden.

latex
\usepackage[normalem]{ulem}
% \emph stays italic; underline only where you ask:
This is \emph{emphasis}, and this is \uline{underlined}.

soul – Buchstabenabstände und ein Textmarker

Das soul-Paket von Melchior Franz ist eine andere Werkzeugfamilie. Mithilfe der Silbentrennungsmaschinerie von TeX wird der Text Zeichen für Zeichen auseinandergenommen und zwischen ihnen agiert, so dass Buchstabenabstände, Unterstreichungen, Durchstreichen und eine Markierungsstift-Hervorhebung möglich sind – alles über Zeilenenden hinweg umbrechend. Sein Name ist eine Mischung aus seinen beiden zentralen Befehlen, \so (Leerzeichen) und \ul (Unterstrich). Es bietet je nach Zweck fünf Befehle:

BefehlWirkung
\soLetterspacing (Buchstaben aussparen)
\capsAbstände für Groß- und Nebenbuchstaben
\ulUnterstreichen
\stStrike-Out (Overstrike)
\hlHighlight (Markierungsstift)

Für die Farbe legen Sie die Unterstreichung mit \setulcolor, die Durchstreichung mit \setstcolor und die Hervorhebung mit \sethlcolor fest. Standardmäßig ist die Hervorhebung gelb und die Unterstreichung und Durchstreichung schwarz. Der wichtige Punkt: \hl färbt nur, wenn das Paket color (oder xcolor) geladen ist – ohne dieses greift \hl auf Unterstreichungen statt auf Ausfüllen zurück. Sie können mit \definecolor Ihre eigene Farbe erstellen und diese übergeben.

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 color}

Um nicht-lateinische Skripte wie Japanisch oder Zeichen mit Akzent zu verarbeiten, benötigen Sie UTF-8 Unterstützung. Dies befand sich früher in einem separaten Paket, soulutf8, aber der aktuelle soul (v3 und höher) führt soulutf8 ein und unterstützt die UTF-8-Eingabe (der alte Kern wurde in soul-ori umbenannt und wird intern geladen). Auf einem neueren TeX Live oder MiKTeX genügt also das Laden von soul, um mit UTF-8 Zeichen zurechtzukommen.

Da seine Befehle das Argument jedoch zeichenweise analysieren, gibt es Beschränkungen dafür, was darin enthalten sein darf. Die Hauptregeln sind:

  • Mathematik funktioniert, wenn sie in $...$ eingeschlossen ist; die LaTeX-Form \(...\) funktioniert nicht.
  • Keine Verschachtelung. Verschachteln Sie keinen soul Befehl in einem anderen. Wenn Sie es wirklich brauchen, legen Sie zuerst das Innenmaterial in eine Box (z. B. \mbox) und geben Sie diese weiter.
  • Um Text als eine Einheit zu behandeln, schließen Sie ihn in {...} ein – er darf jedoch keine Silbentrennungsstelle enthalten. Um ein Wort zu gruppieren, das eine Silbentrennung enthält, verwenden Sie \mbox{...}, wodurch soul es als einzelnes Element sehen kann, auch wenn die Silbentrennung darin enthalten ist.
  • Um eine Ligatur innerhalb von \ul, \st oder \hl aufzulösen, fügen Sie {} oder \null ein (z. B. \ul{Auf{}lage}).
  • \verb-, LaTeX-Umgebungen sowie Befehlsdefinitionen und andere „ausgefallene Dinge“ erscheinen möglicherweise nicht im Argument. Bleiben Sie aus Sicherheitsgründen bei einfachem horizontalem Text.

Was Sie wählen sollten – und ein Wort zur Unterstreichung selbst

Ein grober Leitfaden: Für eine Linie unter einem Symbol in der Mathematik der eingebaute \underline. Für zeilenumbrechende Unterstreichungen, Durchstreichungen und Korrekturlesezeichen im Fließtext ulem (immer mit [normalem]). Für eine Markierungsstift-Hervorhebung oder einen Buchstabenabstand soul. Das \uline von ulem und das \ul von soul sind beide unterbrechbare Unterstreichungen und sehen ähnlich aus, aber soul – das auf seiner Buchstabenabstands-Engine sitzt – schränkt seine Argumentation stärker ein, während es im Gegenzug auch Hervorhebungen und Buchstabenabstände an einer Stelle verwaltet.

Das Unterstreichen von japanischem Fließtext bringt eine zusätzliche Einschränkung mit sich. ulem und soul wurden für westliche Texte entwickelt, und in Absätzen mit viel Japanisch ist bekannt, dass die Unterstreichung am Zeilenende nicht sauber umbricht (ein wiederkehrendes Thema im Forum von Haruhiko Okumura). Für Unterstreichungen, die sich über mehrere Zeilen Japanisch erstrecken, gibt es spezielle Pakete wie jumoline und udline (sie werden möglicherweise nicht standardmäßig ausgeliefert und erfordern möglicherweise eine separate Installation).

Eine letzte typografische Anmerkung. Unterstreichungen sind ein Überbleibsel der Schreibmaschine und der Handschrift und im westlichen Fließtext wird sie im Allgemeinen nicht als Hervorhebungsmittel bevorzugt. In der Satztradition wird die Hervorhebung durch Kursivschrift, (zurückhaltende) Buchstabenabstände oder eine Fettschrift betont. Wenn Sie nur etwas hervorheben möchten, verwenden Sie \emph anstelle einer Unterstreichung und behalten Sie Unterstreichungen und Durchstreichungen für Fälle bei, in denen die Zeile selbst eine Bedeutung hat – zum Markieren einer Löschung in Korrekturabzügen oder zum Anzeigen eines Links oder einer Lücke zum Ausfüllen.

Ein Revisionsworkflow

Unterstreichungen und Durchstreichungen dienen oft eher dem Korrekturlesen und der Zusammenarbeit als dem fertigen Fließtext. Wenn die endgültige Version und die markierte Überarbeitung dieselbe Quelle haben, ist es sicherer, ein Korrekturlesemakro zwischen der Prosa und dem Zeilenbefehl einzufügen. In der eingereichten Version kann dieses Makro leer werden oder zu einer anderen Anzeige wechseln.

latex
\usepackage[normalem]{ulem}
\newcommand{\deleted}[1]{\sout{#1}}
\newcommand{\added}[1]{\uline{#1}}

結果は \deleted{古い値} \added{新しい値} とした。
  • Vermischen Sie es nicht mit Prosa-Betonung. Behalten Sie die Betonung bei \emph und setzen Sie Korrekturlesezeilen hinter separate Makros wie \deleted und \added.
  • Machen Sie es für die endgültige Version entfernbar. Ein Design, das vor der Übermittlung zu \renewcommand{\deleted}[1]{} wechseln kann, verhindert, dass Revisionsmarkierungen in die endgültige PDF-Datei gelangen.
  • Seien Sie vorsichtig bei langen japanischen Absätzen. Zeilenumbrüche und Kinsoku können darunter leiden. Ziehen Sie daher bei Bedarf japanischspezifische Unterstreichungspakete oder PDF-Anmerkungen in Betracht.
  • Überprüfen Sie farbige Hervorhebungen im Druck. soul Hervorhebungen sehen auf dem Bildschirm möglicherweise gut aus, sind aber im Schwarzweißdruck oder aus Gründen der Barrierefreiheit schwer lesbar.

Revisionsmarkierungen umschaltbar machen

Wenn Sie \sout{...} direkt in die Prosa schreiben, müssen Sie vor der endgültigen Einreichung jede Note aufspüren. Wenn das Manuskript zwischen Revisions- und Endmodus wechselt, definieren Sie Anzeigemakros mit einem Schalter von Anfang an. Dann kann ein Überprüfungs-PDF Löschungen und Ergänzungen anzeigen, während das endgültige PDF gelöschten Text löschen und Ergänzungen beibehalten kann, alles durch Ändern einer Stelle. Fügen Sie eine endgültige PDF-Prüfung in die Checkliste für die Einreichung ein, damit der Wechsel nicht vergessen wird.

latex
\usepackage[normalem]{ulem}
\newif\ifshowrevisions
\showrevisionstrue   % final: \showrevisionsfalse

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

Mit dieser Form behält der Körper die Bedeutungen \deleted{old text} und \added{new text}. Entscheiden Sie bei kollaborativer Arbeit auch, ob Begründungen und Namen in PDF-Kommentaren oder nur in Quellunterschieden leben. Linien sind bei der Überarbeitung nützlich, verursachen aber in der fertigen Prosa ein starkes visuelles Rauschen. Machen Sie daher den Wechsel in den endgültigen Modus zu einem Teil Ihres Manuskript-Workflows.