我想知道是否有可能实现窥视方法检查 a 的头部\vbox
而不改变 的内容\vbox
。可以使用\copy
原始 的a 进行暴力破解\vbox
,但我正在寻找一种不那么暴力的方法。
使用以下代码,\bigbox
构造 a ,将其头部拆分为\partbox
,最后将所有内容重新组合为\bigbox
。\testmybox
用于显示盒子。
\documentclass{article}
\usepackage{blindtext}
\def\testmybox#1{%
\par%
{\fboxsep0pt\fbox{\copy#1}}\par%
\edef\myboxheight{\the\dimexpr\ht#1+\dp#1\relax}%
Total height: \myboxheight%
}
\begin{document}
\newbox\bigbox
\newbox\partbox
\setbox\bigbox=\vbox{\hsize 11cm%
\footnotesize\blindtext[1]}
\textbf{Original box}\par
\testmybox\bigbox
%\splittopskip=0pt
%\splitmaxdepth=0pt
\setbox\partbox=\vsplit\bigbox to 45pt%
\textbf{Splitted box:}\par
\testmybox\partbox
\textbf{Rest:}\par
\testmybox\bigbox
\setbox\bigbox=\vbox%
{%
\unvbox\partbox
\unvbox\bigbox
}
\textbf{Reassembled box:}
\testmybox\bigbox
\end{document}
问题在于重新组装的盒子与原始盒子并不完全相同。这里,两个部分之间的空间太大。这个空间取决于值\splittopskip
,但我不知道如何设置这个值以使其适用于所有可以想到的情况。
是否可以重新组装原盒子而不产生偏差?
答案1
由于没有人回答或评论这个问题,我认为没有答案。但后来我在 e-TeX 中找到了\splitdiscards
和\savingvdiscards
,它们似乎正是缺少的命令。有了它,答案似乎非常简单 - 如果我之前知道这一点,就可以节省我很多时间:
\documentclass{article}
\usepackage{blindtext}
\def\testmybox#1{%
\par%
{\fboxsep0pt\fbox{\copy#1}}\par%
\edef\myboxheight{\the\dimexpr\ht#1+\dp#1\relax}%
Total height: \myboxheight%
}
\begin{document}
\newbox\bigbox
\newbox\partbox
\setbox\bigbox=\vbox{\hsize 11cm%
\footnotesize\blindtext[1]}
\textbf{Original box}\par
\testmybox\bigbox
\splittopskip=0pt
%\splitmaxdepth=0pt
\savingvdiscards=1
\setbox\partbox=\vsplit\bigbox to 45pt%
\textbf{Splitted box:}\par
\testmybox\partbox
\textbf{Rest:}\par
\testmybox\bigbox
\setbox\bigbox=\vbox%
{%
\unvbox\partbox%
\splitdiscards%
\unvbox\bigbox%
}
\textbf{Reassembled box:}
\testmybox\bigbox
\end{document}