重叠水平盒子

重叠水平盒子

我怎样才能更改以下宏以获取 hbox 2 中与 hbox 1 中的文本一样宽的规则并删除参数 #2?

\def\m#1#2{
   \leavevmode
   \hbox to#2{
      \hbox to#2{\hfil\lower9pt\hbox{\it#1}\hfil}% hbox 1
      \hss
      \hbox to#2{\leaders\hrule\hfil}}}% hbox 2

仅使用 TeX 和纯 TeX 的 PS 解决方案是首选。

答案1

无需手动测量。\hrule自动延伸到周围垂直框的宽度(如果width没有给出参数):

\def\m#1{%
  \leavevmode
  \vtop{%
    \hrule
    \kern2pt % vertical space between rule and text
    \hbox{\it#1\/}%
  }%
}
abc\m{foo bar}def\m{man}ghi
\bye

结果

或者规则和文本基线之间的距离应该是恒定的。

\def\m#1{%
  \leavevmode
  \vtop{%
    \hrule
    \vbox to .7\baselineskip{%
      \vfill
      \hbox{\it#1\/}%
    }%
  }%
}
abc\m{foo}def\m{man}ghi\m{gpq}jkm
\bye

结果

评论:

  • 两个例子都在文本末尾添加了斜体更正。

相关内容