Kommentarer
- Jeg stemte for at lukke dette spørgsmål, fordi @egreg har leverede et kanonisk svar på " -spørgsmålet, der oprindeligt blev stillet på tex.sx ".
- Okay, men dette spørgsmål blev først spurgt.
Svar
På et hvilket som helst tidspunkt i behandlingen er TeX i en eller anden tilstand. Der er seks tilstande, opdelt i tre kategorier:
- vandret tilstand og begrænset vandret tilstand,
- lodret tilstand og intern lodret tilstand og
- matematik tilstand og vis matematisk tilstand.
Når matematik ikke indstilles, er TeX i vandret eller lodret tilstand. Vandret tilstand bruges typisk til at lave tekstlinjer; lodret tilstand bruges typisk til at stable linjerne i et afsnit oven på hinanden.
\vskip
indsætter en lim i en lodret liste over linjerne. Derfor bryder \vskip
den vandrette tilstand og går til den lodrette tilstand.
\vspace
kan arbejde i vandret tilstand og lodret mode. I vandret tilstand svarer \vspace 1mm
til \vadjust{\vskip 1mm \vskip 0pt}
og indsætter et mellemrum efter den aktuelle linje. I lodret tilstand svarer \vspace 1mm
til \vskip 1mm \vskip 0pt
\vskip 0pt
nødvendigt så \removelastskip
ikke kan fjerne dit lodrette mellemrum.
Fuld definition:
\vspace : -> \@ifstar \@vspacer \@vspace
Uden *
sag (\vspace 1mm
):
\@vspace: #1->\ifvmode \vskip #1 \vskip \z@skip \else \@bsphack \vadjust {\@restore par \vskip #1 \vskip \z@skip }\@esphack \fi
Bemærk \z@skip
svarende til 0pt
, \@bsphack
er nødvendig for at spare stort vandret rum efter periode. \@esphack
er nødvendig for at returnere store pladsindstillinger.
Med *
sag (\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å hvis de bruges uden for et afsnit (dvs. i lodret tilstand), så ville output være nøjagtigt det samme?
Svar
\vspace
er en LaTeX-kommando, og \vskip
er en TeX-kommando. Begge kan bruges i LaTeX. Når \vspace
bruges i et afsnit, indsættes det mellemrum efter den aktuelle linje. Men hvis \vskip
bruges inden for et afsnit, slutter det afsnittet og indsætter pladsen med det samme.
Kommentarer
- Hvorfor starter
\vskip
en ny linje? Er dette en bivirkning af det, Charles henviser til som " lodret tilstand? " - @Geoff:
\vskip
start en ny linje efter design.vskip
er et lodret spring. Donald Knuth besluttede det.
Svar
Forskellen ved eksempel:
\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
Præcis som Rob siger; for at omformulere, skal \vskip
bruges, når du er i eller ønsker at begynde at indstille i lodret tilstand, og \vspace
giver mening inden for en afsnit.
Implementeringen af (en?) af \vspace
diskuteres i Eijkhout 1990, TUGboat 11 (4 ), s.618 .