> 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/altnsyq/04-articles-how-to-change-paragraph-spacing-in-latex.md).

# تنسيق الفقرات

## مقدمة

تستعرض هذه المقالة طريقتين لإجراء تغييرات على جوانب مختلفة من تباعد الفقرات:

* الطريقة الأفضل، والموصى بها، لاستخدام حِزم LaTeX مثل [`setspace`](https://ctan.org/pkg/setspace) و [`parskip`](https://ctan.org/pkg/parskip) التي توفّر خيارات وأوامر على مستوى المستخدم لتغيير تباعد مستندات LaTeX الخاصة بك؛
* استخدام أوامر TeX/LaTeX منخفضة المستوى *أوامر المعاملات* لتعديل تباعد الفقرات. إن الاستخدام المباشر لأوامر المعاملات يمكن أن يتجاوز عمليات التحقق أو عناصر التحكّم التي توفّرها حِزم LaTeX المصممة بعناية، مما قد يؤدي إلى عواقب/آثار جانبية غير متوقعة في مكان آخر من مستند LaTeX الخاص بك، لذا استخدمها بحذر...

### الانتقال إلى الأقسام ذات الاهتمام

القراء الباحثون عن حلول سريعة:

* انتقل إلى القسم [*استخدام حِزم LaTeX: setspace وparskip*](#using-latex-packages-setspace-and-parskip)

القراء المهتمون بالأوامر منخفضة المستوى:

* انتقل إلى الأقسام [*أوامر المعاملات في TeX/LaTeX*](#using-texlatex-parameter-commands) و [*الأساسيات: أوامر المعاملات والأمثلة*](#the-fundamentals-parameter-commands-and-examples)

القراء المهتمون بالتفاصيل الدقيقة لحسابات تباعد الأسطر وبنية الفقرة:

* انتقل إلى القسم [*بنية الفقرة وحسابات تباعد الأسطر*](#paragraph-structure-and-line-space-calculations)

## استخدام حِزم LaTeX: setspace وparskip

* [حزمة parskip](#the-parskip-package)
* [حزمة setspace](#the-setspace-package)

### حزمة parskip

ال [`parskip` الحزمة](https://ctan.org/pkg/parskip?lang=en) تساعدك على تغيير المسافة المدرجة بين الفقرات في مستندك بأمان. وهي مصممة لضمان ألا تتأثر تراكيب المستند مثل جدول المحتويات وبيئات القوائم والعناوين المعروضة سلبًا بقيمة غير صفرية لـ [`\parskip` الأمر](#parskip-tex-primitive)، والتي تُستخدم لتحديد مقدار المسافة التي يدرجها TeX/LaTeX بين الفقرات.

ال `parskip` لا توفّر الحزمة أي أوامر على مستوى المستخدم؛ وبدلًا من ذلك، تستخدم خيارات الحزمة لتكوين عملياتها. الـ [`parskip` الوثائق](https://mirror.ox.ac.uk/sites/ctan.org/macros/latex/contrib/parskip/parskip.pdf) مختصرة، إذ لا تتجاوز ثلاث صفحات، ولكن إليك ملخصًا قصيرًا لخيارات الحزمة:

* **`skip`**: حدِّد `\parskip`، المسافة العمودية بين الفقرات؛
* **`tocskip`**: حدِّد قيمة غير صفرية `\parskip` لاستخدامها في `\tableofcontents` والقوائم المشابهة؛
* **`indent`**: اضبط قيمة `\parindent`، أي المسافة البادئة للفقرة؛
* **`parfill`**: يضبط قيمة `\parfillskip`، أي الـ glue المضاف في نهاية السطر الأخير في الفقرة.

بشكل افتراضي، `parskip` تضبط الحزمة `\parindent` إلى `0pt` وتوفّر قيمة غير صفرية لـ `\parskip` قيمة `.5[\baselineskip](#baselineskip-tex-primitive) زائد 2pt`.

#### أمثلة على حزمة parskip

توضح الأمثلة التالية بعض استخدامات `parskip` الحزمة. اختر روابط «Open in Overleaf» لفتح الأمثلة وتجميعها باستخدام Overleaf.

**مثال بسيط على حزمة parskip**

المثال البسيط التالي يحمّل `parskip` الحزمة ويُنسّق فقرتين أُنشئتا باستخدام [`blindtext` الحزمة](https://ctan.org/pkg/blindtext?lang=en). كما ينسّق المثال أيضًا القيم الافتراضية لـ `\baselineskip`, `\parskip` و `\parindent`. يحدَّد مقدار المسافة بين الفقرتين بواسطة قيمة `\parskip`:

```latex
\documentclass{article}
% اختر حجم صفحة صغيرًا ومناسبًا
\usepackage[paperheight=16cm,paperwidth=14cm,textwidth=12cm]{geometry}
% حمّل حزمة blindtext لنص وهمي
\usepackage{blindtext}
% حمّل حزمة parskip من دون خيارات
\usepackage{parskip}
\begin{document}

\blindtext[1]\par % استخدم \par لفرض فقرة جديدة
\blindtext[1]

قيمة \verb|\parindent| هي \texttt{\the\parindent}. وهذه هي القيم الأخرى:

\begin{itemize}
\item قيمة \verb|\baselineskip| هي \texttt{\the\baselineskip}
\item قيمة \verb|\parskip| هي \texttt{\the\parskip}
\end{itemize}
\end{document}
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+parskip+package\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+parskip+package+without+options%0A%5Cusepackage%7Bparskip%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cblindtext%5B1%5D%5Cpar+%25Use+%5Cpar+to+force+a+new+paragraph%0A%5Cblindtext%5B1%5D%0A%0AThe+value+of+%5Cverb%7C%5Cparindent%7C+is+%5Ctexttt%7B%5Cthe%5Cparindent%7D.+Here+are+the+other+values%3A%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+The+value+of+%5Cverb%7C%5Cbaselineskip%7C+is+%5Ctexttt%7B%5Cthe%5Cbaselineskip%7D%0A%5Citem+The+value+of+%5Cverb%7C%5Cparskip%7C+is+%5Ctexttt%7B%5Cthe%5Cparskip%7D%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

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

![مثال على استخدام حزمة parskip في LaTeX](/files/462cd8c9d93e289c9bc1d4b12746a6b0fae30b75)

لاحظ أن `\parskip` غالبًا ما يحتوي glue على عنصر قابل للتمدد [مكوّن glue](#a-few-notes-on-glue) لأن ذلك يساعد LaTeX على ملاءمة المحتوى على الصفحة وإنتاج أفضل فواصل صفحات ممكنة.

**استخدام خيارات حزمة parskip**

المثال التالي يحمّل ويضبط `parskip` باستخدام خيار `skip` و `indent` الخيارات. كما ينسّق فقرتين عبر [`blindtext` الحزمة](https://ctan.org/pkg/blindtext?lang=en)، ويعرض القيم الخاصة بـ `\baselineskip`, `\parskip` و `\parindent`.

```latex
\documentclass{article}
% اختر حجم صفحة صغيرًا ومناسبًا
\usepackage[paperheight=18cm,paperwidth=14cm,textwidth=12cm]{geometry}
% حمّل حزمة blindtext لنص وهمي
\usepackage{blindtext}
% حمّل حزمة parskip مع خياري skip وindent
\usepackage[skip=10pt plus1pt, indent=40pt]{parskip}
\begin{document}

\blindtext[1]\par % استخدم \par لفرض فقرة جديدة
\blindtext[1]

تم ضبط قيمة \verb|\parindent| عبر الخيار \texttt{indent}، لذا أصبحت الآن \texttt{\the\parindent}. والقيم الأخرى هي:

\begin{itemize}
\item \verb|\baselineskip| هي \texttt{\the\baselineskip}
\item تم ضبط \verb|\parskip| عبر الخيار \texttt{skip}، لذا فقيمتها هي \texttt{\the\parskip}
\end{itemize}
\end{document}
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+parskip+package\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+parskip+package+with+skip+and+indent+options%0A%5Cusepackage%5Bskip%3D10pt+plus1pt%2C+indent%3D40pt%5D%7Bparskip%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cblindtext%5B1%5D%5Cpar+%25+Use+%5Cpar+to+force+a+new+paragraph%0A%5Cblindtext%5B1%5D%0A%0AThe+value+of+%5Cverb%7C%5Cparindent%7C+was+set+via+the+%5Ctexttt%7Bindent%7D+option%2C+so+it+is+now+%5Ctexttt%7B%5Cthe%5Cparindent%7D.+The+other+values+are%3A%0A%0A%5Cbegin%7Bitemize%7D%0A%5Citem+%5Cverb%7C%5Cbaselineskip%7C+is+%5Ctexttt%7B%5Cthe%5Cbaselineskip%7D%0A%5Citem+%5Cverb%7C%5Cparskip%7C+was+set+via+the+%5Ctexttt%7Bskip%7D+option%2C+so+its+value+is+%5Ctexttt%7B%5Cthe%5Cparskip%7D%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bdocument%7D)

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

![مثال ثانٍ على استخدام حزمة parskip في LaTeX](/files/6f37ffbf016d649288e61e84a806b9197ff2b346)

### حزمة setspace

ال [`setspace` الحزمة](https://ctan.org/pkg/setspace?lang=en) توفّر أوامر وبيئات لتغيير تباعد أسطر نص مستندك. وفيما يلي ملخص موجز للأوامر والبيئات الرئيسية التي توفّرها `setspace`:

* الأوامر **`\singlespacing`**, **`\onehalfspacing`** و **`\doublespacing`** يمكن استخدامها في مقدمة المستند أو ضمن متن المستند لتغيير التباعد في جزء من المستند أو كله؛
* موقع **`\setstretch{*baselinestretch amount*}`** يعيّن الأمر تباعدًا مخصصًا (من خلال تغييرات على [`\baselinestretch`](#demonstrating-baselinestretch))—كما يمكن استخدامه أيضًا في مقدمة المستند؛
* البيئات **`singlespace`**, **`singlespace*`** **`onehalfspace`** و **`doublespace`** تسمح بتغيير تباعد الأسطر لأجزاء محددة من نص المستند؛
* موقع **`\SetSinglespace{*value*}`** يستخدم الأمر `*value*` لضبط تباعد السطر الواحد بما يتلاءم مع تباعد الأسطر للنص المُنسّق بخطوط تكون أشكال محارفها («glyphs») صغيرة نسبيًا أو كبيرة بالنسبة لحجم النقطة المعطى. انظر القسم [*ملاحظات موجزة حول الخطوط وحجم النقطة*](#brief-notes-on-fonts-and-point-size) للاطلاع على رسم يوضّح تباين حجم glyphs الخطية بالنسبة لحجم نقطة معيّن؛
* موقع **`التباعد`** توفر البيئة تباعدًا مخصصًا وتتطلب وسيطًا واحدًا: [`\baselinestretch` القيمة](#demonstrating-baselinestretch) لاستخدامه؛ مثلًا:

```latex
\begin{spacing}{2.5}
...
...
\end{spacing}
```

#### أمثلة على حزمة setspace

توضح الأمثلة التالية بعض استخدامات `setspace` الحزمة: انقر روابط «Open in Overleaf» لفتح الأمثلة وتجميعها باستخدام Overleaf.

**استخدام \doublespacing في مقدمة المستند**

```latex
\documentclass{article}
% اختر حجم صفحة صغيرًا ومناسبًا
\usepackage[paperheight=18cm,paperwidth=14cm,textwidth=12cm]{geometry}
% حمّل حزمة blindtext لنص وهمي
\usepackage{blindtext}
% حمّل حزمة setspace
\usepackage{setspace}
% استخدام \doublespacing في المقدمة
% يحوّل النص إلى تباعد أسطر مزدوج
\doublespacing
\begin{document}
\blindtext[1]
\end{document}
```

&#x20;[افتح هذا `setspace` مثال في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+doublespacing+command\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+setspace+package%0A%5Cusepackage%7Bsetspace%7D%0A%25+Using+%5Cdoublespacing+in+the+preamble+%0A%25+changes+text+to+double+line+spacing%0A%5Cdoublespacing%0A%5Cbegin%7Bdocument%7D%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bdocument%7D)

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

![مثال على الأمر \doublespacing في setspace](/files/a85ceda16070cb1419e4ada114a5e4214d958227)

**استخدام بيئة spacing**

لأن الشفرة التالية تُنتج ثلاث صفحات، فمن الأفضل عرض الناتج على Overleaf عبر اختيار رابط «Open in Overleaf» المبيّن أدناه.

```latex
\documentclass{article}
% اختر حجم صفحة صغيرًا ومناسبًا
\usepackage[paperheight=18cm,paperwidth=14cm,textwidth=12cm]{geometry}
% حمّل حزمة blindtext لنص وهمي
\usepackage{blindtext}
% حمّل حزمة setspace
\usepackage{setspace}
% استخدام \doublespacing في المقدمة
% يحوّل النص إلى تباعد أسطر مزدوج
\doublespacing
\begin{document}
\blindtext[1]

والآن، طبّق تباعدًا أكبر (مخصصًا) باستخدام قيمة \verb|\baselinestretch| تساوي 3:

\begin{verbatim}
\begin{spacing}{3}
\blindtext[1]
\end{spacing}
\end{verbatim}

\begin{spacing}{2.5}
\blindtext[1]
\end{spacing}
والآن، ارجع إلى \verb|\singlespacing|\singlespacing\blindtext[1]
\end{document}
```

&#x20;[افتح هذا `setspace` مثال في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+various+setspace+commands\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+setspace+package%0A%5Cusepackage%7Bsetspace%7D%0A%25+Using+%5Cdoublespacing+in+the+preamble+%0A%25+changes+text+to+double+line+spacing%0A%5Cdoublespacing%0A%5Cbegin%7Bdocument%7D%0A%5Cblindtext%5B1%5D%0A%0ANow%2C+apply+a+larger+%28custom%29+spacing+by+applying+a+%5Cverb%7C%5Cbaselinestretch%7C+value+of+3%3A%0A%0A%5Cbegin%7Bverbatim%7D%0A%5Cbegin%7Bspacing%7D%7B3%7D%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bspacing%7D%0A%5Cend%7Bverbatim%7D%0A%0A%5Cbegin%7Bspacing%7D%7B2.5%7D%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bspacing%7D%0ANow%2C+revert+to+%5Cverb%7C%5Csinglespacing%7C%5Csinglespacing%5Cblindtext%5B1%5D%0A%5Cend%7Bdocument%7D)

**استخدام البيئة singlespace\***

كما هو مذكور في المقال [*ملاحظة سريعة حول تباعد الأسطر*](https://texblog.org/2011/09/30/quick-note-on-line-spacing/)، و `setspace` توفّر الحزمة نسخًا مُعلَّمة بنجمة (`singlespace*`) وغير معلَّمة بنجمة من `singlespace` البيئة. وتوضح التعليقات في `setspace` شفرة الحزمة أن `singlespace*` البيئة مصممة لـ «... توفير تباعد عمودي أفضل حول بيئتي itemize وquote».

يستخدم المثال التالي قوائم نقطية موجودة في بيئتين `minipage` موضوعتين جنبًا إلى جنب، لإظهار التباعد المختلف الناتج عن `singlespace` و `singlespace*` البيئات.

```latex
\doublespacing
\blindtext[1]

\begin{minipage}{.4\textwidth}
\begin{singlespace}
هذه قائمة نقطية\par (بيئة \texttt{singlespace}).
\begin{itemize}
\item واحد
\item اثنان
\item ثلاثة
\end{itemize}
\end{singlespace}%
انتهت القائمة.
\end{minipage}\kern10pt%
\begin{minipage}{.4\textwidth}
\begin{singlespace*}
هذه قائمة نقطية\par (بيئة \texttt{singlespace*}).
\begin{itemize}
\item واحد
\item اثنان
\item ثلاثة
\end{itemize}
\end{singlespace*}
انتهت القائمة.
\end{minipage}
```

&#x20;[افتح هذا `setspace` المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+of+the+starred+singlespace+environment\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bsetspace%7D%0A%5Cusepackage%7Bblindtext%7D%0A%5Cbegin%7Bdocument%7D%0A%5Cdoublespacing+%0A%5Cblindtext%5B1%5D%0A%0A%5Cbegin%7Bminipage%7D%7B.4%5Ctextwidth%7D%0A%5Cbegin%7Bsinglespace%7D%0AHere+is+a+bulleted+list%5Cpar+%28%5Ctexttt%7Bsinglespace%7D+environment%29.%0A%5Cbegin%7Bitemize%7D%0A%5Citem+One%0A%5Citem+Two%0A%5Citem+Three%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bsinglespace%7D%25%0AThe+list+has+ended.%0A%5Cend%7Bminipage%7D%5Ckern10pt%25%0A%5Cbegin%7Bminipage%7D%7B.4%5Ctextwidth%7D%0A%5Cbegin%7Bsinglespace%2A%7D%0AHere+is+a+bulleted+list%5Cpar+%28%5Ctexttt%7Bsinglespace%2A%7D+environment%29.%0A%5Cbegin%7Bitemize%7D%0A%5Citem+One%0A%5Citem+Two%0A%5Citem+Three%0A%5Cend%7Bitemize%7D%0A%5Cend%7Bsinglespace%2A%7D%0AThe+list+has+ended.%0A%5Cend%7Bminipage%7D%0A%5Cend%7Bdocument%7D)

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

![مثال على بيئة LaTeX singlespace\*](/files/e4d9b7cc84d6491c93dd96ae0289337694ee1745)

**استخدام الأمر \setstretch**

`\setstretch{*value*}` تضبط قيمة `\baselinestretch` إلى *القيمة* ويؤدي إلى *فوري* تغيير في `\baselineslip` نتيجة لـ `\baselinestretch`. يستخدم المثال التالي `\setstretch{1.618}`—والقيمة الغريبة 1.618 [سيتم شرحها لاحقًا في المقال](#understanding-and-calculating-values-for-baselinestretch)...

```latex
% سيتم شرح الرقم الغريب 1.618 لاحقًا في المقال.
\setstretch{1.618}
نكتب \verb|\setstretch{1.618}| لإحداث تغيير فوري في تباعد الأسطر. وإذا كتبنا \verb|\renewcommand{\baselinestretch}{1.618}| فلن يتغيّر تباعد الأسطر حتى يُستخدم أمر لتغيير الخط، مثل \verb|\selectfont|.

\blindtext[1]
```

&#x20;[افتح هذا `setspace` مثال في Overleaf.](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+setstretch+command\&snip=%5Cdocumentclass%5B11pt%5D%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Load+the+setspace+package%0A%5Cusepackage%7Bsetspace%7D%0A%5Cbegin%7Bdocument%7D%0A%25+The+strange+figure+of+1.618+is+explained+later+in+the+article.%0A%5Csetstretch%7B1.618%7D%0AWe+write+%5Cverb%7C%5Csetstretch%7B1.618%7D%7C+to+cause+an+immediate+change+to+the+line+spacing.+If+we+wrote+%5Cverb%7C%5Crenewcommand%7B%5Cbaselinestretch%7D%7B1.618%7D%7C+the+line+spacing+would+not+be+modified+until+a+font-changing+command%2C+such+as+%5Cverb%7C%5Cselectfont%7C%2C+is+used.%0A%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bdocument%7D)

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

![مثال على الأمر \setstretch](/files/795f9694c74aa8cd98c3c54b2931f5bd89995d6e)

**استخدام الأمر \SetSinglespace**

المشروع التالي يُجمَّع عبر LuaLaTeX ويستخدم `fontspec` الحزمة للوصول إلى خطوط TeX Gyre Pagella. وهو يقارن فقرتين من النص المنسق بخط TeX Gyre Pagella: الفقرة الأولى تستخدم التباعد الأحادي الافتراضي، والثانية لديها تباعد أحادي أكبر نتيجة تطبيق `\SetSinglespace{1.1}`. قد يفضّل بعض الناس الفقرة الثانية، الأكثر «اتساعًا» قليلًا، إذ يجدون أنها تحسّن راحة القراءة، لكن ذلك بالطبع مسألة تفضيل شخصي.

```latex
\section*{التباعد الأحادي الافتراضي في Computer Modern}
بعض النص العادي. \blindtext[1]
\setmainfont{TeX Gyre Pagella}
\section*{التباعد الأحادي الافتراضي في TeX Gyre Pagella}
إليك بعض النص العادي. \blindtext[1]
\section*{التباعد الأحادي المعدّل في TeX Gyre Pagella}
ملاحظة: نحتاج إلى تنفيذ \verb|\singlespacing| بعد كتابة
\verb|\SetSinglespace{1.1}|\SetSinglespace{1.1}\singlespacing
\begin{singlespace*}
إليك بعض النص العادي. \blindtext[1]
\end{singlespace*}
```

&#x20;[افتح هذا `setspace` مثال في Overleaf.](https://www.overleaf.com/docs?engine=lualatex\&snip_name=Example+use+of+the+SetSinglespace+command\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bfontspec%7D%0A%5Cusepackage%7Bblindtext%7D%0A%5Cusepackage%7Bsetspace%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csection%2A%7BComputer+Modern+default+single+spacing%7D%0ASome+regular+text.+%5Cblindtext%5B1%5D%0A%5Csetmainfont%7BTeX+Gyre+Pagella%7D%0A%5Csection%2A%7BTeX+Gyre+Pagella+default+single+line+spacing%7D%0AHere+is+some+regular+text.+%5Cblindtext%5B1%5D%0A%5Csection%2A%7BTeX+Gyre+Pagella+adjusted+single+line+spacing%7D%0ANote%3A+we+need+to+issue+%5Cverb%7C%5Csinglespacing%7C+after+writing++%0A%5Cverb%7C%5CSetSinglespace%7B1.1%7D%7C%5CSetSinglespace%7B1.1%7D%5Csinglespacing%0A%5Cbegin%7Bsinglespace%2A%7D+%0AHere+is+some+regular+text.+%5Cblindtext%5B1%5D%0A%5Cend%7Bsinglespace%2A%7D%0A%5Cend%7Bdocument%7D)

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

![عرض توضيحي لأمر LaTeX \SetSinglespace](/files/2661595d15dbd4cc96f86946a5c6dd833a8af28b)

في القسم التالي نستعرض الأوامر `\baselinestretch` و `\linespread`.

#### فهم \baselinestretch و\linespread

يعتمد جزء من تصميم LaTeX للتعامل مع تباعد الأسطر وتغييرات الخط (حجم الخط، عائلة الخط، ترميز الخط، إلخ) على أمرين قد تصادفهما:

* **`\baselinestretch`**: يخزّن هذا الأمر عامل تحجيم يُستخدم لضرب (تحجيم) القيمة الحالية لـ [`\baselineskip`](#baselineskip-tex-primitive). ويُطبَّق هذا التحجيم عادةً عند *في المرة التالية* استخدام أمر اختيار الخط — مثل `\selectfont`. ولتغيير القيمة المخزنة بواسطة `\baselinestretch` عليك كتابة `\renewcommand{\baselinestretch}{*scale*}`
  * **ملاحظة**: إذا كتبت `\renewcommand{\baselinestretch}{*scale*}` في متن المستند، فلن تصبح القيمة الجديدة لـ `\baselinestretch` [سارية المفعول فورًا](https://tex.stackexchange.com/questions/241120/why-does-changing-baselinestretch-not-change-line-spacing): إن القيمة الجديدة لـ `*scale*` يُخزَّن العامل لاستخدامه لاحقًا. وللاستخدام/التطبيق الفوري للقيمة الجديدة لـ`*scale*` ، اكتب `\selectfont` كما هو موضح في [مقتطف الشفرة أدناه](#demonstrating-baselinestretch).
* **`\linespread{*scale*}`**: يمكن استخدامه لتغيير [`\baselineskip`](#baselineskip-tex-primitive) من دون التأثير في حجم الخط الحالي. يعيّن هذا الأمر `\baselinestretch` إلى `*scale*` الذي يغيّر لاحقًا `\baselineskip` إلى `*scale* × [\baselineskip](#baselineskip-tex-primitive)`. غير أن هذا التحجيم لا يحدث أيضًا فورًا إلا إذا كان `\linespread` الأمر مستخدمًا في مقدمة المستند. وإذا `\linespread` استُخدم في متن المستند، فإنه لا يصبح ساريًا إلا بعد استخدام أمر تغيير/اختيار الخط التالي.

استنادًا إلى ما سبق، يمكن استخدام أيٍّ من الآتي:

* `\renewcommand{\baselinestretch}{*scale*}\selectfont` أو،
* `\linespread{*scale*}\selectfont`

يمكن استخدامه لتغيير تباعد الأسطر، وكلاهما سيعمل عبر تغييرات حجم الخط، كما هو موضح في المثال أدناه. لذا، أيهما ينبغي أن تستخدم؟ راجع [هذا النقاش القصير على tex.stackexchange](https://tex.stackexchange.com/a/241121).

**عرض توضيحي لـ \linespread**

يستخدم المثال التالي `\linespread{2.5}` في مقدمة المستند، وهو يغيّر تباعد الأسطر من دون الحاجة إلى أوامر إضافية لاختيار الخط:

```latex
\documentclass{article}
% اختر حجم صفحة صغيرًا ومناسبًا
\usepackage[paperheight=18cm,paperwidth=14cm,textwidth=12cm]{geometry}
% حمّل حزمة blindtext لنص وهمي
\usepackage{blindtext}
% استخدام \linespread في المقدمة يغيّر
% تباعد الأسطر من دون الحاجة إلى
% أوامر اختيار الخط، مثل \selectfont
\linespread{2.5}
\begin{document}
\blindtext[1] % تتأثر الأسطر بـ \linespread{2.5}
\end{document}
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Example+use+of+the+linestretch+command\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%25+Using+%5Clinespread+in+the+preamble+changes+%0A%25+line+spacing+without+requiring+additional%0A%25+font-selection+commands%2C+such+as+%5Cselectfont%0A%5Clinespread%7B2.5%7D+%0A%5Cbegin%7Bdocument%7D%0A%5Cblindtext%5B1%5D+%25+The+lines+are+affected+by+%5Clinespread%7B2.5%7D%0A%5Cend%7Bdocument%7D)

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

![استخدام الأمر linespread](/files/a8f0d4f29e2730e7d3ac34dc65d5b31972ddb5af)

باستخدام `\linespread{2.5}` في متن المستند (بعد `\begin{document}`) *سيؤدي إلى* الحاجة إلى أوامر اختيار الخط لتفعيل تغيير تباعد الأسطر. افتح الشفرة التالية على Overleaf وقارن الناتج بالمثال السابق:

```latex
لأن الأمر \verb|\linespread| التالي مستخدم في متن المستند، يلزم أمر اختيار خط لتغيير تباعد الأسطر. أزِل التعليق عن \verb|\selectfont| لرؤية الفرق:

\linespread{2.5}%\selectfont

% من دون \selectfont تكون أسطر الفقرة التالية
% غير متأثرة بـ \linespread{2.5}:
\blindtext[1]
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Second+example+using+the+linestretch+command\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D14cm%2Ctextwidth%3D12cm%5D%7Bgeometry%7D%0A%25+Load+blindtext+package+for+dummy+text%0A%5Cusepackage%7Bblindtext%7D%0A%5Cbegin%7Bdocument%7D%0ABecause+the+following+%5Cverb%7C%5Clinespread%7C+command+is+used+in+the+document+body%2C+a+font-selection+command+is+required+to+change+the+line+spacing.+Un-comment+%5Cverb%7C%5Cselectfont%7C+to+see+the+difference%3A%0A%0A%5Clinespread%7B2.5%7D%25%5Cselectfont%0A+%0A%25+Without+%5Cselectfont+the+following+paragraph+lines+are+%0A%25+unaffected+affected+by+%5Clinespread%7B2.5%7D%3A+%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bdocument%7D)

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

![استخدام أمر LaTeX \linespread في المستند](/files/094fc193591d1bd5bb918ed2f4739401d94c310a)

**عرض توضيحي لـ \baselinestretch**

يوضح المثال التالي `\baselinestretch` و `\selectfont` لإظهار الأثر/الآثار المقابلة على [`\baselineskip`](#baselineskip-tex-primitive):

```latex
القيمة الافتراضية لـ \verb|\baselineskip|=\the\baselineskip. الآن حدّث \verb|\baselinestretch|\renewcommand\baselinestretch{2.5}. ومع ذلك، على الرغم من أننا نفّذنا

\vspace{5pt}
\verb|\renewcommand\baselinestretch{2.5}|
\vspace{5pt}

\noindent لم يكن له \textit{أي} تأثير بعد: فالقيمة الجديدة لـ \verb|\baselinestretch| محفوظة، لكنها لم تُفعَّل. يمكننا إصدار أمر \verb|\selectfont| لجعل التغيير ساريًا؛ لكن، في الوقت الحالي، تبقى قيمة \verb|\baselineskip| هي \the\baselineskip{} (من دون تغيير).

إذا نفّذنا الآن \verb|\selectfont| فسيصبح التغيير في \verb|\baselinestretch|، مع ضبطه على 2.5، ساريًا الآن --- \selectfont حتى وإن كنا في منتصف فقرة. والآن، قيمة \verb|\baselineskip| هي \the\baselineskip{} (= \(2.5 \times 12=30\mathrm{pt}\)).

ماذا يحدث إذا غيّرنا حجم الخط إلى 14pt و\verb|\baselineskip| إلى 16pt باستخدام الأمرين \verb|\fontsize{14}{16}\selectfont|؟

\fontsize{14}{16}\selectfont الآن، \verb|\baselineskip| ليست \textit{16pt} بل \the\baselineskip{} لأن قيمة \verb|\baselinestretch| (2.5) قد حُفظت وطُبِّقت، مما يعطي \verb|\baselineskip| = \(2.5 \times 16=40\mathrm{pt}\).

\section{\texttt{\bfseries\string\linespread}}
يمكن استخدام الأمر \verb|\linespread| لتعديل \verb|\baselineskip| من دون تغيير حجم الخط.
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Demonstrating+baselinestretch\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D18cm%2Cpaperwidth%3D16cm%2Ctextwidth%3D14cm%5D%7Bgeometry%7D%0A%5Cusepackage%7Bsetspace%7D%0A%5Cbegin%7Bdocument%7D%0AThe+default+value+of+%5Cverb%7C%5Cbaselineskip%7C%3D%5Cthe%5Cbaselineskip.+Now+update+%5Cverb%7C%5Cbaselinestretch%7C%5Crenewcommand%5Cbaselinestretch%7B2.5%7D.+However%2C+although+we+have+executed%0A%0A%5Cvspace%7B5pt%7D%0A%5Cverb%7C%5Crenewcommand%5Cbaselinestretch%7B2.5%7D%7C+%0A%5Cvspace%7B5pt%7D%0A%0A%5Cnoindent+it+%5Ctextit%7Bhas+not%7D+%28yet%29+had+any+effect%3A+the+new+value+of+%5Cverb%7C%5Cbaselinestretch%7C+is+stored%2C+but+not+actioned.+We+can+issue+a+%5Cverb%7C%5Cselectfont%7C+command+to+make+the+change+take+effect%3B+but%2C+for+now%2C+the+value+of+%5Cverb%7C%5Cbaselineskip%7C+is+still+%5Cthe%5Cbaselineskip%7B%7D+%28unchanged%29.+%0A%0AIf+we+now+execute+%5Cverb%7C%5Cselectfont%7C+the+change+to+%5Cverb%7C%5Cbaselinestretch%7C%2C+setting+it+to+2.5%2C+will+now+take+effect---%5Cselectfont+even+though+we+are+in+the+middle+of+a+paragraph.+Now%2C+the+value+of+%5Cverb%7C%5Cbaselineskip%7C+is+%5Cthe%5Cbaselineskip%7B%7D+%28%3D+%5C%282.5+%5Ctimes+12%3D30%5Cmathrm%7Bpt%7D%5C%29%29.%0A%0AWhat+happens+if+we+change+the+font+size+to+14pt+and+%5Cverb%7C%5Cbaselineskip%7C+to+16pt+using+the+commands+%5Cverb%7C%5Cfontsize%7B14%7D%7B16%7D%5Cselectfont%7C%3F+%0A%0A%5Cfontsize%7B14%7D%7B16%7D%5Cselectfont+Now%2C+%5Cverb%7C%5Cbaselineskip%7C+is+%5Ctextit%7Bnot%7D+16pt+but+%5Cthe%5Cbaselineskip%7B%7D+because+the+value+of++%5Cverb%7C%5Cbaselinestretch%7C+%282.5%29+has+been+preserved+and+applied%2C+giving+%5Cverb%7C%5Cbaselineskip%7C+%3D+%5C%282.5+%5Ctimes+16%3D40%5Cmathrm%7Bpt%7D%5C%29.%0A%0A%5Csection%7B%5Ctexttt%7B%5Cbfseries%5Cstring%5Clinespread%7D%7D%0AThe+%5Cverb%7C%5Clinespread%7C+command+can+be+used+to+modify+%5Cverb%7C%5Cbaselineskip%7C+without+changing+the+font+size.%0A%5Cend%7Bdocument%7D)

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

![عرض توضيحي لـ baselinestretch](/files/5b5116c51ed41e0cd75c6eafb6127b9d3f31a4c2)

#### كيف يُعرَّف «تباعد الأسطر» ويُغيَّر في حزمة setspace؟

ال *دقيق* تعريف، و *قياس* إن «تباعد الأسطر» قابل للتأويل، مما قد يؤدي إلى تطبيقات مختلفة داخل أنظمة/تطبيقات البرمجيات. ومن الواضح أن الحزمة `setspace` يجب أن تفترض الحزمة تعريفًا عمليًا لتباعد الأسطر حتى تتمكن من توفير دعم لتنسيق أسطر «بمسافة أحادية» و«بمسافة مزدوجة»، أو أي مضاعف آخر لتباعد الأسطر. ولكن ما المتغيرات التي تعدّلها `setspace` لإنتاج أسطر بمستويات مختلفة من المساحة البيضاء بينها؟

لحسن الحظ، [نقاشات على tex.stackexchange](https://tex.stackexchange.com/a/30106) و [توضح التعليقات في شفرة الحزمة](https://tex.stackexchange.com/a/632830) كيف `setspace` تُنفّذ تباعد الأسطر: إذ تضبط قيمة `\baselineskip` باستخدام مضاعف لحجم نقطة الخط.

**ملاحظات موجزة حول الخطوط وحجم النقطة**

استخدام الخطوط بحجم نقطة معيّن يعني تطبيق *عامل تحجيم* على أشكال المحارف (glyphs) في تلك الخطوط؛ وبعد تحجيمها وفقًا لحجم النقطة، يصبح الحجم الظاهر للمحرف تابعًا لتصميم الخط (typeface). لا توجد علاقة عالمية صارمة بين حجم النقطة وحجم العرض الفعلي لأشكال المحارف داخل الخطوط.

تُظهر الصورة التالية الأحرف الصغيرة «abc» مُنسَّقة باستخدام 4 خطوط مختلفة وجميعها *معروضة بحجم النقطة نفسه*. لاحظ كيف يختلف «حجم» هذه الأحرف الصغيرة وفقًا لتصميم الخط (typeface) رغم أنها كلها منسقة عند *نفس* حجم النقطة:

![خطوط متنوعة عند حجم نقطة واحد](/files/e938e65ed265e7061ddaf2d6a8dde1e22cf47eeb)

#### تباعد أحادي في حزمة setspace

يمكننا استخدام [نقاشات على tex.stackexchange](https://tex.stackexchange.com/a/30106) كأساس لبعض الشروحات الإضافية.

مستند أساسي يستخدم `article` فئة article لها حجم خط نصي افتراضي قدره 10pt مع `\baselineskip` بقيمة 12pt. ومع الخيار \[11pt] أو \[12pt] تستخدم فئة article حجم نص أكبر وقيمة أكبر متناسبة لـ `\baselineskip` كما هو موضح في الجدول التالي:

| خيار              | حجم الخط                    | $$\texttt{\baselineskip}$$ | $$\displaystyle\frac{\texttt{\baselineskip}}{\text{font size}}$$ |
| ----------------- | --------------------------- | -------------------------- | ---------------------------------------------------------------- |
| \[10pt] (افتراضي) | 10pt                        | 12pt                       | 1.2                                                              |
| \[11pt]           | 10.95pt$${}^{\textbf{\*}}$$ | 13.6pt                     | 1.24                                                             |
| \[12pt]           | 12pt                        | 14.5                       | 1.21                                                             |

$${}^{\textbf{\*}}$$السبب في القيمة غير المعتادة لـ `10.95pt`، وليس بالضبط `11pt`، موضح بشكل جميل في هذا [منشور Reddit](https://www.reddit.com/r/LaTeX/comments/ihle9h/why_does_latex_use_1095pt_text_when_the_11pt/).

كما هو موضح في الجدول، لكل توليفة من حجم نقطة النص، وقيمة التباعد الافتراضي المقابلة (أي التباعد الأحادي) لـ `\baselineskip`، تكون النسبة

$$\frac{\texttt{\baselineskip}}{\text{font size}}$$

قريبة من 1.2. وتمثل قيمة هذه النسبة التباعد الأحادي وتوفر الأساس لحسابات تباعد الأسطر التي تستخدمها `setspace` الحزمة.

**فهم وحساب قيم \baselinestretch**

لتحقيق مضاعف معيّن لتباعد الأسطر مثل 1.5 أو 2 أو 3 وما إلى ذلك، يجب على `\baselinestretch` الأمر أن يُضبط على قيم تبدو [«غريبة»](https://tex.stackexchange.com/a/30106)؛ على سبيل المثال عبر [باستخدام `\linespread` الأمر](https://texblog.org/2011/09/30/quick-note-on-line-spacing/). في هذا القسم سنلقي نظرة أقرب على `\baselinestretch` لنرى كيف تنشأ تلك القيم «الغريبة».

لنختر مستندًا بحجم خط افتراضي قدره $$f$$ و `\baselineskip` لـ $$\text{dbls}\_1$$، حيث يشير الرمز السفلي $${}\_1$$ إلى القيمة الافتراضية لـ `\baselineskip` قيمة التباعد الأحادي عند حجم خط $$f$$.

سنقوم ***بتعريف*** التباعد الأحادي على أنه النسبة التالية التي سنشير إليها باسم $$\alpha\_f$$:

$$\frac{\text{dbls}\_1}{f}=\alpha\_f$$

للحجم المعطى للخط $$f$$، فلنقم أيضًا *بتعريف* بتعريف قيم تباعد الأسطر التالية:

* مضاعف 1.5 لتباعد الأسطر هو *مُعرَّف* على أنها

$$\frac{\text{dbls}\_{1.5}}{f}=1.5$$

* مضاعف 2.0 لتباعد الأسطر هو *مُعرَّف* على أنها

$$\frac{\text{dbls}\_{2.0}}{f}=2.0$$

* مضاعف، $$m$$من تباعد الأسطر هو *مُعرَّف* على أنها

$$\frac{\text{dbls}\_{m}}{f}=m$$

وباستخدام التباعد الأحادي الذي عرّفناه بالنسبة $$\alpha\_f$$، يمكننا كتابة «شفرة شبهية» التالية لحساب `\baselinestretch` قيمة تقابل أي مضاعف لتباعد الأسطر $$m$$:

$$\begin{align\*} \texttt{multi spacing } (m) &= \text{a constant } (\lambda) \times \texttt{single spacing}\ \frac{\text{dbls}\_{m}}{f}&=\lambda \times \alpha\_f\ m&=\lambda\alpha\_f\ \lambda&=\frac{m}{\alpha\_f}\kern5pt(\text{refer to }\lambda\text{ as }\texttt{\baselinestretch})\ \implies \texttt{\baselinestretch}&=\frac{m}{\alpha\_f} \end{align\*}$$

لنستخدم `11pt` النص (فعليًا `10.95pt`) و الافتراضي `\baselineskip` قيمة `13.6pt` لحساب `\baselinestretch` لـ *مزدوج* تباعد الأسطر:

$$\begin{align\*} m&=2.0\ \texttt{\baselinestretch}&=\frac{2.0}{\alpha\_f}\ &=\frac{2.0}{\frac{\text{dbls}\_1}{f}}\ &=\frac{2.0}{\frac{13.6}{11}}\ &=2.0 \times \frac{11}{13.6}\ &=1.618\ \end{align\*}$$

يُستخدم مقطع الشيفرة التالي في `setspace` الحزمة لتحقيق `\doublespacing` عندما يكون حجم الخط 11 نقطة. لاحظ كيف أن قيمة `1.618`، كما حُسبت أعلاه، تُخزَّن في الأمر `\baselinestretch`:

```latex
\\newcommand{\\doublespacing}{%
  \\setstretch {1.667}%  افتراضي
  \\ifcase \\@ptsize \\relax % 10 نقطة
    \\setstretch {1.667}%
  \\or % 11 نقطة
    \\setstretch {1.618}%
  \\or % 12 نقطة
    \\setstretch {1.655}%
  \fi
}
```

باستخدام `article` فئة مستند بخيار الخط 11 نقطة، يقارن المثال التالي `\doublespacing` مع `التباعد` بيئة تستخدم القيمة المحسوبة لدينا لـ `1.618` لـ `\baselinestretch`. ليس من المستغرب أن `\baselineskip` القيم متطابقة (`22.00475pt`):

```latex
\begingroup
\doublespacing
\\verb|\\baselineskip|=\\texttt{\\the\\baselineskip} (عبر \\verb|\\doublespacing)|

\blindtext[1]

\endgroup

\\begin{spacing}{1.618}
\\verb|\\baselineskip|=\\texttt{\\the\\baselineskip} (عبر \\verb|\\begin{spacing}{1.618})|

\blindtext[1]
\end{spacing}
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Demonstrating+baselinestretch+calculations\&snip=%5Cdocumentclass%5B11pt%5D%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D25cm%2Cpaperwidth%3D16cm%2Ctextwidth%3D14cm%5D%7Bgeometry%7D%0A%5Cusepackage%7Bsetspace%7D%0A%5Cusepackage%7Bblindtext%7D+%25+For+dummy+text.%0A%5Cbegin%7Bdocument%7D%0A%5Cbegingroup%0A%5Cdoublespacing%0A%5Cverb%7C%5Cbaselineskip%7C%3D%5Ctexttt%7B%5Cthe%5Cbaselineskip%7D+%28via+%5Cverb%7C%5Cdoublespacing%29%7C%0A%0A%5Cblindtext%5B1%5D%0A%0A%5Cendgroup%0A%0A%5Cbegin%7Bspacing%7D%7B1.618%7D%0A%5Cverb%7C%5Cbaselineskip%7C%3D%5Ctexttt%7B%5Cthe%5Cbaselineskip%7D+%28via+%5Cverb%7C%5Cbegin%7Bspacing%7D%7B1.618%7D%29%7C%0A%0A%5Cblindtext%5B1%5D%0A%5Cend%7Bspacing%7D%0A%5Cend%7Bdocument%7D)

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

![عرض توضيحي لـ \\\baselinestretch](/files/094a27051451fd42f4c8c5edf31090a72be05a53)

تنطبق حسابات مماثلة لـ `\baselinestretch` القيم على أحجام الخطوط الأخرى ومجموعات تباعد الأسطر الأخرى، كما هو موضح في الجداول التالية:

![معلمات setspace](/files/87d9662191b0077b885bcfbb9279f962858b18f0)

## استخدام أوامر معلمات TeX/LaTeX

تستكشف الأقسام التالية عددًا من الأوامر المتعلقة بتباعد/تنسيق الفقرات: بعض تلك الأوامر هي *المضمنة في* محركات تنضيد TeX، وبعضها الآخر ماكروات TeX/LaTeX. تُعرف الأوامر المدمجة في محركات TeX باسم *البدائيات*، مما يعني أنها *أساسي* و *غير قابلة للاختزال* لأنه، بخلاف الماكروات، لا تُبنى البدائيات من تسلسلات من أوامر أخرى.

وبشكل خاص، سننظر في عدد من البدائيات *أوامر المعاملات* المدعومة من جميع محركات TeX، بما في ذلك pdfTeX وXeTeX وLuaTeX. تُستخدم أوامر المعلمات، سواء كانت متعلقة بالفقرات أم لا، لـ *الحصول على القيمة الحالية* للمعلمة المقابلة، أو *تعيين تلك المعلمة إلى قيمة جديدة*. على سبيل المثال، `\parskip` الأمر، وهو بدائي، يحدد قيمة معلمة تتحكم في مقدار المساحة البيضاء المدرجة بين فقرتين منضدتين.

لـ *الحصول على* (هنا، لتنضيد) القيمة الحالية لـ `\parskip` ستكتب:

```latex
\\the\\parskip
```

لـ *set* القيمة الحالية لـ `\parskip` إلى `1pt plus2pt` (غراء مرن) يمكنك كتابة شيء مثل هذا:

```latex
\\setlength{\\parskip}{1pt plus2pt}
```

كما نناقش بعض أوامر TeX/LaTeX المفيدة *ماكروهات*، وهي أوامر ذات مستوى أعلى مكتوبة ومبنية باستخدام تسلسل من الأوامر المكوِّنة.

### الأوامر المستخدمة لتباعد الفقرات

يمكن استخدام الأوامر التالية (البدائيات والماكروات) للتأثير في تباعد الفقرات. يُستكشف بعضُها بمزيد من التفصيل، ويمكن الوصول إليه باتباع الرابط من اسم الأمر.

#### الأوامر البدائية

* [`**\\parindent**`](#parindent-tex-primitive): مقدار الإزاحة البادئة (المساحة البيضاء) المضافة إلى السطر الأول من الفقرة.
* [`**\\parskip**`](#parskip-tex-primitive): مقدار المساحة البيضاء المرنة («الغراء») الموضوعة بين الفقرات.
* [`**\\rightskip**`](#leftskip-and-rightskip-tex-primitives): تباعد مرن (غراء) يُدرج إلى يمين كل سطر في فقرة.
* [`**\\leftskip**`](#leftskip-and-rightskip-tex-primitives): تباعد مرن (غراء) يُدرج إلى يسار كل سطر في فقرة.
* [`**\\baselineskip**`](#baselineskip-tex-primitive): تؤدي قيمة هذه المعلمة دورين:
  * فهي تحدد المسافة المطلوبة بين خطوط الأساس للنص في الفقرة؛
  * تُستخدم لحساب مقدار المساحة (الغراء) المتغيرة المضافة بين الأسطر من أجل تحقيق المسافة المطلوبة من خط أساس إلى خط أساس ([انظر لاحقًا في المقال](#how-the-space-glue-between-paragraph-lines-is-calculated)).
* [`**\\lineskiplimit**`](#lineskip-and-lineskiplimit-tex-primitives): معلمة تحدد قيمتها الحد الأدنى المقبول للمسافة بين سطرين متجاورين في الفقرة.
* [`**\\lineskip**`](#lineskip-and-lineskiplimit-tex-primitives): مقدار المساحة (الغراء) المدرج بين سطرين في الفقرة إذا كانت القيمة المحسوبة `\baselineskip` للصاق ستؤدي إلى تقارب الأسطر أكثر من اللازم.
* `**\\parfillskip**`: غراء شديد المرونة يُضاف في نهاية السطر الأخير من الفقرة من أجل «ملئه» بالمساحة البيضاء؛ ولرؤية مثال بصري، راجع الرسم التوضيحي في القسم [*تصوّر أنواع أخرى من غراء الفقرات*](#visualizing-other-types-of-paragraph-glue).

#### أوامر الماكرو

غالبًا ما تُستخدم أوامر الماكرو التالية في TeX/LaTeX لتعديل تباعد الفقرات:

* [`**\\offinterlineskip**` و `**\\nointerlineskip**`](#offinterlineskipandnointerlineskip): أوامر يمكن استخدامها لإيقاف حساب وإدراج `\baselineskip` الغراء؛
* [`**\\baselinestretch**`](#understanding-and-calculating-values-for-baselinestretch): أمر يخزن عاملًا عدديًا يُستخدم لحساب قيمة `\baselineskip` عند اختيار خط. وتبلغ قيمته الافتراضية 1؛
* [`**\\linespread**`](#demonstrating-linespread): يمكن استخدام هذا الأمر لتغيير القيمة الحالية لـ `\baselinestretch`.

### التباعد المرن (الغراء)

تُحقِّق محركات TeX تأثيرات التباعد، بما في ذلك داخل الفقرات أو بينها، من خلال استخدام مساحة بيضاء مرنة تُسمى *الغراء* يمكن تمديدها أو تقليصها وفقًا لكمية المساحة المطلوبة. إذا كنت تريد التعرف على مفهوم TeX للغراء، فيمكن العثور على مزيد من التفاصيل في مقالات Overleaf التالية:

* [استكشاف الصناديق الناقصة أو الممتلئة أكثر من اللازم وحسابات السوء](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv)
* [كيف يحسب TeX إعدادات الغراء في \\\hbox](/latex/ar/mqalat-mtamqh/24-how-tex-calculates-glue-settings-in-an-hbox.md)
* [فهم تحذيرات الصناديق الناقصة والممتلئة أكثر من اللازم](/latex/ar/qaadh-almarfh/138-understanding-underfull-and-overfull-box-warnings.md).

## الأساسيات: أوامر المعاملات والأمثلة

في هذا القسم نشرح عددًا من أوامر المعلمات المتعلقة بالفقرات ونقدم أمثلة على استخدامها.

### \\\parindent (بدائية TeX)

يحدد هذا الأمر المعلم مقدار الإزاحة البادئة (المساحة البيضاء) المضافة إلى السطر الأول من الفقرة. ويمكن تغييره باستخدام أمر LaTeX `\setlength` ؛ على سبيل المثال، لجعل إزاحة الفقرات بمقدار `15pt` set `\parindent` إلى `15pt` بكتابة:

```latex
\\setlength{\\parindent}{15pt}
```

لاحظ أن:

* يمكنك تغيير `\parindent` داخل مجموعة، مما يضمن حصر تأثيره في الفقرات ضمن تلك المجموعة؛
* `\parindent` يمكن أن تكون سالبة، مما ينتج عنه «إزاحة خارجية» بدلًا من الإزاحة البادئة؛
* افتراضيًا لا يزحزح LaTeX الفقرة الأولى التي تلي عنوان قسم في المستند (`\section{...}` إلخ).

يوضح المثال التالي استخدام `\parindent`.

```latex
\documentclass{article}
% اختر حجم صفحة صغيرًا ومناسبًا
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% أنشئ أمرًا لتخزين فقرة من النص
\\newcommand{\\testpar}{\\texttt{\\string\\parindent=\\the\\parindent\\ }عندما ينضد \\TeX{} فقرة فإنه يعامل كل حرف على حدة كـ 2D ``صندوق'' بعرض وارتفاع وعمق محددين.\\par}
\begin{document}

% اضبط \\parskip لوضع 10 نقاط بين الفقرات
\\setlength{\\parskip}{10pt}

% اضبط قيمة \\parindent إلى 0pt
\\setlength{\\parindent}{0pt}
\\testpar

% اضبط قيمة \\parindent إلى 10 نقاط
\\setlength{\\parindent}{10pt}
\\testpar

% اضبط \\parindent داخل مجموعة
{\\setlength{\\parindent}{50pt}\\testpar}

% الآن أصبحت \\parindent مرة أخرى 10 نقاط
\\testpar

% نعم، يمكن أن تكون \\parindent سالبة
\\setlength{\\parindent}{-20pt}
\\testpar
\end{document}
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Changing+paragraph+indentation\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D8cm%5D%7Bgeometry%7D%0A%25+Create+a+command+to+hold+a+paragraph+of+text%0A%5Cnewcommand%7B%5Ctestpar%7D%7B%5Ctexttt%7B%5Cstring%5Cparindent%3D%5Cthe%5Cparindent%5C+%7DWhen+%5CTeX%7B%7D+typesets+a+paragraph+it+treats+each+individual+character+as+a+2D+%60%60box%27%27+with+a+specific+width%2C+height+and+depth.%5Cpar%7D%0A%5Cbegin%7Bdocument%7D%0A%0A%25+Set+%5Cparskip+to+put+10pt+between+paragraphs%0A%5Csetlength%7B%5Cparskip%7D%7B10pt%7D%0A%0A%25+Set+the+value+of+%5Cparindent+to+0pt%0A%5Csetlength%7B%5Cparindent%7D%7B0pt%7D%0A%5Ctestpar%0A%0A%25+Set+the+value+of+%5Cparindent+to+10pt%0A%5Csetlength%7B%5Cparindent%7D%7B10pt%7D%0A%5Ctestpar%0A%0A%25+Set+%5Cparindent+in+a+group%0A%7B%5Csetlength%7B%5Cparindent%7D%7B50pt%7D%5Ctestpar%7D%0A%0A%25+Now+%5Cparindent+is+again+10pt%0A%5Ctestpar%0A%0A%25+Yes%2C+you+can+have+a+negative+%5Cparindent%0A%5Csetlength%7B%5Cparindent%7D%7B-20pt%7D%0A%5Ctestpar%0A%5Cend%7Bdocument%7D)

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

![استخدام قيم مختلفة لإزاحة الفقرات في LaTeX](/files/2806c244979e9bf8a125e94b37f5016889211362)

### \\\parskip (بدائية TeX)

يمكن تحسين قابلية قراءة النص بفصل الفقرات بمقدار من المساحة البيضاء يختلف وفقًا لاعتبارات تصميمية جمالية. يتيح TeX/LaTeX للمستخدمين التحكم في هذا التباعد بين الفقرات عبر `\parskip` أمر المعلمة.

* **نصيحة من `parskip` الحزمة**: إن [حزمة parskip](https://ctan.org/pkg/parskip) تنصح بأن تعديل `\parskip` قد «يؤدي إلى مسافات رأسية في أماكن غير متوقعة» (داخل مستند LaTeX). وتحاول حزمة `parskip` معالجة مشكلات التباعد التي قد تنشأ عن تغييرات في قيمة `\parskip`—مثلًا داخل جدول المحتويات وبيئات القوائم. انظر أيضًا إلى قسم الحزمة في هذا المقال [`parskip` قسم الحزمة من هذا المقال](#the-parskip-package).

لتعيين القيمة الحالية لـ `\parskip` استخدم أمر LaTeX `\setlength` ؛ على سبيل المثال، لفصل الفقرات بمقدار 3 نقاط يمكنك كتابة:

```latex
\\setlength{\\parskip}{3pt}
```

يوضح المثال التالي استخدام `\parskip`:

```latex
\documentclass{article}
% اختر حجم صفحة صغيرًا ومناسبًا
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% أنشئ أمرًا لتخزين فقرة من النص
\\newcommand{\\testpar}{\\noindent القيمة الحالية لـ \\texttt{\\string\\parskip} هي \\texttt{\\the\\parskip}. عندما ينضد \\TeX{} فقرة فإنه يعامل كل حرف على حدة كـ 2D~``صندوق'' بعرض وارتفاع وعمق محددين.\\par}
\begin{document}
\\testpar
% اضبط \\parskip إلى 5 نقاط
\\setlength{\\parskip}{5pt}\\testpar
% اضبط parskip إلى 10 نقاط
\\setlength{\\parskip}{10pt}\\testpar
% اضبط \\parskip إلى 25 نقطة (ولكن داخل مجموعة)
{\\setlength{\\parskip}{25pt}\\testpar}
% تنتهي المجموعة، والآن أصبحت \\parskip مرة أخرى 10 نقاط
\\testpar
% نعم، يمكن أن تكون \\parskip سالبة
\\setlength{\\parskip}{-20pt}\\testpar
\end{document}
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Changing+parskip+settings\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D8cm%5D%7Bgeometry%7D%0A%25+Create+a+command+to+hold+a+paragraph+of+text%0A%5Cnewcommand%7B%5Ctestpar%7D%7B%5Cnoindent+The+current+value+of+%5Ctexttt%7B%5Cstring%5Cparskip%7D+is+%5Ctexttt%7B%5Cthe%5Cparskip%7D.+When+%5CTeX%7B%7D+typesets+a+paragraph+it+treats+each+individual+character+as+a+2D%7E%60%60box%27%27+with+a+specific+width%2C+height+and+depth.%5Cpar%7D%0A%5Cbegin%7Bdocument%7D%0A%5Ctestpar%0A%25+Set+%5Cparskip+to+5pt+%0A%5Csetlength%7B%5Cparskip%7D%7B5pt%7D%5Ctestpar%0A%25+Set+parskip+to+10pt%0A%5Csetlength%7B%5Cparskip%7D%7B10pt%7D%5Ctestpar%0A%25+Set+%5Cparskip+to+25pt+%28but+in+a+group%29%0A%7B%5Csetlength%7B%5Cparskip%7D%7B25pt%7D%5Ctestpar%7D%0A%25+Group+ends%2C+now+%5Cparskip+is+again+10pt%0A%5Ctestpar%0A%25+Yes%2C+you+can+have+a+negative+%5Cparskip%0A%5Csetlength%7B%5Cparskip%7D%7B-20pt%7D%5Ctestpar%0A%5Cend%7Bdocument%7D)

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

![عرض استخدام \\\parskip في LaTeX](/files/c273c0f1452fae74c9dc5c21a0958fb98b0b32bd)

#### \\\parskip مرن

تقليديًا، `\parskip` ليس *ثابتة* قيمة، مما سيؤدي إلى نفس مقدار المساحة بين جميع الفقرات. بدلًا من ذلك، `\parskip` يُعرَّف عادةً على أنه «مساحة مرنة» (تُسمى الغراء) تتيح لـTeX تمديد أو تقليص المسافة بين الفقرات، مما يساعد على ملاءمة المحتوى في الصفحة وإيجاد موضع «جيد» لفاصل الصفحة.

لجعل `\parskip` مرنًا، ستكتبه على هيئة مواصفة غراء:

`\\setlength{\\parskip}{*fixed amount* **plus** *amount to stretch* **minus** *amount to shrink*}`

حيث `**زائد**` و `**ناقص**` كنت *الكلمات المفتاحية* تستخدمها TeX/LaTeX لتحديد *مقدار التمدد* أو *مقدار الانكماش* الموجود في مواصفة غراء. يحتوي مقال Overleaf [*استكشاف الصناديق الناقصة أو الممتلئة أكثر من اللازم وحسابات السوء*](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv) على مناقشة أكثر تفصيلًا للغراء.

على سبيل المثال، لتمكين `\parskip` من التراوح بين `3 + 1 = 4 نقاط` و `3 − 1 = 2 نقطة` يمكنك كتابة

```latex
\\setlength{\\parskip}{3pt plus1pt minus1pt}
```

### \\\leftskip و\\\rightskip (بدائيات TeX)

توفّر محركات TeX أمرين للمعلمات يضيفان مساحة (غراء) إلى يسار ويمين كل سطر في الفقرة المنضدة. وكما توحي أسماؤهما:

* `\leftskip` يُدرِج مساحة (غراء) إلى يسار كل سطر في الفقرة؛
* `\rightskip` يُدرِج مساحة (غراء) إلى يمين كل سطر في الفقرة.

تستخدم الأمثلة التالية `\leftskip` و `\rightskip` لتعديل محاذاة الفقرة مباشرةً؛ ومع ذلك... فإن تغييرات محاذاة النص تُنجز عادةً على أفضل وجه عبر بيئات أو حزم LaTeX مناسبة—على سبيل المثال، انظر إلى [مقال Overleaf حول محاذاة النص](/latex/ar/altnsyq/06-text-alignment.md). ورغم أننا نعرض سلوك بعض أوامر المعلمات منخفضة المستوى (البدائية) التي توفرها محركات TeX، فمن المستحسن عمومًا استخدام حزم LaTeX المناسبة كلما أمكن.

#### جعل \\\leftskip ثابتًا و\\\rightskip مرنًا

ينتج المثال التالي فقرتين: الأولى تستخدم القيم الافتراضية في LaTeX لـ `\leftskip` و `\rightskip` وتُنضَّد الفقرة الثانية باستخدام الإعدادات التالية:

```latex
\\leftskip 10pt
\\rightskip 0pt plus 1 fill
```

افتح مشروع Overleaf التالي لرؤية الناتج:

```latex
\documentclass{article}
\\title{مثال ثانٍ على leftskip وrightskip}
% اختر حجم صفحة صغيرًا ومناسبًا
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% اضبط قيمة بعض المعلمات المتعلقة بالفقرات
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % ملف TeX مُولَّد يعرّف الماكروات.
% \\mytextA و\\mytextB، وكل منهما يحتوي على نص فقرة.
% انضد فقرة باستخدام القيم الافتراضية لـ \\leftskip و\\rightskip

\\mytextB

% اضبط \\leftskip و\\rightskip إلى قيم جديدة
\\leftskip 10pt
\\rightskip 0pt plus 1fill
\\vspace{8pt}

% الآن أعد تنضيد الفقرة نفسها
\\mytextB

\end{document}
```

&#x20;افتح هذا المثال كمشروع LaTeX على Overleaf

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

![ضبط غراء \\\leftskip في LaTeX](/files/3cb7ced2b42da0bf67d566591b47a1586e7b780d)

الرسمة التالية نسخة مشروحة من الفقرة الثانية الناتجة من المثال أعلاه. وقد صُممت لتسليط الضوء على وإظهار مقدار `\leftskip` و `\rightskip` من أنواع الغراء المدرجة في أسطر الفقرة، إلى جانب `\parindent` المساحة الخاصة بالسطر الأول:

![ضبط غراء \\\leftskip في LaTeX](/files/cd29491007ea9dec07473ff1d217a6cdb97bed1a)

لاحظ أن `\leftskip` للصاق حجم ثابت (10 نقاط) لكن `\rightskip` تمدد الغراء لتوفير مقدار المساحة البيضاء المطلوبة لملء الجانب الأيمن من كل سطر. وتعود هذه «المرونة» إلى مواصفة `\rightskip` التي تحتوي على `زائد 1 fill`—مما يوفر شكلًا من الغراء «القابل للتمدد إلى ما لا نهاية».

#### جعل \\\rightskip ثابتًا و\\\leftskip مرنًا

ينتج المثال التالي فقرتين: الأولى تستخدم القيم الافتراضية في LaTeX لـ `\leftskip` و `\rightskip` وتُنضَّد الفقرة الثانية باستخدام الإعدادات التالية:

```latex
\\leftskip 0pt plus 1 fill
\\rightskip 10pt
```

افتح مشروع Overleaf التالي لرؤية الناتج:

```latex
\documentclass{article}
\\title{أمثلة على leftskip وrightskip}
% اختر حجم صفحة صغيرًا ومناسبًا
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% اضبط قيمة بعض المعلمات المتعلقة بالفقرات
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % ملف TeX مُولَّد يعرّف الماكروات.
% \\mytextA و\\mytextB، وكل منهما يحتوي على نص فقرة.
% انضد فقرة باستخدام القيم الافتراضية لـ \\leftskip و\\rightskip

\\mytextB

% اضبط \\leftskip و\\rightskip إلى قيم جديدة
\\rightskip 10pt
\\leftskip 0pt plus 1fill
\\vspace{8pt}

% الآن أعد تنضيد الفقرة نفسها
\\mytextB

\end{document}
```

&#x20;افتح هذا المثال كمشروع LaTeX على Overleaf

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

![ضبط غراء \\\rightskip في LaTeX](/files/0c25584b4bafad9ae51b65bab1a0c28f4fba888f)

الرسمة التالية نسخة مشروحة من الفقرة الثانية الناتجة من المثال أعلاه. وقد صُممت لتسليط الضوء على وإظهار مقدار `\leftskip` و `\rightskip` من أنواع الغراء المدرجة في أسطر الفقرة، إلى جانب `\parindent` المساحة الخاصة بالسطر الأول:

![ضبط غراء \\\rightskip في LaTeX](/files/cfd2e0f91e80b849e5ee57f6ded350687a7db31f)

لاحظ أن `\rightskip` للصاق حجم ثابت (10 نقاط) لكن `\leftskip` تمدد الغراء لتوفير مقدار المساحة البيضاء المطلوبة لملء الجانب الأيسر من كل سطر. وتعود هذه «المرونة» إلى مواصفة `\leftskip` التي تحتوي على `زائد 1 fill`—مما يوفر شكلًا من الغراء «القابل للتمدد إلى ما لا نهاية».

#### ضبط \\\leftskip و\\\rightskip على قيم مرنة

ينتج المثال التالي فقرتين: الأولى تستخدم القيم الافتراضية في LaTeX لـ `\leftskip` و `\rightskip` ويستخدم الثاني إعدادات الغراء المرنة التالية:

```latex
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
```

تؤدي هذه الإعدادات إلى توسيط أسطر الفقرة:

```latex
\documentclass{article}
\\title{أمثلة على leftskip وrightskip}
% اختر حجم صفحة صغيرًا ومناسبًا
\\usepackage[paperheight==16cm,paperwidth==12cm,textwidth=8cm]{geometry}
% اضبط قيمة بعض المعلمات المتعلقة بالفقرات
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % ملف TeX مُولَّد يعرّف الماكروات.
% \\mytextA و\\mytextB اللتان تعرّفان نص فقرتين
% انضد فقرة باستخدام القيم الافتراضية لـ \\leftskip و\\rightskip

\\mytextB

% اضبط \\leftskip و\\rightskip على إعدادات غراء «مرنة للغاية»
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
\\vspace{20pt}

% الآن أعد تنضيد الفقرة نفسها
\\mytextB

\end{document}
```

&#x20;افتح هذا المثال كمشروع LaTeX على Overleaf

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

![مثال يوضح \\\leftskip و\\\rightskip](/files/ce787725b79e1feca899c345897fdb0bc5c2f437)

الرسمة التالية نسخة مشروحة من الفقرة الثانية الناتجة من المثال أعلاه. وقد صُممت لتسليط الضوء على وإظهار مقدار `\leftskip` و `\rightskip` من أنواع الغراء المدرجة في أسطر الفقرة، إلى جانب `\parindent` المساحة الخاصة بالسطر الأول:

![مثال يوضح \\\leftskip و\\\rightskip](/files/3782709468e712415084087837b6f40343ca5c27)

لاحظ أن كلا `\leftskip` و `\rightskip` محددان على أنهما `0pt plus 1fill` مما يجعلهما «قابلين للتمدد إلى ما لا نهاية» بالتساوي؛ وبالتالي يتمددان بالمقدار نفسه، مما يؤدي إلى توسيط الأسطر المنضدة.

#### ضبط \\\leftskip و\\\rightskip داخل مجموعة

يوضح المثال التالي كيفية إجراء تغييرات مؤقتة على `\leftskip` و `\rightskip` من خلال إحاطتها داخل مجموعة. وفي مثالنا، تُنشأ المجموعة بواسطة `\begingroup`... `\endgroup`، كما هو موضح في مقطع الشيفرة التالي:

```latex
\begingroup
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
\\mytextB
\endgroup
```

تُنضَّد الفقرة الأولى باستخدام غراء «مرن للغاية» لـ `\leftskip` و `\rightskip`:

```latex
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
```

لكن الفقرة الثانية تستخدم القيم الافتراضية في LaTeX:

```latex
\documentclass{article}
\\title{مثال آخر على leftskip وrightskip}
% اختر حجم صفحة صغيرًا ومناسبًا
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% اضبط قيمة بعض المعلمات المتعلقة بالفقرات
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % ملف TeX مُولَّد يعرّف الماكروات.
% \\mytextA و\\mytextB اللتان تعرّفان نص فقرتين
% هنا نغيّر \\leftskip و\\rightskip إلى إعدادات غراء «مرنة للغاية»
% داخل مجموعة تُنشأ بواسطة \\begingroup ... \\endgroup

\begingroup
\\leftskip 0pt plus 1fill
\\rightskip 0pt plus 1fill
\\mytextB
\endgroup

% الآن أعد تنضيد الفقرة نفسها بعد إغلاق المجموعة
% مما يجعل \\leftskip و\\rightskip يعودان إلى قيمهما السابقة

\\vspace{20pt}
\\mytextB

\end{document}
```

&#x20;افتح هذا المثال كمشروع LaTeX على Overleaf

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

![استخدام \\\leftskip و\\\rightskip داخل مجموعة](/files/87d54653654bb86e8aab3b8c25da14bfa34a0052)

**ملاحظة**: إعدادات (تأثيرات) `\leftskip` و `\rightskip` مقيدة بالفقرة داخل المجموعة التي أنشأها `\begingroup`... `\endgroup`. بعد إغلاق المجموعة، تُنضَّد الفقرة التالية باستخدام القيم الافتراضية في LaTeX لـ `\leftskip` و `\rightskip`.

### \\\baselineskip (بدائية TeX)

من الممارسات الطباعية المتعارف عليها عمومًا أن تكون أسطر النص داخل الفقرات متساوية التباعد، إلا عندما تحتوي بعض الأسطر على عناصر كبيرة، مثل المعادلات أو الصور، مما يجعل من المستحيل الحفاظ على تباعد ثابت بين الأسطر لتلك الأسطر.

يوفر TeX/LaTeX أوامر وآليات تتيح للمستخدمين قدرًا من التحكم في التباعد بين الأسطر. ومن هذه الأوامر `\baselineskip` الذي يجلب، أو يضبط، قيمة معلمة تحدد التباعد المفضل بين الأسطر (المسافة من خط أساس إلى خط أساس) في فقرة منضدة.

لتنضيد القيمة الحالية لـ `\baselineskip` يمكنك كتابة

```latex
\\the\\baselineskip
```

لضبط `\baselineskip` إلى قيمة `القيمة` (طول في LaTeX مثل `pt`) يمكنك كتابة

```latex
\\setlength{\\baselineskip}{value}
```

على سبيل المثال، لضبط `\baselineskip` إلى `12pt` يمكنك كتابة

```latex
\\setlength{\\baselineskip}{12pt}
```

يمكننا توضيح دور `\baselineskip` باستخدام الفقرة التالية (النموذجية):

![فقرة LaTeX مثال](/files/ed208766ed7262b33fbdd1e71fdf6996df07e07d)

وإضافة تعليقات توضيحية تُظهر المسافة من خط أساس إلى خط أساس التي يتحكم فيها `\baselineskip`:

![فقرة LaTeX مثال مع تعليقات توضيحية لإظهار مسافات خطوط الأساس](/files/881c11e4a3c4dee8f6a905ff08e676442a514032)

يوضح الرسم أيضًا «غراء» التباعد بين الأسطر: مقدارًا محسوبًا من المساحة البيضاء المضافة بين الأسطر—وسنناقش ذلك بمزيد من التفصيل لاحقًا في المقال.

#### \\\baselineskip ومعلمات أخرى

`\baselineskip` هي واحدة من أربع معلمات أساسية تتحكم في مقدار المساحة المدرجة بين أسطر الفقرة؛ أما المعلمات الأخرى فهي:

* `\lineskip`
* `\lineskiplimit`
* `\prevdepth`

لاحقًا في المقال سنستكشف [*كيف تُستخدم هذه المعلمات الأربع*](#paragraph-structure-and-line-space-calculations) لحساب قيم غراء التباعد بين الأسطر.

#### مثال على \\\baselineskip (مساحة ثابتة)

يفتح المثال التالي في Overleaf لإنشاء مشروع يحتوي على ملف يسمى `text.tex` الذي يعرّف الأوامر `\\mytextA` و `\\mytextB`—كلا الأمرين ينضدان فقرة. ولتسهيل الأمر، يستخدم مشروع Overleaf حجم صفحة صغيرًا لأن ذلك يساعد على إعداد الرسومات والصور لصفحة المساعدة هذه.

```latex
\documentclass{article}
\\title{عرض baselineskip}
% اختر حجم صفحة صغيرًا ومناسبًا
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% اضبط قيمة بعض المعلمات المتعلقة بالفقرات (سنناقش هذه لاحقًا)
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
% اضبط قيمة \\baselineskip—غيّر القيمة لرؤية التأثير
\\setlength{\\baselineskip}{12pt}

\begin{document}
\\input text.tex % ملف TeX مُولَّد يعرّف الماكروات.
% \\mytextA و\\mytextB، وكلاهما ينضد فقرة

% أولًا، انضد فقرتين باستخدام \\baselineskip الافتراضي
\\mytextA\\mytextB

% الآن غيّر \\baselineskip إلى قيمة أكبر وانضد
% فقرة أخرى
\\setlength{\\baselineskip}{24pt}
\\mytextA

\end{document}
```

&#x20;افتح هذا المثال كمشروع LaTeX على Overleaf

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

![استكشاف baselineskip في TeX أو LaTeX](/files/eb846e7b8e88b0448393bfc036cdace88f858f2f)

الفقرة في الصفحة 2 تحتوي على أسطر متباعدة على نطاق واسع لأن `\baselineskip` تم ضبطه على 24 نقطة.

#### مثال على \\\baselineskip (مساحة مرنة)

يحدد المثال التالي `\baselineskip` قيمة ذات مكوّن تمدد مرن للغاية (يُسمى «لا نهائيًا»):

```latex
\\baselineskip=12pt plus1fil
```

وبسبب هذه المرونة، يمكن للمساحة البيضاء بين أسطر الفقرات أن تتمدد بأي مقدار مطلوب لملء الصفحة. وقد تؤدي هذه المرونة إلى أن تحتوي الفقرات على مقادير مختلفة جدًا من المساحة بين أسطر النص المكوِّنة لها، وهو ما قد لا يكون جميلًا من الناحية الجمالية أو سهل القراءة.

```latex
\documentclass{article}
\usepackage{blindtext}
\\title{عرض توضيحي مرن لـ \\texttt{\\string\\baselineskip}}
\author{Overleaf}
\\date{يناير 2022}

\begin{document}

\maketitle
سنزوّد \\verb|\\baselineskip| بمكوّن «تمدد» مرن جدًا عبر إسناد القيمة \\texttt{12pt plus1fil}: \\verb|\\baselineskip=12pt plus1fil|.\\baselineskip=12pt plus1fil
\section{Introduction}
أضف فقرة ستتمدد الآن لملء الصفحة. \\blindtext

\end{document}
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=Flexible+baselineskip+demo\&snip=%5Cdocumentclass%7Barticle%7D%0A%5Cusepackage%7Bblindtext%7D%0A%5Ctitle%7BFlexible+%5Ctexttt%7B%5Cstring%5Cbaselineskip%7D+demo%7D%0A%5Cauthor%7BOverleaf%7D%0A%5Cdate%7BJanuary+2022%7D%0A%0A%5Cbegin%7Bdocument%7D%0A%0A%5Cmaketitle%0AWe%E2%80%99ll+provide+%5Cverb%7C%5Cbaselineskip%7C+with+a+very+flexible+%60%60stretch%27%27+component+by+assigning+the+value+%5Ctexttt%7B12pt+plus1fil%7D%3A+%5Cverb%7C%5Cbaselineskip%3D12pt+plus1fil%7C.%5Cbaselineskip%3D12pt+plus1fil+%0A%5Csection%7BIntroduction%7D%0AAdd+a+paragraph+that+will+now+stretch+to+fill+the+page.+%5Cblindtext%0A%0A%5Cend%7Bdocument%7D)

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

![عرض غراء baselineskip بمرونة لا نهائية](/files/9a5d84b79c62229db7750f3973fb55b19bde30be)

**بعض الملاحظات حول الغراء**

بعض الملاحظات التالية مأخوذة من مقال Overleaf [استكشاف الصناديق الناقصة الامتلاء أو المفرطة الامتلاء وحسابات السوء](https://www.overleaf.com/latex/examples/exploring-underfull-or-overfull-boxes-and-badness-calculations/wpfsjnbkrfhv)، مُعاد إنتاجه هنا للتسهيل.

المسافة البيضاء التي يدرجها TeX بين أسطر الفقرة، `\baselineskip`، هي شكل من أشكال التباعد المرن يُسمّى *الغراء*. يمكن تحديد قيمة المادة المرنة بثلاثة مكوّنات:

* a *ثابتة* الكمية؛
* مقدار يمكنه *التمدد*;
* مقدار يمكنه *الانكماش*,

وبالتالي، فإن `\baselineskip` يمكن تحديد القيمة على هذا النحو:

`\baselineskip`=*مقدار ثابت* **مع** *مقدار التمدد* **ناقص** *مقدار الانكماش*

حيث

* **مع** و **ناقص** هي كلمات مفتاحية تفهمها محركات TeX؛
* *مقدار ثابت* يُشار إليه بأنه *المكوّن العادي* من المادة المرنة (ويُسمّى أيضًا الـ *العرض الطبيعي* من المادة المرنة);
* *مقدار التمدد* يُشار إليه بأنه *مكوّن التمدد* من المادة المرنة؛
* *مقدار الانكماش* يُشار إليه بأنه *مكوّن الانكماش* من المادة المرنة.

ال *مقدار ثابت* مطلوب لكل قيم المادة المرنة لكن *مقدار التمدد* و *مقدار الانكماش* كلاهما اختياريان—إذا كان أحدهما أو كلاهما مفقودين، فتُضبط قيمتهما على 0.

عادةً، `\baselineskip` تُحدَّد المادة المرنة باستخدام *مقدار ثابت* فقط، تكون مكوّنا التمدد والانكماش صفراً، وإلا لكانت أسطر الفقرة ذات تباعد غير منتظم (متغيّر)، وهو ما قد لا يكون جميلًا من الناحية الجمالية.

### \offinterlineskip و \nointerlineskip (ماكروات)

غالبًا ما تُستخدم هذه الماكروات لمنع إدراج مادة مرنة بين أسطر الفقرة. يمكن للقراء المهتمين بالمزيد من التفاصيل الانتقال مباشرةً إلى الأقسام ذات الصلة من المقال التي تشرح كيفية عمل هذه الماكروات.

* **`\offinterlineskip`**: انظر قسم المقال [*مادة مرنة بين الأسطر بحجم صفري: \offinterlineskip*](#zero-sized-interline-glue-offinterlineskip).
* **`\nointerlineskip`**: انظر قسم المقال [*منع المادة المرنة بين الأسطر: \prevdepth و \nointerlineskip*](#preventing-interline-glue-prevdepth-and-nointerlineskip).

## بنية الفقرة وحسابات تباعد الأسطر

باستخدام إمكانات LuaTeX، يمكن [معالجة فقرة مُصفَّفة بعديًا](https://www.overleaf.com/latex/examples/luatex-parsing-typeset-paragraphs/mzbpwxtjshsj) لإظهار حدود الأحرف المكوِّنة (glyphs) والأسطر والمواد المرنة التي تُبنى منها. سنبدأ بسلسلة قصيرة من الرسومات للمساعدة في تصور نموذج «الصناديق والمادة المرنة» الذي تستخدمه محركات TeX في تنضيد النص الموجود داخل الفقرة.

### بنية الفقرة

عندما يقوم TeX بتنضيد فقرة، فإنه يعامل الأحرف الفردية على أنها صناديق مصغّرة، لكل منها عرضه وارتفاعه وعمقه الخاص، وتُستخدم عروض تلك الصناديق الأحرف لحساب المواقع المثلى لفواصل الأسطر. بالإضافة إلى ذلك، تُحوَّل أحرف المسافة الموجودة داخل النص، والمستخدمة لفصل الكلمات الفردية، إلى شكل من أشكال الفراغ المرن (glue) الذي يوفر التباعد اللازم لتحقيق كل فاصل سطر.

تُظهر السلسلة التالية المكوّنة من 7 رسومات المكوّنات الأساسية لفقرة مُصفَّفة: أنواعًا مختلفة من الصناديق والمادة المرنة. تُظهر الرسمة الأولى فقرة مُصفَّفة مع نسخة مشروحة تُبرز عناصر مختلفة داخل الفقرة. ومع ذلك، تحتوي الفقرة المشروحة على قدر كبير من المعلومات، لذا تعزل الرسومات اللاحقة مكوّنات مختلفة لجعلها، على أمل، أسهل للفهم.

![Paragraphanatomy1b.png](/files/f4be9ce1ba9ef946807abdcd14ca29deb1a3ad2e)

* تُظهر الرسمة التالية أسطر الفقرة على هيئة صناديق رمادية تفصل بينها مادة مرنة مُمثَّلة بشرائط خضراء أفقية. تُحسب تلك المادة المرنة لضمان أن تكون المسافة من خط الأساس إلى خط الأساس مساويةً لـ (أي قيمة) `\baselineskip`:

![Paragraphanatomy2b.png](/files/135592da4744e48f4b05abf849d89d280cabf074)

* تُصوِّر الصورة التالية الأحرف المُصفَّفة على هيئة صناديق: لتوضيح كيفية معالجة محركات TeX للأحرف بغرض إنتاج فواصل الأسطر:

![Paragraphanatomy3.png](/files/24041742f8b51726d0588173f48ae53e116fa135)

* تُظهر الصورة التالية صناديق داخل صناديق: أسطر الفقرة الأكبر (صناديق) التي تحتوي صناديق أصغر (أحرفًا فردية):

![Paragraphanatomy5.png](/files/c913012727f2ca7d505ae296e2a83f431d4a6981)

* تُظهر الصورة التالية مقدار المسافة بين الكلمات في كل سطر: تُنتَج هذه المسافات بين الكلمات بتحويل أحرف المسافة إلى مواد مرنة قابلة للتمدد أو الانكماش لإنتاج الطول الصحيح لكل سطر من النص. لاحظ بعناية أن حجم هذه المسافات يختلف من سطر إلى سطر:

![Paragraphanatomy4.png](/files/22d696b9dc7a1bd8f7d2850563061cccf32c1304)

* تجمع الصورة التالية صناديق الأحرف والمواد المرنة المقابلة (المسافات) الموضوعة بين الكلمات الفردية:

![Paragraphanatomy6.png](/files/3dce3f456c4c7362d5b3f0e261a14c55d61468ef)

### تصوّر أنواع أخرى من غراء الفقرات

كما جرى تنضيد الفقرات التالية ومعالجتها باستخدام LuaTeX لإظهار أنواع أخرى من المادة المرنة داخل فقرتين وبينهما. لاحظ أن `\rightskip` و `\leftskip` كلاهما مضبوطان على 0pt، لذلك لا يظهران:

* **`\parskip`** مادة مرنة (أزرق فاتح) موضوعة بين الفقرتين المنضدتين؛
* تفصل بين الكلمات الفردية ***مادة مرنة بين الكلمات*** (بالأصفر) أُنشئت بتحويل أحرف المسافة في الإدخال إلى فراغ مرن ذي حجم متغيّر (glue) في المخرجات المنضدة. تُمدَّد المادة المرنة الناتجة عن الفراغات بين الكلمات أو تُضغط لتحقيق فواصل أسطر جميلة بصريًا؛
* **`\baselineskip`** مادة مرنة (أخضر فاتح) موضوعة بين الأسطر—الكمية الدقيقة من `\baselineskip` المادة المرنة تُحسب باستخدام الآلية الموضحة أدناه؛
* **`\lineskip`** مادة مرنة (حمراء) مستخدمة في الفقرة الثانية—بسبب الصندوق المنخفض الموجود في السطر قبل الأخير؛
* **`\parfillskip`** مادة مرنة (أخضر داكن) موضوعة في نهاية السطر الأخير في كل فقرة.

![](/files/7ec43f66ff2730401a0f2ebde50fce260d248554)

### التعامل مع الأسطر الأعمق (أو الأطول) (الصناديق)

كما تُظهر الرسومات في [القسم السابق](#paragraph-structure)، فإن الفقرة المُصفَّفة هي رصّة عمودية من «الصناديق»، تفصل بينها بعض المسافة البيضاء، والتي يسميها TeX «glue». ومع معالجة الفقرة وتكديس الأسطر الفردية (الصناديق)، تنمو القائمة العمودية (الرصّة) في *اتجاهٍ هابط* باتجاه أسفل الصفحة. وعلى الرغم من أن TeX/LaTeX يحاولان ضمان تكديس أسطر الفقرة مع فصل خطوط الأساس بمسافة ثابتة مقدارها `\baselineskip`، فإن تحقيق ذلك ليس ممكنًا دائمًا لأن بعض الأسطر قد يكون لها ارتفاع أو عمق أكبر من المعتاد.

يُحدَّد ارتفاع وعمق كل سطر من الفقرة بأقصى مسافة يمتد بها محتوى ذلك السطر فوق خط الأساس أو تحته؛ وبالتالي، فإن الفقرات التي تحتوي على مواد ذات ارتفاع أو عمق كبير نسبيًا، مثل الرياضيات داخل السطر أو الرسومات، من المرجح أن تنتج أسطرًا فردية ذات ارتفاعات و/أو أعماق كبيرة بما يتناسب. بالنسبة لمثل هذه الأسطر، قد يعجز TeX/LaTeX عن تكديسها بحيث تفصل بين خطوط أساسها وبين الأسطر الأخرى مسافة `\baselineskip` الكمية *بحساب* مقدار مناسب من المسافة لإدراجه بين كل زوج من الأسطر المتأثرة بالارتفاعات و/أو الأعماق الكبيرة.

#### \lineskip و \lineskiplimit (بدائيات TeX)

تتضمن آلية الاحتياط تلك أوامر المعلمات `\lineskip` و `\lineskiplimit` إلى جانب معلمة ثالثة تُسمّى `\prevdepth`. يمكن للقراء المهتمين بمزيد من التفاصيل الانتقال إلى قسم المقال [*كيف تُحسب المسافة (المادة المرنة) بين أسطر الفقرة*](#how-the-space-glue-between-paragraph-lines-is-calculated).

يقوم مشروع المثال أدناه بتنضيد فقرة واحدة يكون سطرها الأخير ذا عمق كبير نسبيًا بسبب صندوق نص مُزاح (`\hbox`). تُنضَّد الفقرة باستخدام هذه الإعدادات:

```latex
\\setlength{\\baselineskip}{12pt}
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
```

استخدم الرابط أسفل الشيفرة التالية لفتح مشروع Overleaf:

```latex
\documentclass{article}
% استخدم حجم صفحة صغيرًا ومناسبًا
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
% اضبط بعض المعلمات المهمة
\\setlength{\\baselineskip}{12pt}
\\setlength{\\lineskip}{3.5pt}
\\setlength{\\lineskiplimit}{2pt}
\\setlength{\\parindent}{20pt}
% ملف الإدخال الذي يعرّف \testpar
\input testpar.tex
\title{فقرة نموذجية لـ lineskip}
\begin{document}
\testpar % ماكرو أُنشئ في مشروع Overleaf
\end{document}
```

&#x20;[افتح هذا المثال في Overleaf.](https://www.overleaf.com/docs?engine=\&snip_name\[]=main.tex\&snip\[]=%5Cdocumentclass%7Barticle%7D%0A%25+Use+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D8cm%5D%7Bgeometry%7D%0A%25+Set+some+important+parameters%0A%5Csetlength%7B%5Cbaselineskip%7D%7B12pt%7D%0A%5Csetlength%7B%5Clineskip%7D%7B3.5pt%7D%0A%5Csetlength%7B%5Clineskiplimit%7D%7B2pt%7D%0A%5Csetlength%7B%5Cparindent%7D%7B20pt%7D%0A%25+Input+file+defining+%5Ctestpar+%0A%5Cinput+testpar.tex%0A%5Ctitle%7BA+sample+paragraph+for+lineskip%7D%0A%5Cbegin%7Bdocument%7D%0A%5Ctestpar+%25+A+macro+created+in+the+Overleaf+project%0A%5Cend%7Bdocument%7D\&snip_name\[]=testpar.tex\&snip\[]=%5Cnewcommand%7B%5Ctestpar%7D%7B%5CTeX%7B%7D+uses+the+name+%60%60glue%27%27+to+describe+%60%60flexible+white+space%27%27+used+to+separate+any+typeset+item+which+can+appear+on+the+page.+For+example%2C+individual+words%2C+and+whole+lines%2C+within+a+typeset+paragraph+are+seperated+by+%60%60glue%27%27.+%5CTeX%7B%7D+engines+identify+%28give+a+name+to%29+different+types+of+glue+according+to+where+it+is+being+used.+For+example%2C+each+line+is+separated+by+%5Ctexttt%7B%5Cstring%5Cbaselineskip%7D+glue+or%2C+occasionally%2C+%5Ctexttt%7B%5Cstring%5Clineskip%7D+glue%2C+depending+on+%5CTeX%27s+calculations.+Let%27s+trigger+use+of+%5Ctexttt%7B%5Cstring%5Clineskip%7D+glue+by+adding+an+%5Ctexttt%7B%5Cstring%5Chbox%7D+which+has+a+large+depth+due+to+the+%5Ctexttt%7B%5Cstring%5Clower%7D+command%3B+for+example%2C+the+box%0A+%5Clower5pt%5Chbox%7BLOW+BOX%7D+will+cause+%5CTeX%7B%7D+to+insert+%5Ctexttt%7B%5Cstring%5Clineskip%7D+glue+instead+of+%5Ctexttt%7B%5Cstring%5Cbaselineskip%7D+glue.%5Cpar%7D\&main_document=main.tex)

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

![مثال يوضح مادة \lineskip المرنة](/files/45be48958eee5fb640444390a7a4881f0be0d8d6)

تستخدم الرسمة التالية نسخة مشروحة من الفقرة الناتجة عن مشروع Overleaf السابق. هنا نكبير الصورة للتركيز على السطر الأخير من الفقرة، موضحين استخدام `\lineskip` المادة المرنة (المبيّنة بالأحمر) الناتجة عن عمق صندوق النص المُزاح:

![صورة تُظهر مادة \lineskip المرنة في TeX](/files/ab9b88754c9e94c998d984ad7bfa4af1c753be12)

يحمل السطر الأخير من نص الفقرة عمقًا أكبر من المعتاد، مما يمنع TeX من الحفاظ على المسافة الثابتة بين خطوط الأساس المحددة بقيمة `\baselineskip` (12pt). وكما تشير الأسهم في الجانب الأيمن من الرسم، يحاول TeX/LaTeX ضمان مسافة ثابتة (12pt) بين أزواج الأسطر—قيمة `\baselineskip`. ومع ذلك، بالنسبة لآخر زوج من الأسطر فصل TeX بينهما بمقدار أكبر من 12pt ويستخدم قيمة `\lineskip` كمادة مرنة بين الأسطر بدلًا من قيمة محسوبة باستخدام `\baselineskip`.

تستكشف الأقسام التالية وتشرح تفاصيل حسابات TeX لقيم المادة المرنة بين الأسطر.

### كيف تُحسب المسافة (المادة المرنة) بين أسطر الفقرة

ولأغراضنا الحالية سنقوم *بإيجاز شديد* بالإشارة إلى عملية بناء الصفحة في TeX، وإن كان ذلك بطريقة مبسطة للغاية! بمجرد أن ينتهي TeX من تنضيد فقرة، عبر إكمال الوصلات وتحديد فواصل الأسطر، يمكن اعتبار بيانات تلك الفقرة مخزنة في موقع ذاكرة مؤقت. ثم يحتاج TeX إلى نقل بيانات الفقرة تلك، سطرًا بسطر، إلى موقع ذاكرة جديد يخزن المواد المخصصة لصفحة الإخراج الحالية.

عندما ينقل TeX بيانات الفقرة، سطرًا بسطر، فإنه في الواقع يبني رصّة عمودية من الأسطر (صناديق TeX) تنمو *اتجاهٍ هابط* باتجاه أسفل الصفحة. ومع نقل أسطر الفقرة إلى الصفحة الحالية، يحاول TeX التأكد من أن تلك الأسطر ستكون متباعدة بالتساوي، مع تباعد عمودي متسق (من خط أساس إلى خط أساس) يساوي قيمة `\baselineskip`. *العمق* لأنه سيُستخدم لحساب مقدار المادة المرنة بين الأسطر (المسافة البيضاء) بين ذلك السطر والسطر الموضوع بعده.

#### حسابات حجم المادة المرنة

لنبدأ بتلخيص ميزات التباعد بين الأسطر التي توفرها محركات TeX:

* الحفاظ على مسافة ثابتة بين خطوط الأساس، مسافة تساوي `\baselineskip`;
* توفير تباعد لأي أسطر ذات ارتفاع أو عمق كبير نسبيًا؛
* إمكانية إيقاف إدراج المادة المرنة بين الأسطر—إما تلقائيًا أو تحت تحكم المستخدم. على سبيل المثال:
  * تعطّل محركات TeX تلقائيًا إدراج المادة المرنة بين الأسطر بعد وجود rule في النمط العمودي؛
  * الماكروات `\offinterlineskip` و `\nointerlineskip` للمستخدمين بإيقاف إدراج المادة المرنة بين الأسطر مؤقتًا—وتلك الماكروات لها تأثيرات مختلفة، كما سنرى أدناه.

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

* هل ينبغي إضافة مادة مرنة بين الأسطر؟ يقرر TeX ذلك باختبار ما إذا كان *عمق آخر سطر أُضيف* إلى القائمة أقل من القيمة الخاصة `–1000pt` (نقاط). لاحظ أن `–1000pt` هي قيمة «حارسة» اعتباطية تستخدمها محركات TeX داخليًا.
  * **ملاحظة**: قيمة «عمق آخر سطر أُضيف»، التي يسجلها TeX داخليًا، تُعرف أيضًا باسم «العمق السابق». توفر محركات TeX أمر المعلمة `\prevdepth`—والذي يمكن، في ظروف معينة، استخدامه لـ *الحصول على* أو *set* قيمة «العمق السابق». ويستخدم الماكرو `\nointerlineskip` يستفيد من `\prevdepth`.
* يختبر TeX ما إذا كان `عمق السطر السابق أكبر من –1000pt`?
  * ***نعم، هو كذلك*** (يلزم إضافة مادة مرنة):
    * احسب القيمة Δ، حيث Δ = \baselineskip – (عمق السطر السابق) – (ارتفاع السطر الحالي)
    * قارن Δ بقيمة `\lineskiplimit`، وهي معلمة تُستخدم لتحديد الحد الأدنى للمسافة المقبولة بين سطرين، كما تُقاس بالمسافة بين أسفل السطر العلوي وأعلى السطر السفلي.
    * إذا كانت Δ < `\lineskiplimit`:
      * فإن السطرين متقاربان جدًا، لذا أدرج أقل تباعد مقبول وهو `\lineskip`
    * إذا كانت Δ >= `\lineskiplimit`:
      * فإن السطرين ليسا متقاربين جدًا، لذا استخدم Δ كمقدار المادة المرنة المراد إدراجها
  * ***لا، ليس كذلك*** (لا تضف مادة مرنة):
    * أضف السطر التالي (الصندوق) دون إدراج أي مادة مرنة

تلخص الرسمة التالية عملية المادة المرنة بين الأسطر:

![كيف يحدد TeX قيم المادة المرنة بين الأسطر](/files/d0b719c0b42dc09ffc9cb259b2e76ddfce572555)

### مثال على حسابات المادة المرنة بين الأسطر

في المثال التالي نفترض أن TeX/LaTeX يستخدم قيم معلمات الأوامر التالية:

```latex
\baselineskip=12pt
\lineskip=3.5pt
\lineskiplimit=2pt
```

سننظر في حساب المادة المرنة بين الأسطر لأول سطرين من هذه الفقرة:

![OLV2glue-calcs-step0.png](/files/7474116e6a2d9a7f1fd9afd954f641c595f83680)

في الصورة التالية، تكون محرك TeX قد عالج السطر الأول من الفقرة ونقله إلى القائمة العمودية التي يبنيها. وهو يتتبع عمق ذلك السطر (`d<sub>1</sub>`) والذي هو `2.1528` (نقاط):

![OLV2glue-calcs-step1.png](/files/4b0e3f3d609b0a2cb38c136c5acb656a09bc1405)

بعد ذلك، يصبح TeX جاهزًا لإضافة سطر ثانٍ إلى القائمة التي يبنيها: لذلك السطر ارتفاع (`h<sub>2</sub>`) والذي هو `6.9444` (نقاط) وبالمناسبة، عمق، `d<sub>2</sub>` لـ `0` (نقاط):

![OLV2glue-calcs-step2.png](/files/e8a9fa55f1941fe1a2520149b5f64431fd1cf3bd)

في هذه المرحلة، يحتاج TeX إلى حساب مقدار المسافة (المادة المرنة، `g<sub>1</sub>`) المطلوب إدراجه بين هذين السطرين:

![OLV2glue-calcs-step3.png](/files/c689258ed9aa1d4e4ab1e1d3ed685b5e8f43856a)

تُظهر الصورة التالية حسابات المادة المرنة لهذين السطرين:

![OLV2glue-calcs-stepA3.png](/files/a3062b0f71638ec76c0131331d6103a1add021b0)

تُظهر الصورة النهائية نقل السطرين إلى الصفحة الحالية مع وضع الكمية المحسوبة من المادة المرنة بين الأسطر بينهما:

![OLV2glue-calcs-step5.png](/files/dc50a20e920f3f1f4090826ad47df9df2783a1e2)

### معلمة أخرى: \prevdepth

كما ذُكر أعلاه، عندما ينشئ TeX رصّة (قائمة) عمودية من الصناديق، فإنه يخزن عمق آخر صندوق أُضيف إلى تلك القائمة. وتُعرف قيمة العمق المخزنة تلك باسم «العمق السابق»، ويمكن الوصول إليها عبر أمر المعلمة `\prevdepth`.

ال `\prevdepth` يمكن استخدام الأمر ***فقط*** عندما يكون TeX في النمط العمودي؛ أي بين الفقرات أو داخل صناديق عمودية: `\vbox`, `\vtop` أو `\vcenter` (ملاحظة: `\vcenter` لا يمكن استخدام الصناديق إلا في النمط الرياضي).

`\prevdepth` يوفر وصولًا للقراءة والكتابة إلى قيمة «العمق السابق»:

* للقراءة يمكنك الوصول إلى القيمة الحالية لـ `\prevdepth` يمكنك كتابة:

```latex
\the\prevdepth
```

* لتعيين القيمة الحالية لـ `\prevdepth` إلى `قيمة ما`، وهو طول بالنقاط أو بالملليمترات، إلخ، يمكنك كتابة:

```latex
\setlength{\prevdepth}{قيمة ما}
```

إذا حاولت استخدام \verb`\prevdepth` في ظروف لم يُصمَّم لها، مثل داخل فقرة أو داخل `\hbox` فستحصل على خطأ

```latex
‏\prevdepth غير مناسب.
```

مع معلومات إضافية تفيد بأنه لا يمكن استخدامه إلا في النمط العمودي.

#### منع المادة المرنة بين الأسطر: \prevdepth و \nointerlineskip

أحد استخدامات `\prevdepth` هو *منع* قيام TeX بحسابات خط الأساس المستخدمة لإضافة المادة المرنة بين الأسطر بين العناصر في قائمة عمودية، مثل أسطر الفقرة. وباستخدام `\prevdepth` لتمثيل `عمق السطر السابق` يمكننا إعادة صياغة حسابات المادة المرنة (المصوّرة أعلاه) على النحو التالي:

```latex
إذا كانت (\prevdepth > –1000pt)
{
     Δ = \baselineskip — \prevdepth — (ارتفاع السطر الحالي)

     إذا كانت (Δ < \lineskiplimit)
       المادة المرنة بين الأسطر = \lineskip
     وإلا
       المادة المرنة بين الأسطر = Δ
}
وإلا
{
     كدّس الصندوق دون إضافة
     أي مادة مرنة بين الأسطر
}
```

داخليًا، تتعرف محركات TeX على قيمة تُسمّى «حارسًا» تبلغ `\prevdepth` ويمكن استخدامها لتعطيل حساب وإضافة المادة المرنة بين الأسطر. وتلك القيمة الحارسة هي `–1000pt`، كما يمكن رؤيتها في السطر الأول من الشيفرة الزائفة أعلاه:

```latex
إذا كانت (\prevdepth > –1000pt)
```

لن يضيف TeX المادة المرنة بين الأسطر ما لم يكن `\prevdepth` أكبر من `–1000pt`— وهو ما يوفر الآلية المستخدمة بواسطة `\nointerlineskip` الماكرو لمنع إضافة المادة المرنة بين الأسطر بين الزوج التالي من الصناديق في قائمة عمودية.

`\nointerlineskip` له تعريف مكافئ لـ:

```latex
\def\nointerlineskip{
\prevdepth–1000pt
}
```

لاحظ أن `\nointerlineskip` يوفر *تعطيلًا لمرة واحدة* لحسابات المادة المرنة بين الأسطر لأن قيمة `\prevdepth` تُحدَّث باستمرار مع إضافة صناديق جديدة إلى القائمة العمودية الحالية، كما يوضحه المثال التالي:

```latex
\noindent تُعالج صناديق \verb|\hbox| التالية عندما يكون \TeX{} في ما يُسمّى بالنمط العمودي الخارجي \textit{outer vertical mode}. بعد المعالجة (التنضيد)، تُضاف هذه الصناديق إلى الصفحة الحالية وتُكدَّس عموديًا مع إدراج مادة مرنة بين الأسطر بينها:

\hbox{j}
\hbox{p}
\hbox{g}

الآن، مباشرةً بعد الصندوق \verb|\hbox{j}|، نضبط \verb|\prevdepth| على \texttt{-1000pt}، مما يمنع وضع مادة مرنة بين الأسطر بين الصندوقين \verb|\hbox{j}| و \verb|\hbox{p}|:

\hbox{j}\setlength{\prevdepth}{-1000pt}
\hbox{p}
\hbox{g}

لاحظ أن المادة المرنة بين الأسطر \textit{تُوضع} بين الصندوقين \verb|\hbox{p}| و \verb|\hbox{g}| لأن قيمة \verb|\prevdepth| تُحدَّث بعد معالجة \verb|\hbox{p}| وإضافته إلى القائمة: تصبح قيمة \verb|\prevdepth| هي عمق الصندوق \verb|\hbox{p}|. وعندما يُضاف \verb|\hbox{g}| إلى القائمة العمودية، لا تعود قيمة \verb|\prevdepth| هي \texttt{-1000pt}; وبالتالي يمكن الآن إضافة المادة المرنة بين الأسطر.
```

&#x20;[افتح هذا المثال في Overleaf](https://www.overleaf.com/docs?engine=pdflatex\&snip_name=One-shot+use+of+nointerlineskip\&snip=%5Cdocumentclass%7Barticle%7D%0A%25+Choose+a+conveniently+small+page+size%0A%5Cusepackage%5Bpaperheight%3D16cm%2Cpaperwidth%3D12cm%2Ctextwidth%3D10cm%5D%7Bgeometry%7D%0A%5Cbegin%7Bdocument%7D%0A%5Csetlength%7B%5Cbaselineskip%7D%7B14pt%7D%0A%5Csetlength%7B%5Cparskip%7D%7B1pt%7D%0A%5Csetlength%7B%5Cparindent%7D%7B0pt%7D%0A%25+A+convenience+macro+to+typeset+%5Cprevdepth+in+an+%5Chbox%2C+although+TeX+has+to+be%0A%25+in+a+vertical+mode+when+this+macro+is+used.%0A%5Cnoindent+The+following+%5Cverb%7C%5Chbox%7Ces+are+processed+when+%5CTeX%7B%7D+is+in+so-called+%5Ctextit%7Bouter+vertical+mode%7D.+After+processing+%28typesetting%29%2C+these+boxes+are+appended+to+the+current+page+and+stacked+vertically+with+interline+glue+inserted+between+them%3A%0A%0A%5Chbox%7Bj%7D%0A%5Chbox%7Bp%7D%0A%5Chbox%7Bg%7D%0A%0ANow%2C+immediately+after+after+the+box+%5Cverb%7C%5Chbox%7Bj%7D%7C%2C+we+set+%5Cverb%7C%5Cprevdepth%7C+to+%5Ctexttt%7B-1000pt%7D+which+prevents+interline+glue+being+placed+between+the+boxes+%5Cverb%7C%5Chbox%7Bj%7D%7C+and+%5Cverb%7C%5Chbox%7Bp%7D%7C%3A+%0A%0A%5Chbox%7Bj%7D%5Csetlength%7B%5Cprevdepth%7D%7B-1000pt%7D%0A%5Chbox%7Bp%7D%0A%5Chbox%7Bg%7D%0A%0AObserve+that+interline+glue+%5Ctextit%7Bis%7D+placed+between+the+boxes+%5Cverb%7C%5Chbox%7Bp%7D%7C+and+%5Cverb%7C%5Chbox%7Bg%7D%7C+because+the+value+of+%5Cverb%7C%5Cprevdepth%7C+is+updated+after+%5Cverb%7C%5Chbox%7Bp%7D%7C+is+processed+and+added+to+the+list%3A+the+value+of+%5Cverb%7C%5Cprevdepth%7C+becomes+the+depth+of+the+box+%5Cverb%7C%5Chbox%7Bp%7D%7C.+When+%5Cverb%7C%5Chbox%7Bg%7D%7C+is+added+to+the+vertical+list+the+value+of+%5Cverb%7C%5Cprevdepth%7C+is+no+longer+%5Ctexttt%7B-1000pt%7D%3B+consequently%2C+interline+glue+can+now+be+added.%0A%5Cend%7Bdocument%7D)

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

![مثال يوضح معلمة TeX \prevdepth](/files/82511e5ed98f988d4e8c951c086da9d389526814)

#### مادة مرنة بين الأسطر بحجم صفري: \offinterlineskip

يمكن إزالة جميع المسافات بين الأسطر عبر الأمر الماكرو `\nointerlineskip`، والذي له تعريف مكافئ لـ:

```latex
\def\offinterlineskip{%
\baselineskip=-1000pt
\lineskip=0pt
\lineskiplimit=\maxdimen
}
```

لاحظ أن `\maxdimen` هو `16383.99998pt`، وهو أكبر طول يمكن أن يستخدمه TeX.

تُظهر الرسمة التالية الحسابات الأساسية للمادة المرنة بين الأسطر والقيم المختلفة للمعلمات التي يستخدمها الماكرو `\nointerlineskip`:

![offinterlineskip](/files/1db77c442487c37c2b6bfa8451ce90d8069246c0)

تُظهر الرسمة التالية مقطع الشيفرة الزائفة الناتج عن استبدال `\nointerlineskip` قيم الماكرو في حسابات المادة المرنة. وهو يوضح كيف أن `\nointerlineskip` الماكرو يعمل من خلال ضبط قيم `\baselineskip` و `\lineskiplimit` بحيث تكون المادة المرنة بين الأسطر دائمًا `\lineskip` مادة مرنة مقدارها `0pt`.

![offinterlineskip](/files/f0c105a75459a75e1be00a499e80d91e88e26ca9)

#### \offinterlineskip و \lineskip غير الصفري

ال `\nointerlineskip` يضبط الماكرو `\lineskip` على الصفر، ولكن كما يوضح مشروع Overleaf التالي، يمكنك الجمع `\nointerlineskip` بينه وبين قيم غير صفرية لـ `\lineskip` لتحقيق تأثيرات في تباعد الأسطر.

```latex
\documentclass{article}
\title{إظهار lineskip غير الصفري}
% اختر حجم صفحة صغيرًا ومناسبًا
\\usepackage[paperheight=16cm,paperwidth=12cm,textwidth=8cm]{geometry}
\begin{document}

\offinterlineskip % هذا يضبط \lineskip على 0pt

\setlength{\lineskip}{5pt} % نريد \lineskip غير صفري

\\input text.tex % ملف TeX مُولَّد يعرّف الماكروات.
% \mytextA و \mytextB، وكل منهما يُنضِّد فقرة

\mytextA % نضّد فقرة

% الآن غيّر \lineskip إلى قيمة glue مرنة ونضّد
% فقرة أخرى

\setlength{\lineskip}{5pt plus5pt minus5pt}

\\mytextA

\end{document}
```

&#x20;افتح هذا المثال كمشروع LaTeX على Overleaf

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

![إظهار ماكرو LaTeX \offinterlineskip](/files/f4cb016e16547c17b4a51febbd97b5470f581d4a)

يمكنك حصر تأثيرات استخدام `\offinterlineskip` و `\lineskip` (وأوامر التباعد الأخرى) بحصرها داخل مجموعة:

```latex
\begingroup
\offinterlineskip
\setlength{\lineskip}{5pt}
...فقرتك (أو فقراتك) هنا

\endgroup
```


---

# 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/altnsyq/04-articles-how-to-change-paragraph-spacing-in-latex.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.
