Matlab传奇文本使用Latex解释器溢出

时间:2013-09-20 18:40:05

标签: matlab plot latex matlab-figure

我试图在我的matlab图中包含一个图例,该图使用Latex解释器作为图例文本。

当我将图例设置为使用Latex解释器时,文本内的文本溢出了图例框。

我尝试调整文本的大小,但无论FontSize如何都会发生这种情况。

以下是我的脚本的相关部分:

I = legend([h1 h2 h3],'RainFall Flux', ... 
           'Temperature term ($$\rho \alpha$$dT)', ...
           'Salinity term ($$\rho \beta$$dS)');
c=get(I,'children');
set(c(5),'LineWidth',3); %adjust lineWidth in legend
set(c(2),'LineWidth',3); %adjust lineWidth in legend
set(I,'interpreter','latex'); %set Latex interpreter
set(I,'FontSize',15);

我假设这是因为在使用Latex解释文本后,matlab没有考虑正确的字符大小。但是,我不知道如何解决这个问题。

非常感谢任何见解!谢谢!

3 个答案:

答案 0 :(得分:1)

如果我从你的第一个语句中删除[h1 h2 h3](和逗号),我在R2007b中的代码没有任何问题。但是,在调用latex解释器之后,或者在设置FontSize之后,图例中线宽的变化会消失,所以我不得不切换这些订单。换句话说,此代码有效:

x=[1:100]; y=sin(pi*x/50); plot(x,y,x,y.^2,x,sqrt(abs(y)));
I = legend('RainFall Flux', ... 
           'Temperature term ($$\rho \alpha$$dT)', ...
           'Salinity term ($$\rho \beta$$dS)');
c=get(I,'children');
set(I,'interpreter','latex'); %set Latex interpreter
set(I,'FontSize',15);
set(c(5),'LineWidth',3); %adjust lineWidth in legend
set(c(2),'LineWidth',3); %adjust lineWidth in legend

答案 1 :(得分:0)

另一种方法是在将默认解释器设置为LaTex之前更改字体大小。我过去曾做过那些工作,并注意到我上面的答案实际上也是这样做的。

答案 2 :(得分:0)

我从来没有找到一个完美的解决方案(即MATLAB自动为LaTeX提供正确的方框)。

然而以下是一个很好的软糖:通过添加~个字符强制额外空间--- LaTeX解释器会隐藏它们,但它们包含在宽度计算中。

~添加到最长的LEGEND行以扩展框的宽度

I = legend([h1 h2 h3],'RainFall Flux', ... 
       'Temperature term ($$\rho \alpha$$dT)~~~', ...
       'Salinity term ($$\rho \beta$$dS)');

与它一起玩,看看你需要添加多少个波浪,以强制合身。