一、相关基础知识
1)一个标准的LaTex文档由如下部分组成:
1、导言区(Preamble):在'\begin{document}'命令之前的部分。导言区可以设置文档的格式和样式,以及引入其他必要的宏包和设置(document class、packages、commands等)。
2、正文(Body):在'\begin{document}'和'\end{document}'命令之间的部分。正文部分包括文档的实际内容,如段落、章节、公式、表格、图片等
3、参考文献(Bibliography):一个单独的部分,包含在文档中引用的所有来源完整引用信息。
4、附录(Appendix):额外信息的补充,像是代码、公式推导等
5、注释(Comments):对文档的说明和解释,一般不会被编译。
二、Example
1)如下给出一个简单的例子,以引出本文的重点——基于Latex的伪代码书写(仅解释伪代码相关内容,其余部分请自行查找相关资料)
\documentclass{article} \usepackage{algorithm} \usepackage{algorithmic} \title{Pseudocode} \author{Huang} \date{\today} \begin{document} \maketitle \begin{algorithm} \caption{Example Pseudocode} \end{algorithm} \end{document}
可以发现这里在引言区引入宏包 algorithm 和 algorithmic ,两者用于帮助我们编写结构化和可读性更好的算法代码。
在正文部分引入本文所需要编写的伪代码部分,如下所示:
2)上文我们构造了一个algorithm块,接下来会去其中嵌入algorithmic块,实现一些变量之前的基本运算。如下所示:
\begin{algorithm} \caption{Example Pseudocode} \begin{algorithmic} \STATE $x\gets0$ \end{algorithmic} \end{algorithm}
编译之后的结果如下所示:
3)代码常见的判断结构(if-else)和循环结构(for, while)是最常见的算法逻辑,下文通过Latex实现一个简单的判断结构:
\IF{$x\leq 0$} \STATE $x\gets x+1$ \ELSIF{$ x\geq 1$} \STATE $x\gets x-1$ \ELSE \STATE $x\gets 2x$ \ENDIF
生成伪代码如下所示:
这里可以发现我们只需要'\IF'和'\ENDIF'限制判断结构的范围即可。
3)类似于if判断结构,我们可以编写相关的循环结构(for、forall等循环结构体):
\begin{algorithmic} % while循环 \WHILE{$ x\leq 0$} \STATE $x\gets x+1$ \ENDWHILE \end{algorithmic} \begin{algorithmic} % for循环 \FOR{$ x\leq 0$} \STATE $x\gets x+2$ \ENDFOR \end{algorithmic} \begin{algorithmic} % forall循环 \FORALL{$ x\leq 0$} \STATE $x\gets x+3$ \ENDFOR \end{algorithmic}
生成的伪代码如下所示:
4)算法的伪代码中通常会说明算法的输入和输出,帮助读者更好地理解代码。在 algorithmic 中,输入对应\REQUIRE,输出对应\ENSURE,但若是偏爱INPUT和OUTPUT,可以对关键字重定义:
\renewcommand{\algorithmicrequire}{\textbf{Input:}} \renewcommand{\algorithmicensure}{\textbf{Output:}}
之后在算法段书写如下代码:
\begin{algorithmic} \ENSURE{$y$} \REQUIRE{$x$} % while循环 \WHILE{$ x\leq 0$} \STATE $y\gets x+1$ \ENDWHILE \end{algorithmic}
生成我们想要的伪代码:
至此,我们可以在Overleaf上基于Latex实现简单的伪代码编写,仍需多多练习!!!!!!!!
三、参考资料
1、https://welts.xyz/2022/01/17/pseudocode/
本文仅记录本人学习过程,如有不正之处,敬请指正!谢谢!!
标签:LaTeX,begin,end,书写,代码,STATE,algorithmic,gets From: https://www.cnblogs.com/hjxiamen/p/17152006.html