对齐子图和子表

对齐子图和子表

我可以将子表放在子图旁边,但我希望图和表的顶部对齐,而不是底部对齐。有办法吗?

\documentclass{article}
\usepackage{graphicx}
\usepackage{subfigure}

\begin{document}

\begin{figure*}[!h]
  \begin{subfigure}[b]{1\textwidth}
  \includegraphics[width=0.5\textwidth]{Image.png}
  \end{subfigure}

\hspace{-9cm}

  \begin{subtable}[b]{0.48\textwidth}
  \setlength\extrarowheight{0.5mm} % for a less cramped "look"
  \fontsize{12}{14.4}\selectfont   %fontsize

    \begin{tabular}{ | *{4}{C{1cm}|} }

    0  & 1 & 0  & 1  \\
    \hline
    0  & 1 & 0  & 1  \\
    1 & -1 & 1  & -1 \\
    \hline
    \end{tabular}

  \end{subtable}

\end{figure*}
\end{document}

答案1

  • 假设 MWE 不起作用
  • subfigure已过时。我建议您改用subcaption
  • 您的问题不完全清楚:
    • 你的文档有两行吗?如果没有,那么不要figure*使用,而要使用figure!
    • figuresubfigure没有subtable字幕吗?
    • 如果你喜欢将subfiguresubtable平行放置,那么它们之间的代码就不能有空行。
  • 为了使图像和桌面顶部对齐,您需要将图片基线和表格移动到其顶部。

可能的 MWE:

\documentclass{article}
\usepackage[export]{adjustbox}      % <---

\usepackage{array}                  % <---
\usepackage{caption}
\usepackage[skip=3ex]{subcaption}   % <---

\begin{document}

\begin{figure*}[!h]
  \begin{subfigure}{0.48\textwidth}
  \includegraphics[width=\linewidth, valign=t]{example-image-duck}%{Image.png}
  \end{subfigure}
\hfill
  \begin{subtable}{0.48\textwidth}
  \fontsize{12}{14.4}\selectfont   % font size
    \begin{tabular}[t]{ | *{4}{b{1cm}|} }
    0  & 1 & 0  & 1  \\
    \hline
    0  & 1 & 0  & 1  \\
    1 & -1 & 1  & -1 \\
    \hline
    \end{tabular}
  \end{subtable}
\end{figure*}

\end{document}

在此处输入图片描述

上面显示的编译结果是你想要的吗?

附录:

  • 看来我对标题的假设是错误的。显然楼主喜欢将标题垂直对齐,就像表格中的图像对齐一样。
  • 这可以通过将图像、表格及其标题插入下表来实现(相对简单)。
\documentclass[border=3.141592, preview]{standalone}
\usepackage[export]{adjustbox}      % <---

\usepackage{tabularray}            % <---
\UseTblrLibrary{booktabs, counter, varwidth}

\usepackage[skip=1ex]{caption}
\usepackage{subcaption}

\begin{document}
    \begin{figure}
\captionsetup[subfigure]{skip=-\abovecaptionskip}
    \begin{tblr}{colspec = {X[c] X[c]},
         rowsep  = 0pt, 
         measure = vbox % <---- that subcaptions works
        }
\includegraphics[width=\linewidth,valign=T]{example-image-duck}
    &  \begin{tblr}[t]{colspec={| *{4}{r}|} }
        \toprule
    0  &  1 & 0 &  1  \\
        \midrule
    0  &  1 & 0 &  1  \\
    1  & -1 & 1 & -1  \\
        \bottomrule
    \end{tblr}               \\
\subcaption{figure}
    &   \subcaption{table}
    \end{tblr}
\caption{figure}
    \end{figure}
\end{document}

在此处输入图片描述

答案2

您需要子浮点数吗?如果要添加子标题,则需要子浮点数,但您没有。

为了实现顶部对齐,请降低图像和tabular的高度。

\documentclass{article}
\usepackage{graphicx}
\usepackage[export]{adjustbox}
\usepackage{array}

\begin{document}

\begin{figure}[!htp]

\setlength\extrarowheight{0.5mm} % for a less cramped "look"
\large

\raisebox{-\height}{%
  \includegraphics[width=0.5\textwidth,valign=T]{example-image}%
}\hfill
\raisebox{-\height}{%
  \begin{tabular}{ | *{4}{w{c}{1cm}|} }
  \hline
  0  & 1 & 0  & 1  \\
  \hline
  0  & 1 & 0  & 1  \\
  1 & -1 & 1  & -1 \\
  \hline
  \end{tabular}%
}

\caption{A figure with an accompanying table}

\end{figure}

\end{document}

你没有说C是什么,但我猜它是用于固定宽度的居中列:w{c}{<width>}代替使用。

在此处输入图片描述

相关内容