From my experience, this type of design never works well by using packages. You rather build your own code around your requirements. Here is an example with rather large figures, that illustrate some of the issues (the code is in the MWE below).
Here the text is positioned either left or right depending if the page is odd or even. as you observe the height of the text is not right. So my suggestion rather describe your requirements first visually (perhaps by lifting ideas from a book you like or an article), then see how this will work in the overall deign of the class you are using.
\documentclass[imperial]{octavo}
\usepackage{geometry}
%\usepackage{textsamples}
\usepackage{graphicx,xcolor}
\usepackage{changepage}
\newcommand\lorem{Fusce adipiscing justo nec ante. Nullam in enim.
Pellentesque felis orci, sagittis ac, malesuada et, facilisis in,
ligula. Nunc non magna sit amet mi aliquam dictum. In mi. Curabitur
sollicitudin justo sed quam et quadd. \par}
\begin{document}
\newpage
\newgeometry{left=10mm,right=10mm,top=1.0cm,bottom=1cm}
%%%%%%%%%%% RENOIR NARROW
\def\ballatbougival{ballatbougival}
\def\ballatbougivalcaption{\lorem\lorem}
\def\ballatbougivaltitle{{\large\bf Ball at Bougival}}
\checkoddpage
\begin{minipage}[c]{\textwidth}%
\fboxrule0pt%
\fboxsep1pt%
\fbox{%
\ifoddpage\relax\else%
\begin{minipage}[b]{110pt}%
%% odd caption is placed at bottom
\ballatbougivaltitle\par%
\ballatbougivalcaption%
\the\textwidth\rule{0pt}{180pt}
\end{minipage}%
\fi%
\begin{minipage}[b]{\the\dimexpr(\textwidth-150pt)}%
\includegraphics[width=\textwidth]{./graphics/\ballatbougival}
\end{minipage}\hspace*{10pt}%
\ifoddpage%
\begin{minipage}[b]{110pt}%
%% odd caption is placed at bottom
\ballatbougivaltitle\par%
\ballatbougivalcaption%
\the\textwidth\rule{0pt}{180pt}
\end{minipage}%
\fi
}
\end{minipage}
\clearpage
%%%%%%%%%%% RENOIR NARROW
\def\ballatbougival{ballatbougival}
\def\ballatbougivalcaption{\lorem\lorem}
\def\ballatbougivaltitle{{\large\bf Ball at Bougival}}
\checkoddpage
\begin{minipage}[c]{\textwidth}%
\fboxrule0pt%
\fboxsep0pt%
\fbox{%
\ifoddpage\relax\else
\begin{minipage}[b]{110pt}%
%% odd caption is placed at bottom
\ballatbougivaltitle\par%
\ballatbougivalcaption%
\the\textwidth\rule{0pt}{180pt}
\end{minipage}%
\hspace*{10pt}%
\fi%
\begin{minipage}[b]{\the\dimexpr(\textwidth-130pt)}%
\includegraphics[height=\textheight, width=\textwidth, keepaspectratio]{./graphics/Pierre-Auguste_Renoir_019}%
\end{minipage}%
\ifoddpage%
\hspace*{10pt}%
\begin{minipage}[b]{110pt}%
%% odd caption is placed at bottom
\ballatbougivaltitle\par%
\ballatbougivalcaption%
\the\textwidth\rule{0pt}{180pt}
\end{minipage}%
\fi
}
\end{minipage}
\end{document}
As you will observe from the code, the image and caption is placed within minipages
, so effectively ensuring that it stays together. If you want them to float, enclose them in
\begin{figure}...\end{figure}
If you want numbered captions or the captions to go to the contents, you can style them, using the caption
package.
Minor adjustments on the position of text, you can add rules (make them invisible using a zero width or add space via vspace).
Although this might appear as tedious and requiring a lot of work to set up, for a book at most you will have about 3-5 layout designs. Once you are happy you can change everything to environments or macros to make life easier.
To place the wrap figure at the right , you have to use r
not l
. Another fact is that it should have enough text in the surrounding so as to wrap properly. If you want to force the placement **exactly here* you can use the capital R
(or L
, I
, or O
). Fot details see the documentation of wrapfigure. (texdoc wrapfig
). Here is a complete MWE:
\documentclass{article}
\usepackage{graphicx,wrapfig,lipsum}
%------------------------------------------
\begin{document}
This is where the figure goes with text wrapping around it. There should be enough text around the wrapfigure so that it is warpped properly.
%------------------------------------------
\begin{wrapfigure}{r}{6cm}
\includegraphics[width=6cm]{example-image-a}
\caption{A wrapped figure going nicely inside the text.}\label{wrap-fig:1}
\end{wrapfigure}
%------------------------------------------
\lipsum[3]
\par
Figure~\ref{wrap-fig:1} is a wrapped figure. \lipsum[4]
%------------------------------------------
\begin{wrapfigure}{R}{6cm}
\includegraphics[width=6cm]{example-image-a}
\caption{A wrapped figure going nicely inside the text.}\label{wrap-fig:1}
\end{wrapfigure}
%------------------------------------------
\lipsum[5]
%------------------------------------------
\end{document}
Best Answer
As already mentioned by others this can be done using the
wrapfig
package. You need to place thewrapfigure
just before the paragraph. See the example code below. However, it only supports rectangular figures. You will need to use two of them for the last example but need to place at least one paragraph between them, which makes it a little tricky. If you need captions for the images use thecaption
ofcapt-of
package which both provide the macro\captionof{figure}{<your caption>}
. Thesubfig
package is normally used if you want sub-figures with (a), (b), etc. sub-captions, but I think it doesn't work outside a normal float.