> 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/mqalat-mtamqh/11-boxes-and-glue-a-brief-but-visual-introduction-using-luatex.md).

# الصناديق والغراء: مقدمة موجزة لكنها بصرية باستخدام LuaTeX

## مقدمة للمقالات القادمة

هذه التدوينة مقدمة موجزة لبعض المفاهيم/النماذج الأساسية المرتبطة بالتصفيف الطباعي باستخدام $$\mathrm \TeX$$: الصناديق والغراء — «تمهيدًا للمشهد» للمقالات القادمة التي ستتناول التفاصيل بمزيد من العمق. ستستكشف تدوينة قادمة السلوك منخفض المستوى لـ $$\mathrm \TeX$$ الصناديق باستخدام $$\mathrm{Lua}\mathrm\TeX$$ لإنتاج مخططات (رسوم بيانية للعُقد) مثل المثال التالي:

![مخطط عقد لصندوق](/files/d9ba4a10a56471a98f3401660effe6c0874fcf7a)

يُنتَج هذا المخطط العقدي من `\hbox{...}` أُنشئ باستخدام ما يلي $$\mathrm \TeX$$ الشفرة:

```latex

\hbox to100pt{A\hskip4pt plus3pt minus 2pt B%
\hskip 0pt plus 2fil C\hskip 0pt plus 2fill D\hskip 0pt plus 3fill}
```

والذي يبدو هكذا (مرسومًا داخل مستطيل إحاطة):

![مثال لـ \hbox](/files/93b3db8d68280735599b877cf35ffd7eeb204383)

تُظهر هذه المخططات العقدية البنية الداخلية العميقة لـ $$\mathrm \TeX$$ الصناديق — بما يعكس كيفية تخزينها داخل $$\mathrm \TeX$$ وتقدّم وصفًا رسوميًا لا يقدَّر بثمن يساعد على فهم سلوك أوامر إنشاء الصناديق مثل `\hbox{...}` أو `\vbox{...}`.

## العودة إلى الأساسيات...

حتى لو كنت مستخدمًا جديدًا أو عاديًا، $$\mathrm \LaTeX$$ فليس من المستغرق طويلًا قبل أن تصادف مفهوم $$\mathrm \TeX$$ «الصناديق» أو أن $$\mathrm \TeX$$ يستخدم نموذج «الصناديق والغراء» في أنشطة التصفيف الطباعي الأساسية. إن خوارزميات التصفيف في $$\mathrm \TeX$$ تقضي جزءًا كبيرًا من وقتها في إنشاء ثم رصّ قوائم أفقية وعمودية من الصناديق. على سبيل المثال، عندما $$\mathrm \TeX$$ يقوم بتصفيف فقرة نصية ويقسمها إلى سلسلة من الأسطر، فإنه يعتبر نص الفقرة تدفقًا أو تسلسلًا من الصناديق ويستخدم العرض والارتفاع والعمق لتلك الصناديق الحرفية (في الحقيقة، الغليفات) لإيجاد أفضل فواصل الأسطر ثم يضيف فراغًا عموديًا بين أسطر النص المصفف (ويُسمّى ذلك الغراء `\baselineskip`). وكل سطر مصفف من الفقرة هو بحد ذاته صندوق (يحتوي على صناديق أخرى — مثلًا، أحرفًا) وتُرصّ أسطر الفقرة المصففة (الصناديق) عموديًا لإنتاج الفقرة. وفي النهاية يُنتَج أكبر صندوق على الإطلاق: الصفحة المصفوفة. ومن الواضح أن هذه صورة مبسطة للغاية لأنك تحتاج أيضًا إلى القدرة على تحريك تلك الصناديق وموضعتها و $$\mathrm \TeX$$ يفعل ذلك باستخدام ما يُسمّى *الغراء*: شكل من «التباعد المرن». وقد علّق كنوت (الصفحة 70 من كتاب The $$\mathrm \TeX \mathrm{book}$$) بأن «الغراء» كان ينبغي على الأرجح أن يُسمّى «زنبركًا»، لكن مصطلح الغراء اعتُمِد مبكرًا، وباستخدام تلاعب كنوت اللفظي، فقد التصق.

## تصوير فقرة مصففة باستخدام $$\mathrm{Lua}\mathrm\TeX$$

باستخدام $$\mathrm{Lua}\mathrm\TeX$$، يمكن معالجة فقرة مصففة لعرض المكونات المستخدمة في تصفيفها: صناديق الأحرف والغراء المرن المستخدم لوضع مسافة بين الكلمات. لقد أنشأنا مشروعًا بسيطًا لـ [$$\mathrm{Lua}\mathrm\TeX$$ (بلاين $$\mathrm \TeX$$)](https://www.overleaf.com/latex/examples/using-a-luatex-callback-to-parse-typeset-paragraphs/mzbpwxtjshsj) لإظهار ذلك:

[![Screenshot of Overleaf](/files/8a3c6e19f1796adaba50eec1699a73e779928fec)](https://www.overleaf.com/latex/examples/using-a-luatex-callback-to-parse-typeset-paragraphs/mzbpwxtjshsj)

كُتبت شفرة المشروع لتوضيح هذه التدوينة وليست تنفيذًا كاملًا «للمحلّل» الخاص بالفقرة — فهي تتجاهل عددًا من $$\mathrm{Lua}\mathrm \TeX$$ أنواع العُقد وهي مصممة فقط لتوضيح الأفكار التي نوقشت في هذه التدوينة.

![الصناديق والغراء](/files/41cfe0ac412c4cb452577f419f94d4f89a51e864)

في قسم الصورة المكبرة أدناه، يمكنك رؤية أسطر الفقرة الفردية مظللة على هيئة شرائط رمادية — لاحظ وجود فراغ أبيض بين الأسطر: غراء عمودي يقوم $$\mathrm \TeX$$ بإدراجه أثناء رصّها لتشكيل الفقرة. إذا أردت معرفة المزيد عن الغراء العمودي المُدرج بين الأسطر في فقرة مصففة، فاستخدم Google للعثور على مقالات تناقش `\baselineskip` و `\lineskiplimit`.

![فقرة محللة تُظهر الصناديق والغراء](/files/d811523830d38db9f7ef0741eee61e20bfa7dc3e)

عندما $$\mathrm \TeX$$ عندما يقرأ فقرة ويصففها فإنه يحوّل محارف المسافات بين الكلمات إلى كتل من الغراء تكون قيمتها الدقيقة خاصية من خصائص الخط المستخدم. أثناء التصفيف، يُمدَّد هذا الغراء بين الكلمات أو يُنكمش بمقدار يُعد ضروريًا لتحقيق فاصل أسطر جميل. في الصورة أعلاه ينبغي أن تلاحظ ما يلي:

* الشرائط الرمادية هي حدود الأسطر الفردية للفقرة المصففة؛
* يُعرض كل حرف داخل صندوق يحدد أبعاده (كما $$\mathrm \TeX$$ يراها);
* تُظهر الصناديق الصفراء الغراء الذي $$\mathrm \TeX$$ أدرجه بين الكلمات من أجل تحقيق فاصل أسطر جميل. لاحظ ما يلي:
* يتفاوت عرض الغراء بين الكلمات من سطر إلى آخر بينما $$\mathrm \TeX$$ يقوم بمدّه أو تقليصه لتحقيق كل فاصل أسطر;
* في السطر الثالث، يكون الغراء الذي يأتي بعد حرف النقطة أوسع من أغرية أخرى في السطر نفسه.
* يُظهر الصندوق الأحمر موضع `\hbox{...}` تم استخدامه صراحةً. تعريف `\TeX` يضع الأمر الحرف E داخل `\hbox{...}` بحيث يمكن خفضه لإنشاء $$\mathrm \TeX$$ الشعار.

في نهاية فقرة المثال لدينا شريط طويل من الغراء يُسمّى `\parfillskip`: وهذا يُدرجه $$\mathrm \TeX$$ المحرّكات لملء الفراغ في السطر الأخير. ![parfillskip glue](/files/2ea9a43752736262367e1d9f08c7d51c1923c39d)

### إلى التدوينة التالية

نأمل أن تكون هذه التدوينة قد قدّمت مقدمة مفيدة لمبدأ الصناديق والغراء المستخدم داخل $$\mathrm \TeX$$. في تدوينة قادمة سنستخدم $$\mathrm{Lua}\mathrm\TeX$$ للتعمق كثيرًا أكثر في محتوى $$\mathrm \TeX$$ الصناديق — باستخدام مخططات عقد مثل المثال المعروض في بداية هذه المقالة.


---

# 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/mqalat-mtamqh/11-boxes-and-glue-a-brief-but-visual-introduction-using-luatex.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.
