
hrule
線を描き、その線とその下のテキストのベースラインとの間の垂直方向のスペースを正確に制御したいと思います。
次の画像では、ルールとベースラインの間のスペースが 3 つのインスタンスで同じではないことがわかります。
どうすればそれを達成できるでしょうか?
この問題を示す 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}