使用 `subcaption` 和 `sidecap` 时出现布局问题

使用 `subcaption` 和 `sidecap` 时出现布局问题

我正在使用该sidecap包来制作侧边标题。我还想有子图(例如,分别用 a)、b)、c) 和 d) 标记的三个或四个子图)。

什么时候不是使用SCfigure环境,这就是我得到的(图形对齐正确,但标题显然不在侧面):

\documentclass[a4paper,twoside,11pt,openright]{scrbook}         
\usepackage{graphicx}
\DeclareGraphicsExtensions{.pdf,.png,.jpg}
\graphicspath{{./images/}}
\usepackage[wide]{sidecap}                                                      % custom captions on the side
\sidecaptionvpos{figure}{t}                                                     % captions should be on top
\sidecaptionvpos{table}{t}
\usepackage[font=footnotesize,
    format=plain,
    labelfont={bf,sf},
    nooneline,
    textfont={it}]{caption}

\usepackage{subcaption} 
\usepackage[twoside]{geometry}
\geometry{a4paper,
                    left=24.8mm,
                    top=27.4mm,
                    %headheight=\baselineskip,
                    %headsep=2\baselineskip,
                    textwidth=135mm,
                    marginparsep=8.2mm,
                    marginparwidth=28mm
                    }

\begin{document}
\begin{figure}
    \subcaptionbox{\label{fig:01:054a}}
          {\includegraphics[width=0.5\textwidth]{a}}
    \subcaptionbox{\label{fig:01:054b}}
          {\includegraphics[width=0.5\textwidth]{b}}
  \subcaptionbox{\label{fig:01:054c}}
          {\includegraphics[width=0.5\textwidth]{c}}
\caption{A test figure}\label{fig:01:054}
\end{figure}    

\end{document}

使用 <code>figure</code>

当使用SCfigure但只有两个子图时,结果令人满意,正确显示侧面标题:

\begin{SCfigure}
    \subcaptionbox{\label{fig:01:054a}}
          {\includegraphics[width=0.5\textwidth]{a}}
    \subcaptionbox{\label{fig:01:054b}}
          {\includegraphics[width=0.5\textwidth]{b}}
%  \subcaptionbox{\label{fig:01:054c}}
%          {\includegraphics[width=0.5\textwidth]{c}}
\caption{A test figure}\label{fig:01:054}
\end{SCfigure}  

使用带有两个子图的 <code>SCfigure</code>

当我取消注释最后一个时\subcaptionbox,我得到的结果如下:

使用带有三个子图的 <code>SCfigure</code>

为了width=0.5\textwidth在环境中正确显示三个或更多图形,我必须做什么figure?不可能只有我一个人将侧面标题与子图结合使用......

编辑:这个德国论坛主题,该软件包的作者subcaption声称它与兼容sidecap

答案1

我建议你使用更强大、更灵活的floatrow包(事实上,标题的作者也建议用这个包作为的替代sidecap)。

我注释掉了第一个之后的虚假空白,并在第二个之后\subcaptionbox添加了换行命令;我还添加了一个“假”的四幅图像(高度和宽度为零的规则),使第三个图像向左对齐而不是居中:\\0.5\textwidth

\documentclass[a4paper,twoside,11pt,openright]{scrbook}         
\usepackage{graphicx}
\DeclareGraphicsExtensions{.pdf,.png,.jpg}
\graphicspath{{./images/}}
\usepackage{floatrow}

\usepackage[font=footnotesize,
    format=plain,
    labelfont={bf,sf},
    nooneline,
    textfont={it}]{caption}

\usepackage{subcaption} 
\usepackage[twoside]{geometry}
\geometry{a4paper,
                    left=24.8mm,
                    top=27.4mm,
                    %headheight=\baselineskip,
                    %headsep=2\baselineskip,
                    textwidth=135mm,
                    marginparsep=8.2mm,
                    marginparwidth=28mm
                    }

\begin{document}

\thisfloatsetup{margins=hangright,capposition=beside,
capbesideposition={top,right},floatwidth=\textwidth}
\begin{figure}
    \subcaptionbox{\label{fig:01:054a}}
          {\includegraphics[width=0.5\textwidth]{example-image-a}}%
    \subcaptionbox{\label{fig:01:054b}}
          {\includegraphics[width=0.5\textwidth]{example-image-b}}\\
  \subcaptionbox{\label{fig:01:054c}}
          {\includegraphics[width=0.5\textwidth]{example-image-c}}\rule{.5\textwidth}{0pt}
\caption{A test figure}\label{fig:01:054}
\end{figure}    

\end{document}

在此处输入图片描述

相关内容