Überarbeitungsverlauf[Zurück]
Klicke auf Einblenden/Ausblenden von Überarbeitungen 5

28 Nov '18, 22:33

Henri's gravatar image

Henri
15.7k133943

`\settoheight` verwendet intern eine `\hbox` welche nur eine einzelne Zeile darstellen kann. Um mehrere Zeilen zu erhalten muss man den Inhalt in eine `\vbox` packen. Um die gesamte Höhe (`\ht+\dp`) der Box zu erhalten muss man `\settototalheight` aus dem `calc` Paket verwenden. *N.B.*: `\\` beginnt keinen neuen Absatz, sondern fügt nur eine Penalty mit Wert -10000 ein, um einen Zeilenumbruch zu erzwingen. Die Definition von `\\` ist effektiv `\penalty10000\hfil\penalty-10000`. Zunächst wird mit `\penalty10000` ein Zeilenumbruch unterdrückt, dann wird mit `\hfil` die Zeile aufgefüllt und schließlich mit `\penalty-10000` der Zeilenumbruch erzwungen. erzwungen. Man sollte stattdessen immer `\par` oder einfach eine leere Zeile verwenden. \documentclass[]{book} \usepackage{calc} \parindent0pt \begin{document} \newlength\myheight \def\mybox{Zeile 1\par Zeile 2\par Zeile 3} \settototalheight\myheight{\vbox{\mybox}} Wert: \the\myheight ~(falsch!) Inhalt: \mybox \bigskip \newlength\Myheight \def\Mybox{Zeile 1} \settototalheight\Myheight{\vbox{\Mybox}} Wert: \the\Myheight Inhalt: \Mybox \end{document} [![alt text][1]][1] [1]: https://texwelt.de/wissen/upfiles/test_460.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 4

28 Nov '18, 22:32

Henri's gravatar image

Henri
15.7k133943

`\settoheight` verwendet intern eine `\hbox` welche nur eine einzelne Zeile darstellen kann. Um mehrere Zeilen zu erhalten muss man den Inhalt in eine `\vbox` packen. Um die gesamte Höhe (`\ht+\dp`) der Box zu erhalten muss man `\settototalheight` aus dem `calc` Paket verwenden. *N.B.*: `\\` beginnt keinen neuen Absatz, sondern fügt nur eine Penalty mit Wert -10000 ein, um einen Zeilenumbruch zu erzwingen. Die Definition von `\\` ist effektiv `\penalty10000\hfil\penalty-10000`. Zunächst wird mit `\penalty10000` ein Zeilenumbruch unterdrückt, dann wird mit `\hfil` die Zeile aufgefüllt und schließlich mit `\penalty-10000` der Zeilenumbruch erzwungen. \documentclass[]{book} \usepackage{calc} \parindent0pt \begin{document} \newlength\myheight \def\mybox{Zeile 1 \\ Zeile 2 \\ 1\par Zeile 2\par Zeile 3} \settototalheight\myheight{\vbox{\mybox}} Wert: \the\myheight ~(falsch!) \\ Inhalt: \\ ~(falsch!) Inhalt: \mybox \bigskip \newlength\Myheight \def\Mybox{Zeile 1} \settototalheight\Myheight{\vbox{\Mybox}} Wert: \the\Myheight \\ Inhalt: \\ \the\Myheight Inhalt: \Mybox \end{document} [![alt text][1]][1] [1]: https://texwelt.de/wissen/upfiles/test_460.png
Klicke auf Einblenden/Ausblenden von Überarbeitungen 3

28 Nov '18, 22:31

Henri's gravatar image

Henri
15.7k133943

Klicke auf Einblenden/Ausblenden von Überarbeitungen 2

28 Nov '18, 22:27

Henri's gravatar image

Henri
15.7k133943

Klicke auf Einblenden/Ausblenden von Überarbeitungen 1

28 Nov '18, 22:27

Henri's gravatar image

Henri
15.7k133943