Warum scheint Unhboxing den vertikalen Modus zu ignorieren und warum scheint Unvboxing den horizontalen Modus zu ignorieren?

Warum scheint Unhboxing den vertikalen Modus zu ignorieren und warum scheint Unvboxing den horizontalen Modus zu ignorieren?

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/ \unhcopyim vertikalen Modus und von \unvbox/ \unvcopyim 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.

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

\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 \MyBoxan, das ein enthält \vbox, das wiederum viele Zeilen/viele \hboxesgleicher Länge enthält.

\boxDurch 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

Bildbeschreibung hier eingeben

Beim \unvboxAnkreuzen 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

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

Wie kann man in Kombination damit erreichen, \unvboxdass 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

Bildbeschreibung hier eingeben

Bildbeschreibung hier eingeben

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}

verwandte Informationen