انتقل إلى المحتوى الرئيسي

الفصل 5.1 · الجزء II · الحرفة

صيغة المستند: التوجيهات

التوجيهات (:::): الحاويات، والأعمدة، والورق، وفواصل الصفحات، والترقيم، والمسافات، والشعر، وجدول المحتويات والفهرس، وفواصل الأسطر، وترميز صفحات القصص المصورة

آخر تحديث 2026-10-1634 دقيقةضمن الفصل 5 صيغة المستندenescadefritptzhjaar

باختصار

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

#التوجيهات

التوجيهات وسوم تحكّم من سطر واحد تُكتب بصيغة :::name أو :::name{attrs} في سطر مستقل. لا تُنتج مخرجات مرئية، بل توجّه مسار التموضع والترقيم.

الصياغةالأثر
:::pagebreakيجبر الكتلة التالية على البدء في صفحة جديدة.
:::pagebreak{parity="odd"}مثله، مع ضمان أن تكون الصفحة الجديدة فردية (اليمنى في الكتاب اللاتيني). ويُدرج صفحة حشو فارغة عند الحاجة.
:::pagebreak{parity="even"}مثله، لكن الهدف صفحة زوجية (اليسرى في الكتاب اللاتيني).
:::pagebreak{parity="always-odd"}يضمن صفحة فاصلة فارغة إلزامية واحدة على الأقل قبل الوصول إلى صفحة فردية. تتبع الصفحة الفارغة الفاصلة المحتوى السابق؛ وأي حشو إضافي للزوجية يتبع ما يليه. مفيد حين يجب أن يبدأ كل فصل في صفحتين متقابلتين جديدتين.
:::pagebreak{parity="always-even"}مثله، لكن الهدف صفحة زوجية.
:::numbering{format="decimal" startAt=1}يبدّل سلسلة ترقيم الصفحات عند حدّ الصفحة التالي. السمتان اختياريتان: احذف format لإبقاء الصيغة، واحذف startAt لمتابعة العدّاد.
:::columnbreakينهي العمود الحالي هنا: تبدأ الكتلة التالية في العمود التالي من الصفحة نفسها (أو في صفحة جديدة إذا وقع التوجيه في العمود الأخير). لا يفعل شيئًا في عمود فارغ، فلا يُنتج أبدًا عمودًا أو صفحة فارغة. ويحتفظ العمود الذي ينهيه بفراغه السفلي، فلا تمدّه موازنة الأعمدة.
:::spaceيترك هنا سطر متن فارغًا واحدًا، وهي الطريقة الصريحة لإضافة شيء من الفسحة بين كتلتين. :::space{lines=2} يترك سطرين (والكسور مثل 0.5 تعمل أيضًا). يُضاف إلى الهامش القائم بين الكتلتين ويُسقط في أعلى العمود أو الصفحة. انظر أدناه.
:::tocيطبع جدول المحتويات هنا: مدخل لكل عنوان من المستويات المدرجة (العنوان والرقم ورقم الصفحة ومؤلفو الفصل اختياريًا) وصف لكل فاصل جزء، منضّدة وفق إعداد toc. تتبع المداخل المستند: أعد تسمية فصل أو انقله أو أعد ترقيمه فتتبعه المحتويات.
:::indexيطبع هنا الفهرس الأبجدي (index) في آخر الكتاب: كل مصطلح معلَّم بـ:index في الكتاب، مرتبًا ومجمّعًا حسب الحرف، مع الصفحات التي يقع فيها، منضّدًا وفق إعداد index. و:::index{index="names"} يطبع فهرسًا مسمّى. انظر الفهرس الأبجدي.
:::page{…} … :::صفحة قصة مصورة: أسطر ::panel فيها وأسطر الحوار التي تتبعها، تُخرَج إطاراتٍ وفقاعاتٍ مكتوبةً في صفحة مستقلة. انظر القصص المصورة.
:::strip{…} … :::شريط مصور داخل تدفق النص، بعرض عمود أو بعرض الصفحة. انظر :::strip.
:::verse … :::قصيدة، تُصَفّ سطرًا سطرًا كما كُتبت (كل سطر بيت من الشعر، والأسطر الفارغة بين المقاطع، والمسافات في أول السطر إزاحة)، أو بالتخطيط العربي الكلاسيكي حين تفصل أسطرها شطريها بـ||. انظر أدناه.

يجوز أن تكون قيم السمات بين علامتَي تنصيص مزدوجتين ("…") أو مفردتين ('…') أو مجرّدة (startAt=17). والمفتاح المجرّد بلا = يُعامل راية حاضرة لكنها فارغة.

لا يُتعرَّف اليوم توجيهاتٍ من سطر واحد إلا على pagebreak وnumbering وcolumnbreak وspace وtoc وindex (وعلى references وverse وpage وstrip كتلًا مسيّجة)؛ وأي سطر :::name آخر ليس حاوية (انظر أدناه) يُحلَّل فقرةً ويُظهر تحذير توجيه غير معروف (Unknown directive) في Sandbox. ويسجّله المحرّك أيضًا مدخلًا من نوع unknownDirective في contentWarnings الخاصة بالمستند (انظر الإعدادات › التحذيرات في المستند).

#قيم السمات

صياغة key="value" نفسها تقرؤها سمات العناوين، وأسوار التوجيهات والحاويات (:::name{…})، والإحالات السطرية (:ref{…})، والشارات (:chip[…]{…})، وعيّنات الألوان (:swatch{…})، وعلامات الفهرس (:index[…]{…}). وقواعدها:

  • المفاتيح تبدأ بحرف ASCII أو _ وتستمر بحروف ASCII أو أرقام أو _ أو -. المسافات حول = مقبولة، وعلامة = كاملة العرض التي تكتبها طريقة الإدخال الصينية تعمل عمل =، والمفتاح المكرر يحتفظ بآخر قيمة له، والمفتاح بلا = راية بقيمة فارغة. والمفتاح المكتوب بنظام كتابة آخر (作者=曹雪芹) لا يُقرأ ويُطلق تحذير attributeKeyInvalid؛ وتظل مفاتيح الكتلة الأخرى سارية. أما القيم فيجوز أن تكون بأي نظام كتابة.
  • القيم بين علامتَي تنصيص. القيمة بين علامتين مزدوجتين تتسع لأي شيء عدا "، بما في ذلك العلامات المفردة؛ والقيمة بين علامتين مفردتين تتسع لأي شيء عدا '. فالقيمة التي فيها علامات تنصيص مزدوجة توضع بين علامتين مفردتين: lead='He said "hi"'. لا توجد تهريبات، فالشرطة المائلة العكسية حرف عادي، ولذلك فالقيمة التي تحتاج إلى نوعَي علامات ASCII معًا تأخذ العلامات الطباعية (“…”، ’). ويجوز أن تبدأ القيمة أيضًا بعلامة التنصيص المنحنية “ أو بالقوس الزاوي 「 اللذين تكتبهما طريقة الإدخال الصينية، فتمتد حينئذ إلى ” أو 」 المقابلة، بما في ذلك المسافات: title=“甲戌本 眉批”، title=「脂批」.
  • القيم المجرّدة (startAt=17، year=1998) تمتد إلى المسافة التالية: title=Hello world هي title="Hello" ومعها راية world.
  • لا أقواس معقوصة. لا يدخل { ولا } في قيمة أبدًا. أول } ينهي الكتلة: السور الذي تحمل قيمته واحدًا منهما لم يعد توجيهًا بل فقرة، وفي السطر يتسرّب باقي القيمة إلى النص. وفي العنوان، يترك القوس في القيمة الكتلة كلها في العنوان: # Title {note="a {b"} يُنضَّد كما كُتب. (حتى الإصدار postext 1.8 كان { بعد مسافة يبدأ الكتلة من جديد وكان b يُقرأ راية.)
  • علامات الدولار نص عادي. تُقرأ السمات قبل الرياضيات السطرية، فـlead="from $5 to $6" مجرد نص.
  • سطر واحد. لا تمتد كتلة السمات على أكثر من سطر أبدًا.
# The Long Road {lead='A "road novel", they said' price="$18"}
 
:::callout{type="note" title='The "fast" path'}
…
:::

أما ::resource{id="…"} فأشدّ صرامة: المعرّف بين علامتَي تنصيص مزدوجتين ولا سمة أخرى (انظر الموارد).

#الحاويات

تلفّ الحاوية سلسلة من الكتل بسور: سطر افتتاح :::name أو :::name{attrs}، ثم أي محتوى عادي، من فقرات وعناوين وقوائم واقتباسات كتلية ومعادلات وحتى توجيهات أخرى، ثم سطر إغلاق يحمل ::: مجرّدة. يجوز أن تتداخل الحاويات؛ وكل ::: إغلاق يغلق أعمق حاوية مفتوحة.

:::callout{type="note"}
Keep the lantern lit **every** night.

- Check the wick.
- Trim it at dusk.
:::

يُتعرَّف على خمسة أسماء حاويات في تدفق النص. وما ترسمه كل حاوية يُضبط في قسمها الخاص من الإعدادات:

الصياغةالأثر
:::callout{…} … :::محتوى داخل إطار: ملاحظة أو نصيحة أو تحذير منفصل عن المتن في إطار محدود أو ملوّن الخلفية.
:::paragraphs{…} … :::سلسلة فقرات منضّدة بنمط فقرة مسمّى (مدخل تمهيدي، أو تصدير، أو مجموعة ملاحظات بخط صغير) بدلًا من نمط المتن. وتضبط align وindent وendIndent المحاذاة والمسافات البادئة مع نمط أو دونه: :::paragraphs{align=end endIndent=1} يضع تاريخًا مرفوعًا محرفًا واحدًا عن نهاية السطر (地から1字上げ). وdropcap تبدّل حرفًا استهلاليًا في فقرتها الأولى.
:::part{…} … :::افتتاح جزء أو قسم: يشكّل العنوان والنص المحاطان صفحة الافتتاح لتقسيم رئيسي.
:::paper{…} … :::سلسلة صفحات مطبوعة على نوع ورق آخر، كقسم من اللوحات على ورق لامع في كتاب مطفأ اللمعة. لا يُظهرها إلا عارض Folio.
:::columns{…} … :::كتل منضّدة في أعمدة عدة خاصة بها: داخل إطار، أو في عمود النص، أو على عرض صفحة ذات أعمدة عدة. انظر :::columns أدناه.

السمات التي تقبلها كل حاوية، وطريقة تنسيقها، موثقة في الإعدادات. وقيم السمات تتبع قواعد التوجيهات نفسها. يأخذ سور :::callout السمة type (معرّف نمط إطار مُعدّ، والأنواع غير المعروفة أو الغائبة ترجع إلى النمط الأول)، وtitle (تتجاوز العنوان الافتراضي للنمط)، وspan / placement (column أو page أو side؛ here أو top أو bottom أو fixed) لتجاوز امتداد النمط وموضعه لهذا الإطار:

:::callout{type="objectives" title="What you will learn" span="page" placement="top"}
- Name the parts of the lantern.
- Trim the wick without touching the glass.
:::

ويأخذ الإطار العائم (placement بالقيمة auto أو top أو bottom) أيضًا columns، أي عدد الأعمدة المتجاورة التي يمتد عليها في صفحة ذات أعمدة عدة، كما في :::callout{placement="top" columns="2"} (منذ postext 1.18).

يمكن للصندوق أيضًا أن يصفّ النص الذي يليه بجانبه: wrap (left أو right أو start أو end)، وwidth (حصته من العمود، من 0 إلى 1؛ layout.wrap.defaultWidth إن لم تُحدَّد) وwrapGap (طول مثل 6pt)، كما في :::callout{wrap="right" width=0.4} (انظر التفاف النص؛ منذ postext 1.24).

يُخرَج الإطار (callout) صندوقًا: عنوان اختياري، ثم محتواه منضّدًا بطباعة المتن والقوائم الخاصة بالنمط. يبقى متماسكًا افتراضيًا، فينتقل كاملًا إلى العمود أو الصفحة التالية إذا لم يتسع له المكان (والإطار الأطول من عمود كامل ينقسم مع ذلك بدلًا من أن يفيض)؛ والنمط الذي فيه keepTogether: false يتيح انقسامه بين كتله أو بين الأسطر، مع ترك splitMinLines من أسطر النص على الأقل، أو شكل أو جدول أو معادلة مستقلة أو إطار متداخل، في كل جانب من القطع (والقطع داخل فقرة أو عنصر قائمة يترك أيضًا layout.boxChildSplitMinLines من أسطرها على الأقل في كل جانب: سطران افتراضيًا، أو splitMinLines إذا كانت أقل؛ والكتب المحفوظة قبل الإصدار 1.5 التي تحوي فصولها إطارًا تُقرأ بالقيمة 1، أي قطع الإصدار 1.4). كل جزء بعد الأول يبدأ بلا أيقونة، وإن احتفظ نصه بعمود الأيقونة، وبلا عنوان ما لم يكرره النمط (repeatTitle: "Key points (cont.)")؛ ويمكن للنمط أيضًا أن يضع علامة «يتبع» تحت كل جزء يستمر بعده (continuesMarkerEnabled)؛ انظر العلامات على الإطار المنقسم. الإطارات الممتدة بعرض الصفحة (span="page") تقطع الصفحة إلى أشرطة أعمدة؛ والإطارات span="side" تخرج من التدفق إلى العمود الجانبي المخصص للعناصر العائمة في تخطيط العمود ونصف العمود (layout.sideColumnRole: 'floats')، مكدّسةً بجوار النص الذي تقطعه، وتُخرَج إطاراتِ عمود حيث لا يوجد عمود كهذا؛ والإطارات placement="fixed" تخرج من التدفق وتُثبَّت على إحداثيات الصفحة (شارة تقييم ذاتي في الزاوية السفلية اليسرى من الصفحة الأخيرة لفصل ما مثلًا)، وتتخلى الأعمدة التي تغطيها عن تلك المنطقة؛ والإطارات العائمة (placement="top" / "bottom") تخرج من التدفق حيث تقع وتأخذ أول شريط حرّ بعد ذلك الموضع، أي أسفل الصفحة أو أعلى التالية أو أسفلها، بينما يملأ النص الذي يليها الصفحة التي تركتها. والنمط الذي فيه floatBarrier: true (إطار «النقاط الرئيسية» الختامي للفصل عادة) يجعل الإطار حاجزًا للعناصر العائمة (float barrier): كل شكل أو جدول أُحيل إليه قبله يوضع قبله، في الخانات الحرّة من الصفحة أو في صفحات تُفتح قبل الإطار، فلا يفلت أي عنصر عائم إلى ما بعد نهاية فصله. والسور :::name غير المعروف ليس حاوية: يُعامل السطر نصًا، تمامًا كالتوجيه غير المعروف.

يأخذ سور :::part السمة number (كما تريد أن يُطبع: "I"، "IV"، "3"؛ ويُحلَّل أيضًا ليتمكن التصميم من إعادة تنسيقه) والسمة title؛ وكلتاهما اختيارية. وسمة ثالثة، palette="band=#hex" (عدة أزواج id=#hex مفصولة بفواصل)، تعيد تلوين كل لون في التصميم مرتبط بمعرّفات لوحة الألوان تلك، من الترويسات وشريط الافتتاح وتصاميم الأجزاء، وألوان تدفق النص التي تشاركها قيمتها الأساسية (العناوين والخط الغامق والإحالات وعلامات التنقيط والتعليقات والجداول والإطارات والشارات)، للجزء وللفصول التي تليه حتى الجزء التالي؛ انظر الإعدادات › الأجزاء. تفتح الحاوية دائمًا صفحة خاصة بها: فاصل صفحات بالزوجية المُعدّة قبلها، وعمود متن واحد ضمن parts.margins، وتصميم الافتتاح على الصفحة كلها، وفاصل صفحات آخر بعد سور الإغلاق. أما المتن، وهو عادة قائمة الفصول التي يجمعها الجزء أو لا شيء على الإطلاق، فيُنضَّد بـparts.bodyStyle:

:::part{number="I" title="Foundations"}
1. The lantern and its parts
2. Trimming the wick
:::

# The lantern and its parts

مع إعدادات العناوين الافتراضية ينتج هذا التسلسل الكلاسيكي: صفحة الجزء في صفحة فردية، ثم صفحة زوجية فارغة، ثم الفصل في الصفحة الفردية التالية. وتُعلَن الصفحة بالدور role: 'part' لكي تتخطاها الترويسات والتذييلات، ويُستبدل {partTitle} / {partNumber} بالجزء الحالي في كل صفحة تالية. انظر الأجزاء في مرجع الإعدادات.

لا يحتاج السور إلى سطر فارغ قبله: سور الافتتاح أو الإغلاق الملتصق مباشرة تحت فقرة أو قائمة أو اقتباس كتلي ينهي تلك الكتلة. والحاوية التي تبقى مفتوحة في نهاية المستند تُغلق تلقائيًا هناك، ويُبلغ Sandbox عن تحذير حاوية غير مغلقة (Unclosed container) يشير إلى سطر الافتتاح. أما ::: الشاردة بلا حاوية مفتوحة فتُترك في النص فقرةً ظاهرة بدلًا من أن تُحذف بصمت.

#:::columns

تنضّد مجموعة :::columns{count=2} … ::: الكتل الواقعة بين سوريها في count من الأعمدة المتساوية العرض (من 2 إلى 6)، ويعود النص الذي يليها إلى العرض الكامل. داخل :::callout تتقاسم الأعمدة العرض الداخلي للإطار، يفصل بينها columnGap الخاص بالنمط، بطباعة المتن والقوائم الخاصة بالإطار، ويطول الإطار إلى طول أطول عمود. وفي النص الجاري (منذ postext 1.25) تتقاسم عمود النص، يفصل بينها سطر من المتن، وتحتفظ الكتل بطباعة النص نفسه؛ ومع span="page"، في صفحة ذات أعمدة عدة، تقطع المجموعة الصفحة إلى شريط كما يفعل الإطار الممتد بعرض الصفحة: تُغلق الأعمدة التي فوقها على ارتفاع واحد، وتُنضَّد المجموعة بعرض منطقة المحتوى (يفصل بين أعمدتها الفاصل بين أعمدة الصفحة)، ويستمر النص في كل الأعمدة تحتها. وفي صفحة ذات عمود واحد يضعها span="page" في العمود. والعناوين داخل المجموعة تحتفظ بنمطها ورقمها ومدخلها في جدول المحتويات، والحاشية المُحال إليها فيها تذهب إلى أسفل عمود النص، والأشكال التي تُحيل إليها تطفو كالمعتاد.

السمةالأثر
countعدد الأعمدة، من 2 إلى 6. الافتراضي 2.
gapالمسافة بين الأعمدة، وهي طول (12pt أو 1em أو 4mm). الافتراضي: columnGap الخاص بنمط الإطار داخل إطار، وسطر من المتن في عمود النص، وlayout.gutterWidth على عرض الصفحة.
ruleترسم خطًا على طول كل فاصل، بلون layout.columnRule وسُمكه: :::columns{count=3 rule}.
breaksالكتل التي تفتح كل عمود بعد الأول، بدلًا من الموازنة: breaks="4" يفتح العمود الثاني عند الكتلة الرابعة من المجموعة (وقائمة مفصولة بفواصل لأعمدة أكثر). انظر أدناه كيف يعدّ.
flowكيف تستمر المجموعة التي لا تتسع: snake (الافتراضي بلا breaks) أو parallel (الافتراضي مع breaks). انظر تقسيم المجموعة.
spanفي النص الجاري فقط: column (الافتراضي) أو page.
marginTopالمسافة فوق المجموعة، وهي طول يُكتب كما يُكتب gap. تندمج مع المسافة المعلّقة فوق المجموعة؛ ولا مسافة في رأس العمود، ولا حين تفتتح المجموعة إطارها. منذ postext 1.28.
marginBottomالمسافة تحت المجموعة، وهي طول؛ والقيمة 0 تطلب ألّا تكون هناك مسافة. في النص الجاري تحلّ محلّ تباعد فقرات المتن؛ وداخل الإطار هي المسافة قبل الكتلة التالية. منذ postext 1.28.

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

المسافة حول المجموعة. في النص الجاري يلي المجموعةَ تباعدُ فقرات المتن (سطر مع bodyText.paragraphSpacing، ولا شيء بدونه)، وداخل الإطار لا مسافة خاصة بها. تحدّدها marginTop وmarginBottom على السور: :::columns{count=3 span="page" marginBottom="0.75em"}. كلٌّ منهما حدّ أدنى يندمج مع المسافة التي تحتفظ بها الكتلة المجاورة لنفسها، كهوامش الإطار. في النص الجاري يعود النص إلى شبكة خطوط الأساس تحت المجموعة، فتأتي المسافة بأسطر كاملة، والمجموعة المقسومة بين أعمدة أو صفحات تُبقي الهامش العلوي لجزئها الأول والسفلي لجزئها الأخير. وem هو حجم النص الذي تقع فيه المجموعة؛ والقيمة التي ليست طولًا، أو السالبة، تُهمَل.

:::callout{type="summary"}
:::columns{count=2}
- Every element is one kind of atom.
- Electrons live in orbitals.
- A bond shares or transfers electrons.
:::
:::

كيف يعدّ breaks. يرقّم breaks كتل المجموعة بالترتيب: الفقرات، وعناصر القوائم (كل عنصر كتلة)، والمعادلات المستقلة، والأشكال والجداول؛ ويُعدّ :::callout المتداخل كتلة واحدة مهما احتوى. التوجيهات ليست كتلًا: :::space بين مقطعين شعريين لا يغيّر العدّ. ويُتجاهل الرقم الأقل من 2، أو الواقع بعد آخر كتلة في المجموعة، أو غير الواقع بعد الفاصل السابق. وداخل المجموعة يفصل :::space بين كتلتين كما يفعل في أي موضع آخر من الإطار، ويختفي في أعلى المجموعة وفي رأس كل عمود من أعمدتها (موضع breaks أو قطع موازنة)؛ ولفتح المجموعة في موضع أدنى، ضع الفراغ قبل سور :::columns. ولذلك يصطف عمودان يحملان التباعد نفسه مقطعًا بمقطع:

:::callout{type="verse"}
:::columns{count=2 breaks="4"}
The lamp is lit at dusk,
 
and trimmed before the dawn.
 
:::space
 
The keeper sleeps by day.
 
La lámpara se enciende al anochecer,
 
y se despabila antes del alba.
 
:::space
 
El farero duerme de día.
:::
:::

هنا تفتح الكتلة الرابعة، "La lámpara…"، العمود الثاني؛ ولا يُعدّ سطرا :::space ويتركان الفراغ نفسه في العمودين.

تقسيم المجموعة

منذ postext 1.25، المجموعة التي لا يتسع لها المكان المتاح لها (ما بقي من عمودها في النص الجاري، أو جزء من إطار ينقسم: keepTogether: false، أو إطار أطول من عمود) تُقطع بين أعمدتها وتستمر في العمود أو الصفحة التالية، وفي إطار خاص بها إن كانت المجموعة داخل إطار:

  • flow="snake"، الافتراضي بلا breaks: تجري كتل المجموعة سلسلةً واحدة، كنص خبر في جريدة. الجزء الذي له تتمة يملأ أعمدته واحدًا بعد آخر، متساويةً بقدر ما تسمح القطوع، ويقطع بين الكتل أو بين أسطر فقرة أو عنصر قائمة (مع layout.boxChildSplitMinLines من أسطره على الأقل في كل جانب، سطران افتراضيًا)؛ والجزء الأخير يُوازَن كما توازَن مجموعة كاملة.
  • flow="parallel"، الافتراضي مع breaks: كل سلسلة يبدؤها فاصل من breaks تيار يحتفظ بعموده. يملأ الجزء كل تيار حتى آخر المكان المتاح له، ويستمر كل تيار في العمود نفسه من الجزء التالي، فتبقى قصيدة وترجمتها المنضّدتان جنبًا إلى جنب متحاذيتين مقطعًا بمقطع. والمجموعة المتوازية بلا breaks تستمر كمجموعة متعرّجة.

الإطار المتداخل داخل مجموعة يبقى كاملًا وينتقل إلى الجزء التالي، والمجموعة داخل إطار متداخل لا تُقطع أبدًا. والمجموعة التي تتسع تُنضَّد كما كانت تمامًا. ويحافظ layout.flowColumns: false على قواعد postext 1.24: يُتجاهل السور خارج الإطار ولا تُقطع المجموعة أبدًا؛ وتُقرأ بذلك الكتب المحفوظة قبل 1.25 التي تحتوي مجموعة :::columns. ويبلّغ Sandbox عن flow لا يعرفه (تدفّق أعمدة غير معروف) وعن أعمدة أضيق من ستة em من نصها (أعمدة ضيقة جدًا).

## أخبار موجزة
 
:::columns{count=3 span="page" rule}
**الميناء.** يُفتتح الرصيف الجديد يوم الاثنين…
 
**السوق.** إيجارات الأكشاك تبقى على حالها…
 
**الطقس.** أمطار من الغرب عند المساء…
:::

ويقبل سور :::callout أيضًا label="…": النص الذي يطبعه النمط ذو لسان label على الزاوية العليا للإطار (:::callout{type="box" label="BOX 1-1" title="The octet rule"}).

و:::callout داخل آخر إطار قائم بذاته، كبطاقة ورقة عمل تحوي مربعات إجابة مثلًا. يأخذ نمطه الخاص (الخلفية والحد ونصف قطر الزوايا والحشو والعنوان والأيقونة) بكامل العرض الداخلي للإطار الخارجي ويتراص بين كتله الأخرى؛ وتُتجاهل span وplacement الخاصتان به، لأن الإطار المتداخل يتدفق دائمًا داخل أصله. وكل سور يغلق أعمق إطار لا يزال مفتوحًا:

:::callout{type="card"}
The statement of the exercise.
 
:::callout{type="answer"}
A white answer box with its own border and padding.
:::
 
:::callout{type="answer"}
A second answer box.
:::
:::

حين ينقسم الإطار الخارجي بين الأعمدة أو الصفحات (keepTogether: false، أو لأنه أطول من عمود)، ينتقل الإطار المتداخل كاملًا إلى الجزء التالي ما لم يسمح نمطه هو أيضًا بالانقسام؛ ويعيد كل جزء رسم الأطر التي يحويها، ويُسقط الإطار المتداخل المستمر أيقونته، وعنوانه ما لم يكرره نمطه (repeatTitle).

#:::paper

يمكن للكتاب أن يغيّر نوع الورق لسلسلة من الصفحات: قسم من اللوحات على ورق مطلي لامع في كتاب مطبوع على ورق غير مطلي، أو بطاقة مُدرجة، أو بضع أوراق من ورق ملوّن. لُفّ ذلك المحتوى بحاوية :::paper:

:::paper{type=coatedGloss grammage=130}
## Plates
::resource{id="plate-1"}
::resource{id="plate-2"}
:::

يغطي نوع الورق أفرخًا كاملة، ولذلك يبدأ المحتوى الواقع بين السورين في صفحة جديدة، ويبدأ كل ما يلي ::: الإغلاق في صفحة جديدة أيضًا. والسلسلة التي ينتهي بها المستند لا تترك بعدها صفحة فارغة. وتوضع الأشكال والجداول المُحال إليها داخل السلسلة قبل أن تُغلق. وكل صفحة منضّدة بمحتوى من داخل الحاوية تحمل نوع الورق في الإخراج (VDTPage.paper، والسمات كما يكتبها السور)؛ أما الصفحات خارجها فلا تحمل شيئًا. يقرؤه عارض Folio ويرسم تلك الأوراق بلون الورق وسطحه وسماكته وصلابته. وتتجاهله مخرجات اللوحة (Canvas) وPDF وHTML: تُنضَّد الصفحات وتُطبع كأي صفحات أخرى.

السمات هي سمات إعدادات folio.paper، وكلها اختيارية. والسمة التي يغفلها السور تتبع ورق المستند، وبعد ذلك القيم الافتراضية لنوع الورق:

السمةالقيمة
typeنوع الورق: uncoated، bookWove، coatedMatte، coatedSilk، coatedGloss، bible، newsprint، cardStock، board. ويحدد القيم الافتراضية للسمات أدناه.
grammageالوزن بوحدة g/m²، عدد أكبر من 0. الورق الأثقل أسمك وأصلب وأكثر عتامة.
bulkالسماكة لكل وحدة وزن بوحدة cm³/g، عدد أكبر من 0 (السماكة بالميكرومتر µm = grammage × bulk).
finishالسطح: auto، uncoated، matte، silk، gloss.
textureبروز السطح: auto، smooth، vellum، wove، laid، linen، felt.
textureStrengthمدى ظهور الملمس، من 0 إلى 2.
shadeلون الورق: #rgb أو #rrggbb أو معرّف مدخل في colorPalette.
showThroughtrue أو false: هل تظهر الصفحة الخلفية بخفوت من خلال الورق. وshowThrough المجرّدة تعني true.

و:::paper داخل أخرى لا تتجاوز إلا السمات التي تضبطها، وتبدأ هي أيضًا وتنتهي بفاصل صفحات. وداخل :::callout تُتجاهل الأسوار. والقيمة التي لا يستطيع المحرّك قراءتها تُسقط، ويسردها Sandbox تحذيرَ سمة ورق غير صالحة (Invalid paper attribute) (paperAttributeInvalid في contentWarnings الخاصة بالمستند).

#:::pagebreak

لا يفرض التوجيه نفسه الزوجية بمفرده، بل يؤثر في إخراج الكتلة التالية فقط. استخدمه لإنهاء مقدمة، أو لإجبار إهداء على صفحة خاصة به، أو لتعليم نهاية قسم. وحين يُراد فاصل صفحات وإعادة ضبط للترقيم في الموضع نفسه، ضع :::pagebreak ثم :::numbering: يُطبَّق تبديل الترقيم على الصفحة الجديدة التي أنشأها :::pagebreak للتو.

فاصل الصفحات في صفحة لا تزال فارغة لا يفعل شيئًا، فلا يضيف صفحة فارغة أبدًا. ولا يحلّ محل breakBefore لعنوان يليه مباشرة (للمستوى 1 واحد افتراضيًا): يظل العنوان يطبّق زوجيته، وقد يضيف ذلك صفحة فارغة بعد الصفحة التي فتحها التوجيه. ولبدء عنوان في ذلك الموضع بالضبط، أوقف فاصله (انظر الإعدادات › أنماط العناوين). وبعد عنوان غلاف يملأ صفحته يكون الفاصل اختياريًا: فالغلاف يحجز بالفعل بقية صفحته، في التخطيطات ذات العمود الواحد ومتعددة الأعمدة على السواء، و:::pagebreak بعده مباشرة لا يضر. ولا يلزم إلا بعد غلاف يتوقف تصميمه قبل أسفل الصفحة، حين ينبغي أن يبدأ النص مع ذلك في الصفحة التالية (انظر الإعدادات › الارتفاع المحجوز).

The old chapter ends here.
 
:::pagebreak{parity="odd"}
 
# A new chapter

والعلَم center (:::pagebreak{center}، ويُلغى بـ center=false) يضع نص الصفحة التي يفتتحها الفاصل في الوسط بين رأس مساحة النص وذيلها، وعرضًا في النص العمودي: وهو ページの左右中央 في صفحة عنوان الجزء أو الإهداء في الكتاب الياباني. وتبقى العناصر العائمة والحواشي والترويسات في مواضعها، والصفحة الممتلئة أصلًا تُترك كما هي. ولا يُنهي العلَم الصفحة: أغلقها بـ :::pagebreak آخر.

:::pagebreak{center}
 
# 上 先生と私
 
:::pagebreak

سمة الزوجية (parity)

تقبل السمة parity القيم الخمس نفسها التي يقبلها headings.levels[*].breakBefore.parity:

  • 'any': القيمة الافتراضية، بلا قيد على الزوجية؛ يفتح الفاصل صفحة جديدة فحسب.
  • 'odd' / 'even': تُفتح الصفحة الجديدة في الجانب المطلوب من الصفحتين المتقابلتين؛ ولا تُدرج صفحة فارغة واحدة إلا إذا كانت الصفحة التالية الطبيعية في الجانب الخطأ.
  • 'always-odd' / 'always-even': تضمن صفحة فاصلة فارغة إلزامية واحدة على الأقل بين المحتوى السابق والصفحة الجديدة، ثم تفرض الزوجية. تتبع الصفحة الفارغة الفاصلة الفصل السابق؛ وأي حشو إضافي للزوجية يتبع ما يليه.

لمن تتبع الصفحة الفارغة

يميّز نموذج VDTPage بين نوعَي الصفحات الفارغة اللذين يمكن أن يُدخلهما :::pagebreak (وbreakBefore):

  • blankForParity: true: تُدرج لاستيفاء قيد الزوجية. وفي ترويسات {chapterTitle} تحمل هذه الصفحة عنوان الفصل القادم، لأن الصفحة الفارغة لا توجد إلا لدفع ذلك الفصل إلى الزوجية الصحيحة.
  • blankForForce: true: الفاصل الإلزامي الذي يتقدّم في أوضاع 'always-*'. وهو يتبع الفصل السابق: وقفة متعمدة في نهاية الفصل، لا حشوًا للزوجية لأجل الفصل التالي.

والقاعدتان نفسهما تعطيان الصفحة الفارغة ترويسات قسم منسَّق ولوحة ألوانه؛ انظر الإعدادات › أنماط العناوين.

استثناء بداية المستند

حين يكون :::pagebreak أول بنية في المستند على الإطلاق (أو حين يستدعي عنوان ذو breakBefore فاصلًا كهذا)، يُتخطى فرض الزوجية ما دامت الصفحة الأولى فارغة. فتقع الكتلة التالية في الصفحة 1 كما كُتبت، بصرف النظر عن الزوجية المطلوبة، بلا صفحة فارغة زائدة في البداية.

#:::numbering

بـ:::numbering تعيد تشغيل عدّاد الصفحات في منتصف المستند. ومثال الكتاب النموذجي:

---
title: "A Book With Front Matter"
---
 
# Preface
 
…
 
:::pagebreak{parity="odd"}
:::numbering{format="decimal" startAt=1}
 
# Chapter 1

تُرقَّم صفحات المقدمة i، ii، iii، …؛ ويبدأ الفصل الأول في صفحة فردية رقمها 1.

تغييرات الصيغة وحدها (بلا startAt) تُبقي العدّاد مستمرًا، وهذا مفيد مثلًا للتحول من lower-alpha إلى upper-alpha بلا إعادة ضبط.

يقبل format أي تهجئة لصيغة ترقيم: roman-lower وi تعملان كما تعمل lower-roman، وarabic كما تعمل decimal، و一 وあ كما تعمل japanese-informal وhiragana (انظر الإعدادات › تهجئات صيغ الترقيم). والقيمة التي ليست أيًّا منها تترك الصيغة على حالها، وينبّه إليها Sandbox.

أما lines فيعيد عدّ ترقيم الأسطر، لا عدّاد الصفحات: يأخذ السطر المعدود التالي الرقم المعطى، أيًّا كانت قيمة lineNumbers.restart. والقيمة التي ليست عددًا صحيحًا يساوي 0 أو أكثر تُتجاهل.

## الفصل الثاني
 
:::numbering{lines=1}

#:::space

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

The last paragraph of the scene.
 
:::space
 
A new scene begins one line lower.
 
:::space{lines=2}
 
Two lines lower still.
  • lines: مقدار الفراغ بأسطر المتن (شبكة خطوط الأساس). القيمة الافتراضية 1. الأعداد الصحيحة تُبقي كل سطر نص على الشبكة، فتظل الأعمدة متحاذية عبر الصفحة؛ أما الكسر (lines=0.5) فيُحترم بدقة، على حساب ذلك التحاذي حتى الكتلة التالية التي تُلحَق بالشبكة. والقيمة التي ليست عددًا أكبر من 0 ولا تزيد على 20 ترجع إلى سطر واحد، وينبّه إليها Sandbox (حجم مسافة غير صالح، Invalid space size).
  • يُضاف ولا يُدمج. يُضاف الفراغ إلى الهامش القائم بالفعل بين الكتلتين، كالهامش العلوي للعنوان أو الهامش السفلي للقائمة، بدلًا من أن يذوب فيه. وسطرا :::space متتاليان يضيفان سطرين.
  • يُسقط عند الفاصل، مثل \vspace في LaTeX: يختفي في أعلى العمود أو الصفحة، فلا تبدأ صفحة بفجوة أبدًا؛ وإذا لم يتسع له المكان في أسفل العمود فإنه ينهي ذلك العمود فحسب، بلا ترحيل للباقي.
  • الفقرة التي تليه تُنضَّد بلا إزاحة. حين يكون bodyText.indentAfterHeading معطّلًا، تفقد الفقرة الواقعة مباشرة بعد :::space إزاحة سطرها الأول، كما تفعل بعد العنوان، وهو العرف المعتاد للنص الذي يُستأنف بعد سطر فارغ.
  • داخل الإطار (أو داخل مجموعة :::columns) يفصل بين أبناء الإطار بالطريقة نفسها، مقيسًا بأسطر متن الإطار الخاصة. وقبل الكتلة الأولى في الإطار يُسقط، كما في أعلى العمود، لأن الحشو يفصل المحتوى عن الإطار بالفعل، إلا في حالتين يفتح فيهما ذلك القدر من المكان: تحت عنوان الإطار مباشرة، وفي إطار لا يحوي شيئًا آخر (مربع إجابة، أو فراغ للكتابة فيه، يُقاس بالأسطر). ويختفي دائمًا في أعلى مجموعة :::columns، وفي رأس كل عمود من أعمدتها، وفي أعلى الجزء من الإطار المنقسم الذي يستمر في العمود أو الصفحة التالية. وداخل حاوية :::paragraphs يعمل كما يعمل بين فقرات المتن.
  • الإبقاء مع التالي يحسب حسابه: العنوان الذي يليه :::space ينتقل إلى الأمام حين لا يتسع تحته الفراغ والأسطر الأولى من نصه.

مربع الإجابة في ورقة العمل إطار لا محتوى له سوى الفراغ: السؤال في عنوانه، وتحته متسع لأربعة أسطر.

:::callout{type="answer" title="1. Name the three parts of the lantern."}
:::space{lines=4}
:::

للحصول على فاصل ثابت بدلًا من فراغ، استخدم :::columnbreak أو :::pagebreak.

#:::verse

قصيدة. يصفّها :::verse بإحدى طريقتين: سطرًا سطرًا، كما تُطبع أكثر القصائد، أو بالتخطيط العربي الكلاسيكي للقصيدة العمودية، كل بيت بشطرين متجاورين. القصيدة التي تحمل أسطرها فاصل الشطرين (||، أو \\ بين مسافتين) تأخذ التخطيط العربي، وأي قصيدة أخرى تُصَفّ سطرًا سطرًا؛ ويختار layout=lines أو layout=bayt في سطر الفتح إحداهما.

سطرًا سطرًا

اكتب القصيدة كما تُطبع: سطر من الشعر في كل سطر من Markdown، وسطر فارغ بين المقاطع، ومسافات قبل السطر لإزاحته. وهذه قصيدة إنجليزية في كتاب عربي، باتجاهها ولغتها:

:::verse{dir=ltr lang=en}
Whose woods these are I think I know.
His house is in the village though;
  He will not see me stopping here
  To watch his woods fill up with snow.
:::
  • الأسطر. كل سطر غير فارغ سطر من الشعر، يُقرأ وحده بصفته Markdown داخل السطر: المائل والأحرف الكبيرة الصغيرة والحواشي والإحالات كلها تعمل. وسلسلة الأسطر الفارغة فاصل واحد بين مقطعين.
  • الإزاحات. عرض كل مسافة في أول السطر indentStep، وهو 0.5 em افتراضيًا، فتزيح مسافتان السطر em واحدًا؛ وعلامة الجدولة بأربع مسافات، والمسافة الإيديوغرافية (U+3000) باثنتين.
  • التتمّات. سطر الشعر الأعرض قليلًا من عرض السطر تضيق أولًا المسافات بين كلماته، حتى bodyText.minWordSpacing من عرضها الطبيعي (الحد الذي يضيق إليه النص المضبوط)، فيبقى في سطر واحد؛ وtighten=false في سطر الفتح، أو bodyText.verse.tighten: false، يُكمله في سطر تالٍ بدلًا من ذلك. والسطر الذي يبقى أعرض بعد ذلك يُكمَل عند مسافة بين كلمتين. مع turnover=hang (الافتراضي) تُعلَّق البقية في السطر التالي، مُزاحة بمقدار hang عن بداية سطرها: hangingIndent في نمط فقرة القصيدة، وإلا 2 em (bodyText.verse.hang). ومع turnover=right تُصَفّ ملاصقة لنهاية العرض بعد قوس معقوف (turnoverMark، وهو [ افتراضيًا)، على عادة الطبعات الإنجليزية والإسبانية. ولا يُقسم الشعر بالواصلة إلا إذا حدّد نمط فقرته hyphenation: true بنفسه. ولا ينفصل سطر عن تتمّته أبدًا عند فاصل عمود أو صفحة.
  • المقاطع. المسافة بين مقطعين سطر واحد من تباعد أسطر القصيدة؛ ويجعلها stanzaSpace=0.5 نصف سطر، ويحدّدها طول (stanzaSpace=6pt) بدقة. وعلى شبكة خط الأساس تصير أسطرًا كاملة من الشبكة. تنقسم الأعمدة والصفحات بين المقاطع أولًا؛ وداخل المقطع بقواعد الأسطر اليتيمة والأرملة، التي تعدّ حينئذ أسطر المقطع. ويُبقي keepStanzas=N كل مقطع من N سطرًا أو أقل كاملًا: الهايكو يأخذ keepStanzas=3 والتانكا keepStanzas=5.
  • الموضع. تتوسط القصيدة العرض على أطول أسطرها، وكل سطر محاذٍ لبداية القصيدة (align=center، المعتاد لقصيدة مقتبسة في النثر)؛ ويحاذيها align=start لبداية العرض، وهو الافتراضي في النص العمودي. وتُبقي الفقرة التي تمهّد للقصيدة سطرها الأخير مع أسطرها الأولى.
  • الأسطر المتدرجة. السطر المكتوب + … يبدأ حيث انتهى السطر الذي فوقه، بعد مسافة بين كلمتين، كالسطر الذي يتقاسمه متكلمان في المسرح الشعري. اكتب \+ لسطر يبدأ بعلامة الجمع.
  • الوقفات. مع keepSpaces في سطر الفتح، تحتفظ سلسلة من مسافتين أو أكثر داخل السطر بعرضها؛ ومن دونه تُدمج المسافات كما في أي فقرة.
  • الخط والاتجاه. يسمّي style نمط فقرة يعطي الخط والحجم وتباعد الأسطر وindent والمسافة فوق القصيدة وتحتها. ويحدّد dir وlang اتجاهها ولغتها: القصيدة اللاتينية في كتاب عربي (dir=ltr) تُزاح من جهة بدايتها هي. وفي النص العمودي كل سطر من الشعر عمود، يُزاح من الرأس.
السمةالافتراضيالوصف
layoutautolines أو bayt أو auto: التخطيط العربي حين يحمل سطر فاصلًا.
indentStep0.5emعرض مسافة واحدة في أول السطر.
turnoverhanghang أو right.
hanghangingIndent النمط، وإلا 2emإزاحة التتمّة المعلّقة عن بداية سطرها.
turnoverMark[العلامة التي تسبق تتمّة مصفوفة إلى الطرف.
stanzaSpace1المسافة بين المقاطع: العدد وحده يعدّ أسطرًا من تباعد أسطر القصيدة، والطول هو ذلك الطول.
keepStanzas0عدم قسمة المقاطع التي لا تزيد أسطرها على هذا العدد؛ 0 يعطّله.
tightentrueتضييق المسافات بين كلمات السطر الأعرض قليلًا، حتى bodyText.minWordSpacing، قبل إكماله في سطر تالٍ.
keepSpacesمعطّلإبقاء سلاسل المسافتين أو أكثر داخل السطر.
aligncenter (start في النص العمودي)توسيط القصيدة على أطول أسطرها أو محاذاتها للبداية.
style وdir وlang—نمط فقرة القصيدة واتجاهها ولغتها.
numberedtruefalse تُخرج القصيدة من ترقيم الأسطر: لا تُعدّ أبياتها.
lineStart—رقم السطر لأول أبيات القصيدة. ومنه يبدأ العدّ من جديد، أيًّا كانت قيمة lineNumbers.restart.
intervallineNumbers.intervalالفاصل الخاص بالقصيدة: اطبع رقم كل بيت رقمه من مضاعفات N.

يحدّد bodyText.verse القيم الافتراضية لكل القصائد (انظر الإعدادات › الشعر). ويحتفظ النص الخام بالقصيدة كما كُتبت، فاصل سطر بين الأسطر وسطر فارغ بين المقاطع، فيقرؤها المقطع المنسوخ والبحث سطرًا سطرًا؛ ويصفّ EPUB المرن كل مقطع عنصرًا تُعلَّق أسطره تتمّاتها، ويوسم PDF الموسوم كل مقطع فقرة.

ترقيم الأسطر. مع تفعيل lineNumbers تُعدّ أبيات القصيدة (انظر الإعدادات › ترقيم الأسطر). يُعدّ كل بيت مرة واحدة: تتمّته لا تأخذ رقمًا، والمسافة بين المقاطع لا تُعدّ. وافتراضيًا يطبع كل بيت خامس رقمه في الهامش الخارجي، ويبدأ العدّ من جديد عند كل قصيدة. والقصيدة المنضّدة بالتخطيط العربي الكلاسيكي تعدّ سطرًا واحدًا لكل بيت. ويضبط سطر الفتح قصيدة واحدة: lineStart=N يعطي أول أبياتها رقمًا، وinterval=N يعطيها فاصلًا خاصًا، وnumbered=false يُخرجها من العدّ.

:::verse{lineStart=37}
…
:::

بالفاصل الافتراضي، 5، تطبع هذه القصيدة 40 و45 وهكذا بجوار أبياتها.

التخطيط العربي الكلاسيكي

قصيدة بالتخطيط العربي الكلاسيكي (قصيدة أو قطعة): كل بيت في سطر واحد بشطرين، الصدر في جانب البداية (اليمين في العربية) والعجز في جانب النهاية، وبينهما فجوة. اكتب بيتًا في كل سطر، وافصل شطريه بـ|| (وتعمل أيضًا \\ مع مسافة على كل جانب، كما في نصوص Wikisource). والسطر الذي لا فاصل فيه شطر منفرد، يوضع في وسط القصيدة.

فأنشد يقول:
 
:::verse
يَا حُرْقَةَ الدَّهْرِ كُفِّي || إِنْ لَمْ تَكُفِّي فَعِفِّي
فَلَا بِحَظِّيَ أُعْطِي || وَلَا بِصَنْعَةِ كَفِّي
:::
  • عرض واحد. يُنضَّد كل شطر في القصيدة بعرض واحد، فيبدأ كل صدر على خط عمودي واحد وينتهي كل عجز على خط آخر، وتصطف حروف الروي على طول القصيدة. والعرض هو عرض أعرض شطر، على ألا يزيد على نصف عرض السطر مطروحًا منه الفجوة؛ ويضبطه width (width=55mm). ويُبلغ كل شطر هذا العرض بالكشيدة أولًا (يمدّ الشعر أكثر من النثر: ضعف bodyText.kashidaMaxLength)، ثم بالمسافات بين كلماته؛ والشطر المكوّن من كلمة واحدة لا تستطيع ملأه يترك الباقي في الفجوة.
  • الفجوة 2 em افتراضيًا؛ ويضبطها gap (gap=3em، والعدد المجرّد بوحدة em). ويطبع ornament علامة في وسطها (ornament="٭")، وهي ليست جزءًا من النص.
  • أعرض من اللازم. الشطر الأعرض من العرض المشترك يضيّق أولًا المسافات بين كلماته إلى bodyText.minWordSpacing. فإن لم يتسع بعد ذلك، نُضِّد بيته مدرّجًا: الصدر محاذيًا لجانب البداية في سطر خاص به، والعجز محاذيًا لجانب النهاية في السطر التالي.
  • الموضع. توضع القصيدة في وسط العمود؛ وalign=start يحاذيها لجانب البداية. لا يُقسم البيت أبدًا بين عمودين أو صفحتين، وتتبع القصيدة قواعد الأسطر اليتيمة (orphans) والأرامل (widows) التي تتبعها الفقرات (القصيدة ذات ثلاثة أبيات أو أقل تبقى كاملة). والفقرة التي تسبق القصيدة وتقدّم لها («فأنشد يقول:») تُبقي سطرها الأخير مع الأبيات الأولى.
  • الحرف. تأخذ القصيدة محرف نص المتن وحجمه وتباعد أسطره؛ ويسمّي style نمط فقرة لها (style="verse")، وبهذا تحصل القصيدة المشكولة على التباعد الإضافي الذي تحتاجه حركاتها. ويضبط dir=ltr أو dir=rtl اتجاهها كأي كتلة؛ والقصيدة المكتوبة بالحروف اللاتينية في كتاب من اليسار إلى اليمين يكون صدرها على اليسار.

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

#:::toc

يطبع :::toc جدول المحتويات حيث يقع. ويتمدد إلى كتل عادية، واحدة لكل عنوان من المستويات التي يسردها toc.levels (المستوى 1 افتراضيًا) وواحدة لكل :::part، فتتدفق المحتويات عبر الأعمدة والصفحات كأي نص آخر، والنقر على مدخل ينقلك إلى سطر التوجيه. يُظهر المدخل رقم العنوان (مخرجات numberingTemplate الخاصة به، وإلا فترتيب الفصل)، وعنوانه، وخطًا منقّطًا، ورقم الصفحة التي يبدأ فيها، وحين يكون toc.subtitle مفعّلًا، سطرًا ثانيًا فيه سمة من سمات العنوان مثل {author="…"} للفصل. ويحصل الجزء على صف خاص به، يصممه toc.parts.design ويلوّنه palette الخاص بالجزء. والعناوين التي في نمطها numbered: false تُدرج بلا رقم؛ و{toc="false"} على عنوان يُبقيه خارجها (عنوان المحتويات نفسها عادة).

# Contents {style="front-matter" toc="false"}
 
:::toc

سمتان تغيّران ما يطبعه جدول محتويات بعينه، أيًّا كان ما تقوله الإعدادات. تسرد levels مستويات العناوين التي يُدرجها: نطاقًا (levels="1-2")، أو مستوى واحدًا (levels="2")، أو قائمة (levels="1,3")؛ والمستوى الذي لا يمنحه toc.levels نمطًا يأخذ نمط أقرب مستوى فوقه. وتُبقي keep كل مجموعة من المحتويات في عمود واحد وصفحة واحدة، كما يفعل toc.groups.keepTogether: keep="part" تُبقي صف الجزء مع فصوله، وkeep="1" (حتى "6") عنوانًا من ذلك المستوى مع المداخل التي تحته، وkeep="none" تُلغي الإبقاء المضبوط في الإعدادات. والمجموعة التي لا يتسع لها المكان تنتقل كاملة إلى العمود أو الصفحة التالية؛ والأطول من عمود تُقسم، ويُفتتح العمود الذي تستمر فيه بصف رأسها من جديد، تتبعه علامة استمرار مثل (تابع).

# Contents {style="front-matter" toc="false"}
 
:::toc{keep="part" levels="1-2"}

أرقام الصفحات هي الأرقام التي يطبعها المستند فعلًا. فالمستند المُخرَج وحده يُعاد إخراجه بأرقام الجولة السابقة حتى تكفّ عن التغيّر؛ ومع إعادة بدء الترقيم بعد الصفحات التمهيدية (وصفة :::numbering أعلاه) تكفي جولة إضافية واحدة لتستقر. أما الفصل المُخرَج وحده (معاينات Sandbox) فيتلقى مخطط الكتاب كله من مضيفه بدلًا من ذلك. انظر جدول المحتويات في مرجع الإعدادات.

#:::index

يطبع :::index الفهرس الأبجدي في آخر الكتاب حيث يقع: المصطلحات المعلَّمة بـ:index[…] أو :index{term="…"} في أنحاء الكتاب، مع صفحاتها التي تتبع النص كلما تحرك. وهو مشروح مع العلامات في الفهرس الأبجدي. ولا ينتهي عمود بعد المدخل الأول من مجموعة ولا قبل مدخلها الأخير: يبقى مدخلان من المجموعة وينتقل مدخلان، أو تنتقل المجموعة كاملة (index.groups.splitMinEntries).

# Index {style="index"}
 
:::index

#فواصل الأسطر

تُوصل أسطر الفقرة بمسافة. ولإنهاء سطر داخل الفقرة دون بدء فقرة جديدة (عنوان بريدي، أو تحية رسالة، أو إهداء)، اختم سطر النص بشرطة مائلة عكسية، وهي الفاصل الإجباري في CommonMark، أو اكتب \\ تليها مسافة:

إلى حارس المنارة،\
في آخر الرصيف الشمالي.
 
أحمد سالم \\ شارع الملك فيصل 4 \\ الرياض
  • يُضبط السطر الذي يسبق الفاصل بعرضه الطبيعي، كما يُضبط السطر الأخير من الفقرة، ولا يُمدّ إلى عرض السطر. ويفتح النص الذي يليه سطرًا جديدًا من الفقرة نفسها، بلا إزاحة للسطر الأول ولا مسافة فوقه؛ ومع الإزاحة المعلّقة يتعلّق كأي سطر بعد الأول.
  • تقبله الفقرات، والاقتباسات (> السطر الأول\ فوق > السطر الثاني)، والحواشي، وعناصر القوائم. وعنصر القائمة سطر واحد في النص، فيُكسر بـ\\.
  • تُطبع الشرطة المائلة العكسية التي تختم الفقرة، كما في CommonMark، والفاصلان المتتاليان فاصل واحد: لسطر فارغ، ابدأ فقرة جديدة أو أضف :::space.
  • لا يكون \\ الملتصق بالحرف التالي فاصلًا: \\* تطبع شرطة مائلة عكسية ونجمة مُهرَّبة، وC:\\Temp تطبع الشرطتين. وفي الشيفرة المضمّنة وفي الصيغة تعود الشرطات إلى الشيفرة والصيغة.
  • المسافتان في آخر السطر، وهما الفاصل الإجباري الآخر في CommonMark، لا تكونان فاصلًا: لا تُريان في المحرّر، وكثير من المحرّرات يتركهما، فتكسران أسطرًا لم يقصد أحد كسرها.
  • يحمل النص المنسوخ من عارض HTML فاصل سطر في موضع الفاصل، وEPUB المرن <br/>، ونص PDF نهاية سطر، والتصدير إلى Word فاصل سطر يدويًا (Shift+Enter)، يقرؤه الاستيراد من Word فاصلًا من جديد.
  • تحتفظ القصيدة بأسطرها وإزاحاتها ومقاطعها في كتلة :::verse، دون شرطة في آخر كل سطر.

حتى postext 1.22 كانت الشرطة المائلة العكسية تُطبع وتُوصل الأسطر بمسافة. والكتاب المحفوظ آنذاك الذي يختم نصه سطرًا بشرطة مائلة عكسية، أو يضع \\ متبوعة بمسافة، يحتفظ بتلك القراءة (bodyText.hardLineBreaks: false، انظر الإعدادات › الحزم التي كتبها postext 1.4 أو ما قبله).

#فواصل الأسطر في العناوين

اكتب \\ داخل عنوان (أو داخل السمة title لجزء) لفرض فاصل سطر حيث يُعرض العنوان بوصفه عنوانًا: يستمر العنوان داخل العمود في التدفق ويُظهر مسافة في ذلك الموضع، بينما يكسر {titleText} في تصميم الافتتاح السطر عند تلك النقطة (في كل أوضاع overflow لعنصر النص). أما الترويسات و{chapterTitle} و{partTitle} ومخطط PDF فترسم العنوان دائمًا في سطر واحد. وفي الصينية أو اليابانية يُقرأ الفاصل مسافةً إيديوغرافية بين حرفين من ذلك النظام (عنوان من شطرين متقابلين)؛ وحيث يلتقي أحدهما برقم أو نص لاتيني (关于举办 \\ 2026年…) تضع الصفحة مسافة الفصل بين الحروف الهانية واللاتينية، وتضمّ إشارات PDF المرجعية وعنوان المستند النصفين بلا شيء بينهما، كما يُكتب النص الصيني العادي.

# Concepts of health and illness. \\ Community health {author="I. Zango Martín"}

#القصص المصورة

تُكتب صفحات القصص المصورة والشرائط المصورة والصفحات المزدوجة في كتلتين مسيّجتين يقرأ المحرّك متنهما بنفسه، سطرًا سطرًا: :::page و:::strip. وداخلهما تبدأ أسطر ::panel الإطارات، وتكتب أسطر الحوار ما فيها. والدليل، بقواعد التخطيط وكتابة الحوار والمخرجات، هو القصص المصورة؛ والإعدادات في الإعدادات › القصص المصورة.

#:::page

:::page{split="30 [30 | 20 | *] / *" gutter=4mm}
::panel{art=lh-arrive}
caption: في كل صيف كانت مايا تقضي أسبوعًا عند المنارة.
maya: جدّي! لقد وصلت!
::panel{art=lh-radio focus="40% 50%"}
tomas: وصلتِ في وقتك.
::panel{art=lh-maya}
maya{thought}: يبدو ذلك الصمام مرتخيًا…
::panel{art=lh-beam bleed}
sfx{rotate=-8}: كراك
:::

كتلة :::page صفحة واحدة من القصة: تفتتح صفحة جديدة، وتشغلها كلها، ويبدأ النص الذي يلي ::: الختامية في الصفحة التالية. وسماتها split (كيف تُقسم الصفحة إلى خانات: أحجام بالنسبة المئوية تفصل بينها / للصفوف و| للإطارات المتجاورة، وقائمة بين قوسين مربعين لتقسيم الخانة مرة أخرى، و* للباقي، وa~b لخط مائل)، وgutter (طول واحد، أو طولان: بين الصفوف وبين الإطارات؛ والعدد المجرّد بالمليمتر)، وstyle (نمط إطار مسمّى)، وbleed، وdirection (ltr أو rtl، ويُكتب أيضًا dir)، وspread (انظر الصفحات المزدوجة). ومن دون split تُرصّ الإطارات صفوفًا متساوية. ولا تُقرأ داخل الكتلة كتل Markdown ولا الحاويات ولا التوجيهات؛ أما التعليقات <!-- comments --> فيُتعرَّف عليها وتُهمَل.

#الإطارات

سطر ::panel{…} يبدأ إطارًا، يملأ الخانة التالية بترتيب القراءة ويمتد إلى سطر ::panel التالي أو إلى سور الإغلاق:

السمةالأثر
art=<id>الرسم: مورد صورة نقطية أو SVG. ومن دونه يبقى الإطار فارغًا.
fit=cover، fit=containقصّ الرسم ليملأ الخانة (دون القصّ داخل منطقته الآمنة أبدًا)، أو عرضه كاملًا.
focus="x% y%"النقطة التي تبقى في الوسط حيث تترك المنطقة الآمنة مجالًا.
style=…، border=none، border=0.5mm، bg=#hexنمط إطار مسمّى، والحدّ، والخلفية (لون، أو معرّف من لوحة الألوان، أو none).
bleed، bleed="top start"، bleed=falseمدّ الجوانب الملامسة للإطار العام إلى حدّ القصّ ومنطقة النزف.
pad="…"اجعل الإطار أصغر من خانته: من طول واحد أو نسبة مئوية واحدة إلى أربعة (الأعلى، والنهاية، والأسفل، والبداية).
inset="x y w h"ضع الإطار فوق الإطار السابق، في ذلك الصندوق بنسب مئوية منه، بدل أن تعطيه خانة.
pop=<id>قطعة شفافة مفرّغة تُرسم فوق الحدّ بقصّ الرسم نفسه (حدّ مكسور).
mirror، mirror=falseاقلب الرسم، أو أبقه كما رُسم في صفحة معكوسة.
alt="…"، id=…البديل النصي (وإلا فـ altText المورد) ومعرّف مرساة.

#أسطر الحوار

كل سطر في الإطار فقاعة واحدة أو تعليق سردي واحد أو مؤثر صوتي واحد، ويُكتب بصيغة key{attributes}: text:

maya: جدّي! لقد وصلت!
tomas{whisper}: صه. اسمعي.
caption{at=bottom-end}: على بعد ثلاثة شوارع.
sfx{at="62% 40%" rotate=-8 size=1.4}: كراك
ben{tail=start}: (من خارج الإطار) أنا هنا!
sfx{vertical size=2.6 font="Dela Gothic One"}: ドン
maya: هذا السطر يستمر
  في السطر التالي،\
  وينكسر هنا.
  • المفتاح معرّف المتحدث (حروف وأرقام و_ و. و-)، وهو نفسه في كل ترجمة؛ والمفاتيح caption وsfx وnote محجوزة. ويجوز أن تكون النقطتان : كاملتي العرض.
  • الكلمة المجرّدة بين القوسين المعقوصين نمط فقاعة (thought أو whisper أو shout أو radio أو inner أو أحد أنماط comics.balloonStyles)؛ وstyle= تقول الشيء نفسه.
  • at تثبّت الفقاعة: في نقطة بالنسبة المئوية من رسم الإطار (at="62% 40%")، أو في زاوية أو عند حافة (top-start وtop-end وbottom-start وbottom-end وtop وbottom). وto توجّه الذيل إلى نقطة من الرسم؛ وtail=none تحذفه وtail=top|bottom|start|end|left|right توجّهه إلى خارج الإطار. وjoin وjoin=false تصلان الفقاعة بالفقاعة السابقة للمتحدث نفسه أو تبقيانها منفصلة؛ وbreak تسمح لها بعبور الحدّ، ولا يُبلَّغ عن هذا العبور بوصفه فيضًا. وrotate (بالدرجات) وsize (معامل، للمؤثرات الصوتية) وcolor وfont تغيّر كتابتها.
  • vertical وhorizontal (أو mode=vertical وmode=horizontal) تحدد اتجاه كتابة السطر مقدَّمًا على اتجاه الكتاب: ドン غير مترجمة تُنضَّد في عمود في طبعة أفقية، ولافتة مكتوبة بالعرض تُنضَّد في سطر أفقي في طبعة عمودية. والعمود في كتاب بلغة أخرى يتبع قواعد نصه هو (قواعد اليابانية إن كان فيه كانا). وفي الكتاب العمودي يُنضَّد السطر الذي لا حروف صينية أو يابانية فيه أفقيًا على كل حال.
  • السطر المُزاح بمسافتين أو بعلامة جدولة يكمل الفقاعة التي فوقه؛ والشرطة المائلة العكسية في آخر السطر تكسر النص هناك. وتُتجاهل الأسطر الفارغة.
  • النص Markdown داخل السطر: التوكيد (يُكتب بالعريض المائل)، و:tcy و:ruby (قراءته فوق الأساس، إلا فوق أساس يُقرأ من اليمين إلى اليسار) و:ltr و:rtl (مقطع يحتفظ باتجاهه). ولا تُقرأ الحواشي ولا علامات :ref.

#:::strip

:::strip{split="* | * | *" aspect=3 span=page placement=top}
::panel{art=pip-1}
pip: صباح الخير يا أوتو!
::panel{art=pip-2}
::panel{art=pip-3}
otto: أهو كذلك؟
:::

لكتلة :::strip متن الصفحة، لكنها تقع في النص صندوقًا واحدًا لا ينقسم، مقسومًا إلى إطارات. وسماتها span (column، وهو الافتراضي، أو page)، وplacement (here، وهو الافتراضي، حيث كُتبت؛ أو top أو bottom أو auto، فتُعوَّم كالشكل)، وحجمها، إما height (طول، والعدد المجرّد بالمليمتر) وإما aspect (العرض مقسومًا على الارتفاع: 3 أو 4/1 أو 4:1؛ وافتراضيًا النسب التي تجعل إطاراتها مربعة). والشريط بعرض الصفحة المنضَّد here في صفحة من عدة أعمدة يقطع الأعمدة حيث يقع، كما يفعل الصندوق الممتد بعرض الصفحة. ويجعله width أضيق من العرض الذي يمتد عليه (60% منه، أو طولًا)، ويضعه align في start ذلك العرض أو center (الافتراضي) أو end، على اتجاه النص. ويضع caption="…" تحته تعليقًا بنمط التعليقات؛ ومع type=figure (نوع مورد) يأخذ التعليق تسمية النوع ورقمه ويُعدّ الشريط في تسلسل ذلك النوع، ومع id=… تسمّيه :ref. ومن دون split توضع الإطارات جنبًا إلى جنب. ولا تُقرأ الشرائط إلا في المستوى الأعلى من الفصل.

#الصفحات المزدوجة

يبسط :::page{spread} صفحة واحدة على صفحتين متقابلتين: يغطي التقسيم منطقتي النص موصولتين عند الكعب، بلا هامشيهما الداخليين، ويجوز للإطار أن يعبر الكعب. وتُفتتح الصفحتان المزدوجتان على صفحة زوجية، بعد صفحة فارغة عند الحاجة. انظر القصص المصورة › الصفحات المزدوجة.

#الصفحات المركّبة

تُنضَّد الصفحة المركّبة من قالب صفحة في الإعدادات (pageTemplates)، ويُصبّ محتواها في إطارات القالب بأسمائها. والدليل، مع التحذيرات، في الصفحات المركّبة.

  • ::::page{template="…"} … :::: هي الصفحة: أربع نقاط رأسية أو أكثر، يُغلقها سور مجرّد بعددها. والأسوار ذات النقاط الرأسية الثلاث داخلها (:::frame و:::callout و:::figure…) تعمل كما تعمل في كل مكان، ولا يُغلق ::: المجرّد الصفحة أبدًا. وتبقى :::page ذات النقاط الثلاث صفحة قصة مصوّرة.
  • :::frame{slot="…" label="…"} … ::: يحمل محتوى الإطار الذي له هذا الاسم: أي Markdown.
  • slot="…" على عنوان (## Retos {slot="retos-titulo"})، أو على ::resource{id="…" slot="…"}، أو على سور شيفرة، أو على حاوية :::، يرسل تلك الكتلة وحدها. والمحتوى الذي لا خانة له يذهب إلى إطار التدفق في القالب.
  • :::figure{resource="…" slot="…"} … ::: يضع موردًا واحدًا مع أسطر ::label[TEXT]{at="…" style="…"} الخاصة به، وat مرساة من مراسي الصورة أو نقطة "x% y%". ويعمل الشكل في النص الجاري أيضًا.