.png)
Wie kann ich den vertikalen Abstand zwischen dem Text und den Zeilen festlegen? Im folgenden MWE ist der vertikale Abstand zwischen dem Text und der Zeile darunter viel größer als der vertikale Abstand zwischen dem Text und der Zeile darüber. Ich möchte, dass diese beiden vertikalen Abstände gleich sind, und ich möchte diesem vertikalen Abstand einen Wert zuweisen können.
\documentclass[12pt]{report}
\begin{document}
\rule{6cm}{0.4pt}\par
\textbf{\large TITLE}\par
\rule{8cm}{0.4pt}
\end{document}
Antwort1
Die Linie wird an der Grundlinie des Textes gezeichnet. Die untere Linie befindet sich daher an der Grundlinie der nächsten Textzeile.
Sie müssen also die untere Linie um einen geeigneten Betrag anheben. Dies kann durch \vspace
Hinzufügen der Tiefe zu erfolgen \rule
.
\documentclass[12pt]{report}
\begin{document}
\rule{6cm}{0.4pt}Some\par
\textbf{\large TITLE}\par%\vspace{-0.66\baselineskip}
\rule[0.66\baselineskip]{8cm}{0.4pt}Some
\end{document}
Antwort2
Ich habe mich mit diesem Konzept auseinandergesetzt und habe eine Lösung, die dies ziemlich gut veranschaulicht:
Ein dynamischer Ansatz (relative Schriftgröße)
Wenn Sie erkennen, dass nach jeder neuen Zeile das Zeichnen einer Linie an der Basis beginnt, wo ein Buchstabe wäre (die Grundlinie einer Glyphe), heben Sie die Linie unter den Text an. Wie viel? user11232 verwendet 60 % des Grundliniensprungs. Eine andere Möglichkeit wäre, die Höhe eines Großbuchstabens direkt zu verwenden, was beispielsweise \fontcharht\font"004D
die Höhe eines M in Punkten ergibt. Die \baselineskip
wird von der Klasse durch festgelegt \@setfontsize
, sieheIst \baselineskip automatisch definiert?.
Wenn Sie mit dem optischen Ergebnis beispielsweise aufgrund der Buchstabenbreite und -tiefe nicht zufrieden sind, können Sie es auch auf 70 % der Höhe eines Großbuchstaben einstellen (fügen Sie einfach .7
vor \fontcharht
) ein.
Erster Ansatz
Zeichnen Sie eine Linie über und unter dem Text und sehen Sie, was passiert. Das Ergebnis ist optisch nicht ansprechend.
Vollständiger Code
\documentclass{article}
\usepackage{fontspec}% xelatex
% Note that you can remove all the \noindent occurrences
% with \setlength\parindent{0pt} which sets empty indent box
% to 0pt globally
\newcommand\linedatWRONG[1]{% comment out this line-ending
\leavevmode\par\noindent\rule{4cm}{0.4pt}gello\par\noindent%
#1\rule{1cm}{0.4pt}\par\noindent%
\rule{4cm}{0.4pt}gello\par%
}
\newcommand\linedatRIGHT[1]{% comment out this line-ending
\leavevmode\par\noindent\rule{4cm}{0.4pt}gello\par\noindent%
#1\rule{1cm}{0.4pt}\par\noindent%
\rule[\fontcharht\font`M]{4cm}{0.4pt}gello\par% raise line up by the height of M in the current font
}
\newdimen\Mheight % for demo only
\Mheight=\fontcharht\font`M% for demo only
\begin{document}
\noindent The \texttt{\textbackslash linedatWRONG} version does indeed have the correct
alignment according to TeX's rules of baseline skips. I used the word
{\char"201C}gello{\char"201D} to demonstrate that the lines are at the baselines.
\linedatWRONG{Hello gello}% purposely used glyph with depth "g"
\vspace{2\baselineskip}
\noindent In the \texttt{\textbackslash linedatRIGHT}, we raise the bottom line up by the height of an upper case {\char"201C}M{\char"201D}
in the current font, which happens to be \the\Mheight. Programming this dynamically ensures
that the value of M will be ajusted to the current scope's font.
\linedatRIGHT{Hello gello}% purposely used glyph with depth "g"
\end{document}
Anmerkungen
- VorbehaltDies funktioniert, wenn der Grundliniensprung geringfügig größer ist als die Tiefe+Höhe eines Zeichens. Wenn Sie einen besonders großen Grundliniensprung haben, kann die Erhöhung der unteren Linie um die Tiefe+Höhe eines Zeichens im Vergleich zum Grundliniensprung unbedeutend erscheinen.
- Die Artikelklasse gibt an, dass der Schriftgröße 10pt ( ) ein Grundliniensprung
\@xpt
von 12pt () zugeordnet ist .\@xiipt
- Eine weitere Möglichkeit ist die Verwendung der Linientiefe