紅魔族 $\LaTeX$ 符文記事簿 -pseudo code 篇
注意,這是一篇紅魔族式的 $\LaTeX$ 筆記。 請不要在公開場合對筆者朗誦,可能會造成極大的精神創傷。
簡介(必讀!!!)
在畫魔法陣(演算法)時常見兩種流派:
- 無印流: algorithm + (algpseudocode 或 algcompatible 或 algorithmic)
- 2e流: algorithm2e
寫 $\TeX{}$ 魔法陣時千萬不要搞錯了,不同流派的寫法是不能混用的,不然可是會爆炸(error)的!
怎麼個爆法呢?
首先algpseudocode
或 algcompatible
或 algorithmic
這三種咒文來自同一個體系,但有個主要的不同,algorithmic
的咒文全是大寫的(例如: \WHILE
、 \ENDWHILE
、 \STATE
),但 algpseudocode
的咒文只有首字要大寫(\While
、 \EndWhile
、 \State
)。 algcompatible
則是設計成兩種咒文皆能使用,但…有時會不靈光,所以──你知道ㄉ
algorithm2e
則設計給 $\LaTeX2e$ 使用,是完全不同的東西。
本文主要會講 algpseudocode
流,因為這是本大魔法師所在的區域最常用的咒文~~
algorithm + 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