Можно вставлять текст и уравнения в формате LaTeX в графики Matlab, устанавливая свойство text
"Интерпретатор" на значение "латекс", например
text(0.1, 0.5, 'Einstein: $E = m c^2$', ...
'Interpreter', 'latex', 'FontSize', 32)
Эти уравнения отображаются на экране, а также в иллюстрациях, экспортированных в файлы eps.
С помощью соответствующих команд LaTeX также можно изменить шрифт из стандартного компьютерного серифа по умолчанию, например, Компьютерная современная пишущая машинка
text(0.1, 0.5, '\fontfamily{cmtt}\selectfont Einstein: $E = m c^2$', ...
'Interpreter', 'latex', 'FontSize', 32)
Мой вопрос: Можно ли вставить дополнительные шрифты в установку Matlab, чтобы эти шрифты стали доступны для использования с латексом 'Interpreter', для рендеринга на экране, а также для создания eps файлы? И если да, то как?
Фон
(Все пути относительно установки Matlab, /opt/MATLAB/R2013a
в моей системе Linux.)
Matlab включает настраиваемую версию интерпретатора (La) TeX. Он вызывается через интерфейс m файла под названием tex.m
в toolbox/matlab/graphics
, который принимает код LaTeX как аргумент и возвращает данные dvi в своем выходном аргументе. Индивидуальная установка LaTeX находится в sys/tex
и включает метрические файлы шрифтов TeX под sys/tex/tfm
.
У меня нет информации о частях Matlab, которые отображают этот dvi. Однако данные шрифта для рендеринга находятся под sys/fonts/ttf
и sys/fonts/type1
.
Создание дополнительных шрифтов, которые можно использовать, состоит из двух частей: предоставление его доступным для интерпретатора LaTeX и его доступность для функции рендеринга. Первую часть можно решить, манипулируя tex.m
, так что она генерирует dvi через независимую регулярную установку LaTeX и обычно устанавливает шрифт в этот LaTeX (например, пакеты шрифтов). См. undocumentedmatlab.
Таким образом, вторая часть вопроса важна: как вставить дополнительные шрифты в sys/fonts/ttf
и sys/fonts/type1
, чтобы они стали пригодными для компонента визуализации dvi в Matlab.
Конкретный корпус
Я попытался конкретно решить вторую проблему для специального случая: шрифт Computer Modern Sans включен в установку Matlab-LaTeX через tex/tfm/cmss10.tfm
, но соответствующие ttf и pfb файлы отсутствуют в sys/fonts
, так что это не получается.
В коллекции ttf файлов Matlab, похоже, нет своего рода инвентаря. Поэтому я просто скопировал файл cmss10.ttf
из установки matplotlib в sys/fonts/ttf/cm/mwa_cmss10.ttf
, следуя соглашениям об именах файлов и папок других файлов. Сообщалось, что эта процедура работает над Alec Web Log для Matlab 2011b на Max OS X, но в моей системе это не имеет никакого эффекта, ни для экрана или экспорта eps.
Коллекция шрифтов Matlab шрифтов Type1 имеет сложный инвентарь, распределенный по файлам fonts.dir
, fonts.scale
, encodings.dir
и папке encodings
, полной enc файлов. Снова я нашел cmss10.pfb, на этот раз из установки TeXlive, переименовал и скопировал его, и сделал записи в файлах инвентаря, следуя примеру остальных шрифтов. Опять же, эта процедура не имеет никакого эффекта.
Кто-нибудь знает больше о том, как Matlab использует ttf и pfb файлы, и может дать мне подсказку о том, как сделать cmss10 файлы доступными для рендеринга Matlab? Или у кого-нибудь есть предложение отладить это и узнать больше о внутренней работе поддержки Matlab LaTeX?