利用alogrithm2e排版的一个算法概述

本文详细介绍使用LaTeX的Algorithm2e宏包进行算法排版的步骤与技巧,包括中文支持、关键词定制及复杂格式调整,适合追求细节的排版爱好者。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

成品

在这里插入图片描述

加载宏包

\documentclass[UTF8,fontset=macnew]{ctexart}
\usepackage{amsmath}
\usepackage[algoruled]{algorithm2e}
\usepackage{xcolor}
\usepackage{enumitem}

老样子,macnew只是为了texstudio看到我要的字体.
排版算法有许多的宏包.其中有用制表位的tabbing,algorithm,algorithm2e.我是看到刘海洋大师推荐的algorithm2e,读了1个晚上documentation排出来的.
当然这是我用"所见即所得的方法"排版出来的,不建议学…其实用tikz或者用box也能排版…只是强迫症有点难受…

Algorithm2e宏包

你如果在terminal(cmd)输入texdoc Algorithm的话出来的是另外的宏包我也读过.但是效果不大好…还是建议用Algorithm2e.
一开始在读的时候以为不支持中文字体.但是还是尝试了下,还是支持的…

\begin{algorithm}[H]
	\SetAlgoLined
	\KwData{this text}
	\KwResult{how to write algorithm with \LaTeX2e }
	initialization\;
	\While{not at end of this document}{
		read current\;
		\eIf{understand}{
			go to next section\;
			current section becomes this one\;
		}{
			go back to the beginning of current section\;
		}
	}
	\caption{How to write algorithms}
\end{algorithm}

在这里插入图片描述
先看看doc里面一开始写了啥.咋写的…Algorithms是一个浮动题环境.浮动题吗…麻烦…所以可选参数里面有[h]…
\caption标题…\label{吧啦啦啦}可以之后引用了.
由于我在加载宏包的时候设置了ruled所以外面会有边框.\SetAlgoLined是能够显示竖直的线…具体还有好多得读documentation…
plus: 宏包里说了,如果你在某个环境里想要换行的话一定要加;否则不行.\KwData{this text}里面放入参数.\KwInput .\KwOutput也一样…有许多关键词.

\eIf{understand}{
			go to next section\;
			current section becomes this one\;
		}

在某一个环境里面输入的话.出来会在关键词的下面也会缩进…但是括号一定要匹配…

如何修改中文

	\renewcommand{\algorithmcfname}{算法}
	\SetKw{KwData}{\textcolor{red}{\textbf{变量和参数:}}}{}

注意的是你在SetKw的时候最后的{}必须要有.否则会一直出现小括号.我找了半天没找到为啥…就是试了试.读了1小时多试了doc里面的方法才出来了…

	\SetKw{argname}{format}{}

同样你也可以自己设置关键词编译会自动识别.不过如果要换行的话要自己手动加…

最后的代码

\documentclass[UTF8,fontset=macnew]{ctexart}
\usepackage{amsmath}
\usepackage[algoruled]{algorithm2e}
\usepackage{xcolor}
\usepackage{enumitem}
\setlist{noitemsep}
\begin{document}
		\renewcommand{\algorithmcfname}{算法}
		\SetKw{KwData}{\textcolor{red}{\textbf{变量和参数:}}}{}
		\begin{algorithm}[htp]
			%\SetAlgoLined
			%\SetAlgoVlined
			\SetAlgoSkip{smallskip}
			\KwData{ \\ \hspace{2.5em}  \small {$\mathbf{x}(n)=m+1$  维输入向量} \\
								\hspace{5.2em}	\small {$=[+1,x_1(n),x_n, \dots x_m(n)]^T$}\\
								\hspace{2.7em}  \small {$\mathbf{w}(n) = m+1 $ 维权值向量} \\
								\hspace{5.2em}	\small{$ = [b,w_1(n),w_n, \dots w_m(n)]^T$}	\\
								\hspace{4.5em} 	\small{$b =$ 偏置	}\\
								\hspace{3.0em}  \small {$y(n) = $ 实际响应$\left(\text{量化的} \right)$ }	\\
								\hspace{3.0em}  \small{$d(n) = $数学期望}		\\
								\hspace{4.4em}  \small{$\eta =$ 学习效率参数,一个比$1$小的正常数} \\
							 \begin{enumerate}[left= 0pt]
							 	\item \fontsize{8pt}{1.25}初始化. 设$\mathbf{w}(0) =  \mathbf{0}.$ 对时间步 $n = 1,2 \cdots$执行下列计算
							 	\item \fontsize{8pt}{1.25}激活.在时间步$n$,通过提供连续输入向量 $\mathbf{x}(n)$ 和期望响应 $d(n)$ 来激活感知器
							 	\item {计算实际响应.计算感知器的实际响应:
							 	\vspace{-1em}
							 	\begin{center}
							 	   		$y(n) = sgn[ \mathbf{w}^T(n) \mathbf{x}(n) ] $ 								 	
							 	 \end{center}
							 	\vspace{-1em}这里sgn$\left(·\right)$ 是符号函数 }										         	 	 	        
							 	\item {权值向量的自适应.更新感知器的权值向量:
							 	\vspace{-0.5em}
							 		\begin{center}
							 			$ \mathbf{w}(n+1) = \mathbf{w}(n) + \eta[d(n) - y(n)] \mathbf{x}(n)$
							 		\end{center}
						 		\vspace{-1em}这里
						 			\[  d(n) = \begin{cases}
						 			    +1 &  \text{} \mathbf{x}(n) \text{属于类别}  \psi_1\\
						 			    -1 &    \text{} \mathbf{x}(n) \text{属于类别}  \psi_2
						 			\end{cases}
						 			\]
						 		\item  继续.时间步$n$增加1,返回第$2$步
					 		}					 		
							 \end{enumerate}
		 	} 
			\caption{感知器收敛算法概述}
		\end{algorithm}
\end{document}

这里面我设置了enumerate环境的间距,很多换行也是手动的.我还得多学习学习…大佬的建议是把公式排外面,但是我是所见即所得…其实是被诟病的 …但是只是看到华章<<神经网络和机器学习>>里面的算法描述很想排排看.

结语

Still on the way! 每周六尽量从考研复习中抽出点时间写写python和LaTeX.
在这里插入图片描述

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值