ข้ามไปยังเนื้อหา

อัลกอริทึมและรหัสเทียม

ครอบรหัสเทียมด้วยสภาพแวดล้อม 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

LaTeXส่วนนำ: \usepackage{algorithm}เปิดในตัวแก้ไข (เปิดในแท็บใหม่)
\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.
จัดหน้าโดย Scissor LaTeX: อัลกอริทึมที่มีขั้นตอนแบบ verbatim

สำหรับรหัสเทียมที่มีสูตร 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}
จัดหน้าโดย Scissor LaTeX: ขั้นตอนเป็นรายการที่มีหมายเลข พร้อมคณิตศาสตร์

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}
จัดหน้าโดย Scissor LaTeX: algorithmic ในเอกสารแบบ arXiv

แท็บปัญหา: 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: ขั้นตอนต่อกันเป็นบรรทัดเดียว

LaTeXส่วนนำ: \usepackage{algorithm,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