我目前有一些 LaTeX 代码可以并排显示多幅图像:
\begin{figure*}
\begin{center}
\includegraphics[height=2cm]{foo11.jpg}
\includegraphics[height=2cm]{foo12.jpg}\\
\includegraphics[height=2cm]{foo21.jpg}
\includegraphics[height=2cm]{foo22.jpg}
\end{center}
\caption{my caption.}
\end{figure*}
我现在想添加一个小插图,例如在foo12.jpg
和里面foo22.jpg
。例如,将图像bar12.jpg
作为小缩略图放在 的右上角foo12.jpg
,将图像bar22.jpg
作为小缩略图放在 的右上角foo22.jpg
。
当然,我的目标是不是使用 Photoshop(或任何外部工具/脚本)来做到这一点,但直接在 LaTeX 中做到这一点。我想这应该是可行的(因为使用 Acrobat,我们可以将图像放在 PDF 中的任何位置,而 LaTeX 图形是“浮动的”),但我不知道该怎么做,也找不到任何资源来提供帮助。
答案1
如果您知道图像的尺寸,那么您可以使用凸起重叠轻松完成此操作。
\documentclass{article}
\usepackage{graphicx}% http://ctan.org/pkg/graphicx
\begin{document}
\begin{figure}
\centering
\setbox1=\hbox{\includegraphics[height=2cm]{example-image-b}}
\includegraphics[height=2cm]{example-image-a}\llap{\includegraphics[height=1cm]{example-image-c}}
\includegraphics[height=2cm]{example-image-a}\llap{\raisebox{1cm}{\includegraphics[height=1cm]{example-image-c}}} \\
\includegraphics[height=2cm]{example-image-b}\llap{\makebox[\wd1][l]{\includegraphics[height=1cm]{example-image-c}}}
\includegraphics[height=2cm]{example-image-b}\llap{\makebox[\wd1][l]{\raisebox{1cm}{\includegraphics[height=1cm]{example-image-c}}}}
\caption{My caption.}
\end{figure}
\end{document}
我使用了mwe
包裹,并且知道高度为1cm
,增加1cm
将填充2cm
原始图像的。但是,如果您不知道高度,可以始终将内容装箱并提取高度,就像我\setbox1=\hbox{...}
使用\wd1
(框 1 的宽度)所做的那样。可能有更好的方法来做到这一点。
答案2
该stackengine
软件包有此功能。已更新为较新的语法。
此处介绍的命令是\stackinset
。插入内容的六个参数是
\stackinset{<hrz>}{<offset>}{<vrt>}{<offset>}{<inset content>}{<base content>}
<hrz>
的值l
、c
或r
决定 H 偏移是从左侧、中心还是右侧。 的值<vrt>
、t
或c
决定b
V 偏移是从顶部、中心还是底部。
如您所见,偏移量也可以为负,本质上是将插图移到较大图形之外。
此套餐可在以下网站购买:https://ctan.org/pkg/stackengine,带有用于标签堆叠的配套包https://ctan.org/pkg/tabstackengine。
\documentclass{article}
\usepackage{stackengine}
\usepackage{graphicx}
\parskip 1em
\begin{document}
\def\big{\includegraphics[height=4cm]{example-image}}
\def\little{\includegraphics[height=1.2cm]{example-image}}
\stackinset{l}{2pt}{t}{5pt}{\little}{\big}
\stackinset{l}{25pt}{b}{5pt}{\little}{\big}
\stackinset{r}{7pt}{t}{7pt}{\little}{\big}
\stackinset{r}{-5pt}{b}{12pt}{\little}{\big}
\stackinset{c}{10pt}{c}{25pt}{\little}{\big}
\end{document}
答案3
借用一些优秀的代码使用 TikZ 在图像上绘图你可以使用以下方法实现tikz
代码
\documentclass{article}
\usepackage{tikz}
\usepackage{graphicx}
\begin{document}
\begin{figure}[!htb]
\centering
\begin{tikzpicture}
\node[anchor=south west,inner sep=0] (image) at (0,0) {\includegraphics[width=\textwidth]{mushroom}};
\begin{scope}[x={(image.south east)},y={(image.north west)}]
\draw[help lines,xstep=.1,ystep=.1] (0,0) grid (1,1);
\foreach \x in {0,1,...,9} { \node [anchor=north] at (\x/10,0) {0.\x}; }
\foreach \y in {0,1,...,9} { \node [anchor=east] at (0,\y/10) {0.\y}; }
\node[anchor=south west,inner sep=0] (image) at (0.5,0.7) {\includegraphics[width=0.1\textwidth]{tux}};
\end{scope}
\end{tikzpicture}
\caption{Find that penguin!}
\end{figure}
\end{document}