嵌套子浮点数,带有详细的标题控制

嵌套子浮点数,带有详细的标题控制

我有四张图片,每张图片都有对应的一小部分的放大版本。我想将它们排列成缩小版本并排在一行上,而对应的放大版本则位于第二行下方。

然后,我希望下行下方只有子浮点标题数字(a,b,c......),以便a同时引用完整视图和缩放视图。

我尝试从这里修改 Thorsten Donig 的例子:抑制子图编号,结果是下面的代码确实实现了我想要的功能。

所以,我的问题是,我的方法是否是一种聪明的方式来做我想做的事情,或者是否有更好的方法来获得具有细粒度字幕控制的嵌套子图的效果?

谢谢。

\documentclass[11pt,a4paper,english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[includeheadfoot,margin=3cm]{geometry}
\usepackage[font=small,labelfont=bf,tableposition=top]{caption}
\usepackage{blindtext}
\usepackage{subfig}

\title{Two subfigures without a caption}
\author{Myx}

\begin{document}
  \maketitle
  \blindtext

\begin{figure}[!htbp]
  \centering
    \captionsetup[subfigure]{labelformat=empty} % Turn off label display. Label counter keep counting silently
    % First row of figures (with no labels)
    \subfloat[]{
        \subfloat[]{
            \rule{6.4cm}{3.6cm}
        }
        \hspace{10pt}
        \subfloat[]{
            \rule{6.4cm}{3.6cm}
        }
    }

    % Second row of figures (with labels)
    \subfloat[]{
    \setcounter{subfigure}{0} % Reset label counter so next subfig starts at `a`
    \captionsetup[subfigure]{labelformat=default} % Turn label display back on
    \subfloat[]{
        \rule{6.4cm}{3.6cm}
    }
    \hspace{10pt}
    \subfloat[]{
        \rule{6.4cm}{3.6cm}
    }
    }

  \caption[Nested Subfloats]{Top row should have no captions, bottom row should start caption number at 'a'. }
  \label{fig.nested}
\end{figure}


  \blindtext
\end{document}

答案1

我会使用subcaption包而不是subfig(原因可以在subcaption 与 subfig)。由于只有底部行会接收标题,因此无需将顶部行放在subfigure环境中,并且minipage可以使用 s 来实现所需的对齐方式。实现您想要的效果的一种可能方法subcaption是:

\documentclass[11pt,a4paper,english]{article}
\usepackage[includeheadfoot,margin=3cm]{geometry}
\usepackage[font=small,labelfont=bf,tableposition=top]{caption}
\usepackage{subcaption}

\begin{document}

\begin{figure}[!htbp]
  \captionsetup[subfigure]{labelformat=simple}
  \begin{minipage}[b]{.5\linewidth}
    \centering
    \rule{6.4cm}{3.6cm}
  \end{minipage}%
  \begin{minipage}[b]{.5\linewidth}
    \centering
    \rule{6.4cm}{3.6cm}
  \end{minipage}\\[2em]
  \begin{subfigure}[b]{.5\linewidth}
    \centering
    \rule{6.4cm}{3.6cm}
    \caption{}
    \label{fig:sub3}
  \end{subfigure}%
  \begin{subfigure}[b]{.5\linewidth}
    \centering
    \rule{6.4cm}{3.6cm}
    \caption{}
    \label{fig:sub4}
  \end{subfigure}%
  \caption{A figure with four subfigures}
  \label{fig:test}
\end{figure}

\end{document}

答案2

我使用subfig及其\subfloat宏的唯一原因是获取子图标题。那么,如果你不想要它们,为什么要使用它呢?你不必强迫你把所有的图片在里面figure\subfloat只需将\includegraphics(或其他)宏放入其中即可。如果您想以特殊方式将它们与其他带有标题的图像对齐,可以将它们放入 s 中minipage。或者,您可以堆叠内部图片 \subfloat所以它们只有一个标题。没有规则阻止您将多幅图像或其他代码放入\subfloat主浮动窗口。

\documentclass[11pt,a4paper,english]{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{babel}
\usepackage[includeheadfoot,margin=3cm]{geometry}
\usepackage[font=small,labelfont=bf,tableposition=top]{caption}
\usepackage{blindtext}
\usepackage{subfig}

\title{Two subfigures without a caption}
\author{Myx}

\begin{document}
  \maketitle
  \blindtext

\begin{figure}[!htbp]
    \centering
    % First row of images (with no labels)
    \rule{6.4cm}{3.6cm}%
    \hspace{10pt}%
    \rule{6.4cm}{3.6cm}%

    % Second row of images (with labels)
    \subfloat[]{%
        \rule{6.4cm}{3.6cm}%
    }%
    \hspace{10pt}%
    \subfloat[]{%
        \rule{6.4cm}{3.6cm}%
    }%

  \captionof{figure}[Nested Subfloats]{Top row should have no captions, bottom row should start caption number at 'a'. }
  \label{fig.nested}
\end{figure}


  \blindtext
\end{document}

结果

答案3

您基本上只想标记列,对吗?那么我建议如下。

使用 subfloat 排列您的图形,并在添加标题之前重置计数器。

\documentclass{article}

\usepackage{subfig}

\makeatletter
\newcommand{\clearsubcaptcounter}{\setcounter{sub\@captype}{0}}
\makeatother

\begin{document}

\begin{figure}
  \centering
  \subfloat{\rule{4cm}{4cm}}
  \hspace{1em}
  \subfloat{\rule{4cm}{4cm}}\\
  \clearsubcaptcounter
  \subfloat[Column 1]{\rule{4cm}{4cm}}
  \hspace{1em}
  \subfloat[Column 2]{\rule{4cm}{4cm}}
\end{figure}

\end{document}

命令 \clearsubcaptioncounter 重置标题的标签。

相关内容