
wrapfig
обычно используется с намерением набрать его рядом с определенным текстом, который должен его обернуть. Однако, когда я использую много плавающих элементов рядом wrapfig
, часть всего текста не будет оставаться рядом с обернутой фигурой. Кроме того, фигура не находится в порядке с остальными. Как мне решить эту проблему?
Мой МВЭ
\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}
решение1
wrapfigure
не имеет связи с обычным механизмом поплавка, поэтому, если вы используете оба, вам нужно будет решать любые возникающие проблемы. Здесь я думаю, что вы получите приемлемый результат, если предотвратите перенос выреза на следующую страницу, с помощью
\begin{wrapfigure}[8]{O}{\commonfigwidth}
\includegraphics[width=\linewidth]{example-image-a}
\centering This is a circuit
\end{wrapfigure}
поэтому ограничим его 8 строками (вместо 10, которые он использовал бы по умолчанию)
решение2
LaTeX не будет считать его wrapfigure
плавающим, если он не написан внутри figure
среды. Все, что существует внутри figure
среды table
, должно быть показано сразу на любой странице, которую выбирает LaTeX. Таким образом, хорошим решением является
\begin{figure}
\begin{wrapfigure}{<other wrapfig arguments>}
\includegraphics[width=\linewidth]{<image file name>}
\end{wrapfigure}
<the text that should wrap the figure>
\end{figure}
Таким образом, параграф(ы), которые должны быть рядом с обернутой фигурой, будут вынуждены оставаться там, даже если материал вокруг них имеет много плавающих элементов. Кроме того, LaTeX разместит все плавающие элементы в том порядке, в котором они появились в исходном коде, так что это также решает упомянутую проблему порядка.
\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}