Matlab字体在打印或导出时无法正确渲染

时间:2013-06-03 23:42:23

标签: matlab latex renderer axes

我正在尝试制作一个非常适合LaTeX文档的matlab图形。一个已知问题是XTickLabel和YTickLabel不使用LaTeX解释器进行渲染,从而导致视图不好。 (注意:我意识到有一些修复涉及用文本对象替换tex标签(即format_tics),但是这些解决方案在绘制多个图形时非常重要,并且存在自己需要的问题对每个人都进行了很多调整。)

我觉得通过更改字体来解决这个问题,而不是替换图中的对象,这样会更优雅。

我{* 3}}版本的LaTex字体,并将其设置为在整个图中显示:

    set(0,'defaulttextinterpreter','latex')
    set(0,'DefaultTextFontSize', 10)
    set(0,'DefaultTextFontname', 'CMU Serif')
    set(0,'DefaultAxesFontSize', 10)
    set(0,'DefaultAxesFontName','CMU Serif')

在matlab图窗口看起来不错;然而,当印刷时,事情就会崩溃。

如果我使用“painters”渲染器打印(使用导出GUI或打印命令),字体看起来很有趣且不一致。某些符号无法正确显示,并且整个打印图形中都会出现不同的字体。

 print('-depsc','-painters',['InstP.eps'])        

如果我切换到zbuffer渲染器,字体会变得一致,但还有其他错误。质量下降,一些文本被遗漏(或被其他文本覆盖)。

 print('-depsc','-zbuffer',['InstZ.eps'])  

opengl到处乱七八糟。

有人知道为什么这些渲染器会出现这些字体的问题吗?还有任何可以正确渲染字体的解决方法吗?

示例代码:

    subplot(1,2,1)
         imshow(IMG,'XData',XDat,'YData',YDat);
         axis image;axis([0 20 -5 5]);
         xlabel('$x^*$');
    subplot(1,2,2)
    imshow(SqImg,'XData',Xs,'YData',Xs);
    xlabel('$\Phi_B$');
    ylabel('$\Phi_A$');
    axis square;
    set(gca,'YDir','normal',...
            'XAxisLocation','bottom',... 
            'YAxisLocation','left',... 
         'XTick',(0:.5:1).^Exp,'XTickLabel',0:.5:1,...
         'YTick',(0:.5:1).^Exp,'YTickLabel',0:.5:1);


 print('-depsc','-painters',['InstP.eps'])        
 print('-depsc','-zbuffer',['InstZ.eps'])        

1 个答案:

答案 0 :(得分:0)

我使用imwrite命令而不是print命令将数字转换为图像文件,但这不适用于EPS。

fhand = figure();
subplot(1,2,1);
...
I = getframe(fhand)
imwrite(I.cdata,'Inst.png','PNG')