Исправлено лишнее пространство в титульном графике MATLAB.

Я пишу результаты для своей диссертации, это включает в себя создание рисунков для моего документа LaTeX с использованием кода MATLAB. Я делаю это, создавая рисунок данных, а затем использую команду print для сохранения в файле EPS.

Проблема в том, что график в окне MATLAB правильный, как вы можете видеть здесь:

снимок экрана окна рисунка MATLAB

Но когда я компилирую свой документ в LaTeX (Lyx), результат такой:

снимок экрана с изображением, как оно выглядит в файле EPS.

Как видите, в заголовке "iLm" у меня неожиданно большой лишний пробел. То же самое происходит, когда я использую код 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 этой проблемы не возникает, но качество и разрешение очень плохие.


person Rafa1296    schedule 03.11.2019    source источник


Ответы (1)


Я не думаю, что это связано с LyX, вы должны увидеть эту проблему в экспортированном файле EPS. Вы можете исправить это, используя другой шрифт.

Как вы можете видеть по внешнему виду рисунка в MATLAB, где заголовок показан с использованием шрифта без засечек (определенно не «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 для этого шрифта, которое должно быть распознано везде.


В качестве альтернативы используйте утилиту export_fig на файловом обмене. Это отличный инструмент для экспорта фигур MATLAB в EPS. Он не только исправит ваши шрифты, но и внесет множество других мелких изменений, которые улучшат внешний вид ваших фигур.

person Cris Luengo    schedule 03.11.2019
comment
Спасибо, как вы сказали, я перешел на «Times» вместо «Times-Roman», и это сработало, также шрифт на рисунке изменился на «Times». В моем документе нет ничего страшного, я наконец-то получил правильное представление «iLm». - person Rafa1296; 03.11.2019