![如何确定“hrule”和下一个基线之间的空间?](https://linux22.com/image/462311/%E5%A6%82%E4%BD%95%E7%A1%AE%E5%AE%9A%E2%80%9Chrule%E2%80%9D%E5%92%8C%E4%B8%8B%E4%B8%80%E4%B8%AA%E5%9F%BA%E7%BA%BF%E4%B9%8B%E9%97%B4%E7%9A%84%E7%A9%BA%E9%97%B4%EF%BC%9F.png)
我想绘制一条线hrule
并精确控制线与线下文本基线之间的垂直空间。
在下图中,我们可以看到,在三个实例中,规则和基线之间的空间并不相同。
我怎样才能实现这个目标?
下面是演示该问题的 MWE。
\documentclass{article}
% see: https://tex.stackexchange.com/a/432196/8323
\newsavebox\textbox
\newcommand\showbaseline[1]{%
\leavevmode
\sbox\textbox{#1}%
\rlap{\rule{\wd\textbox}{.1pt}}%
\usebox\textbox
}
\begin{document}
\hrule
\showbaseline{A new line}
\vspace{1cm}
\hrule
\showbaseline{a new way}
\end{document}
答案1
很简单:TeX 不会\hrule
在下一个框(可能是段落的第一行,就像您的示例中的那样)之间添加垂直空格。
更准确地说,在\hrule
(这是一个垂直命令)之后,TeX 设置\prevdepth
为-1000pt
。
假设下一行不高于平常,则\prevdepth=0pt
在后面添加\hrule
即可。
\documentclass{article}
\newcommand{\test}[1]{%
\makebox[0pt][l]{%
\vtop{\hsize=5cm\parindent=0pt
\hrule\prevdepth=0pt
\makebox[0pt][l]{\vrule width 5cm height 0pt depth 0.1pt}#1
}%
}%
}
\begin{document}
\test{Généralités}
\medskip
\test{Électricité}
\medskip
\test{Optique}
\bigskip
%%% superimposed
\test{Généralités}%
\test{Électricité}%
\test{Optique}
\end{document}