You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Matlab中LaTeX指令生成公式引发LaTeX解释器报错问题求助

解决Matlab中LaTeX图例处理Airy函数的\text命令报错问题

我能理解你遇到的这个困扰——Matlab默认的LaTeX解释器没加载amsmath包,导致\text命令无法识别,只能用\textrm临时凑活。下面给你几个完整的解决方案,让你能规范使用\text命令来处理这类非内置LaTeX函数的标注:

方案1:全局配置加载amsmath包(推荐)

这是最省心的方法,一次性设置后,所有使用LaTeX解释器的文本(图例、标题、坐标轴标签等)都能使用amsmath包的命令。

执行以下代码配置全局预定义:

% 获取当前的LaTeX预定义内容,避免覆盖原有设置
current_preamble = get(groot, 'DefaultLatexPreamble');
% 追加amsmath包的加载命令
new_preamble = [current_preamble, '\usepackage{amsmath}'];
set(groot, 'DefaultLatexPreamble', new_preamble);

之后你就可以正常使用\text命令编写图例了:

x = linspace(-5, 5, 100);
plot(x, airy(x));
legend({'$\text{airy}(x)$'}, 'Interpreter', 'latex');

方案2:仅针对当前图例加载amsmath包

如果你不想全局修改配置,也可以在单个图例的LaTeX字符串开头手动加入amsmath的加载命令(部分Matlab版本支持这种方式):

x = linspace(-5, 5, 100);
plot(x, airy(x));
legend({'$\usepackage{amsmath}\text{airy}(x)$'}, 'Interpreter', 'latex');

为什么\textrm能临时生效?

\textrm是LaTeX核心自带的命令,不需要依赖amsmath包,它会强制使用罗马字体显示文本。但相比\text,它有个明显缺点:不会根据上下文自动调整字体大小(比如在下标、上标中),而\text会继承周围的字体样式和大小,排版更规范。

注意事项

  • 如果你的Matlab版本较旧,全局预定义的设置可能需要重启Matlab才能生效;
  • 若之前已经配置过其他LaTeX包,一定要先获取原有预定义内容再追加,避免丢失之前的设置。

内容的提问来源于stack exchange,提问作者Nico Albers

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.05.20 07:52:21