\ vspace vs. \ vskip [duplicado]

Esta pergunta já tem respostas aqui :

Comentários

  • Votei para fechar esta pergunta porque @egreg tem forneceu uma resposta canônica para a " pergunta originalmente feita em tex.sx ".
  • Ok, mas esta pergunta foi perguntado primeiro.

Resposta

Em qualquer ponto de seu processamento, o TeX está em algum modo. Existem seis modos, divididos em três categorias:

  1. modo horizontal e modo horizontal restrito,
  2. modo vertical e modo vertical interno e
  3. matemática modo e modo de exibição de matemática.

Quando não está escrevendo matemática, TeX está no modo horizontal ou vertical. O modo horizontal é normalmente usado para fazer linhas de texto; o modo vertical é normalmente usado para empilhar as linhas de um parágrafo umas sobre as outras.

\vskip insere uma cola em uma lista vertical das linhas. Portanto \vskip quebra o modo horizontal e vai para o modo vertical.

\vspace pode funcionar nos modos horizontal e vertical modo. No modo horizontal, \vspace 1mm é equivalente a \vadjust{\vskip 1mm \vskip 0pt} e insere um espaço após a linha atual. No modo vertical, \vspace 1mm é equivalente a \vskip 1mm \vskip 0pt

\vskip 0pt é necessário para que \removelastskip não possa remover seu espaço vertical.

Definição completa:

\vspace : -> \@ifstar \@vspacer \@vspace 

Sem * case (\vspace 1mm):

\@vspace: #1->\ifvmode \vskip #1 \vskip \z@skip \else \@bsphack \vadjust {\@restore par \vskip #1 \vskip \z@skip }\@esphack \fi 

Observação \z@skip igual a 0pt, \@bsphack é necessário para economizar grande espaço horizontal após o período. \@esphack é necessário para retornar configurações de grande espaço.

Com * case (\vspace* 1mm):

\@vspacer:#1->\ifvmode \dimen@ \prevdepth \hrule \@height \z@ \nobreak \vskip #1 \v skip \z@skip \prevdepth \dimen@ \else \@bsphack \vadjust {\@restorepar \hrule @height \z@ \nobreak \vskip #1 \vskip \z@skip }\@esphack \fi 

Comentários

  • Portanto, se forem usados fora de um parágrafo (ou seja, no modo vertical), a saída seria exatamente a mesma?

Resposta

\vspace é um comando LaTeX e \vskip é um comando TeX. Ambos podem ser usados em LaTeX. Quando \vspace é usado dentro de um parágrafo, ele insere um espaço após a linha atual. Mas se \vskip for usado dentro de um parágrafo, ele termina o parágrafo e insere o espaço imediatamente.

Comentários

  • Por que \vskip inicia uma nova linha? Este é um efeito colateral do que Charles chama de " modo vertical? "
  • @Geoff: \vskip iniciar uma nova linha por design. vskip é um salto vertical. Donald Knuth decidiu que sim.

Resposta

A diferença por exemplo:

\documentclass[preview, border=7mm]{standalone} \usepackage{xcolor} \usepackage{blindtext} \begin{document} \textcolor{red}{Line with \texttt{vspace} :} \vspace{1cm} \blindtext \hrulefill \textcolor{red}{Line with \texttt{vskip} :} \vskip 1cm \blindtext \end{document} 

insira a descrição da imagem aqui

Resposta

Exatamente como Rob diz; para reformular, \vskip deve ser usado quando você está no modo vertical ou deseja iniciar a configuração e \vspace faz sentido dentro de um parágrafo.

A (uma?) implementação de \vspace é discutida em Eijkhout 1990, TUGboat 11 (4 ), p618 .

Deixe uma resposta

O seu endereço de email não será publicado. Campos obrigatórios marcados com *