根据此处提供的视频: http://www.youtube.com/watch?v=vkBCeOBbAmM 我尝试理解以下代码的作用
\def\text{\setbox\galley=\vbox\bgroup
\hsize= 5cm
\hrule}
\makeatletter
\def\endtext{\vskip-\prevdepth
\vfil\egroup
\setbox0=\vsplit\galley to\z@}
\makeatother
\def\lines#1{\vsplit\galley
to #1\baselineskip}
不幸的是,我没有成功。在视频中,他谈到了“浮动、滚动文本”,你可以将其切成几段,然后将不同的部分放在页面上。但我不明白如何使用前面的代码行来实现这一点。我从编写宏开始,所以可能是我不明白,因为我不明白这些宏下放置的不同命令的效果。
我试过
\text blablablabla \endtext
检查效果,但页面根本不显示任何文本。
答案1
这是一个有效的例子:
\input plipsum
\newbox\galley
\def\text{\setbox\galley=\vbox\bgroup
\hsize=10cm \hrule height 0pt}
\catcode`\@=11
\def\endtext{\vskip-\prevdepth
\vfil\egroup
\setbox0=\vsplit\galley to \z@}
\catcode`\@=12
\def\lines#1{\vsplit\galley to #1\baselineskip}
\text
\lipsum 1,3
\endtext
\noindent{\bf Four lines:}\par\medskip
\setbox0=\lines{4}\box0
\bigskip
\noindent{\bf Five lines:}\par\medskip
\setbox0=\lines{5}\box0
\bye
大文本远不止九行。我们将其集中在一个中\vbox
,然后切断初始(不可见)规则。使用\lines{
X}
我们可以砍X从段落顶部开始,将行放在一个框中,我们可以对这个框进行任何操作。在本例中,我们只是打印它。