I would like to welcome guest blogger Yaroslav Don, known to vim users as the author of the Matlab color-scheme. Today Yaroslav discusses some little-known aspects of Matlab’s support for Latex.
One of the most appealing aspects of Matlab is the cross-talk with other programs via a friendly user-interface. An excellent example is the Latex interpreter inside the Handle-graphics axes and texts, which comes to a good use to many inside the scientific community. In recent years I’ve noticed a slow but steady tendency of degrading the Latex capabilities inside Matlab. The most apparent example is the decreasing fonts; I’ll show its downward progression below:
Matlab R2010a
When I started using Latex in Matlab, I wrote a small script (latexfonts.m) to check the available Latex options in Matlab. In the figure below several attributes are depicted: font-families (roman, sans-serif and typewriter), font-shapes (upright, slanted, italics and small-caps) and font-series (medium and bold). It also shows other tweaks such as kerning, ligatures, underline, etc.

Latex support in R2010a
It is clearly seen that most of the Latex options above are available. Analyzing further, the list of fonts inside Matlab is quite vast, as seen below:
>> dir(fullfile(matlabroot,'sys','fonts','ttf','cm')) . cmbxsl10.ttf cmmi12.ttf cmr7.ttf cmssi12.ttf cmti10.ttf eufb5.ttf eurb9.ttf eusm7.ttf .. cmbxti10.ttf cmmi5.ttf cmr8.ttf cmssi17.ttf cmti12.ttf eufb6.ttf eurm10.ttf eusm8.ttf README cmcsc10.ttf cmmi6.ttf cmr9.ttf cmssi8.ttf cmti7.ttf eufb7.ttf eurm5.ttf eusm9.ttf cmb10.ttf cmcsc8.ttf cmmi7.ttf cmsl10.ttf cmssi9.ttf cmti8.ttf eufb8.ttf eurm6.ttf msam10.ttf cmbsy10.ttf cmcsc9.ttf cmmi8.ttf cmsl12.ttf cmssq8.ttf cmti9.ttf eufb9.ttf eurm7.ttf msam5.ttf cmbsy6.ttf cmdunh10.ttf cmmi9.ttf cmsl8.ttf cmssqi8.ttf cmtt10.ttf eufm10.ttf eurm8.ttf msam6.ttf cmbsy7.ttf cmex10.ttf cmmib10.ttf cmsl9.ttf cmsy10.ttf cmtt12.ttf eufm5.ttf eurm9.ttf msam7.ttf cmbsy8.ttf cmex7.ttf cmmib6.ttf cmsltt10.ttf cmsy5.ttf cmtt8.ttf eufm6.ttf eusb10.ttf msam8.ttf cmbsy9.ttf cmex8.ttf cmmib7.ttf cmss10.ttf cmsy6.ttf cmtt9.ttf eufm7.ttf eusb5.ttf msam9.ttf cmbx10.ttf cmex9.ttf cmmib8.ttf cmss12.ttf cmsy7.ttf cmu10.ttf eufm8.ttf eusb6.ttf msbm10.ttf cmbx12.ttf cmff10.ttf cmmib9.ttf cmss17.ttf cmsy8.ttf cmvtt10.ttf eufm9.ttf eusb7.ttf msbm5.ttf cmbx5.ttf cmfi10.ttf cmr10.ttf cmss8.ttf cmsy9.ttf euex10.ttf eurb10.ttf eusb8.ttf msbm6.ttf cmbx6.ttf cmfib8.ttf cmr12.ttf cmss9.ttf cmtcsc10.ttf euex7.ttf eurb5.ttf eusb9.ttf msbm7.ttf cmbx7.ttf cminch.ttf cmr17.ttf cmssbx10.ttf cmtex10.ttf euex8.ttf eurb6.ttf eusm10.ttf msbm8.ttf cmbx8.ttf cmitt10.ttf cmr5.ttf cmssdc10.ttf cmtex8.ttf euex9.ttf eurb7.ttf eusm5.ttf msbm9.ttf cmbx9.ttf cmmi10.ttf cmr6.ttf cmssi10.ttf cmtex9.ttf eufb10.ttf eurb8.ttf eusm6.ttf >> dir(fullfile(matlabroot,'sys','fonts','type1','cm')) . cmbxsl10.pfm cmmi12.pfm cmr6.pfm cmss17.pfm cmssqi8.pfm cmti10.pfm lasy10.pfm lcmssi8.pfm .. cmbxti10.pfb cmmi5.pfb cmr7.pfb cmss8.pfb cmsy10.pfb cmti12.pfb lasy5.pfb line10.pfb README cmbxti10.pfm cmmi5.pfm cmr7.pfm cmss8.pfm cmsy10.pfm cmti12.pfm lasy5.pfm line10.pfm cmb10.pfb cmcsc10.pfb cmmi6.pfb cmr8.pfb cmss9.pfb cmsy5.pfb cmti7.pfb lasy6.pfb linew10.pfb cmb10.pfm cmcsc10.pfm cmmi6.pfm cmr8.pfm cmss9.pfm cmsy5.pfm cmti7.pfm lasy6.pfm linew10.pfm cmbsy10.pfb cmdunh10.pfb cmmi7.pfb cmr9.pfb cmssbx10.pfb cmsy6.pfb cmti8.pfb lasy7.pfb logo10.pfb cmbsy10.pfm cmdunh10.pfm cmmi7.pfm cmr9.pfm cmssbx10.pfm cmsy6.pfm cmti8.pfm lasy7.pfm logo10.pfm cmbx10.pfb cmex10.pfb cmmi8.pfb cmsl10.pfb cmssdc10.pfb cmsy7.pfb cmti9.pfb lasy8.pfb logo8.pfb cmbx10.pfm cmex10.pfm cmmi8.pfm cmsl10.pfm cmssdc10.pfm cmsy7.pfm cmti9.pfm lasy8.pfm logo8.pfm cmbx12.pfb cmff10.pfb cmmi9.pfb cmsl12.pfb cmssi10.pfb cmsy8.pfb cmtt10.pfb lasy9.pfb logo9.pfb cmbx12.pfm cmff10.pfm cmmi9.pfm cmsl12.pfm cmssi10.pfm cmsy8.pfm cmtt10.pfm lasy9.pfm logo9.pfm cmbx5.pfb cmfi10.pfb cmmib10.pfb cmsl8.pfb cmssi12.pfb cmsy9.pfb cmtt12.pfb lasyb10.pfb logobf10.pfb cmbx5.pfm cmfi10.pfm cmmib10.pfm cmsl8.pfm cmssi12.pfm cmsy9.pfm cmtt12.pfm lasyb10.pfm logobf10.pfm cmbx6.pfb cmfib8.pfb cmr10.pfb cmsl9.pfb cmssi17.pfb cmtcsc10.pfb cmtt8.pfb lcircle1.pfb logosl10.pfb cmbx6.pfm cmfib8.pfm cmr10.pfm cmsl9.pfm cmssi17.pfm cmtcsc10.pfm cmtt8.pfm lcircle1.pfm logosl10.pfm cmbx7.pfb cminch.pfb cmr12.pfb cmsltt10.pfb cmssi8.pfb cmtex10.pfb cmtt9.pfb lcirclew.pfb cmbx7.pfm cminch.pfm cmr12.pfm cmsltt10.pfm cmssi8.pfm cmtex10.pfm cmtt9.pfm lcirclew.pfm cmbx8.pfb cmitt10.pfb cmr17.pfb cmss10.pfb cmssi9.pfb cmtex8.pfb cmu10.pfb lcmss8.pfb cmbx8.pfm cmitt10.pfm cmr17.pfm cmss10.pfm cmssi9.pfm cmtex8.pfm cmu10.pfm lcmss8.pfm cmbx9.pfb cmmi10.pfb cmr5.pfb cmss12.pfb cmssq8.pfb cmtex9.pfb cmvtt10.pfb lcmssb8.pfb cmbx9.pfm cmmi10.pfm cmr5.pfm cmss12.pfm cmssq8.pfm cmtex9.pfm cmvtt10.pfm lcmssb8.pfm cmbxsl10.pfb cmmi12.pfb cmr6.pfb cmss17.pfb cmssqi8.pfb cmti10.pfb lasy10.pfb lcmssi8.pfb >> dir(fullfile(matlabroot,'sys','tex','tfm')) . cmbxsl10.tfm cmmi12.tfm cmr6.tfm cmssdc10.tfm cmtex8.tfm icmmi8.tfm lcmss8.tfm .. cmbxti10.tfm cmmi5.tfm cmr7.tfm cmssi10.tfm cmtex9.tfm icmsy8.tfm lcmssb8.tfm cmb10.tfm cmcsc10.tfm cmmi6.tfm cmr8.tfm cmssi12.tfm cmti10.tfm icmtt8.tfm lcmssi8.tfm cmbsy10.tfm cmcsc8.tfm cmmi7.tfm cmr9.tfm cmssi17.tfm cmti12.tfm ilasy8.tfm line10.tfm cmbsy5.tfm cmcsc9.tfm cmmi8.tfm cmsa10.tfm cmssi8.tfm cmti7.tfm ilcmss8.tfm linew10.tfm cmbsy6.tfm cmdunh10.tfm cmmi9.tfm cmsl10.tfm cmssi9.tfm cmti8.tfm ilcmssb8.tfm manfnt.tfm cmbsy7.tfm cmex10.tfm cmmib10.tfm cmsl12.tfm cmssq8.tfm cmti9.tfm ilcmssi8.tfm old_manfnt.tfm cmbsy8.tfm cmex7.tfm cmmib5.tfm cmsl8.tfm cmssqi8.tfm cmtt10.tfm lasy10.tfm trip.tfm cmbsy9.tfm cmex8.tfm cmmib6.tfm cmsl9.tfm cmsy10.tfm cmtt12.tfm lasy5.tfm cmbx10.tfm cmex9.tfm cmmib7.tfm cmsltt10.tfm cmsy5.tfm cmtt8.tfm lasy6.tfm cmbx12.tfm cmff10.tfm cmmib8.tfm cmss10.tfm cmsy6.tfm cmtt9.tfm lasy7.tfm cmbx5.tfm cmfi10.tfm cmmib9.tfm cmss12.tfm cmsy7.tfm cmu10.tfm lasy8.tfm cmbx6.tfm cmfib8.tfm cmr10.tfm cmss17.tfm cmsy8.tfm cmvtt10.tfm lasy9.tfm cmbx7.tfm cminch.tfm cmr12.tfm cmss8.tfm cmsy9.tfm dummy.tfm lasyb10.tfm cmbx8.tfm cmitt10.tfm cmr17.tfm cmss9.tfm cmtcsc10.tfm icmcsc10.tfm lcircle10.tfm cmbx9.tfm cmmi10.tfm cmr5.tfm cmssbx10.tfm cmtex10.tfm icmex10.tfm lcirclew10.tfm
Matlab R2011b
Each time a new Matlab version is introduced, the joy of getting many fresh or upgraded features is mixed with the worry of getting some good-old ones removed. Unfortunately, such a regression was exactly the case in the R2011b version (and to this day in R2013a), as seen below:

Latex support in R2011b
Suddenly, many of the former features are missing and a cascade of warnings is thrown:
Warning: Font cmss10 is not supported. Warning: Font cmss10 is not supported. Warning: Font cmss10 is not supported. Warning: Font cmss10 is not supported. Warning: Font cmssi10 is not supported. Warning: Font cmssi10 is not supported. Warning: Font cmssi10 is not supported. Warning: Font cmssi10 is not supported. Warning: Font cmcsc10 is not supported. Warning: Font cmcsc10 is not supported. Warning: Font cmcsc10 is not supported. Warning: Font cmcsc10 is not supported. Warning: Font cmcsc10 is not supported. Warning: Font cmcsc10 is not supported. Warning: Unable to interpret LaTeX string "\ttfamily\scshape\mdseries WALT bla fi f{}i ff" Warning: Font cmssbx10 is not supported. ...
Note: you can turn these warnings off using:
>> warning off MATLAB:gui:latexsup:UnableToInterpretLaTeXString >> warning off MATLAB:gui:latexsup:UnsupportedFont
Having the fonts inspected, the cause becomes crystal-clear: most of the fonts used by Latex have been removed from Matlab’s installation. Apparently, I am not the only one to have noticed this problem.
>> dir(fullfile(matlabroot,'sys','fonts','ttf','cm')) . mwa_cmbsy10.ttf mwa_cmitt10.ttf mwa_cmsltt10.ttf mwb_cmbsy10.ttf mwb_cmitt10.ttf mwb_cmsltt10.ttf .. mwa_cmbx10.ttf mwa_cmmi10.ttf mwa_cmsy10.ttf mwb_cmbx10.ttf mwb_cmmi10.ttf mwb_cmsy10.ttf LICENCE mwa_cmbxsl10.ttf mwa_cmmib10.ttf mwa_cmti10.ttf mwb_cmbxsl10.ttf mwb_cmmib10.ttf mwb_cmti10.ttf README mwa_cmbxti10.ttf mwa_cmr10.ttf mwa_cmtt10.ttf mwb_cmbxti10.ttf mwb_cmr10.ttf mwb_cmtt10.ttf mwa_cmb10.ttf mwa_cmex10.ttf mwa_cmsl10.ttf mwb_cmb10.ttf mwb_cmex10.ttf mwb_cmsl10.ttf >> dir(fullfile(matlabroot,'sys','fonts','type1','cm')) . mwa_cmbx10.pfb mwa_cmmi10.pfb mwa_cmsy10.pfb mwb_cmbx10.pfb mwb_cmmi10.pfb mwb_cmsy10.pfb .. mwa_cmbxsl10.pfb mwa_cmmib10.pfb mwa_cmti10.pfb mwb_cmbxsl10.pfb mwb_cmmib10.pfb mwb_cmti10.pfb README mwa_cmbxti10.pfb mwa_cmr10.pfb mwa_cmtt10.pfb mwb_cmbxti10.pfb mwb_cmr10.pfb mwb_cmtt10.pfb mwa_cmb10.pfb mwa_cmex10.pfb mwa_cmsl10.pfb mwb_cmb10.pfb mwb_cmex10.pfb mwb_cmsl10.pfb mwa_cmbsy10.pfb mwa_cmitt10.pfb mwa_cmsltt10.pfb mwb_cmbsy10.pfb mwb_cmitt10.pfb mwb_cmsltt10.pfb >> dir(fullfile(matlabroot,'sys','tex','tfm')) . cmbxti10.tfm cmmib10.tfm cmssi10.tfm cmu10.tfm lcirclew10.tfm .. cmcsc10.tfm cmr10.tfm cmssq8.tfm icmcsc10.tfm line10.tfm cmb10.tfm cmdunh10.tfm cmsl10.tfm cmssqi8.tfm icmex10.tfm linew10.tfm cmbsy10.tfm cmex10.tfm cmsltt10.tfm cmsy10.tfm lasy10.tfm manfnt.tfm cmbx10.tfm cmitt10.tfm cmss10.tfm cmti10.tfm lasyb10.tfm trip.tfm cmbxsl10.tfm cmmi10.tfm cmssbx10.tfm cmtt10.tfm lcircle10.tfm
It seems that Mathworks have changed their approach to Latex; less fonts with different names imply a different future direction — perhaps to diminish Latex’s capacity in Matlab.
Summary
Being neither Tex nor Matlab expert, this is the farthest I could achieve. I’ve tried unsuccessfully to install the missing fonts in the new Matlab (as suggested by bug reports 249537 and 398506); I even tried to modify some tex-files — all in vain. Perhaps someone could find a workaround or a full solution to this issue. If so, please post a comment.
Note that I do not wish to incorporate Matlab figures in a Latex document (this can be done using the LaPrint utility or its variants), but rather the reverse – including Latex formatting within Matlab figures.
Related posts:
- JMI – Java-to-Matlab Interface JMI enables calling Matlab functions from within Java. This article explains JMI's core functionality....
- Matclipse – Eclipse-Matlab interface Matclipse is an open-source plugin for the popular Eclipse IDE that connects it with Matlab. ...
- Matlab-Java interface using a static control The switchyard function design pattern can be very useful when setting Matlab callbacks to Java GUI controls. This article explains why and how....
- HG’s undocumented parameters interface Some HG functions also accept inputs parameters in a struct fields rather than the normal P-V pairs format. ...