رفتن به محتوا

الگوریتم‌ها و شبه‌کد

شبه‌کد را در یک محیط 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.
حروف‌چینی با 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.