> For the complete documentation index, see [llms.txt](https://overleaf-pro.ayaka.space/llms.txt). Markdown versions of documentation pages are available by appending `.md` to page URLs; this page is available as [Markdown](https://overleaf-pro.ayaka.space/latex/ar/mzyd-mn-almwdhwaat/29-knitr.md).

# Knitr

كما هو مذكور في ويكيبيديا، [يُعدّ Knitr محركًا لتوليد التقارير الديناميكية باستخدام R](https://en.wikipedia.org/wiki/Knitr)، وهي لغة برمجة موجهة للإحصاء. تشرح هذه المقالة كيفية إضافة كود R إلى مستند LaTeX الخاص بك لتوليد مخرجات ديناميكية.

في توزيعة LaTeX القياسية، يجب أن يكون R مُعدًّا في نظام التشغيل لديك وأن تشغّل بعض الأوامر الخاصة لتجميعه. يمكن لـ Overleaf أن يوفّر عليك عناء ذلك، **knitr** يعمل مباشرةً دون أي إعدادات إضافية.

## مقدمة

يجب حفظ المستندات التي تحتوي على كود R بالامتداد `.Rtex` أو `.Rnw`، وإلا فلن يعمل الكود. لنرَ مثالًا:

```latex
\documentclass{article}
\begin{document}

يمكنك كتابة أوامر R داخل مستند \LaTeX{} الخاص بك، وسيتم معالجتها وإدراج مخرجاتها في المستند:

<<>>=
# إنشاء تسلسل من الأعداد
X = 2:10

# عرض المقاييس الإحصائية الأساسية
summary(X)

@
\end{document}
```

![KnitrDemo1.png](/files/62d216a92ad43d4b3b5ab11cc3d57c0a9fc17c13)

&#x20;[افتح هذا `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، ويتم طباعة هذا الكود ومخرجاته بصيغة تشبه القوائم. يمكن أن تأخذ هذه القطعة من الكود بعض المعاملات الإضافية لتخصيص المخرجات الديناميكية. انظر القسم التالي.

## كتل الكود

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

```latex
\documentclass{article}
\begin{document}

يمكنك كتابة أوامر R داخل مستند \LaTeX{} الخاص بك، وسيتم معالجتها وإدراج مخرجاتها في المستند:

<<echo=FALSE, cache=TRUE>>=
# إنشاء تسلسل من الأعداد
X = 2:10

# عرض المقاييس الإحصائية الأساسية
summary(X)

@
\end{document}
```

![KnitrDemo2.png](/files/64e3977a3908ff9161305bdad9282b9efc2285df)

&#x20;[افتح هذا `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 فلن تُشغَّل القطعة، بل فقط الكائنات التي تولّدها. هذا يوفر الوقت إذا لم تتغير البيانات في تلك القطعة. لاحظ أن الخيار cache=TRUE غير مدعوم حاليًا في Overleaf، لكنه يجب أن يعمل محليًا.

انظر [دليل المراجع](#reference-guide) لمزيد من الخيارات.

## الأوامر المضمّنة

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

```latex
\documentclass{article}
\begin{document}

يمكنك كتابة أوامر R داخل مستند \LaTeX{} الخاص بك، وسيتم معالجتها وإدراج مخرجاتها في المستند:

<<echo=FALSE, cache=TRUE>>=
# إنشاء تسلسل من الأعداد
X = 2:10

# عرض المقاييس الإحصائية الأساسية
summary(X)

@

إذًا، متوسط البيانات هو $\Sexpr{mean(X)}$
\end{document}
```

![KnitrDemo3.png](/files/3b7414ae7c6f28d7b5d29df91fbfeb75ca5dd51e)

&#x20;[افتح هذا `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
\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")

@

الشكل \ref{fig:plot1} هو مدرج تكراري بسيط.

\end{document}
```

![KnitrDemo4.png](/files/be14ba78eaf831b1edd4af1e3f72a458b4d6851a)

&#x20;[افتح هذا `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"**

معامل التمركز. هذا هو نفسه المستخدم في بيئة الشكل.

**fig.height=4, fig.width=4**

عرض الشكل وارتفاعه.

**fig.cap="First plot"**

التسمية التوضيحية للشكل.

## برامج R النصية الخارجية

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

لنفترض أن لدينا كود R التالي في ملف يسمى `mycode.R` والذي ندرجه في مستند LaTeX الخاص بنا:

```latex
## ---- myrcode1
# إنشاء تسلسل من الأعداد
 X = 2:10

## ---- myrcode2
# عرض المقاييس الإحصائية الأساسية
summary(X)
```

لاحظ الأسطر

```latex
## ---- myrcode1
```

و

```latex
## ---- myrcode2
```

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

```latex
لن تتم طباعة القطعة أدناه

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

يجب أن يظهر الكود هنا

<<myrcode2>>=

@
```

![KnitrDemo5.png](/files/7bc0a0886bbb1e14916c857dddc8d60e859e5137)

القطعة الأولى لا تُطبع، وإنما تُستخدم فقط لاستيراد البرنامج النصي بالأمر `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=) .

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

**بعض خيارات القطعة**

* `النتائج`، يغيّر سلوك النتائج التي يولدها كود 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"*.

## قراءة إضافية

لمزيد من المعلومات، انظر

* [تظليل الكود باستخدام minted](/latex/ar/altnsyq/12-code-highlighting-with-minted.md)
* [استخدام الألوان في LaTeX](/latex/ar/altnsyq/13-using-colors-in-latex.md)
* [الرسوم البيانية في LaTeX](/latex/ar/khas-balmjal/08-pgfplots-package.md)
* [إدراج الصور](/latex/ar/mzyd-mn-almwdhwaat/27-inserting-images.md)
* [الجداول](/latex/ar/alashkal-waljdawl/01-tables.md)
* [تموضع الصور والجداول](/latex/ar/alashkal-waljdawl/02-positioning-images-and-tables.md)
* [حزمة TikZ](/latex/ar/alashkal-waljdawl/05-tikz-package.md)
* [التعابير الرياضية](/latex/ar/alryadhyat/01-mathematical-expressions.md)
* [موقع **knitr** صفحة ويب](http://yihui.name/knitr/)
* [موقع **knitr** دليل الحزمة](https://bitbucket.org/stat/knitr/downloads/knitr-manual.pdf)


---

# Agent Instructions
This documentation is published with GitBook. GitBook is the documentation platform designed so that both humans and AI agents can read, navigate, and reason over technical content effectively. Learn more at gitbook.com.

## Querying This Documentation
If you need additional information that is not directly available in this page, you can query the documentation dynamically by asking a question.

Perform an HTTP GET request on the current page URL with the `ask` query parameter, and the optional `goal` query parameter:

```
GET https://overleaf-pro.ayaka.space/latex/ar/mzyd-mn-almwdhwaat/29-knitr.md?ask=<question>&goal=<endgoal>
```

`ask` is the immediate question: it should be specific, self-contained, and written in natural language.
`goal` is optional and describes the broader end goal you are ultimately trying to accomplish on behalf of the user. GitBook uses it to tailor the answer towards what is most useful for that goal.

The response will contain a direct answer to the question and relevant excerpts and sources from the documentation.

Use this mechanism when the answer is not explicitly present in the current page, you need clarification or additional context, or you want to retrieve related documentation sections.
