PlainTeX 中的双列宏

PlainTeX 中的双列宏

在阅读 TeXbook 时,我开始好奇地想制作自己的双列宏。我曾尝试使用 \vsplit 和方框来分割内容,但迄今为止没有成功。使用 LaTeX 包也是一个可行的选择,但就我而言,宏的目的是学习低级组件,而不是针对某个特定项目。

我还不是一名 TeXnician,因此如果能提供任何有关 \doublecolumn 宏(非输出例程)的例子我将非常感谢。

答案1

以下是快速分栏的基本知识:

\newdimen\gutter \gutter = 5mm % space between the columns
\long\def \doublecolumn #1{{%
    % set the material with a reduced hsize
    \setbox0 = \vbox{\hsize = \dimexpr (\hsize - \gutter) / 2 \break #1}
    % set topskip on first column (a trick; uses the \break above)
    \splittopskip=\baselineskip
    \setbox4 = \vsplit0 to 0pt
    % split the column (add baselineskip/2 to encourage the first column
    % to be larger than the second when the number of lines is odd)
    \setbox2 = \vsplit0 to \dimexpr (\ht0 + \baselineskip) / 2
    % set the columns (uses vtop for alignment on first baseline)
    \hbox to\hsize{\vtop{\unvbox2}\hss\vtop{\unvbox0}}}}

\doublecolumn { lorem ipsum etc ... }

对于更通用的分栏,您将需要输出例程来逐步添加到要分栏的列表中,使用\pagegoal\pagetotal来确定每页要拆分多少材料。eplain如上所述,宏可以完成此操作,它们是学习此主题的一个很好的起点。

相关内容