`hrule` と次のベースライン間のスペースをどのように決定するのでしょうか?

`hrule` と次のベースライン間のスペースをどのように決定するのでしょうか?

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}

ここに画像の説明を入力してください

関連情報