Um bei KOMA-Script die Schrift oder Farbe von bestimmten Elementen zu ändern, gibt es ja die Befehle \setkomafont und \addtokomafont. Nun findet man in Beispielen im Internet, je nachdem wo man sucht, dass man beispielsweise fett mit \setkomafont{\bfseries} oder mit \setkomafont{\textbf} erreichen kann. Es scheint auch tatsächlich beides zu funktionieren:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\setkomafont{disposition}{\sffamily}% Überschriften nicht fett

\begin{document}

\section*{Test mit unfetter Überschrift}

\setkomafont{section}{\bfseries}% \section fett
\section*{Test mit \texttt{\string\bfseries}}

\setkomafont{section}{\textbf}% \section fett
\section*{Test mit \texttt{\string\textbf}}

\end{document}

Beide Überschriften sind fett.

Was also ist richtig oder besser?

gefragt 16 Dez '16, 10:30

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%


Die Befehle \bfseries und \textbf unterscheiden sich darin, dass \bfseries ein Umschalter ist, während \textbf eine Anweisung mit Argument ist. Der Umschalter \bfseries schaltet das Schriftattribut fett (festgelegt in \bfdefault) für die aktuelle Schrift ein. Die Wirkung hält bis zum Ende der aktuellen Gruppe an. Dagegen setzt der Befehl \textbf{…} nur sein Argument innerhalb einer Gruppe, in der zusätzlich \bfseries aktiviert ist. \textbf verlangt also zwingend nach einem Argument.

Innerhalb der KOMA-Script-Klassen werden die Schriftumschaltungen der Elemente so verwendet, dass die Umschaltung der Schrift nur für die Ausgabe des jeweiligen Elements gilt. Dabei wird häufig {\usekomafont{Elementname}{Element}} verwendet.

Expandiert im Beispiel also \usekomafont{section} zu \bfseries, so erhält man {\bfseries{…}}. Expandiert \usekomafont{section} zu \textbf, so erhält man {\textbf{…}}. Beides führt korrekt zu Fettschrift für die Überschrift. Kommt nun aber jemand auf die Idee, an die vorhandene Schrifteinstellung mit \addtokomafont ein weiteres Attribut anzufügen, so sieht das ganz anders aus:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\setkomafont{disposition}{}% Überschriften in Grundschrift

\begin{document}

\section*{Test mit unfetter Überschrift}

\setkomafont{section}{\bfseries}% \section fett
\addtokomafont{section}{\sffamily}% \section serifenlos
\section*{Test mit \texttt{\string\bfseries}}

\setkomafont{section}{\textbf}% \section fett
\addtokomafont{section}{\sffamily}% \section serifenlos
\section*{Test mit \texttt{\string\textbf}}

\end{document}

Geht schief

Warum ist das so? Nun, jetzt expandiert die Verwendung von \usekomafont{section} \bfseries-Fall zu {\bfseries\sffamily{…}}. Das ist weiterhin korrekt. Im \textbf-Fall expandiert es aber zu {\textbf\sffamily{…}}. Damit wird \sffamily zum alleinigen Argument von \textbf. Da \textbf sein Argument außerdem in einer Gruppe einschließt ist die Ausgabe weder fett noch serifenlos.

Darüber hinaus kann KOMA-Script nicht alle Verwendungen von Elementen derart kapseln. In einigen Fällen wird auch nur {\usekomafont{Elementname}Element} verwendet. Das Element selbst wird also nicht quasi zu einem Argument der letzten Anweisung in der Schriftumschaltung. Je nachdem wie komplex das Element ist, ist schwer vorherzusagen, was dann genau passiert. So könnte beispielsweise am Anfang des Elements ein Token stehen, das auf diese Weise fett gesetzt wird, während der Rest nicht fett bleibt. Es könnten auch ganze Anweisungen auf diesem Weg quasi verloren gehen.

Ein Beispiel, bei dem \textbf gar nicht das gewünschte Ergebnis liefert, wäre das Element disposition:

Open in Online-Editor
\documentclass{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\setkomafont{disposition}{}% Überschriften in Grundschrift

\begin{document}

\section*{Test mit unfetter Überschrift}

\setkomafont{disposition}{\bfseries}% Überschriften fett
\section*{Test mit \texttt{\string\bfseries}}

\setkomafont{disposition}{\textbf}% Überschriften fett
\section*{Test mit \texttt{\string\textbf}}

\end{document}

Überschrift bleibt bei klzzwxh:0037extbf nicht fett

In der KOMA-Script-Anleitung bzw. im KOMA-Script-Buch ist daher für einige Elemente dokumentiert, dass Befehle mit Argument funktionieren, wenn sie als letzte Anweisung für die Schriftumschaltung angegeben sind. Das gilt aber nicht für alle.

Fazit: Die Verwendung von Umschaltern wie \bfseries oder \color{…} ist gegenüber der Verwendung von Befehlen mit Argument wie \textbf oder \textcolor vorzuziehen und unbedingt zu empfehlen.

Eine Liste von Umschaltern und Befehlen mit Argument findet man für Textfonts übrigens im fntguide, Abschnitt 2.1 oder im usrguide, Abschnitt 3.10.

Permanenter link

beantwortet 16 Dez '16, 11:03

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×131
×117
×48
×48

gestellte Frage: 16 Dez '16, 10:30

Frage wurde gesehen: 12,535 Mal

zuletzt geändert: 16 Dez '16, 11:03