3
1

In Paket- und Klassendateien, aber auch in Befehlsdefinitionen innerhalb von tex Dateien (wie zum Beispiel hier habe ich den Befehl \vskip gesehen. Was ist der Unterschied zu \vspace? Wann verwendet man den einen und wann den anderen Befehl?

gefragt 20 Mär '15, 13:58

welle's gravatar image

welle
106222631
Akzeptiert-Rate: 0%

bearbeitet 20 Mär '15, 17:36

saputello's gravatar image

saputello
11.1k174365


\vspace ist ein LaTeX-Befehl, \vskip ein primitiver TeX-Befehl. Innerhalb von Absätzen verhalten sich die Befehle unterschiedlich. Außerdem haben sie eine unterschiedliche Syntax. \vskip solltest du erst dann verwenden, wenn du die Unterschiede begriffen hast -- insbesondere warum das "plus 1cm" im nachfolgenden Beispiel verschwindet und wie man das verhindern kann.

Open in Online-Editor
\documentclass{article}
\usepackage{lipsum}
\begin{document}
%Unterschiedliches Verhalten in Absatzen:
vspace:\vspace{1cm}\lipsum*[1]

vskip:\vskip 1cm \lipsum*[1]

%vskip kann nachfolgenden Text verschlucken:
a \vspace{1mm} plus 1cm b

a \vskip 1mm plus 1cm b
\end{document}
Permanenter link

beantwortet 20 Mär '15, 14:27

Ulrike%20Fischer's gravatar image

Ulrike Fischer
3.6k23
Akzeptiert-Rate: 52%

@Ulrike Danke für das schöne Beispiel, dem ich entnehme, dass \vspace{1cm} den Abstand erst nach der aktuellen Zeile einfügt, während \vskip das sofort macht und einen neuen Absatz beginnt? Oder den alten vorher beendet? Falls mit Absatzabstand gearbeitet wird, kommt der dann dazu? In \vskip 1mm plus 1cm hat das plus 1cm die gleiche Wirkung wie in \vspace{1mm plus 1cm}? Das Verschlucken von "plus 1cm" kann ich mit \vskip 1mm\relax plus 1cm oder mit {\vskip 1mm} plus 1cm verhindern?

(20 Mär '15, 15:25) welle
1

@welle Denke dir doch mal einen Test aus, wie du feststellen kannst, ob der Absatzabstand \parskip eine Rolle spielt.

(20 Mär '15, 15:55) Ulrike Fischer

\usepackage{parkskip} und dann \vskip 0pt bzw. \vspace{0pt} zeigt, dass der Absatzabstand bei \vskip eine Rolle spielt, bei \vspace dagegen nicht.

(20 Mär '15, 16:30) welle

Neben den bereits genannten Unterschieden gibt es einen weiteren, wichtigen Unterschied. \vspace löscht explizit das Gedächtnis bezüglich des eingefügten Abstandes, nachdem der Abstand intern mit \vskip eingefügt wurde, was \vskip selbst natürlich nicht tut:

Open in Online-Editor
\documentclass{article}
\newlength{\letzter}
\begin{document}
Test\par\vspace{1cm}
\setlength{\letzter}{\lastskip}Der letzte vertikale Abstand war \the\letzter.

Test\par\vskip 1cm
\setlength{\letzter}{\lastskip}Der letzte vertikale Abstand war \the\letzter.
\end{document}

Was zunächst wie ein unwichtiger Unterschied erscheinen mag, wird relevant, wenn \addvspace ins Spiel kommt. Diese Anweisung funktioniert nämlich so: War ein unmittelbar zuvor eingefügter vertikaler Abstand betragsmäßig kleiner als der Betrag des bei \addvspace angegebenen, so werden die Abstände nicht addiert, sondern der letzte zuerst entfernt und dann nur der neue eingefügt. War ein unmittelbar zuvor eingefügter vertikaler Abstand betragsmäßig größer als der Betrag des bei \addvspace angegebenen, so führt \addvspace zu gar keinem vertikalen Abstand. Mit einem \vspace unmittelbar zuvor eingefügten vertikalen Abstand funktioniert dies nicht, weil der damit eingefügte Abstand für TeX als 0pt erscheint. Der Abstand von \addvspace wird nach einem \vspace daher immer komplett zusätzlich eingefügt.

Open in Online-Editor
\documentclass{article}
\begin{document}
Test\vspace{1cm}

\addvspace{2cm}
Dieser Text ist 3\,cm entfernt.

Test\vskip 1cm

\addvspace{2cm}Dieser Text ist 2\,cm entfernt.

Test\vspace{1cm}

\addvspace{.99cm}
Dieser Text ist 1,99\,cm entfernt.

Test\vskip 1cm

\addvspace{.99cm}Dieser Text ist 1\,cm entfernt.

\end{document}

Relevant kann das beispielsweise bei aufeinander folgenden Überschriften werden.

Permanenter link

beantwortet 20 Mär '15, 17:11

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 21 Mär '15, 00:22

esdd's gravatar image

esdd
17.8k274256

@saputello Vielen Dank für die Ergänzung. Den Unterschied finde ich auch wichtig, aber ich kann leider nicht zwei Antworten abhaken.

(21 Mär '15, 17:41) welle

@welle Kein Problem. War wirklich nur als Ergänzung gemeint. Ulrikes Antwort enthält den Unterschied, der für die meisten Leute wichtig ist. Danke auf für die Extrapunkte, wäre aber nicht nötig gewesen. Davon habe ich ohnehin schon wieder viel zu viele.

(25 Mär '15, 12:43) saputello

Wie man dem folgendem MWE entnehmen kann, handelt es sich bei \vskip um ein Primitiven, während \vspace in plain-TeX nicht vorkommt und ein durch LaTeX definiertes Makro ist.

Da beide einen vertikalen Abstand einer gewissen "Dimension" einfügen, ist in LaTeX-Dokumenten \vspace zu bevorzugen, da \vskip einfach nur Blind einen Abstand einfügt, \vspace dagegen ist sich seiner Umgebung "bewusst".

Open in Online-Editor
% mwe.tex
\show\vskip
\show\vspace
\bye

Ausgabe von tex mwe:

Open in Online-Editor
This is TeX, Version 3.14159265 (TeX Live 2014/W32TeX) (preloaded format=tex)
(./mwe.tex
> \vskip=\vskip.
l.1 \show\vskip

?
> \vspace=undefined.
l.2 \show\vspace

?
 )
No pages of output.
Transcript written on mwe.log.
Permanenter link

beantwortet 20 Mär '15, 14:28

NobbZ's gravatar image

NobbZ
33731017
Akzeptiert-Rate: 40%

Deine Antwort
Vorschau umschalten

Folgen dieser Frage

Per E-Mail:

Wenn sie sich anmelden, kommen Sie für alle Updates hier in Frage

Per RSS:

Antworten

Antworten und Kommentare

Markdown-Grundlagen

  • *kursiv* oder _kursiv_
  • **Fett** oder __Fett__
  • Link:[Text](http://url.com/ "Titel")
  • Bild?![alt Text](/path/img.jpg "Titel")
  • nummerierte Liste: 1. Foo 2. Bar
  • zum Hinzufügen ein Zeilenumbruchs fügen Sie einfach zwei Leerzeichen an die Stelle an der die neue Linie sein soll.
  • grundlegende HTML-Tags werden ebenfalls unterstützt

Frage-Themen:

×55
×52

gestellte Frage: 20 Mär '15, 13:58

Frage wurde gesehen: 18,563 Mal

zuletzt geändert: 25 Mär '15, 12:43