5

To maximize space, I'm trying to put an table and image side-by-side in a document. As the image is longer than the table, I want to put both captions under the table (if possible). I envisage this looking something like as follows.

example output

I've followed the steps in this example. However I can't find a way to move the figure caption under the table. Here is some working code:

\documentclass{article}

\usepackage[demo]{graphicx} % for inclusion of graphics
\usepackage{floatrow}
\newfloatcommand{capbtabbox}{table}[][\FBwidth]
\usepackage{booktabs}

\begin{document}

\begin{figure}[t]
\begin{floatrow}
\TopFloatBoxes
  \capbtabbox{
    \begin{tabular}{ccc} \toprule
    Heading 1 & Heading 2 & Heading 3 \\ \midrule
      1 & $\{1\}$ & A  \\ 
      2 & $\{1,2\}$ & B   \\ 
      3 & $\{1,2,3\}$ & C  \\ 
      4 & $\{1,2,3,4\}$ & D  \\ 
      5 & $\{1,2,3,4,5\}$ & E  \\ 
      6 & $\{1,2,3,4,5,6\}$ & F  \\ 
      7 & $\{1,2,3,4,5,6,7\}$ & G  \\ 
      8 & $\{1,2,3,4,5,6,7,8\}$ & H  \\
      9 & $\{1,2,3,4,5,6,7,8,9\}$ & I  \\ 
      10 & $\{1,2,3,4,5,6,7,8,9,10\}$ & J  \\ \bottomrule
    \end{tabular}
}{
  {\caption{A caption for a table in a figure and a table side by side}\label{fig:test}}
}
\ffigbox{
  \includegraphics[height=8cm]{Images/preNet.pdf}  
}{
  {\caption{A caption for a figure in a figure and a table side by side}\label{fig:test}}
}
\end{floatrow}
\end{figure}

\end{document}    

3 Answers 3

3

This is similar to Gonzalo's answer, but has the advantage of not requiring explicit computations nor strange adjustments.

\documentclass{article}

\usepackage[demo]{graphicx} % for inclusion of graphics
\usepackage{booktabs}
\usepackage{capt-of,calc}

\newsavebox{\figurebox}

\begin{document}

\begin{figure}[t]
%% get the dimensions of the figure
\sbox{\figurebox}{\includegraphics[height=8cm]{Images/preNet.pdf}}

\begin{minipage}[t][\ht\figurebox]{\textwidth-\wd\figurebox-1em}
\centering\footnotesize
\vspace*{0pt}% to set the top
\begin{tabular}{ccc} \toprule
Heading 1 & Heading 2 & Heading 3 \\ \midrule
        1 & $\{1\}$ & A  \\ 
        2 & $\{1,2\}$ & B   \\ 
        3 & $\{1,2,3\}$ & C  \\ 
        4 & $\{1,2,3,4\}$ & D  \\ 
        5 & $\{1,2,3,4,5\}$ & E  \\ 
        6 & $\{1,2,3,4,5,6\}$ & F  \\ 
        7 & $\{1,2,3,4,5,6,7\}$ & G  \\ \bottomrule
\end{tabular}
\captionof{table}{A caption for a table in a figure and a table side by side}
\label{tab:test}

\vfill

\captionof{figure}{A caption for a figure in a figure and a table side by side}
\label{fig:test}
\end{minipage}\hfill
\begin{minipage}[t]{\wd\figurebox}
\centering
\vspace*{0pt}% to set the top
\usebox{\figurebox}
\end{minipage}
\end{figure}

\end{document}

Instead of capt-of one can load caption that has other advantages; however, some classes don't allow using caption.

enter image description here

2

I think that using minipages of fixed height is easier here; captions were provided using \captionof from the caption package:

\documentclass{article}
\usepackage[margin=3.5cm]{geometry}
\usepackage{graphicx}
\usepackage{adjustbox}
\usepackage{caption}
\usepackage{booktabs}

\begin{document}

\begin{figure}
\begin{minipage}[c][8cm][t]{.67\linewidth}
  \centering
  \begin{tabular}{ccc} \toprule
    Heading 1 & Heading 2 & Heading 3 \\ \midrule
      1 & $\{1\}$ & A  \\ 
      2 & $\{1,2\}$ & B   \\ 
      3 & $\{1,2,3\}$ & C  \\ 
      4 & $\{1,2,3,4\}$ & D  \\ 
      5 & $\{1,2,3,4,5\}$ & E  \\ 
      6 & $\{1,2,3,4,5,6\}$ & F  \\ 
      7 & $\{1,2,3,4,5,6,7\}$ & G  \\ 
      8 & $\{1,2,3,4,5,6,7,8\}$ & H  \\
      9 & $\{1,2,3,4,5,6,7,8,9\}$ & I  \\ 
      10 & $\{1,2,3,4,5,6,7,8,9,10\}$ & J  \\ \bottomrule
  \end{tabular}
  \captionof{table}{a caption for a table side-by-side with a figure}
  \vfill
  \captionof{figure}{a caption for a figure side-by-side with a figure}
\end{minipage}%
\begin{minipage}[c][8cm][t]{.33\linewidth}
  \centering
  \adjustbox{valign=t}{%
    \includegraphics[height=8cm,width=\linewidth]{example-image-a}} 
\end{minipage}
\end{figure}

\end{document}  

enter image description here

Boxing the image and measuring the total height of the box allows you to find the required height for the minipages in an automatic way

2

Use of \floatbox \capbeside and \thisfloatsetup from floatrow, inspired and learned from Gonzalo Medina's work https://tex.stackexchange.com/a/29144/34618

enter image description here

Code

\documentclass{article}
\usepackage[landscape]{geometry}
\usepackage[demo]{graphicx} % for inclusion of graphics
\usepackage{floatrow}
\newfloatcommand{capbtabbox}{table}[][\FBwidth]
\usepackage{booktabs}

\begin{document}

\begin{figure}[t]
\begin{floatrow}
\TopFloatBoxes
  \capbtabbox{
    \begin{tabular}{ccc} \toprule
    Heading 1 & Heading 2 & Heading 3 \\ \midrule
      1 & $\{1\}$ & A  \\ 
      2 & $\{1,2\}$ & B   \\ 
      3 & $\{1,2,3\}$ & C  \\ 
      4 & $\{1,2,3,4\}$ & D  \\ 
      5 & $\{1,2,3,4,5\}$ & E  \\ 
      6 & $\{1,2,3,4,5,6\}$ & F  \\ 
      7 & $\{1,2,3,4,5,6,7\}$ & G  \\ 
      8 & $\{1,2,3,4,5,6,7,8\}$ & H  \\
      9 & $\{1,2,3,4,5,6,7,8,9\}$ & I  \\ 
      10 & $\{1,2,3,4,5,6,7,8,9,10\}$ & J  \\ \bottomrule
    \end{tabular}
}{
  {\caption{A caption for a table in a figure and a table side by side}\label{tab:test}}
}
\hspace{-9cm}
\ffigbox{
\floatbox[{\capbeside\thisfloatsetup{capbesideposition={left,bottom},capbesidewidth=9cm}}]{figure}
{
  \includegraphics[height=8cm]{Images/preNet.pdf}  
}
}{
  {\caption{A caption for a figure in a figure and a table side by side}\label{fig:test}}
}
\end{floatrow}
\end{figure}

\end{document}    

You must log in to answer this question.

Not the answer you're looking for? Browse other questions tagged .