概述
既然使用 LaTeX 写作论文,那就使用与 LaTeX 配合流畅的绘图软 件,其操作一点儿也不难,多数有图形界面也有 Win 版,而且还是自由/免费的 软件。何乐而不为呢?
图像的一般处理
LaTeX 对图像的一般处理规则
eps/pdf 图的生成
能够生成 eps 图的软件相当多,这里只列举部分自由(免费)软件。这些软件从 使用方法上主要可以分成两类,一类具有图形界面,主要使用鼠标和菜单进行绘 图和图形元素的调整,推荐使用 Xfig、Dia 两款软件;另一类则以命令行为主, 绘图过程即是输入命令行的过程,虽然缺少了直观性,但图形位置精确,质量较 高,推荐 PSTricks、metapost 和 Gnuplot 等软件。
从用途上划分,绘图软件主要包括绘制数据图的软件和非数据图的软件,前者往 往伴随着数据及其处理,主要软件有 Gnuplot 等;后者则一般不涉及数据集, 主要软件有 Xfig, PSTricks, Dia 等。另外,R 和 gretl 等计量统计软件也带 有绘制数据图功能,尤其是与计量统计有关的数据图,因此也可以使用 R 和 gretl 来处理计量统计方面的数据图。
建议尽量使用矢量图,不要轻易使用非矢量图,这是提高论文排版质量的重要步 骤。其实,word 文档打印效果较差的重要原因就是所插入的图形常常是 jpg 等 非矢量图(即使是 jpg 格式,通常也要求达到 300dpi),甚至有些出版的图书 也有类似情况。
生成 eps 图后,可以使用转换程序将 eps 图转换成 pdf 图。常用的软件有: ImageMagik, epstopdf, ps2pdf 或者使用 pdf 虚拟打印程序。
中文或 LaTeX 数学公式符号的标注
图形中往往会涉及到中文标注或者 LaTeX 数学公式符号的标注,而以上绘图软 件需要加以处理。
- xfig 需要在启动时加上 -international 选项,并且还需要添加相应的 zh_CN.ps 文件,具体方法请参考这里。Dia 可以直接使用中文,将图像 export 成 eps with Pango fonts 即可,只是生成的eps 图较大。
- metapost 使用中文,可以参考王垠主页。
- PSTricks 属于 LaTeX 宏包之一,加载 CJK 后即可使用中文。
- gnuplot:可以先导出为 metapost 格式,再使用中文;或者先导出为 xfig 格式再使用中文。
除了以上方法外,还可以使用 psfrag 宏包,将 eps 图当中的英文标注替换为 中文或数学标注。方法大致如下:
首先使用以上软件画好图形,其中的文字标注先用英文代替。然后将图形export 成 eps 图。新建一个 LaTeX 文件 fig.tex,将前面生成的 eps 图使用 includegraphics 命令导入 fig.tex 文件。其中的文字标注部分则使用 psfrag 宏包加以处理,下面是一个实例:
documentclass[a4paper,10pt]{article} usepackage{CJK} usepackage{graphicx} usepackage{color} usepackage{psfrag} begin{document} begin{CJK*}{GBK}{song} thispagestyle{empty} psfrag{O}{$O$} psfrag{max U = x1x2}{$max U = x_1 x_2$} psfrag{min C = C(p)}{$min C = C(p)$} psfrag{E}{$E$} psfrag{X axes}{$X$ 轴} psfrag{Y axes}{$Y$ 轴} centerline{includegraphics{fig1.eps}} end{CJK*} end{document}
在将英文替换为中文时,注意:
- 可以使用 LaTeX 中的命令来调整字体和大小。
- 注意英文所占位置与中文位置的匹配,如果不好掌握,可以使用大写的 M 来 替代中文的位置,以便更好地定位。
- 使用 fixbb 脚本自动处理 bbox。如果使用 epstool 则在转换成新的 eps 图时可能会出现 bbox 计算不正确的情况,此时要充分利用 gv 上鼠标处所 显示的坐标来重新修改 bbox。
修改完成后,可以使用下面的 bash 脚本来处理。
#!/bin/bash # pst: convert pstricks tex file to eps and pdf latex $1.tex dvips $1.dvi -E -o $1.eps fixbb $1.eps #亦可使用 epstool 工具(如在 M$ Windows 系统下) #epstool --copy --bbox $1.eps $1_temp.eps #rm $1.eps #mv $1_temp.eps $1.eps epstopdf $1.eps echo "PSTricks/EPS --> eps/pdf, Job done."结果将自动生成 eps 和 pdf 文件。其中使用了 fixbb 脚本,此脚本可从
关于 bbox 的问题
使用 dvips 生成 eps 文件时会可能会出现 bbox 计算不正确的情况,此时可以 使用 fixbb 脚本加以处理。该脚本可从
另外,亦可使用 epstool 工具处理。不过 epstool 在计算 bbox 时可能会忽略 掉部分中文。此时,需要手工修改 eps 图的 bbox 范围。技巧是将 gv 中显示 范围由 BBOX 改为 Letter 或 A4 等,然后使用鼠标获取合适的 bbox 坐标(左 下角和右上角)。
使用技巧与备忘
gnuplot 的使用技巧
- 建议先准备模板,在模板基础上稍事修改,然后用 load 命令即可使用,可以省下很多工作。
- 画直方图时,使用 boxes 的风格即可,另外还需要设定 boxwidth 为 2 或 其他值。另外,gnuplot 最新版本提供了专门画直方图的命令。
关于 OOo 转换的 pdf 转 eps 问题
使用 OOo 画图或者由 OO calc 生成的图表均可以直接粘贴到 OOdraw 当中,然 后输出为 eps 图即可。
如果使用 OOwriter (注意不是 OOdraw) 画表格或制作一些图形,将它们转换成 pdf 格式。然后可以使用 pdf2ps (pdf2ps fig.pdf) 或 pdftops (pdftops -eps fig.pdf fig.eps) 得到 eps 图,前者虽然扩展名是 ps 但 bbox 已计算 好,可以直接插入 LaTeX 文档。不过,屏幕显示的效果不是很好,因为文字较 模糊,用的不是矢量字体。
如果 pdf 文件右下角是表格的一部分,则上述软件在计算 bbox 时只以文字为 准,可能会漏掉表格边缘线。此时需要使用 fixbb 脚本或手工校正 bbox。
关于透明图像的问题
pgf 宏包
如果使用 pdflatex 编译的话(如 beamer),可以使用 pgf 宏包生成用于 pdf 的具有透明背景的图片。注意,xpdf 不支持这一功能。
步骤大致如下:
- 首先使用 gimp 等工具生成原始图像对应的 mask 文件,该文件实际上是由 原图转换而成的灰度图。
- 在 beamer 中声明 mask 文件,并在 image 声明中指明。
pgfdeclaremask[]{maskname}{filename} pgfdeclareimage[mask=maskname,width=.5textwidth]{imagename}{filename} logo{hbox{pgfuseimage{imagename}}}
Xfig
使用 xfig 程序制作的矢量图,其背景一般是透明的。不过要注意,通过在 xfig 中引入透明背景的 png 图而生成的 eps 图并不能使背景透明,而且 acroread 无法正常阅读。
xfig 绘图技巧
- 添加文字时注意将文字的对齐方式调整为居中对齐,以便随后对标注进行替换 。居中对齐可以免去调整座标的麻烦。
- 画好图后,建议先导出 eps 图,查看实际效果,因为有时候 xfig 程序中的 效果并不一定和 eps 图一致。
- 当需要将英文标注替换成公式或中文时,建议先将 xfig 图导出为 metapost 形式。
- 注意 dimensional line (量度线) 中应该适当给中文标注腾出必要的空间。 该量度线的画法如下:首先选择 polyline 图标,在下面找有关量度线的 panel,改变其中的设置,然后 Shift-Mouse Button 1 绘制起点和终点。
- 注意 open compound objects 的使用,有时无法对某个对象进行操作时,可 以考虑将该对象拆开或者打开。
- 注意 Zoom 的使用,当图形太小时可以放大。
- xfig 中的 undo 只能恢复到最近的一次操作。注意备份。
potrace 的使用技巧
- 主要功能:将位图文件转换成矢量图。
- 简要使用方法:先将原图转换成黑白图,格式为 bmp。然后使用下面的命令行 转换成 eps 图。
- 命令行:
mkbitmap -s 2 -t 0.35 yourfig.bmp | potrace yourfig.pbm适当调整 -t 0.35 的参数以得到明暗适中的矢量图。建议使用 potracegui。
最后
以上就是坚定饼干为你收集整理的latex图像处理的全部内容,希望文章能够帮你解决latex图像处理所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
发表评论 取消回复