将数字保存为pdf会打印#而不是标题中的标签

时间:2018-02-21 11:59:34

标签: matlab matlab-figure

如果我创建一个带有标题中某些标签的图并尝试将其保存到本地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 ...)

1 个答案:

答案 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')