Kommentarer
- Jag röstade för att stänga den här frågan eftersom @egreg har gav ett kanoniskt svar på " frågan som ursprungligen ställdes på tex.sx ".
- Okej, men den här frågan frågades först.
Svar
När som helst i behandlingen är TeX i något läge. Det finns sex lägen, uppdelade i tre kategorier:
- horisontellt läge och begränsat horisontellt läge,
- vertikalt läge och internt vertikalt läge och
- matematik och visa matematikläge.
När du inte skriver matematik är TeX i horisontellt eller vertikalt läge. Horisontellt läge används vanligtvis för att skapa textrader; vertikalt läge används vanligtvis för att stapla raderna i ett stycke ovanpå varandra.
\vskip infogar ett lim i en vertikal lista över raderna. Därför bryter \vskip det horisontella läget och går till vertikalt läge.
\vspace kan arbeta i horisontellt läge och vertikalt läge. I horisontellt läge motsvarar \vspace 1mm \vadjust{\vskip 1mm \vskip 0pt} och infogar ett mellanslag efter den aktuella raden. I vertikalt läge motsvarar \vspace 1mm \vskip 1mm \vskip 0pt
\vskip 0pt behövs så att \removelastskip inte kan ta bort ditt vertikala utrymme.
Fullständig definition:
\vspace : -> \@ifstar \@vspacer \@vspace
Utan * fall (\vspace 1mm):
\@vspace: #1->\ifvmode \vskip #1 \vskip \z@skip \else \@bsphack \vadjust {\@restore par \vskip #1 \vskip \z@skip }\@esphack \fi
Obs \z@skip lika med 0pt, \@bsphack behövs för att spara stort horisontellt utrymme efter period. \@esphack behövs för att returnera stora utrymmeinställningar.
Med * fall (\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
Kommentarer
- Så om de används utanför ett stycke (det vill säga i vertikalt läge), skulle utmatningen vara exakt densamma?
Svar
\vspace är ett LaTeX-kommando och \vskip är ett TeX-kommando. Båda kan användas i LaTeX. När \vspace används i ett stycke infogas det utrymme efter den aktuella raden. Men om \vskip används i ett stycke avslutas stycket och infogar utrymmet omedelbart.
Kommentarer
- Varför startar
\vskipen ny rad? Är detta en bieffekt av vad Charles hänvisar till som " vertikalt läge? " - @Geoff:
\vskipstarta en ny rad efter design.vskipär en vertikal hoppa över. Donald Knuth bestämde sig för det.
Svar
Skillnaden med exempel:
\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}
Svar
Exakt som Rob säger; för att omformulera bör \vskip användas när du är i, eller vill börja ställa in vertikalt läge, och \vspace är vettigt inom en stycke.
(en?) implementering av \vspace diskuteras i Eijkhout 1990, TUGboat 11 (4 ), p618 .