انتقل إلى المحتوى

الخوارزميات والشيفرة الزائفة

ضع الشيفرة الزائفة داخل بيئة 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.