
wrapfig
wird normalerweise verwendet, um es neben einen bestimmten Text zu setzen, der es umschließen soll. Wenn ich jedoch viele Floats in der Nähe verwende wrapfig
, bleibt ein Teil des gesamten Textes nicht in der Nähe der umschlossenen Figur. Außerdem ist die Figur nicht in der richtigen Reihenfolge wie der Rest. Wie löse ich dieses Problem?
Mein MWE
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{blindtext}
\usepackage[showframe]{geometry}
\usepackage{ragged2e}
\begin{document}
\newcommand{\commonfigwidth}{0.35\linewidth}
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-a}
\caption{My Fig}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-b}
\caption{My Fig}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-c}
\caption{My Fig}
\end{figure}
\begin{wrapfigure}{O}{\commonfigwidth}
\includegraphics[width=\linewidth]{example-image-a}
\centering This is a circuit
\end{wrapfigure}
\blindtext
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-b}
\caption{My Fig}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-c}
\caption{My Fig}
\end{figure}
\end{document}
Antwort1
wrapfigure
hat keine Verbindung zum üblichen Float-Mechanismus. Wenn Sie also beide verwenden, müssen Sie alle auftretenden Probleme bewältigen. Ich denke, Sie erhalten ein akzeptables Ergebnis, wenn Sie verhindern, dass der Ausschnitt auf die nächste Seite übergeht.
\begin{wrapfigure}[8]{O}{\commonfigwidth}
\includegraphics[width=\linewidth]{example-image-a}
\centering This is a circuit
\end{wrapfigure}
Beschränkung auf 8 Zeilen (anstelle der 10, die standardmäßig verwendet werden)
Antwort2
LaTeX betrachtet es nicht wrapfigure
als Float, es sei denn, es wird in einer figure
Umgebung geschrieben. Alles, was in der Umgebung vorhanden ist, figure
muss table
auf jeder Seite, die LaTeX auswählt, gleichzeitig angezeigt werden. Daher ist ein guter Workaround
\begin{figure}
\begin{wrapfigure}{<other wrapfig arguments>}
\includegraphics[width=\linewidth]{<image file name>}
\end{wrapfigure}
<the text that should wrap the figure>
\end{figure}
Auf diese Weise werden die Absätze, die in der Nähe der umbrochenen Abbildung sein sollten, gezwungen, dort zu bleiben, auch wenn das Material um sie herum viele Floats enthält. Außerdem platziert LaTeX alle Floats in der Reihenfolge, in der sie im Quellcode erschienen sind, sodass auch das erwähnte Reihenfolgeproblem gelöst wird.
\documentclass[a4paper,12pt]{article}
\usepackage[T1]{fontenc}
\usepackage{graphicx}
\usepackage{wrapfig}
\usepackage{blindtext}
\usepackage[showframe]{geometry}
\usepackage{ragged2e}
\begin{document}
\newcommand{\commonfigwidth}{0.35\linewidth}
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-a}
\caption{My Fig}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-b}
\caption{My Fig}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-c}
\caption{My Fig}
\end{figure}
\begin{figure}
\begin{wrapfigure}{O}{\commonfigwidth}
\includegraphics[width=\linewidth]{example-image-a}
\centering This is a circuit
\end{wrapfigure}
\blindtext
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-b}
\caption{My Fig}
\end{figure}
\begin{figure}
\centering
\includegraphics[width=\commonfigwidth]{example-image-c}
\caption{My Fig}
\end{figure}
\end{document}