8
1

Wie in der Frage »Was ist an \Huge{Text} … falsch?« zu lesen ist, endet eine Schriftgrößenumschaltung bei LaTeX am Ende einer Gruppe. Umgebungen sind (mit Ausnahme von document und lrbox) in der Regel auch Gruppen. Daher verwenden einige Anwender, gerne Konstrukte wie

\begin{tiny}
Das ist ein Absatz mit ganz kleinem Text, der in einem Vertrag so anstrengend zu lesen sein soll, dass der Unterzeichner auf das Lesen verzichtet und prompt mit versteckten Klauseln hereingelegt wird. Glücklicherweise ist das aber in Deutschland dann rechtlich auch nicht immer durchzusetzen.
\end{tiny}

In der offiziellen LaTeX-Schriftauswahl-Anleitung sind diese Umgebungen allerdings nicht erwähnt. Ist das trotzdem richtig oder sollte ich das grundsätzlich nicht machen?

gefragt 21 Sep '13, 12:20

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 10 Okt '13, 09:21


Warum dies überhaupt möglich ist und was generell davon zu halten ist, Anweisungen als Umgebung zu missbrauchen, habe ich bei der Frage »Kann man eigentlich alle Befehle auch als Umgebung verwenden und umgekehrt?« ausführlich erläutert. Bleibt daher die Frage, was abgesehen von der puristischen Betrachtungsweise an dem Code aus der Frage auszusetzen? Sehen wir uns das Ergebnis an:

tiny mit riesigem Zeilenabstand

Auffällig ist hier der im Vergleich zur Schrift extrem große Zeilenabstand. Woher kommt der?

TeX setzt keine einzelnen Zeilen, sondern immer ganze Absätze auf einmal. Dabei erfolgt der Absatzumbruch und der Satz mit den Parametern, die am Ende des Absatzes gültig sind. Da eine Umgebung zwar eine Gruppe aber keinen Absatz beginnt oder endet, wird also in dem Beispiel mit \end{tiny} zwar die Wirkung von \tiny aufgehoben, der Absatz endet aber erst mit der Leerzeile danach. Der Absatz wird also wie für \normalsize üblich mit dem Grundlinienabstand von \normalsize umbrochen. Dadurch ist er zu groß. Es muss also unbedingt dafür gesorgt werden, dass der Absatz beendet wird, bevor \tiny mit \end{tiny} seine Wirkung verliert. Die einfachste Lösung dafür ist ein explizites \par:

\begin{tiny}
Das ist ein Absatz mit ganz kleinem Text, der in einem Vertrag so anstrengend zu lesen sein soll, dass der Unterzeichner auf das Lesen verzichtet und prompt mit versteckten Klauseln hereingelegt wird. Glücklicherweise ist das aber in Deutschland dann rechtlich auch nicht immer durchzusetzen.\par
\end{tiny}

mit dem Ergebnis:

tiny mit tiny-Zeilenabstand

Hier passt der Zeilenabstand also zur kleinen Schriftgröße, auch wenn man das so kein bisschen besser lesen kann.

Es gibt aber weiteres zu bedenken: Dieses \par am Ende der Umgebung vergisst man leicht. Während bei \tiny dieses Problem so auffällig ist, dass es sofort ins Auge springt, wird man dasselbe Problem bei \small oder \large eventuell übersehen. Bei \large fällt dann ggf. vielleicht noch auf, dass der Zeilenabstand etwas uneinheitlich ist, je nachdem, ob man Unterlängen und Überlängen (beispielsweise diakritische Zeichen über Großbuchstaben) in Zeilen hat oder nicht. Deshalb sollte man sich eine Strategie überlegen, bei der man gar nicht erst Gefahr läuft, dass ein solches Problem auftritt. Ein erster Schritt könnte hier die Definition echter Umgebungen sein:

\documentclass{article}
\usepackage{blindtext}
\newenvironment{largepar}{\par\large}{\par}
\begin{document}
\begin{large}% Schlecht
\blindtext
\end{large}

\begin{largepar}% Besser
\blindtext
\end{largepar}
\end{document}

Noch besser ist natürlich, wenn man, wie in meiner Antwort zur Frage »Wie sollte ich vorgehen, wenn ich bestimmte Arten von Begriffen, beispielsweise Namen hervorheben will?» erklärt, einen Namen wählt, der nicht der physischen Auszeichnung, sondern der Semantik entspricht:

\documentclass{article}
\usepackage{blindtext}
\newenvironment{wichtig}{\par\large}{\par}
\begin{document}
\begin{wichtig}
\blindtext
\end{wichtig}
\end{document}

So kann man später ganz leicht auch noch entscheiden, dass wichtig vielleicht doch nicht \large, sondern \bfseries oder auch \huge sein soll.

Und was ist, wenn ich statt einer Umgebung einen Befehl verwende? Das Problem bleibt dasselbe. Auch hier muss der Absatz vor dem Ende der Schriftumschaltung beendet werden, wenn der Absatz in dessen Wirkungsbereich gesetzt werden soll:

\documentclass{article}
\usepackage{blindtext}
\begin{document}
{\Large\blindtext}% falsch

{\Large\blindtext\par}% richtig

\end{document}

Und natürlich ist es auch hier besser, eine semantische Auszeichnung zu definieren:

\documentclass{article}
\usepackage{blindtext}
\newcommand{\wichtig}[1]{{\large #1}}
\newcommand{\wichtigebemerkung}[1]{\par\wichtig{#1\par}}
\begin{document}
\wichtigebemerkung{\blindtext}
\end{document}

Zu beachten ist hier, dass das \par in \wichtigebemerkung als Teil des Arguments von \wichtig gesetzt wird, damit eben der Absatz vor der damit erzeugten Auszeichnung endet. Hingegen darf das erste \par in \wichtigebemerkung nicht mit in das Argument von \wichtig gezogen werden, weil sonst ein Absatz, der durch dieses \par beendet wird, bereits mit den Einstellungen von \wichtig, im Beispiel also mit den Absatzeinstellungen von \large, gesetzt würde.

Kurz zusammengefasst

  • Man sollte Schriftgrößenumschaltungen normalerweise in einer Gruppe verwenden.
  • Die Verwendung von Schriftgrößenbefehlen als Umgebung ist nicht klar dokumentiert und deshalb eher zu vermeiden.
  • Man muss bei Schriftgrößenumschaltungen darauf achten, dass am Absatzende die richtige Schriftgröße aktiv ist.
  • Es ist zu empfehlen, innerhalb eines Dokumente Schriftgrößenumschaltungen nicht direkt vorzunehmen, sondern Befehle und Umgebungen zu verwenden, die sich an der Bedeutung des Arguments bzw. des Inhalts orientieren und ggf. in der Dokumentpräambel definiert werden.
Permanenter link

beantwortet 21 Sep '13, 12:47

saputello's gravatar image

saputello
11.1k154365
Akzeptiert-Rate: 51%

bearbeitet 11 Okt '13, 09:58

-2

@saputello Wie Du ja schon andeutest, kann man das Problem grundsätzlich lösen und dem Bedürfnis der Anwender nach Schriftumgebungen entgegenkommen.

(Beispiel gelöscht wegen Fehlern, neues Beispiel folgt.)

Permanenter link

beantwortet 27 Sep '13, 23:42

ctansearch's gravatar image

ctansearch
(ausgesetzt)
Akzeptiert-Rate: 18%

bearbeitet 07 Okt '13, 20:46

@saputello Trotzdem ist die Schriftumschaltung falsch, nicht die Gruppierung. Informationstechnisch ist es eine fehleranfälligere Aussage:" Tu dies, bis ich was anderes sage", gegenüber der Aussage "Tu dies innerhalb des Geltungsbereichs". Eine fehlende Klammer wird vom Programm gefunden, eine fehlende Umschaltung nicht. Hier treffen (mal wieder) veraltete und halbrichtige/halbfalsche Lösungen aufeinander, das ist für mich ein Indiz, daß eine neue Lösung gebraucht wird. Vielleicht kann man ein neues Design der Schriftauszeichnung entwerfen?

(05 Okt '13, 22:52) ctansearch
2

@ctansearch wenn man es richtig anstellt, braucht man in einem durchdachten LaTeX-Dokument nach \begin{document} nicht ein einziges mal (!) einen Schriftauszeichnungsbefehl oder Schalter.

Und zum Programmieren für LaTeX sind die Schalter meiner Erfahrung nach in aller Regel oft sehr viel praktischer als die, die ein Argument benötigen. Eine Schrift-Umgebung hätte ich noch nie benötigt...

(05 Okt '13, 23:42) cgnieder

@saputello Zunächst eine Retourkutsche: Du solltest in Deinen Antworten besser auf Fehler achten!({\Large\blindztext\par}) Ich habe angeregt, eine bessere Lösung zu finden, weil die Gruppierung durch Umgebungen ein Bedürfnis der Anwender ist. Man könnte auf {\bf Text} zurückgreifen, was ja eine Gruppierung darstellt, schöner und praktischer wäre, alle Schriftauszeichnungen in einer Umgebung zu realisieren. Ein Beispiel habe ich noch nicht parat. Ziel wäre, Schriftauszeichnungen konsequent in Umgebungen zu fassen, damit man z.B \begin{tiny} \end{tiny} nutzen kann. Nimm es als Anregung.

(07 Okt '13, 23:33) ctansearch
1

@ctansearch Entschuldige, wenn ich widerspreche: {\bf Text} kann man in plain TeX verwenden, in LaTeX ist es (jedenfalls seit 1994 also seit fast 20 Jahren) schlicht falsch. Es ist meiner Meinung nach entgegen der Philisophie LaTeX's irgendwelche Schriftauszeichnungen nach \begin{document} zu setzen. Man verlöre ja all die Flexibilität, die einer der größten Vorteile ist, die LaTeX bietet. Und da man sie zum Programmieren nicht braucht, sind meiner Meinung nach Schriftumgebungen völlig zwecklos...

(07 Okt '13, 23:39) cgnieder

@Clemens Vielleicht reden wir aneinander vorbei? \textbf{Dingsbums} ist ein Schriftauszeichnung, und die wird auch im Text nach \begin{document} benutzt. Was ich erreichen will ist, alle Schriftauszeichnungen in einer Umgebung per Parameter zu steuern, was eventuell ein anderes Fontkonzept erfordern würde. Da wäre eine Kombination der Schriftgrade, Schriftschnitte und Schriftendicke gefragt. Die Idee ist, daß jeder Font eine Skalierung anbietet, die den Auszeichnungsbefehlen folgt und alle Kombinationen ermöglichen soll. Vielleicht geht es ja nicht, aber nachdenkenswert ist es doch.

(08 Okt '13, 00:20) ctansearch

@ctansearch offenbar reden wir aneinander vorbei: \textxbf oder irgendein anderer Schriftauszeichnungsbefehl nach \begin{document} ist nur eine Notlösung und sollte eigentlich nur in Definitionen von semantischen Auszeichnungsbefehlen verwendet werden, also in der Präambel. Setzt man sie im Dokument ein, macht man meines Erachtens konzeptuell was falsch.

(08 Okt '13, 00:26) cgnieder

@Clemens Das wäre also in saputellos Sinne gemeint, daß man Hervorhebungen in der Präamble selbst definiert und im Dokument benutzt (\wichtig ..etc)?

Ok, das wäre eine höhere Stufe der Dokumentkonzeption, das sehe ich als sinnvoll an, obwohl das keine verallgemeinerte Lösung darstellt.

Kommt Zeit, kommt Rat. Besser geht ja immer, dank Tex/Latex.

(08 Okt '13, 00:43) ctansearch

Die Frage ist falsch gestellt. Sie sollte heißen: Wieso kann ich Schriftauszeichnungen nicht in einem Environment nutzen? Antwort wäre: Weil es bislang niemand geschafft hat, die unterschiedlichen Schriftauszeichnungen in einem Environment zusammenzufassen. Daraus ergibt sich die Aufgabe, dies zu ermöglichen. Ich vermute, daß die scheinbare Unmöglichkeit, Schriftauszeichnungen als Umgebung zu nutzen daraus resultiert, daß die drei Ansätze "Gruppierung","lokale Gruppierung" und "globale Schalter" nicht zusammengeführt wurden. Ich halte dies für möglich, gebt euch mal Mühe :-)

(09 Okt '13, 23:42) ctansearch
2

@ctansearch: Nein, die Frage ist nicht falsch gestellt. Man kann Schriftauszeichnungen durchaus in einer Umgebung verwenden. Man kann sie sogar als Umgebung verwenden und weil das irgendwer mal entdeckt hat, machen das jetzt viele nach, ohne zu wissen, was dabei insbesondere bei den Schriftgößen zu beachten ist.

BTW: Was soll der Unterschied zwischen lokaler Gruppierung und Gruppierung sein?

(10 Okt '13, 10:26) saputello

Ich habe die Antwort jetzt kurzer hand gemeldet. Die Antwort hat keinerlei Informationswert und die Kommentare sind auch eher der gewohnte Grabenkampf aufgrund von Missverständnissen. Hier ist keine Hexerei am Werk, (intelligente) Menschen haben sich bei der Implementierung etwas gedacht und das auch dokumentiert. In jeder Einführung wird der Sachverhalt auch beschrieben. Ich bin für eine kurze Aufräumaktion.

(28 Nov '14, 16:21) Johannes
Ergebnis 5 von 10 show 5 more comments
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:

×76
×37
×31
×20
×15

gestellte Frage: 21 Sep '13, 12:20

Frage wurde gesehen: 19,998 Mal

zuletzt geändert: 28 Nov '14, 16:21