我正在尝试使用 psfrag 包更改一些扩展名为 .EPS 的图形中的文本。不幸的是,我用来准备这些图形的软件之一 cad CATIA 没有 EPS 输出(只有 DXF、PDF、SVG、PS、PNG、JPG、TIFF 等...)。然后,我将图形保存为 pdf,并使用 Adobe Acrobat 将获得的文件转换为 EPS。但 psfrag 似乎无法处理这个最终文件。
我正在使用的另一款软件 SigmaPlot 具有 EPS 输出,但 psfrag 无法对此输出进行操作。似乎存在不同的 EPS 格式或代码,而我得到的那些格式或代码无法被 psfrag 使用。我已阅读了很多关于此论点的帖子,因此如果这又是重复已解释的内容,请原谅。不过,我必须承认,我并没有真正理解所提供的答案,可能是因为我是 Latex 的初学者。
然后,我想问:有不同的 EPS 格式吗?我怎样才能得到 psfrag 可以使用的格式?哪个文件更适合传递,我的意思是最好先生成 PDF,然后将其转换为 EPS,或者也许最好先有一个 JPG?我怎样才能从第一个生成的文件中获取 EPS?或者换句话说,在 Latex 中处理这个问题的最佳方法是什么。提前谢谢
答案1
一般来说,封装的 postscript ( eps
) 文件是一组描述如何绘制图形的几何指令。如果 eps 文件包含的指令翻译如下:
使用此字体,将标签“y=x”放在此处
然后psfrag
可以拦截指令并更改y=x
为其他内容。不过,标签周围的空格有时会造成麻烦(见下文)。但是,某些eps
文件(特别是从 Maple 导出的文件)包含用于绘制字符本身的几何指令。psfrag
在这种情况下,该包无法工作。第三种情况(最糟糕的情况)是文件eps
可以包含位图(彩色点的集合)。如果标签以这种方式存储,则无法用替换psfrag
,并且如果调整图形大小,它们会变形。
对于您的 CATIA 图形,最好的方法是导出到 postscript ( ps
),然后使用ps2eps
将边界框添加到文件(边界框的存在/不存在是 postscript 和封装 postscript 之间的唯一区别)。然后重试psfrag
。
对于失败的情况psfrag
,请尝试使用您最喜欢的文本编辑器打开文件,然后搜索标签。假设您使用了标签y=x
。如果幸运的话,postscript 代码将包含如下指令
(y=x ) CShow
有很多种方法,但关键是您可以删除周围找到的任何空格,y=x
以便正常psfrag
工作。如果您在任何地方都找不到标签,那么字符要么是单独绘制的,要么是位图绘制的。除非您能找到一个选项来更改图形绘制软件导出 PostScript 代码的方式,否则恐怕您就会陷入困境。
答案2
总结答案和评论:
在 Catia 中,首先将图像保存为 .pdf,然后在 Adobe 中调整大小并保存为 .eps,但您需要使用单字母标签。
在 SigmaPlot 中,首先将图像导出为 .emf(增强型图元文件),然后在 Adobe 中调整大小并保存为 .eps,但需要使用单字母标签。(不幸的是,psfrag 似乎无法识别由 SigmaPlot 直接生成的 .eps 文件中的标签)
非常感谢 David Carlisle 和 Ian Thompson。