MatLab乳胶标题不适用于权力(^)

时间:2015-07-11 11:48:10

标签: matlab latex

在MatLab(R2015a)中,我想使用乳胶来标注我的情节标题。

对于某些功能来说这很好用,但如果方程中有一个功能则不行。

以下代码有效,并显示右侧的格式化标题和左侧未格式化的标题。

显示警告:

  

警告:更新文本时出错。

     

String必须具有有效的解释器语法: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')

1 个答案:

答案 0 :(得分:3)

解决方案

通过在生成的LaTeX表达式之前和之后添加$ - 符号,可以轻松解决问题。因此,您可以将«title - 行»更改为:

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

另一种方法是使用问题中提出的strcat

解释

既然你已经基本上自己回答了这个问题,我将解释它为什么会发生。希望在阅读之后,它不再是“怪异”的行为。如果您选择在Matlab中使用LaTeX-interpreter,那么您真的会得到一个LaTeX解释器。这意味着提供的字符串必须是有效的LaTeX语法。

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

Matlab中latex - 函数的输出没有$ - 符号。这样,您可以根据需要组合输出和连接,而不会产生$ - 符号的混乱。

要更改为LaTeX中的math-environment,您可以使用已提到的快捷方式$...$。另一种方法是使用\begin{math} your_equation \end{math}。它为您的方程产生相同的结果,可以在这里用于演示目的。以下行将执行相同的工作,但写入时间稍长:

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

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