Muestra autodescriptiva
% 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
salidas
\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
pero sólo necesito abc
copiar, no el cuadro con el archivo abc
.
Respuesta1
Respuesta corta: para copiar un cuadro, utilice \copy
. Si no desea el adjunto \hbox
, simplemente no lo escriba. Es decir, en lugar de
\setbox\thhbx=\hbox{\copy\thbx}
escribir
\setbox\thhbx=\copy\thbx
para que la caja \thhbx
sea igual que \thbx
. De manera más general, puedes usar \unhcopy
para copiar solo el contenido de un cuadro, aunque no es necesario aquí: si lo usaras, tendrías que encerrar los resultados nuevamente en un cuadro, como:
\setbox\thhbx=\hbox{\unhcopy\thbx}
que en este caso es simplemente innecesario en comparación con \copy\thbx
.
Aquí hay un ejemplo que, con suerte, aclarará todo:
\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
El resto de esta respuesta es solo una elaboración del ejemplo anterior.
Supongamos que escribes
\setbox0=\hbox{ab}
Entonces el cuadro 0 es el siguiente:
\hbox(6.94444+0.0)x10.55559
.\tenrm a
.\tenrm b
Entonces, cuando lo uses en cajas más grandes, ya sea de forma destructiva \box
o no destructiva con \copy
, obtendrás la caja. Por ejemplo, si escribes
\setbox1=\hbox{xy\copy0 rs}
usted obtiene:
\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
donde hay una caja en lugar de \copy0
. De manera similar si escribes
\setbox2=\hbox{\copy0}
obtendrás la casilla 2
\hbox(6.94444+0.0)x10.55559
.\hbox(6.94444+0.0)x10.55559
..\tenrm a
..\tenrm b
similar a la situación en la pregunta.
Al copiar a otro cuadro, si no desea unadicionaladjunto exterior \hbox
, ¡entonces simplemente no lo escribas! Entonces si escribes
\setbox3=\copy0
obtendrás la casilla 3
\hbox(6.94444+0.0)x10.55559
.\tenrm a
.\tenrm b
Igual que la caja original 0.
En los casos en los que esto no se pueda utilizar, puede copiar solo el “contenido” (eliminando el otro cuadro) ya sea \unhbox
(de forma destructiva) o \unhcopy
(no destructiva). (Del mismo modo \unvbox
y \unvcopy
para cajas verticales). Así, por ejemplo:
\setbox4=\hbox{xy\unhcopy0 rs}
da
\hbox(6.94444+1.94444)x28.9723
.\tenrm x
.\tenrm y
.\tenrm a
.\tenrm b
.\tenrm r
.\tenrm s
y
\setbox5=\hbox{\unhcopy0}
da
\hbox(6.94444+0.0)x10.55559
.\tenrm a
.\tenrm b
nuevamente igual que la caja 0 original.