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

MatLab latex title doesn't work for powers (^)

在 MatLab (R2015a) 中,我想使用 latex 为绘图标题设置样式。

这对于某些函数来说效果很好,但如果方程中有幂就不行了。

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

显示警告:

Warning: Error updating Text.

String must have valid interpreter syntax: 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


说明

既然你基本上已经自己回答了这个问题,我将解释为什么会这样。希望阅读本文后,它不再是 'weird' 行为。如果您选择在 Matlab 中使用 LaTeX 解释器,您将获得真正的 LaTeX 解释器。这意味着提供的字符串必须是有效的 LaTeX 语法。

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

Matlab 中 latex 函数的输出没有 $ 符号。这样你就可以组合输出并在需要时连接而不用 $-signs.

造成混乱

要在 LaTeX 中更改为 math-environment,您可以使用已经提到的快捷方式 $...$。另一种方法是使用 \begin{math} your_equation \end{math}。它为您的方程式生成相同的结果,可在此处用于演示目的。下面一行可以完成同样的工作,但写起来有点长:

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

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