• 【Latex】算法排版规律(中文排版)


    参考资料

    一、中文排版

    1.1 准备工作

    1. 设置字符编码为中文排版
    \usepackage[UTF8]{ctex}%%%使用中文
    
    • 1

    UTF8指的是编码包;ctex是参数命令,表示中文排版

    %%cetex中提供了四种中文包:ctexart,ctexrep,ctexbook,ctexbeamer对应着article,repoter,book,beamer 具体见:《CTex宏集手册》
    在这里插入图片描述

    1. 引入算法包,都写上
    \usepackage{algorithm}  
    \usepackage{algorithmicx} %或者\usepackage{algorithmic}
    \usepackage{algpseudocode}
    
    • 1
    • 2
    • 3
    • algorithm : 算法的float warpper,类似于table, figure这样的们命令,你可以在你的表格/图形上加一个数字,防止它被分成两页.
    • algorithmicx: 是algorithmic的升级版。事先已经定义好一些常用的命令语句,有如IF,WHILE等。需要注意的是所有命令语句必须大写。此外,(升级版)自定义一些命令。
    1. 算法中可用用到特殊的数学公式或者符号
    \usepackage{amsmath,amssymb,amsfonts}
    
    • 1

    举例
    在这里插入图片描述
    4. 利用\renewcommand可以对系统已有的命令重新定义
    英文举例
    在这里插入图片描述

    • algorithmicrequirealgorithmic中的原有命令,require意为要求
    • algorithmicensurealgorithmic中的原有命令,ensure意为确保
    • \textbf是字体加粗命令
    • 黄线下标的Input:是新命令的名称
      效果图如下
      在这里插入图片描述
      中文的命令重新定义为
    \renewcommand{\algorithmicrequire}{\textbf{输入:}}  
    \renewcommand{\algorithmicensure}{\textbf{输出:}}
    
    • 1
    • 2

    1.2 排版

    一个栗子

    \begin{document}
    
        \begin{algorithm}  %生成浮动式图
            \caption{DBSCAN 伪代码}  %标题
            % 由algorighmic完成代码的编译部分
            \begin{algorithmic}[1] %[1]表示每行显示行号 ,且由123..排序 
                \Require 点集ps,邻域半径eps,邻域的最小个数MinP.
                \Ensure 簇 cl.
                \For {q in ps} 
                \State 标记q为unvisited(未拜访的)
                \EndFor
                
                \For {q in ps }
                   \If {q 的标记为visited 或者 q 属于任意簇}:
                   \State 跳过(continue)
                   \Else:
                        \If {q 是 cp(核心点)}
                            \State 标记q为visited.且创造一个新簇 cl
                            \For {p 是 q的$\epsilon$的邻域内的点(p $\in n_{\epsilon}(q)$ )}
                            
                                  \If {p 的标记为unvisited}
                                  \State 将p放入簇cl中
                                  \EndIf
                            \EndFor
                        \EndIf
                   \EndIf
                \EndFor
    
               \State Return 簇 cl
    
        \end{algorithmic}
        \end{algorithm}
        
    \end{document}
    
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • 16
    • 17
    • 18
    • 19
    • 20
    • 21
    • 22
    • 23
    • 24
    • 25
    • 26
    • 27
    • 28
    • 29
    • 30
    • 31
    • 32
    • 33
    • 34
    • 35

    图示:

    在这里插入图片描述

    1.3 循环模块语句的书写

    A. For语块

    \For{}
        \State 循环主体
        
    \EndFor
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    \ForAll{}
        \State 循环主体
        
    \EndFor
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    \For{$i\gets 1, n$} %%%\gets表示逆箭头
        \State $sum\gets sum+i$ 
    \EndFor
    
    • 1
    • 2
    • 3

    在这里插入图片描述

    B. While语块

    \While{}
       \State 循环主体,类似于For
        
    \EndWhile
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

        \State $sum\gets 0$ (初始设置sumw为0)
        \State $i\gets 1$ (初始设置i为1)
    \While{$i\le n$}
        \State $sum\gets sum+i$
        \State $i\gets i+1$
    \EndWhile
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    C. Repeat语块

    \Repeat
        \State 循环主体在前,条件判断在后
        
    \Until{}
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

        \State $sum\gets 0$ (初始设置sumw为0)
        \State $i\gets 1$ (初始设置i为1)
    \Repeat
        \State $sum\gets sum+i$
        \State $i\gets i+1$
    \Until{$i>n$}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6

    在这里插入图片描述

    1.4 条件模块的语句书写

    \If{$quality\ge 9$}
        \State $a\gets perfect$
    \ElsIf{$quality\ge 7$}
        \State $a\gets good$
    \ElsIf{$quality\ge 5$}
        \State $a\gets medium$
    \ElsIf{$quality\ge 3$}
        \State $a\gets bad$
    \Else
        \State $a\gets unusable$
    \EndIf
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11

    在这里插入图片描述

    1.5 输入输出语句

    \Require something
    \Ensure something
        \Statex
    \State \Call{Create}{10}
    
    • 1
    • 2
    • 3
    • 4

    在这里插入图片描述

    1.6 Procedure语块

    \Procedure{}{}
        
    \EndProcedure
    
    • 1
    • 2
    • 3

    其他的见参考资料

  • 相关阅读:
    【牛客刷题】带你在牛客刷题第八弹(简单排序)
    vue3源码分析——实现slots
    机器视觉学习(五)—— 图像的几何
    苍穹外卖(二)新增员工及项目细节
    Linux用户和权限
    左程云老师算法课笔记(一)
    CAP理解
    【web-攻击用户】(9.1.4)查找并利用XSS漏洞--反射型
    分享刚出炉的基于Blazor技术的Web应用开发框架
    被忽视的钣金零件外观设计
  • 原文地址:https://blog.csdn.net/panbaoran913/article/details/127843964