在 Beamer 演示文稿中,我想在图形文件上放置一个框。例如,在一张幻灯片中,我想放置一个图形文件:
在下一张幻灯片中,我想在图像上放置一个框:
这种工作风格是我通常使用 MS Powerpoint 完成的。我想知道如何使用 Beamer 实现这一点。如果有其他优雅的方法可以实现类似的目的(即指向和强调图像的一部分),我也愿意接受任何建议。
答案1
这样怎么样:你有三个命令:
\imagenode
用于插入图片并设置一些尺寸- 可选的
\imagegrid
,有助于放置框架 \highlightbox
用于绘制框架
代码
\documentclass{beamer}
\usepackage{tikz}
\newcommand{\imagenode}[2][1]% [scale], filename
{ \node[above right,inner sep=0] (myimage) {\includegraphics[scale=#1]{#2}};
\path (myimage.north east);
\pgfgetlastxy{\myimagex}{\myimagey}
\pgfmathsetmacro{\myimagewidth}{\myimagex/28.453}
\pgfmathsetmacro{\myimageheight}{\myimagey/28.453}
}
\newcommand{\imagegrid}[4][help lines]% [options], steps, font, precision
{ \pgfkeys{/pgf/number format/.cd,fixed,precision=#4}
\foreach \x in {0,...,#2}
{ \draw[#1] (\x/#2*\myimagewidth,\myimageheight) -- (\x/#2*\myimagewidth,0) node[below] {#3\pgfmathparse{\x/#2}\pgfmathprintnumber{\pgfmathresult}};
\draw[#1] (\myimagewidth,\x/#2*\myimageheight) -- (0,\x/#2*\myimageheight) node[left] {#3\pgfmathparse{\x/#2}\pgfmathprintnumber{\pgfmathresult}};
}
}
\newcommand{\highlightbox}[8][densely dashed,thick]% [options], left, low, right, up, node options, node text, overlay spec
{ \only<#8>{\draw[#1] (#2*\myimagewidth, #3*\myimageheight) rectangle node[#6] {#7} (#4*\myimagewidth, #5*\myimageheight);}
}
\begin{document}
\begin{frame}
\begin{tikzpicture}
\imagenode[3]{book.png}
\imagegrid{10}{\tiny}{1}
\highlightbox[red,very thick]{0.1}{0.1}{0.7}{0.2}{blue}{red frame}{2}
\highlightbox{0}{0.3}{0.3}{0.7}{circle,draw,fill=green!50!gray,solid}{dash}{2-3}
\highlightbox[blue,fill=blue,fill opacity=0.3]{0.42}{0.23}{0.65}{0.74}{opacity=0.8,fill=orange,text opacity=1}{!?}{1,3}
\end{tikzpicture}
\end{frame}
\end{document}