\ vspace vs. \ vskip [duplikat] (Svenska)

<åt sidan class = "s-meddelande s-meddelande__info js-post-meddelande mb16" role = "status" >

Denna fråga har redan svar här :

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:

  1. horisontellt läge och begränsat horisontellt läge,
  2. vertikalt läge och internt vertikalt läge och
  3. 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} 

ange bildbeskrivning här

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 .

Lämna ett svar

Din e-postadress kommer inte publiceras. Obligatoriska fält är märkta *