我正在尝试将图片及其标题嵌入到具有特殊布局的 tcolorbox 中。事实上,标题必须放在图片周围的“框架”中。
我在这里找到了不错的例子,我设法实现了我想要的 90%。我使用宏制作了一个双色 tcolorbox,其中图像位于上部,标题位于下部\captionof
。
但是,标题后面会多出一个空格。如果我用一些静态文本替换标题,就不会出现这个问题。
我搜索了该包的文档,但该选项\captionsetup{belowskip=0pt}
没有任何效果。
如何才能减少宏产生的空间captionof
?
这是 MWE:
\usepackage[svgnames,usenames,dvipsnames,table]{xcolor}
\usepackage[showframe=false]{geometry}
\usepackage[many]{tcolorbox}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{caption}
\usepackage{lipsum}
\newtcolorbox{texample}[1][]{float, notitle, #1}
\usepackage{float}
\floatstyle{plain}
\newfloat{example}{thp}{lop}
\floatname{example}{\textsc{Figure}}
\begin{document}
\lipsum[2]
\begin{texample}[bicolor,sharp corners,
colback=white,colframe=gray!20,colbacklower=gray!20,
top=1mm,bottom=1mm,middle=1mm]
\centering
\includegraphics[width=.25\linewidth]{example-image}
\tcblower
\captionof{example}{Caption content, notice the big space that I'm trying to remove}
\end{texample}
\lipsum[2]
\end{document}
答案1
区分aboveskip
和有时会造成混淆,belowskip
因为它们的含义有时会根据的值而改变。这在的position
2.6 节中进行了讨论caption
文档。为了避免在这种情况下产生混淆,最好将其设置skip
为零。
\documentclass{article}
\usepackage[svgnames,usenames,dvipsnames,table]{xcolor}
\usepackage[showframe=false]{geometry}
\usepackage[many]{tcolorbox}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{caption}
\usepackage{lipsum}
\newtcolorbox{texample}[1][]{float, notitle, #1}
\usepackage{float}
\floatstyle{plain}
\newfloat{example}{thp}{lop}
\floatname{example}{\textsc{Figure}}
\begin{document}
\lipsum[2]
\begin{texample}[bicolor,sharp corners,
colback=white,colframe=gray!20,colbacklower=gray!20,
top=1mm,bottom=1mm,middle=1mm]
\centering
\includegraphics[width=.25\linewidth]{example-image}
\tcblower
\captionsetup{skip=0pt}
\captionof{example}{Caption content}
\end{texample}
\lipsum[2]
\end{document}
答案2
这不是对这个特定问题的答案,而只是我理解 OP 想要的另一种构造。
OP 想要将一张图片嵌入到tcolorbox
带有caption
标题的中,但标题位于图像下方,而不是通常的上方位置tcolorboxes
。
tcolorbox
包中有一些命令可以声明floating
框并将其包含在图形列表或任何浮点中。在这种情况下,标题以Figure ...
任何常规标题开头。此外,flip title
选项允许将标题框放在框内容下方。这样就不需要使用框bicolor
和captionof
包来构造标题了。
这里有一个例子:
\documentclass{article}
\usepackage[svgnames,usenames,dvipsnames,table]{xcolor}
\usepackage[showframe=false]{geometry}
\usepackage[many]{tcolorbox}
\usepackage[T1]{fontenc}
\usepackage[utf8]{inputenc}
\usepackage{lipsum}
\newtcolorbox[blend into=figures]{texfigure}[2][]{%
float, sharp corners, colback=white, colframe=gray!20,
enhanced, coltitle=black, halign title=center, flip title={sharp corners, colback=gray!20}, before upper={\centering}, title={#2}, #1}
\begin{document}
\lipsum[2]
\begin{texfigure}{This is the caption}
\includegraphics[width=.25\linewidth]{example-image}
\end{texfigure}
\lipsum[2]
\end{document}