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:
- modo horizontal e modo horizontal restrito,
- modo vertical e modo vertical interno e
- 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
\vskipinicia uma nova linha? Este é um efeito colateral do que Charles chama de " modo vertical? " - @Geoff:
\vskipiniciar 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}
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 .