Albrecht Mehl schrieb:
> Mit fbox und mit framebox habe ich versucht, mehrzeiligen Text
> einzurahmen: in beiden Fällen wurde der Zeilenumbruch ignoriert. Gibt es
> doch ein Möglichkei, das Gewünschte zu erreichen?
\fbox packt das als Argument übergebene Material in eine \hbox
und malt einen Rahmen darum herum.
Innerhalb einer \hbox ist (La)TeX erstmal im sogenannten
"Restricted Horizontal mode [Building a horizontal list for an
\hbox]". Horizontale Listen sind im Prinzip einzelne
(horizontale) Zeilen. Einzelne Zeilen haben keinen Umbruch, denn
sonst wären es ja mehrere Zeilen. Innerhalb einer \hbox, in
diesem Modus, funktionieren deshalb Dinge, die fürs Umbrechen
von Zeilen gedacht sind, nicht.
Für Zeilenumbrüche muss man also dafür sorgen, dass (La)TeX zu
einem Modus wechselt, in dem mehrere Zeilen möglich sind.
Dazu muss man der \fbox als Argument etwas geben, was in eine
vertikale Box, zB eine \vbox oder eine \parbox eingepackt ist.
Diese vertikale Box kommt dann in die besagte \hbox und in
dieser vertikalen Box sind Zeilenumbrüche möglich.
Innerhalb einer \vbox oder \parbox wäre (La)TeX erstmal im
"Internal vertical Mode [Building a vertical list for a \vbox]".
Alle \hboxen innerhalb einer \vbox oder \parbox werden als
einzelne Zeilen betrachtet und untereinander gesetzt und jede
Zeile ist so breit wie die jeweilige \hbox. In diesem Modus hat
man also eine umgebende vertikale Box, in die man zB per \hbox
die einzeln horizontalen Boxen/Zeilen "von Hand" hineinlegen
kann.
Im "Internal vertical Mode [Building a vertical list for a \vbox]"
werden Space-Token übrigens nicht zu horizontalem Leim, sodass
es keinen Unterschied macht, ob man schreibt
\vbox{\hbox{Zeile 1}\hbox{Zeile 2}}%
oder schreibt:
\vbox{\hbox{Zeile 1} \hbox{Zeile 2} }%
.
TeX kann aber auch noch in einen anderen Modus wechseln, so dass
man eine umgebende vertikale Box hat, in die aber nicht "von
Hand" die einzelnen horizontalen Boxen hineingelegt werden,
sondern innerhalb derer die "Absatzbastelroutine" von (La)TeX
läuft, welche wiederum einen Automatismus darstellt, der die
einzelnen in der vertikalen Box liegenden horizontalen
Boxen/Zeilen "maschinell" erstellt und dabei Dinge/Befehle wie
\\ berücksichtigt, die Zeilenumbrüche bewirken bzw das Beenden
des Erstellens der momentan in Arbeit befindlichen Zeile/\hbox
und das Beginnen des Erstellen einer neuen Zeile/\hbox bewirken.
Diese "maschinell erstellten" \hboxen haben alle eine Breite,
die dem Wert \hsize entspricht, welcher im Prinzip der
Zeilenbreite für den jeweiligen Absatz entspricht und beim
Verteilen von Material über die einzelnen maschinell zu
erstellenden horizontalen Boxen/Zeilen der Breite \hsize folgt
die Absatzbastelroutine diversen Regeln, die dazu dienen sollen,
den Absatz bzw das Gesamtbild gut aussehen zu lassen. Zum
Beispiel werden letzte Zeilen eines Absatz, die oft kürzer sind
als die vorhergehenden gleich langen "Blocksatz" Zeilen, mit
\parfillskip-Glue aufgefüllt.
Dieser "andere Modus" nennt sich "Horizontal Mode [Building a
horizontal list for paragraph]". ( Um eingängiger zu machen,
worum es bei diesem Modus geht, hätte ich ihn vielleicht
"Paragraph Mode [Building a horizontal list for paragraph]"
genannt. )
In diesem Zusammenhang: Der Befehl \par dient im Prinzip dazu,
eine laufende Absatzbastelroutine zu beenden bzw den "Horizontal
Mode [Building a horizontal list for paragraph]" zu verlassen.
Sofern (La)TeX danach auf irgendetwas stösst, was (La)TeX dazu
veranlasst, die Absatzbastelroutine wieder anzuwerfen, also
wieder in den "Horizontal Mode [Building a horizontal list for
paragraph]" zu wechseln, wird dann ein neuer Absatz gebastelt.
Innerhalb einer \parbox, bei der man die Breite als Argument
vorgeben muss, ist LaTeX erstmal im "Internal vertical Mode
[Building a vertical list for a \vbox]". Wenn in dieser \parbox
Dinge vorkommen, die LaTeX zum Wechsel in den "Horizontal Mode
[Building a horizontal list for paragraph]" veranlassen, werden
wie gehabt "maschinell" \hboxen/Zeilen der Breite \hsize
gebastelt, bloss entspricht dabei der Wert \hsize dem, was man
im Argument als Breite vorgegeben hat.
\documentclass[a4paper,10pt]{scrartcl}
%\usepackage[utf8x]{inputenc}
\usepackage{enumitem}
\begin{document}
\fbox{% TeX befindet sich im Restricted Horizontal mode [Building a horizontal list for an \hbox]
\vbox{% TeX befindet sich im Internal vertical Mode [Building a vertical list for a \vbox]
% wo jede \hbox eine Zeile darstellt und Space-Token sich nicht auswirken bzw nicht
% zu horizontalem Leim werden.
\hbox{text1} \hbox{text2} %
}%
}%
\fbox{% TeX befindet sich im Restricted Horizontal mode [Building a horizontal list for an \hbox]
\vbox{% TeX befindet sich im Internal vertical Mode [Building a vertical list for a \vbox]
% TeX wechselt dank \leavevmode zum Horizontal Mode [Building horizontal list for paragraph]
% und bastelt horizontale Boxen der Breite \hsize in die das Material hineinverteilt wird.
% In diesem Fall passt alles Material in eine solche Box.
% In diesem Modus werden Space-Token, die nicht am Zeilenende landen, zu horizontalem Leim.
\leavevmode
\hbox{text1} \hbox{text2} %
}%
}%
\fbox{% TeX befindet sich im Restricted Horizontal mode [Building a horizontal list for an \hbox]
\vbox{% TeX befindet sich im Internal vertical Mode [Building a vertical list for a \vbox]
% TeX findet keine \hbox und wechselt deshalb zum Horizontal Mode [Building horizontal list for paragraph]
% und bastelt horizontale Boxen der Breite \hsize in die das Material hineinverteilt wird.
% In diesem Fall passt alles Material in eine solche Box.
% In diesem Modus werden Space-Token, die nicht am Zeilenende landen, zu horizontalem Leim.
text1 text2 %
}%
}%
\fbox{% TeX befindet sich im Restricted Horizontal mode [Building a horizontal list for an \hbox]
\vbox{% TeX befindet sich im Internal vertical Mode [Building a vertical list for a \vbox]
% TeX findet keine \hbox und wechselt deshalb zum Horizontal Mode [Building horizontal list for paragraph]
% und bastelt horizontale Boxen der Breite \hsize in die das Material hineinverteilt wird.
% In diesem Modus werden Space-Token, die nicht am Zeilenende landen, zu horizontalem Leim.
% In diesem Modus werden auch Zeilenumbruchsbefehle beruecksichtigt sodass diesmal zwei Zeilen
% entstehen:
text1 \\text2 %
}%
}%
\end{document}
Ulrich