> ## Documentation Index
> Fetch the complete documentation index at: https://ayakaleaf-pro.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# {Minted}

توضح هذه المقالة كيفية استخدام [الحزمة `minted`](https://ctan.org/pkg/minted?lang=en) لتنسيق الشيفرة المصدرية للغات البرمجة وتلوينها داخل مستند LaTeX، بدءًا بمثال:

```latex theme={null}
\documentclass{article}
\usepackage{minted}
\begin{document}
\begin{minted}{python}
import numpy as np
    
def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #to become the incidence matrix
    VT = np.zeros((n*m,1), int)  #dummy variable
    
    #compute the bitwise xor matrix
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1) 

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;
                
                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)
                
                VT = np.zeros((n*m,1), int)
    
    return M
\end{minted}
\end{document}
```

ينتج هذا المثال المخرجات التالية:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/f0/OLV2minted.png" alt="مثال يعرض مخرجات الحزمة minted" />
</p>

هناك أمران مهمان هنا. في الديباجة (preamble) يتم استيراد الحزمة بكتابة

```latex theme={null}
\usepackage{minted}
```

ثم يحدّد الوسمان `\begin{minted}{python}` و `\end{minted}` بيئةً تطبع النص حرفيًا بخطوط أحادية المسافة، كما تطبّق الألوان على التعليقات والكلمات المفتاحية والدوال. والمعامل `python` هو لغة البرمجة المكتوبة بها الشيفرة المصدرية. تدعم `minted` أكثر من 150 لغة برمجة وترميز بالإضافة إلى ملفات الإعداد، راجع [الدليل المرجعي](https://www.overleaf.com/learn/latex/Code_Highlighting_with_minted#Reference_guide) للاطلاع على قائمة اللغات المدعومة.

**ملاحظة**: لكي تعمل `minted` مع توزيعة LaTeX *المحلية* لديك، يجب تثبيت برنامج إضافي يسمى [Pygments](https://pygments.org/). ويمكن لـ [Overleaf](https://www.overleaf.com/) أن يوفّر عليك عناء تثبيته والحاجة إلى تشغيل أوامر خاصة لترجمة مستندك — ففي Overleaf، تعمل المستندات التي تستخدم `minted` "مباشرةً دون إعداد".

### الاستخدام الأساسي

كما هو موضح في المثال التالي، يمكن إعداد البيئة `minted` لتعديل العرض المرئي للشيفرة المنضّدة. وهنا تستخدم البيئة `minted` عدة معاملات مفصولة بفواصل بالصيغة `key=value`:

```latex theme={null}
\documentclass{article}
\usepackage{minted}
\usepackage{xcolor} % to access the named colour LightGray
\definecolor{LightGray}{gray}{0.9}
\begin{document}
\begin{minted}
[
frame=lines,
framesep=2mm,
baselinestretch=1.2,
bgcolor=LightGray,
fontsize=\footnotesize,
linenos
]
{python}
import numpy as np
    
def incmatrix(genl1,genl2):
    m = len(genl1)
    n = len(genl2)
    M = None #to become the incidence matrix
    VT = np.zeros((n*m,1), int)  #dummy variable
    
    #compute the bitwise xor matrix
    M1 = bitxormatrix(genl1)
    M2 = np.triu(bitxormatrix(genl2),1) 

    for i in range(m-1):
        for j in range(i+1, m):
            [r,c] = np.where(M2 == M1[i,j])
            for k in range(len(r)):
                VT[(i)*n + r[k]] = 1;
                VT[(i)*n + c[k]] = 1;
                VT[(j)*n + r[k]] = 1;
                VT[(j)*n + c[k]] = 1;
                
                if M is None:
                    M = np.copy(VT)
                else:
                    M = np.concatenate((M, VT), 1)
                
                VT = np.zeros((n*m,1), int)
    
    return M
\end{minted}
\end{document}
```

ينتج هذا المثال المخرجات التالية:

<p style={{ textAlign: "center" }}>
  <img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/f/ff/OLV2minted2.png" alt="مثال على تطبيق التنسيق على الشيفرة المنضّدة بواسطة الحزمة minted" />
</p>

المعاملات المستخدمة في هذا المثال هي:

* `frame=lines`: يرسم خطين، أحدهما في أعلى الشيفرة والآخر في أسفلها لتأطيرها. ومن القيم الممكنة الأخرى `leftline` و `topline` و `bottomline` و `single`.
* `framesep=2mm`: تُعيَّن المسافة الفاصلة للإطار إلى 2mm. ويمكن استخدام [وحدات طول](https://www.overleaf.com/learn/latex/Lengths_in_LaTeX) أخرى.
* `baselinestretch=1.2`: يُعيَّن تباعد أسطر الشيفرة إلى 1.2.
* `bgcolor=LightGray`: يُعيَّن لون الخلفية إلى `LightGray`. تحتاج إلى استيراد الحزمة `xcolor` لكي يعمل ذلك. راجع [استخدام الألوان في LaTeX](https://www.overleaf.com/learn/latex/Using_colours_in_LaTeX) لمعرفة المزيد حول التعامل مع الألوان.
* `fontsize=\footnotesize`: يُعيَّن حجم الخط إلى `footnotesize`. ويمكن تعيين أي [حجم خط](https://www.overleaf.com/learn/latex/Font_sizes_and_kinds%23Reference_guide) آخر.
* `linenos`: يفعّل أرقام الأسطر.

من الخيارات الأخرى التي قد تكون مفيدة:

* `mathescape`: يفعّل الوضع الرياضي في تعليقات الشيفرة.
* `rulecolor`: يغيّر لون الإطار.
* `showspaces`: يفعّل حرفًا خاصًا لإظهار المسافات.

### تضمين الشيفرة من ملف

عادةً ما تُخزَّن الشيفرة في ملف مصدري، لذا فإن وجود أمر يستورد الشيفرة تلقائيًا من ملف أمر مفيد جدًا، كما هو موضح في المثال التالي:

```latex theme={null}
\documentclass{article}
\usepackage{minted}
\title{Importing files using minted}
\begin{document}
The next code will be directly imported from a file:

\inputminted{octave}{BitXorMatrix.m}
\end{document}
```

ينتج هذا المثال المخرجات التالية:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/c/c8/OLV2mintedinput.png" alt="استخدام minted لاستيراد ملف شيفرة" height="392" width="600" />

يستورد الأمر `\inputminted{octave}{BitXorMatrix.m}` الشيفرة من الملف `BitXorMatrix.m`، ويخبر المعامل `octave` نظام LaTeX بلغة البرمجة الخاصة بالشيفرة. ويمكن أن يأخذ هذا الأمر معاملين إضافيين لاستيراد جزء من الملف فقط؛ فعلى سبيل المثال، لاستيراد الشيفرة من السطر 2 إلى السطر 12، يصبح الأمر:

```latex theme={null}
\inputminted[firstline=2, lastline=12]{octave}{BitXorMatrix.m}
```

### شيفرة من سطر واحد

إذا كنت بحاجة إلى إدخال سطر واحد فقط من الشيفرة، فإن الأمر `\mint`، الذي تُعرض صيغته في المثال التالي، سيفي بالغرض.

```latex wrap theme={null}
One-line code formatting also works with \texttt{minted}. For example, a small fragment of HTML like this:
\mint{html}|<h2>Something <b>here</b></h2>|
\noindent can be formatted correctly.
```

ينتج هذا المثال المخرجات التالية:

<img src="https://sharelatex-wiki-cdn-671420.c.cdn77.org/learn-scripts/images/d/d9/OLV2mintedHTML.png" alt="مثال على شيفرة من سطر واحد باستخدام minted" height="112" width="600" />

يحدد المعامل الموجود بين الأقواس المعقوفة لغة البرمجة (لغة الترميز `html` في هذه الحالة)، بينما يُحدَّد النص الفعلي المراد تنسيقه بالحرف '|'.

### مشكلات مع Overleaf ذاتي الاستضافة

إذا كنت تستخدم الترجمة المعزولة (sandbox compile) وكذلك خادم overleaf لنشر overleaf، فقد لا تعمل minted بشكل جيد. للاطلاع على معلومات مفصلة، راجع: [issues/131](https://github.com/yu-i-i/overleaf-cep/issues/131). ستحتاج إلى تفعيل ملف تعريف تعليمات arm وبعض استدعاءات النظام لكي تعمل minted.


This documentation is built and hosted on [Mintlify](https://mintlify.com), a developer documentation platform.