LaTeX中插入MATLAB风格的代码块

Posted Z.Q.Feng

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了LaTeX中插入MATLAB风格的代码块相关的知识,希望对你有一定的参考价值。

文章目录


一、前言

在 LaTeX 中插入代码块很简单,但是要插入好看的代码块需要我们自己配置相关的参数,这里我介绍 listings 环境和 mcode 工具包。


二、使用 listings 环境

1. 引入包

\\usepackagecaption
\\usepackage[dvipsnames]xcolor % 更全的色系
\\usepackagelistings % 排代码用的宏包

2. MATLAB代码风格配置

%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%% listings设置
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%

\\lstset
	language = matlab,
	backgroundcolor = \\coloryellow!10, % 背景色:淡黄
	basicstyle = \\small\\ttfamily, % 基本样式 + 小号字体
	rulesepcolor= \\colorgray, % 代码块边框颜色
	breaklines = true, % 代码过长则换行
	numbers = left, % 行号在左侧显示
	numberstyle = \\small, % 行号字体
	keywordstyle = \\colorblue, % 关键字颜色
	commentstyle =\\colorgreen!100, % 注释颜色
	stringstyle = \\colorred!100, % 字符串颜色
	frame = shadowbox, %(带影子效果)方框框住代码块
	showspaces = false, % 不显示空格
	columns = fixed, % 字间距固定
	%escapeinside= % 特殊自定分隔符:
	morekeywords = as, % 自加新的关键字(必须前后都是空格)
	deletendkeywords = compile % 删除内定关键字;删除错误标记的关键字用deletekeywords删!

3. 使用效果

以下为 LaTeX 里插入的一段 MATLAB 代码:

\\beginlstlisting[caption=A Sample, language=matlab]
m = 128; n = 256;
% 128x256矩阵,每个元素服从Gauss随机分布
A = randn(m, n);
% 精确解mu只有10%元素非零,每一个非零元素也服从高斯分布
% 可保证mu是方程组唯一的非零元素最少的解
u = sprandn(n, 1, 0.1);
b = A * u;
\\endlstlisting

效果如下:


三、使用 mcode 工具包

1. 下载mcode包

此包不存在于 CTeX 环境中,需要我们自行下载:

下载后我们会得到 mcode.sty 文件。

2. 引入包

注意这个包会和上述 listings 环境冲突,两个使用一个即可(记得把设定 listings 代码风格那段也删掉

\\usepackage[framed,numbered,autolinebreaks,useliterate]/home/zq/mcode

这里我把 mcode.sty 文件放在 /home/zq/mode 目录下,所以采用了一个绝对路径引用,也可将其添加到 TEXMF 目录下,这样就不需要添加路径:

cd /usr/local/texlive/2021/texmf-dist/tex/latex # 我的TEXMF目录
sudo mkdir mcode
sudo cp /home/zq/mcode.sty ./mcode

可以使用 texhash 命令查看你的 TEXMF 路径,接着刷新 LaTeX 的包数据库:

sudo texhash

我们便可以引用 mcode 时不加路径了:

\\usepackage[framed,numbered,autolinebreaks,useliterate]mcode

3. 使用效果

给出了两段 MATLAB 代码:

\\beginlstlisting[caption=A Sample, language=matlab]
m = 128; n = 256;
% 128x256矩阵,每个元素服从Gauss随机分布
A = randn(m, n);
% 精确解 §$\\mcommentfont\\mu$§ 只有10%元素非零,每一个非零元素也服从高斯分布
% 可保证 §$\\mcommentfont\\mu$§ 是方程组唯一的非零元素最少的解
u = sprandn(n, 1, 0.1);
b = A * u;
\\endlstlisting
\\beginlstlisting[caption=MATLAB Sample]
for i = 1:3
	if i >= 5 && a ~= b       % literate programming replacement
		disp('cool');         % comment with some §\\mcommentfont\\LaTeX\\ in it: $\\mcommentfont\\pi x^2$§
	end
	[:,ind] = max(vec);
	x_last = x(1,end) - 1;
	v(end);
	really really long really really long really really long really really long really really long line % blaaaaaaaa
	ylabel('Voltage (V)');
end
\\endlstlisting

效果图如下:

在第二段代码中,使用 § § 环境可以在代码块中使用 LaTeX 命令,效果如下:


四、总结

不喜欢写总结。

以上是关于LaTeX中插入MATLAB风格的代码块的主要内容,如果未能解决你的问题,请参考以下文章

Latex 中插入 Matlab 代码

latex怎么插入matlab代码

LaTex实战笔记 2-插入 Python 程序代码块

MATLAB制作符合IEEE标准的图插入Latex

matlab作图导出为PDF去除留白插入latex

LaTeX数学模式&上下标&代码块