我正在尝试将图形标题放在图形上方。我找到了一些可以做到这一点的代码,我可以让它适用于普通图形 - 例如,我可以将“图 1”叠加在图形上方。但是,它不适用于叠加子图的标题,例如“(a)”等。请参阅我帖子末尾的绘制示例,了解我想要做什么。
在下面的示例中,我粘贴了尝试使用的代码。子图出现在文档中,但缺少标题。正常图形正常工作,标题以白色显示在图形中心。我不太明白这段代码是如何工作的,所以我很难修复子图的情况,但我猜这与线条有关?\gdef\capoverlay{#1#2#3\par}
有人知道如何让它工作吗?
谢谢你的帮助!
\documentclass{article}
\usepackage{graphicx,caption,subcaption,tikz}
\usetikzlibrary{calc}
\DeclareCaptionFormat{overlay}{\gdef\capoverlay{#1#2#3\par}}
\DeclareCaptionStyle{overlay}{format=overlay}
\newcommand{\captionOverlay}[1]{%
\captionsetup{format=overlay}
\caption{}
\begin{tikzpicture}
\node[anchor=south west,inner sep=0](image)at(0,0){#1};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw let \p1 = (1,0) in node[color=white] at (0.5,0.5) {\capoverlay};
\end{scope}
\end{tikzpicture}%
}
\begin{document}
\begin{figure}[htpb]
\centering
\begin{subfigure}[b]{0.3\textwidth}
\centering
\captionOverlay{\includegraphics[width=\textwidth]{image03}}
\label{subA}
\end{subfigure}
%
%
\begin{subfigure}[b]{0.3\textwidth}
\centering
\captionOverlay{\includegraphics[width=\textwidth]{image}}
\label{subB}
\end{subfigure}
\caption{}
\label{mainFig}
\end{figure}
\begin{figure}[htpb]
\centering
\captionOverlay{\includegraphics[width=\textwidth]{image}}
\label{normalFig}
\end{figure}
\end{document}
答案1
这似乎有效,但我真的不明白为什么。请注意,我没有您的图片,所以我不得不替换它们,而且白色在示例中也显示不出来mwe
。但是,如果您仔细观察,您可以看到标题……
\documentclass{article}
\usepackage{graphicx,caption,subcaption,tikz}
\usetikzlibrary{backgrounds}
\usetikzlibrary{calc}
\DeclareCaptionFormat{overlay}{\gdef\capoverlay{#1#2#3\par}}
\DeclareCaptionStyle{overlay}{format=overlay}
\DeclareCaptionFormat{suboverlay}{\gdef\subcapoverlay{(\thesubfigure) #3\par}}
\DeclareCaptionStyle{suboverlay}{format=suboverlay}
\newcommand{\captionOverlay}[1]{%
\captionsetup{format=overlay}
\caption{}%
\begin{tikzpicture}
\node [inner sep=0] (image) {#1};
\draw node [white] {\capoverlay};
\end{tikzpicture}%
}
\captionsetup[subfigure]{format=suboverlay}
\newcommand{\subcaptionOverlay}[1]{%
\subcaption{}%
\begin{tikzpicture}
\node [inner sep=0] (image) {#1};
\draw node [white] {\subcapoverlay};
\end{tikzpicture}%
}
\begin{document}
\begin{figure}[htpb]
\centering
\begin{subfigure}[b]{.3\textwidth}
\centering
\subcaptionOverlay{\includegraphics[width=\textwidth]{example-image-a}}
\label{subA}
\end{subfigure}
\begin{subfigure}[b]{0.3\textwidth}
\centering
\subcaptionOverlay{\includegraphics[width=\textwidth]{example-image-a}}
\label{subB}
\end{subfigure}
\caption{}
\label{mainFig}
\end{figure}
\begin{figure}[htpb]
\centering
\captionOverlay{\includegraphics[width=\textwidth]{example-image-a}}
\label{normalFig}
\end{figure}
\end{document}