Ist ein \vspace am Ende eines Absatzes eine schlechte LaTeX-Codierung?

Ist ein \vspace am Ende eines Absatzes eine schlechte LaTeX-Codierung?

Nach einem Kommentar von@DavidCarlislein einemFrageÜber \vspacedie Verwendung habe ich versucht herauszufinden, ob, wann und warum es \vspacevermieden werden sollte, einen Befehl als letzten Befehl eines Absatzes hinzuzufügen, um Leerzeichen zwischen Absätzen hinzuzufügen oder zu entfernen, wie:

This is the text of a paragraph here.\vspace{1cm}

This is the text of the next paragraph.

@DavidCarlisle antwortete in einem meiner Kommentare:

„Die Leerzeile sollte vor dem vspace stehen. Die Verwendung von vspace im horizontalen Modus ist gut definiert, aber seltsam, man möchte das fast immer vermeiden.“

Die vorgeschlagene „Korrektur“ (soweit ich das verstehe) lautet also:

This is the text of a paragraph here.

\vspace{1cm}This is the text of the next paragraph.

Aber ich habe viele Beispiele ausprobiert und keins gefunden, das eine unerwartete Ausgabe lieferte (in der Reihenfolge der vertikalen Abstände, aber auch allgemein). Außerdem habe ich in meinen ersten LaTeX-Schritten diesen Stil verwendet:

This is the text of a paragraph here.

\vspace{1cm}

This is the text of the next paragraph.

das erscheint mir jetzt schrecklich, könnte aber im Vergleich zu meinem ersten Beispiel (dem Stil, den ich derzeit verwende) als bessere LaTeX-Codierung betrachtet werden.

Meine Frage ist also:

  1. Sollte ich aus irgendeinem Grund den Codierungsstil des ersten Beispiels vermeiden?
  2. Gibt es ein Beispiel dafür, dass mein Stil bei der erwarteten Abstände nicht eingehalten wird? (oder geht es hier nur um den Code-Stil)

MWE:

\documentclass{article}
\usepackage{parskip}
\usepackage{tikz}
\usetikzlibrary{calc}
\usetikzlibrary{positioning}
\setlength{\parskip}{1cm plus 0cm minus 0cm}
\setlength{\parindent}{0pt}

\newcommand{\expectedVSkip}[2][2.2cm]{\begin{tikzpicture}[overlay,remember picture,baseline=0pt]\node[use as bounding box,inner sep=0,outer sep=0] at (0,0) (A){\vphantom{\texttt{p}}};\draw[->,blue] (A.south)--node[midway,right]{$#2$}($(A.south)+(0,-{#2})$);\draw[->,thin,blue] ($(A.south)+(-{#1},0)$)--($(A.south)+(0,0)$);\draw[->,thin,blue] ($(A.south)+(-{#1},-{#2})$)--($(A.south)+(0,-{#2})$);\end{tikzpicture}}

\begin{document}

This is the first paragraph that will have a space of the \verb|\parskip|$=1\;cm$ length from the following command since no \verb|\vspace|\expectedVSkip{1cm} command is added here.

This is the second paragraph that will have a space of $0.5\;cm$ from the folowing paragraph since a \verb|\vspace{-0.5cm}|\expectedVSkip{0.5cm} command is added just in its end.\vspace{-0.5cm}

This\vspace{2cm} is the third paragraph with a \verb|\vspace{2cm}|\expectedVSkip{2cm} command before the end of its first line. The paragpaph have enough text following, in order to let us discover if the \verb|\vspace| will act from the point of the first linebreak or from the end of this paragraph (Since the command is placed in its first line, the command is supposed to act just at the place that \LaTeX{} will deside to break the line and the paragraph will be an ugly broken paragraph with a strange added vertical space of exactly $2\;cm$). After this paragraph the following paragraph will be in distance of 2cm since an additional (just one) $cm$ have been added through a \verb|\vspace{1cm}|\expectedVSkip{2cm} to the \verb|\parskip|.\vspace{1cm}

This is just the fourth paragraph.


\end{document}

und Ausgabe von MWE:

Bildbeschreibung hier eingeben

Antwort1

Wenn Sie es \vspaceam Ende eines Absatzes verwenden, ergibt es wahrscheinlich dasselbe visuelle Ergebnis wie bei Verwendung in der folgenden vertikalen Liste, jedoch über einen völlig anderen und komplizierteren Codepfad. Wenn Sie vspace im vmode verwenden, fügt es den Verbindungsknoten einfach direkt zur aktuellen vertikalen Liste hinzu. Wenn Sie es im h-Modus verwenden, wird der vertikale Verbindungsknoten zu einem vadjust-Knoten in der aktuellen horizontalen Liste hinzugefügt, der nach dem Zeilenumbruch zur aktuellen vertikalen Liste migriert und nach der Zeile, die den vadjust-Knoten enthielt, erneut in die vertikale Liste eingefügt wird.

Fast immer sollte \vspaceeine Leerzeile oder eins vorangestellt werden \par.

In der Praxis sollte der Unterschied kein Problem darstellen, da es im Dokument fast nie explizite Befehle für vertikalen Abstand geben sollte. Wenn es welche gibt, ist dies normalerweise ein Zeichen dafür, dass der von der Klasse festgelegte globale Abstand nicht für das aktuelle Dokument geeignet ist. Es ist dann besser, dies an der Quelle zu beheben, als den Abstand in jedem einzelnen Absatz anzupassen.

verwandte Informationen