TeX (LaTeX math mode) symbols in legends and labels in MATLAB figures
    1.876 visualizzazioni (ultimi 30 giorni)
  
       Mostra commenti meno recenti
    
    Shah
      
 il 22 Nov 2011
  
    
    
    
    
    Commentato: Walter Roberson
      
      
 il 13 Nov 2024
            I am plotting some data which includes estimates of some parameters. I want to describe the estimates by using \hat on the parameter symbols. This I have to do in legends and axis labels fields. I could not fix this matter despite some experiments using information from MATLAB help. Any idea, please to fix this problem. I really appreciate help on this matter which will improve the look of my presentation. Shah
0 Commenti
Risposta accettata
  Matthew Simoneau
    
 il 13 Nov 2024
        
      Modificato: MathWorks Support Team
    
 il 13 Nov 2024
  
      
				
				Questo/a risposta è stato/a segnalato/a da Walter Roberson
      
      
				
			
			
		By default, MATLAB supports a subset of TeX markup. For a list of supported symbols, see the documentation . For more symbols, you can use LaTeX markup by setting the Interpreter property to 'latex'. Use dollar symbols around the text. For example: title('$\hat{\psi}$','Interpreter','latex') If you are using the legend function in R2018a or earlier, you must specify the labels as a cell array to distinguish the labels from the name-value pairs. In R2018b and later, the cell array is not needed. plot(1:10) legend({'$\hat{\psi}$'},'Interpreter','latex') % R2018a and earlier legend('$\hat{\psi}$','Interpreter','latex') % R2018b and later When you use LaTeX markup, the displayed text uses the default LaTeX font style. The FontName, FontWeight, and FontAngle properties no longer have an effect. To change the font style, use LaTeX markup instead. For more information on using LaTeX in plot titles, labels, and legends, refer to the following example:https://www.mathworks.com/help/matlab/creating_plots/greek-letters-and-special-characters-in-graph-text.html#mw_421aadf2-3104-41f5-ae7e-57bf5f7cdde3
4 Commenti
  Bokang Zhou
 il 14 Ago 2021
				Thank you for your answer, but how do I use two different interpreters in the same label line?
For example:
    If I use 'latex', I get the desired symbol \varphi but can't get the font of words in Time New Roman.
xlabel('Power factor angle, $\varphi$','Interpreter','latex')
    If I use 'tex', I get the desired font of words in Time New Roman, but can't get the symbol \varphi since 'tex'                 does not support \varphi.
xlabel('Power factor angle, \phi','Interpreter','tex')
    So I wonder if there is a way to have normal font of words and 'latex' font of symbol in one label line.
  Walter Roberson
      
      
 il 13 Nov 2024
				You cannot use two different interpreters in a single call. 
The key to getting Roman font with LaTex is to use \textrm or \mathrm
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')
Più risposte (6)
  Mikhail Smirnov
      
 il 10 Feb 2017
        You can do like this
plot(1:10);
leg1 = legend('$\bar{x}$','$\tilde{x}$','$\hat{x}$');
set(leg1,'Interpreter','latex');
set(leg1,'FontSize',17);

works well
4 Commenti
  Mario
 il 17 Apr 2023
				Unfortunately this doesn't work for me.
I am tried using annotations and legends to write v_{mean on} as v_on to save figure space.
I tried several things:
lgd = legend{'on',  'off',  '$$\bar{\itv}$$_{on}',  'v_{mean off}'}
lgd = legend{'on',  'off',  '$\bar{\itv}$_{on}',  'v_{mean off}'}
lgd = legend{'on',  'off',  '$\bar{v}$_{on}',  'v_{mean off}'}
lgd = legend{'on',  'off',  ['$\bar{v}$','_{on}'],  'v_{mean off}'}
or 
lgd = legend{'on',  'off',  '$$\overline{\itv}$$_{on}',  'v_{mean off}'}
lgd = legend{'on',  'off',  '$\overline{\itv}$_{on}',  'v_{mean off}'}
lgd = legend{'on',  'off',  '$\overline{v}$_{on}',  'v_{mean off}'}
lgd = legend{'on',  'off',  ['$\overline{\itv}$','_{on}'],  'v_{mean off}'}
won't work.
It would just add the $$\overline... to the legend text.
I tried both latex and tex interpreter.
I am using MATLAB v 2018b
  Mario
 il 17 Apr 2023
				
      Modificato: Mario
 il 17 Apr 2023
  
			I figured it out:
lgd = legend('on','off', '$\overline{v}_{on}$', '$\overline{v}_{off}$')
But now my font is not Calibri anymore. it's rather looking like Times New Roman or sth. 
set(lgd, 'interpreter', 'latex', 'FontName', 'Calibri')
won't help :(
is there a problem with Calibri + Latex?
  Frederik van der Walt
      
 il 4 Apr 2012
        
      Modificato: KSSV
      
      
 il 26 Mag 2022
  
      l= legend(['$\hat{\psi}$']);
set(l,'Interpreter','Latex');
0 Commenti
  Steven
      
 il 22 Nov 2011
        Try with Latex interpreter, something like
    title(['$ latex $'],'interpreter','latex')
2 Commenti
  Jordan Brel Ngako Kadji
 il 7 Mag 2020
        Once I had this problem, I was writing in German and because the german letter 'ä' was not recognised all the latex commands were ignored.
1 Commento
  Rostislav Lebedev
 il 16 Mar 2022
				Try this
title('Verkehrstr\"ager', 'Interpreter', 'latex');
  Richard Ulbricht
 il 13 Dic 2022
        Put this in front of your plotting commands, if you want it for all plots:
set(groot,'defaultLegendInterpreter','latex');
Vedere anche
Categorie
				Scopri di più su RF Propagation in Help Center e File Exchange
			
	Community Treasure Hunt
Find the treasures in MATLAB Central and discover how the community can help you!
Start Hunting!

