我们要使用的核心宏包是 listings
和 matlab-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}
效果如图
注意事项 1
listings
宏包本身就能实现插入代码的需求,但是配色很难看。 matlab-prettifier
提供了非常好的配色方案,而且对比 mcode
宏包,matlab-prettifier
已被 texlive
收录,无需自己下载。
注意事项 2
.m
文件要放在 code
文件下,(因为我们引用的时候是code/main.m
。之所以不放在根目录下,是因为这样比较整齐)
注意事项 3
如果发生了中文字体乱码的情况,这是因为MATLAB默认把 .m
文件保存成 GBK
格式的,但 listings
读取代码的时候,默认按照 UTF-8
的编码格式读取,所以会发生乱码。(应该是这个问题,编码这方面我不太懂)
所以我们需要保存 .m
文件的时候保存成 UTF-8
的编码格式。如果你的MATLAB版本比较高,(实测 2020a
可以),可以在左上角
找到这个另存为。
然后选择 UTF-8
即可
如果你的MATLAB版本比较低,没有这个改变编码格式的功能。(那么我建议你更新安装最新MATLAB) 也可以这样做:
将 .m
文件的后缀改成 .txt
然后通过记事本将编码修改成 UTF-8
,然后再改后缀成 .m
就好了
注意事项 4
如果你觉得这个代码还是不好看,可以查阅 listings
的手册自行设置。
2022年4月7日17:25:34