الخوارزميات وقوائم المصادر

رسم وقوائم الخوارزمية2e للكود الحقيقي.

الخوارزميات وقوائم المصادر

تقدم الأبحاث التعليمات البرمجية في شكلين مختلفين، ولدى LaTeX أداة منفصلة لكل منهما. الكود الكاذب عبارة عن رسم تخطيطي مثالي لخوارزمية، يتم كتابته باستخدام الكلمات الرئيسية والرياضيات، وتتولى الحزمة “algorithm2e” التعامل معه. قوائم المصدر هي عبارة عن تعليمات برمجية حقيقية مستنسخة حرفيًا بخط أحادي المسافة، وتتعامل حزمة “القوائم” مع هذه العناصر. إن اختيار الأداة الخاطئة هو المصدر المعتاد للاحتكاك، لذا من المفيد رؤية كليهما.

الكود الزائف مع الخوارزمية 2e

\usepackage[ruled,vlined]{algorithm2e}
\begin{algorithm}
\caption{Train}
\While{not converged}{
Update $\theta$\;
}
\end{algorithm}

تحدد خيارات الحزمة النمط المرئي: يرسم “مسطر” قواعد أفقية أعلى وأسفل الخوارزمية ويضع التسمية التوضيحية في الأعلى، وهو التقليد الذي تتوقعه معظم الأماكن، بينما يرسم “مبطن” خطًا رأسيًا صغيرًا يشير إلى مدى كل كتلة، بحيث يظل التداخل قابلاً للقراءة بدون مسافة بادئة كبيرة. بيئة “الخوارزمية” عبارة عن عوامة، مثل الشكل، لذا فهي تحمل “\caption” الذي يمنحها رقمًا لتستشهد به “\ref”.

في الداخل، يقوم \While{condition}{body} بضبط الحلقة بكلمة رئيسية غامقة، والشرط، والنص ككتلة ذات مسافة بادئة. \For، و\If، و\Return تتبع نفس النمط. تنتهي البيانات بـ \;، الذي يطبع نهاية السطر ويبدأ سطرًا جديدًا. نسيان ذلك هو الخطأ الكلاسيكي للمبتدئين: الخطوط تعمل معًا. نظرًا لأن هذا هو LaTeX عادي، فإن الرياضيات مثل $\theta$ تعمل بشكل مضمن، وهذا هو الغرض من الكود الكاذب: وصف قاعدة التحديث بالتدوين وليس في أي لغة معينة.

كود حقيقي مع القوائم

\usepackage{listings}
\begin{lstlisting}[language=Python]
def f(x):
return x**2
\end{lstlisting}

تقوم بيئة “lstlisting” بإعادة إنتاج محتوياتها تمامًا، مع الحفاظ على المسافة البيضاء ومعالجة الأحرف الخاصة حرفيًا، حتى تتمكن من لصق التعليمات البرمجية دون الهروب من أي شيء. يعمل خيار اللغة=بايثون على تشغيل تمييز الكلمات الرئيسية لتلك اللغة، وتعرف القوائم العشرات من اللغات الأخرى. بشكل افتراضي يكون الإخراج عاديًا. يضيف معظم الأشخاص \lstset{basicstyle=\ttfamily\small, number=left} لمرة واحدة في المقدمة للحصول على خط أحادي المسافة بحجم معقول مع أرقام الأسطر. لتضمين ملف مباشرةً بدلاً من لصقه، يقرأه \lstinputlisting[language=Python]{train.py} من القرص، مما يحافظ على مزامنة الورقة مع المصدر الفعلي. إذا كنت تريد تمييزًا ملونًا وعالي الدقة، فإن الحزمة “المنقوعة” هي البديل الأقوى، على حساب الحاجة إلى أداة خارجية وهروب من الصدفة.

الاختيار بينهما

استخدم الكود الكاذب في النص الورقي لإيصال الفكرة، واحتفظ بقوائم حرفية للعناصر التي يكون فيها الكود الدقيق مهمًا، مثل الملاحق أو أوصاف الأدوات. من الأخطاء الشائعة وضع lstlisting داخل إطار Beamer بدون خيار [fragile]، والذي يفشل مع وجود خطأ غير شفاف؛ يظهر نفس التحذير في مجموعة Beamer الأولى.

العودة إلى {المسار}