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
最终显示如下:
使用方法:
首先在前面:
\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
环境中,需要我们自行下载:
- 官网:https://cn.mathworks.com/matlabcentral/fileexchange/8015-m-code-latex-package
- 没有 MathWorks 账号的也可以下载我上传的资源:LaTeX-mcode,MATLAB代码块风格补足文件
下载后我们会得到 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代码的主要内容,如果未能解决你的问题,请参考以下文章
在matlab画图里用Latex代码打出绝对值\abs是不行的,怎么搞?