Matlab的骚操作——中文和LaTeX标记



前几天,对于作图时label设置,无法同时包含中文和latex标记,以及字体无法更改的问题困扰了很久。在查阅官方文档无果后,给Mathworks公司技术人员发邮件,原来目前尚未提供这一功能,然后工作人员已将我的建议提交给Matlab开发,期待未来版本可以完善喔

Matlab的骚操作——中文和LaTeX标记的图1

但是中文和latex同时存在也不是无解的喔!




首先我们先熟悉一下TeX标记和LaTeX标记

您可以使用TeX标记向图中添加包含希腊字母和特殊字符的文本。此外,还可以使用TeX 标记添加上标、下标以及修改文本类型和颜色。默认情况下,MATLAB® 支持一部TeX 标记。要使用其他特殊字符,如积分和求和符号,可以改用 LaTeX 标记。


包含 LaTeX 行间数学公式的文本

在作图时,我们经常需要将公式显示在图像上,此时就需要Matlab在title、xlabel、ylabel、zlabel...上插入LateX公式

默认情况下,MATLAB可以解析使用TeX标记的文本。但是,要获得更多格式设置选项,您可以改用LaTeX标记。例如,您可以使用 LaTeX在文本中包含数学表达式。要使用 LaTeX 标记,需将 Text 对象的 Interpreter 属性设置为 'latex'



%举个例子

alpha = 0.1:0.1:10; beta = sin(alpha )./alpha ;

plot(alpha, beta);

set(gca,'Fontname','Times New Roman');

xlabel('$\alpha$','interpreter','latex', 'FontSize', 18);

ylabel('$\beta$','interpreter','latex', 'FontSize', 18);

title('$\frac{sin(x)}{x}$','interpreter','latex', 'FontSize', 20);

handle= legend('$\frac{sin(x)}{x}$');

set(handle,'Interpreter','latex', 'FontSize', 20)

text('Interpreter','latex','String','$$\leftarrow\frac{sin(x)}{x}$$','Position',[2,.5],'FontSize',16);

Matlab的骚操作——中文和LaTeX标记的图2

其中,‘interpreter’ 表示所采用的解释器语法,此时需要设置为'latex'

'$...$' 是指放在行内的公式;会将字符缩小到与设定的字符一样大,即一个公式占一行

'\$\$...\$\$是指单独占据一行或几行的公式;会将每一个字符都设定为预设的大小,一个公式占多行。


'$...$'和'\$\$...\$\$例子

figure(1);

set(gcf, 'position', [0 0 700, 300]);

subplot(1,2,1);

plot(alpha, beta);

title('$\frac{sin(x_\alpha)}{x}$','interpreter','latex');

set(gca,'position',[0.05 0.1 0.4 0.7]);

subplot(1,2,2);

plot(alpha, beta);

title('$$\frac{sin(x_\alpha)}{x}$$' ,'interpreter','latex')

set(gca,'position',[0.6 0.1 0.35 0.7]);

Matlab的骚操作——中文和LaTeX标记的图3

从这个图上的标题来看,是不是两者的区别更清楚了呀!


TeX 标记选项

MATLAB 支持部分 TeX 标记。使用 TeX 标记可添加上标和下标、修改文本类型和颜色以及包含特殊字符。只要文本对象的 Interpreter 属性设置为 'tex'(默认值),MATLAB 便会解释 TeX 标记,同时TeX支持中文字符(但是我觉得很丑耶,不信你试试)。

修饰符会一直作用到文本结尾,但上标和下标除外,因为它们仅修饰下一个字符或花括号中的字符。当您将 Interpreter 属性设置为 'tex' 时,支持的修饰符如下所示。

Matlab的骚操作——中文和LaTeX标记的图4

下表列出了当 Interpreter 属性设置为 'tex' 时支持的特殊字符。

Matlab的骚操作——中文和LaTeX标记的图5
Matlab的骚操作——中文和LaTeX标记的图6

敲黑板——那到底该如何同时设置中文和latex字体呢?




目前只有一种方法,那就是用两个text函数,分别存放中文和latex字体喔!所以label内容同时存在中文和latex时候,目前只能把两者分开,然后调整text文本框的位置!

再看个例子!

ezplot('x^2+(y-(x^2)^(1/3))^2=9')

xlim([-5 5]); ylim([-4 5]);

text(-2.2,1,'$${x^2}+{\left({y-{x^{\frac{2}{3}}}}\right)^2}=9$$','FontSize',16,'Interpreter','latex')%存放latex字体

text(-2,2.5,'\fontname{宋体}爱你呦\fontname{Times New Roman}\heartsuit Matlab','FontSize',16,'Interpreter','tex')%存放TeX常规字体

set(gca,'Fontname','Times New Roman');

title('$${x^2}+{\left({y-{x^{\frac{2}{3}}}}\right)^2}= 9$$','FontSize',16,'Interpreter','latex')

Matlab的骚操作——中文和LaTeX标记的图7

如果复杂的LaTeX字符命令记不住怎么办呢?




小编扬扬给你提供两种方法。

方法一:利用matlab自带的LaTeX函数即可转化为latex字符!

方法二:利用math type公式编辑器来完成!

方法一


利用matlab自带的LaTeX函数即可转化为latex字符!

Matlab的骚操作——中文和LaTeX标记的图8

注意:需要将其中的变量都转化为符号变量,不然会报错哒!

方法二


利用math type公式编辑器来完成!

第一步:打开math type偏好设置——剪切和复制偏好设置

Matlab的骚操作——中文和LaTeX标记的图9

第二步:选择粘贴方式为MathML或TeX——LaTeX

Matlab的骚操作——中文和LaTeX标记的图10

第三步:粘贴到matlab命令行窗口,去掉两端部分

Matlab的骚操作——中文和LaTeX标记的图11

这样就完成啦,两种方法我还是推荐第二种,更简单快捷一些!

Matlab的骚操作——中文和LaTeX标记的图12

LATEX书籍推荐



Latex是被公认的生成公式最漂亮排版语言(软件),如果小伙伴(打工仔们)对latex排版感兴趣可以自学一下下面这本书,后台回复latex”即可获取书籍电子版喔!


Matlab学习教程

Matlab的骚操作——中文和LaTeX标记的图13

扫二维码|关注我们


微信号|Superyang_C

后台回复|一对一技术支持

点击蓝字 关注我们


(3条)
默认 最新
学习了。
评论 点赞
666
评论 点赞

查看更多评论 >

点赞 7 评论 3 收藏 4
关注