2013-06-15 11 views
5

Sto provando a scrivere una semplice equazione di un piano più il valore del coefficiente \ bar {a} _1, a_2 e a_3 ma non riesco a ottenere il \ bar al lavoro. Qualche suggerimento? Ho provato $ \ bar {a} _ {1} $ con o senza dollari, tutto il resto mi sembra soddisfacente, ho usato l'interprete in lattice o tex ma non riesco a riconoscerlo. questo è il codice:Overbar nella casella di testo di annotazione nella trama Matlab (usando Latex come interprete)

a1=1 
a2=2 
a3=3 
str = {'LLSQ fit:','z=$\bar{a}_{1}$+a_2x+a_3y',sprintf('$\bar{a}_{1}$=%5.2f',a1),sprintf('a_2=%5.2f',a2),sprintf('a_3=%5.2f',a3)}; 
annH = annotation('textbox',[0.63 0.8 0.08 0.08],'string',str,'interpreter','latex') 
set(annH,'FitBoxToText','on','fontsize', 18,'BackgroundColor',[1 1 1]) 

grazie

risposta

5

ho elencato i problemi con il tuo codice qui sotto, ecco un codice di lavoro:

str = {'LLSQ fit: ' ... 
    'z = $\bar{a}_{1}$ + $a_2x$ + $a_3y$' ... 
    ['$\bar{a}_{1}$ = ' sprintf('%5.2f', a1)] ... 
    ['$a_2$ = ' sprintf('%5.2f', a2)] ... 
    ['$a_3$ = ' sprintf('%5.2f', a3)]}; 

annotation('textbox', [0.5 0.8 0.3 0.08], 'interpreter','latex', 'String', str); 

Problemi con il codice originale

  1. Devi avvolgere l'intero latexcomandi con $ segno:

    Questo codice non dà il risultato desiderato:

    annotation('textbox', [.2 .4 .1 .1], 'interpreter','latex', 'String', 'a_2x'); 
    

    ma questo fa:

    annotation('textbox', [.2 .4 .1 .1], 'interpreter','latex', 'String', '$a_2x$'); 
    
  2. si perderanno qualche parte della stringa, se si utilizzare sprintf poiché ha un altro interprete (ci sono soluzioni alternative per questo, ma suggerisco di concatenare le stringhe come ho fatto sopra)

    sprintf('$\bar{a}_{1}$ = %5.2f', a1) 
    

    tornerà:

    ar{a}_{1}$ = 1.00 
    

    che non è riconosciuto da latex. (\b viene interpretato come backspace in sprintf e rimuove il $ segno vitale.)

+1

solito 'sprintf' non ama i comandi LaTeX backslash-ed, perché cerca di interpretarli come' \ B', ' \ t', ecc. Quindi se vuoi che il comando LaTeX passi attraverso 'sprintf' devi sfuggire alla barra inversa stessa:' sprintf ('$ \\ bar {a} _ {1} $ =% 5.2f', a1) '(notare i due backslash). – anandr

Problemi correlati