อัลกอริทึมและรหัสเทียม
ครอบรหัสเทียมด้วยสภาพแวดล้อม algorithm พร้อม \caption เพื่อให้ได้ "Algorithm 1" ภายในนั้น Scissor LaTeX อ่านคำสั่งตัวพิมพ์ใหญ่ของ algorithmic (\STATE, \FOR) เฉพาะในเลย์เอาต์งานประชุมวิชาการ สำหรับเอกสารอื่นให้ใส่ขั้นตอนไว้ในบล็อก verbatim
สภาพแวดล้อม algorithm
แพ็กเกจ algorithm มีสภาพแวดล้อมที่มีหมายเลขสำหรับรหัสเทียม คล้ายกับรูปภาพ: \caption ให้หมายเลขแก่มัน ("Algorithm 1") และ \label หลังคำบรรยายช่วยให้คุณอ้างถึงมันด้วย \ref ได้ ใน Scissor LaTeX อัลกอริทึมจะอยู่ตรงตำแหน่งที่คุณเขียน และคำบรรยายจะแสดงอยู่ด้านล่าง
สิ่งที่อยู่ข้างในขึ้นอยู่กับแพ็กเกจที่คุณใช้เขียนขั้นตอน และตรงนี้เองที่การรองรับแตกต่างกัน:
| แพ็กเกจ | คำสั่ง | ใน Scissor LaTeX |
|---|---|---|
| algorithm | สภาพแวดล้อม algorithm, \caption, \label | ใช้ได้: มีหมายเลข "Algorithm N" และคำบรรยายอยู่ด้านล่าง |
| algorithmic | \STATE, \IF, \FOR, \WHILE, \RETURN ... (ตัวพิมพ์ใหญ่) | ใช้ได้บางส่วน: อ่านเฉพาะในเอกสารที่ใช้เลย์เอาต์งานประชุมวิชาการ ที่อื่นจะเป็นคำสั่งที่ไม่รู้จัก |
| algpseudocode (algorithmicx) | \State, \If, \For, \EndFor, \Return ... | ไม่รองรับ: ถูกข้ามพร้อมข้อความแจ้ง และขั้นตอนทั้งหมดจะต่อกันเป็นบรรทัดเดียว |
| algorithm2e | \KwIn, \For{..}{..}, \eIf ... | ไม่รองรับ: ถูกข้ามพร้อมข้อความแจ้ง |
รหัสเทียมที่ใช้ได้ทุกที่
วิธีที่เชื่อถือได้ที่สุดในการแสดงรหัสเทียมในเอกสาร Scissor LaTeX ใด ๆ คือบล็อก verbatim ภายใน algorithm คุณยังได้หมายเลขและคำบรรยาย และบรรทัดต่าง ๆ ยังคงการเยื้องไว้
อัลกอริทึมที่มีขั้นตอนแบบ verbatim
\begin{algorithm}
\caption{Sum of a list}
\label{alg:sum}
\begin{verbatim}
s := 0
for each a in xs:
s := s + a
return s
\end{verbatim}
\end{algorithm}
Algorithm~\ref{alg:sum} adds the numbers of a list.สำหรับรหัสเทียมที่มีสูตร lstlisting ใช้ได้ในแบบเดียวกัน หรือเขียนขั้นตอนเป็นข้อความธรรมดานอกสภาพแวดล้อม algorithm ในรูปรายการที่มีหมายเลข
ขั้นตอนเป็นรายการที่มีหมายเลข พร้อมคณิตศาสตร์
\textbf{Input:} numbers $a_1, \dots, a_n$.
\begin{enumerate}
\item Set $s \gets 0$.
\item For $i = 1, \dots, n$: set $s \gets s + a_i$.
\item Return $s$.
\end{enumerate}algorithmic ในเลย์เอาต์งานประชุมวิชาการ
เลย์เอาต์ที่เลียนแบบงานประชุมวิชาการ (arXiv, IEEE, NeurIPS, ICML และอื่น ๆ) อ่านคำสั่งตัวพิมพ์ใหญ่ของแพ็กเกจ algorithmic: คำสำคัญอย่าง for, do, end for และ return จะแสดงเป็นตัวหนา และแต่ละคำสั่งจะขึ้นบรรทัดใหม่ ไม่มีการวาดหมายเลขบรรทัด และบรรทัดต่าง ๆ อยู่กึ่งกลาง แท็บปัญหาจะบอกชื่อเลย์เอาต์ที่ใช้อยู่
algorithmic ในเอกสารแบบ arXiv
\documentclass{article}
\usepackage{arxiv}
\usepackage{algorithm,algorithmic}
\begin{document}
\begin{algorithm}
\caption{Sum of a list}
\begin{algorithmic}
\STATE $s \gets 0$
\FOR{$i = 1$ to $n$}
\STATE $s \gets s + a_i$
\ENDFOR
\RETURN $s$
\end{algorithmic}
\end{algorithm}
\end{document}
แท็บปัญหา: Layout in the style of the arXiv preprint style (final mode). Not official. To compile elsewhere, add arxiv.sty from github.com/kourgeorge/arxiv-style.
ไม่รองรับ algpseudocode
algpseudocode ซึ่งเป็นแพ็กเกจที่พบบ่อยที่สุดในบทความช่วงหลัง ใช้คำสั่งที่ผสมตัวพิมพ์ใหญ่และเล็ก เช่น \State และ \EndFor Scissor LaTeX ไม่รู้จักคำสั่งเหล่านี้: ชื่อคำสั่งจะถูกข้าม สูตรและคำต่าง ๆ ยังคงอยู่ และทุกอย่างจะต่อกันเป็นบรรทัดเดียว แท็บปัญหาจะแสดงรายการคำสั่งที่ถูกข้าม
algpseudocode: ขั้นตอนต่อกันเป็นบรรทัดเดียว
\begin{algorithm}
\caption{Sum of a list}
\begin{algorithmic}[1]
\State $s \gets 0$
\For{$i = 1$ to $n$}
\State $s \gets s + a_i$
\EndFor
\State \Return $s$
\end{algorithmic}
\end{algorithm}แท็บปัญหา: Skipped 4 unknown commands: \State, \For, \EndFor, \Return
หากต้องการให้เอกสารใช้ได้ทั้งที่นี่และในการติดตั้ง TeX ให้เขียนขั้นตอนใน verbatim ตามที่แสดงด้านบน ซึ่งคอมไพล์ได้ทุกที่
สิ่งที่ต่างจากการติดตั้ง TeX
หน้าแพ็กเกจคือ algorithm, algorithmic และ algpseudocode คู่มืออยู่บน CTAN: algorithms algorithmicx และ algorithm2e
ดูเพิ่มเติม แพ็กเกจอัลกอริทึม โค้ดโปรแกรม และ เลย์เอาต์งานประชุมวิชาการ
คำถามและคำตอบ
จะเขียนอัลกอริทึมใน LaTeX ได้อย่างไร
ใช้สภาพแวดล้อม algorithm พร้อม \caption แล้วใส่ขั้นตอนไว้ข้างใน ใน Scissor LaTeX ขั้นตอนจะทำงานได้ดีที่สุดในบล็อก verbatim หรือใช้คำสั่ง \STATE ของ algorithmic ในเลย์เอาต์งานประชุมวิชาการ
ทำไมบรรทัด \State ของฉันจึงต่อกันหมด
\State มาจาก algpseudocode ซึ่ง Scissor LaTeX ไม่รองรับ ชื่อคำสั่งจะถูกข้าม ขั้นตอนต่าง ๆ จึงรวมกันเป็นบรรทัดเดียว ให้ใช้ verbatim สำหรับขั้นตอนแทน
อ้างถึงอัลกอริทึมด้วยหมายเลขได้หรือไม่
ได้ ใส่ \label{alg:name} หลัง \caption แล้วเขียน Algorithm~\ref{alg:name}
ทุกตัวอย่างในหน้านี้จัดหน้าโดย Scissor LaTeX ขณะสร้างเว็บไซต์ อัปเดตล่าสุด 2026-11-07