
我想畫一個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
after\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}