加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

【LaTeX笔记之6】overpic宏包的使用

(2013-06-09 18:00:28)
分类: LaTeX备忘笔记
在学习中经常使用MATLAB绘制函数图象,这些图象可以保存为.eps格式,因而可以很方便的导入到LaTeX中,但这里面存在一个小小的bug,即这样处理后,eps文件里的中文字符无法在LaTeX中正确显示。解决的办法有很多,可以借助CorelDRAW、Adobe Illustrator等第三方软件处理eps文件,但最简单、最直接的方法肯定是使用overpic宏包。

从名字就可以看出overpic宏包实现的功能就是在原有图片上叠印LaTeX的输出。以图层的概念来理解的话,overpic实际上就是让用户在原有图片之上加一层文本图层,这样就可以在图中插入LaTeX的各种字符和公式了。

举一个例子,下图是MATLAB中humps函数的图象:
在LaTeX的导言区加入overpic宏包:
\usepackage[percent]{overpic}
其中percent表示后面的各种长度单位都以百分比表示,而不是绝对长度(inch、pt、cm等)。

在正文中输入以下指令:
\begin{figure}[htbp]
\centering
\begin{overpic}
[scale=0.8,grid,tics=5]{humps.eps}  % humps.eps是图片的文件名
\end{overpic}
\end{figure}
其中scale=0.8表示缩放比例为0.8,grid表示显示网格线,tics=5表示网格线间隔为5个单位,即5%。LaTeX的输出如下图所示:
http://s4/mw690/8f89555c4deb65b0bf2f3&690
之后修改上面的指令,使用\put指令在相应位置插入所需内容:
\begin{figure}[htbp]
\centering
\begin{overpic}
[scale=0.8,grid,tics=5]{humps.eps}
\put(32,65){最大值}
\put(60,32){极大值}
\end{overpic}
\end{figure}
其中\put(x,y){content}表示在网格图中(x,y)坐标处插入内容content。可以借助上面画出的网格线来判定应该插入的位置(可以适当减小tics的值使网格线更密,这样可以让位置判定更加精确)。
输出效果:
http://s8/mw690/8f89555c4deb66b4fbe07&690
如果对位置不满意的话,可以修改(x,y)重新编译,直至满意为止。(x,y)的取值范围不受图中显示网格坐标的限制,完全可以输入(-10,-20)、(150,-34)这样超出一般范围的左边。
修改满意后,去掉网格线即可:
\begin{figure}[htbp]
\centering
\begin{overpic}
[scale=0.8]{humps.eps}
\put(32,65){最大值}
\put(60,32){极大值}
\end{overpic}
\end{figure}
最终效果:
实际使用中还可以输入各种符号、公式。

下面是一个实际的例子,来自于我写的某门课程大作业的最终报告。
使用CorelDRAW画出的原图:
http://s12/bmiddle/8f89555c4deb688c3ae4b&690
在LaTeX中输入的指令(使用\usepackage[percent]{overpic}载入overpic宏包):
\begin{figure}[htbp]
\centering
\begin{overpic}
[scale=.42]{Fick_law.eps}
\put(5,0){$x$}
\put(95,14){$y$}
\put(13,79){$z$}
\put(25,49){$\md{}A$}    % \md就是\mathrm{d},使用\newcommand定义\md以简化输入
\put(18,14){$O$}
\put(49,59){\begin{turn}{23}$l=|\mb{r'}-\mb{r}|$\end{turn}}
\put(52,41){$\mb{r'}$}
\put(23,33){$\mb{r}$}
\put(40,55){$\theta$}
\put(21,40){$\mb{\Omega}$}
\put(31,57){$z$}
\put(88,69){$\Sigma_{\mathrm{s}}\phi(\mb{r'})$}
\put(81,75){$\md{}V$}
\end{overpic}
\end{figure}
其中使用了turn环境来实现文本内容的旋转显示(需要rotating宏包),\begin{turn}{23}......\end{turn}表示将文本内容逆时针旋转23°显示。

得到的结果如下图:

0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有