Um \vspace colocado no final de um parágrafo é uma codificação LaTeX incorreta?

Um \vspace colocado no final de um parágrafo é uma codificação LaTeX incorreta?

Depois de um comentário de@DavidCarlisleem umperguntasobre \vspaceo uso tentei descobrir se, quando e por que um \vspacecomando deve ser evitado para ser adicionado como último comando de um parágrafo para adicionar ou remover espaço entre parágrafos, como:

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

This is the text of the next paragraph.

@DavidCarlisle respondeu em um comentário meu que:

"a linha em branco deve estar antes do vspace. Usar o vspace no modo horizontal é bem definido, mas estranho, quase sempre você deseja evitar isso."

Então, a "correção" proposta (até onde entendi) é:

This is the text of a paragraph here.

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

Mas tentei muitos exemplos e não encontrei nenhum que desse um resultado inesperado (em ordem de espaçamento vertical, mas geral também). Além disso, em meus primeiros passos no LaTeX eu estava usando este estilo:

This is the text of a paragraph here.

\vspace{1cm}

This is the text of the next paragraph.

isso agora parece horrível para mim, mas poderia ser considerado uma codificação LaTeX melhor do meu primeiro exemplo (o estilo que estou usando atualmente).

Então, minha pergunta é:

  1. Devo evitar o estilo de codificação do primeiro exemplo por algum motivo?
  2. Existe algum exemplo de que meu estilo irá falhar no espaçamento esperado? (ou isso é apenas uma questão de estilo de código)

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}

e produção de MWE:

insira a descrição da imagem aqui

Responder1

se você usar \vspaceno final de um parágrafo, provavelmente fornecerá o mesmo resultado visual que usá-lo na lista vertical a seguir, mas por meio de um caminho de código totalmente diferente e mais envolvente. Se você usar o vspace no vmode, ele apenas adicionará diretamente o nó de cola à lista vertical atual. Se você usá-lo no modo h, a cola vertical será adicionada a um nó vadjust na lista horizontal atual que irá, após a quebra de linha, migrar para a lista vertical atual e ser reinserida na lista vertical após a linha que continha o vadjust nó.

Você quase sempre deve preceder \vspacepor uma linha em branco ou \par.

Na prática, a diferença não deve ser um problema, pois quase nunca deve haver comandos explícitos de espaço vertical no documento. Se houver, geralmente é um sinal de que o espaçamento global definido pela classe não é adequado para o documento atual e é melhor corrigir isso na fonte em vez de ajustar o espaçamento em cada parágrafo individual.

informação relacionada