Inserção de espaço vertical em diferentes contextos

Inserção de espaço vertical em diferentes contextos

Este é meu primeiro post, espero que não seja muito redundante com o material existente. Tendo usado o Latex há algum tempo, mas sempre com uma abordagem muito utilitária, sempre fico confuso com o comando \vspace, que considero um tanto contra-intuitivo.

No exemplo mínimo a seguir, estou procurando comandos para adicionar manualmente espaços verticais em branco (sim, eu sei que é feio!) nos vários locais indicados pelas macros 'skipspace' comentadas.

\documentclass[a4paper,11pt]{article}
\newlength{\addspace}
\setlength{\addspace}{0mm} % play easily on the inserted length
\begin{document}

First paragraph~: starts off with some very interesting text,
until we encounter a first equation~:
%\skipspace1{\addspace}
$$
x=5,
$$
%\skipspace2{\addspace}
after what the paragraph continues, with some even more interesting
text, and finally ends with another equation~:
$$
x=5.
$$
%\skipspace3{\addspace}

Second paragraph~: we are going to encounter a line break
(don't ask why I like to have these from time to time).\\
%\skipspace4{\addspace}
This is the same paragraph continuing after the break.
%\skipspace5{\addspace}

Third paragraph~: whatever. As far as I'm concerned, the example is over,
but multiple-line paragraphs definitely look better.
\end{document}

No que diz respeito à minha experiência, os locais "1" e "5" são bem tratados pelo \vspace, enquanto os locais "2", "3" e "4" exigem alguns ajustes sempre (porque \vspace não funciona intuitivamente no início de uma nova linha). No momento, eu uso um hack feio baseado em uma linha com um único espaço em branco:

Para os casos 2 e 4, funciona o seguinte:

\ \vspace{\addspace}\\[-\baselineskip]

Para o caso 3, o seguinte funciona:

\ \vspace{\addspace}\\[-2\baselineskip]

Agora minha pergunta é: existe uma macro geral (mais bonita que o meu hack) que cuidará conjuntamente dos casos "2", "3 e "4"? Ou melhor ainda (só sonhando), existe uma macro geral que poderia lidar diretamente com todos os 5 casos?

Agradecemos antecipadamente pelo seu tempo e explicações,

Howard

EDIT: Você pode encontrar minha resposta mais abaixo, graças à resposta de David Carlisle

Responder1

Se \vspacefor usado no modo vertical, o espaço será adicionado nesse ponto. Se for adicionado no modo horizontal, será adiado até que o parágrafo seja dividido em linhas e então o espaço será adicionado após a linha que continha o nó que transportava o espaço adiado.

O comportamento no modo horizontal é justificável, mas raramente desejado, então a regra simples é sempre deixar uma linha em branco antes \vspace.

A outra regra a ser observada é que você nunca deve deixar uma linha em branco antes de exibir matemática (que não deve ser marcada com $$no látex, mas o mesmo se aplica a \[).


\ \vspace{\addspace}\\[-2\baselineskip]

é uma construção muito bizarra: se usado no modo vertical, ele iniciará um parágrafo com um recuo de parágrafo, então um espaço de palavra forçado a partir de \então uma quebra forçada de \\Se uma linha em branco seguir a linha após a quebra ficará vazia e gerará um preenchimento insuficiente aviso hbox. Então o parágrafo terminará e \addspaceserá adicionado após a primeira linha branca. Assim você irá gerar duas hboxes brancas que não são descartadas em uma quebra de página e possuem \addspace - 2\baselineskipespaço entre elas. Isto será semelhante a um espaço de, \addspacemas a interação com o texto acima e abaixo será diferente e o comportamento em uma quebra de página será completamente errado, permitindo uma quebra de página entre as duas linhas brancas e produzindo uma linha branca anômala no topo do próxima página.

Responder2

Graças à resposta de David Carlisle, percebi que o "Caso 3" (inserir espaço entre uma equação e o parágrafo seguinte) também é feito facilmente com \vspace, exceto que você precisa inseri-lo entre duas linhas em branco. Então, se eu resumir minha solução atual, será ~:

\documentclass[a4paper,11pt]{article}
\newlength{\addspace}
\setlength{\addspace}{0mm} % play easily on the inserted length

\newcommand{\myvspace}[1]{\ \vspace{#1}\\[-baselineskip]} % home-made ugly macro

\begin{document}

First paragraph~: starts off with some very interesting text,
until we encounter a first equation~:
\vspace{\addspace} % CASE 1
\[
x=5,
\]
\myvspace{\addspace} % CASE 2
after what the paragraph continues, with some even more interesting
text, and finally ends with another equation~:
\[
x=5.
\]

\vspace{\addspace} % CASE 3... blank lines above and below are important to enter vertical mode

Second paragraph~: we are going to encounter a line break
(don't ask why I like to have these from time to time).\\
\myvspace{\addspace} % CASE 4
This is the same paragraph continuing after the break.

\vspace{\addspace} % CASE 5

Third paragraph~: whatever.
\end{document}

Então parece que posso fazer tudo o que quero com \vspace (para os casos 1,3,5) e minha feia macro caseira \myvspace (para os casos 2 e 4)... e está mais ou menos ok. Obrigado a todos, e especialmente a David por me apontar a diferença entre o modo horizontal e vertical.

Howard

informação relacionada