Geralmente é uma boa ideia inserir um pouco de cola no \vspace?

Geralmente é uma boa ideia inserir um pouco de cola no \vspace?

Já vi muitos posts como esse\parskip se estende mais do que o esperadoque use um pouco de cola dentro \vspace. Gostaria de saber se é uma boa ideia definir um novo \vspacecomando com um pouco de cola para substituir o normal em todos os casos. Algo como

\newcommand{\vspacewithglue}[3]{\vspace{#1\baselineskip plus #2\baselineskip minus #3\baselineskip }}

Tentei me convencer da utilidade de tal comando para casos simples, mas sem sucesso. Por exemplo, eu usei

some test line ffppp \vspacewithglue{2}{0}{0}\\
some test line ffppp \vspacewithglue{2}{-1}{1}\\
some test line ffppp \vspacewithglue{2}{1}{1}\\

sem qualquer diferença. Então estou um pouco confuso. Talvez existam alguns casos "especiais" (como o post acima) em que é realmente necessário ter tal comando, mas geralmente não há necessidade. Talvez seja melhor usar o conhecido comando \\[...ex]e deixar o TeX colocar um pouco de cola, se for realmente necessário.

Eu sei que esta pergunta é um pouco vaga ou talvez já tenha sido respondida. Sinta-se à vontade para editar/sugerir algo nos comentários.

Responder1

Quase nunca é uma boa ideia ter cola extensível entre as linhas de um parágrafo, como na pergunta. Um parágrafo deve ser definido como um bloco consistente. Você pode ou não querer que a cola entre as unidades de exibição, como parágrafos, listas, etc., seja extensível, dependendo do design do documento. Especialmente nos modos de duas colunas, a cola extensível entre os parágrafos pode ser perturbadora, pois o espaço do parágrafo nas duas colunas será diferente e as linhas de base do texto não serão alinhadas.

Além disso, se, como na pergunta que você usa \vspacedentro de um parágrafo, o efeito for bem definido, mas um pouco estranho: o espaço não é adicionado no ponto do \vspacecomando, mas adicionado mais tarde, após o parágrafo ter sido dividido em linhas, após a linha em que o vspacefoi adicionado.

some test line ffppp \vspace{10pt}\\

é o mesmo que

some test  \vspace{10pt}line ffppp\\

Se, como é comum nas classes de documentos de artigos, \raggedbottomestiver em vigor, fila cola será adicionada no final da página, pois é infinitamente extensível, qualquer cola de estiramento finito adicionada não esticaria e apenas o componente de comprimento natural seria usado.

Em algumas classes de documentos (incluindo as padrão), um pequeno trecho entre parágrafos pode ser útil para ajudar na quebra de página (o látex define o padrão \parskipcomo 0pt plus 1pt), mas normalmente esta deve ser uma configuração para todo o documento, não ajustada manualmente em cada caso.

Note que se você precisar esticar uma quebra de linha em alguma circunstância especial você não precisa de um novo comando que você possa usar\\[5pt plus 5pt]

Responder2

Seu comando funciona conforme o esperado, mas como David já escreveu, é uma péssima ideia usar esse espaço extensível dentro de um parágrafo.

\documentclass[12pt]{book}
\usepackage{lipsum}

\newcommand{\vspacewithglue}[3]{\vspace{#1\baselineskip plus #2\baselineskip minus #3\baselineskip }}
\textheight=10cm
\begin{document}
xxxxx

some test line ffppp \\
some test line ffppp \vspacewithglue{0}{1}{1}\\
some test line ffppp \\


xxxxx
\pagebreak %to force the page to stretch

xxxx
\end{document}

insira a descrição da imagem aqui

informação relacionada