
Primera pregunta
¿Por qué el unhboxing parece ignorar el modo vertical y por qué el unvboxing parece ignorar el modo horizontal?
El MWE después de las dos siguientes imágenes.
- Ambos entregan el texto de la primera pregunta.
- e ilustra los efectos de
\unhbox
/\unhcopy
en modo vertical y de\unvbox
/\unvcopy
en modo horizontal.
El texto de la primera pregunta también se encuentra en las dos imágenes siguientes. Son el resultado de la elaboración del 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
Segunda pregunta:
Supongamos un registro de caja \MyBox
que contiene un \vbox
que a su vez contiene muchas líneas/muchas \hboxes
de igual longitud.
\box
Al realizar ese registro de cuadro se obtiene un cuadro vertical cuyas líneas individuales no se dividirán en páginas:
\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
Al \unvbox
ingresar ese registro de cuadro, las líneas individuales se dividirán en páginas:
\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
¿Cómo puede lograr en combinación con \unvbox
eso que estas líneas no solo se divida entre páginas sino que también se desplacen hacia la derecha? Como si lo hicieras:
\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
Respuesta1
\unhbox
expone una lista horizontal, por lo que comienza un nuevo párrafo y una nueva lista horizontal tal como lo haría una letra, lo común \leavevmode
es simplemente\def\leavevmode{\unhbox\voidb@x}