我正在尝试在 Latex 中创建一个复合图形,通过将两幅图像(png)层叠在一起并添加文本标签。
遗憾的是,这在 LaTeX 中实现起来似乎出奇地困难。
我尝试了 overpic 包,但发现它非常麻烦:我不想有一个基础图像来叠加其他图像,因为坐标是错误的。
Tikz 看起来不错,我可以使用以下方式添加图像:
\begin{figure}[hbtp]
\centering
\begin{tikzpicture}
\node at (0,0) {\includegraphics[width=.9\textwidth]{image1}};
\node at (0,0) {\includegraphics{image2}};
%\node at (0,0) {text}; doesn't work
\end{tikzpicture}
\end{figure}
但是,图像是并排放置的,而不是重叠的。而且我也不知道如何在给定的坐标处添加文本。手册看起来也相当混乱,所以如果有人能提供一些推荐的例子或建议,我将不胜感激。
谢谢
答案1
改良版
为了获得更好的控制,您可以使用Caramdir's answer
到使用 TikZ 在图像上绘图这个想法是将图片放置在左下角位于 TikZ 坐标系原点的位置;添加了一个辅助网格(参见Jake's answer
同样的疑问),只是为了在放置其他元素时轻松地可视化坐标:
\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\begin{document}
\begin{figure}[hbtp]
\centering
\begin{tikzpicture}
\node[anchor=south west] at (0,0) (image1) {\includegraphics[width=.9\textwidth]{example-image-a}};
\begin{scope}[x={(image1.south east)},y={(image1.north west)}]
% draw a grid
\draw[help lines,xstep=.1,ystep=.1,overlay] (0,0) grid (1,1);
% draw ticks
\foreach \x in {0,1,...,9} { \node [anchor=north,overlay] at (\x/10,0) {0.\x}; }
\foreach \y in {0,1,...,9} { \node [anchor=east,overlay] at (0,\y/10) {0.\y}; }
\node at (0.2,0.3) {\includegraphics[width=3cm]{example-image-b}};
\node at (0.6,0.8) {\includegraphics[width=3cm]{example-image-c}};
\node[fill=white] at (0.8,0.4) {some additional test text};
\end{scope}
\end{tikzpicture}
\end{figure}
\end{document}
第一个版本
您可以简单地使用以下overlay
选项:
\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\begin{document}
\begin{figure}[hbtp]
\centering
\begin{tikzpicture}
\node at (0,0) {\includegraphics[width=.9\textwidth]{example-image-a}};
\node[overlay] at (0,0) {\includegraphics[width=3cm]{example-image-b}};
\node[overlay] at (0,0) {some test text};
\end{tikzpicture}
\end{figure}
\end{document}
或者命名第一个节点并使用该名称放置其他元素:
\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\begin{document}
\begin{figure}[hbtp]
\centering
\begin{tikzpicture}
\node at (0,0) (image1) {\includegraphics[width=.9\textwidth]{example-image-a}};
\node at (image1.center) {\includegraphics[width=3cm]{example-image-b}};
\node at (image1.center) {some test text};
\end{tikzpicture}
\end{figure}
\end{document}