> 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/24-how-tex-calculates-glue-settings-in-an-hbox.md).

# كيف يحسب TeX إعدادات الغراء في \hbox

هذا هو المقال الثالث والأخير في سلسلة تلقي نظرة على $$\mathrm \TeX$$ الصناديق والغراء. المنشور الأول [الصناديق والغراء: مقدمة موجزة، لكنها مرئية، باستخدام LuaTeX](/latex/ar/mqalat-mtamqh/11-boxes-and-glue-a-brief-but-visual-introduction-using-luatex.md) قدّم مفاهيم الصناديق والغراء وتلاه [Pandora’s \hbox: استخدام LuaTeX لرفع غطاء صناديق TeX](/latex/ar/mqalat-mtamqh/36-pandora-s-hbox-using-luatex-to-lift-the-lid-of-tex-boxes.md) الذي قدّم [$$\text{Lua}\mathrm\TeX$$مشروع Overleaf قائم على](https://www.overleaf.com/latex/examples/exploring-the-structure-of-tex-boxes-with-luatex/pwdrypmtdbgs) لاستكشاف البنى الأعمق لـ $$\mathrm \TeX$$ الصناديق من خلال استخدام رسوم العقد. في هذا الجزء الختامي نغوص “بعمق” في آليات كيفية $$\mathrm \TeX$$ يحسب قيم الغراء في `\hbox`: وهي عملية يُشار إليها باسم *ضبط الغراء*. نعتمد على نطاق واسع على رسوم العقد (التي قُدّمت في [Pandora’s \hbox: استخدام LuaTeX لرفع غطاء صناديق TeX](/latex/ar/mqalat-mtamqh/36-pandora-s-hbox-using-luatex-to-lift-the-lid-of-tex-boxes.md) في هذه السلسلة) ونبيّن كيفية استخدام وتفسير بعض البيانات التي توفّرها: `glue_set`, `glue_sign` و `glue_order`.

نقدّم مثالًا محلولًا بالكامل لحسابات الغراء لـ `\hbox` ونغطي قدرًا كبيرًا من التفاصيل؛ ومع ذلك، قد تكون هناك ظروف واعتبارات إضافية لا يتسع المجال لمناقشتها هنا، ويُحال القارئ المهتم إلى الصفحة 77 من $$\text{The } \mathrm \TeX \text{book}$$.

## التحدي

لنفترض أن لدينا `\hbox` مثل هذا:

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

هذا هو شكل هذا الصندوق—وللتوضيح، معروضًا مكبّرًا وبحدٍّ حوله:

![صندوق](/files/316f991d8f01b977bb2e107cd828f4421e0ce627)

السؤال هو: ما القيمة النهائية، بوحدة $$\mathrm \TeX$$ النقاط، للمسافة (الغراء) بين العناصر التالية:

* A وB
* B وC
* C وD
* D ونهاية الصندوق

أي أننا نريد حساب قيم $$\mathrm{g}*{1}, \mathrm{g}*{2}, \mathrm{g}*{3} \text{ and } \mathrm{g}*{4}:$$

![المسافة المرنة](/files/f7813779975f191b44e5762faa2935e32198d6c3)

إليك مخطط عقد يمثّل الصندوق أعلاه. وتكمن الأهمية الخاصة في ثلاث قيم موجودة في قسم “البيانات الوصفية”:

* `glue_set`
* `glue_sign`
* `glue_order`

![مخطط العقد](/files/2231463f3dcc931a88b23a3791220d6aaef6c574)

من المهم ملاحظة أن مجموعة معينة من القيم لـ `glue_set`, `glue_sign` و `glue_order` تؤثر فقط في الغراءات داخل الصندوق ذي المستوى الأعلى: فهي لا تؤثر في الغراءات داخل *المتداخلة* الصناديق: إذ يمتلك كل صندوق متداخل (كائن hlist أو vlist) قيمه الخاصة لهذه المعلمات الثلاث. إليك مثالًا على `\hbox` متداخل داخل صندوق `\hbox`. في هذا المثال، يمكنك أن ترى بوضوح القيم المختلفة لـ `glue_set`—وبالطبع، يمكن للصندوق المتداخل أيضًا أن تكون له قيم مختلفة لـ `glue_sign` و `glue_order`.

```latex
\hbox to 75pt{\hfill ABC\hbox to15pt{\hfill D}}
```

![مخطط العقد](/files/87dbad335d98b1862bf396c3fdad51ab9ce9e6c4)

## أنواع الغراء، اللانهايات والرتب: ملخص

$$\mathrm \TeX$$ يوفّر عددًا من الأوامر البدائية المتعلقة بالغراء، بما في ذلك:

* الغراء الأفقي: `\hskip`, `\hfil`, `\hfill`, `\hfilneg`, `\hss`;
* الغراء العمودي:`\vskip`, `\vfil`, `\vfill`, `\vfilneg`, `\vss`;

إلى جانب `\mskip` لإدراج الغراء في التعابير الرياضية.

يُعرَّف عنصر الغراء بمجموعة من ثلاث قيم:

* **العرض الطبيعي**: مقدار المساحة التي يشغلها إذا لم تمدده أو تنقصه؛
* **مكوّن التمدد**: مقدار ما يمكن أن يتمدد به الغراء؛
* **مكوّن الانكماش**: مقدار ما يمكن أن ينكمش به الغراء.

ما سننظر فيه هو استخدام الغراء داخل `\hbox{...}` والحسابات $$\mathrm \TeX$$ التي يستخدمها لتحديد مقدار المساحة التي سيشغلها الغراء في النهاية. والأمر الذي سنستخدمه لإنشاء بعض *أفقي* الغراء هو `\hskip`، والذي يأخذ الصيغة:

`**\hskip** *<natural width>* **plus** *<amount to stretch>* **minus** *<amount to shrink>*`

بالنسبة إلى *عمودي* الغراء الذي ستستخدمه `**\vskip** *<natural width>* **plus** *<amount to stretch>* **minus** *<amount to shrink>*`.

على سبيل المثال، يُعبَّر عن بعض الغراء الأفقي النموذجي على النحو التالي `\hskip 3pt plus 2pt minus 1pt`. ويمكنك أيضًا استخدام وحدات فيزيائية أخرى:

* `\hskip 3mm plus 2mm minus 1mm`
* `\hskip 3in plus 2in minus 1in`
* `\hskip 1in plus 3cm minus 20mm`

## $$\mathrm \TeX$$ الغراء ووحدات “اللانهاية”

بالنسبة لمكوّن الانكماش أو التمدد في الغراء $$\mathrm \TeX$$ يقدّم نوعًا آخر من الوحدات: ما يُسمّى “اللانهايات”: $$\text{fil}$$, $$\text{fill}$$ و $$\text{filll}$$. وهذه المستويات الثلاثة من “اللانهاية” بحيث إن ترتيبها في سلسلة يجعل كل مستوى منها “أكثر لانهائية” من السابق:

$$\text{fil} < \text{fill} < \text{filll}$$

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

`\hskip 3pt plus 2fil minus 1fill`

لاحظ أننا لا نستطيع أن نكتب، مثلًا، `\hskip 1fil` لأن $$\mathrm \TeX$$ سيُبلغ عن خطأ برسالة `وحدة قياس غير صالحة (تم إدراج pt)`. في هذه المرحلة قد تبدو هذه “المستويات من اللانهاية” غريبة جدًا، لكن في الوقت الحالي تقبّلها كما هي، وسنرى قريبًا كيف $$\mathrm \TeX$$ يستخدم هذه اللانهايات عند إجراء حسابات الغراء.

### مستويات اللانهاية (“رتبة الغراء”)

داخليًا، عندما $$\mathrm \TeX$$ يجري حسابات الغراء، يعتبر أن كل مستوى من اللانهاية هو “رتبة غراء” تتراوح من 0 إلى 3، حيث تكون الرتبة الصفرية للغراء ذي الوحدات الفيزيائية مثل bp وpt وmm وما إلى ذلك. ومع ذلك، مع $$\text{Lua}\mathrm\TeX$$ يوجد اختلاف طفيف لأنه في الواقع يحتوي على نوع إضافي (رتبة) من اللانهاية غير موجود في كثير من $$\mathrm \TeX$$ المحركات: $$\text{fi}$$ (انظر الشرح أدناه). إذا قرأت $$\text{The } \mathrm \TeX\text{book}$$ فلن ترى أي ذكر لـ $$\text{fi}$$ اللانهاية—وذلك ببساطة لأنها غير مطبقة في $$\mathrm \TeX$$ برنامج كنث الأصلي. وبالتالي، يوجد قدر طفيف من “الانفصال” بين $$\text{Lua}\mathrm\TeX\text{'s}$$ رتب اللانهايات وتلك التي قد تراها في الكتب عن $$\mathrm \TeX$$. $$\text{Lua}\mathrm\TeX$$ يستخدم لانهايات تتراوح رتبها من 0 إلى 4، لكن المحركات الأخرى (الشائعة) $$\mathrm \TeX$$ تتراوح من 0 إلى 3. هنا جدول يبيّن رتبة الغراء المخصصة لكل نوع من وحدات الغراء.

|                           |                                 |          |     |      |       |
| ------------------------- | ------------------------------- | -------- | --- | ---- | ----- |
|                           | الوحدات الفيزيائية (pt، mm، in) | fi       | fil | fill | filll |
| $$\text{Lua}\mathrm\TeX$$ | 0                               | 1        | 2   | 3    | 4     |
| محركات أخرى               | 0                               | غير متاح | 1   | 2    | 3     |

### ملاحظات حول $$\text{Lua}\mathrm\TeX$$: لماذا توجد لانهاية إضافية؟

$$\text{Lua}\mathrm\TeX$$ مشتق من عدد من المشاريع ومكتبات الشيفرة، بما في ذلك واحد يُسمّى [أوميغا](https://en.wikipedia.org/wiki/Omega_\(TeX\)). $$\text{Lua}\mathrm\TeX$$ وقد تضمّن بعض جوانب شيفرة أوميغا، ويشمل ذلك نوعًا جديدًا من الغراء اللانهائي يُسمّى $$\text{fi}$$. ومن دليل أوميغا:

> “لقد أُضيف مستوى جديد من اللانهاية $$\text{fi}$$ . وهو أصغر من $$\text{fil}$$ ولكنه أكبر من أي كمية محدودة. وكان الغرض الأصلي منه هو تمدد ما بين الحروف: إما ملء الفراغات السوداء، كما يحدث في الخطوط الزخرفية مثل العربية؛ أو للتوكيد، كما في الروسية؛ وكل ذلك من دون الحاجة إلى إعادة كتابة حزم الماكرو الموجودة. ولذلك توجد كلمة مفتاحية جديدة، $$\text{fi}$$، وبدائيتان جديدتان، `\hfi` و `\vfi`».

## نعود إلى التحدي الذي أمامنا

وفقًا لنموذج كنث، لنعرف كميتين:

* العرض المطلوب للصندوق: $$\mathrm{W}\_{\mathrm{D}}$$—ما الحجم الذي نريده له؛
* العرض الطبيعي لصندوق: $$\mathrm{W}\_{\mathrm{N}}$$—المساحة الكلية التي تشغلها عناصره المكوِّنة قبل أن يتم تمدد أي غراء أو انكماشه.

### العرض الطبيعي للصندوق

العرض الطبيعي للصندوق هو العرض الكلي لجميع المكوّنات في ذلك الصندوق: الأحرف، والمسافات الضبطية kerns، والصناديق المتداخلة، وأي غراء. أما بالنسبة للغراء داخل الصندوق، فإن عرضه الطبيعي يتجاهل أي تمدد أو انكماش للغراء: أي حجمه قبل حدوث أي تمدد أو انكماش.

ومرة أخرى، هذا هو الصندوق الذي نفحصه:

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

من الواضح أننا نريد أن يكون عرض الصندوق 100pt، ومن ثم $$\mathrm{W}*{\mathrm{D}}=100\mathrm{pt}$$ ولكن ماذا عن عرضه الطبيعي، $$\mathrm{W}*{\mathrm{N}}$$؟ لحساب العرض الطبيعي، من الواضح أننا نحتاج إلى عروض الأحرف الأربعة (A وB وC وD) بالإضافة إلى العروض الطبيعية للغراءات الأربع.

$$\eqalign{\mathrm{W}\_{\mathrm{N}} &= &\text{width(A)} + \text{width(B)} + \text{width(C)} + \text{width(D)} \ & &+ \text{width}(\verb\*\hskip 4pt plus3pt minus 2pt\*)\ & &+\text{width}(\verb\*\hskip 0pt plus 2fil\*)\ & &+\text{width}(\verb\*\hskip 0pt plus 2fill)*\ & &+\text{width}(\verb*\hskip 0pt plus 3fill\*)\ }$$

حيث $$\text{width}$$ هو مجرد ترميز للدلالة على العرض الطبيعي لعنصر ما. ويمكننا الحصول على العروض الطبيعية للأحرف الأربعة (A وB وC وD) من رسم العقد لدينا:

![مخطط العقد](/files/7972e8478591c80c24e6caa736b24b06c4e9039b)

من رسم العقد أعلاه يمكننا أن نرى أن:

$$\eqalign{ \text{width(A)} &= 7.50002\text{pt}\ \text{width(B)} &= 7.08336\text{pt}\ \text{width(C)} &= 7.22223\text{pt}\ \text{width(D)} &= 7.6389\text{pt}\ }$$

والآن، كل ما نحتاجه هو العروض الطبيعية لغراءاتنا، والتي يمكن الحصول عليها بسهولة بتجاهل مكوّني التمدد والانكماش:

$$\eqalign{ &\text{width}(\verb\*\hskip 4pt plus3pt minus 2pt\*) & = 4\text{pt}\ &\text{width}(\verb\*\hskip 0pt plus 2fil\*) &=0\text{pt}\ &\text{width}(\verb\*\hskip 0pt plus 2fill)*&=0\text{pt}\ &\text{width}(\verb*\hskip 0pt plus 3fill\*)&=0\text{pt}\ }$$

وبالتالي:

$$\eqalign{ \mathrm{W}\_{\mathrm{N}} & = \text{widths of characters} + \text{width of all glues}\ &= 7.50002\text{pt}+ 7.08336\text{pt} + 7.22223\text{pt} + 7.6389\text{pt} + 4\text{pt}\space \text{(from }\verb\*\hskip\*\text{)}\ &=33.4445\text{pt}\ }$$

أصبح لدينا الآن معلومتان أساسيتان:

$$\eqalign{ \mathrm{W}*{\mathrm{D}} & = 100\text{pt}\ \mathrm{W}*{\mathrm{N}} & = 33.4445\text{pt}\ }$$

من الواضح أن $$\mathrm{W}*{\mathrm{D}} > \mathrm{W}*{\mathrm{N}}$$ والفرق هو $$(100-33.4445)\text{pt}=66.5555\text{pt}$$؛ وهذه المساحة الزائدة يجب ملؤها بتمديد الغراءات—لكن أيّها وبأي مقدار؟

### من يملك أكبر قدر من التمدد؟

باتباع منهجية كنث (الصفحة 77 من $$\text{The } \mathrm \TeX \text{book}$$), مع السماح بنوع اللانهاية الإضافي ($$\text{fi}$$) الذي يوفّره $$\text{Lua}\mathrm \TeX$$، تتمثل الخطوة التالية في تدوين *الإجمالي* التمدد بالشكل:

$$\text{total stretch} = y\_{0}+ y\_{1}\text{fi} +y\_{2}\text{fil} +y\_{3}\text{fill} +y\_{4}\text{filll}$$

أولًا، إذا دوّنا $$\text{total glue}$$:

$$\text{total glue } = (\verb*4pt plus3pt minus 2pt*) + (\verb*0pt plus 2fil*) + (\verb*0pt plus 2fill*) + (\verb*0pt plus 3fill*)$$

فيمكننا عندئذٍ أن نرى أن $$\text{total stretch}$$ هي:

$$\eqalign{ \text{total stretch} & = 3\text{pt}+ 0\text{fi} + (2\text{fil}) + (2\text{fill} + 3\text{fill}) + 0\text{filll}\ &=3\text{pt}+ 0\text{fi} + 2\text{fil} + 5\text{fill} + 0\text{filll}\ }$$

وبمقارنة هذا مع $$\text{total stretch} = y\_{0}+ y\_{1}\text{fi} +y\_{2}\text{fil} +y\_{3}\text{fill} +y\_{4}\text{filll}\space$$يمكننا أن نرى أن:

$$\eqalign{ y\_0 &=3\text{pt}\ y\_1 &=0\ y\_2 &=2\ y\_3&=5\ y\_4&=0\ }$$

$$\mathrm\TeX$$ ثم “يسأل نفسه”: بالنظر إلى $$\text{total stretch}$$، ما أعلى مستوى من اللانهاية ذو قيمة غير صفرية؟ وبفحص $$\text{total stretch}$$ يتضح أن أكثر مكوّنات التمدد غير الصفرية “لانهاية” هو $$\text{fill}$$ ولدينا $$y\_3=5$$ وحدات من ذلك: إنها غراءات ذات $$\text{fill}$$ مكوّن تمدد يوفّر كل التمدد. والرمز السفلي 3 في $$y\_3$$ يخبرنا بـ `glue_order` من الغراء الذي سيُستخدم—وفي هذه الحالة للتمدد. والآن، إذا نظرنا إلى قسم “البيانات الوصفية” داخل مخطط العقد الخاص بنا لهذا `\hbox` فيمكننا الآن فهم قيمتين إضافيتين من “البيانات الوصفية” (وسنتناول `glue_set` في القسم التالي)

![البيانات الوصفية](/files/9c9a8001fb17f4453511f193ebd54ccfc62b9db1)

* `glue_sign`: يوضح ما إذا كان الغراء مضبوطًا على طوله الطبيعي، أو ممددًا، أو منكمشًا:
* 0=مضبوط على العرض الطبيعي
* 1=تمدد
* 2=انكماش

في مثالنا، `glue_sign` قيمته `1`، ما يعني أن الغراءات المشاركة ستتمدد.

* `glue_order` يوضح أي “لانهاية” معنية؛ وفي حالة $$\text{Lua}\mathrm \TeX$$ فإن القيمة 3 تخبرك بأن الغراءات ذات $$\text{fill}$$ مكوّن ستشارك في حسابات الغراء—وفي حالتنا ستتمدد.

أي غراء لا يكون لمكوّن تمدده تعريف بوحدات $$\text{fill}$$ سيكون **مضبوطًا على طوله الطبيعي**: أي إنه لن يتمدد (في حالتنا) إطلاقًا.

### مقدار التمدد أو الانكماش: حساب glue\_set

لتلخيص ما وصلنا إليه وما نعرفه:

1. العرض المطلوب للصندوق: $$\mathrm{W}\_{\mathrm{D}} = 100\text{pt}$$;
2. العرض الطبيعي للصندوق: $$\mathrm{W}\_{\mathrm{N}} = 33.4445\text{pt}$$;
3. يجب أن يتمدد الغراء، لكن الغراءات ذات $$\text{fill}$$ مكوّن التمدد هي وحدها التي ستقوم بذلك التمدد؛
4. لدينا ما مجموعه $$(2+3)=5$$ وحدات من $$\text{fill}$$ متاحة.

السؤال التالي هو: إلى أي مدى ستتمدد تلك الغراءات فعليًا؟ هنا يأتي *نسبة ضبط الغراء*—ويُشار إليها باسم `glue_set` في رسم العقد لدينا. ما الذي $$\mathrm \TeX$$ يفعله هو تحديد مقدار المساحة التي يجب ملؤها ثم يوزع ذلك المقدار من المساحة بين الغراءات المناسبة بنسبة تتناسب مع حجم مكوّن التمدد لديها. إذا عدت بالنظر إلى رسم العقد الفعلي لدينا، `\hbox` يمكنك أن ترى بالضبط أي الغراءات لها مكوّنات تمدد تحتوي على وحدات من $$\text{fill}$$:

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

ال $$\textit{glue set ratio }(\text{or } \verb*glue\_set*)$$ يُحسب على النحو التالي:

$$\eqalign{ \text{glue set ratio}\space (\verb*glue\_set*) = & {\text{amount to stretch}}\over{\text{value of highest infinity}}\ =& {\mathrm{W}*{\mathrm{D}}-\mathrm{W}*{\mathrm{N}}}\over{y\_3}\ =& {(100-33.4445)}\over{5}\ =& {66.5555}\over{5}\ =& 13.3111\space (\text{to 4 decimal places})\ }$$

والآن الخطوة الأخيرة في $$\mathrm\TeX$$ تُطبَّق الخوارزمية:

1. لكل عنصر من الغراء يتطابق مكوّن تمدده مع `glue_order` (3 في حالتنا) سيصبح طول ذلك الغراء:

$$\text{stretched value} = \text{natural length} + (\verb*glue\_set* \times \text{value of stretch component})$$

3. تُضبط جميع الغراءات الأخرى على طولها الطبيعي—أي إنها لا تتمدد إطلاقًا.

بالنظر إلى الغراءات في صندوقنا:

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

يمكننا المرور عليها لحساب قيمها النهائية:

1. **بين A وB**: `\hskip 4pt plus3pt minus 2pt`. مكوّن التمدد هو `3pt`، وهي من الرتبة `0`. المطلوب `glue_order` هو `3`: يُتجاهل مكوّن التمدد ويأخذ هذا الغراء عرضه الطبيعي البالغ `4pt`.
2. **بين B وC**: `\hskip 0pt plus 2fil`. مكوّن التمدد هو `2fil`، وهي من الرتبة `2`. المطلوب `glue_order` هو `3`: يُتجاهل مكوّن التمدد ويأخذ هذا الغراء عرضه الطبيعي البالغ `0pt`.
3. **بين C وD**: `\hskip 0pt plus 2fill`. مكوّن التمدد هو `2fill`، وهي من الرتبة `3` ويتطابق مع المطلوب `glue_order` لـ `3`. سيتم تمديد هذا الغراء إلى: $$\eqalign{ \text{stretched value}\space = & \text{natural width} + (\verb*glue\_set* \times \text{value of stretch component})\ = & 0\text{pt} + 13.3111 \times 2 \ = & 26.6222\text{pt}\ }$$5. **بين D ونهاية الصندوق**: `\hskip 0pt plus 3fill`. مكوّن التمدد هو `3fill`، وهي من الرتبة `3` ويتطابق مع المطلوب `glue_order` لـ `3`. سيتم تمديد هذا الغراء إلى: $$\eqalign{ \text{stretched value}\space = &\text{natural width} + (\verb*glue\_set* \times \text{value of stretch component})\ =& 0\text{pt} + 13.3111 \times 3 \ = &39.9333\text{pt}\ }$$

## وأخيرًا: التحقق من العرض الكلي

تُسمّى عملية حساب المساحة الفعلية التي يشغلها الغراء *ضبط الغراء* لذلك يمكننا الآن التحقق مما إذا كنا قد ملأنا الصندوق إلى العرض المطلوب، $$(\mathrm{W}\_{\mathrm{D}} = \text{100pt})$$:

$$\eqalign{ \mathrm{W}\_{\mathrm{D}} & = \text{width of all characters} + \text{width of all }\textbf{set}\text{ glue values}\ & = \text{A:7.50002pt} + \text{B:7.08336pt} + \text{C:7.22223pt} + \text{D:7.6389pt}\ & + \text{4pt} + \text{0pt} + \text{26.6222pt} + \text{39.9333pt}\ & = \text{100.00pt} }$$

أصبحنا نعرف الآن عروض جميع الغراءات ويمكننا إعداد رسم يجيب عن السؤال المطروح في بداية هذا المقال: فيما يلي عروض الغراء بين الأحرف في `\hbox`:

![المسافة المرنة](/files/fa2029ad185fa7d3a2fa64d29b2cb84f7d8533c1)


---

# 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/24-how-tex-calculates-glue-settings-in-an-hbox.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.
