Commentaires
- Jai voté pour fermer cette question car @egreg a a fourni une réponse canonique à la " question posée à lorigine à tex.sx ".
- Daccord, mais cette question a été posée en premier.
Réponse
À tout moment de son traitement, TeX est dans un certain mode. Il existe six modes, répartis en trois catégories:
- mode horizontal et mode horizontal restreint,
- mode vertical et mode vertical interne, et
- math mode et afficher le mode mathématique.
Lorsquil ne compose pas de mathématiques, TeX est en mode horizontal ou vertical. Le mode horizontal est généralement utilisé pour créer des lignes de texte; le mode vertical est généralement utilisé pour empiler les lignes dun paragraphe les unes sur les autres.
\vskip
insère une colle dans une liste verticale des lignes. Par conséquent \vskip
casse le mode horizontal et passe en mode vertical.
\vspace
peut fonctionner en mode horizontal et vertical mode. En mode horizontal, \vspace 1mm
équivaut à \vadjust{\vskip 1mm \vskip 0pt}
et insère un espace après la ligne courante. En mode vertical, \vspace 1mm
équivaut à \vskip 1mm \vskip 0pt
\vskip 0pt
est nécessaire pour que \removelastskip
ne puisse pas supprimer votre espace vertical.
Définition complète:
\vspace : -> \@ifstar \@vspacer \@vspace
Sans *
cas (\vspace 1mm
):
\@vspace: #1->\ifvmode \vskip #1 \vskip \z@skip \else \@bsphack \vadjust {\@restore par \vskip #1 \vskip \z@skip }\@esphack \fi
Remarque \z@skip
égal à 0pt
, \@bsphack
est nécessaire pour économiser un grand espace horizontal après la période. \@esphack
est nécessaire pour renvoyer les paramètres de grand espace.
Avec *
cas (\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
Commentaires
- Donc, sils sont utilisés en dehors dun paragraphe (cest-à-dire en mode vertical), alors la sortie serait exactement la même?
Réponse
\vspace
est une commande LaTeX et \vskip
est une commande TeX. Les deux peuvent être utilisés dans LaTeX. Lorsque \vspace
est utilisé dans un paragraphe, il insère un espace après la ligne courante. Mais si \vskip
est utilisé dans un paragraphe, il termine le paragraphe et insère lespace immédiatement.
Commentaires
- Pourquoi
\vskip
commence-t-il une nouvelle ligne? Est-ce un effet secondaire de ce que Charles appelle le " mode vertical? " - @Geoff:
\vskip
commence une nouvelle ligne par conception.vskip
est un saut vertical. Donald Knuth a décidé ainsi.
Réponse
La différence par exemple:
\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}
Réponse
Exactement comme le dit Rob; pour reformuler, \vskip
doit être utilisé lorsque vous êtes en mode vertical, ou que vous souhaitez commencer à le configurer, et \vspace
a du sens dans un paragraphe.
Limplémentation (an?) de \vspace
est décrite dans Eijkhout 1990, TUGboat 11 (4 ), p618 .