如何正确使用带有 threeparttable 的 subcaption

如何正确使用带有 threeparttable 的 subcaption

我正在尝试在环境中使用该subcaptionthreeparttable,但无法使其工作。我知道可能存在一些问题但我就是不能放弃 TPTT。

显然我没有收到错误消息,但子标题没有显示。

梅威瑟:

\documentclass[a4paper]{memoir}
\usepackage{geometry,array,graphicx,float,caption}
\usepackage{subcaption}
\usepackage{threeparttable}

\begin{document}
\begin{figure}[ht]
\caption{Samples picture} \label{fig:picture_temp}
    \centering
\begin{threeparttable}
    \begin{subfigure}{0.45\textwidth}
        \centering
        \includegraphics[width=6cm]{example-image-b}
        \caption{Before}
        \label{fig:1a}
    \end{subfigure}
    ~
    \begin{subfigure}{0.45\textwidth}
        \centering
        \includegraphics[width=6cm]{example-image-c}
        \caption{After}
        \label{fig:1b}
    \end{subfigure}    
    \begin{tablenotes}
     \item Diference in samples over the range of temperatures.
    \end{tablenotes}
    \end{threeparttable}
\end{figure}
\end{document}

抱歉,我实在无法抗拒这个梗。

两幅并排的图片,没有副标题

答案1

里面threeparttable的含义\@caption发生了变化。您希望里面的subfigure含义与 所确定的一样caption

\documentclass[a4paper]{memoir}
\usepackage{geometry,array,graphicx,caption}
\usepackage{subcaption}
\usepackage{threeparttable}
\usepackage{etoolbox}

\makeatletter
\AtBeginEnvironment{subfigure}{\let\@caption\caption@original@caption}
\AtBeginDocument{\let\caption@original@caption\@caption}
\makeatother

\begin{document}

\begin{figure}[ht]
\caption{Samples picture} \label{fig:picture_temp}
    \centering
\begin{threeparttable}
    \begin{subfigure}{0.45\textwidth}
        \centering
        \includegraphics[width=6cm]{example-image-b}
        \caption{Before}
        \label{fig:1a}
    \end{subfigure}
    ~
    \begin{subfigure}{0.45\textwidth}
        \centering
        \includegraphics[width=6cm]{example-image-c}
        \caption{After}
        \label{fig:1b}
    \end{subfigure}    
    \begin{tablenotes}
     \item Difference in samples over the range of temperatures.
    \end{tablenotes}
    \end{threeparttable}
\end{figure}
\end{document}

原始含义(经 进一步修改memoir)必须保存在文档开头。使用\AtBeginDocumentI 恢复该含义,但仅限于 内部subfigure。表格可能需要相同的操作。

在此处输入图片描述

答案2

subcaption用该subfig包替换了它并使用了该命令,现在它在(子)标题中\subfloat运行得非常好。\tnotes

可以找到另一种不使用 threeparttable 的选项这里使用简单的\footnotesize内部图形环境。

标题中包含 \tnote 的两个子浮点数

\documentclass[a4paper]{memoir}
\usepackage{geometry,array,graphicx,float,caption}
\usepackage{subfig}
\usepackage{threeparttable}

\begin{document}
\captionsetup[subfloat]{position=bottom}
\begin{figure}[ht]
\caption{Samples picture} \label{fig:picture_temp}
    \centering
\begin{threeparttable}
        \subfloat[Before]{
        \includegraphics[width=6cm]{example-image-b}
        \label{fig:1a} 
        }
    ~
        \subfloat[After \tnote{a}]{
        \includegraphics[width=6cm]{example-image-c}
        \label{fig:1b}
        }    
    \begin{tablenotes}
     \item Diference in samples over the range of temperatures.
     \item[a] Calculated.
    \end{tablenotes}
    \end{threeparttable}
\end{figure}
\end{document}

相关内容