发现 latex 还有专门排版 算法伪代码的工具包,实在太强大了。查了查一些资料,总结出以下用法:
发现 algorithm2e 工具包比较好用,调用时:
\usepackage[ruled,linesnumbered]{algorithm2e}
中括号中的 ruled 是让标题显示在上面,否则算法的标题则在下面。 linesnumbered 让算法中显示行号。还可以添加 boxed, 让算法排版时好像插入在一个盒子里。
书写代码时也有一些专门的命令:
\; 在行末添加分号,并自动换行
\caption{} 插入标题
\KwData {输入信息} 排版为 Data:输入信息
\Kwln {输入信息} 排版为 In: 输入信息
\KwOut {输出信息} 排版为: Out: 输出信息
\KwResult {输出信息} 排版为: Result: 输出信息
\For {条件日循环语句} 排版为 for 条件do 循环语句endo
\If {条件日肯定语句} 排版为 if 条件then 肯定语句end
\While {条件日循环语句} 排版为 while 条件do 循环语句end
举例:
\begin{algorithm}
\caption{Simulation-optimization heuristic}\label{algorithm}
\KwData{current period $t$, initial inventory $I_{t-1}$, initial capital $B_{t-1}$, demand samples}
\KwResult{Optimal order quantity $Q^{\ast}_{t}$}
$r\leftarrow t$\;
$\Delta B^{\ast}\leftarrow -\infty$\;
\While{$\Delta B\leq \Delta B^{\ast}$ and $r\leq T$}{$Q\leftarrow\arg\max_{Q\geq 0}\Delta B^{Q}_{t,r}(I_{t-1},B_{t-1})$\;
$\Delta B\leftarrow \Delta B^{Q}_{t,r}(I_{t-1},B_{t-1})/(r-t+1)$\;
\If{$\Delta B\geq \Delta B^{\ast}$}{$Q^{\ast}\leftarrow Q$\;
$\Delta B^{\ast}\leftarrow \Delta B$\;}
$r\leftarrow r+1$\;}
\end{algorithm}