\ vspace vs. \ vskip [duplicate] (Français)

Cette question a déjà des réponses ici :

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:

  1. mode horizontal et mode horizontal restreint,
  2. mode vertical et mode vertical interne, et
  3. 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} 

entrez la description de limage ici

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 .

Laisser un commentaire

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *