我正在使用该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
,而是始终使用选定的浮动样式,该样式具有固定的预定义标题位置。在这方面,它们的行为与 和 不同figure
。table
(顺便说一句:为了使figure
和 的table
行为类似于用 定义的环境\newfloat
,该float
包提供了\restylefloat
。)
因此,如果您想要一个行为类似于和的浮动环境figure
,table
并让您将放置在\caption
您想要的位置,请不要使用包提供的\newfloat
但\DeclareFloatingEnvironment
(或) ,或由 KOMA-Script 文档类提供的。\DeclareCaptionType
newfloat
\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
的样式:float
floatrow
\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
您可以使用\captionof
from 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}