# ┓- shaped figure and caption

I have a (float) figure that has a ┓-shape, that is there is a huge blank square at the bottom left.

I'd like to put in this blank the caption of the figure. Is there a way?

My class loads caption and floatrow packages, so I need something that works with floatrow.

\documentclass{article}
\usepackage{graphicx}
\usepackage{tikz}

\begin{document}
\begin{figure}
\begin{tikzpicture}
\node [draw=black, anchor=south west] at (0,0) {\includegraphics[width=\textwidth]{fig1}};

\node [draw=black, anchor=south west, text width=.3\textwidth] at (0,0) {\caption{A picture of a X.}};
\end{tikzpicture}
\end{figure}
\end{document}


A \RawFloats after \begin{figure} solves the problem with floatrow.

• Sorry, but for some reason (?), it does not work with floatrow (which is a requierement). – cjorssen Oct 16 '13 at 15:44
• Instead of a manual minipage, you can also use text width=.3\textwidth and let TikZ use its internal version of the minipage environment (which is the same for LaTeX). – Qrrbrbirlbel Oct 16 '13 at 17:10

Here's a very basic, feasible implementation that inserts the caption at the desired location:

\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\newsavebox{\graphicsbox}
\begin{document}
\begin{figure}[ht]
\centering
\savebox{\graphicsbox}{\includegraphics[width=.7\linewidth]{myfigure}}% Store image
\leavevmode\rlap{\usebox{\graphicsbox}}% Set image with complete overlap
\begin{minipage}[b]{.5\wd\graphicsbox}% Insert caption
\caption{This is my caption. It has a large amount of information, and should
flow over several lines.}
\end{minipage}\hspace*{.5\wd\graphicsbox}% Add space to represent figure width
\end{figure}
\end{document}


The image is set in a box \graphicsbox in order to calculate its width. This width is used to measure the minipage and subsequent spacing. A [b]ottom-placement ensures that the caption is stacked vertically as it expands. The alignment of the minipage and surrounding spacing can be changed, of course. For example, to add a \columnsep gap between the caption and the image, use

\begin{minipage}[b]{\dimexpr.5\wd\graphicsbox-\columnsep}% Insert caption
% <caption>
\end{minipage}\hspace*{\dimexpr.5\wd\graphicsbox+\columnsep}% Add space to represent figure width


I made a two-line change to boxhandler's macro \ReciteFigure, and set of few of the package parameters.

\documentclass{article}
\usepackage{floatrow}
\usepackage{caption}
\usepackage{boxhandler}

\makeatletter
\renewcommand\ReciteFigure[6][ht]{%
\begin{figure}[#1]%
\begin{\LRFigurePlacement}%
\let\@makecaption\new@makecaption%
\setlength\abovecaptionskip{\arabic{abovecaptionskipterm}\p@}%
\setlength\belowcaptionskip{\arabic{belowcaptionskipterm}\p@}%
\set@DataBoxWidth{#3}%
\setlength\CaptionBoxWidth{#4}%
\set@BoxOffsets%
\if T#6%
\rule{\@DataBoxOffset}{0in}%
\makebox[\@DataBoxWidth][l]{#5}%
\rule{\@DataBoxOffset}{0in}\\%
\fi
\rule{\@DataBoxOffset}{0in}%
\usebox{#3}%
\rule{\@DataBoxOffset}{0in}%
\par%
\rule{\@CaptionBoxOffset}{0em}%
\rule{\@CaptionBoxOffset}{0em}%
\if T#6%
\rule{\@DataBoxOffset}{0in}\\%
\makebox[\@DataBoxWidth][r]{#5}%
\rule{\@DataBoxOffset}{0in}%
\fi
\let\@makecaption\old@makecaption%
\setlength\abovecaptionskip\oldabovecaptionskip%
\setlength\belowcaptionskip\oldbelowcaptionskip%
\end{\LRFigurePlacement}%
\end{figure}%
}
\makeatother

\begin{document}
\setcounter{abovecaptionskipterm}{-80}
\captionStyle{n}{c}
\def\CaptionJustification{\raggedright}
\bxfigure{My caption goes here and may exceed one line}
{\fbox{\rule{2in}{0in}\rule{0in}{2in}}}

\end{document}


• Interesting, thanks. I did not know the boxhandler package. For my use case, I'd like to stick to floatrow. – cjorssen Oct 16 '13 at 19:09