优雅的在latex中插入MATLAB代码 | 解决MATLAB代码中文乱码问题

我们要使用的核心宏包是 listingsmatlab-prettifier。其中 listings 是为了插入代码,matlab-prettifier 提供了很好的配色方案。

最小工作示例如下:

% !TEX program = xelatex
\documentclass{ctexart}
%---------------优雅的插入MATLAB代码---------%
\usepackage{lipsum,zhlipsum} %生成一些测试文本
\usepackage{listings,matlab-prettifier} % MATLAB 美化包
\lstset{
        style=Matlab-editor,
        numbers      = left,
        frame        = single,
}
\begin{document}
\tableofcontents
\newpage
\zhlipsum[1-2]
\lstinputlisting[caption={\bf main.m},]{code/main.m}
\end{document}

效果如图
优雅的在latex中插入MATLAB代码 | 解决MATLAB代码中文乱码问题_第1张图片


注意事项 1

listings 宏包本身就能实现插入代码的需求,但是配色很难看matlab-prettifier 提供了非常好的配色方案,而且对比 mcode 宏包,matlab-prettifier 已被 texlive 收录,无需自己下载。

注意事项 2

.m 文件要放在 code 文件下,(因为我们引用的时候是code/main.m 。之所以不放在根目录下,是因为这样比较整齐)
优雅的在latex中插入MATLAB代码 | 解决MATLAB代码中文乱码问题_第2张图片
优雅的在latex中插入MATLAB代码 | 解决MATLAB代码中文乱码问题_第3张图片

注意事项 3

如果发生了中文字体乱码的情况,这是因为MATLAB默认把 .m 文件保存成 GBK 格式的,但 listings 读取代码的时候,默认按照 UTF-8 的编码格式读取,所以会发生乱码。(应该是这个问题,编码这方面我不太懂)

所以我们需要保存 .m 文件的时候保存成 UTF-8 的编码格式。如果你的MATLAB版本比较高,(实测 2020a 可以),可以在左上角
优雅的在latex中插入MATLAB代码 | 解决MATLAB代码中文乱码问题_第4张图片

找到这个另存为。

然后选择 UTF-8 即可
优雅的在latex中插入MATLAB代码 | 解决MATLAB代码中文乱码问题_第5张图片
如果你的MATLAB版本比较低,没有这个改变编码格式的功能。(那么我建议你更新安装最新MATLAB) 也可以这样做:

.m 文件的后缀改成 .txt 然后通过记事本将编码修改成 UTF-8,然后再改后缀成 .m 就好了

记事本文本文件如何更改设置编码(两种方法)

注意事项 4

如果你觉得这个代码还是不好看,可以查阅 listings 的手册自行设置。


2022年4月7日17:25:34

你可能感兴趣的:(LaTeX,MATLAB,MATLAB,latex)