我有 3 个子图:
\begin{figure}
\subfloat[Apple]{
\includegraphics{apple}
}
\subfloat[Orange]{
\includegraphics{orange}
}
\subfloat[Cherry]{
\includegraphics{cherry}
}
\end{figure}
我希望图像行背后的背景为纯黑色矩形,图像之间没有间隙。我该如何实现?
我已经colorbox
在单独的图像周围使用了,但这会在它们之间留下空隙。如果我将整个图像包裹起来,colorbox
那么标题也会有背景颜色,这是我不想要的。
我也尝试过tikz
在左上角和右下角放置一个节点,但是使用overlay
会将黑框放在图像顶部,而不是下方。
答案1
从代码中删除空格:
\documentclass[]{scrreprt}
\usepackage[demo]{graphicx}
\usepackage{subfig,xcolor}
\begin{document}
\begin{figure}
\subfloat[Apple]{%<---
\colorbox{red}{\includegraphics{apple}}%<...
}
\subfloat[Orange]{%<---
\colorbox{red}{\includegraphics{orange}}%<---
}
\subfloat[Cherry]{%<---
\colorbox{red}{\includegraphics{cherry}}%
}
\end{figure}
\end{document}
答案2
这个根本不使用 minipages、makebox 或 vphantom:
\documentclass{article}
\usepackage{caption,subcaption,xcolor}
%\captionsetup[subfigure]{margin=5pt}
\begin{document}
\begin{figure}
\captionsetup[subfigure]{margin=5pt}
\centering
\subcaptionbox
{A long caption about cherries that spans two lines}
[0.32\linewidth]
{\colorbox{black}{
{\color{red}\rule{0.3\linewidth}{90pt}}
}
}
\subcaptionbox
{A long caption about oranges that spans two lines}
[0.32\linewidth]
{\colorbox{black}{
{\color{orange}\rule{0.3\linewidth}{90pt}}
}
}
\subcaptionbox
{A long caption about apples that spans two lines}
[0.32\linewidth]
{\colorbox{black}{
{\color{green}\rule{0.3\linewidth}{90pt}}
}
}
\caption{Some fruits, with a black background to help with contrast.}
\end{figure}
\end{document}
答案3
迷你页面和captionsetup
救援
@Ulrike Fischer 的回答是一个很好的开始。通过将子图形精确地放在彼此旁边,您可以让每个子图形colorbox
接触下一个子图形。
但是,这会导致字幕彼此太近。为了解决这个问题,我将每个字幕包裹subfloat
在 中minipage
,并添加\captionsetup{width=0.95\textwidth}
以限制子字幕的宽度。确保每个字幕的内容colorbox
与所需空间一样宽也很重要,因此我又使用了minipage
。
例如:
\begin{figure}
\centering
\begin{minipage}{0.32\linewidth}
\captionsetup{width=0.95\textwidth}
\subfloat[A long caption about cherries that spans two lines]{
\colorbox{black}{
\begin{minipage}{\linewidth}
\centering
{\color{red}\rule{0.8\textwidth}{90pt}}
\end{minipage}
}
}
\end{minipage}
\begin{minipage}{0.32\linewidth}
\captionsetup{width=0.95\textwidth}
\subfloat[A long caption about oranges that spans two lines]{
\colorbox{black}{
\begin{minipage}{\linewidth}
\centering
{\color{orange}\rule{0.8\textwidth}{90pt}}
\end{minipage}
}
}
\end{minipage}
\begin{minipage}{0.32\linewidth}
\captionsetup{width=0.95\textwidth}
\subfloat[A long caption about apples that spans two lines]{
\colorbox{black}{
\begin{minipage}{\linewidth}
\centering
{\color{green}\rule{0.8\textwidth}{90pt}}
\end{minipage}
}
}
\end{minipage}
\caption{Some fruits, with a black background to help with contrast.}
\end{figure}
结果是:
改善这一点!
我倾向于过度使用迷你页面。请发布更好的答案,我会接受。
答案4
嗯,您确实使用了很多小页面。正如我在评论中所说,我会使用 \captionsetup{margin=...}。您还可以在浮动之间放置黑色规则。(我使用 makebox 来获得一点悬垂,这将关闭由于像素舍入而产生的小间隙)。
\documentclass[]{scrreprt}
\usepackage[demo]{graphicx}
\usepackage{subfig,xcolor}
\begin{document}
\begin{figure}\captionsetup{margin=2ex}\fboxsep=1ex
\subfloat[A long caption about apples that spans two lines]{%
\colorbox{black}{{\color{red}\rule{0.3\linewidth}{90pt}}}%<...
}%
\makebox[1cm]{\colorbox{black}{\vphantom{\rule{0.3\linewidth}{90pt}}\hspace{1cm}}}%
\subfloat[A long caption about apples that spans two lines]{%
\colorbox{black}{{\color{orange}\rule{0.3\linewidth}{90pt}}}%<---
}
\subfloat[Cherry]{%<---
\colorbox{black}{{\color{green}\rule{0.3\linewidth}{90pt}}}%
}
\end{figure}
\end{document}