这是什么意思:除了领导者之外,你不能在这里使用'\hrule'

这是什么意思:除了领导者之外,你不能在这里使用'\hrule'

我有以下示例,在纸张顶部画一条垂直线:

\def\makeheadline{
  \setbox0=\hbox to 0pt{\hskip-1in\hskip15cm \vrule depth 3cm \hss}
  \ht0=0pt \dp0=0pt
  \vbox to 0pt{\vskip-1in \box0 \vss}
  % orignal \makeheadline follows
  \vbox to 0pt{\vskip-22.5pt
    \line{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}
Hello World!
\bye

现在我想添加一条水平线。我尝试了以下方法:

\def\makeheadline{
  \setbox0=\hbox to 0pt{\hskip-1in\hskip15cm \vrule depth 3cm \hss}
  \ht0=0pt \dp0=0pt
  \setbox0=\hbox to 0pt{\hskip-1in \hrule width 15cm \hss}
  \ht0=0pt \dp0=0pt
  \vbox to 0pt{\vskip-1in \box0 \vss}
  % orignal \makeheadline follows
  \vbox to 0pt{\vskip-22.5pt
    \line{\vbox to 8.5pt{}\the\headline}\vss}\nointerlineskip}
Hello World!
\bye

但这会引发错误:

! You can't use `\hrule' here except with leaders.

有人能解释一下 hrule 出了什么问题吗?

答案1

原始\hrule垂直命令;当 TeX 遇到它时,它会切换到垂直模式,\par如果它处于(不受限制的)水平模式,则会发射。

正因为如此,它无法出现在里面\hbox

与此相反的,\vrule水平命令,因此如果在垂直模式下发现,它会触发开始一个段落。

就你的情况来说\vrule height 0.4pt width 15cm就可以。

相关内容