
Ich möchte eine Linie zeichnen hrule
und den vertikalen Raum zwischen der Linie und der Grundlinie des Textes unter der Linie genau kontrollieren können.
Auf dem folgenden Bild ist zu erkennen, dass der Abstand zwischen Lineal und Grundlinie in den drei Fällen nicht gleich ist.
Wie kann ich das erreichen?
Hier ist ein MWE, das das Problem veranschaulicht.
\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}
Antwort1
Es ist ganz einfach: TeX fügt keinen vertikalen Abstand zwischen \hrule
und dem nächsten Feld ein (das wie in Ihrem Beispiel die erste Zeile eines Absatzes sein könnte).
Genauer gesagt \hrule
setzt TeX nach (was ein vertikaler Befehl ist) \prevdepth
auf -1000pt
.
Unter der Annahme, dass die nächste Zeile nicht höher als üblich ist, würde das Hinzufügen \prevdepth=0pt
danach \hrule
genügen.
\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}