Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 4
Link korrigiert

13 Jul '14, 15:21

esdd's gravatar image

esdd
17.8k304257

## `\newline` ## `\newline` ist für einen Absatz, was `\newpage` für das Dokument ist: es fügt _innerhalb_ eines Absatzes einen Zeilenumbruch hinzu, _ohne den Absatz zu beenden_. Man braucht es so gut wie gar nicht. (Manchmal, wenn auch selten, ist es aber durchaus nützlich.) ---------- ## `\linebreak` ## Die Rolle von `\linebreak` ist mit der von `\pagebreak` vergleichbar: es hat ein optionales Argument, in dem durch einen Parameter die Dringlichkeit des Zeilenumbruchs angegeben werden kann: - `0`: Hier ist gut, muss aber nicht umbrochen werden (penalty: `0`), - `1`: Hier wäre es ganz schön, aber Du findest bestimmt was besseres (penalty: `-51`, eigentlich `-\@lowpenalty`) - `2`: Her wäre es schon ganz passend, die Zeile umzubrechen (penalty: `-151`, eigentlich `-\@medpenalty`) - `3`: Hier würde ein Zeilenumbruch richtig gut passsen, aber wenn Du was _noch_ besseres weißt... (penalty: `-301`, eigentlich `-\@highpenalty`) - `4`: Mache auf jeden Fall hier einen Zeilenumbruch (penalty: `-10000`, Voreinstellung) Es gibt übrigens auch `\nolinebreak`, das ebenfalls ein optionales Argument hat, dem man die gleichen Werte geben kann. Die Bedeutung gilt entsprechend für die Vermeidung eines Zeilenumbruchs. Es gibt einen weiteren signifikanten Unterschied zu `\newline` im Blocksatz: die Zeile vor dem Umbruch wird noch bis zum Rand gestreckt: \documentclass{article} \usepackage{showframe} \begin{document} Hier ist eine Zeile, die jetzt bald umbrochen werden soll, und zwar hier:\newline hier geht es in der n\"achsten Zeile weiter. Hier ist eine Zeile, die jetzt bald umbrochen werden soll, und zwar hier:\linebreak hier geht es in der n\"achsten Zeile weiter. \end{document} ![alt text][1] Im Gegensatz zu `\newline` und dem gleich noch vorgestellten `\\` setzen `\linebreak` und `\nolinebreak` im wesentlichen nur eine Penalty für den Umbruch und funktionieren intern damit sehr verschieden zu ersteren. ---------- ## `\\` ## Das Makro `\\` hat keine feste Definition, seine Definition hängt von der Umgebung ab, in der es eingesetzt wird. Es hat aber in der Regel immer die gleiche Bedeutung: mache hier einen Zeilenumbruch. Die Definition in einem normalen Absatz ist eine andere als etwa die in einer `tabular` oder einer von `amsmath`'s Umgebungen wie `align`. In aller Regel ist `\\` einem `\newline` vorzuziehen, obwohl sie auf den ersten Blick die gleiche Wirkung haben: Nicht nur Tabellen, auch Befehle wie `\centering`, `\raggedright` und `\raggedleft` definieren `\\` auf passende Weise um (eine Tatsache, über die man beim Setzen von Tabellen immer wieder stolpert, siehe etwa [Ist es möglich, X-Spalten linksbündig auszurichten][2] oder [Zentrierung in mehrzeiligen p Spalten][3]). Das heißt etwa, dass `\newline` in der `center`-Umgebung nicht wie erwartet funktioniert (die Zentrierung der Zeile vor dem Umbruch stimmt nicht mehr), während `\\` wie gewohnt klappt. Normalerweise hat `\\` aber immer ein optionales Argument, mit dem ein zusätzlicher vertikaler Abstand eingefügt werden kann: \documentclass{article} \usepackage{showframe} \begin{document} Hier ist eine Zeile, die jetzt bald umbrochen werden soll, und zwar hier:\\ hier geht es in der n\"achsten Zeile weiter. Hier ist eine Zeile, die jetzt bald umbrochen werden soll, und zwar hier:\\[1ex] hier geht es in der n\"achsten Zeile weiter. \begin{tabular}{l} Text \\ Text \\[1ex] Text \end{tabular} \end{document} ![alt text][4] In normalem Text hat es außerdem noch eine Stern-Variante, `\\*`, die einen möglichen Seitenumbruch an dieser Stelle verhindert. (Die Sternversion gibt es auch in einer `tabular`, hat dort aber keine Wirkung.) Auch die Sternvariante hat übrigens das optionale Argument: `\\*[<länge>]`. Oftmals dürfen zwischen Befehl und optionalem Argument auch Leerzeichen sein, was zu überraschenden Fehlermeldungen führen kann. Das Minimalbeispiel \documentclass{article} \begin{document} \begin{tabular}{l} Text \\ Text \\ [Text] \end{tabular} \end{document} führt zum Fehler ! Missing number, treated as zero. <to be read again> T l.7 [Text] Darum erlaubt zum Beispiel `amsmath` in seinen Umgebungen keine Leerzeichen zwischen Befehl und optionalem Argument. In obigem Beispiel kann man den Fehler vermeiden, indem man etwa nach dem zweiten `\\` noch ein `\relax` oder ein `\empty` hinzufügt [1]: http://texwelt.de/wissen/upfiles/zeilenumbruch1.png [2]: http://texwelt.de/wissen/fragen/1805 [3]: http://texwelt.de/wissen/fragen/4014 http://texwelt.de/wissen/fragen/4006 [4]: http://texwelt.de/wissen/upfiles/zeilenumbruch2.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3
Typo

26 Mär '14, 09:58

esdd's gravatar image

esdd
17.8k304257

## `\newline` ## `\newline` ist für einen Absatz, was `\newpage` für das Dokument ist: es fügt _innerhalb_ eines Absatzes einen Zeilenumbruch hinzu, _ohne den Absatz zu beenden_. Man braucht es so gut wie gar nicht. (Manchmal, wenn auch selten, ist es aber durchaus nützlich.) ---------- ## `\linebreak` ## Die Rolle von `\linebreak` ist mit der von `\pagebreak` vergleichbar: es hat ein optionales Argument, in dem durch einen Parameter die Dringlichkeit des Zeilenumbruchs angegeben werden kann: - `0`: Hier ist gut, muss aber nicht umbrochen werden (penalty: `0`), - `1`: Hier wäre es ganz schön, aber Du findest bestimmt was besseres (penalty: `-51`, eigentlich `-\@lowpenalty`) - `2`: Her wäre es schon ganz passend, die Zeile umzubrechen (penalty: `-151`, eigentlich `-\@medpenalty`) - `3`: Hier würde ein Zeilenumbruch richtig gut passsen, aber wenn Du was _noch_ besseres weißt... (penalty: `-301`, eigentlich `-\@highpenalty`) - `4`: Mache auf jeden Fall hier einen Zeilenumbruch (penalty: `-10000`, Voreinstellung) Es gibt übrigens auch `\nolinebreak`, das ebenfalls ein optionales Argument hat, dem man die gleichen Werte geben kann. Die Bedeutung gilt entsprechend für die Vermeidung eines Zeilenumbruchs. Es gibt einen weiteren signifikanten Unterschied zu `\newline` im Blocksatz: die Zeile vor dem Umruch Umbruch wird noch bis zum Rand gestreckt: \documentclass{article} \usepackage{showframe} \begin{document} Hier ist eine Zeile, die jetzt bald umbrochen werden soll, und zwar hier:\newline hier geht es in der n\"achsten Zeile weiter. Hier ist eine Zeile, die jetzt bald umbrochen werden soll, und zwar hier:\linebreak hier geht es in der n\"achsten Zeile weiter. \end{document} ![alt text][1] Im Gegensatz zu `\newline` und dem gleich noch vorgestellten `\\` setzen `\linebreak` und `\nolinebreak` im wesentlichen nur eine Penalty für den Umbruch und funktionieren intern damit sehr verschieden zu ersteren. ---------- ## `\\` ## Das Makro `\\` hat keine feste Definition, seine Definition hängt von der Umgebung ab, in der es eingesetzt wird. Es hat aber in der Regel immer die gleiche Bedeutung: mache hier einen Zeilenumbruch. Die Definition in einem normalen Absatz ist eine andere als etwa die in einer `tabular` oder einer von `amsmath`'s Umgebungen wie `align`. In aller Regel ist `\\` einem `\newline` vorzuziehen, obwohl sie auf den ersten Blick die gleiche Wirkung haben: Nicht nur Tabellen, auch Befehle wie `\centering`, `\raggedright` und `\raggedleft` definieren `\\` auf passende Weise um (eine Tatsache, über die man beim Setzen von Tabellen immer wieder stolpert, siehe etwa [Ist es möglich, X-Spalten linksbündig auszurichten][2] oder [Zentrierung in mehrzeiligen p Spalten][3]). Das heißt etwa, dass `\newline` in der `center`-Umgebung nicht wie erwartet funktioniert (die Zentrierung der Zeile vor dem Umbruch stimmt nicht mehr), während `\\` wie gewohnt klappt. Normalerweise hat `\\` aber immer ein optionales Argument, mit dem ein zusätzlicher vertikaler Abstand eingefügt werden kann: \documentclass{article} \usepackage{showframe} \begin{document} Hier ist eine Zeile, die jetzt bald umbrochen werden soll, und zwar hier:\\ hier geht es in der n\"achsten Zeile weiter. Hier ist eine Zeile, die jetzt bald umbrochen werden soll, und zwar hier:\\[1ex] hier geht es in der n\"achsten Zeile weiter. \begin{tabular}{l} Text \\ Text \\[1ex] Text \end{tabular} \end{document} ![alt text][4] In normalem Text hat es außerdem noch eine Stern-Variante, `\\*`, die einen möglichen Seitenumbruch an dieser Stelle verhindert. (Die Sternversion gibt es auch in einer `tabular`, hat dort aber keine Wirkung.) Auch die Sternvariante hat übrigens das optionale Argument: `\\*[<länge>]`. Oftmals dürfen zwischen Befehl und optionalem Argument auch Leerzeichen sein, was zu überraschenden Fehlermeldungen führen kann. Das Minimalbeispiel \documentclass{article} \begin{document} \begin{tabular}{l} Text \\ Text \\ [Text] \end{tabular} \end{document} führt zum Fehler ! Missing number, treated as zero. <to be read again> T l.7 [Text] Darum erlaubt zum Beispiel `amsmath` in seinen Umgebungen keine Leerzeichen zwischen Befehl und optionalem Argument. In obigem Beispiel kann man den Fehler vermeiden, indem man etwa nach dem zweiten `\\` noch ein `\relax` oder ein `\empty` hinzufügt [1]: http://texwelt.de/wissen/upfiles/zeilenumbruch1.png [2]: http://texwelt.de/wissen/fragen/1805 [3]: http://texwelt.de/wissen/fragen/4014 [4]: http://texwelt.de/wissen/upfiles/zeilenumbruch2.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

25 Mär '14, 22:13

cgnieder's gravatar image

cgnieder
22.1k253463

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

25 Mär '14, 19:59

cgnieder's gravatar image

cgnieder
22.1k253463