# Sandbox: الكتب وملفات Word والحفظ

> الكتب والفصول، وتحرير صفحات القصص المصورة، واستيراد مستندات Word وتصديرها، وكيف يحفظ Sandbox عملك ويصدّره ويستورده

- نسخة HTML: https://postext.dev/ar/docs/sandbox-books-saving
- آخر تحديث: 2026-10-16
- مدة القراءة: 34 دقيقة
- لغات أخرى: [en](https://postext.dev/en/docs/sandbox-books-saving.md), [es](https://postext.dev/es/docs/sandbox-books-saving.md), [ca](https://postext.dev/ca/docs/sandbox-books-saving.md), [de](https://postext.dev/de/docs/sandbox-books-saving.md), [fr](https://postext.dev/fr/docs/sandbox-books-saving.md), [it](https://postext.dev/it/docs/sandbox-books-saving.md), [pt](https://postext.dev/pt/docs/sandbox-books-saving.md), [zh](https://postext.dev/zh/docs/sandbox-books-saving.md), [ja](https://postext.dev/ja/docs/sandbox-books-saving.md)

## باختصار

تتناول هذه الصفحة طريقة تنظيم عملك والاحتفاظ به في Sandbox. المشروع كتاب مكوّن من فصول. ولصفحات القصص المصورة أدواتها الخاصة للمربعات والكلام. ويمكنك أن تستورد ملف Word، وتختار ما يقابل أنماطه من أنماط Postext، ثم تعيد الكتاب إلى Word. ويُحفظ عملك في متصفحك أولًا بأول، ويمكنك تنزيله ملفًا واحدًا وفتحه من جديد لاحقًا.

## الكتب والفصول

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

- **البنية** موجودة في لوحة الفصول وفي مبدّل الفصول في لوحة النص: الإضافة، وإعادة التسمية (انقر نقرًا مزدوجًا على الصف)، وإعادة الترتيب، وتقسيم فصل إلى فصل لكل عنوان من المستوى 1، ودمج فصل في الفصل السابق له، والحذف. ويحتفظ كل فصل بسجل التراجع الخاص به وبموضع المؤشر فيه.
- **فصل واحد في كل مرة.** تُخرج المعاينات افتراضيًا **الفصل النشط** استمرارًا للفصول التي قبله: رقم صفحته الأولى يلي آخر صفحة في الفصل السابق، وتواصل عناوين المستوى 1 العدّ (الفصل 4 يُرقَّم 4، وأشكاله 4.1 و4.2 و…)، وتتبعها الترويستان `{chapterNumber}` و`{chapterTitle}`، وتُحفظ زوجية الصفحات الفردية والزوجية (تضيف صفحة افتتاح الفصل صفحة بيضاء تمامًا كما تفعل في وسط الكتاب)، والإشارة `:ref` إلى شكل ذُكر أول مرة في الفصل 1 تحتفظ برقمه. تأتي أعداد صفحات الفصول السابقة من آخر إخراج عرض كلًّا منها؛ أما الفصول التي لم تُزر قط (أو حُرّرت منذ ذلك) فتُخرج في الخلفية واحدًا تلو الآخر، وتعرض قائمة الفصول *الصفحات قيد الحساب* حتى تصل. ونطاقات الصفحات دقيقة للفصول التي تبدأ في صفحة جديدة (وهو الافتراضي)؛ أما الفصل الذي كان نصه سيستمر من الصفحة السابقة فيوضع في أعلى صفحة خاصة به بدلًا من ذلك.
- **الكتاب كاملًا.** يمكن لـ Canvas ومعاينة HTML وتبويب PDF عرض الكتاب كله مستندًا واحدًا متصلًا: اختر **الكتاب كاملًا** في المحدِّد عند بداية شريط التبويبات (في الكتب التي فيها أكثر من فصل). عندئذ يُخرج Canvas كل الفصول بالترتيب، كلًّا منها بعد الصفحات التي بلغتها الفصول التي قبله، ويعرض المستندات موصولة بعضها ببعض، فالتعديل يعيد إخراج فصله وحده، ولا يعيد إخراج الفصول التي بعده إلا إذا تحركت صفحتها الأولى؛ وتتبع قائمةُ الفصول وجزءا `chapter=` و`page=` من الرابط الدائم ومزامنةُ المحرّر فصلَ الصفحة المعروضة. ويُحفظ الاختيار مع الكتاب (رواية قصيرة تُقرأ مستندًا واحدًا، وكتاب مدرسي فصلًا فصلًا)، ويمكن لإعداد مسبق أن يُفتح على هذا النحو عبر `view.canvasScope` في البيان (manifest). وتشارك معاينة HTML اختيارَ Canvas، فتُخرج الكتاب كله مستندًا واحدًا من صفحته الأولى، وتتبع صفوفُ المحتويات وجزءُ الرابط بعد العلامة # (fragment) فصلَ كل صفحة؛ أما تبويب PDF فيحتفظ بمحدِّده الخاص.
- **الكتب الطويلة.** يعمل كتاب من 120 فصلًا كما يعمل كتاب قصير. قائمة الفصول في رأس لوحة النص تُمرَّر داخل النافذة وتُفتح على الفصل النشط، ومنه تتنقل مفاتيح الأسهم. والكتاب المقسّم إلى أجزاء (أسوار `:::part` في فصوله) يسرد فصوله تحت أجزائها، في القائمة وفي لوحة الفصول، والنقر على جزء في القائمة يفتح فصله الأول. وفوق 30 فصلًا يظهر في أعلى القائمة حقل بحث يطابق أرقام الفصول (`27`) وكلمات العناوين وأسماء الأجزاء (`埋香`، `卷三`)؛ ويفتح Enter أول نتيجة مطابقة. وما دام أسلوب إدخال (input method) يُركّب نصًا (Zhuyin، Cangjie، pinyin، kana)، فإن Enter ومفاتيح الأسهم تعود إليه: يؤكد Enter التحويل ولا يفتح شيئًا. تُحمَّل ملفات فصول كتاب العيّنة ثمانية في كل مرة، وفي أثناء تقسيم الفصول إلى صفحات في الخلفية تعرض لوحة الفصول التقدّم (*جارٍ التقسيم إلى صفحات 34/120*). ويعرض Canvas ومعاينة HTML الكتاب الذي يزيد على 200 فصل فصلًا واحدًا في كل مرة، أيًّا كان ما يطلبه الكتاب أو بيانه: فإخراج كل الفصول دفعة واحدة يُبقي الكتاب كله في الذاكرة. أما الكتاب الذي دون ذلك فيمكن أن يُفتح كاملًا: يستغرق 紅樓夢 (129 فصلًا، نحو 2000 صفحة) قرابة 25 ثانية و100 MB على Canvas. ويظل تبويب PDF قادرًا على تصدير أي كتاب كاملًا.
- **البيانات التمهيدية (front matter).** البيانات التمهيدية للفصل الأول هي البيانات التمهيدية للكتاب (العنوان، والمؤلف، …). أما كتلة البيانات التمهيدية في أعلى أي فصل آخر فتُتجاهَل، وتنبّه لوحة الفحوص إلى ذلك. ويتبع `buildBundle` القاعدة نفسها، فيُخرَج الكتاب في Sandbox كما يُخرَج في برنامجك.
- **أعداد الصفحات.** يُخرَج كل فصل مستندًا قائمًا بذاته، لذا يعدّ `{totalPages}` صفحات الفصل. أما `{bookTotalPages}` فيعدّ صفحات الكتاب كله: حين تُعرف صفحات كل الفصول، تُخرج المعاينات كل فصل بذلك المجموع (فقط حين يطبعه رأس الصفحة أو تذييلها أو أحد التصاميم). وحتى ذلك الحين يطبع الفصل عدد الصفحات حتى نهايته هو. ويعدّ خيار **الكتاب كاملًا** في تبويب PDF الصفحات التي يُخرجها، فيطبع الملف دائمًا المجموع الحقيقي لصفحات الكتاب.
- **صفحات افتتاح الفصول.** لا يُفرض فاصل صفحة بين الفصول: الفصل الذي أول كتلة فيه عنوان من المستوى 1 يبدأ في صفحة جديدة بفضل إعداد *فاصل صفحة قبله* الخاص بالعنوان نفسه، تمامًا كفصل يبدأ في وسط المستند.
- **المزامنة.** النقر على فقرة من أي فصل في معاينة Canvas أو HTML ينقل المحرّر إلى ذلك الفصل ويضع المؤشر فيها؛ ويُبرَز مؤشر المحرّر في المعاينات أينما وقع الفصل في الكتاب. وتحمل التحذيرات اسم فصلها.
- **المستندات الموجودة** تُفتح كتابًا من فصل واحد؛ ولا يتغير شيء حتى يُضاف فصل ثانٍ.

## تحرير القصص المصورة

يمكن تحرير الفصل الذي فيه صفحات قصص مصورة (`:::page`) أو شرائط مصورة (`:::strip`) على الصفحات نفسها، في تبويب Canvas وتبويب HTML ووضع **تحديد النص** في Folio. وتعمل الأدوات نفسها في الشريط المصور المنضَّد في عمود أو العائم إلى رأس الصفحة أو الممتد عبرها، والأضيق من العرض الذي يمتد عليه أو الذي تحت تعليق، وتكتب في سور الشريط نفسه. وكل تغيير يُكتب في ملف Markdown الخاص بالفصل كما لو كُتب باليد، فيتراجع عنه سجل التراجع في المحرّر. ويشرح دليل [القصص المصورة](https://postext.dev/ar/docs/comics.md) الترميز وقواعد كتابة الحوار.

- **خطوط التقسيم.** فوق الفاصل بين إطارين يصير المؤشر مؤشر تغيير الحجم. اسحبه لتحريك خط التقسيم؛ وعند الإفلات تُكتب النسبة المئوية الجديدة في السمة `split` في الصفحة (وتُضاف إلى السور حين لا تكون للصفحة سمة) ويُعاد إخراج الصفحة. ويثبّت Shift الخط على خطوات من 5%، ويحرّك Alt الطرف الأقرب إلى المؤشر وحده فيميل الخط، ولا يصير أي إطار أضيق من 5%. وفي أثناء السحب يُعلَّم، مع تلميح، الإطار الذي لن تبقى المنطقة الآمنة لرسمه ظاهرة. وكل خط تقسيم هو أيضًا فاصل يقبل التركيز: تحرّكه مفاتيح الأسهم بنسبة 1% (و5% مع Shift)، ويكتب Enter الموضع، ويعيده Escape إلى مكانه.
- **التقسيم والدمج.** فوق كل إطار شريط أدوات صغير فيه **تقسيم بخط أفقي** و**تقسيم بخط عمودي** (يُضاف سطر `::panel` فارغ للخانة الجديدة، بعد هذا الإطار مباشرة) و**دمج مع اللوحة التالية**: يزول الخط بين الإطارين، ويحتفظ الإطار المدموج برسم الإطار الأول ويأخذ أسطر الحوار في الإطارين. ويمكن الوصول إلى الإطارات بمفتاح Tab أيضًا: يظهر محيط الإطار الذي عليه التركيز، ويقسمه H بخط أفقي وV بخط عمودي، ويدمجه M مع الإطار التالي؛ ويبقى التركيز على الإطار بعد إعادة إخراج الصفحة. ويفتح Enter شريط الأدوات، ويعود Escape منه إلى الإطار.
- **الفقاعات.** اسحب الفقاعة لتثبيتها: عند الإفلات يأخذ سطر حوارها `at="x% y%"`، وهي النقطة بنسب مئوية من رسم الإطار (أو من الخانة في الإطار الذي لا رسم له)، فيبقى التثبيت في الموضع نفسه من الرسم مع القصّ وسحب خطوط التقسيم والترجمات. والمجموعة الموصولة تتحرك كتلة واحدة، وتثبّتها فقاعتها الأولى. وتحرّك مفاتيح الأسهم الفقاعة التي عليها التركيز بنسبة 1% (و5% مع Shift)، والنقر المزدوج على فقاعة مثبَّتة يزيل `at` منها ويعيدها إلى الموضع التلقائي. والنقرة الواحدة تضع مؤشر المحرّر على سطر الفقاعة.
- **تلميح الفيض.** في أثناء حركة الفقاعة، بالمؤشر أو بمفاتيح الأسهم، تفحص المعاينة أين ستستقر. فإن كانت ستغطي وجهًا أو منطقة تجنّب، أو تخرج من إطارها أكثر مما تخرج الآن، صار المحيط المتحرك برتقاليًا، ورُسمت وجوه الإطار ومناطق تجنّبه بخط متقطع، وقال التلميح ما الأمر: *ستغطي هنا وجهًا*، *ستغطي هنا جزءًا من الصورة يجب أن يبقى ظاهرًا*، *ستخرج هنا من اللوحة*. والسطر الذي فيه `break` لا يُعلَّم لخروجه من إطاره. ولا يتنبأ التلميح بكيفية تحرّك الفقاعات الأخرى في الإطار لتفسح لها المكان.
- **الذيول.** فوق طرف الذيل يصير المؤشر علامة تصويب. اسحب الطرف إلى حيث ينبغي أن يتجه الذيل: عند الإفلات يأخذ السطر `to="x% y%"`، وهي النقطة بنسب مئوية من رسم الإطار، فيلتفت الذيل نحوها ويتوقف قبل أن يبلغها كما يتوقف قبل الفم. ويلغي Escape السحب، والنقر المزدوج على الطرف يزيل `to` فيعود الذيل إلى متحدثه. ومن لوحة المفاتيح ينقل T من فقاعة عليها التركيز إلى ذيلها: تحرّك مفاتيح الأسهم النقطة التي يتجه إليها بنسبة 1% (و5% مع Shift)، ويكتبها Enter، ويعيدها Escape إلى موضعها، ويزيل Delete قيمة `to`، ويعود T إلى الفقاعة.
- **الشخصيات ومناطق التجنّب.** في صورة من [لوحة الموارد](https://postext.dev/ar/docs/sandbox.md#لوحة-الموارد) يفتح الحقل **المنطقة الآمنة وكتابة الحوار** نافذة فيها ثلاثة أوضاع. **المنطقة الآمنة** تعلّم جزء الصورة الذي يجب أن يبقى ظاهرًا. و**الشخصيات** تضع نقطة لكل شخصية: النقر على الصورة يضيف متحدثًا هناك وينقل التركيز إلى معرّفه، الذي يجب أن يكون مفتاح المتحدث الذي يستعمله السيناريو (`maya: …`)؛ ويُسحب فمه ورأسه (حيث تتجه فقاعات التفكير) ووجهه (الذي لا تغطيه أي فقاعة) إلى مواضعها. و**مناطق التجنّب** مستطيلات لا تغطيها أي فقاعة، تُرسم بالسحب على الصورة. وفي الوضع نفسه تُحدَّد وجوه من لا يتكلمون (**إضافة وجه شخص لا يتكلم**، أو المفتاح **وجه** في صف المنطقة): لا تغطي أي فقاعة وجهًا كهذا، أما منطقة التجنّب فتتنازل حين لا يبقى في الإطار مكان آخر. ويمكن تحريك كل علامة بمفاتيح الأسهم (ومع Shift بخطوات أكبر) وحذفها بـ Delete؛ وللنافذة سجل تراجع خاص بها، ويُعلَّم المتحدث الواقع خارج المنطقة الآمنة.
- **الإعدادات.** تحمل مجموعة **القصص المصوّرة** في لوحة التصميم إعدادات القصص المصورة: اتجاه القراءة وعكس الرسوم، والإطار العام والفواصل، والإطار الافتراضي وأنماط الإطارات المسمّاة، وكتابة النصوص، وأنماط الفقاعات، ولكل نمط معاينة لمحيطه.
- **المحرّر والفحوص.** يلوّن محرّر النص `:::page` و`:::strip` وأسطر `::panel` ومفاتيح أسطر الحوار وسماتها. وتسرد لوحة الفحوص تحذيرات القصص المصورة (تقسيم غير مقروء، وإطارات لا تطابق الخانات، وفقاعة لا تتسع…) عند السطر الذي يخصّها؛ انظر [القصص المصورة › تحذيرات القصص المصورة](https://postext.dev/ar/docs/comics.md#تحذيرات-القصص-المصورة).

## مستندات Word

تصل المخطوطات عادةً في ملفات Word. وتستورد لوحة النص ملف `.docx` مباشرةً، دون وكيل ذكاء اصطناعي ودون تثبيت أي شيء، وتطابق أنماطه كما يفعل الأمر *Place* في InDesign. يقرأ **استيراد مستند Word** الملف في المتصفح (ولا يُرفع أبدًا) ويفتح نافذة؛ ولا يتغير الكتاب إلا حين تضغط **استيراد**. والملف الذي ليس مستند Word، كملف `.doc` ثنائي قديم، يُرفض برسالة تقول ذلك؛ فاحفظه من Word بصيغة `.docx` أولًا.

للنافذة هذه الأجزاء، ويمكن طيّ كل منها:

- **جودة الأصل.** حكم على طريقة إعداد المخطوطة: *أنماطه سليمة* (يتحوّل دون شوائب)، أو *أنماطه جزئية* (بعض الفقرات منسّقة يدويًا)، أو *بلا أنماط* (كل شيء بنمط Normal (عادي)، فيدخل النص فقراتٍ عادية). وتحته الأعداد (الفقرات، وكم منها بنمط غير Normal، والصور، والجداول، والحواشي) وما عُثر عليه، ومع كل بند الكلمات الأولى من بضع فقرات يقع فيها: فقرات نُسّقت يدويًا (الخطوط، والأحجام، والألوان، والمحاذاة؛ ويُستبعد هذا التنسيق لأن التصميم هو الذي يحدّده)، وفقرات قصيرة بخط عريض تبدو عناوين مكتوبة يدويًا، وأرقام أو نقاط مكتوبة يدويًا بدل قوائم Word، وفواصل أسطر يدوية، وفواصل صفحات يدوية، وفقرات فارغة استُخدمت للتباعد، ومسافات جدولة ومسافات مزدوجة، وتغييرات متعقَّبة (تُحفظ الإدراجات وتُستبعد المحذوفات؛ اقبلها أو ارفضها في Word أولًا)، وتعليقات (لا تُستورد)، ومربعات نص (يأتي نص كل مربع بعد الفقرة المربوط بها)، ومعادلات (تُحوَّل إلى TeX؛ راجعها)، ونص مخفي، وصور بتنسيقات لا يستطيع المتصفح عرضها (EMF وWMF وTIFF).
- **قالب الاستيراد.** المطابقة المستخدمة: *تلقائي* (حسب اسم النمط)، أو قالب محفوظ، أو *محفوظ في هذا المستند* في ملف صُدِّر من Sandbox. يطلب **احفظه قالبًا جديدًا** اسمًا ويحفظ المطابقة في المتصفح، بما فيها كل أنماط هذا المستند؛ ويحدّث **احفظ التغييرات** القالب المحدد؛ ويكتب زر التنزيل القالب في ملف `.json` ويحمّل زر الرفع ملفًا كهذا، فيستطيع فريق كامل أن يتشارك القالب نفسه. ويطلب حذف القالب التأكيد. ويُعرض آخر قالب استُخدم أولًا في المرة التالية.
- **أنماط الفقرات.** كل نمط فقرة يستخدمه المستند، مع عدد الفقرات التي تستخدمه والكلمات الأولى من إحداها، وما يصير إليه: **نص المتن**، أو **عنوان** (مستوى من 1 إلى 6، وأحد أنماط العناوين حين يكون في التصميم أنماط عناوين)، أو **نمط فقرة** (أحد أنماط الفقرات في التصميم؛ والفقرات المتتالية به تكوّن مجموعة `:::paragraphs` واحدة)، أو **إطار** (الفقرات المتتالية تكوّن إطارًا واحدًا من ذلك النوع)، أو **عنوان إطار** (يفتح إطارًا عنوانه نص الفقرة)، أو **اقتباس**، أو **تعليق الصورة أو الجدول المجاور**، أو **بداية فصل جديد**، أو **Postext Markdown كما كُتب** (يُنسخ النص كما هو، للتوجيهات المكتوبة في Word)، أو **استبعاد**. وفقرات القوائم المرقّمة والنقطية في Word تصير قوائم Postext أيًّا كان نمطها، بأرقامها ومستويات تداخلها. ويصفّ **قصيدة (:::verse، سطرًا سطرًا)** فقرات النمط قصيدةَ `:::verse`، ويمكن أن تكون في أحد أنماط الفقرات في التصميم: يكسر Shift+Enter سطرًا من الشعر، والفقرة مقطع، والفقرات المتتالية ذات السطر الواحد مقطع واحد، والفقرة الفارغة فاصل بين مقطعين؛ ويُقترح للأنماط المسماة Verse أو Poem أو شعر.
- **أنماط الأحرف.** والأمر نفسه لأنماط الأحرف: **نص عادي**، أو **عريض**، أو **مائل**، أو **عريض مائل**، أو **الحروف الكبيرة المصغّرة**، أو **مرفوع**، أو **منخفض**، أو **شارة** (أحد أنماط الشارات في التصميم)، أو **Postext Markdown كما كُتب**، أو **استبعاد**.
- **خيارات.** تبقى فواصل الأسطر اليدوية (Shift+Enter) فواصلَ أسطر داخل الفقرة (شرطة مائلة عكسية في آخر سطر Markdown، وهو الافتراضي)، أو تُوصل بمسافة، أو تبدأ فقرة جديدة؛ ويُحتفظ بالعريض والمائل والحروف الكبيرة المصغّرة والرفع والخفض المضبوطة يدويًا أو تُستبعد؛ وتبقى الفقرات القصيرة بخط عريض فقرات أو تصير عناوين من مستوى معيّن؛ وتُستبعد فواصل الصفحات اليدوية (التصميم يحدّد أين تبدأ الصفحة التالية) أو يُحتفظ بها في صورة `:::pagebreak`؛ وتُضاف الصور والجداول مواردَ أو لا تُضاف.
- **معاينة Markdown**، وتتحدّث كلما تغيّرت المطابقة.

يختار ذيل النافذة وجهة النص: **استبدل هذا الفصل**، أو **فصول جديدة بعد هذا الفصل**، أو **استبدل الكتاب كله**؛ والخياران الأخيران يبدآن فصلًا عند كل عنوان من المستوى 1. وتصير الصور (PNG وJPEG وGIF وWebP وSVG) موارد أشكال، والجداول موارد جداول (مع الحفاظ على صفوف الرأس والخلايا المدموجة وعروض الأعمدة وتعبئة الخلايا)، ويوضع كل مورد بـ `::resource{id="…"}` حيث كان، ويأخذ تعليقه من فقرة التعليق المجاورة له، دون التسمية المكتوبة يدويًا (*الشكل 3.*) لأن Postext يرقّم الموارد. وتصير الحواشي السفلية والحواشي الختامية حواشيَ سفلية في Postext (`[^1]`)، ومداخل فهرس Word (حقول XE) علامات `:index`، وتبقى الروابط روابط، وتصير المعادلات `$…$` / `$$…$$`. وتصير الجدولة في نص المتن `:tab` مع الموضع الذي حدّده Word لها (`:tab{at=432pt align=end leader="."}`)، أو `:tab` مجرّدة حين تذهب الفقرة إلى نمط فقرة في الكتاب له مواضعه الخاصة؛ وتصير موجِّهات Word، النقاط والشُّرَط والنقاط الوسطى، `.` و`-` و`·`، وموجِّها الشرطة السفلية والخط العريض خطًّا. والجدولة في عنوان أو خلية جدول أو حاشية تصير مسافة.

وقبل مطابقة الأنماط بأسمائها، تتعرّف المطابقة التلقائية على أدوار Word نفسه بأي لغة للواجهة (الأنماط الداخلية *heading 1*–*6* و*Title* و*Quote* و*Caption*؛ وتُستبعد فقرات جدول المحتويات والفهرس والرأس والتذييل) وعلى أنماط التصميم: فنمط Word الذي يحمل اسم نمط فقرة أو نوع إطار أو نمط عنوان أو نمط شارة في الكتاب (بالمعرّف أو بالاسم، دون تمييز بين الأحرف الكبيرة والصغيرة ولا بين الحروف المشكولة وغير المشكولة) يُطابَق مع ذلك النمط.

ينزّل **تصدير إلى Word** الفصل المفتوح، أو الكتاب كله، ملفَّ `.docx` ليعمل عليه شخص آخر في Word. ويُطبَّق القالب نفسه في الاتجاه المعاكس: تأخذ العناوين أنماط العناوين في Word، وتأخذ أنماط الفقرات والإطارات والاقتباسات والشارات أنماط Word خاصة بها (تحمل أسماء أنماط التصميم، مثل *إطار: ملاحظة* و*شارة: مفتاح*)، وتصير القوائم قوائم Word، والحواشي السفلية حواشيَ Word، وتبقى الروابط روابط. وتصير `:tab` جدولةً في Word، ويُحفظ `:tab{…}` الذي له موضعه الخاص كما كُتب، وتصير مواضع الجدولة في نمط الفقرة المحدّدة بطول مواضعَ الجدولة في نمط Word المقابل، مع أقرب موجِّه في Word (والموضع عند `'end'` أو عند نسبة مئوية يتوقف على الصفحة التي ينضّد Word النص عليها، فيُستبعد). وما لا يستطيع Word عرضه (البيانات التمهيدية، والأسوار، والتوجيهات، و`:ref`، والرياضيات، وعلامات `:index`، وأسطر الموارد) يُحفظ كما كُتب بأنماط *Postext Markup* الرمادية. ويُصدَّر الكتاب مع فقرة *Postext Chapter* في رأس كل فصل. ويُحفظ القالب داخل الملف، فيُستورد المستند المحرَّر من جديد بالمطابقة نفسها، وكتابًا كاملًا حين يحوي فقرات فصول. وإذا تُرك النص الرمادي كما هو عاد النص كما خرج؛ ويُعاد ترقيم تسميات الحواشي (`[^1]`، `[^2]`…)، وهذا لا يغيّر المطبوع، ويعود `_italic_` في صورة `*italic*`.

وللتحويلات التي لا تغطيها هذه النافذة (أصول بصيغة PDF أو PowerPoint أو EPUB أو IDML، أو استنساخ قواعد تخطيط الأصل)، استخدم [مهارة الوكيل](https://postext.dev/ar/docs/skill.md).

## حفظ العمل

يحفظ Sandbox عملك تلقائيًا في المتصفح:

- **الكتاب والإعدادات** — تُحفظ الفصول والفصل النشط ونطاق Canvas تلقائيًا في `localStorage` تحت `postext-sandbox-book` (المستند الواحد الذي حفظه إصدار أقدم يُقرأ من `postext-sandbox-markdown` كتابًا من فصل واحد ويُرحَّل عند أول حفظ)؛ وتُحفظ الإعدادات بعد ثانية واحدة من الخمول بعد حذف القيم الافتراضية، فلا يُخزَّن إلا ما غيّرته أنت، مع رقم إصدارها (`postext-sandbox-config-version`)؛ والإعدادات المحفوظة قبل وجود رقم الإصدار تُقرأ كما هو موضح في *فواصل العناوين المحفوظة بـ postext 1.4 أو أقدم* أدناه
- **حالة الواجهة** — اللوحة النشطة وتبويب العرض، وعرض الشريط الجانبي، والمجموعة المفتوحة في لوحة التصميم (`postext-sandbox-settings-group`)، ومفتاح *أظهر كل الشروح* فيها (`postext-sandbox-settings-help`) وحالات فتح الأقسام، وكتب العيّنة المخفية، وأوضاع التكبير والملاءمة والعرض في Canvas، ومقياس خط HTML ووضع الأعمدة فيه، وصيغة العرض (rendition) في تبويب EPUB (`postext-sandbox-epub-layout`)، وحالات تثبيت أشرطة الأدوات، كلها محفوظة في `localStorage`
- **الكتاب المفتوح** — يُخزَّن معرّف الكتاب المفتوح من كتبك الخاصة (*مشروع*) في `localStorage` تحت `postext-sandbox-project`؛ أما المشاريع نفسها (الفصول والإعدادات وسجلات الموارد؛ السجل `version: 9`، وهو `CONFIG_VERSION` في المحرّك، الذي تُختم به أيضًا إعدادات العمل وملفات `postext-config.json` المُصدَّرة، فيُرحَّل كلٌّ منها مرة واحدة حين تتغير قواعد المحرّك؛ وتُرحَّل سجلات المستند الواحد من الإصدارات الأقدم عند قراءتها، وتُثبَّت كما هو موضح أدناه فواصلُ العناوين في السجلات الأقدم من الإصدار 3، وحجمُ الرياضيات في السجلات الأقدم من الإصدار 4، والمسافةُ تحت الأشكال المضمّنة في السجلات الأقدم من الإصدار 5، والمسافةُ حول الأشكال المضمّنة داخل الإطارات وتنسيقاتُ العناوين وأحجامُ الحروف الاستهلالية والمساحةُ تحت سطر النقطتين وقطعُ الإطارات في السجلات الأقدم من الإصدار 6، والكسرُ عند الشرطات وكسرُ النص غير المضبوط في السجلات الأقدم من الإصدار 7، والتقسيمُ تحت العنوان والكسرُ عند واصلات الكلمات المركّبة والمسافةُ تحت حاويات `:::paragraphs` في السجلات الأقدم من الإصدار 8) فتقيم في المخزن `projects` في قاعدة بيانات IndexedDB الخاصة بـ Sandbox، وتتشارك حمولاتها الثنائية مخزنَي الكتل الثنائية (blobs) والخطوط مع المستند قيد العمل. وتُحذف الحمولات بجمع المهملات (garbage collection) حين لا يشير إليها المستند قيد العمل ولا أي مشروع
- **كتب العيّنة المعدّلة** — نسختك من كتاب عيّنة (فصولها، والفصل النشط، ونطاق Canvas، والإعدادات وسجلات الموارد، مع ما طبّقته العيّنة حين فتحتها) تُحفظ في المخزن `presetDrafts` في قاعدة بيانات IndexedDB الخاصة بـ Sandbox، بسجل واحد لكل عيّنة ولغة محتوى، ويحتفظ جمع المهملات بملفاتها كما يحتفظ بملفات المشروع. واستعادة الأصل تحذفها
- **أغلفة كتب العيّنة** — الغلاف المأخوذ من الصفحة الأولى لكتاب عيّنة لا يأتي بصورة مصغّرة يُحفظ في المخزن `presetCovers` في قاعدة بيانات IndexedDB الخاصة بـ Sandbox، بسجل واحد لكل عيّنة ولغة محتوى (انظر [لوحة الكتب](https://postext.dev/ar/docs/sandbox.md#لوحة-الكتب)). أما كتابك الخاص فيحفظ غلافه في سجل مشروعه.
- **الحفظ عند المغادرة** — تُكتب التعديلات المعلّقة فورًا حين تُخفى الصفحة أو تُغلق، وحين تغادر Sandbox عبر رابط (الشعار)، وقبل أن يُفتح كتاب آخر، بدلًا من انتظار التوقف لمدة ثانية واحدة
- **كتاب العيّنة المفتوح** — يُخزَّن معرّف آخر إعداد مسبق حُمِّل في `localStorage` تحت `postext-sandbox-preset`، فتظل أزرار **إعادة الضبط** في اللوحات تستعيد ذلك الإعداد المسبق من جلسة إلى أخرى (ويظهر الإعداد المسبق الذي لم يعد متاحًا على أنه غير متوفر). أما ما طبّقه ذلك الإعداد المسبق، أي بصمة حزمته مع تجزئات (hashes) نص Markdown والإعدادات ومجموعة الموارد، فيُخزَّن تحت `postext-sandbox-preset-applied`، وبه تميّز الزيارة التالية المستند الذي لم يُمسّ من المستند المعدّل
- **الموارد والخطوط** — تُحفظ سجلات الموارد وكتلها الثنائية (الصور النقطية وملفات SVG) وملفات الخطوط المخصصة في **IndexedDB**؛ وحين لا يتوفر IndexedDB (مثلًا في بعض أوضاع التصفح الخاص) يظهر تحذير *التخزين غير متاح* في لوحة الفحوص (تحت *المتصفح*)
- **الرابط الدائم** — يسمّي جزء الرابط بعد العلامة # ما يظهر على الشاشة، فإعادة التحميل أو الإشارة المرجعية أو رابط تمرّره إلى شخص آخر يصل إلى الصفحة نفسها من الكتاب نفسه في العارض نفسه: `#preset=bioquimica-feduchi&lang=es&view=canvas&chapter=1&page=7` يفتح الإعداد المسبق Bioquímica بالإسبانية على تبويب Canvas عند الفصل 1، الصفحة 7 (الرقم المطبوع على الصفحة). وقيمة `view` هي `canvas` أو `pdf` أو `folio` أو `html` أو `epub`؛ وفي تبويب Folio تكون الصفحة هي الصفحة اليمنى من الصفحتين المتقابلتين المفتوحتين. ويُسمّى المشروع المحلي بـ `project=ID`، وهو معرّف تخزينه، فلا يستطيع اتباعَ مثل هذا الرابط إلا المتصفحُ الذي يحمل المشروع. ويُبقي Sandbox جزء الرابط محدّثًا كلما بدّلت الكتب والتبويبات والفصول وكلما مرّرت الصفحات. والجزء المحذوف من الرابط يعني ما هو موجود (بلا صفحة: الصفحة الأولى من الفصل؛ بلا كتاب: آخر كتاب كان مفتوحًا)، والكتاب الذي لا يستطيع المتصفح فتحه يُتخطّى. ولصق رابط في شريط العنوان لـ Sandbox مفتوح يفتحه في مكانه. وحين تُفتح الصفحة على رابط إلى كتاب غير آخر كتاب كان مفتوحًا، يعرض Sandbox حالة التحميل حتى يصل الكتاب المرتبط، ولا يعرض الكتاب السابق أبدًا. ويمكن للمضيف أيضًا أن يربط بكتب خاصة به عبر الخاصية `hashBundles` (انظر [الخصائص](https://postext.dev/ar/docs/sandbox-embedding.md#الخصائص-props)): يفتح الموقع وصفة من دليل الوصفات بـ `#recipe=<slug>&lang=es`. تستورد الزيارة الأولى ملف `.postext` الخاص بالوصفة كتابًا من كتبك. أما الزيارة اللاحقة للرابط نفسه فتسأل أولًا (*لديك هذا الكتاب بالفعل*): **افتح نسختي** يفتح ذلك الكتاب بتعديلاتك، و**استبدل بالنسخة المنشورة** يستورد الوصفة من جديد، وقد تكون صُحّحت منذ ذلك الحين، ويحذف نسختك ما إن تُفتح النسخة الجديدة؛ ومفتاح Escape يُبقي نسختك. ثم يسمّي جزء الرابط المشروع. وتبقى لغة الواجهة في المسار (`/en/sandbox`، `/es/sandbox`)؛ أما `lang` فهي لغة محتوى الحزمة ثنائية اللغة، بأي وسم BCP 47، محفوظًا بحالة الأحرف القانونية (`lang=zh-hant` يُقرأ `zh-Hant`). والوسم الذي لا تسرده الحزمة يفتح الطبعة التي تخدمه: `zh-TW` و`zh-HK` يفتحان الطبعة الصينية التقليدية (`zh-Hant`)، و`zh` و`zh-CN` الطبعة المبسطة (`zh-Hans`)، و`en-GB` الطبعة الإنجليزية. ولا تُقرأ الكتابة الصينية الأخرى إلا حين لا يكون في الحزمة طبعة بكتابة القارئ: رابط `zh-TW` إلى كتاب بـ `zh-Hans` والإنجليزية يفتح النص المبسط، لا الإنجليزي. والرابط الذي بلا `lang` يفتح `openLocale` الخاص بالحزمة حين تسمّي واحدًا، وإلا فالطبعة بلغة الواجهة. وينطبق فصل الرابط وصفحته على الطبعة التي يفتحها، ثم يسمّي جزء الرابط تلك الطبعة بوسمها الخاص (`lang=zh-TW&chapter=28` يصبح `lang=zh-Hant&chapter=28`).

**فواصل العناوين المحفوظة بـ postext 1.4 أو أقدم.** حتى postext 1.4، كانت الإعدادات التي فيها كائن `headings` تُخرج عناوين المستوى 1 بلا فاصل صفحة ما لم تضبط مفتاح *فاصل صفحة قبله* للعنوان H1 صراحةً (وكان الحفظ يُسقط فاصل H1 المُطفأ)، وكان فاصل H1 الجزئي يأخذ الحقل الناقص من الافتراضي الخالي من الفاصل، وكان فاصل نمط العنوان يفعل الشيء نفسه بدلًا من أن يندمج مع فاصل مستواه. أما المحرّك الآن فيحتفظ بالافتراضي لكل مستوى، إذ يبدأ H1 في صفحة فردية جديدة (`always-odd`)، ويدمج الفاصل الجزئي معه. ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يكتب Sandbox تلك الفواصل صراحةً حين يقرأ سجل مشروع أقدم من الإصدار 3 أو إعدادات عمل بلا رقم إصدار: `enabled: false` على H1 حيث كان الفاصل مطفأً، و`parity: 'any'` إلى جانب `enabled: true` لم يسمِّ زوجية، على H1 وعلى أنماط العناوين. ثم تعرض لوحة التصميم الفاصل الذي أُخرجت به الصفحات. وتسجّل الملفات الإصدار أيضًا منذ postext 1.5: ملف `.postext` الذي ليس في بيانه `configVersion`، وملف `postext-config.json` الذي يخلو منه، كتبهما postext 1.4 أو أقدم، ويُقرآن بالطريقة نفسها حين يُستوردان أو يُفتحان (انظر [الحزم التي كتبها postext 1.4 أو أقدم](https://postext.dev/ar/docs/configuration-bundles.md#الحزم-التي-كتبها-postext-14-أو-ما-قبله)).

**حجم الرياضيات المحفوظ قبل postext 1.5.** حتى postext 1.4 كانت كل صيغة تخرج أكبر بـ 1.131 مرة مما يحدده *معامل الحجم* الخاص بها (انظر [حجم الصيغ](https://postext.dev/ar/docs/configuration-lists-math.md#الصيغ-الرياضية)). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يثبّت Sandbox ذلك الحجم حين يقرأ سجل مشروع أقدم من الإصدار 4، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 4`، أو ملف `postext-config.json` صُدِّر قبل ذلك: يصبح *معامل الحجم* هو المعامل المحفوظ × 1.1312، ويُقسَم هامش الصيغة المعروضة المقيس بـ `em` على 1.1312، فتبقى الصيغ والمسافة حولها كما كانت. والكتاب الذي لا تحتوي فصوله على `$` يُترك كما كان (ملف `postext-config.json` لا يحمل فصولًا، لذا يُثبَّت فيه الحجم كلما كانت الرياضيات مفعّلة)، وكذلك الكتاب الذي أُطفئ فيه *تفعيل LaTeX*. ثم يعرض قسم الصيغ الرياضية القيم التي أُخرج بها الكتاب؛ أعد ضبط *معامل الحجم* و*الهامش العلوي للصيغة المعروضة* و*الهامش السفلي للصيغة المعروضة* لتضبطه على حجم اليوم. ويُكتب التثبيت مرة واحدة: يُحفظ السجل من جديد تحت الإصدار الحالي ويُقرأ كما هو من ذلك الحين. والإعداد المسبق الذي طُبّق آنذاك ولم يُحرَّر قط يظل محسوبًا على أنه لم يُمسّ (يقارنه Sandbox بقيمه المثبّتة، وهذا يصح أيضًا على تثبيت فواصل العناوين): إعادة تحميله أو تبديل الكتب لا يسألك عن تجاهل تعديلات لم تُجرِها قط، والإصدار الأحدث من الإعداد المسبق، كإصدار دليل Postext المدمج، لا يزال يحلّ محله.

**الأشكال المضمّنة المحفوظة قبل postext 1.5.** حتى postext 1.4 كان الشكل أو الجدول الموضوع مضمّنًا في النص (الموضع *مضمَّن (هنا)*) يحتفظ بسطر من المسافة فوقه فقط: كان النص الذي بعده يستأنف عند خط الشبكة التالي، مهما كان قريبًا. أما الآن فيحتفظ بالسطر نفسه تحته (**الأعمدة › المسافة حول الأشكال المضمّنة**، *فوق وتحت*). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يضبط Sandbox *المسافة حول الأشكال المضمّنة* على *فوق فقط* حين يقرأ سجل مشروع أقدم من الإصدار 5، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 5`، أو ملف `postext-config.json` صُدِّر قبل ذلك، إذا كان أحد أسطر الكتاب يضمّن موردًا، أي `::resource{id="…"}` وحده في سطره، لا مجرد ذكر له في النص. وملف `postext-config.json` لا يحمل فصولًا، لذا يُضبط فيه ذلك كلما كان الملف أقدم. اختر *فوق وتحت* لتُخرج الكتاب بتباعد اليوم.

**الأشكال المضمّنة داخل الإطارات المحفوظة قبل postext 1.5.** حتى postext 1.4 كان الشكل أو الجدول الموضوع مضمّنًا داخل إطار يلتصق بنص الإطار المحيط به. أما الآن فيحتفظ بسطر من نص الإطار فوقه، وتحته أيضًا مع *فوق وتحت* (**الأعمدة › المسافة حول الأشكال داخل الإطارات**). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يُطفئ Sandbox *المسافة حول الأشكال داخل الإطارات* حين يقرأ سجل مشروع أقدم من الإصدار 6، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 6`، أو ملف `postext-config.json` صُدِّر قبل ذلك، إذا كان أحد إطارات الكتاب يضمّن موردًا في سطر خاص به. وملف `postext-config.json` لا يحمل فصولًا، لذا يُطفأ فيه كلما كان الملف أقدم. شغّله لتُخرج الكتاب بتباعد اليوم.

**تنسيقات العناوين والحروف الاستهلالية المحفوظة قبل postext 1.5.** حتى postext 1.4 كان العنوان يطبع كلمات `*italic*` و`**bold**` وغيرها من التنسيقات بنمطه العادي، وكان الحرف الاستهلالي الذي بلا حجم بطول جميع الأسطر التي يمتد عليها، وأعلاه فوق السطر الأول. أما الآن فالعنوان يطبّق تنسيقاته (**العناوين › التنسيقات السطرية في العناوين**)، ويحاذي أعلى الحرف الاستهلالي أعلى الحروف الكبيرة في السطر الأول. ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يُطفئ Sandbox *التنسيقات السطرية في العناوين* حين يقرأ سجل مشروع أقدم من الإصدار 6، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 6`، أو ملف `postext-config.json` صُدِّر قبل ذلك، إذا كان أحد عناوين الكتاب يحمل تنسيقًا (ملف `postext-config.json` لا يحمل فصولًا، لذا يُطفأ فيه كلما كان الملف أقدم)؛ ويكتب الحجم الذي ضُبط عليه كل حرف استهلالي في **حجم الحرف الاستهلالي** الخاص به. شغّل المفتاح، أو امسح الحجم، لتنضّد الكتاب بقواعد اليوم. وانتبه إلى أن العنوان المائل الذي وُسم عنوانه كله بـ `*…*` يخرج عندئذ قائمًا.

**القوائم بعد النقطتين المحفوظة قبل postext 1.5.** حتى postext 1.4 كان *أبقِ النقطتين مع القائمة* يعدّ سطرًا واحدًا من المساحة تحت السطر المنتهي بنقطتين كافيًا للقائمة، فكان البند الأول المؤلف من سطرين، الذي تُبقيه قواعد الأسطر اليتيمة (orphans) والأرامل (widows) كاملًا، ينتقل إلى العمود التالي ويترك سطر النقطتين وحيدًا في أسفل العمود. أما الآن فيطلب المساحة التي يحتاجها البند الأول (**الطباعة › نص المتن › الأرامل واليتامى والأسطر القصيرة › المساحة تحت سطر النقطتين**، *ما يحتاجه البند الأول*). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يضبط Sandbox *المساحة تحت سطر النقطتين* على *سطر واحد (1.4)* حين يقرأ سجل مشروع أقدم من الإصدار 6، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 6`، أو ملف `postext-config.json` صُدِّر قبل ذلك، إذا كانت إحدى قوائم الكتاب تلي سطرًا منتهيًا بنقطتين. وملف `postext-config.json` لا يحمل فصولًا، لذا يُضبط فيه ذلك كلما كان الملف أقدم. اختر *ما يحتاجه البند الأول* لتُخرج الكتاب بقاعدة اليوم.

**قطع الإطارات المحفوظ قبل postext 1.5.** حتى postext 1.4 كان الإطار الذي ينقسم داخل فقرة أو بند قائمة قد يترك منها سطرًا واحدًا على أحد الجانبين، ما دام كل جانب من الإطار يحمل *الأسطر المُبقاة على جانبَي الانقسام*. أما الآن فالقطع يترك سطرين على الأقل من الفقرة أو البند على كل جانب (**الأعمدة › أسطر الفقرة عند قطع الإطار**). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يضبط Sandbox *أسطر الفقرة عند قطع الإطار* على 1 حين يقرأ سجل مشروع أقدم من الإصدار 6، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 6`، أو ملف `postext-config.json` صُدِّر قبل ذلك، إذا كان أحد فصول الكتاب يفتح `:::callout`. وملف `postext-config.json` لا يحمل فصولًا، لذا يُضبط فيه ذلك كلما كان الملف أقدم. أعِده إلى 2 لتُخرج الكتاب بقاعدة اليوم.

**الشرطات والنص غير المضبوط المحفوظة قبل postext 1.5.** حتى postext 1.4 لم يكن الكسر الأمثل للأسطر ينهي سطرًا أبدًا بعد شرطة طويلة (em) أو قصيرة (en) ملتصقة بين كلمتين (`say—that’s`)، وكان النص غير المضبوط يُنضَّد دائمًا سطرًا سطرًا، يُملأ كل سطر قبل الذي يليه. أما الآن فيجوز أن ينتهي السطر بعد مثل هذه الشرطة (**الطباعة › نص المتن › الفقرات › الكسر بعد الشرطات**)، ويُكسر النص الجاري غير المضبوط بخوارزمية Knuth-Plass أيضًا (**الكسر الأمثل للنص غير المضبوط**). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يُطفئ Sandbox *الكسر بعد الشرطات* حين يقرأ سجل مشروع أقدم من الإصدار 7، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 7`، أو ملف `postext-config.json` صُدِّر قبل ذلك، إذا كان أحد فصول الكتاب يحتوي مثل هذه الشرطة (ملف `postext-config.json` لا يحمل فصولًا، لذا يُطفأ فيه كلما كان الملف أقدم)؛ ويُطفئ *الكسر الأمثل للنص غير المضبوط* حين تجعل الإعدادات بعض النص الجاري غير مضبوط: نص المتن، أو نمط فقرة، أو متن إطار، أو متن جزء، أو متن نمط قسم. شغّلهما لتُخرج الكتاب بقواعد اليوم.

**التقسيم تحت العنوان المحفوظ قبل postext 1.5.** حتى postext 1.4 كانت الفقرة التي تحت عنوان في أسفل عمود تحتفظ هناك بكل ما يتسع من أسطرها، مهما قلّ ما ينتقل منها إلى العمود التالي. أما الآن فتحترم الحد الأدنى للسطر اليتيم أيضًا، وإلا انتقل العنوان معها (**العناوين والمحتويات › العناوين › التقسيم تحت العنوان**). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يضبط Sandbox *التقسيم تحت العنوان* على *املأ العمود* حين يقرأ سجل مشروع أقدم من الإصدار 8، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 8`، أو ملف `postext-config.json` صُدِّر قبل ذلك، إذا كان في أحد فصول الكتاب عنوان (ملف `postext-config.json` لا يحمل فصولًا، لذا يُضبط فيه ذلك كلما كان الملف أقدم) وكانت الإعدادات تُبقي *الإبقاء مع ما يليه* والتحكم في الأسطر اليتيمة مفعّلين. اضبطه على *وفق القواعد* لتُخرج الكتاب بقاعدة اليوم.

**حاويات الفقرات المحفوظة قبل postext 1.5.** حتى postext 1.4 كانت المسافة تحت حاوية `:::paragraphs` هي مسافة النمط نفسه (الأكبر بين المسافة بين فقراته وهامشه السفلي)، توضع تحت السطر الأخير قبل أن يعود النص إلى الشبكة؛ وكانت المسافة التي يحتفظ بها العنوان فوقه تُضاف تحتها، ولم تكن مسافة الفقرات في المتن تُحتسب، فكان العنوان يبعد عن قائمة المراجع أكثر مما يبعد عن فقرة، وكانت الفقرة التي تلي مجموعة من المداخل المتراصّة أقرب إليها مما تكون إليه أي فقرة أخرى. أما الآن فتندمج المسافة مع مسافة الكتلة التالية نفسها، ولا تقل عن مسافة الفقرات في النص (**الطباعة › أنماط الفقرات › المسافة تحت الحاوية**، *دمج*). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يضبط Sandbox *المسافة تحت الحاوية* على *جمع (1.4)* حين يقرأ سجل مشروع أقدم من الإصدار 8، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 8`، أو ملف `postext-config.json` صُدِّر قبل ذلك، إذا كانت الإعدادات تعلن نمط فقرة وكان أحد فصول الكتاب يفتح حاوية `:::paragraphs`. وملف `postext-config.json` لا يحمل فصولًا، لذا يُضبط فيه ذلك كلما كان الملف أقدم ويعلن نمط فقرة. اختر *دمج* لتُخرج الكتاب بقاعدة اليوم.

**الكلمات المركّبة المحفوظة قبل postext 1.5.** حتى postext 1.4 لم يكن الكسر الأمثل للأسطر ينهي سطرًا مضبوطًا أبدًا بعد واصلة كلمة مركّبة (`well-known`) في فقرة خالية من الخط العريض أو المائل أو أي تنسيق آخر، بينما كان يفعل ذلك في الفقرة المنسّقة. أما الآن فيجوز أن ينتهي السطر هناك في كل فقرة (**الطباعة › نص المتن › الفقرات › الكسر بعد الواصلات**). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يُطفئ Sandbox *الكسر بعد الواصلات* حين يقرأ سجل مشروع أقدم من الإصدار 8، أو إعدادات عمل محفوظة تحت ختم أقدم (أو بلا ختم)، أو ملف `.postext` بيانه أقدم من `configVersion: 8`، أو ملف `postext-config.json` صُدِّر قبل ذلك، إذا كان أحد فصول الكتاب يضع واصلة بين حرفين (ملف `postext-config.json` لا يحمل فصولًا، لذا يُطفأ فيه كلما كان الملف أقدم). شغّله لتُخرج الكتاب بقاعدة اليوم.

**القصائد والأنماط ذات الإزاحة المعلّقة المحفوظة قبل postext 1.23.** حتى postext 1.22 كانت قصيدة `:::verse` التي لا تحمل أسطرها `||` تُصَفّ أشطرًا مفردة، كل سطر في الوسط، وكانت الإزاحة المعلّقة في نمط الفقرة تحلّ محل إزاحة السطر الأول. أما الآن فتُصَفّ قصيدة كهذه سطرًا سطرًا (**الطباعة › نص المتن › الشعر › قصائد بلا فاصل**، *سطرًا سطرًا*)، والنمط الذي يحدّد الإزاحتين يبدأ سطره الأول عند إزاحة السطر الأول. ولكي يحتفظ كتاب حُفظ آنذاك بصفحاته، يضبط Sandbox *قصائد بلا فاصل* على *أشطرًا (1.22)* حين يقرأ سجل مشروع أقدم من الإصدار 9، أو إعدادات عمل، أو تصديرًا `postext-config.json` موسومًا بأقل من 9، تحمل فصوله قصيدة كهذه، ويحذف إزاحة السطر الأول من النمط الذي يعلّق أيضًا. ويعطّل أيضًا **فواصل الأسطر الإجبارية** (**الطباعة › نص المتن › الفقرات**) حين تختم فصول هذا السجل سطرًا بشرطة مائلة عكسية أو تضع `\\` متبوعة بمسافة، وكانت تُطبع حتى postext 1.22 (وفي تصدير `postext-config.json`، الذي لا يحمل فصولًا، دائمًا). ويعطّل كذلك **أسوار الشيفرة** (**الطباعة › الشيفرة**) حين تحمل الفصول سور ```` ``` ```` أو `~~~`، إذ كانت أسطره تُقرأ Markdown حتى postext 1.22 (وفي التصدير، دائمًا).

**القصائد المحفوظة بالإصدار postext 1.23.** في postext 1.23 كان سطر القصيدة المصفوفة سطرًا سطرًا الأعرض من عرض السطر، ولو قليلًا، يُكمَل في سطر تالٍ. أما الآن فتضيق المسافات بين كلماته، حتى الحد الأدنى لتباعد الكلمات، فيبقى في سطر واحد إن كفى ذلك (**الطباعة › نص المتن › الشعر › تضييق قبل الكسر**). ولكي يحتفظ الكتاب المحفوظ آنذاك بصفحاته، يوقف Sandbox الخيار *تضييق قبل الكسر* حين يقرأ سجل مشروع أو إعدادات عمل أو ملف تصدير `postext-config.json` موسومًا بـ9 أو أقل وفي فصوله قصيدة مصفوفة سطرًا سطرًا (وفي ملف التصدير، الذي لا يحمل فصولًا، دائمًا).

**نصوص التصميم المحفوظة بالإصدار postext 1.23.** حتى postext 1.23 كان عنصر النص في تصميم العنوان أو صفحة الجزء الذي لا يضبط الفائض يُقتطع إلى سطر واحد بعلامة حذف. أما الآن فيلتف على أسطر أكثر، و**أضف نصًا** يترك *الفائض* لموضعه. ولكي يحتفظ كتاب حُفظ حينئذ بصفحاته، يضبط Sandbox *الفائض* على *علامة حذف في النهاية (…)* في كل عنصر من تلك العناصر حين يقرأ سجل مشروع، أو إعداد عمل، أو ملف `.postext`، أو ملف `postext-config.json` مصدَّرًا، مختومًا بالرقم 9 أو أقل.

**الجداول المدرجة والأعمدة المحفوظة بالإصدار postext 1.24.** حتى postext 1.24 كان الجدول الموضوع في `here` الذي لا يتسع له ما بقي من عموده ينتقل كاملًا إلى العمود التالي، وكان سور `:::columns` خارج الإطار يُتجاهل، ولم يكن الإطار يقطع أبدًا داخل مجموعة `:::columns`. أما الآن فيُقطع الجدول بين الصفوف، وتنضّد المجموعة كتلها في أعمدة وتستمر في العمود أو الصفحة التالية. ولكي يحتفظ كتاب حُفظ حينئذ بصفحاته، يعطّل Sandbox **طبّق ذلك على الجداول الموضوعة داخل النص** (**الجداول**) حين يقرأ سجل مشروع، أو إعداد عمل، أو تصديرًا `postext-config.json` مختومًا بأقل من 11، تضمّن فصوله موردًا، ويعطّل **أعمدة داخل النص، ومجموعات تنقسم** (**الأعمدة**) حين تحمل فصوله سور `:::columns` (وفي التصدير، الذي لا يحمل فصولًا، دائمًا).

تمنع هذه التثبيتات ما كان سيحرّكه كل تغيير من تغييرات القواعد تلك. ويُصلح الإصدار 1.5 أيضًا أخطاء في الإخراج، والإصلاح لا تثبيت له، لذا قد يرى الكتاب المحفوظ صفحة تتحرك حيث ينطبق أحدها: شريط عنوان فصل بعرض الصفحة بلا تصميم، وحرف استهلالي في تصميم عنوان، وفقرة داخل إطار، وفقرة مرخاة يمدّها توازن الأعمدة، وإطار عائم بهامش أعرض من سطر، وترويسة في الوسط أو محاذاة إلى اليمين مع تتبّع، والعمود الثاني تحت صفحة افتتاح بعرض الصفحة، وترويسة مأخوذة من عنوان كُسر بعد واصلة، وكلمة أعرض من سطرها قُطعت بجوار واصلتها، وبقية كلمة أعرض من سطرها، التي تحتفظ الآن بنقاط الكسر الخاصة بها، والبند الذي يلي قائمة متداخلة في قائمة أخرى (انظر [حجم الصيغ](https://postext.dev/ar/docs/configuration-lists-math.md#الصيغ-الرياضية) للاطلاع على القائمة).

التخزين **مشترك بين لغات الواجهة**. المستند الافتراضي الذي لم يُمسّ يتبدّل إلى نص Markdown الافتراضي للغة الحالية ويعيد إنشاء موارد الأمثلة حين تتغير اللغة، لذا يعرض فتحُ Sandbox بالإسبانية أمثلةً بالإسبانية. وأي تعديل من المستخدم يُخرج المستند من هذا السلوك. وتستنتج كل المعاينات أيضًا لغةً لتقسيم الكلمات بالواصلة من لغة الواجهة حين لا تسمّي الإعدادات أي لغة (لا لغة تقسيم الكلمات ولا `locale`).

### التصدير والاستيراد

ينتقل الكتاب كاملًا في **ملف `.postext`**: أرشيف zip له تمامًا بنية مجلد حزمة الإعداد المسبق، أي `preset.json` و`chapters/*.md` و`resources/*` و`fonts/*` (انظر [صيغة حزمة الإعداد المسبق](https://postext.dev/ar/docs/sandbox-embedding.md#صيغة-حزمة-الإعداد-المسبق)). ويحمل الأرشيف أيضًا **ترقيم صفحات** الكتاب في `layouts.json`، أي عدد صفحات كل فصل وترقيمه، مختومًا بإصدار المحرّك والإعدادات والموارد التي بُني بها، فيُفتح الكتاب المستورد مقسّمًا إلى صفحات، ولا يُعاد إخراج إلا ما لم تعد تلك الأختام تضمنه. والحزمة متعددة اللغات تنضّد كل لغة بإعداداتها الخاصة، لذا قد تحمل بدلًا من ذلك ملفًا لكل لغة، `layouts.<locale>.json` (`layouts.zh-Hant.json`)، يُقرأ قبل `layouts.json`. ويُصدِّر المستند النشط ترقيم الصفحات الذي يحمله؛ أما المشروع أو الإعداد المسبق المُصدَّر من صفّه فيحمل الترقيم المسجَّل آخر مرة كان فيها الكتاب قيد العمل. وتُكتب صورة الغلاف بوصفها `thumbnail` في البيان، فتبقى بعد التصدير ثم الاستيراد. وقائمة **جديد** في **لوحة الكتب** (**افتح ملف .postext…**) تستورد ملفًا كتابًا جديدًا؛ ولكل صف قائمة ⋯ خاصة به فيها **تنزيل (.postext)**، وقائمة الكتاب المفتوح تُصدّر المستند قيد العمل. والملفات التي كتبتها إصدارات أقدم (بيان من الإصدار 1 فيه `document.md` واحد) تُستورد كتابًا من فصل واحد. والكتاب المكتوب بلغة واحدة يحتفظ بتسميات الأشكال والجداول بتلك اللغة أيًّا كانت لغة الواجهة: ملف إسباني يُفتح من `/en/sandbox` يطبع *Figura* و*Tabla* ما لم تسمِّ إعداداته أنواع موارد أخرى. واللغة هي التي يسمّيها الملف، أو، حين لا يسمّي لغة، التي تضبطها إعداداته (`locale`، ثم لغة تقسيم الكلمات). ويقبل الاستيراد الملفات في جذر الأرشيف أو تحت مجلد واحد في المستوى الأعلى (كما ينتج عن ضغط المجلد نفسه؛ وتُتجاهل مدخلات `__MACOSX` والملفات المخفية (dotfiles)). وتُكتب الخطوط ملفاتٍ منفصلة، ولا تُكتب أبدًا داخل `config.customFonts`؛ وتُتخطّى أوجه `.woff` مع تحذير في الاتجاهين، وكذلك الموارد التي تنقصها بياناتها. فُكّ ضغط ملف مُصدَّر في `<presets-root>/<dir>/` وأضف مدخلًا في `index.json` لتقدّمه إعدادًا مسبقًا.

تقرأ الحزمة البرمجية `postext` الملفاتِ نفسها وتكتبها (`openBundle`، `createBundle`، `buildBundle`؛ انظر [الحزم](https://postext.dev/ar/docs/configuration-bundles.md#الحزم-ملفات-postext)). الكتاب الذي تُصدّره هنا يُفتح في برنامجك، والكتاب الذي يكتبه برنامجك يُفتح هنا. وهذا يجعل Sandbox مكانًا لفحص ما يُخرجه برنامج وضبطه بدقة: صدّره من البرنامج، واستورده هنا، وأصلحه بالمعاينة الحية، ثم صدّره مرة أخرى وحمّله في البرنامج. وتسلّم [مهارة الوكيل](https://postext.dev/ar/docs/skill.md) نسخها المنقولة (ports) ملفاتِ `.postext` أيضًا.

ويُصدَّر النص والتصميم أيضًا كلٌّ على حدة من رأسي لوحتي النص والتصميم.

يُنزّل رأس **لوحة التصميم** الملف `postext-config.json` بعد حذف القيم الافتراضية:

```json
{
  "type": "postext-config",
  "version": 1,
  "config": { ... }
}
```

يُنزّل رأس **لوحة النص** الفصل النشط ملفَّ `.md` عاديًا، ويستبدل زر **استيراد** فيه الفصلَ النشط بمحتويات ملف `.md`. ويفتح زر **استيراد** في لوحة التصميم منتقي ملفات لملفات `.json` يُتحقَّق منها مقابل `type` و`version` المتوقعَين؛ وتُتجاهل الملفات غير الصالحة بصمت. ولم يعد الغلاف `postext-markdown.json` ولا الصيغة المجمّعة `postext-sandbox.json` من الإصدارات الأقدم موجودَين.
