用 LaTeX 做幻燈片時(beamer),如何在插入的圖片上畫圖?
比如在一張插入的圖片上加個箭頭,目前看到的畫圖功能似乎都需要一個畫圖區域,無法和插入的圖片重疊。
@劉海洋 前輩的答案是對的。實際上需要做的就是在 TikZ 之類的繪圖工具繪圖的之前,用 includegraphics 命令插入圖片。這樣繪圖工具繪製的圖形就會「浮」在插圖的上方。
我覺得有必要補充一個非常實用的小技巧,因為這其實涉及到一個非常常見的需求。比如:已有的圖片上,圖例的字體和正文字體不同,直接插入顯得相當不協調。又比如題主想要在圖片上加上一些箭頭。這些對圖片進行「解釋性」的修改在寫文章的時候其實經常會遇到。
以下內容翻譯整理自 TeX.SX 上的一系列問答(graphics - Drawing on an image with TikZ)。
我們先來看一張圖片(來自 Wikipedia http://upload.wikimedia.org/wikipedia/commons/1/16/Mycena_interrupta.jpg),我們的任務是標記出圖片右上方明顯「突出來」的那一隻蘑菇(?)。
ode 里插了一副圖片,然後把 anchor 定在圖片的左下角,然後用 TikZ 在圖片上畫一個框。
egin{tikzpicture}
ode[anchor=south west,inner sep=0] at (0,0) {includegraphics[w= extwidth]{some_image.jpg}};
draw[red,ultra thick,rounded corners] (7.5,5.3) rectangle (9.4,6.2);
end{tikzpicture}
這樣得到結果:
任務雖然完成了,但是明顯的問題在於:(7.5, 5.3) 和 (9.4, 6.2) 這兩個坐標怎麼確定——總不能一點點試吧。
對於矩形的圖片,在圖片上確定位置最方便的方法自然是建立直角坐標系。Jake 在圖片上建立了一個直角坐標系,並且用 grid 在圖片上畫了一個網格。這樣確定位置就容易多了,而且,即使圖片進行拉伸、旋轉等各種變化,都能很容易地確定出坐標。
egin{tikzpicture}
% 引入圖片
ode[anchor=south west,inner sep=0] (image) at (0,0) {includegraphics[w=0.9 extwidth]{Mycena_interrupta.jpg}};
egin{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} {
ode [anchor=north] at (x/10,0) {0.x}; }
foreach y in {0,1,...,9} {
ode [anchor=east] at (0,y/10) {0.y}; }
% 作圖命令
draw[red, ultra thick, rounded corners] (0.62,0.65) rectangle (0.78,0.75);
end{scope}
end{tikzpicture}
- ode 命令之後用圓括弧括起來的東西,是這個 node 的名字。有了名字之後,就可以在後續的代碼里引用這個 node。
- scope 環境建立了一個直角坐標系。圖片的右下角(south east)是 x 取值為 1 的點,圖片的左上角是 y 取值為 1 的點。
- 接下來的 draw 命令,用 grid 畫了一個網格,其中疏密可以用 xstep 和 ystep 來控制。
- 緊接著的兩條 foreach 是給圖片標上坐標值。
這樣編譯之後,所需要的坐標就一目了然了,在最後加上作圖命令即可。
任浩和孫曉博兩個人的回答似乎都有點扯遠了,挺驚訝從裡面甚至沒有看到「插圖」的存在。我認為你並不真的需要把任意兩個對象連起來,只是在插圖上做點標記而已。
在插圖上畫圖,你需要做的其實不過是:就像這樣(我假裝你會 tikz,不然也別畫什麼圖了):在畫圖時插圖。
documentclass{beamer}
usepackage{tikz}
egin{document}
egin{frame}
egin{tikzpicture}[nodes={inner sep=0}]
% 插圖
ode (a)
{includegraphics[w=3cm]{example-image-a}};
ode (b) at (5,0)
{includegraphics[w=3cm]{example-image-b}};
% 畫圖
draw[-&>,red,line w=2mm] (a) -- (b);
draw[&<-,blue,line w=2mm] (a) -- ++ (-1,-3);
draw[green,line w=1mm] (b.center) circle (1.5cm);
end{tikzpicture}
end{frame}
end{document}
beamer + PSTricks 可以實現下面這樣的效果:
來自於 http://www.icms.org.uk/downloads/pgcourses/Griffiths.pdf推薦閱讀:
※用 LaTeX 中使用 beamer 製作幻燈片,插入圖片的標題大小怎麼改變?
※倒著的Ω是什麼符號?
※LaTeX 如何在設置行距後讓字體垂直居中?
※LaTeX 公式中的逗號可以改成全形么?
※LaTeX把一個字元放在另一個上面, 但是字元寬度按照下面的字元來的效果怎麼做出來?
TAG:LaTeX | LaTeX排版與設計 | beamer |