![重叠水平盒子](https://linux22.com/image/292152/%E9%87%8D%E5%8F%A0%E6%B0%B4%E5%B9%B3%E7%9B%92%E5%AD%90.png)
我怎样才能更改以下宏以获取 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
评论:
- 两个例子都在文本末尾添加了斜体更正。