通过将text
属性“解释器”设置为值“乳胶”,可以将 LaTeX 格式的文本和方程式嵌入到 Matlab 图中,例如
text(0.1, 0.5, 'Einstein: $E = m c^2$', ...
'Interpreter', 'latex', 'FontSize', 32)
这些方程式出现在屏幕上以及导出为 eps 文件的插图中。
通过适当的 LaTeX 命令,还可以将字体从默认的 Computer Modern Serif 更改为例如 Computer Modern Typewriter
text(0.1, 0.5, '\fontfamily{cmtt}\selectfont Einstein: $E = m c^2$', ...
'Interpreter', 'latex', 'FontSize', 32)
我的问题是:是否可以在 Matlab 安装中插入其他字体,以便这些字体可用于“解释器”“乳胶”,用于在屏幕上渲染以及生成 eps 文件?如果是,如何?
背景
(/opt/MATLAB/R2013a
在我的 Linux 系统上,所有与 Matlab 安装相关的路径。)
Matlab 包括一个定制版本的 (La)TeX 解释器。它通过调用的前端 m 文件调用tex.m
,toolbox/matlab/graphics
其中将 LaTeX 代码作为参数并在其输出参数中返回 dvi 数据。定制的 LaTeX 安装位于sys/tex
并包含sys/tex/tfm
.
我没有关于渲染此 dvi 的 Matlab 部分的任何信息。但是,用于渲染的字体数据位于sys/fonts/ttf
和下sys/fonts/type1
。
因此,使其他字体可用包括两部分:使其可用于 LaTeX 解释器,并使其可用于渲染功能。第一部分可以通过操作来解决tex.m
,使其通过独立的常规 LaTeX 安装生成 dvi,并以通常的方式(例如字体包)将字体安装到这个 LaTeX。请参阅未记录的matlab 。
因此,问题的第二部分是至关重要的:如何将额外的字体插入sys/fonts/ttf
并sys/fonts/type1
使其可供 Matlab 的 dvi 渲染器组件使用。
具体案例
我试图具体解决一个特殊情况的第二个问题:Computer Modern Sans 字体包含在 Matlab-LaTeX 安装tex/tfm/cmss10.tfm
中,但是缺少相应的 ttf 和 pfb 文件sys/fonts
,因此它不会被渲染。
Matlab 的 ttf 文件集合似乎没有某种库存。因此,我只是按照存在的其他文件的文件和文件夹命名约定,将文件cmss10.ttf
从 matplotlib 的安装复制到 。sys/fonts/ttf/cm/mwa_cmss10.ttf
据报道,此过程适用于 Max OS X 上的 Matlab 2011b的 Alec 的 Web 日志,但在我的系统上它没有效果,无论是屏幕显示还是 eps 导出。
Matlab 的 type1 字体集合具有复杂的清单,分布在文件fonts.dir
、fonts.scale
和一个充满 enc 文件encodings.dir
的文件夹中。encodings
我再次找到了 cmss10.pfb,这一次来自 TeXlive 安装,重命名并复制了它,并按照列出的其他字体的示例在清单文件中输入了条目。同样,此过程完全没有效果。
有谁知道更多关于 Matlab 如何使用 ttf 和 pfb 文件的信息,并且可以给我一个关于如何使 matlab 渲染可以访问 cmss10 文件的提示?或者有没有人建议如何调试它并了解更多关于Matlab 的 LaTeX 支持的内部工作原理?