Является ли \vspace в конце абзаца плохой кодировкой LaTeX?

Является ли \vspace в конце абзаца плохой кодировкой LaTeX?

После комментария@ДэвидКарлайлввопрособ \vspaceиспользовании Я пытался выяснить, следует ли, когда и почему \vspaceизбегать добавления команды в качестве последней команды абзаца для добавления или удаления пробела между абзацами, например:

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

This is the text of the next paragraph.

@DavidCarlisle ответил в моем комментарии, что:

«Пустая строка должна быть перед vspace. Использование vspace в горизонтальном режиме хорошо определено, но странно, почти всегда этого хочется избежать».

Итак, предлагаемое «исправление» (насколько я понимаю) таково:

This is the text of a paragraph here.

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

Но я перепробовал много примеров и не нашел ни одного, который бы дал неожиданный результат (в порядке вертикального интервала, но и общий тоже). Кроме того, в моих первых шагах LaTeX я использовал этот стиль:

This is the text of a paragraph here.

\vspace{1cm}

This is the text of the next paragraph.

Сейчас это кажется мне ужасным, но это можно считать лучшим кодированием LaTeX из моего первого примера (стиль, который я сейчас использую).

Итак, мой вопрос:

  1. Стоит ли мне по какой-то причине избегать стиля кодирования первого примера?
  2. Есть ли пример того, что мой стиль не будет соответствовать ожидаемому интервалу? (или это просто касается стиля кода)

МВЭ:

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

и выход МВЭ:

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

решение1

если вы используете \vspaceв конце абзаца, это, вероятно, даст тот же визуальный результат, что и использование его в следующем вертикальном списке, но через совершенно другой и более сложный путь кода. Если вы используете vspace в vmode, это просто напрямую добавляет узел склеивания в текущий вертикальный список. Если вы используете его в режиме h, то вертикальный узел склеивания добавляется к узлу vadjust в текущем горизонтальном списке, который после переноса строк переместится в текущий вертикальный список и будет повторно вставлен в вертикальный список после строки, содержащей узел vadjust.

Почти всегда следует начинать \vspaceс пустой строки или \par.

На практике разница не должна быть проблемой, так как в документе почти никогда не должно быть явных команд вертикального пространства. Если они есть, это обычно признак того, что глобальный интервал, установленный классом, не подходит для текущего документа, и лучше исправить это в источнике, а не корректировать интервал в каждом отдельном абзаце.

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