删除 \captionof 后的空格

删除 \captionof 后的空格

我正在尝试将图片及其标题嵌入到具有特殊布局的 tcolorbox 中。事实上,标题必须放在图片周围的“框架”中。

我在这里找到了不错的例子,我设法实现了我想要的 90%。我使用宏制作了一个双色 tcolorbox,其中图像位于上部,标题位于下部\captionof

但是,标题后面会多出一个空格。如果我用一些静态文本替换标题,就不会出现这个问题。

我搜索了该包的文档,但该选项\captionsetup{belowskip=0pt}没有任何效果。

如何才能减少宏产生的空间captionof

MWE 输出

这是 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因为它们的含义有时会根据的值而改变。这在的position2.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选项允许将标题框放在框内容下方。这样就不需要使用框bicolorcaptionof包来构造标题了。

这里有一个例子:

\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}

在此处输入图片描述

相关内容