通过将text
属性的 'Interpreter' 值设置为 'latex',可以将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安装程序中,使这些字体可用于“解释器”“latex”,在屏幕上呈现和生成eps文件?如果可以,怎么做?
背景
(所有路径均相对于我Linux系统上的Matlab安装程序/opt/MATLAB/R2013a
。)
Matlab包括定制版本的(La)TeX解释器。它通过位于toolbox/matlab/graphics
下的前端m文件tex.m
被调用,该文件以LaTeX代码为参数并返回其输出参数中的dvi数据。 定制的LaTeX安装位于sys/tex
中,并包括sys/tex/tfm
下的TeX字体度量文件。
我没有关于渲染此dvi的Matlab部分的任何信息。但是,用于呈现的字体数据在sys/fonts/ttf
和sys/fonts/type1
下。
因此,使附加字体可用包括两个部分:使其对LaTeX解释器可用,以及使其对渲染函数可用。第一部分可以通过操纵tex.m
来处理,从而使其通过独立的常规LaTeX安装程序生成dvi,并以通常的方式安装字体(例如字体包)到此LaTeX中。请参见undocumentedmatlab。
因此,问题的第二部分是至关重要的:如何将其他字体插入sys/fonts/ttf
和sys/fonts/type1
,使它们可被Matlab的dvi渲染器组件使用。
具体案例
我尝试为特殊情况具体解决第二个问题:通过tex/tfm/cmss10.tfm
,计算机现代无衬线字体包含在Matlab-LaTeX安装程序中,但对应的ttf和pfb文件丢失于sys/fonts
中,因此未能呈现。
Matlab的ttf文件集似乎没有任何清单。因此,我将cmss10.ttf
文件从matplotlib的安装程序复制到sys/fonts/ttf/cm/mwa_cmss10.ttf
,遵循其他文件的命名约定。根据报道,这个过程在Max OS X上的Matlab 2011b上在Alec's Web Log上运行正常,但在我的系统上没有效果,无论是屏幕显示还是eps导出。
Matlab的type1字体集具有复杂的清单,分布在文件fonts.dir
,fonts.scale
,encodings.dir
和一个包含enc文件的文件夹encodings
中。再次找到了cmss10.pfb,这次来自TeXlive安装,并将其重命名并复制,然后根据其他列出的字体的示例,在库存文件中进行了条目。同样,这个过程根本没有效果。
是否有人知道更多关于Matlab如何使用ttf和pfb文件,并可以给我一些提示,以使cmss10文件可用于Matlab渲染?或者是否有人建议如何调试此问题,并了解Matlab的LaTeX支持的