latex怎么插入matlab代码

Posted

tags:

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

首先下载演示文件

style文件下载地址:
http://www.mathworks.com/matlabcentral/fileexchange/8015-m-code-latex-package
http://www.mathworks.com/matlabcentral/fx_files/8015/10/mcode.zip
演示文件下载:http://www.knorn.org/misc_files/mcode_demo.zip


使用方法:
1. 在Latex开头加载package
% load package with ``framed'' and ``numbered'' option.
\\usepackage[framed,numbered]mcode

2.需要加入Matlab代码的地方使用

2.1如果在同一行显示 使用\\mcodeMatlab代码
例如 \\mcodefor i=1:3, disp('cool'); end;
2.2 如果需要在矩形框里显示,并加入行号,使用lstlisting
如:
\\beginlstlisting
for i=1:3
    disp('cool');             % comment with some §\\mcommentfont\\LaTeX in it: $\\mcommentfont\\pi x^2$§
    x_last = x(iend);
end
\\endlstlisting

2.3也可以直接给出Matlab文件名,
lstinputlisting/SOME/PATH/FILENAME.M
或者自己定义开始,结束的行号
lstinputlisting[firstline=6, lastline=15]/SOME/PATH/FILENAME.M

最终显示如下:

参考技术A 这个要用宏包listings哦
使用方法:
首先在前面:
\usepackagelistings
\lstsetlanguage=Matlab%代码语言使用的是matlab
\lstsetbreaklines%自动将长的代码行换行排版
\lstsetextendedchars=false%解决代码跨页时,章节标题,页眉等汉字不显示的问题

然后在你需要贴代码的地方:
\beginlstlisting
贴你的代码吧
\endlstlisting

还有很多别的设置,你可以搜索下百度latex+listings。。。
希望能对你有帮助本回答被提问者和网友采纳
参考技术B 专门用于排版算法的宏包包括 algorithm, algorithm2e, algorithmx, clrscode, pseudocode 等等,请自行参看各自的文档选用。
没有什么格式,纯文字自行实现可以考虑使用 enumerate 环境外套定理环境。

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风格的代码块

在matlab画图里用Latex代码打出绝对值\abs是不行的,怎么搞?

LATEX中如何添加package?如何添加MATLAB代码?

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

如何在matlab图形中插入希腊字母