Reacties
- Ik heb gestemd om deze vraag te sluiten omdat @egreg heeft gaf een canoniek antwoord op de " -vraag die oorspronkelijk werd gesteld op tex.sx ".
- Oké, maar deze vraag werd als eerste gevraagd.
Antwoord
Op elk punt in de verwerking bevindt TeX zich in een bepaalde modus. Er zijn zes modi, onderverdeeld in drie categorieën:
- horizontale modus en beperkte horizontale modus,
- verticale modus en interne verticale modus, en
- wiskunde en geef de wiskundige modus weer.
Als er geen wiskunde wordt gezet, is TeX in horizontale of verticale modus. De horizontale modus wordt doorgaans gebruikt om tekstregels te maken; verticale modus wordt typisch gebruikt om de regels van een alinea op elkaar te stapelen.
\vskip
voegt een lijm toe aan een verticale lijst van de regels. Daarom \vskip
breekt de horizontale modus en gaat naar de verticale modus.
\vspace
kan zowel horizontaal als verticaal werken modus. In horizontale modus is \vspace 1mm
gelijk aan \vadjust{\vskip 1mm \vskip 0pt}
en wordt er een spatie ingevoegd na de huidige regel. In verticale modus is \vspace 1mm
gelijk aan \vskip 1mm \vskip 0pt
\vskip 0pt
is nodig dus \removelastskip
kan uw verticale ruimte niet verwijderen.
Volledige definitie:
\vspace : -> \@ifstar \@vspacer \@vspace
Zonder *
case (\vspace 1mm
):
\@vspace: #1->\ifvmode \vskip #1 \vskip \z@skip \else \@bsphack \vadjust {\@restore par \vskip #1 \vskip \z@skip }\@esphack \fi
Opmerking \z@skip
gelijk aan 0pt
, \@bsphack
is nodig om na een punt veel horizontale ruimte te besparen. \@esphack
is nodig om Big Space-instellingen te retourneren.
Met *
case (\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
Reacties
- Dus als ze buiten een alinea worden gebruikt (dat wil zeggen, in verticale modus), dan zou de output precies hetzelfde zijn?
Answer
\vspace
is een LaTeX-commando en \vskip
is een TeX-commando. Beide kunnen in LaTeX worden gebruikt. Als \vspace
wordt gebruikt in een alinea, wordt er een spatie ingevoegd na de huidige regel. Maar als \vskip
binnen een alinea wordt gebruikt, wordt de alinea beëindigd en wordt de spatie onmiddellijk ingevoegd.
Opmerkingen
- Waarom begint
\vskip
een nieuwe regel? Is dit een bijwerking van wat Charles " verticale modus noemt? " - @Geoff:
\vskip
start een nieuwe regel door ontwerp.vskip
is verticaal overslaan. Donald Knuth heeft dat beslist.
Antwoord
Het verschil door voorbeeld:
\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}
Antwoord
Precies zoals Rob zegt; om opnieuw te formuleren, \vskip
moet worden gebruikt wanneer u zich in de verticale modus bevindt of wilt beginnen met instellen, en \vspace
is logisch binnen een paragraaf.
De (een?) implementatie van \vspace
wordt besproken in Eijkhout 1990, TUGboat 11 (4 ), p618 .