Como determinar o espaço entre um `hrule` e a próxima linha de base?

Como determinar o espaço entre um `hrule` e a próxima linha de base?

Gostaria de desenhar hrulee ter um controle preciso do espaço vertical entre a linha e a linha de base do texto abaixo da linha.

Na imagem a seguir, pode-se observar que o espaço entre a regra e a linha de base não é o mesmo nas três instâncias.

insira a descrição da imagem aqui

Como posso conseguir isso?

Aqui está um MWE que demonstra o problema.

\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}

insira a descrição da imagem aqui

Responder1

É simples: o TeX não adiciona espaço vertical entre \hrulea próxima caixa (que pode ser a primeira linha de um parágrafo, como no seu exemplo).

Mais precisamente, depois \hrule(que é um comando vertical), o TeX é definido \prevdepthcomo -1000pt.

Supondo que a próxima linha não seja mais alta do que o normal, adicionar \prevdepth=0ptdepois \hruleseria suficiente.

\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}

insira a descrição da imagem aqui

informação relacionada