Латексные шрифты в Matlab

Можно ли преобразовать шрифт шрифта matlab в один и тот же шрифт латекса. Например, я могу изменить шрифт сюжета:

x = -pi:.1:pi;
y = sin(x);
plot(x,y)
set(gca,'FontName','Helvetica');

Можно ли сделать то же самое, но для латексных шрифтов (я говорю, что латексные шрифты, поскольку я не уверен, что фактическое имя шрифта латекс использует в качестве основного шрифта).

Ответы

Ответ 1

Для любого текстового объекта вам просто нужно установить свойство "Interpreter" в "latex". Так, например, вы могли бы сделать

xlabel('$$\int_0^x\!\int_y dF(u,v)$$','Interpreter','latex');

Для ярлыков меток более сложно, хотя могут быть файлы, доступные для упрощения (example).

Ответ 2

Я бы рекомендовал установить интерпретатор по умолчанию в LaTex в начале вашей функции script/:

set(0,'defaulttextinterpreter','latex')

Вы также можете загрузить версию Computer Modern (Семейство шрифтов LaTeX) и установить ее на свой компьютер. Методы могут отличаться, если вы используете Windows или Mac, для Mac вам нужно загрузить версию OTF и добавить ее в FontBook (Cmd-Space: FontBook)

Затем перезапустите Matlab

Наконец, вы можете использовать шрифт LaTeX в Matlab:

   set(0,'DefaultTextFontname', 'CMU Serif')
   set(0,'DefaultAxesFontName', 'CMU Serif')

Это хорошая работа для создания постоянных шрифтов в ваших ярлыках ярлыков хотя в некоторых форматах есть проблемы с экспортом.

Ответ 3

Вы можете определить шрифт в латексных строках. Например, для изменения шрифта с засечками (Roman) и шрифта без засечек (предположим, Helvetica):

text(0.5, 0.8, '\textsf{sans serif}','interpreter','latex')
text(0.5, 0.7, '\textrm{roman}','interpreter','latex')
text(0.5, 0.6, '$$\mathsf{math\,\,mode\,\,sans\,\,serif}$$','interpreter','latex')
text(0.5, 0.5, '$$\mathrm{math\,\,mode\,\,roman}$$','interpreter','latex')

Ответ 4

Для правильного сопоставления шрифтов (включая кернинг в стиле LaTeX, лигатуры и т.д.) текст в фигуре Matlab необходимо набирать с помощью LaTeX. laprint script, который использует psfrag, это простой способ сделать это.

Ответ 5

Отказ от ответственности: я не эксперт.

Однако, команда linux fc-list перечисляет все шрифты в вашей системе, я думаю, что все они поддерживаются Matlab.

В ubuntu (и, возможно, в другом дистрибутиве) латексный шрифт называется Latin Modern, или lm для краткости. Вы можете найти их все через:

# fc-list | grep lmroman
/usr/share/texmf/fonts/opentype/public/lm/lmroman10-bold.otf: Latin Modern Roman,LM Roman 10:style=10 Bold,Bold
/usr/share/texmf/fonts/opentype/public/lm/lmroman7-italic.otf: Latin Modern Roman,LM Roman 7:style=7 Italic,Italic
... etc etc...

Между двоеточием и первой запятой он говорит латинский Modern Roman, который является именем римского шрифта Latin Modern, есть также:

  • Латинский Modern Sans
  • Латинские современные римские шапки
  • Латинский Современный Моно
  • и т.д.

Я думаю, что эти шрифты используются, когда вы вызываете \textrm (roman), \textsf (serif) и т.д. и т.д. в латекс в математическом режиме. Конечно, вы можете найти их все с помощью команды fc-list.

Чтобы получить шрифт латекса на ваших графиках, просто выполните:

plot(rand(10), 'o');
xlabel('index', 'FontName', 'Latin Modern Roman', 'FontSize', 25); 
ylabel('value', 'FontName', 'Latin Modern Roman', 'FontSize', 25); 
set(gca, 'FontName', 'Latin Modern Roman', 'FontSize', 25);

И результат хороший:

example plot

PS: Latin Modern не совсем то же самое, что Computer Modern, но они выглядят одинаково, и я не знаю, насколько они действительно отличаются.

Что касается опции Matlab Interpreter, насколько мне известно, она не распространяется на все текстовые элементы сюжета, такие как метки топора:

>> plot(rand(10), '.'); set(gca, 'Interpreter', 'latex');
Error using hg.axes/set
The name 'Interpreter' is not an accessible property for an instance of class 'axes'.

К сожалению, функция matlab print ошибочна, так как она не способна внедрять шрифты в файлы eps или pdf. По этой причине созданные файлы могут иметь замещенные шрифты, даже в одной и той же системе. Чтобы решить эту проблему, эта библиотека позволяет вставлять шрифты: http://www.mathworks.com/matlabcentral/fileexchange/23629-export-fig

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

Кроме того, изменение интерпретатора кажется излишним, если вы хотите изменить шрифт.

Ответ 6

Если вы экспортируете в .eps, вы можете просто отредактировать рисунок с помощью простого текстового редактора и обменять шрифты там. Это немного странно, но это трюк. Вы также можете изменить кернинг каждого персонажа индивидуально (потому что его положение там жестко закодировано).

Также возможно изменить каждый шрифт персонажа отдельно (иногда я делаю это, если нужен символ из латекса (то есть компьютерный современный), но снова хочу, чтобы остальная часть метки была в Helvetica)

Ответ 7

Если вы нацеливаетесь на экспорт фигур MATLAB в LaTeX и хотите согласованный внешний вид (включая шрифты), вы должны использовать matlab2tikz.