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
\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}
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 .