使用子图时,我想让两个图形相互重叠,但同时我希望第一个图形与第二个图形稍微重叠。但是使用以下代码,第二个图形与第一个图形重叠。我该如何改变这种情况?谢谢!
\begin{figure}
\centering
\begin{subfigure}{0.55\textwidth}
\includegraphics[width=1\linewidth]{fig1.png}
\label{fig:Ng1}
\end{subfigure}
\vspace{-5mm}
\begin{subfigure}{0.55\textwidth}
\includegraphics[width=1\linewidth]{fig2.png}
\label{fig:Ng2}
\end{subfigure}
\caption[...]{....}
\end{figure}
答案1
此解决方案使用保存框以正确的顺序创建子图(以防您想要添加标题)。它使用 tikz 定位子图并创建边界框。
\documentclass{article}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\usepackage{tikz}
\begin{document}
\hrule
\begin{figure}[h]
% create subfigures in the correct order
\sbox0{\begin{subfigure}[b]{0.5\textwidth}
\includegraphics[width=1\linewidth]{example-image-a}
\label{fig:Ng1}
\end{subfigure}}%
\sbox1{\begin{subfigure}[b]{0.5\textwidth}
\includegraphics[width=1\linewidth]{example-image-b}
\label{fig:Ng2}
\end{subfigure}}%
%
\centering
\begin{tikzpicture}% use absolute positioning and create a bounding box
\node[inner sep=0pt] at (0,0) {\usebox1};% second subfigure at bottom
\node[inner sep=0pt] at (0,\ht1-10mm) {\usebox0};% first subfigure at top with 10mm overlap
\end{tikzpicture}
\caption[...]{....}
\end{figure}
\hrule
\end{document}
答案2
这不太美观(可能也不合理)。您必须更改图片的顺序:第二张图片与第一张图片重叠,因此您必须先声明图片 2!
\documentclass{article}
\usepackage{lipsum}
\usepackage{graphicx}
\usepackage{caption}
\usepackage{subcaption}
\begin{document}
\lipsum[3]
\begin{figure}[h]
\centering
\begin{subfigure}[c]{0.45\textwidth}
\includegraphics[height=4cm]{example-image-b}%
\label{fig:Ng1}
\end{subfigure}
\llap{\raisebox{3cm}{%
\begin{subfigure}[c]{0.45\textwidth}
\includegraphics[height=4cm]{example-image-a}%
\label{fig:Ng2}
\end{subfigure}
}}
\caption{Figure 2 overlaps Figure 1.}
\end{figure}
\lipsum[3]
\end{document}
结果是: