我正在尝试制作一个非常适合 LaTeX 文档的 matlab 图形。一个已知问题是 XTickLabel 和 YTickLabels 不使用 LaTeX 解释器进行渲染,导致绘图看起来很糟糕。(注意:我意识到有一些修复涉及将 tex 标签替换为文本对象(即format_tics),但是这些解决方案在绘制多个图形时并非易事,并且存在需要大量调整的自身问题对于每个单独的数字。)
我觉得通过改变字体来解决这个问题,而不是替换图中的对象,更优雅一点。
我下载了 LaTex 字体的 .otf版本,并将其设置为在整个图中显示:
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'])