如果我创建一个带有标题中某些标签的图并尝试将其保存到本地pdf文件(通过print
函数),我会在pdf中获得一些标签而不是标签。这在可见图中不会发生。
例如,我在网格上绘制了一个近似值的残差:
plot(g, f(g) - runge(g));
title(sprintf('residuals,\t max_x(s-f) = %.3f', max(f(g)-runge(g))));
然后经过一些轴操作(网格,方框等)后,我执行
h = gcf;
set(h,'Units','Inches');
pos = get(h,'Position');
set(h,'PaperPositionMode','Auto','PaperUnits','Inches','PaperSize',[pos(3), pos(4)])
print(h,'data/runge_example.pdf','-dpdf','-r200')
close(h)
是否有人意识到这种行为或更好地发现已经解决的问题比我更好?
编辑:与saveas
的行为相同并保存为eps。使用\n
EDIT2:我正在使用Matlab版本R2017b(9.3.0.7 ...)
答案 0 :(得分:2)
因此,经过长时间的讨论,我们发现我们不知道如何在matlab标题中结合使用乳胶模式中的标签。
澄清:使用数学环境和转义tex指令,否则会引发错误。
所以
sprintf('residuals,\t $max_x(\\vert s-f\\vert) = %.3f$', max(f(g)-runge(g))));
会给你一个很好的字符串:
residuals, $max_x(\vert s-f\vert) = 0.264$
问题是,真的是一个标签。 matlab乳胶解释器(不知道使用哪个,系统或自己的)会崩溃。我将其复制粘贴到tex文档上并且pdflatex在其上运行正常(但不幸的是没有显示那么多空间)。
所以,我想出了以下修复:
使用latex指令\quad
或\qquad
:
title(sprintf('residuals,\\quad $max_x(\\vert s-f\\vert) = %.3f$', max(abs(f(g)-runge(g)))));
这将为您提供比普通空间更多的空间。
编辑 :为此,您需要将matlab的解释器设置为" latex"而不是默认的" tex"。通过将标题更改为
来执行此操作title(title_string, 'Interpreter', 'latex')
或通过设置(该脚本的全局)
set(groot, 'defaultTextInterpreter', 'latex')