Ich habe ein Verständnisproblem mit der wrapfigure-Umgebung. Auch wenn es nicht üblich ist, möchte ich gerne auf einer Seite zwei Bilder von Text umfließen lassen. Allerdings muss ich im Quellcode eine Leerzeile einbauen, da sonst das zweite Bild nicht im Text angezeigt wird, sondern darunter. Warum ist das so?

Minimalbeispiel:

Öffne in Overleaf
\documentclass[11pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage[demo]{graphicx}
\usepackage{wrapfig}
\setlength{\parindent}{0pt}
\begin{document}
\textbf{Anzeige:}\newline
text text text text text text text text text text text text 
text text text text text text text text text text text text 
text text text text text text text text text text text text
\begin{wrapfigure}[11]{l}{0.4\textwidth}
  \centering  
  \includegraphics[scale=0.1]{Bild}
  \caption{Beispiel 1}
\end{wrapfigure}
\blindtext text text text text text text text text text text text text
 text text text text text text text text text text text text2222222

\begin{wrapfigure}[11]{r}{0.4\textwidth}
  \centering  
  \includegraphics[scale=0.1]{Bild}
  \caption{Beispiel 2}
\end{wrapfigure}
\blindtext 
\end{document}

Link zum Minimalbeispiel

Ergebnis:

alt text

Nochmal konkret: Warum muss ich zwischen text2222222 und der zweiten wrapfigure-Umgebung eine Leerzeile einbauen? Wenn ich diese lösche, dann wandert das zweite Bild unter den gesamten Text.

gefragt 15 Okt '17, 01:41

Reuti's gravatar image

Reuti
61124
Akzeptiert-Rate: 0%

bearbeitet 15 Okt '17, 09:31

saputello's gravatar image

saputello
11.1k174365

Off-Topic: \setlength{\parindent}{0pt} in der Dokumentpräambel ist eine schlechte Idee. Und Überschriften sollte man mit \minisec{Anzeige:} o. ä. machen nicht mit \textbf{Anzeige:}\newline.

(15 Okt '17, 09:46) saputello

Danke für die Antwort. Warum das Unterdrücken vom Einrücken eine schlechte Idee ist verstehe ich nicht. Stilistisch gefällt mir das Einrücken nicht. Hat der Befehl noch andere Auswirkungen?

(15 Okt '17, 12:42) Reuti

Weil Du jegliche Absatzauszeichnung abschaltest. Absätze sind damit beliebig. Überspitzt gesagt: Man könnte dann auch das gesamte Dokumente ohne Absätze schreiben. Wenn Du generell keine Absatzeinrückung haben willst, dann verwende wenigstens Absatzabstand. Siehe dazu Option parskip in der KOMA-Script-Anleitung. Wenn Du nur einen einzelnen Absatz nicht eingerückt haben willst (warum auch immer), dann verwende an dieser Stelle ein explizites \noindent.

(15 Okt '17, 14:04) saputello
2

»Warum das Unterdrücken vom Einrücken eine schlechte Idee ist verstehe ich nicht. Stilistisch gefällt mir das Einrücken nicht. Hat der Befehl noch andere Auswirkungen?« Ich empfehle immer, aufs Geratewohl 10, 15 Bücher aus dem eigenen Bücherregal zu ziehen und nachzuschauen, wie das dort geregelt ist. Jede Wette, dass die Mehrzahl eine Absatzeinrückung hat und die restlichen wenigstens einen Absatzabstand…

(16 Okt '17, 09:56) cgnieder

»Ich empfehle immer, aufs Geratewohl 10, 15 Bücher aus dem eigenen Bücherregal zu ziehen und nachzuschauen, wie das dort geregelt ist.« Mein Test mit 9 Büchern zur Mathematik/Physik/Chemie die ich gerade auf meinem Schreibtisch gefunden habe beläuft sich auf 5 mit Absatzabstand und 4 mit Einrückung.

(16 Okt '17, 15:39) Hirshy

@Hirshy dann hätte ich die Wette ja gewonnen, obwohl Du eine kleinere Stichprobe genommen hast und Dich auf Sachbücher beschränkt hast! :)

(16 Okt '17, 17:40) cgnieder

@Clemens sollte auch als kleine Bestätigung geben. Und ich hatte im Büro gerade nicht mehr Bücher rumliegen und auch keine großartig andere Auswahl als Sachbücher ;)

(16 Okt '17, 23:16) Hirshy
Ergebnis 5 von 7 show 2 more comments

wrapfig kann nur eine wrapfigure pro Absatz verarbeiten. Der Inhalt der Umgebung wird in der Box \WP@box gespeichert und solange diese belegt ist, kann keine neue angelegt werden. Das Paket gibt übrigens auch Warnungen aus:

Package wrapfig Warning: Collision between wrapping environments on input line 20.

Package wrapfig Warning: Stationary wrapfigure forced to float on input line 24.

Da gleitende wrapfloat laut Anleitung nur zwischen Absätzen (oder zumindest nur an natürlich Zeilenumbrüchen) erlaubt sind, verschiebt wrapfig die in eine gleitende Umgebung umgewandelte wrapfigure hinter den aktuellen Absatz. Da im Beispiel kein neuer Absatz mehr folgt, wird die Abbildung einfach am Ende des Dokuments ausgegeben.

Fazit: Zwischen zwei wrapfigure-Umgebungen ist ein Absatz zwingend. Fügt man ihn nicht selbst per Leerzeile oder Anweisung par ein, so verschiebt wrapfig die Abbildung selbst bis zum nächsten Absatz.

Man könnte damit im Beispiel also allenfalls einen unkenntlich gemachten Absatz einfügen:

Öffne in Overleaf
\documentclass[11pt]{scrartcl}
\usepackage[ngerman]{babel}
\usepackage[utf8]{inputenc}
\usepackage{blindtext}
\usepackage[demo]{graphicx}
\usepackage{wrapfig}
\newcommand*{\invisiblepar}{{\setlength{\parfillskip}{0pt}\par}\vskip-\parskip\noindent\ignorespaces}
\begin{document}
\minisec{Anzeige:}
text text text text text text text text text text text text 
text text text text text text text text text text text text 
text text text text text text text text text text text text
\begin{wrapfigure}[11]{l}{0.4\textwidth}
  \centering  
  \includegraphics[scale=0.1]{Bild}
  \caption{Beispiel 1}
\end{wrapfigure}
\blindtext text text text text text text text text text text text text
 text text text text text text text text text text text text2222222
\invisiblepar
\begin{wrapfigure}[11]{r}{0.4\textwidth}
  \centering  
  \includegraphics[scale=0.1]{Bild}
  \caption{Beispiel 2}
\end{wrapfigure}
\blindtext 
\end{document}

Der Trick dabei ist, dass über \setlength{\parfillskip}{0pt} dafür gesorgt wird, dass die letzte Zeile des vorherigen Absatzes komplett gefüllt wird. Man muss allerdings selbst dafür sorgen, dass man sich eine günstige Stelle dafür sucht, anderenfalls kann es leicht zu »underfull \hbox«-Meldungen kommen.

Über \vskip-\parskip\noindent wird außerdem dafür gesorgt, dass der nächste Absatz weder mit einem Absatzabstand noch mit einem Absatzeinzug beginnt.

Ergebnis:

Ergebnis ohne erkennbaren Absatz

Übrigens habe ich durch Verwendung einer echten Überschrift \minisec{Anzeige:} dafür gesorgt, dann nach der Überschrift kein Seitenumbruch erfolgen kann. Gleichzeitig habe ich das Abschalten jeglicher Absatzauszeichnung mit \setlength{\parindent}{0pt} entfernt. Will man keinen Absatzeinzug, sollte man zumindest Absatzabstand aktivieren. Das geht bei KOMA-Script am besten über Option parskip, die diverse Werte versteht. Näheres erklärt die KOMA-Script-Anleitung oder das KOMA-Script-Buch.

Permanenter link

beantwortet 15 Okt '17, 09:46

saputello's gravatar image

saputello
11.1k174365
Akzeptiert-Rate: 51%

bearbeitet 16 Okt '17, 10:18

Ich habe nun die Problematik verstanden, dank dem Kommentar von supatello.

Lösung: Den Absatz mit dem Befehl \par abschließen.

Eine Leerzeile hat wohl den gleichen Effekt...

Permanenter link

beantwortet 15 Okt '17, 13:17

Reuti's gravatar image

Reuti
61124
Akzeptiert-Rate: 0%

bearbeitet 15 Okt '17, 13:19

1

Stimmt: eine Leerzeile hat den gleichen Effekt, wie ein \par einzufügen. Ich wundere mich, dass das offenbar nicht Teil jeder Einführung in TeX/LaTeX ist, denn es ist so zentral. dass eine Leerzeile einen neuen Absatz beginnt…

(16 Okt '17, 09:53) cgnieder

In den Einführungen die ich bisher gefunden habe war das beschrieben. OK, bei der einen oder anderen war es nur ein Nebensatz, aber es war beschrieben und das im allgemeinen noch bevor Kapitel und Co eingeführt wurden...

Davon abgesehen, in den Zeiten von Markdown everywhere, sehe ich kaum noch Bedarf für solch eine Erklärung, denn man kennt es ja eigentlich von Markdown...

Selbst im PlainText ist es konvention und ohne weitere Erklärung verständlich, dass eine leere Zeile zwei Absätze voneinander trennt. Sie bildet den aus dem Buchdruck und der Schreibmaschine bekannten Abstand nach.

(16 Okt '17, 10:58) NobbZ

Und selbst in der Schule scheinen die Lehrer im Heft eine leere Zeile zur Absatztrennung sehen zu wollen (so erging es mir jedenfalls als ich meinen Abschluss nachholte, und auch die Nachbarskinder bei mir haben diese Vorgabe). Leere Zeile ist also eigentlich ein aus dem Alltag bekanntes Konzept.

(16 Okt '17, 11:00) NobbZ

@NobbZ Das ist das eine. In TeX/LaTeX ist damit aber eine ganze Menge mehr verbunden, als „nur“ ein neuer Absatz, wie z.B. obige Frage ausgezeichnet demonstriert, oder Dinge wie \leavevmode. Das man in handschriftlichen Texten eine Leerzeile einer Absatzeinrückung bevorzugt, erscheint mir recht logisch. Selbst mit allen Bemühungen flattern da ja oft beide Ränder :)

(16 Okt '17, 11:04) cgnieder

Also meintest du eher, dass nicht die Auszeichnung eines Absatzes besser behandelt werden sollte, sondern die mit einem Absatz verbundenen Seiteneffekte?

Da bleibt mir nicht sehr viel mehr als dir Recht zu geben.

(16 Okt '17, 11:10) NobbZ
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:

×16
×3

gestellte Frage: 15 Okt '17, 01:41

Frage wurde gesehen: 14,333 Mal

zuletzt geändert: 16 Okt '17, 23:16