MatLab 乳胶标题不适用于电源 (^)



在MatLab (R2015a)中,我想使用latex来样式化我的绘图标题。

对于某些函数,这是正常的,但如果方程中有一个幂,则不是。

下面的代码可以工作,并在右边显示一个格式化的标题,在左边显示一个未格式化的标题。

显示警告:

警告:更新文本错误。

字符串必须具有有效的解释器语法:y = x^2

syms x y
eq = y == x^2;
subplot(1,2,1)
ezplot(eq)
title(latex(eq),'interpreter','latex')
eq = y == x+2;
subplot(1,2,2)
ezplot(eq)
title(latex(eq),'interpreter','latex')
编辑:

我刚刚发现我可以通过在两边附加$来使它工作。但我必须这样做似乎很奇怪。

title(strcat('$',latex(eq),'$'),'interpreter','latex')

解决方案

通过在生成的latex表达式前后添加$ -符号,可以很容易地解决这个问题。所以你可以把«title -lines»改成:

title(['$',latex(eq),'$'],'interpreter','latex')

另一种选择是使用您问题中建议的strcat


解释

既然你自己基本上已经回答了这个问题,我来解释一下为什么会这样。希望看完这篇文章后,这不再是"奇怪"的行为。如果你选择在Matlab中使用latex解释器,你就会得到一个真正的latex解释器。这意味着所提供的字符串必须是有效的latex语法。

在数学环境之外使用^被认为是无效的语法,因为它是LaTeX中的保留字符。在这种情况下,一些解释器会自动在前后添加$,但同时抛出警告。

Matlab中latex -函数的输出没有$ -符号。这样,您就可以组合输出并在需要时进行连接,而不会使用$ -符号造成混乱。

要切换到LaTeX中的数学环境,可以使用前面提到的快捷方式$...$。另一种方法是使用begin{math} your_equation end{math}。它对你的方程产生相同的结果,可以在这里用于演示。下面这行可以做同样的工作,但是写起来有点长:

title(['begin{math}',latex(eq),'end{math}'],'interpreter','latex')

现在,你的方程式中只有一个正确显示的原因是y = x^2中的无效字符^。然后Matlab选择解释器none,因此显示未格式化的字符串。y = x + 2中的+ -符号在数学环境之外是有效的,因此它被正确显示(但在数学环境中不被解释)。

相关内容

最新更新