为带有侧面标题的子图定位一个 Minipage

为带有侧面标题的子图定位一个 Minipage

我使用minipage环境是为了在subfigure侧面添加一个标题。它工作正常。但我遇到了一个问题,因为我希望图形正好位于页面的水平中间,并且caption( minipage) 位于它之后。

代码:

\documentclass[
    BCOR12mm,
    DIV18,
    headsepline,
    twoside,
    idxtotoc,
    bibtotoc,
    liststotoc,
    openany,
    pointlessnumbers,
    12pt]{scrbook}
\usepackage{datatool}
\usepackage[english,ngerman]{babel}
\usepackage{textgreek}
\usepackage[T1,T2A]{fontenc}
\usepackage{lmodern}
    \usepackage[hang]{caption}        
    \usepackage{subcaption}              
    \usepackage[final]{graphicx}

\begin{document}

    \begin{figure}[!htb]
        \centering
        \begin{subfigure}[t]{\textwidth}
            \centering
            \includegraphics[height=0.1\textheight]{smallfig}
            \begin{minipage}{.2\textwidth}
            \caption{small}
            \end{minipage}
            \label{label}
        \end{subfigure}

        \begin{subfigure}[m]{\textwidth}
            \centering
            \includegraphics[height=0.4\textheight]{bigfig1}
            \begin{minipage}{.2\textwidth}
            \caption{big1}
            \end{minipage}
            \label{label}
        \end{subfigure}

        \begin{subfigure}[b]{\textwidth}
            \centering
            \includegraphics[height=0.4\textheight]{bigfig3}
            \begin{minipage}{.2\textwidth}
            \caption{big2}
            \end{minipage}
        \end{subfigure}
        \caption{3 centered Subfigures under each other with side captions on the right}
        \label{help}
      \end{figure}

\end{document}

\centering此处使整个subfigure(图形 + 标题) 位于中心,从而使图形略微向左对齐。我希望它完全居中。

编辑:为了进一步澄清我的问题,这里有一张我需要的手绘图像: 在此处输入图片描述

答案1

像这样:

在此处输入图片描述

\documentclass[
    BCOR12mm,
    DIV18,
    headsepline,
    twoside,
    idxtotoc,
    bibtotoc,
    liststotoc,
    openany,
    pointlessnumbers,
    12pt]{scrbook}
\usepackage{datatool}
\usepackage[english,ngerman]{babel}
\usepackage{textgreek}
\usepackage[T1,T2A]{fontenc}
\usepackage{lmodern}
    \usepackage[hang,singlelinecheck=false]{caption} % <------
    \usepackage{subcaption}
    \usepackage[demo]{graphicx}
\usepackage[export]{adjustbox}

\begin{document}

    \begin{figure}[!htb]
        \centering
        \begin{subfigure}{\textwidth}
            \centering
            \includegraphics[width=0.5\textwidth, height=0.1\textheight, valign=m]{smallfig}%
            \makebox[0pt][l]{\quad % <------
            \begin{minipage}{.2\textwidth}
            \caption{small}
            \end{minipage}
                            }
            \label{label}
        \end{subfigure}

    \medskip
        \begin{subfigure}{\textwidth}
            \centering
            \includegraphics[width=0.5\textwidth, height=0.4\textheight, valign=m]{bigfig1}%
        \makebox[0pt][l]{\quad % <------
           \begin{minipage}{.2\textwidth}
            \caption{big1}
            \end{minipage}
                        }
            \label{label}
        \end{subfigure}

        \medskip
     \begin{subfigure}[b]{\textwidth}
        \centering
        \includegraphics[height=0.4\textheight, valign=m]{bigfig3}%
   \makebox[0pt][l]{\quad  % <------
        \begin{minipage}{.2\textwidth}
        \caption{big2 big2 big2 big2 big2 big2 big2}
        \end{minipage}
                    }
        \caption{3 centered Subfigures under each other with side captions on the right}
        \label{help}
      \end{figure}

\end{document}

编辑(1): 对于标题的垂直居中,您需要将图像基线移动到其垂直中间。这可以通过不同的方式实现...其中之一是使用adjustbox包(如在姆韦多于):

编辑(2):

  • 在子图像之间添加空间\medskip(如果需要图像之间更大(或更小)的垂直距离,则应将其替换为\bigskip\smallskip或`\vspace{} 等)
  • 为了更好地定位子标题,已添加singlelinecheck=false到包的选项中caption
  • 带有标题的 s也minimapge向右移动,并在\quad其前面插入
  • \makebox[0pt][l]{...}(其中, 0pt表示盒子的宽度,表示l盒子的位置,详情请参见LaTeX/盒子)使图像的居中与标题的宽度无关。

相关内容