修复 MATLAB 标题图中的额外 space

Fix extra space in MATLAB's title plot

我正在为我的论文写结果,这包括使用 MATLAB 代码为我的 LaTeX 文档生成图形。我通过制作数据图来做到这一点,然后我使用 print 命令保存在 EPS 文件中。

问题是 MATLAB window 中的绘图是正确的,如您在此处所见:

但是当我在 LaTeX (Lyx) 中编译我的文档时,结果是这样的:

.

如您所见,我在 "iLm" 标题中有一个意想不到的大额外 space。当我在不同信号的标签中使用 LaTeX 代码时,也会出现同样的情况。

在网上搜索我尝试了以下命令:

set(groot,'DefaultTextInterpreter','latex');

但只是打印 "iL_m" 就像我在代码中写的那样。如何使EPS文件中的间距保持一致?

这是我使用的代码:

clear h n
figure(1)
h(1) = plot(iLmVal.time,iLmVal.data(:,2),'LineWidth',1,'color','k','DisplayName','Modelo');
hold on
h(2) = plot(iLmVal.time,iLmVal.data(:,4),'LineWidth',1,'color','r','DisplayName','Circuito');
legend(h,'Location','southeast'),...
axis([0 0.06 -18 27]),title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times-Roman'),...
set(gca,'Color','white');
set(gca,'XTick',0:0.005:0.06),...
    set(gca,'XTickLabel',0:5:60,'FontSize',20,'FontName', 'Times-Roman','XMinorGrid','on'),...
    xlabel('Tiempo [ms]','FontSize',20,'FontName', 'Times-Roman'),...
set(gca,'YTick',-18:4:28),...
    set(gca,'YTickLabel',-18:4:28,'FontSize',20,'FontName', 'Times-Roman','YMinorGrid','on'),...
    ylabel('Corriente [A]','FontSize',20,'FontName', 'Times-Roman'),...
    n = gca;
    n.YAxis.MinorTick = 'on'; n.YAxis.MinorTickValues = -18:1:28;
    n.XAxis.MinorTick = 'on'; n.XAxis.MinorTickValues = 0:0.0025:0.07;
    grid on; hold off

我正在使用 MATLAB R2018a 和 Lyx 2.3.2-2。此外,通过以 PNG 打印不会出现此问题,但质量和分辨率非常差。

我认为这与 LyX 无关,您应该在导出的 EPS 文件中看到此问题。您可以使用不同的字体解决此问题。

正如您在 MATLAB 中的图形外观中看到的那样,其中标题使用 sans-serif 字体显示(绝对不是 'Times-Roman'),MATLAB 无法识别 'Times-Roman' 字体,并使用替代方案进行渲染。此替代字体用于确定下标的位置,下标由 MATLAB 独立于主文本定位。但是,此字体名称将写入 EPS 文件。在不同的程序中渲染 EPS 文件时,'Times-Roman' 字体被识别并用于渲染文本。由于此字体与 MATLAB 使用的字体规格不同,因此下标位置不正确。

打印为 PNG 时,MATLAB 会创建一个位图,因此不会出现此问题。


在我的电脑 (macOS) 上,愚弄在屏幕上产生了正确的表示:

title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times')
title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times-Roman')
title("Corriente de magnetización iL_m",'FontSize',20,'FontName','TimesRoman')
title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times New Roman')

以下没有:

title("Corriente de magnetización iL_m",'FontSize',20,'FontName','Times Roman')

在不同的计算机上,将使用不同的字体名称。使用您的计算机可识别的名称。最好的选择是 'Times',这是该字体的 PostScript 名称,应该在任何地方都能被识别。


或者,使用 the export_fig utility on the File Exchange。这是将 MATLAB 图形导出到 EPS 的好工具。它不仅会修复您的字体,还会进行许多其他小调整,以改善图形的外观。