> ## 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.

# شيفرة R (knitr)

يوفر Overleaf تكاملًا مع **knitr**، مما يتيح لك إضافة شيفرة R إلى مستند LaTeX لتوليد مخرجات ديناميكية.

يجب حفظ المستندات التي تحتوي على شيفرة R بالامتداد `.Rtex` أو `.Rnw`، وإلا فلن تعمل الشيفرة. لنلقِ نظرة على مثال:

```latex wrap theme={null}
\documentclass{article}
\begin{document}

You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:

<<>>=
# Create a sequence of numbers
X = 2:10

# Display basic statistical measures
summary(X)

@
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/knitrdemo1.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=4cd20c6acbeeab2b1ae2b115efece70d" alt="KnitrDemo1.png" width="2150" height="681" data-path="images/texlive/knitrdemo1.png" />

[افتح مثال `knitr` هذا على Overleaf](https://www.overleaf.com/project/new/template/20421?id=69881107\&templateName=Knitr+demo+1\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

كما ترى، فإن النص الواقع بين المحرفين `<<>>=` و`@` هو شيفرة R. وتُطبع هذه الشيفرة ومخرجاتها بتنسيق يشبه القوائم البرمجية (listing). ويمكن أن تقبل هذه القطعة من الشيفرة بعض المعاملات الإضافية لتخصيص المخرجات الديناميكية، كما هو موضح في القسم التالي.

### قطع الشيفرة (Chunks)

تُسمى كتلة الشيفرة مثل تلك المعروضة في القسم السابق عادةً *قطعة* (chunk). ويمكنك ضبط بعض الخيارات الإضافية في قطع knitr. انظر المثال أدناه:

```latex wrap theme={null}
\documentclass{article}
\begin{document}

You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:

<<echo=FALSE, cache=TRUE>>=
# Create a sequence of numbers
X = 2:10

# Display basic statistical measures
summary(X)

@
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/screenshot-2025-12-16-143420.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=9c79c98b1894d1cd22f783c29356de1f" alt="KnitrDemo2.png" width="1910" height="559" data-path="images/texlive/screenshot-2025-12-16-143420.png" />

[افتح مثال `knitr` هذا على Overleaf](https://www.overleaf.com/project/new/template/20423?id=69885763\&templateName=Knitr+demo+2\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

هناك خياران إضافيان مُمرَّران داخل `<<` و`>>`.

* `echo=FALSE` يُخفي هذا الخيار الشيفرة ويطبع فقط المخرجات التي يولدها R.
* `cache=TRUE` إذا ضُبط cache على true، فلن تُشغَّل القطعة، بل تُستخدم فقط الكائنات التي ولّدتها. وهذا يوفر الوقت إذا لم تتغير البيانات في تلك القطعة.

  <Info><em>لاحظ أن الخيار cache=TRUE غير مدعوم حاليًا في Overleaf، لكنه يُفترض أن يعمل محليًا.</em></Info>

راجع [الدليل المرجعي](https://learn.overleaf.com/learn/Knitr#Reference_guide) لمزيد من الخيارات.

### الأوامر المضمّنة (Inline)

يمكن الوصول إلى الكائنات المولَّدة في قطعة ما وطباعتها ضمن السطر.

```latex wrap theme={null}
\documentclass{article}
\begin{document}

You can type R commands in your \LaTeX{} document which will be processed and their output included in the document:

<<echo=FALSE, cache=TRUE>>=
# Create a sequence of numbers
X = 2:10

# Display basic statistical measures
summary(X)

@

So, the mean of the data is $\Sexpr{mean(X)}$
\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/screenshot-2025-12-16-143647.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=8b59926a477373b2787f884267d7c263" alt="KnitrDemo3.png" width="1910" height="630" data-path="images/texlive/screenshot-2025-12-16-143647.png" />

[افتح مثال `knitr` هذا على Overleaf](https://www.overleaf.com/project/new/template/20425?id=69886866\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

يطبع الأمر `\Sexpr{mean(X)}` المخرجات التي تعيدها شيفرة R `mean(X)`. ويمكن تمرير أي أمر من أوامر R داخل الأقواس المعقوصة.

### الرسوم البيانية

يمكن أيضًا إضافة رسوم بيانية إلى مستند knitr، كما في هذا المثال:

```latex wrap theme={null}
\documentclass{article}
\begin{document}

<<plot1, fig.pos="t", fig.height=4, fig.width=4, fig.cap="First plot">>=

xdata = read.csv(file="data.txt", head=TRUE,sep=" ")

hist(xdata$data, main="Overleaf histogram", xlab="Data")

@

The figure \ref{fig:plot1} is simple histogram.

\end{document}
```

<img src="https://mintcdn.com/ayakaleaf-pro/GmaXa-Cu4QQRFT4C/images/texlive/screenshot-2025-12-16-143811.png?fit=max&auto=format&n=GmaXa-Cu4QQRFT4C&q=85&s=af1985b1e5b5ce56b777c5d9e3066420" alt="KnitrDemo4.png" width="1915" height="756" data-path="images/texlive/screenshot-2025-12-16-143811.png" />

[افتح مثال `knitr` هذا على Overleaf](https://www.overleaf.com/project/new/template/20427?id=69890965\&templateName=Knitr+demo+3\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=)

يستخدم هذا المدرج التكراري بيانات مخزنة في "data.txt"، المحفوظ في مجلد العمل الحالي. وتُمرَّر بعض الخيارات المتعلقة بالشكل إلى القطعة.

`plot1` هذه هي التسمية المستخدمة للإشارة إلى الرسم البياني. والبادئة "fig:" إلزامية. ويمكنك أن ترى في المثال أن الإشارة إلى الشكل تتم باستخدام `\ref{fig:plot1}`. `fig.pos="t"` معامل تحديد الموضع. وهو نفسه المستخدم في [بيئة figure](https://learn.overleaf.com/learn/Positioning_images_and_tables#The_figure_environment). `fig.height=4, fig.width=4` عرض الشكل وارتفاعه. `fig.cap="First plot"` تعليق الشكل.

### سكربتات R الخارجية

يمكنك استيراد أجزاء من سكربت R خارجي إلى مستند knitr. وهذا مفيد جدًا، إذ من الشائع إلى حد ما كتابة السكربت وتصحيحه في برنامج خارجي قبل تضمينه في مستندك.

لنفترض أن لدينا شيفرة R التالية في ملف يُسمى `mycode.R` نضمّنه في مستند LaTeX الخاص بنا:

```r theme={null}
## ---- myrcode1
# Create a sequence of numbers
 X = 2:10

## ---- myrcode2
# Display basic statistical measures
summary(X)
```

لاحظ السطرين:

```r theme={null}
## ---- myrcode1
```

و

```r theme={null}
## ---- myrcode2
```

يحدد هذان السطران بداية قطعة من الشيفرة، وهما إلزاميان إذا أردت استخدام هذا السكربت في مستندنا، كما هو موضح في مقطع الشيفرة التالي:

```r theme={null}
The chunk below will not be printed

<<echo=FALSE, cache=FALSE>>=
read_chunk("mycode.R")
@

The code must show up here

<<myrcode2>>=

@
```

<img src="https://mintcdn.com/ayakaleaf-pro/v5p5w9EX1_dka_GD/images/texlive/knitrdemo5.png?fit=max&auto=format&n=v5p5w9EX1_dka_GD&q=85&s=0f1fd4088c9359058547a7c58f121bd5" alt="KnitrDemo5.png" width="1544" height="436" data-path="images/texlive/knitrdemo5.png" />

لا تُطبع القطعة الأولى، وتُستخدم فقط لاستيراد السكربت عبر الأمر `read_chunk("mycode.R")`. ولهذا ضُبط الخيار `echo=FALSE`. كما يجب ألا تُخزَّن السكربتات مؤقتًا. وبعد استيراد السكربت، يمكنك طباعة قطعة باستخدام التسمية التي حددتها بعد `## ----`. وفي هذه الحالة هي `myrcode2`.

وضعنا جميع مقاطع الشيفرة الواردة في هذا المقال في مشروع [يمكنك فتحه على Overleaf](https://www.overleaf.com/project/new/template/20429?id=69894649\&templateName=Knitr+full+demo\&latexEngine=pdflatex\&texImage=texlive-full%3A2020.1\&mainFile=).

### الدليل المرجعي

بعض خيارات القطع:

* `results`. يغيّر سلوك النتائج التي تولدها شيفرة R. والقيم الممكنة هي:
  * `markup` استخدام LaTeX لتنسيق المخرجات.
  * `asis` طباعة النتائج الخام من R.
  * `hold` الاحتفاظ بنتائج المخرجات ودفعها إلى نهاية القطعة.
  * `hide` إخفاء النتائج.
* `echo`. ما إذا كان سيُضمَّن الشيفرة المصدرية لـ R. ومن المعاملات الأخرى:
  * `echo=2:3` يطبع السطرين الثاني والثالث فقط؛
  * `echo=-2:-3` يستثني السطرين الثاني والثالث فقط.
* `cache`. ما إذا كانت قطعة الشيفرة ستُخزَّن مؤقتًا. والقيم الممكنة هي: `TRUE` و`FALSE`
* `highlight`. ما إذا كان سيُبرز تلوين الشيفرة المصدرية. والقيم الممكنة هي: `TRUE` و`FALSE`
* `background`. لون خلفية القطعة. ويمكن استخدام صيغتي rgb وHTML. والقيمة الافتراضية هي *"#F7F7F7"*.


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