\ vspace vs. \ vskip [duplicate]

Deze vraag heeft hier al antwoorden :

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:

  1. horizontale modus en beperkte horizontale modus,
  2. verticale modus en interne verticale modus, en
  3. 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} 

voer hier een afbeeldingbeschrijving in

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 .

Geef een reactie

Het e-mailadres wordt niet gepubliceerd. Vereiste velden zijn gemarkeerd met *