Back

紅魔族LaTeX符文記事簿-pseudo code篇

紅魔族 $\LaTeX$ 符文記事簿 -pseudo code 篇

注意,這是一篇紅魔族式的 $\LaTeX$ 筆記。 請不要在公開場合對筆者朗誦,可能會造成極大的精神創傷。

簡介(必讀!!!)

在畫魔法陣(演算法)時常見兩種流派:

  • 無印流: algorithm + (algpseudocode 或 algcompatible 或 algorithmic)
  • 2e流: algorithm2e

寫 $\TeX{}$ 魔法陣時千萬不要搞錯了,不同流派的寫法是不能混用的,不然可是會爆炸(error)的!
怎麼個爆法呢?
首先algpseudocodealgcompatiblealgorithmic這三種咒文來自同一個體系,但有個主要的不同,algorithmic 的咒文全是大寫的(例如: \WHILE\ENDWHILE\STATE),但 algpseudocode 的咒文只有首字要大寫(\While\EndWhile\State)。 algcompatible 則是設計成兩種咒文皆能使用,但…有時會不靈光,所以──你知道ㄉ
algorithm2e 則設計給 $\LaTeX2e$ 使用,是完全不同的東西。

本文主要會講 algpseudocode 流,因為這是本大魔法師所在的區域最常用的咒文~~

algorithm + algpseudocode

要用這個流派來畫魔法陣,基底是

1
2
\usepackage{algorithm} 
\usepackage{algpseudocode}

algorithm讓你可以幫魔法陣下標題,algpseudocode則掌管魔法陣本體。

基本知識

一節咒文的構成有固定格式,必須由 \begin{algorithmic}[l] 的詠唱來開始魔法陣的繪製,這邊的參數 [l] ,會決定每 l 行標示一次行號,增加你的魔法陣可讀性。完成咒文本體後,加上 \end{algorithmic} 象徵魔法的終焉。如果用錯了,就發動不了。
如果希望你的咒文有行號,加上 \State 符文,
反之則使用無垢之符文 \Statex 創造空白。
我們先來寫一段:

\begin{algorithmic}[1]

\State $MP \gets 50$
\While{$MP \ge 0$}
    \State $Cast\  FireBall(Target)$
    \State $MP \gets MP-1$
    \Statex Wait until monster die!~
\EndWhile

\end{algorithmic}

灌入魔力後會變成這樣:

不過這樣好像少了什麼…沒錯,帥氣的名字
這時便是使用 algorithm 咒文的時刻:

\begin{algorithm}
\caption{Fire Ball Machine Gun}\label{fireball} % \caption{演算法標題}
\begin{algorithmic}[1] 

\State $MP \gets 50$
\While{$MP \ge 0$}
    \State $Cast\  FireBall(Target)$
    \State $MP \gets MP-1$
    \Statex Wait until monster die!~
\EndWhile

\end{algorithmic}
\end{algorithm}

灌入魔力後會變成這樣:

接下來是所有特殊符文的紀錄!

魔法的定義(Function)

如果你創造or編寫了一個新的小魔法,你可以用 \Function 或是 \Procedure 給它起個名字。(看你是哪一派的)
用法是這樣子的:

\begin{algorithmic}[1]
\Function{Fire\_Ball}{Target}
    \State Use Mana
\EndFunction
\Statex
\Procedure{Wind\_Cut}{Target}
    \State Kaze yo!
\EndProcedure
\end{algorithmic}

魔法的召喚

如果你在編寫魔法時,想要偷懶──不重造魔法,你可以用召喚的──
Systemcall! 不對──,是 \Call

\begin{algorithmic}[1]
\Function{Fire\_Ball}{Target}
    \State Use Mana
\EndFunction
\Statex
\State Here I Cast \Call{Fire\_Ball}{Target} !
\end{algorithmic}

If

\If
Licensed under CC BY-SA 4.0
Built with Hugo
Theme Stack designed by Jimmy