分割滚动文本

分割滚动文本

根据此处提供的视频: 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从段落顶部开始,将行放在一个框中,我们可以对这个框进行任何操作。在本例中,我们只是打印它。

在此处输入图片描述

相关内容