我目前正在使用eps2eps和epstopdf在Matlab中编写脚本。当我使用来自Matlab的eps2eps或epstopdf时,会发生以下情况:
>> system('eps2eps TEMP97062.ps TEMP97062.eps');
Error: /undefined in --definefont--
Operand stack:
false CMR10 --dict:12/21(L)-- Font definefont --dict:30/32(L)-- unknownerror
Execution stack:
%interp_exit .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- --nostringval-- --nostringval-- false 1 %stopped_push 1900 1 3 %oparray_pop 1899 1 3 %oparray_pop 1883 1 3 %oparray_pop 1771 1 3 %oparray_pop --nostringval-- %errorexec_pop .runexec2 --nostringval-- --nostringval-- --nostringval-- 2 %stopped_push --nostringval-- 1762 3 3 %oparray_pop --nostringval-- --nostringval-- 1850 3 4 %oparray_pop --nostringval--
Dictionary stack:
--dict:1171/1684(ro)(G)-- --dict:0/20(G)-- --dict:81/200(L)-- --dict:1171/1684(ro)(G)--
Current allocation mode is local
Last OS error: No such file or directory
GPL Ghostscript 9.10: Unrecoverable error, exit code 1
BUT: 如果我使用来自bash的eps2eps,一切都可以完美无缺。
这可能是未找到字体的问题吗?
到目前为止我做了什么: 我检查了bash和matlab的环境值,指向字体的那些是相同的。 我将/ usr / share / fonts / Type1 /目录添加到matlab路径中。没有变化。 Google我发现了其他一些未定义的问题。似乎没有任何关联或建议的更改不适用或工作。 我尝试用另一个系统重现问题,它有效。
我的系统:
Arch Linux 64-Bit with KDE (Kernel 3.13.6-1-ARCH)
Ghostscript 9.10
epstopdf 2.21
Matlab 2013a for Unix
是否有任何建议导致此问题以及如何解决此问题?
感谢您的帮助!
//编辑:I uploaded one of the files i'm using
///编辑:我试图从" /home/matze/.fonts"更改GS_PATH; to" /home/matze/.fonts:/ usr / share / fonts / TTF:/ usr / share / fonts / Type1:/ usr / share / fonts"来自Matlab内部。但是,如果我再次打印变量,它仍然具有旧内容。
答案 0 :(得分:1)
MATLAB system
命令设置环境变量的方式与从登录shell或xterm等打开的常规shell不同。尝试显式指定字体的路径:
system('eps2eps -I/usr/share/fonts/Type1/ TEMP97062.ps TEMP97062.eps');
或
system('eps2eps -sFONTPATH=/usr/share/fonts/Type1/ TEMP97062.ps TEMP97062.eps');
尝试可能包含CMR10的任何其他文件夹,使用:
分隔多个路径。
另一种可能的解决方案是修复任何破坏的环境变量。在bash中,检查环境变量GS_LIB
,GS_LIB_DEFAULT
,GS_FONTPATH
和PATH
(请参阅如何使用Ghostscript的Section 8.10 Font Look Up)以获取与字体相关的任何内容。然后是update the path used by processes spawned by MATLAB with setenv
。例如,
setenv('GS_LIB', [getenv('GS_LIB') ':/usr/share/fonts/Type1/']);
setenv('PATH', [getenv('PATH') ':/usr/share/fonts/Type1/']);
% ... any other relevant variables
system('eps2eps TEMP97062.ps TEMP97062.eps');