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

listings في Scissor LaTeX

تعمل حزمة listings جزئيًا في Scissor LaTeX: تحفظ lstlisting الشيفرة كما كُتبت تمامًا وتلوّنها عندما تعطي language= على البيئة، ويعمل \lstinline؛ أما \lstset وأرقام الأسطر والإطارات والتسميات والعلامات فتُتجاهل، ويُتخطّى \lstinputlisting.

ماذا تفعل الحزمة

تنضّد listings الشيفرة المصدرية. تحفظ البيئة lstlisting فواصل الأسطر والمسافات، ومع language=Python (أو C أو Java أو SQL ...) تكتب الكلمات المفتاحية والتعليقات والسلاسل النصية بأنماط مختلفة. وتضيف الخيارات أرقام الأسطر والإطارات والتسميات والألوان، إما لكل قائمة شيفرة على حدة أو للمستند كله باستخدام \lstset. و\lstinline هو الشكل المضمّن في السطر، ويقرأ \lstinputlisting الشيفرة من ملف.

ما الذي يعمل هنا

الميزةفي Scissor LaTeXملاحظات
\begin{lstlisting} ... \end{lstlisting}يعملبخط ثابت العرض، كما كُتبت تمامًا.
[language=Python] على البيئةيعملتلوين الصياغة من مخطط ألوان ثابت.
[language={[Sharp]C}] واللهجات الأخرىيعملتُقرأ اللهجة بين القوسين مع الاسم.
\lstinline|code|, \lstinline{code}يعملبخط ثابت العرض، دون ألوان.
numbers=left, frame=single, basicstyle, keywordstyle, backgroundcolorيُحذفتُتجاهل دون أي رسالة.
caption=, label=يُحذفلا تُطبع أي تسمية، ويُظهر \ref إلى العلامة "??".
\lstset{...}, \lstdefinestyle, style=يُحذفتُتجاهل، بما في ذلك language= المحدّد هناك.
\lstinputlisting{file}غير مدعوميُتخطّى مع رسالة.
\lstlistoflistings, \lstnewenvironmentغير مدعوميُتخطّيان مع رسالة.

أسماء اللغات لا تميّز بين الأحرف الكبيرة والصغيرة. والألوان متاحة للغات الشائعة مثل Python وC وC++ وC# وJava وJavaScript وRust وGo وR وMATLAB وSQL وBash وHTML وTeX. أما الاسم غير المعروف، مثل Fortran، فيعطي شيفرة عادية بخط ثابت العرض دون أي رسالة.

أمثلة

حدّد اللغة على كل قائمة شيفرة:

lstlisting مع language=Python

\begin{lstlisting}[language=Python]
def mean(values):
    # average of a list of numbers
    return sum(values) / len(values)

print(mean([40, 44, 48]))
\end{lstlisting}
نضّده Scissor LaTeX: lstlisting مع language=Python

لا تُستخدم اللغة المحدّدة باستخدام \lstset، لذا لا ألوان في هذه القائمة. وتُتجاهل كذلك خيارات التخطيط مثل numbers وframe:

\lstset يُتجاهل

\documentclass{article}
\usepackage{listings}
\lstset{language=SQL, numbers=left, frame=single}
\begin{document}
\begin{lstlisting}
SELECT name FROM staff WHERE id = 44;
\end{lstlisting}
\begin{lstlisting}[language=SQL]
SELECT name FROM staff WHERE id = 44;
\end{lstlisting}
\end{document}

تقبل الشيفرة المضمّنة باستخدام \lstinline أي محدِّد، مثل \verb:

\lstinline في جملة

The loop \lstinline|for i in range(44):| runs 44 times, and
\lstinline{total += i} adds up the numbers.
نضّده Scissor LaTeX: \lstinline في جملة

قائمة شيفرة ذات تسمية داخل figure

\begin{figure}[h]
\begin{lstlisting}[language=Python]
print(sum(range(44)))
\end{lstlisting}
\caption{Adding the numbers below 44}
\label{lst:sum}
\end{figure}
The code in Listing~\ref{lst:sum} prints 946.
نضّده Scissor LaTeX: قائمة شيفرة ذات تسمية داخل figure

التوافق

  • من تثبيت TeX إلى هنا: تُعرض شيفرة كل lstlisting. انقل language= من \lstset إلى كل قائمة شيفرة للحصول على الألوان، والصق الشيفرة من ملفات \lstinputlisting في المستند.
  • من هنا إلى تثبيت TeX: تُترجَم المستندات هناك دون تغيير، وتُطبَّق خياراتك عندئذ.

الدليل الكامل موجود على CTAN: ctan.org/pkg/listings. راجع أيضًا قوائم الشيفرة في LaTeX وminted.

أسئلة وأجوبة

لماذا قوائم الشيفرة لديّ غير ملوّنة؟

الأرجح أن اللغة محدّدة باستخدام \lstset، الذي يُتجاهل هنا. اكتب [language=Python] (أو لغتك) بعد \begin{lstlisting}.

هل يمكنني عرض أرقام الأسطر؟

ليس بعد. يُقبل numbers=left ويُتجاهل.

كل مثال في هذه الصفحة ينضّده Scissor LaTeX عند بناء الموقع. آخر تحديث: 2026-11-07.