2013-06-15 8 views
5

Próbuję napisać proste równanie płaszczyzny plus wartość współczynnika \ bar {a} _1, a_2 i a_3, ale nie mogę uzyskać \ pasek do pracy. Jakieś sugestie? Wypróbowałem $ \ bar {a} _ {1} $ z lub bez dolarów, wszystko inne wygląda dla mnie dobrze, użyłem lateksu lub interpretera tekstowego, ale nie mogę go rozpoznać. jest to kod:Overbar w polu tekstowym adnotacji na działce Matlab (używając Latex jako interpretera)

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]) 

dzięki

Odpowiedz

5

mam wymienione problemy z kodem poniżej, tutaj jest kod działa:

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); 

Problemy z oryginalnego kodu

  1. Musisz owinąć całość latexpolecenia z $ znak:

    Ten kod nie daje pożądany wynik:

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

    ale to się robi:

    annotation('textbox', [.2 .4 .1 .1], 'interpreter','latex', 'String', '$a_2x$'); 
    
  2. tracisz pewną część napisu jeśli użyj sprintf, ponieważ ma on innego interpretera (istnieją sposoby obejścia tego problemu, ale sugeruję połączenie łańcuchów, tak jak to zrobiłem powyżej)

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

    powróci:

    ar{a}_{1}$ = 1.00 
    

    który nie jest rozpoznawany przez latex. (\b jest interpretowany jako Backspace w sprintf i usuwa istotną $ znak.)

+1

Zazwyczaj 'sprintf' nie lubi poleceń LaTeX backslash-ED, ponieważ stara się zinterpretować je jak' \ B', ' \ t', itd. Dlatego jeśli chcesz, aby polecenie LaTeX przechodziło przez 'sprintf', musisz uciec od samego ukośnika odwrotnego:' sprintf ('$ \\ bar {a} _ {1} $ =% 5.2f', a1) '(zauważ dwa tylne ukośniki). – anandr

Powiązane problemy