Erste Frage
Warum scheint Unhboxing den vertikalen Modus zu ignorieren und warum scheint Unvboxing den horizontalen Modus zu ignorieren?
Das MWE nach den nächsten beiden Bildern
- beide liefern den Text der ersten Frage
- und veranschaulicht die Effekte von
\unhbox
/\unhcopy
im vertikalen Modus und von\unvbox
/\unvcopy
im horizontalen Modus.
Der Text der ersten Frage ist auch in den nächsten beiden Bildern zu finden. Sie sind das Ergebnis der Zusammenstellung des MWE.
\newbox\MyBox
\setbox\MyBox=\hbox{%
\vbox{\hbox{box1a}\hbox{box1b}}%
\vbox{\hbox{box2a}\hbox{box2b}}%
\vbox{\hbox{box3a}\hbox{box3b}}%
}
\noindent{%
\bf The {\tt\string\hbox} in box-register {\tt\string\MyBox} is:\hfill\break
\tt\string\hbox\string{\char37 \hfill\break
\null\ \ \ \ \ \ \ %
\string\vbox\string{\string\hbox\string{box1a\string}\string\hbox\string{box1b\string}\string}\char37 \hfill\break
\null\ \ \ \ \ \ \ %
\string\vbox\string{\string\hbox\string{box2a\string}\string\hbox\string{box2b\string}\string}\char37 \hfill\break
\null\ \ \ \ \ \ \ %
\string\vbox\string{\string\hbox\string{box3a\string}\string\hbox\string{box3b\string}\string}\char37 \hfill\break
\null\ \ \ \ \ %
\string}\char37 \hfill
}%
\noindent{\bf In vertical mode I expect boxes to be placed atop/below each
other no matter if the boxes to be placed themselves are horizontal or vertical
boxes.\hfill\break
Thus in vertical mode I expect from {\tt\string\unhcopy}ing the {\tt\string\hbox} held in
box-register {\tt\string\MyBbox} that the three {\tt\string\vbox}es it contains are
placed atop/below each other:}\bigskip
\par\vbox{\hbox{box1a}\hbox{box1b}}%
\vbox{\hbox{box2a}\hbox{box2b}}%
\vbox{\hbox{box3a}\hbox{box3b}}%
\bigskip\noindent{\bf But in vertical mode from {\tt\string\unhcopy}ing I
get the three vertical boxes placed to the left/right of each other, with {\tt\string\parindent}-glue
at the left of the leftmost box:}\bigskip
\par\unhcopy\MyBox
\bigskip\noindent{\bf Just as if I did {\tt\string\box} the {\tt\string\hbox}
in horizontal mode:}\bigskip
\par\leavevmode\box\MyBox
\bigskip\noindent{\bf Why? Where am I wrong in my understanding of the workings of {\tt\string\unhbox}/{\tt\string\unhcopy}?}
\vfill\eject
\setbox\MyBox=\vbox{%
\hbox{\vbox{\hbox{box1a}\hbox{box1b}}}%
\hbox{\vbox{\hbox{box2a}\hbox{box2b}}}%
\hbox{\vbox{\hbox{box3a}\hbox{box3b}}}%
}
\bigskip\noindent{\bf
\bf The {\tt\string\vbox} in box-register {\tt\string\MyBox} is:\hfill\break
\tt
\string\vbox\string{\char37 \hfill\break
\null\ \ \ \ \ \ \ \string\hbox\string{\string\vbox\string{\string\hbox\string{box1a\string}%
\string\hbox\string{box1b\string}\string}\string}\char37 \hfill\break
\null\ \ \ \ \ \ \ \string\hbox\string{\string\vbox\string{\string\hbox\string{box2a\string}%
\string\hbox\string{box2b\string}\string}\string}\char37 \hfill\break
\null\ \ \ \ \ \ \ \string\hbox\string{\string\vbox\string{\string\hbox\string{box3a\string}%
\string\hbox\string{box3b\string}\string}\string}\char37 \hfill\break
\null\ \ \ \ \ \string}\char37 \hfill
}%
\noindent{\bf In horizontal mode I expect boxes to be placed left/right to each other no
matter if the boxes to be placed themselves are horizontal or vertical boxes.\hfill\break
Thus in horizontal mode I expect from {\tt\string\unvcopy}ing the {\tt\string\vbox} held in
box-register {\tt\string\MyBbox} that the three {\tt\string\hbox}es it contains are placed
left/right to each other, with {\tt\string\parindent}-glue at the left of the leftmost
{\tt\string\hbox}:}\bigskip
\leavevmode\hbox{\vbox{\hbox{box1a}\hbox{box1b}}}%
\hbox{\vbox{\hbox{box2a}\hbox{box2b}}}%
\hbox{\vbox{\hbox{box3a}\hbox{box3b}}}%
\bigskip\noindent{\bf But in horizontal mode from {\tt\string\unvcopy}ing
I get the three horizontal boxes placed atop/below each other:}\bigskip
\leavevmode\unvcopy\MyBox
\bigskip\noindent{\bf Just as if I did {\tt\string\box} the {\tt\string\vbox} in vertical mode:}\bigskip
\par\box\MyBox
\bigskip\noindent{\bf Why? Where am I wrong in my understanding of the workings of {\tt\string\unvbox}/{\tt\string\unvcopy}?}
\bye
Zweite Frage:
Nehmen wir ein Box-Register \MyBox
an, das ein enthält \vbox
, das wiederum viele Zeilen/viele \hboxes
gleicher Länge enthält.
\box
Durch Einfügen dieses Box-Registers entsteht eine vertikale Box, deren einzelne Zeilen nicht auf mehrere Seiten aufgeteilt werden:
\newcount\tmpcnt
\newbox\MyBox
\setbox\MyBox=\vbox{%
\tmpcnt=0 %
\loop\advance\tmpcnt by 1 \hbox to 3cm{Line:\hfill\number\tmpcnt.}\ifnum\tmpcnt<100 \repeat
}%
\noindent
\box\MyBox
\bye
Beim \unvbox
Ankreuzen dieses Box-Registers werden die einzelnen Zeilen auf mehrere Seiten aufgeteilt:
\newcount\tmpcnt
\newbox\MyBox
\setbox\MyBox=\vbox{%
\tmpcnt=0 %
\loop\advance\tmpcnt by 1 \hbox to 3cm{Line:\hfill\number\tmpcnt.}\ifnum\tmpcnt<100 \repeat
}%
\noindent
\nobreak\unvbox\MyBox
\bye
Wie kann man in Kombination damit erreichen, \unvbox
dass diese Zeilen nicht nur auf mehrere Seiten verteilt werden, sondern auch noch nach rechts ausgerichtet sind? Als ob man das getan hätte:
\newcount\tmpcnt
\tmpcnt=0 %
\noindent
\loop
\advance\tmpcnt by 1 %
\null\hfill\hbox to 3cm{Line:\hfill\number\tmpcnt.}\break
\ifnum\tmpcnt<100 \repeat
\par
\bye
Antwort1
\unhbox
\leavevmode
stellt eine horizontale Liste dar, startet also einen neuen Absatz und eine neue horizontale Liste, genau wie es ein Buchstabe tun würde.\def\leavevmode{\unhbox\voidb@x}