Fehlerhafter Absatz in der otherlanguage-Umgebung von babel

Schriftbild, Absätze und Auflistungen einstellen


roibot
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Dez 2011, 16:21

Fehlerhafter Absatz in der otherlanguage-Umgebung von babel

Beitrag von roibot »

Guten Tag zusammen,

ich habe folgenden (vermeintlichen) Fehler: Wenn ich in der otherlanguage-Umgebung von babel die Schriftgröße ändere, stimmt der Zeilenabstand der letzten beiden Zeilen nicht mehr.
\documentclass[12pt]{article}
\usepackage[a4paper,margin=3cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\usepackage[ngerman,british]{babel}
\usepackage{fontspec,csquotes,microtype}
%\usepackage{lua-visual-debug}

\begin{document}
\setlength{\parindent}{0pt}
\raggedright

\begin{otherlanguage}{ngerman} % Falscher Zeilenabstand
	\large
	Erste Zeile\\
	Zweite Zeile
\end{otherlanguage}

\vspace{1cm}

\large
\begin{otherlanguage}{ngerman} % Korrekter Zeilenabstand
	Erste Zeile\\
	Zweite Zeile
\end{otherlanguage}

\end{document}
Wenn ich die Schriftgrößenänderung vor der Umgebung setze, tritt der Fehler nicht auf. In der Dokumentation von babel fand ich keine Informationen, ob dieses Verhalten beabsichtigt ist. Warum stimmt der Zeilenabstand nicht, wenn ich in der Umgebung die Schriftgröße ändere?

Viele Grüße

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Weil der Zeilenabstand von der Schriftgröße am Ende des Absatzes abhängt.
\begin{otherlanguage}{ngerman} %
   \large
   Erste Zeile\\
   Zweite Zeile\par %<--- Absatz beenden.
\end{otherlanguage}

Gast

Beitrag von Gast »

Das von Ulrike angesprochene Verhalten ist (natürlich) ein allgemeiner Grundsatz und stimmt nicht nur, wenn babel geladen oder otherlanguage genutzt wird. Daher schweigt sich die babel-Anleitung darüber auch aus.
\documentclass[12pt]{article}
\usepackage[a4paper,margin=3cm]{geometry}
\usepackage[onehalfspacing]{setspace}
\usepackage[ngerman,british]{babel}
\usepackage{csquotes,microtype}

\begin{document}
\setlength{\parindent}{0pt}
\raggedright

{ % Falscher Zeilenabstand
   \large
   Erste Zeile\\
   Zweite Zeile
}

\vspace{1cm}

{ % korrekter Abstand
  \large
   Erste Zeile\\
   Zweite Zeile
   \par
}

\vspace{1cm}

a

\large
{% Korrekter Zeilenabstand
   Erste Zeile\\
   Zweite Zeile
}

a % Größenumschaltung bleibt aktiv!
\end{document}
Es sei mir der Kommentar erlaubt, dass man den Absatzeinzug für ein normales Dokument nicht einfach mit \setlength{\parindent}{0pt} ausschalten sollte, wenn man keine andere Absatzauszeichnung einstellt. Siehe https://komascript.de/node/2199 oder https://www.texwelt.de/wissen/fragen/23 ... korrekt-ab

In einem echten Dokument sollte man im (Fließ-)Text den Befehl \\ auch selten bis nie verwenden. Absätze werden durch eine Leerzeile oder ein \par beendet. Innerhalb eines Absatzes sollten im Allgemeinen keine manuellen Umbrüche erfolgen. In Tabellen oder wenn man Gedichtzeilen setzt, kann \\ aber die richtige Wahl sein. Auch beim Titelblatt oder anderen Spezialseiten sieht es eventuell anders aus.

roibot
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Dez 2011, 16:21

Beitrag von roibot »

Vielen Dank für eure Antworten! Mir war noch nicht bewusst, dass der Zeilenabstand von der Schriftgröße am Ende des Absatzes abhängt, ergibt aber Sinn.

In meinem Hauptdokument verwende ich \\ nur in zwei Aufzählungen, da ich an diesen Stellen einen manuellen Umbruch für eine neue Zeile als sinnvoll erachte. Normalerweise lasse ich LaTeX neue Absätze dadurch erstellen, dass ich einen oder zwei Leerzeilen im Text habe.

\setlength{\parindent}{0pt} verwende ich normalerweise nicht, aber ich bin gerade dabei zwei Sonderseiten zu schreiben (Titelseite und Erklärung), in welchen dies noch für zentrierten Text stand. Soll ich Umbrüche zwischen Zeilen auf diesen Seiten lieber mit \par als \\ setzen? Ich wollte aus irgendeinem Grund lieber die Finger von TeX Primitiven lassen.

Gast

Beitrag von Gast »

Im Wirkbereich von \centering oder center erfolgt ohnehin kein Absatzeinzug, also ist es da vollkommen überflüssig den Einzug selbst noch einmal abzuschalten.

\\ macht übrigens keinen manuellen Zeilenumbruch, sondern beginnt hart eine neue Zeile (ohne die vorherige Zeile im Blocksatz bis zum Ende zu füllen). Ein manueller Zeilenumbruch wäre mit \pagebreak zu erreichen und würde dann im Blocksatz tatsächlich die beendete Zeile zu füllen versuchen.

BTW (→ themen-mit-status-versehen-t1872.html):
Johannes hat geschrieben:Folgende Status stehen zur Auswahl:
  • Rückfrage: Ein potentieller Beantworter hat eine Rückfrage zum Thread-Starter
Und für eine Anschlussfrage wäre eigentlich eine neue Frage besser, weil dann der Status einfacher eindeutig gehalten werden kann und nicht zum Wischi-Waschi-Status "komplex" gegriffen werden muss.

Benutzeravatar
u_fischer
Forum-Meister
Forum-Meister
Beiträge: 4266
Registriert: Do 22. Nov 2012, 11:09
Kontaktdaten:

Beitrag von u_fischer »

Soll ich Umbrüche zwischen Zeilen auf diesen Seiten lieber mit \par als \\ setzen?
\par erzeugt einen neuen Absatz, \\ eine neue Zeile innerhalb eines Absatzes. Was besser/richtig ist, hängt vom Inhalt ab.
Ich wollte aus irgendeinem Grund lieber die Finger von TeX Primitiven lassen.
Nun, wenn du \par nicht verwenden willst, kannst du auch eine Leerzeile verwenden. Aber ein explizites \par ist m.E. oft besser, das löscht man nicht so schnell versehentlich.

roibot
Forum-Anfänger
Forum-Anfänger
Beiträge: 30
Registriert: Di 27. Dez 2011, 16:21

Danke!

Beitrag von roibot »

Vielen Dank nochmal, mit welcher Geduld ihr hier noch so einfache Fragen beantwortet. Wenn man so viel Erfahrung mit TeX/LaTeX hat wie ihr, müssen einem diese ständigen Nachfragen wahnsinnig trivial vorkommen.
Mir sind die Unterschiede zwischen \\ und \par jetzt komplett klar und ich weiß auch, wann ich welche korrekt anwenden kann.

Bartman
Forum-Meister
Forum-Meister
Beiträge: 2456
Registriert: Do 16. Jul 2009, 21:41
Wohnort: Hessische Provinz

Beitrag von Bartman »

Anonymous hat geschrieben:Ein manueller Zeilenumbruch wäre mit \pagebreak zu erreichen und würde dann im Blocksatz tatsächlich die beendete Zeile zu füllen versuchen.
Du meinst vermutlich \linebreak.

Antworten