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
\vskip
en ny rad? Är detta en bieffekt av vad Charles hänvisar till som " vertikalt läge? " - @Geoff:
\vskip
starta 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 .