الفصل 3.5 · الجزء II · الحرفة
الإعدادات: العناوين
القيم الافتراضية للعناوين، وتجاوزات كل مستوى، والفاصل قبل العنوان، وافتتاحيات الفصول الممتدة بعرض الصفحة، والأعداد المكتوبة بالحروف
باختصار
تتناول هذه الصفحة إعدادات العناوين. تحدد خطًا وحجمًا ولونًا لها جميعًا، وتغيّر أيًّا منها لمستوى واحد، مثل عناوين الفصول. وتقرر هل يبدأ العنوان صفحة جديدة، وهل يجب أن تكون هذه الصفحة يمنى أم يسرى. ويمكن أن يفتتح عنوان الفصل الصفحة بعرضها كله وبتصميم خاص به. ويمكن كتابة أرقام العناوين بالحروف، مثل «الفصل الأول».
#العناوين
تتحكم الخاصية headings في طباعة كل مستويات العناوين (H1–H6). يمكنك ضبط قيم افتراضية عامة تسري على كل المستويات، ثم تجاوز خصائص بعينها لكل مستوى.
#القيم الافتراضية العامة
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
fontFamily | string | 'Open Sans' | عائلة الخط لكل العناوين. |
lineHeight | Dimension | 1.2 em | ارتفاع السطر في العناوين، وهو أضيق منه في النص الأساسي. |
color | ColorValue | اللون الرئيسي (#295AA3) | لون نص العنوان. مرتبط بالمدخل main-color في لوحة الألوان الافتراضية، فإذا غيّرت ذلك اللون في اللوحة تغيّر لون كل العناوين. |
textAlign | 'left' | 'justify' | 'center' | 'right' | 'start' | 'end' | 'left' | محاذاة كل مستويات العناوين (لا توجد قيمة خاصة بكل مستوى): إلى اليسار بحافة يمنى حرّة، أو مضبوطة، أو في الوسط، أو إلى اليمين بحافة يسرى حرّة. العنوان المضبوط يضع سطره الأخير ملاصقًا لليسار، كما تفعل الفقرة، فيبدو العنوان ذو السطر الواحد كأنه 'left'. ترسم Canvas وHTML وPDF الأسطر بالطريقة نفسها، بما في ذلك بادئة الرقم. وتتبعها أيضًا الافتتاحية الافتراضية لعنوان span: 'page' ليس له تصميم متقدم (القيمة المضبوطة تضعها ملاصقة لليسار)؛ أما التصميم المتقدم فيحاذي عناصره النصية بقيمة align الخاصة بكل منها. |
fontWeight | number | 700 | وزن خط العناوين (100–900). |
marginTop | Dimension | 1.5 em | المسافة فوق العناوين. تُحذف في العنوان الذي يفتتح عمودًا (انظر columnHeadSpace). |
marginBottom | Dimension | 0.5 em | المسافة تحت العناوين. |
keepWithNext | boolean | true | عند true لا يوضع العنوان أبدًا عنصرًا أخيرًا في عمود أو صفحة. إذا لم يبقَ للكتلة التالية بعد العنوان متسع لعدد من الأسطر لا يقل عن bodyText.widowMinLines (أو لسطر واحد حين تكون قيمة bodyText.avoidWidows هي false)، يُدفع العنوان إلى الأمام ليبقى ملتصقًا بنصه. ويتفاعل مع bodyText.: إذا اضطرت تلك القاعدة إلى دفع الفقرة المنتهية بنقطتين كاملةً، انتقلت معها العناوين الأخيرة في العمود بدل أن تُترك معزولة. |
keepWithNextSpread | boolean | false | مع keepWithNext، يُسمح مع ذلك للعنوان بأن يختم آخر عمود نص في الصفحة الزوجية، لأن نصه يفتتح عندئذ الصفحة الفردية المقابلة في الصفحتين المتقابلتين نفسيهما (JLReq §4.1.7). والصفحات المتقابلة هي الصفحة 1 وحدها، ثم 2–3، و4–5…، محسوبةً مع pageIndexOffset، في الكتب المجلّدة من اليسار ومن اليمين على السواء. منذ postext 1.16. |
keepWithNextSplit | 'rules' | 'fill' | 'rules' | كيف تنقسم الفقرة التي تحت العنوان حين ينتهي العنوان في أسفل عمود ويؤدي دفع الفقرة كاملة إلى ترك العنوان خلفها. 'rules': أكبر عدد من الأسطر يتسع له المكان، بشرط أن يبقى تحت العنوان عدد من الأسطر لا يقل عن bodyText.widowMinLines وأن ينتقل إلى العمود التالي عدد لا يقل عن bodyText.orphanMinLines؛ وإذا لم يحقق أي تقسيم الشرطين معًا، انتقل العنوان مع فقرته، وملأت موازنة الأعمدة المكان الذي يتركه. 'fill': كل ما يتسع له المكان من أسطر مهما قلّ ما ينتقل منها، فالفقرة ذات الأسطر الأربعة التي يتسع المكان لثلاثة منها تنقسم 3 + 1. حتى الإصدار postext 1.4 كان كل عنوان ينقسم بهذه الطريقة، والإعدادات المخزّنة قبل configVersion 8 تحتفظ بها (انظر الحزم المكتوبة بالإصدار postext 1.4 أو أقدم). وعند تعطيل avoidWidows أو avoidOrphans يسقط ذلك الشق من القاعدة. |
snapToGrid | boolean | true | هل يعود التدفق إلى شبكة خطوط الأساس تحت العنوان. مع true تُقرَّب قيمة marginBottom للعنوان صعودًا إلى عدد صحيح من أسطر الشبكة؛ ومع false يُحتفظ بالهامش الدقيق، وقد يقع النص تحت العنوان خارج الشبكة حتى نقطة الالتقاط التالية (نهاية قائمة، أو ذيل حاوية :::paragraphs، أو معادلة منفصلة) — وهي الطريقة التي تضع بها كتب كثيرة سطرًا ونصف سطر تحت العنوان. يمكن لمستوى (levels[].snapToGrid) أو لنمط عنوان أن يحدد قيمته الخاصة؛ وهذه القيمة هي ما يرثانه. |
columnHeadSpace | 'none' | 'remainder' | 'none' | ما يحتفظ به العنوان المنضبط على الشبكة من المسافة التي فوقه حين يفتتح عمودًا، في رأس الصفحة أو تحت شكل أو جدول يتصدّر العمود. 'none': تُحذف المسافة كلها ويقف العنوان على السطر الأول من العمود، بمحاذاة العمود المجاور؛ ثم يضع الانضباط على الشبكة تحت العنوان جزء السطر الذي يحتاج إليه، فقد يبتعد نصه عنه أكثر مما يبتعد بعد فقرة. 'remainder': تُحذف المسافة بأسطر شبكة كاملة فقط ويبقى جزء السطر المتبقي فوق العنوان، فيبدأ النص تحته على البعد نفسه الذي يبدأ به بعد فقرة؛ ويبدأ العنوان أدنى قليلًا من رأس العمود ولا يتحرك أي سطر من النص. وهو يناسب كتابًا بعمود واحد، حيث لا رأس عمود مجاور يُظهر الفرق. وأي قيمة أخرى تُقرأ 'none'. لا يُطبَّق تحت افتتاحية بعرض الصفحة ولا على عنوان span: 'page' أو ذي lineSpan أو مخفي أو ذي تصميم (advancedDesign). منذ postext 1.28. |
inlineMarks | boolean | true | هل يقرأ العنوان علاماته المضمّنة كما تقرؤها الفقرة: italic وbold و^superscript^ و~subscript~ و:smallcaps[…] والروابط. المقطع المائل يعكس ميل العنوان، فيظهر قائمًا في عنوان مائل؛ والمقطع العريض يأخذ bodyText.boldFontWeight، أو وزن العنوان نفسه إن كان أثقل. يعرض جدول المحتويات المقاطع العريضة والمائلة أيضًا؛ أما الترويسات وإشارات PDF المرجعية فتطبع النص وحده. مع false تُحذف العلامات وتُطبع الكلمات بنمط العنوان نفسه، كما كان الحال حتى postext 1.4. الافتتاحية الافتراضية لعنوان span: 'page' ليس له تصميم تضبط أيضًا المقاطع العريضة والمائلة والعلوية والسفلية؛ أما تصميم العنوان (شريط افتتاح مصمَّم أو advancedDesign داخل العمود) فيطبع نصًا عاديًا في الحالتين، ما لم يقرأ عنصره النصي العلامات المضمّنة (inlineMarks: true): فعندئذ يحتفظ بمقاطع العنوان العريضة والمائلة والعلوية والسفلية (منذ postext 1.19). الإعدادات المخزّنة سابقًا التي تحمل عناوينها علامات تُقرأ بقيمة false (انظر الحزم المكتوبة بالإصدار postext 1.4 أو أقدم). |
balancing | ColumnBalancingConfig | مفعّلة | موازنة الأعمدة عموديًا — مسافة إضافية فوق العناوين كي تنتهي الأعمدة محاذية لأسفل الصفحة. انظر أدناه. |
عناوين في الوسط لقصائد أو لفصول مسرحية، بلا خانة تصميم:
headings: {
textAlign: 'center',
levels: [{ level: 2, textTransform: 'uppercase' }],
}تمرير كائن headings يحتفظ بكل قيمة افتراضية لمستوى لا تعيد ذكرها، بما في ذلك فاصل الصفحة قبل H1 (انظر تجاوزات كل مستوى).
#تجاوزات كل مستوى
يمكن لكل مستوى عناوين أن يتجاوز القيم الافتراضية العامة عبر المصفوفة levels. لا يختلف افتراضيًا إلا fontSize (إضافة إلى breakBefore في H1، المذكور أدناه) — وكل الخصائص الأخرى تُورث من إعدادات العناوين العامة.
| المستوى | حجم الخط الافتراضي | breakBefore الافتراضي |
|---|---|---|
| H1 | 18 pt | { enabled: true, parity: 'always-odd' } |
| H2 | 15 pt | { enabled: false, parity: 'any' } |
| H3 | 12 pt | { enabled: false, parity: 'any' } |
| H4 | 10 pt | { enabled: false, parity: 'any' } |
| H5 | 9 pt | { enabled: false, parity: 'any' } |
| H6 | 8 pt | { enabled: false, parity: 'any' } |
القيمة الافتراضية في H1 تحاكي إخراج الفصول في الكتب: كل عنوان من المستوى الأعلى يُفتتح في صفحة فردية جديدة (اليمنى في كتاب يُقرأ من اليسار إلى اليمين)، مع صفحة فاصلة فارغة إلزامية بعد الفصل السابق. تجاوزها في levels[0].breakBefore إذا كانت بنية مستندك أبسط من بنية الكتاب.
يُدمج breakBefore الخاص بمستوى حقلًا بحقل فوق تلك القيمة الافتراضية، وكائن headings الذي لا يذكره يحتفظ بها. القيمة { parity: 'odd' } في H1 تُبقي الفاصل وتغيّر الزوجية وحدها؛ والقيمة { enabled: false } تجعل الفصول تتوالى دون فاصل:
headings: {
fontFamily: 'Merriweather', // H1 still breaks to a fresh recto (always-odd)
levels: [{ level: 1, breakBefore: { parity: 'odd' } }], // …or: a recto, with no mandatory blank
}
headings: { levels: [{ level: 1, breakBefore: { enabled: false } }] } // chapters run onتغيّر في postext 1.5. حتى postext 1.4 كان أي كائن headings يعطّل فاصل H1 ما لم يُعَد ذكر levels[0].breakBefore، وكان breakBefore الجزئي يملأ حقله الناقص من القيمة الافتراضية التي لا فاصل فيها. لذلك فإن إعدادًا مكتوبًا في الشيفرة للإصدار 1.4 فيه كائن headings وليس فيه فاصل قبل H1 يفتتح الآن كل فصل في صفحة فردية جديدة، مع صفحات زوجية فارغة حيث يلزم. لإبقاء الفصول متوالية، أعطِ مدخل H1 في levels حقلًا واحدًا:
headings: { fontFamily: 'Merriweather', levels: [{ level: 1, breakBefore: { enabled: false } }] } // as 1.4 laid it outحين يكون الإعداد مخزّنًا، يستطيع المحرّك أن يعرف ذلك فيقوم بالعمل عنك: Sandbox للكتب والإعدادات التي حفظها آنذاك (انظر Sandbox › حفظ العمل)، وopenBundle / readBundle لحزمة .postext مكتوبة بالإصدار postext 1.4 أو أقدم (انظر الحزم المكتوبة بالإصدار postext 1.4 أو أقدم). أما الإعداد الذي خزّنته بنفسك فيمكن تمريره عبر migrateConfig(config) من postext/bundle، التي تكتب صراحةً الفواصل التي أخرجها الإصدار 1.4 (pinLegacyHeadingBreaks): enabled: false على H1 لم يكن له فاصل، وparity: 'any' بجانب enabled: true لم يذكر زوجية، في H1 وفي أنماط العناوين. وتثبّت أيضًا حجم الرياضيات، والمسافة حول الأشكال المضمّنة (في الإطارات أيضًا)، والعلامات المضمّنة في العناوين، وأحجام الحروف الاستهلالية، والمتسع تحت سطر النقطتين الذي يقدّم قائمة، والأسطر التي يتركها قطع الإطار من فقرة أو بند قائمة، وفواصل الأسطر عند الشرطات، والتقسيم سطرًا بسطر للنص غير المضبوط، وتقسيم الفقرة تحت العنوان، وفواصل الأسطر عند واصلة الكلمة المركبة، والمسافة تحت حاويات :::paragraphs، كما ضبطها الإصدار 1.4. مرّر نص Markdown للكتاب وسيطًا ثالثًا، { content }، فتُسقط تثبيت الرياضيات إذا لم يكن في النص $، وتثبيتات الفجوات إذا لم يضمّن أي سطر موردًا (وتثبيت فجوة الإطار إذا لم يفعل ذلك أي سطر داخل إطار)، وتثبيت علامات العناوين إذا لم يحمل أي عنوان علامة، وتثبيت سطر النقطتين إذا لم تلِ أي قائمة سطرًا ينتهي بنقطتين، وتثبيت قطع الإطار إذا لم يفتح النص أي :::callout، وتثبيت الشرطة إذا لم توضع أي شرطة ملاصقة بين كلمتين، وتثبيت تقسيم العنوان إذا لم يكن في النص عنوان، وتثبيت الحاوية إذا لم يفتح النص أي حاوية :::paragraphs، وتثبيت الكلمات المركبة إذا لم تقع أي واصلة بين حرفين؛ ولا يذهب تثبيت التقسيم غير المضبوط إلا إلى إعداد يجعل بعض النص الجاري غير مضبوط، ولا تثبيت الحاوية إلا إلى إعداد يعرّف نمط فقرة (انظر الحزم المكتوبة بالإصدار postext 1.4 أو أقدم). وللفواصل وحدها، استدعِ pinLegacyHeadingBreaks(config).
تدعم تجاوزات المستوى الخصائص نفسها التي تدعمها القيم الافتراضية العامة — fontSize وlineHeight وfontFamily وcolor وfontWeight وmarginTop وmarginBottom وsnapToGrid — إضافة إلى هذه الحقول الخاصة بالمستوى (ويقبلها نمط العنوان أيضًا):
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
italic | boolean | false | يرسم العنوان بخط مائل. يُطبَّق فوق fontWeight. |
textTransform | 'none' | 'uppercase' | 'none' | يحوّل نص العنوان إلى أحرف كبيرة (تبقى بادئة الترقيم كما كُتبت، وكذلك الشارة (chip) وتسمية :ref فيه). يحافظ على الطول كي تبقى خريطة المصدر في المحرّر متطابقة 1:1: الحروف التي يطول شكلها الكبير (ß → SS) تُترك كما هي. والنص المحوَّل يغذي أيضًا العنصر النائب {titleText} في التصاميم المتقدمة وصفحات افتتاح الفصول. أما إشارات PDF المرجعية فتحتفظ بالعنوان كما كُتب — Author contributions لا AUTHOR CONTRIBUTIONS — كما تترك خاصية text-transform في CSS النص نفسه دون تغيير (حتى postext 1.4 كانت تأخذ الأحرف الكبيرة). |
letterSpacing | Dimension | 0 | التتبّع بعد كل رسم حرفي (glyph) في العنوان — بما في ذلك المسافات وبادئة الترقيم — كما في letter-spacing في CSS. القيمة الموجبة تباعد الحروف (الأحرف الكبيرة الناتجة عن textTransform: 'uppercase' تحتاج عادة إلى قليل منه: { value: 0.)، والسالبة تضيّق حجمًا عرضيًا كبيرًا. قيمة em نسبية إلى fontSize الخاص بالمستوى. تُقاس أسطر العنوان معه، فتلتف حيث ينتهي النص المتتبَّع، وترسمه Canvas وHTML وPDF بالطريقة نفسها. والتتبّع لا يغيّر الرسوم الحرفية أبدًا: تبقى الحروف المركّبة في الخط (fi، fl) في كل المخرجات. السطر الموسَّط أو المحاذى إلى اليمين يوضع بحسب حروفه: يُستبعد التتبّع الذي بعد آخر رسم حرفي فيه، كما في نص التصميم، فيصطف العنوان الموسَّط مع الافتتاحية الافتراضية لعنوان span: 'page'. المستوى المرسوم من advancedDesign الخاص به يتجاهله، شأنه شأن حقول الطباعة الأخرى هنا: لكل عنصر نصي في التصميم letterSpacing خاص به. ويضبطه نمط العنوان أيضًا، للعناوين التي تستخدمه. حتى postext 1.4 لم يكن للعناوين تتبّع، وكان المفتاح يُحذف دون أي تنبيه. |
lineSpan | number | غير مضبوط | الأسطر المأخوذة (行取り، JLReq §4.1.6): يُنضَّد العنوان في شريط من هذا العدد من أسطر المتن، ومحارفه في وسطه، بدل marginTop وmarginBottom؛ و3 عنوان من نوع 3行取り. ويبدأ الشريط على سطر من أسطر المتن حين يلتصق العنوان بالشبكة، ويبقى النص بعده على الشبكة، في وضعَي الكتابة كليهما ومع cjk.grid؛ والعنوان الذي تحتاج أسطره إلى أكثر يأخذ العدد الصحيح التالي. والوسط هو وسط المحارف (خط الأساس ناقصًا المركز الإيديوغرافي للخط)، كما تقيسه JLReq، لا وسط صناديق الأسطر. ولا يسري على صفحات الافتتاح (span: 'page') ولا على العناوين المرسومة من advancedDesign ولا على العناوين المخفية أو العناوين داخل الإطارات. ويجوز لنمط العنوان أن يضبط 0 لإلغاء قيمة مستواه. منذ postext 1.16. |
indent | Dimension | 0 | إزاحة العنوان عن بداية السطر (字下げ)، وem هو حجم المتن، لأن الكتب اليابانية تعدّ إزاحات العناوين بمحارف المتن (JLReq §4.1.3): { value: 6, unit: 'em' } هو 6字下げ مهما كان حجم العنوان. ويضيق عرض السطر بقدرها، والعنوان الموسَّط يتوسط ما بقي. منذ postext 1.16. |
firstLineIndent | Dimension | 0 | إزاحة السطر الأول وحده من العنوان، محسوبة من indent وبوحدات em من المتن مثلها: الأسطر التي يلتفّ إليها العنوان الطويل تبدأ عند indent (عند بداية السطر إن لم تُضبط)، كما يضع معيار GB/T 9704 كل مستويات العناوين بإزاحة خانتين ويعيد ما يلتفّ منها إلى الهامش: { value: 2, unit: 'em' }. ومع تفعيل cjk.grid تكون وحدتا em من المتن خانتين من الشبكة. والعنوان المرقّم يطبع رقمه بعد الإزاحة، فلا يحتاج قالب الترقيم إلى مسافات إيديوغرافية كانت ستُطبع أيضًا في الفهرس وفي علامات PDF المرجعية. وتعمل في النص العمودي (من رأس السطر)، ومع مُنضِّد CJK (القوس الافتتاحي في بداية العنوان يتبع قواعد بداية السطر كما في الفقرة)، ومع Knuth–Plass. والعنوان الموسَّط يأخذها كما تأخذها الفقرة الموسَّطة: يتوسّط سطره الأول ما يبقى بعد الإزاحة. وتضبط {firstLineIndent=N} بعد نص العنوان عنوانًا واحدًا، وتلغي {firstLineIndent=0} إزاحة مستواه. منذ postext 1.24. |
jidori | number | غير مضبوط | التوزيع المتساوي (字取り): العنوان ذو السطر الواحد الأضيق من هذا العدد من وحدات em الخاصة به يُوزَّع بالتساوي حتى ذلك العرض بالضبط، فيُنضّد 3 序章 هكذا 序 章. أما العناوين الأعرض والعناوين ذات الأسطر المتعددة فتُترك كما هي. و{jidori=N} بعد عنوان ما يضبط عنوانًا واحدًا، و{jidori=0} يلغي ما يضبطه مستواه. منذ postext 1.16. |
dropCap | ParagraphDropCap | false | لا شيء | حرف استهلالي يفتتح أول فقرة متن بعد عنوان من هذا المستوى (انظر الحروف الاستهلالية): إعداد واحد يعطي كل فصل حرفه الاستهلالي. ويلغيه العنوان بـ{dropcap=false} أو يحدّد أسطره بـ{dropcap=2}. منذ postext 1.23. |
numberingTemplate | string | '' | قالب الرقم التلقائي للمستوى. الرمز … يطبع العدّاد الجاري لمستوى العنوان ذاك، منسَّقًا اختياريًا بلاحقة — أرقام رومانية كبيرة، و رومانية صغيرة، و / أبجدية، و مع أصفار بادئة، و بالحروف (twenty-one)، و عددًا ترتيبيًا (twenty-first)، و بالأرقام الصينية (واليابانية في المستند الياباني: 第百一章)، و رقمًا رقمًا، و بالأرقام المالية الصينية، و داخل دوائر، أو أي اسم من تسميات صيغ الترقيم — وأي نص آخر يُطبع حرفيًا ('Chapter . '، '.'، '第回' لطباعة 第一百二十回؛ والشرطة المائلة العكسية تجعل القوس المعقوف حرفيًا). الرمز الذي ما زال عدّاده فارغًا يختفي مع الفاصل المجاور له. القيمة الفارغة (الافتراضية) تعني عدم وجود رقم تلقائي. يُضاف الرقم الناتج قبل العنوان في التدفق، ويغذي العنصر النائب في خانة التصميم المتقدم (حيث لا تُضاف البادئة نفسها)، ويُطبع في جدول المحتويات. انظر الأعداد المكتوبة بالحروف للكلمات، وأنماط العناوين لقالب خاص ببعض عناوين مستوى ما. |
numberSeparator | string | ' ' | ما يقع بين الرقم والعنوان: في العمود، وفي الافتتاحية الافتراضية لمستوى span: 'page'، وفي الترويسات التي تطبع سطر العنوان، وفي إشارات PDF المرجعية. وفاصل المستوى 1 يربط أيضًا رقم الجزء بعنوانه في صفحة الجزء الافتراضية وفي صف الجزء الافتراضي في جدول المحتويات. تأخذ عناوين الفصول الصينية مسافة إيديوغرافية أو لا شيء (' ': 第一回 甄士隱夢幻識通靈). يحتفظ جدول المحتويات بعمود أرقامه الخاص (toc.levels[].numberGap). ويجوز أن يضبط نمط العنوان فاصله الخاص. حين يُقسم عنوان إلى شطرين باستخدام ، كما تُقسم عناوين الفصول المزدوجة في الروايات الصينية، تربط الصيغ ذات السطر الواحد (العمود، وجدول المحتويات، والترويسات) الشطرين بمسافة إيديوغرافية حين يكون الجانبان حروفًا صينية أو يابانية، وبمسافة عادية في غير ذلك. |
numberPosition | 'before' | 'replace' | 'before' | موضع الرقم المولَّد. 'before': قبل العنوان، موصولًا به عبر numberSeparator. 'replace': الرقم هو العنوان كله، ولا يُطبع العنوان المكتوب في المصدر، فإن # Night مع numberingTemplate: 'الليلة {1:ordinal-feminine}' يطبع الليلة الثانية. يُدرج جدول المحتويات الرقم عنوانًا للمدخل (بلا عمود أرقام)، وتقرؤه أيضًا الترويسات (، ) وإشارات PDF المرجعية؛ ويكون فارغًا لمثل هذا العنوان. لا يسري إلا على العناوين المرقّمة التي لها قالب (قالب مستواها أو نمطها)؛ وأي عنوان آخر يحتفظ بنصه. ويجوز أن يضبط نمط العنوان قيمته الخاصة، 'before' للاحتفاظ بالعناوين التي كان مستواه سيستبدلها. |
breakBefore | HeadingBreakBeforeConfig | H1: { enabled: true, parity: 'always-odd' }H2–H6: { enabled: false, parity: 'any' } | فرض فاصل صفحة قبل كل عنوان من هذا المستوى. parity: 'odd' / 'even' يقيّد كذلك الجانب الذي يُفتتح فيه العنوان من الصفحتين المتقابلتين — وتُدرج صفحة حشو فارغة عند الحاجة (وتُحتسب في ترقيم الصفحات). أما 'always-odd' / 'always-even' فتضمنان فوق ذلك صفحة فاصلة فارغة إلزامية واحدة على الأقل بين المحتوى السابق والعنوان الجديد (تنتمي الصفحة الفاصلة إلى الفصل السابق؛ وأي حشو إضافي للزوجية ينتمي إلى الفصل الجديد). حين يكون العنوان أول كتلة في المستند والصفحة الأولى ما زالت فارغة، يُتخطى فرض الزوجية — فيقع العنوان في الصفحة 1 كما كُتب. الحقل غير المضبوط يحتفظ بالقيمة الافتراضية للمستوى: { parity: 'odd' } في H1 يظل يفرض الفاصل. |
hidden | boolean | false | عنوان بنيوي: لا يطبع شيئًا ولا يشغل مكانًا في العمود ولا في إطار — لا نص ولا هوامش ولا شريط افتتاح — لكنه يفعل كل ما يفعله العنوان عدا ذلك. ما زال breakBefore الخاص به يفتح صفحة، ويفتتح قسم نمطه، ويُعدّ (ما لم يقل نمطه numbered: false)، ويُدرجه :::toc، وتسمّيه ترويسات ، ويحصل على إشارة مرجعية في PDF. يناسب الإهداء أو صفحة التصدير (epigraph) أو بيانات الطبع (colophon) التي يحتاجها جدول المحتويات وإشارات القارئ المرجعية، ولا تُظهرها الصفحة. اضبطه على نمط عنوان لا على مستوى كامل؛ ويتجاوزه العنوان باستخدام / . |
headings: {
fontFamily: 'Merriweather',
levels: [
// Canonical book preset: chapters on a right-hand (odd) page.
{ level: 1, fontSize: { value: 24, unit: 'pt' }, breakBefore: { enabled: true, parity: 'odd' } },
{ level: 2, fontSize: { value: 18, unit: 'pt' }, italic: true },
]
}يعمل snapToGrid لكل مستوى أيضًا. إن لم يُضبط، يتبع المستوى headings.snapToGrid؛ وإن ضُبط، تجاوزه — فيمكن لمستند واحد أن يضع عناوين H2 فيه على بعد سطر ونصف فوق نصها، خارج الشبكة حتى نقطة الالتقاط التالية، بينما تقرّب عناوين H3 المسافة تحتها صعودًا إلى أسطر شبكة كاملة. ويمكن لنمط العنوان أن يضبطه كذلك، للعناوين التي تستخدمه.
headings: {
marginBottom: { value: 1.5, unit: 'em' },
levels: [
{ level: 2, snapToGrid: false }, // exactly 1.5 em under every H2
{ level: 3 }, // inherits headings.snapToGrid: true
],
}#الفاصل قبل العنوان
breakBefore مستقل عن عناصر التحكم في الترقيم: تفعيله يفرض فاصل صفحة، لكن العدّاد الرقمي لا يُعاد ضبطه إلا حين تُدرج صراحةً توجيه :::numbering. تُحتسب صفحات الزوجية الفارغة صفحاتٍ حقيقية في التسلسل، وتتلقى الترويسات والتذييلات وفق قواعدها المعتادة للصفحات الفردية والزوجية.
التوجيه :::pagebreak الواقع مباشرة قبل مثل هذا العنوان لا يحل محل فاصله: يظل العنوان يطبّق زوجيته بعد الصفحة التي فتحها التوجيه، وقد يضيف ذلك صفحة فارغة. انظر أنماط العناوين لعنوان ينبغي أن يبدأ مباشرة بعد فاصل يدوي.
قيم الزوجية
| القيمة | السلوك |
|---|---|
'any' (الافتراضية) | لا قيد على الزوجية. يُفتتح العنوان ببساطة في الصفحة التالية. |
'odd' | ضمان أن يُفتتح العنوان في صفحة فردية (يمنى في الكتاب اللاتيني). لا تُدرج صفحة فارغة واحدة إلا إذا كانت الصفحة التالية الطبيعية زوجية. |
'even' | مثلها، لكن لصفحة زوجية (يسرى في الكتاب اللاتيني). |
'always-odd' | ضمان صفحة فاصلة فارغة إلزامية واحدة على الأقل بين المحتوى السابق والعنوان الجديد، ثم ضمان أن تكون الصفحة فردية. مفيدة حين يجب أن يبدأ كل فصل في صفحتين متقابلتين جديدتين. |
'always-even' | مثلها، لكن لصفحة زوجية. |
تبعية الصفحات الفارغة
تحمل الصفحات الفارغة التي يدرجها breakBefore ترويسات بعنوان الفصل بحسب سبب إدراجها:
- الصفحات المدرجة لتلبية قيد الزوجية (
'odd'أو'even'أو ذيل الزوجية في'always-*') تنتمي إلى الفصل القادم. يُحلّ العنصر النائب{chapterTitle}في ترويستها إلى عنوان الفصل الجديد — لأن الصفحة الفارغة لا توجد إلا لدفع الفصل الجديد إلى الزوجية الصحيحة. - الصفحة الفاصلة الإلزامية في البداية التي يدرجها
'always-odd'/'always-even'تنتمي إلى الفصل السابق. إنها استراحة مقصودة في نهاية الفصل، لذا تظل ترويسة{chapterTitle}تُظهر عنوان الفصل القديم.
تتبع ترويسات القسم المنمَّط ولوحة ألوانه (انظر أنماط العناوين) القاعدتين نفسيهما في الصفحات الفارغة.
استثناء بداية المستند
حين تكون أول كتلة في المستند عنوانًا مفعَّلًا فيه breakBefore — أو حين يبدأ المصدر بالتوجيه :::pagebreak — يُتخطى فرض الزوجية ما دامت الصفحة الأولى فارغة. يقع العنوان في الصفحة 1 كما كُتب، بصرف النظر عن الزوجية المضبوطة، فلا يرث مستند يبدأ بالعنوان # Chapter 1 المضبوط على parity: 'odd' صفحة فارغة زائفة في بدايته. وبمجرد وضع أي محتوى، يعمل فرض الزوجية كالمعتاد.
#الامتداد والتصميم المتقدم
يقبل كل مستوى عناوين حقلين إضافيين يتحكمان في طريقة رسم العنوان صفحةَ افتتاح فصل بعرض الصفحة كله.
| الخاصية | النوع | الافتراضي | الوصف |
|---|---|---|---|
span | 'column' | 'page' | 'column' | عند 'page' يُعامل العنوان صفحةَ افتتاح فصل (opener)، ويُلحق تصميمه المتقدم (إن كان مفعّلًا) بالصفحة شريطَ افتتاح فوق المتن. اقرنه بالقيمة breakBefore. كي تبدأ الافتتاحية صفحة جديدة دائمًا. إن لم يكن له تصميم خاص، ترسم العنوانَ افتتاحيةٌ افتراضية عبر منطقة المحتوى كلها، بطباعة المستوى وتباعد أسطره، مع مقاطعه العريضة والمائلة والعلوية والسفلية (headings.inlineMarks)، ويُقاس الشريط بذلك العرض. يتسع الشريط لكل سطر ترسمه الافتتاحية: حيث تأخذ الافتتاحية أسطرًا أكثر مما يأخذه العنوان في قياسه الخاص (عنوان مضبوط كانت مسافاته ستنكمش ليسعه سطر واحد، أو فاصل قسري )، يأخذها الشريط أيضًا. حتى postext 1.4 كان الشريط يُقاس والعنوان ملتف بعرض العمود، فكان العنوان الذي يسعه سطر واحد في منطقة المحتوى يأخذ شريطًا بارتفاع سطرين، والسطر موسَّط فيه. تبدأ الأعمدة الأخرى تحت الشريط كما يبدأ عمود العنوان نفسه. النص الذي يفتتح أحدها يبدأ حيث كان سيبدأ النص الواقع مباشرة تحت الافتتاحية، أيًّا كان ما يلي الافتتاحية في عمودها: marginBottom الخاص بالافتتاحية تحت عنوانها أو تصميمها، مأخوذًا إلى سطر الشبكة التالي حين يلتقط المستوى الشبكة. العنوان أو المعادلة المنفصلة أو صف جدول المحتويات الذي يفتتح أحدها يوضع على مستوى أول عنوان أو معادلة منفصلة تحت الافتتاحية، مع حساب الهوامش كما هناك؛ وحين يستمر عمود الافتتاحية بأي شيء آخر، يبدأ حيث يبدأ ذلك النص. العنوان المخفي تحت الافتتاحية لا يُحتسب، والمسافة التي تضيفها موازنة الأعمدة فوق العنوان الواقع تحت الافتتاحية لا تتكرر في الأعمدة الأخرى. ما تلتقطه هذه الأعمدة إلى الشبكة يقع على شبكة الصفحة. حتى postext 1.4 كانت كتلتها الأولى تستقر عند قاعدة الشريط: خارج الشبكة حين ينتهي الشريط بين سطرين، وملاصقة للشريط تمامًا بلا هامش حين يلي الافتتاحيةَ عنوان (أعلى بسطر مما هي الآن حين ينتهي الشريط على الشبكة)؛ وكان العنوان هناك يُسقط أيضًا الهامش العلوي الذي احتفظ به عنوان العمود الأول. |
spanBreak | boolean | true | هل يبدأ العنوان ذو span: 'page' صفحة جديدة. true يفتح الصفحة التالية (ويختار breakBefore جهتها). وfalse مع breakBefore. يفتحه حيث يصل النص، كما يفعل الإطار الممتد على الصفحة: تنتهي الأعمدة التي فوقه على ارتفاع واحد (يُوازَن الشريط حين يكون headings. مفعّلًا)، ويُصفّ تصميم العنوان أو الافتتاح الافتراضي بعرض منطقة المحتوى تحتها، ويستمر النص في كل الأعمدة تحته: كالمقال الثاني في نشرة تحت نهاية الأول. وإن لم يتسع ما بقي من مساحة للعنوان وللحد الأدنى من الأسطر الأرملة تحته، فتح الصفحة التالية كما مع true. ويبقى دور الصفحة ما تحدده كتلتها الأولى. لا أثر له في عنوان span: 'column'. ويُضبط في نمط العنوان أيضًا. منذ postext 1.19. |
advancedDesign | HeadingAdvancedDesignConfig | | خانة تصميم حرّ التركيب لهذا المستوى. عند enabled تؤلف عناصر الخانة الافتتاحية. استخدم داخل عنصر نصي لرسم نص العنوان؛ واستخدم و وغيرهما لإدراج رقم العنوان المنسَّق. |
advancedDesign.minHeight | Dimension | — | أدنى ارتفاع محجوز للعنوان في تدفق العمود. يأخذ العنوان max(design content bottom, minHeight)، ثم marginBottom الخاص بالعنوان تحته (من نمط عنوانه أو مستواه أو headings.marginBottom؛ 0.5 em من حجم العنوان افتراضيًا)، ويُقرَّب المجموع صعودًا إلى شبكة خطوط الأساس حين تلتقط العناوين الشبكة. وهكذا يمكن للافتتاحية أن تدفع النص الأساسي إلى الأسفل (أو أن تستحوذ على الصفحة كلها) حتى حين تكون عناصرها قصيرة أو مثبتة إلى إطارَي الصفحة أو النزف فوق العنوان. لشريط ارتفاعه minHeight بالضبط، اضبط ذلك marginBottom على 0 واجعل minHeight عددًا صحيحًا من أسطر الشبكة. يسري كلما كانت قيمة enabled هي true، حتى مع خانة فارغة. انظر الارتفاع المحجوز لما يحتسبه أسفل محتوى التصميم. |
افتتاحية بطول الصفحة. حين يمتد الارتفاع المحجوز إلى ما بعد قاعدة العمود — غلاف قيمة minHeight فيه تساوي ارتفاع الصفحة، أو صورة أو صندوق مثبت إلى الصفحة أو النزف ويمتد حتى حدّ القص — تستحوذ الافتتاحية على بقية الصفحة: يبدأ النص الذي يليها في الصفحة التالية، في كل عمود من تخطيط بعمودين أو بعمود ونصف على السواء. لذلك لا يحتاج الغلاف إلى :::pagebreak بعده (ولا ضرر من وجوده: لا يضيف صفحة فارغة). العنوان داخل العمود (span: 'column') الذي يكون تصميمه أطول من عموده يستحوذ على ذلك العمود، ويبدأ النص عند رأس العمود التالي. عندئذ تمتد كتلة العنوان حتى قاعدة العمود الذي تستحوذ عليه، ويُخرج تصميمها مقابل ذلك الشريط: العناصر المثبتة إلى الأعلى تبقى حيث ثُبتت، والعناصر التي تتبع الشريط — المثبتة إلى وسطه أو قاعدته، أو التي ارتفاعها 'fill' — تلتزم بالمتسع الذي يستحوذ عليه العنوان، كما تلتزم بالارتفاع المحجوز حين يتسع له العمود (حتى postext 1.4 كانت الكتلة تحتفظ بارتفاع نصها، فكانت تلك العناصر تُخرج مقابل شريط بارتفاع عنوان واحد، ويستمر النص الذي بعده تحت التصميم). عناصر الصفحة الثابتة التي لا ينبغي أن تستحوذ على الصفحة — شريط على الحافة الخارجية (fore-edge) بطول الصفحة كلها، أو زخرفة في أسفل الصفحة — مكانها تصميم الترويسة أو التذييل: إذا ثُبتت إلى 'page' أو 'bleed' وعُرضت مع pages: 'opener'، فإنها تُرسم في صفحة الافتتاح ولا تحجز أي مساحة من المتن.
مثال: افتتاحية فصل بسيطة تُظهر «Chapter N» فوق العنوان:
{
"headings": {
"levels": [
{
"level": 1,
"span": "page",
"breakBefore": { "enabled": true, "parity": "always-odd" },
"advancedDesign": {
"enabled": true,
"slot": {
"elements": [
{
"kind": "text",
"id": "chapterLabel",
"placement": {
"anchor": { "to": "container", "edge": "top" },
"offset": { "y": { "value": 48, "unit": "pt" } },
"size": { "width": "fill" }
},
"content": "Chapter {numberRoman}",
"fontSize": { "value": 10, "unit": "pt" },
"align": "center",
"overflow": "ellipsis-end"
},
{
"kind": "text",
"id": "chapterTitle",
"placement": {
"anchor": { "to": "#chapterLabel", "edge": "below" },
"offset": { "y": { "value": 12, "unit": "pt" } },
"size": { "width": "fill" }
},
"content": "{titleText}",
"fontSize": { "value": 24, "unit": "pt" },
"fontWeight": 700,
"align": "center",
"overflow": "wrap",
"hyphenate": true
}
]
}
}
}
]
}
}العناصر النائبة الخاصة بالعناوين المتاحة داخل خانة تصميم المستوى:
{titleText}— النص العادي للعنوان (بلا بادئة الترقيم). الفاصل القسري في العنوان (\\) يكون فاصل سطر هنا، في شريط الافتتاح وفي التصميم داخل العمود على السواء (حتى postext 1.4 كان التصميم داخل العمود يطبع مسافة مكانه، بينما يُقاس ارتفاعه مع الفاصل). الأسطر التي يلتف إليها العنوان المخفي في عموده تُضمّ مجددًا في العنوان كما كُتب: الكلمة المقسومة بعد واصلتها الأصلية تحتفظ بالواصلة بلا مسافة بعدها، والكلمة التي قسمها العمود تعود كاملة بلا الواصلة التي أضافها الفصل، والمجموعة الملتحمة بمسافة غير قابلة للفصل التي كانت أعرض من العمود فقُسمت عند تلك المسافة تستعيد مسافتها غير القابلة للفصل (Capítulo XVIIIلاCapítuloXVIII)، وكل فاصل آخر يعيد مسافته الواحدة. حتى postext 1.4 كان كل فاصل سطر يصبح مسافة، فكان العنوان الملتف عند واصلة يطبعWord- Book، وكان الفاصل القسري في مثل هذا العنوان يُحذف.{number}— الرقم المنسَّق وفقnumberingTemplateالخاص بالمستوى.{numberDecimal},{numberRoman},{numberRomanLower},{numberAlpha},{numberAlphaLower}— عدّاد العنوان (العدّ الجاري لمستواه، أيًا كان ما يطبعه القالب) بصيغ أعداد أخرى: الفصل الثالث يعطي3وIIIوiiiوCوc، معnumberingTemplateأو بدونه. العنوان غير المرقّم (نمط فيهnumbered: false) يتركها فارغة.{numberWords},{numberWordsLower},{numberOrdinalWords},{numberOrdinalWordsLower}— العدّاد نفسه مكتوبًا بالحروف، بحرف أول كبير أو بأحرف صغيرة: Three / three، Third / third (انظر الأعداد المكتوبة بالحروف).{numberHan}— العدّاد نفسه بالأرقام الصينية، بنظام الكتابة الذي يحددهlocaleالخاص بالمستند: الافتتاحية المضبوطة بالقالب第{numberHan}回تطبع 第十二回 للفصل الثاني عشر بينما يُدرج جدول المحتويات12.{chapterNumber},{chapterTitle},{pageNumber},{totalPages},{bookTotalPages},{title},{subtitle},{author},{publishDate}— عناصر نائبة مشتركة للبيانات الوصفية.{attr.<key>}— سمة مكتوبة على سطر العنوان نفسه (# Title {author="I. Zango Martín"})، وإلا فسمة H1 للفصل الحالي. السمات المفقودة تُحلّ إلى سلسلة فارغة دون تحذير.
يطبع {chapterNumber} ما تطبعه الترويسات للفصل: رقم H1 حين يكون لمستواه (أو لنمطه) numberingTemplate، وإلا فترتيب الفصل — 1، 2… مستمرًا بعد الفصول التي أُخرجت قبل هذا الفصل — ولا شيء لفصل غير مرقّم أو لنمط قالبه ''. يقرأ تصميم العنوان الفصل الذي ينتمي إليه عنوانه: عنوان المستوى 1 يقرأ فصله، والعنوان الأدنى يقرأ آخر عنوان من المستوى 1 قبله. ويصح ذلك أيضًا حيث يلتقي فصلان في صفحة واحدة، بينما تطبع ترويسات تلك الصفحة الفصل اللاحق. ويُقاس الارتفاع الذي تحجزه الافتتاحية بالقيمة نفسها. حتى postext 1.4 كان يُقاس ببادئة رقم العنوان (الفارغة دون قالب)، فقد يُرسم التصميم الذي يعتمد ارتفاعه على {chapterNumber} أطول من المتسع الذي أخذه؛ وكان التصميم يطبع فصل الصفحة، فكان أول فصلين يتشاركان صفحة يُظهر رقم الثاني.
تتبع العناصر النائبة للعدّاد الكتابَ عبر الفصول التي تُخرج واحدًا تلو الآخر (العدّادات التي تمررها continuationAfter())، وتعيد السمة startAt في العنوان بدء عدّها (انظر صيغة المستند › سمات العناوين). افتتاحية تقول Chapter III فوق عنوان مرقّم 3. في التدفق وفي جدول المحتويات:
{
level: 1,
span: 'page',
numberingTemplate: '{1}.',
advancedDesign: {
enabled: true,
slot: { elements: [
{ kind: 'text', id: 'label', content: 'Chapter {numberRoman}', fontSize: { value: 10, unit: 'pt' }, overflow: 'ellipsis-end',
placement: { anchor: { to: 'container', edge: 'top-left' }, size: { width: 'fill', height: 'auto' } } },
{ kind: 'text', id: 'title', content: '{titleText}', fontSize: { value: 24, unit: 'pt' }, overflow: 'wrap',
placement: { anchor: { to: '#label', edge: 'below' }, size: { width: 'fill', height: 'auto' } } },
] },
},
}الارتفاع المحجوز
يشغل العنوان ذو التصميم المتقدم مكانًا في العمود كأي كتلة: يبدأ النص الأساسي بعده تحت ذلك المكان. والمكان هو أكبر ثلاثة ارتفاعات، تُقاس كلها نزولًا من أعلى العنوان (من أعلى منطقة المحتوى في افتتاحية تبدأ صفحتها):
- نص العنوان نفسه، مضبوطًا بطباعة المستوى (يكون مخفيًا تحت التصميم، لكنه يحتفظ بأسطره)؛
- أسفل محتوى التصميم — أدنى حافة سفلية بين العناصر المحتسبة (أدناه)؛
advancedDesign.minHeight.
يُضاف marginBottom الخاص بالعنوان بعده (من نمط عنوانه أو مستواه أو headings.marginBottom؛ 0.5 em افتراضيًا)، ويُلتقط الناتج صعودًا إلى شبكة خطوط الأساس حين تلتقط العناوين الشبكة. في الافتتاحية (span: 'page') يُترك الشريط نفسه خاليًا في كل عمود من الصفحة. وفي العنوان داخل العمود الذي يتسع له عموده، يُخرج التصميم في صندوق العنوان، الذي يكون بهذا الارتفاع بالضبط.
أي العناصر تُحتسب. كل عنصر في التصميم يُحتسب — النصوص والخطوط والصناديق والصور على السواء (حتى postext 1.4 لم يكن عنصر image يُحتسب أبدًا، فكان النص قد يبدأ فوق صورة الشريط ما لم يُبعده minHeight) — باستثناء:
- العناصر التي فيها
reserve: false— زخرفة يجوز أن تقع تحت النص؛ - العناصر التي تتبع الشريط نفسه — المثبتة إلى الصف الأوسط من الحاوية (
left،center،right) أو صفها السفلي (bottom-left،bottom،bottom-right)، والتي ارتفاعها'fill'مقابل الحاوية (الصندوق أو الخط العمودي الذي لا ارتفاع له يملؤها افتراضيًا)، وأي عنصر مثبت إلى أحدها. الحاوية هي الشريط المحجوز، فهذه العناصر تستقر على قاعدته أو تمتد عبره: خط تحت الشريط، أو لوحة ملوّنة خلف العنوان. إنها تتبع الارتفاع ولا تحدده أبدًا. والنص بينها الذي يحتفظ بارتفاعه الخاص ما زال يحتاج إلى متسع: نص العنوان المثبت إلى قاعدة الشريط يجعل الشريط بطول ذلك النص على الأقل، فلا يبدأ أبدًا فوق أعلى العنوان. معminHeight: 36mmونص العنوان مثبتbottom-left، يكون صندوق العنوان 36 مم مضافًا إليهاmarginBottomالخاص به، مقرَّبًا صعودًا إلى الشبكة، ويقع نص العنوان عند قاعدة ذلك الصندوق، فوق النص التالي مباشرة؛ ومن دونminHeight، فإن نص العنوان الذي يأخذ أسطرًا أكثر من نص العنوان المخفي يجعل الشريط بعمق ذلك النص. حتى postext 1.4 كان مثل هذا النص يُرسم صاعدًا فوق النص الذي يسبق العنوان. الصناديق والخطوط والصور التي تتبع الشريط لا تضع حدًا أدنى كهذا، فاللوحة المثبتة إلى القاعدة يمكن أن تمتد فوق العنوان.
العناصر المثبتة إلى الصفحة أو النزف تُحتسب بقدر امتدادها تحت أعلى العنوان. الشريط الممتد عبر أعلى الصفحة الذي ينتهي فوق العنوان لا يُحتسب منه شيء؛ والصورة الممتدة إلى النزف الكامل التي تتجاوزه تدفع النص إلى أسفل حتى حافتها السفلى. وكذلك أي شيء يقع منخفضًا في الصفحة: الختم على بعد 25 مم فوق أسفل الصفحة، أو الشريط الجانبي بطول الصفحة، أو الإطار، يحجز الصفحة حتى حافته السفلى، وعادة يبدأ النص في الصفحة التالية. علّم مثل هذه الزخرفة بالقيمة reserve: false — فهي تظل تُرسم ويمكن للعناصر أن تُثبت إليها — وأعطِ العنوان المتسع الذي يحتاجه بعناصره النصية أو بالقيمة minHeight:
{
"kind": "image", "id": "seal", "resourceId": "seal", "reserve": false,
"placement": {
"anchor": { "to": "page", "edge": "bottom-right" },
"offset": { "x": { "value": -25, "unit": "mm" }, "y": { "value": -25, "unit": "mm" } },
"size": { "width": { "value": 30, "unit": "mm" } }
}
}العنصر المثبت إلى عنصر لا يحجز مكانًا يظل يُحتسب ما لم يُعلَّم هو أيضًا (التعليق المثبت إلى الختم يحتاج إلى reserve: false خاص به).
أين يُرسم. يُرسم تصميم الافتتاحية (span: 'page') قبل المتن، فالزخرفة التي لا تحجز شيئًا تقع تحت النص. أما تصميم العنوان داخل العمود فيُرسم مع كتلة العنوان — فوق الكتل التي تسبقه في العمود، وتحت الكتل التي تليه — حيثما وُضع فوق قاعدة عموده: في الهوامش الجانبية، والهامش العلوي، والنزف، والأعمدة المجاورة أيضًا. تقصّه قاعدة العمود، في Canvas وفي PDF، لأن التدفق ينتهي هناك (انظر أطول من العمود أدناه). حتى postext 1.4 كانت Canvas وPDF تقصّانه أيضًا عند أعلى عموده، فكان الشريط المثبت إلى أعلى الصفحة أو النزف يمتد إلى الهوامش الجانبية لكنه يتوقف عند الهامش العلوي. الزخرفة المثبتة إلى أسفل الصفحة مكانها الافتتاحية، أو تصميم التذييل مع pages: 'opener'.
أطول من العمود. حين يمتد المتسع إلى ما بعد قاعدة العمود — minHeight بطول الصفحة، أو صورة أو إطار يمتد حتى حدّ القص — يستحوذ العنوان على بقية صفحته (الافتتاحية، في كل عمود) أو عموده (العنوان داخل العمود)، ويبدأ النص الذي بعده في الصفحة أو العمود التالي. عندئذ تمتد كتلته حتى قاعدة العمود، ولا تُقصّ أبدًا إلى ارتفاع نصها، فيكون الشريط الذي يُخرج تصميمه مقابله هو المتسع الذي يستحوذ عليه (بما في ذلك minHeight، حتى القاعدة). التصميم الأطول من الصفحة نفسها — نص تمهيدي طويل في صفحة شاشة صغيرة — يظل يُقصّ عند أسفل الصفحة (والتصميم داخل العمود عند أسفل عموده): يُدرجه Sandbox في لوحة الفحوص باسم تصميم العنوان مقطوع. لا يصدر الإخراج تحذيرًا بشأنه — فالغلاف الذي يستحوذ على صفحته حالة معتادة ولا يفقد شيئًا — لكن أي مضيف يمكنه إجراء الفحص نفسه على الإخراج النهائي: تعيد collectHeadingDesignCuts(doc) كائنًا { kind: 'headingDesignCut', pageIndex, level, where, overflowPx, sourceStart, sourceEnd } لكل عنوان يقع نص تصميمه بعد أسفل حدّ قص الصفحة (where: 'page'، افتتاحية) أو بعد أسفل عموده (where: 'column')، وتصف formatWarning كلًا منها. انظر افتتاحية بطول الصفحة ضمن الامتداد والتصميم المتقدم.
العمود الجانبي. في تخطيط العمود ونصف الذي يحمل عموده الجانبي العناصر العائمة (sideColumnRole: 'floats')، فإن عنصر تصميم عنوان داخل العمود الذي يقف في العمود الجانبي — رقم فصل مثبت إلى الصفحة في عمود الهامش الخارجي لافتتاحية كتاب مدرسي — يُبعد عنه مكدّس العناصر الجانبية. كل شكل أو جدول أو إطار span: 'side' تضعه الصفحة بعد العنوان يترك فجوة عنصر عائم واحدة بينه وبين كل عنصر من هذا النوع: يبقى حيث يضعه المكدّس حين يتسع فوق العنصر، وإلا ذهب تحته — أو انتظر الصفحة التالية حين لا تتسع له بقية العمود الجانبي هناك. وهكذا فإن رقمًا عند رأس الهامش يُبقي المكدّس كله تحته، بينما رقم قسم معلّق في الهامش بجانب عنوان أدنى في الصفحة يترك رأس الهامش للأشكال التي تحيل إليها الصفحة (يبقى الشكل الهامشي في أعلى صفحته). ما يحمله العمود الجانبي بالفعل عند وضع العنوان لا يُحرّك: الشكل المكدّس سابقًا في الصفحة والذي يمتد حتى عنصر العنوان يبقى حيث هو، تحت العنصر، لذا فإن التصميم الذي يقف عنصره في العمود الجانبي في منتصف الصفحة يحتاج إلى أن تأتي الإحالة إلى أشكاله بعد العنوان. العناصر التي فيها reserve: false تترك العمود الجانبي حرًا، كما تترك النص. الافتتاحية (span: 'page') لا تحتاج إلى شيء من هذا: شريطها محجوز في كل عمود، بما فيه العمود الجانبي. حتى postext 1.4 كان الشكل الجانبي المحال إليه في مثل هذه الافتتاحية يوضع عند رأس العمود الجانبي، فوق الرقم.
الأغلفة. عنوان الغلاف الذي يملأ صفحته — minHeight بطول الصفحة، أو صورة بحجم الصفحة الكاملة في تصميمه — يرسل إذن النص الذي بعده إلى الصفحة التالية بنفسه، في التخطيطات ذات العمود الواحد والأعمدة المتعددة على السواء. والتوجيه :::pagebreak بعده مباشرة اختياري ولا ضرر منه: فاصل الصفحة في صفحة ما زالت فارغة لا يفعل شيئًا، فلا يضيف صفحة فارغة أبدًا. لا يُحتاج إليه إلا حين يتوقف تصميم الغلاف قبل أسفل الصفحة ويُراد مع ذلك أن يبدأ النص في صفحة جديدة.
# Annual report 2026 {style="cover"}
:::pagebreak
# Letter from the chair#الأعداد المكتوبة بالحروف
لاحقتان من لواحق قالب الترقيم تكتبان العدّاد بالكلمات، بلغة المستند (locale في المستوى الأعلى، وإلا فلغة تقسيم الكلمات — انظر لغة المستند): words للعدد الأصلي وordinal للعدد الترتيبي. حالة أحرف اللاحقة تحدد حالة أحرف الكلمات، كما تفعل A / a للحروف:
| الرمز | الإنجليزية (21) | الإسبانية (21) | الصينية (21) |
|---|---|---|---|
| twenty-one | veintiuno | 二十一 |
| Twenty-one | Veintiuno | 二十一 |
| TWENTY-ONE | VEINTIUNO | 二十一 |
| twenty-first | vigesimoprimero | 第二十一 |
| Twenty-first | Vigesimoprimero | 第二十一 |
| TWENTY-FIRST | VIGESIMOPRIMERO | 第二十一 |
تُكتب الأعداد بالكلمات في الإنجليزية والإسبانية والفرنسية والإيطالية والألمانية والكتالونية والبرتغالية والصينية واليابانية والعربية؛ وأي لغة أخرى تأخذ الكلمات الإنجليزية، كما تفعل نصوص استمرار الجداول المدمجة. تكتب الصينية الأرقام غير الرسمية في simp-chinese-informal أو trad-chinese-informal، بحسب نظام الكتابة في locale (一万 / 一萬)، مع 第 قبل العدد الترتيبي؛ ولا حالة أحرف للحروف الصينية، فتطبع الكتابات الثلاث للاحقة النتيجة نفسها. تتبع الإنجليزية الاستعمال الأمريكي (one hundred five، بلا and). وتستخدم الإسبانية صيغ المذكر افتراضيًا، كما يُرقَّم capítulo أو libro (capítulo primero، tercero، veintiuno)، وتكتب الأعداد الترتيبية من 13 إلى 29 كلمة واحدة، كما تفضّل الأكاديمية الملكية الإسبانية (RAE) (decimotercero، vigesimoprimero). تُكتب الأعداد الأصلية بالحروف حتى 999 999 والترتيبية الإسبانية والكتالونية والبرتغالية حتى 999؛ وتُطبع الأعداد الأكبر بالأرقام.
تتبع الفرنسية الإملاء التقليدي (vingt et un، soixante et onze، quatre-vingts، deux cent un) وتكتب premier للواحد (Chapitre premier، لكن vingt et unième)؛ وتكتب الإيطالية كل عدد كلمةً واحدة (ventuno، ventitré، duemilaventiquattro؛ primo، ventunesimo)، وكذلك الألمانية (einundzwanzig، hunderteins؛ erste، einundzwanzigste)، مع ss بدل ß في ألمانية سويسرا (de-CH)؛ وتتبع الكتالونية معهد الدراسات الكتالونية IEC (vint-i-u، dos-cents؛ primer، cinquè، vint-i-unè)، والبرتغالية هي برتغالية البرازيل (dezesseis) ما لم يحدد locale منطقة أخرى (pt-PT: dezasseis)، مع الأعداد الترتيبية اللاتينية (vigésimo primeiro). وتُكتب الأعداد الترتيبية الكتالونية والبرتغالية، مثل الإسبانية، حتى 999.
تقرأ اللغات الرومانسية مُعدِّل الجنس: -feminine (أو -f) يطابق الكلمات مع اسم مؤنث (Parte {1:ordinal-f} يعطي بالإيطالية Parte prima، و{1:Ordinal-f} partie يعطي بالفرنسية Première partie؛ وكذلك veintiuna، vint-i-una، duzentas)، و-masculine (-m) هو الافتراضي. ولا يتغير العدد الأصلي في الألمانية (Kapitel eins)، أما الترتيبي فيتغير: بلا مُعدِّل يأخذ النهاية التي له بعد أداة التعريف، وهي واحدة في الأجناس الثلاثة (Das {1:ordinal} Kapitel يعطي Das erste Kapitel)؛ وقبل اسم بلا أداة تعريف يعطي -masculine Erster Teil، و-feminine Erste Lektion، و-neuter (-n) Erstes Kapitel. وتُكتب الأعداد الألمانية بأحرف صغيرة كما تكتبها اللغة (Kapitel {1:words} يعطي Kapitel eins)؛ ويجعل {1:Words} الحرف الأول كبيرًا للكلمة التي يبدأ بها العنوان، ويكتب {1:WORDS} حرف ß بصيغة SS.
تتطابق الأعداد العربية في التذكير والتأنيث مع المعدود، لذا تأخذ اللاحقة مُعدِّلًا: -feminine (أو -f) للمعدود المؤنث، و-masculine (-m، الافتراضي) للمذكر؛ و-classical تكتب المئات بصيغة مائة، كما تفعل طبعات بولاق ومعظم الطبعات المصرية، بدل صيغة مئة الحديثة. يكتب {1:ordinal} العدد الترتيبي المعرّف المرفوع الذي يستخدمه العنوان: الفصل {1:ordinal} يعطي الفصل الأول، الفصل الحادي عشر، الفصل الحادي والعشرون؛ والليلة {1:ordinal-feminine} يعطي الليلة الأولى، الليلة الحادية عشرة، الليلة الحادية والعشرون، الليلة المئتان، وفوق المئة صيغة «بعد» الكلاسيكية: الليلة الخامسة والأربعون بعد الثلاثمئة، الليلة الحادية بعد الألف. ويكتب {1:words} العدد الأصلي (واحد وعشرون؛ والمؤنث إحدى عشرة، واحدة وعشرون). تُكتب الأعداد الترتيبية حتى 9 999 والأصلية حتى 99 999؛ ويمكن الجمع بين المعدّلات ({1:ordinal-f-classical})؛ وتقرأ اللغات الرومانسية والألمانية الجنس وحده (انظر أعلاه)، وتتجاهلها اللغات الأخرى. لا أحرف كبيرة في العربية، فلا تغيّر حالة أحرف اللاحقة شيئًا. العنصران النائبان للتصميم {numberWords} و{numberOrdinalWords} يكتبان صيغ المذكر؛ ولافتتاحية بصيغة المؤنث، ضع العدد الترتيبي في قالب المستوى واطبعه بالعنصر {number}.
في تصميم العنوان، يكتب {numberWords} / {numberWordsLower} و{numberOrdinalWords} / {numberOrdinalWordsLower} عدّاد العنوان بالطريقة نفسها، فيمكن أن تقول الافتتاحية Chapter One بينما يُدرج جدول المحتويات 1. وتعطي textTransform: 'uppercase' في العنصر النصي الأحرف الكبيرة:
// Spanish novel: "CAPÍTULO PRIMERO" above the title, "1." in the contents.
{ level: 1, numberingTemplate: '{1}.', span: 'page',
advancedDesign: { enabled: true, slot: { elements: [
{ kind: 'text', id: 'n', content: 'Capítulo {numberOrdinalWordsLower}', textTransform: 'uppercase', /* … */ },
{ kind: 'text', id: 't', content: '{titleText}', /* … */ },
] } } }