2013-06-15 38 views
5

Tôi đang cố gắng viết một phương trình đơn giản của mặt phẳng cộng với giá trị của hệ số \ bar {a} _1, a_2 và a_3 nhưng tôi không thể nhận được \ thanh để làm việc. Bất kì lời đề nghị nào? Tôi đã thử $ \ bar {a} _ {1} $ có hoặc không có đô la, mọi thứ khác có vẻ ổn với tôi, tôi đã sử dụng thông dịch viên latex hoặc tex nhưng không thể nhận ra nó. đây là đoạn code:Overbar trong hộp văn bản chú thích trong âm mưu Matlab (sử dụng Latex làm thông dịch viên)

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

nhờ

Trả lời

5

tôi đã liệt kê những vấn đề với mã của bạn dưới đây, đây là một mã làm việc:

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

Vấn đề với mã gốc

  1. Bạn phải quấn toàn bộ latexlệnh với $ dấu:

    Mã này không cung cấp cho các đầu ra mong muốn:

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

    Nhưng có một điều này:

    annotation('textbox', [.2 .4 .1 .1], 'interpreter','latex', 'String', '$a_2x$'); 
    
  2. Bạn sẽ mất một số phần của chuỗi nếu bạn sử dụng sprintf vì nó có một thông dịch viên khác (có cách giải quyết cho điều này, nhưng tôi khuyên bạn nên ghép các chuỗi như tôi đã làm ở trên)

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

    sẽ trở lại:

    ar{a}_{1}$ = 1.00 
    

    mà không được công nhận bởi latex. (\b được hiểu như là xóa lùi trong sprintf và loại bỏ các $ dấu hiệu quan trọng.)

+1

thường 'sprintf' không thích lệnh LaTeX xuyệc ngược-ed, vì nó cố gắng giải thích cho họ như '\ b',' \ t', vv Do đó nếu bạn muốn lệnh LaTeX đi qua 'sprintf', bạn phải thoát khỏi dấu gạch chéo ngược:' sprintf ('$ \\ bar {a} _ {1} $ =% 5.2f', a1) '(lưu ý hai dấu gạch chéo ngược). – anandr

Các vấn đề liên quan