Исправить дополнительное место в заголовке MATLAB - PullRequest
1 голос
/ 03 ноября 2019

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

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

screen shot of MATLAB figure window

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

screen shot of figure as it appears in the EPS file.

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

1 Ответ

0 голосов
/ 03 ноября 2019

Я не думаю, что это связано с 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 в File Exchange . Это отличный инструмент для экспорта фигур MATLAB в EPS. Он не только исправит ваши шрифты, но и внесет множество других небольших изменений, которые улучшат внешний вид ваших фигур.

...