\newfloat 内的图片标题

\newfloat 内的图片标题

我正在使用该float包创建自己的浮动图片。现在我还想添加一个带有自己标题的图片,但标题属于外部浮动图片。是否可以figure在我的浮动图片内创建类似环境的东西?我已经这样做了,但它在浮动图片内不起作用。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{graphicx}

\usepackage{blindtext}
\usepackage{float}
\usepackage{framed}

\newfloat{infobox}{tbp}{ext}

\begin{document}

\begin{infobox}
  \begin{framed}
    \blindtext      
    \includegraphics[width=0.85\textwidth]{dummy}
    \caption{Caption for the image}
  \end{framed}
\end{infobox}

\end{document}

示例输出

答案1

用 定义的浮动环境\newfloat不遵循命令的位置\caption,而是始终使用选定的浮动样式,该样式具有固定的预定义标题位置。在这方面,它们的行为与 和 不同figuretable(顺便说一句:为了使figure和 的table行为类似于用 定义的环境\newfloat,该float包提供了\restylefloat。)

因此,如果您想要一个行为类似于和的浮动环境figuretable并让您将放置在\caption您想要的位置,请不要使用包提供的\newfloat\DeclareFloatingEnvironment(或) ,或由 KOMA-Script 文档类提供的。\DeclareCaptionTypenewfloat\DeclareNewTOC

例如:

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[demo]{graphicx}% "demo" added because we don't have your picture file

\usepackage{blindtext}
%\usepackage{float}
\usepackage{caption}% caption added since you use it anyway
\usepackage{framed}

%\newfloat{infobox}{tbp}{ext}
\DeclareCaptionType[fileext=ext]{infobox}
  % \newfloat replaced by \DeclareCaptionType

\begin{document}

\begin{infobox}
  \begin{framed}
    \blindtext      
    \includegraphics[width=0.85\textwidth]{dummy}
    \caption{Caption for the image}
  \end{framed}
\end{infobox}

\end{document}

在此处输入图片描述

请注意,我已添加该caption包,因为(根据您的评论)您无论如何都会使用它。如果您不使用该caption包,那么最直接的方法是加载该newfloat包并使用\DeclareFloatingEnvironment

但:如果应该infoboxes构建一个不同的(恕我直言更好)方法,那么将使用(或)包boxed的样式:floatfloatrow

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage[demo]{graphicx}

\usepackage{blindtext}
\usepackage{float}

\floatstyle{boxed}
\newfloat{infobox}{tbp}{ext}
\restylefloat*{infobox}
\floatname{infobox}{Infobox}

\begin{document}

\begin{infobox}
  \blindtext      
  \includegraphics[width=0.85\textwidth]{dummy}
  \caption{Caption for the image}
\end{infobox}

\end{document}

(这\restylefloat*是必需的,这样标题才会被放置在框架内。如果没有它,标题将一直在框架之外。)

答案2

您可以使用\captionoffrom capt-of(或caption)。

\documentclass{article}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage[english]{babel}
\usepackage{graphicx}
\usepackage{capt-of} % or \usepackage{caption}

\usepackage{blindtext}
\usepackage{float}
\usepackage{framed}

\newfloat{infobox}{tbp}{ext}

\begin{document}

\begin{infobox}
  \begin{framed}
    \blindtext      
    \includegraphics[width=0.85\textwidth]{example-image}
    \captionof{figure}{Caption for the image}
  \end{framed}
\end{infobox}

\end{document}

相关内容