LaTeX 嵌入MATLAB 绘图的字体

来源:互联网 发布:qq的端口号是多少 编辑:程序博客网 时间:2024/05/22 08:22

两次遇到使用Ctex生成PDF没有嵌入MATLAB字体的问题,解决方案分别如下:

第一次:

编辑Ctex的配置文件:CTEX\MiKTeX\dvipdfm\config\dvipdfmx.cfg

将下面这段替换
%% GhostScript (MiKTeX):
D “mgs -q -dNOPAUSE -dBATCH -sPAPERSIZE=a0 -sDEVICE=pdfwrite -dCompatibilityLevel=1.3 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=%o %i -c quit”

替换成:

D “mgs.exe -sPAPERSIZE=a4 -dSAFER -dBATCH -dNOPAUSE -sDEVICE=pdfwrite -dPDFSETTINGS=/printer -dMaxSubsetPct=100 -dSubsetFonts=true -dEmbedAllFonts=true -dCompatibilityLevel=1.4 -dAutoFilterGrayImages=false -dGrayImageFilter=/FlateEncode -dAutoFilterColorImages=false -dColorImageFilter=/FlateEncode -dUseFlateCompression=true -sOutputFile=\”%o\” \”%i\” -c quit”

原来MiKTeX使用了一个叫mgs的命令完成这一步的,它的参数几乎和gs一样,添加相应的参数变成下面的这句话,就可以将达到嵌入所有字体的效果了。

这样就解决了问题,字体能够嵌入,perfect。

第二次:

重新安装了Ctex之后就搞怪,一定要在\usepackage{graphicx}后面添加\usepackage{epstopdf}才可以插入eps图片。而且这次使用上面的方法嵌入字体竟然不灵了。吊鬼!网上有人说将PDF使用Adobe pdf虚拟打印机打印一下就好。打印之后字体确实嵌入了,但是发现页面边距竟然变了,很不爽。折腾了好久,终于找到了下面的解决方案:

第一步: 将eps转化为嵌入字体的pdf
gswin32c.exe -dNOPAUSE -dBATCH -dEPSCrop -q -sDEVICE=pdfwrite -dCompatibilityLevel#1.3 -dPDFSETTINGS=/prepress -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=temp.pdf your_file.eps
第二步: 将pdf转化回eps
pdftops.exe -eps temp.pdf temp.eps
这里pdftops.exe是xpdf中的一个工具
或者
gswin32c.exe -q -dNOPAUSE -dBATCH -dNOCACHE -sDEVICE=epswrite -sOutputFile=temp.eps temp.pdf

这个方案也解决的问题,但是感觉不那么完美。原来图片上面的文字不可以选中啦,虽然图片依然是矢量图片。奇怪!

令:

有人在[http://bbs.ctex.org/forum.php?mod=viewthread&tid=40555]中整理了自己的解决方案:

问题解决了,总结一下。
用的版本是中文TeX套装,WinEdt Version 5.3,使用的格式模板是IEEEtran。 (winxp+sp2)
首先加入了arial,helvet,times三个宏包
1、对其他字体的嵌入用以下方案
将texmf/dvipdfm/base/config下,dvipdfmx.cfg 中的:f psfonts.map 改为:f dvipdfm_dl14.map
我测试时不起作用
将dvipdfmx.cfg拷贝一个到localtexmf\dvipdfm\config\目录下,做同样修改。搞定其他字体。
此时除了Helvetica字体无法嵌入以外,其他字体均可嵌入。
2、对Helvetica字体的嵌入
使用的方法:
gswin32c -dSAFER -dNOPAUSE -dBATCH -sDEVICE=pdfwrite -sPAPERSIZE=letter
-dPDFSETTINGS=/printer -dCompatibilityLevel=1.3 -dMaxSubsetPct=100
-dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=output.pdf input.ps
发现生成的pdf为一空白页!
查找原因,发现我用winedt生成的ps文件在Gsview中无法打开。看了提示貌似是因为找不到字体而打不开,
不知道是不是这个原因造成的。问题还是没有搞定。

因为我的字体嵌入问题是由于matlab生成的eps图造成的,按照楼上的方法:
第一步: 将eps转化为嵌入字体的pdf
gswin32c.exe -dNOPAUSE -dBATCH -dEPSCrop -q -sDEVICE=pdfwrite -dCompatibilityLevel#1.3 -dPDFSETTINGS=/prepress -dSubsetFonts=true -dEmbedAllFonts=true -sOutputFile=temp.pdf your_file.eps
第二步: 将pdf转化回eps
pdftops.exe -eps temp.pdf temp.eps 这里pdftops.exe是xpdf中的一个工具
在第二步又出现问题,用pdftops.exe竟然毫无反应,不知道是不是我下载的软件有问题。
我直接将生成的temp.pdf另存为temp.eps。 然后在对文档进行编译 Latex -> dvi-ps -> ps-pdf,生成pdf后问题搞定!!

虽然问题解决了,但是中间出现了很多问题没弄明白,希望可以知道的人讨论一下。

特此收藏!

0 0
原创粉丝点击