자체 설명 샘플
% pdfTeX
\newbox\thbx
\newbox\thhbx
\setbox\thbx\hbox{abc}
% HOW TO COPY THE CONTENTS OF THE BOX
% WITHOUT ACTUALLY COPYING THE BOX
% ITSELF ALONG WITH THOSE CONTENTS?
\setbox\thhbx\hbox{\copy\thbx}
% I NEED \hbox{abc} NOT \hbox{\hbox{abc}}
\showbox\thhbx
\bye
출력
\thbx=\box16
\thhbx=\box17
> \box17=
\hbox(6.94444+0.0)x15.27782
.\hbox(6.94444+0.0)x15.27782
..\tenrm a
..\tenrm b
..\kern0.27779
..\tenrm c
abc
하지만 복사만 하면 되고 상자는 복사하면 안 됩니다 abc
.
답변1
짧은 대답: 상자를 복사하려면 를 사용하십시오 \copy
. 둘러싸기를 원하지 않으면 \hbox
작성하지 마십시오. 즉, 대신
\setbox\thhbx=\hbox{\copy\thbx}
쓰다
\setbox\thhbx=\copy\thbx
상자를 \thhbx
와 동일하게 만듭니다 \thbx
. 보다 일반적으로 를 사용하면 \unhcopy
상자의 내용만 복사할 수 있지만 여기서는 필요하지 않습니다. 이 방법을 사용했다면 다음과 같이 결과를 상자에 다시 묶어야 합니다.
\setbox\thhbx=\hbox{\unhcopy\thbx}
이 경우에는 에 비해 단순히 불필요합니다 \copy\thbx
.
다음은 모든 것을 명확하게 해주는 예입니다.
\setbox0=\hbox{ab} % The original box
\setbox1=\hbox{xy\copy0 rs}
\setbox2=\hbox{\copy0}
\setbox3=\copy0 % Now box 3 is identical to box 0
\setbox4=\hbox{xy\unhcopy0 rs}
\setbox5=\hbox{\unhcopy0} % Now box 5 is identical to box 0
이 답변의 나머지 부분은 위의 예를 자세히 설명한 것입니다.
당신이 쓴다고 가정하자
\setbox0=\hbox{ab}
그러면 상자 0은 다음과 같습니다.
\hbox(6.94444+0.0)x10.55559
.\tenrm a
.\tenrm b
\box
따라서 를 사용하여 파괴적으로 또는 를 사용하여 비파괴적으로 더 큰 상자에 사용하면 \copy
상자를 얻을 수 있습니다. 예를 들어, 다음과 같이 쓴다면
\setbox1=\hbox{xy\copy0 rs}
당신은 다음을 얻습니다:
\hbox(6.94444+1.94444)x28.9723
.\tenrm x
.\tenrm y
.\hbox(6.94444+0.0)x10.55559
..\tenrm a
..\tenrm b
.\tenrm r
.\tenrm s
대신에 상자가 있습니다 \copy0
. 비슷하게 쓰면
\setbox2=\hbox{\copy0}
당신은 상자 2를 얻을 것이다
\hbox(6.94444+0.0)x10.55559
.\hbox(6.94444+0.0)x10.55559
..\tenrm a
..\tenrm b
질문의 상황과 비슷합니다.
다른 상자에 복사할 때 원하지 않는 경우추가의외부 묶음 \hbox
, 그런 다음 쓰지 마세요! 그래서 당신이 쓴다면
\setbox3=\copy0
상자 3을 얻게 됩니다.
\hbox(6.94444+0.0)x10.55559
.\tenrm a
.\tenrm b
원래 상자 0과 동일합니다.
이 기능을 사용할 수 없는 경우 \unhbox
(파괴적으로) 또는 \unhcopy
(비파괴적으로) "내용"만 복사할 수 있습니다(다른 상자는 제거). ( 세로 상자에도 마찬가지입니다.) 예를 들면 다음과 같습니다 \unvbox
.\unvcopy
\setbox4=\hbox{xy\unhcopy0 rs}
준다
\hbox(6.94444+1.94444)x28.9723
.\tenrm x
.\tenrm y
.\tenrm a
.\tenrm b
.\tenrm r
.\tenrm s
그리고
\setbox5=\hbox{\unhcopy0}
준다
\hbox(6.94444+0.0)x10.55559
.\tenrm a
.\tenrm b
다시 원래 상자 0과 동일합니다.