unhboxing이 수직 모드를 무시하는 것처럼 보이는 이유와 unvboxing이 수평 ​​모드를 무시하는 것처럼 보이는 이유는 무엇입니까?

unhboxing이 수직 모드를 무시하는 것처럼 보이는 이유와 unvboxing이 수평 ​​모드를 무시하는 것처럼 보이는 이유는 무엇입니까?

첫 번째 질문

unhboxing이 수직 모드를 무시하는 것처럼 보이는 이유와 unvboxing이 수평 ​​모드를 무시하는 것처럼 보이는 이유는 무엇입니까?

다음 두 사진 이후의 MWE

  • 둘 다 첫 번째 질문의 텍스트를 전달합니다.
  • 수직 모드에서 \unhbox/ 의 효과와 수평 모드에서 / 의 효과를 보여줍니다 .\unhcopy\unvbox\unvcopy

첫 번째 질문의 텍스트는 다음 두 그림에도 나와 있습니다. 이는 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


두 번째 질문:

동일한 길이의 많은 라인/많은 라인을 포함하는 \MyBoxa를 보유하는 박스 레지스터를 가정합니다 .\vbox\hboxes

\box해당 박스 레지스터를 사용하면 한 줄이 여러 페이지에 걸쳐 분할되지 않는 수직 상자가 생성됩니다.

\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

여기에 이미지 설명을 입력하세요

해당 box-register를 실행 하면 \unvbox단일 라인이 여러 페이지에 걸쳐 분할됩니다.

\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

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

\unvbox이 줄이 여러 페이지에 걸쳐 분할될 뿐만 아니라 오른쪽으로 플러시되도록 하려면 어떻게 해야 합니까 ? 마치 당신이 그랬던 것처럼 :

\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

여기에 이미지 설명을 입력하세요

여기에 이미지 설명을 입력하세요

답변1

\unhbox가로 목록을 노출하므로 문자처럼 새 단락과 새 가로 목록을 시작합니다. 일반적인 \leavevmode 점은\def\leavevmode{\unhbox\voidb@x}

관련 정보