Как определить расстояние между `hrule` и следующей базовой линией?

Как определить расстояние между `hrule` и следующей базовой линией?

Мне бы хотелось нарисовать 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}

введите описание изображения здесь

Связанный контент