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

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

التمارين

كيف يصفّ Postext تمارين الكتاب المدرسي وكراسة التمارين: الحاوية :::exercise وأنواعها الاثنا عشر من الاختيار من متعدد إلى القسمة المطوّلة، والإجابات المكتوبة في Markdown، والترقيم، والحلول بعد التمرين أو مقلوبة أو في آخر الفصل أو آخر الكتاب، وطبعة المعلم، والفحوص، والتمارين التي يُجاب عنها على الشاشة في HTML وEPUB

آخر تحديث 2026-10-2416 دقيقةenescadefritptzhjaar

باختصار

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

الأسئلة وإجاباتها في Markdown، وطريقة طباعتها نمط تمرين.

التمرين كتلة من الفصل تُكتب بين :::exercise و:::. في داخلها التعليمة والأسئلة والخيارات والفراغات وإجاباتها، والحل المفصّل إن وُجد. يقرأ Postext الإجابات من النص، ويطبع التمرين للتلميذ (أسطر فارغة، ومربعات خالية، وبنود مخلوطة)، ويبني مفتاح الإجابات، ويضع الحلول حيث يريدها الكتاب. شارة الرقم وتسميات الخيارات وشكل الفراغ وتسطير مساحة الكتابة تأتي من exerciseStyles، أما موضع الحلول والطبعة التي تُطبع فيأتيان من exercises. فيخرج من ملف Markdown واحد كتاب التلميذ وكتاب المعلم وطبعة تفاعلية على الشاشة.

يُصفّ التمرين إطارًا من فقرات عادية وشارات ورسوم، فيوضع ويُقسَم بين الأعمدة والصفحات ويُوسَم في ملف PDF الميسَّر ويُرسم في كل المخرجات كما يُعامَل أي إطار. والكتاب الذي لا :::exercise فيه يُصفّ كما كان.

#حاوية التمرين

:::exercise
عاصمة المملكة المغربية هي:
 
- [ ] الدار البيضاء
- [x] الرباط
- [ ] فاس
:::

الفقرات التي يبدأ بها التمرين، حتى أول قائمة أو فراغ أو بنك كلمات، هي التعليمة. تُصفّ بعد رقم التمرين بخط التعليمة في النمط (العريض افتراضيًا). وما بعدها جسم التمرين، أي المطلوب.

تأخذ الحاوية هذه الخصائص:

الخاصيةعملها
typeنوع التمرين (انظر أدناه). يمكن حذفها حين يدل المحتوى عليه: قائمة المهام هي choice، وقائمة أزواج -> هي match، والنص الذي فيه [[…]] هو gaps، وما سوى ذلك open. وتُقرأ كتابات أخرى قليلة أيضًا (mcq، tf، cloze، matching…).
styleمعرّف نمط تمرين. إن غاب أو لم يُعرف، أُخذ أول نمط في exerciseStyles.
titleعنوان يُطبع بالعريض بعد الرقم.
#idمرساة، كما في الإطار: :::exercise{#volcanoes}.
nرقم ثابت، للحفاظ على ترقيم طبعة مطبوعة سابقة. وتُعَدّ التمارين التالية ابتداءً منه.
levelالصعوبة من 1 إلى الحد الأعلى في النمط (3 افتراضيًا)، تُطبع علاماتٍ بعد الرقم: level=2 تطبع ●●○.
iconمعرّفات أيقونات النشاط التي يعرّفها النمط، تفصل بينها مسافات: icon="pencil pair".
exampleيُطبع البند الأول مُجابًا عنه، نموذجًا، ولا يُسأل عنه.
columnsالاختيار: الخيارات متجاورة، بهذا العدد في كل صف.
selectالاختيار: one أو many، أي عدد الخيارات التي يؤشّرها القارئ على الشاشة. ووجود أكثر من [x] يعني many من دون ذكرها.
shuffle=falseالتوصيل والترتيب: تُطبع البنود بالترتيب الذي كُتبت به بدل خلطها.
bankالفراغات: تُطبع الإجابات بنكَ كلمات.
lines، areaالإجابة المفتوحة: عدد الأسطر التي يُكتب عليها، وتسطير المساحة.
markتعليم الكلمات: كيف تُعلَّم الكلمة في الإجابة: circle (الافتراضي)، أو box، أو underline، أو highlight.
size، directions، hiddenالبحث عن الكلمات: ضلع الشبكة، والاتجاهات التي تسير فيها الكلمات، وإخفاء قائمة الكلمات تحت الشبكة.

وتوضع داخل التمرين حاويتان. :::solution … ::: تحمل حلًّا مفصّلًا أو إجابة نموذجية بأي Markdown؛ لا تُطبع أبدًا داخل التمرين، وتذهب حيث تذهب الحلول. و:::hint … ::: تحمل تلميحًا تعرضه طبعات الشاشة لمن يطلبه؛ ولا يظهر في الطباعة.

#أنواع التمارين

الخلط مبني على بذرة: يُخلط التمرين بالطريقة نفسها في اللوحة وPDF وعارض HTML وEPUB ومفتاح الإجابات. غيّر exercises.seed لتطبع نسخة أخرى من الاختبار.

#الاختيار من متعدد وصح أو خطأ

الاختيار من متعدد

قائمة مهام، وقد أُشّرت الخيارات الصحيحة:

:::exercise
أيّ الكواكب أقرب إلى الشمس؟
 
- [ ] الزهرة
- [x] عطارد
- [ ] المريخ
:::

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

:::exercise{columns=3}
ضع دائرة حول الإجابة الصحيحة.
 
1. تمتص جذور النبات
   - [x] الماء
   - [ ] الضوء
   - [ ] البذور
2. تصنع الأوراق الغذاء من
   - [ ] التربة
   - [ ] الرياح
   - [x] ضوء الشمس
:::

columns=3 تصفّ الخيارات ثلاثة في كل صف. والتسميات ولاحقتها تتبع لغة المستند: أ) ب) ج) في العربية، وa) في الإنجليزية واللغات الرومانسية، وA. في الصينية، وア イ ウ في اليابانية. ويمكن أن يضيف النمط مربعًا أو دائرة للتأشير قبل كل خيار (options.marker)، أو قوسين ( ) بعد رأس السؤال يُكتب فيهما الحرف (options.bracket)، كما تفعل الاختبارات الصينية واليابانية.

صح أو خطأ

:::exercise{type=truefalse}
ضع علامة في المربع المناسب: صح أو خطأ.
 
- [x] الشمس نجم.
- [ ] القمر كوكب.
:::

تُرقَّم كل عبارة، وتنتهي بالإجابتين في آخر السطر، لكل منهما مربع: صح □ خطأ □. والبند المؤشَّر صحيح. وتتبع العلامتان اللغة: صح/خطأ في العربية، وT/F في الإنجليزية، وV/F في الإسبانية والكتالونية والفرنسية والإيطالية والبرتغالية، وR/F في الألمانية، و√/× في الصينية، و○/× في اليابانية. ويمكن أن يطبع النمط بدلهما فراغًا واحدًا تُكتب فيه الإجابة (trueFalse.look: 'bracket').

#ملء الفراغات وبنك الكلمات

[[الإجابة]] فراغ، يُطبع خطًّا يُكتب عليه:

:::exercise{bank}
أكمل الفراغات بالكلمات المناسبة من الإطار.
 
1. تمتص الجذور [[الماء]] من التربة.
2. تصنع الأوراق [[غذاء]] النبات.
3. تجذب الأزهار [[الحشرات | النحل]].
 
::bank[الحجارة | الرياح]
:::
  • [[مسؤول | مسئول]]: فراغ يقبل أكثر من إجابة. والأولى هي التي يطبعها المفتاح.
  • [[ذهب | (ذهبت) | ذهبوا]]: اختيار داخل السطر. تُطبع الخيارات في السطر، (ذهب / ذهبت / ذهبوا)، والخيار الذي بين قوسين هو الصحيح: يضع القارئ دائرة حوله.
  • [[ذهبت]]{width=6}: فراغ عرضه ستة em.
  • \| خط عمودي حرفي داخل الإجابة، و\[[ قوسان مربعان حرفيان.

كل فراغات التمرين بعرض أطول إجاباته مضافًا إليه 1.5 em، فلا يكشف طول الخط إجابته (ويغيّر ذلك blank.width). وbank تطبع الإجابات في بنك كلمات داخل إطار، مخلوطة، تحت التعليمة. أما السطر ::bank[الحجارة | الرياح] فيضع البنك في موضعه من التمرين ويضيف إليه كلماته مشتِّتاتٍ، ويطلب البنك وحده من دون bank. ولا يُقرأ [[…]] إلا داخل تمرين: القوسان المزدوجان في أي موضع آخر من الكتاب يبقيان كما كُتبا.

والتمرين الذي يبدأ بنصه بدل التعليمة يدخل رقمه في أول فقرة:

:::exercise
الأسبوع سبعة [[أيام]]، والسنة اثنا عشر [[شهرًا]].
:::

#التوصيل والتصنيف

التوصيل

أزواج تُكتب بـ-> (أو →):

:::exercise
صِل كل حيوان بمسكنه.
 
- النحلة -> الخلية
- العصفور -> العش
- العنكبوت -> البيت
- الأرنب -> الجحر
- -> العرين
:::

يُطبع العمود الأول بالترتيب الذي كُتب به، والثاني مخلوطًا، وبجانب كل بند نقطة يُوصل منها بخط. و- -> العرين تضيف إلى العمود الثاني بندًا لا يقابله شيء. ومع match.look: 'letters' تُعطى بنود العمود الثاني حروفًا، ولكل بند في العمود الأول قوسان يُكتب فيهما الحرف. وshuffle=false تُبقي العمود الثاني كما كُتب.

التصنيف

:::exercise{type=sort}
صنّف الأطعمة بحسب جزء النبات الذي تأتي منه.
 
- جذر: الجزر، الفجل
- ورقة: الخس، السبانخ
- ثمرة: الطماطم، التفاح
:::

تدخل كل البنود في بنك كلمات، مخلوطة، ولكل فئة عمود (حتى أربعة) عليه اسمها وتحته أسطر. ويمكن الفصل بين البنود بالفاصلة العربية ، أو بالفاصلة اللاتينية أو الفاصلة المنقوطة أو 、 أو ,.

#إعادة الترتيب

الترتيب

:::exercise{type=order}
رتّب مراحل نمو النبات.
 
1. تنبت البذرة.
2. تنمو الساق.
3. تتفتح الأزهار.
4. تظهر الثمار.
:::

تُكتب القائمة بالترتيب الصحيح وتُطبع مخلوطة، وبجانب كل بند مربع يُكتب فيه رقمه.

الكلمات المبعثرة

:::exercise{type=scramble}
رتّب الكلمات لتكوّن جملًا مفيدة.
 
- يحتاج / النبات / إلى الماء
- تعطي / الشمس / الضوء
:::

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

#تعليم الكلمات

:::exercise{type=mark}
ضع دائرة حول الأفعال: [[تسقي]] البنتُ النباتات، و[[تُدفئ]] الشمسُ الأرض.
:::

يُطبع النص كما هو؛ والكلمات التي بين [[…]] هي المطلوب تعليمها. في الإجابات توضع حولها دائرة، أو مربع، أو يُرسم تحتها خط، أو تُظلَّل، بكتابة mark=box|underline|highlight في الحاوية، أو كلمةً كلمة بـ[[تسقي]]{mark=underline}.

#الأسئلة المفتوحة ومساحات الكتابة

:::exercise{type=open lines=4}
لماذا يحتاج النبات إلى الضوء؟
 
:::solution
يستعمل النبات الضوء ليصنع غذاءه.
:::
:::

تلي التعليمةَ أسطرٌ يُكتب عليها: ثلاثة افتراضيًا، وأربعة هنا بـlines=4. وحين يكون الجسم قائمة، تكون لكل بند أسطره. وarea تغيّر التسطير: lines، وdots، وgrid (ورق المربعات)، وseyes (تسطير المدارس الفرنسية)، وtianzige (田字格، المربعات التي يكتب فيها تلاميذ الصين الحروف)، وbox (إطار فارغ لرسم)، وnone. و:::solution هي الإجابة النموذجية: تُطبع مع الحلول، وتُكتب على الأسطر في طبعة المعلم.

#البحث عن الكلمات والكلمات المتقاطعة

البحث عن الكلمات

:::exercise{type=wordsearch size=10 directions="across down diagonal backwards"}
ابحث عن هذه الكلمات في الشبكة.
 
- جذر
- ساق
- ورقة
- زهرة
:::

توضع الكلمات في شبكة من الحروف، وتُطبع القائمة تحتها (وhidden تحذف القائمة). تكبر الشبكة لتتسع لأطول كلمة؛ وsize تحدد ضلعها. وdirections تأخذ across وdown وdiagonal وbackwards؛ والافتراضي أفقيًا وعموديًا وقطريًا. ويوضع كل حرف في خانته وحده. وتُكتب الحروف اللاتينية كبيرة ما لم يقل النمط غير ذلك، أما الحروف العربية فلا حالة لها فتبقى كما هي. والكلمة التي لا تجد مكانًا في الشبكة يُبلَّغ عنها.

الكلمات المتقاطعة

:::exercise{type=crossword}
حُلّ الكلمات المتقاطعة.
 
- جذر: جزء النبات الذي يكون تحت التربة
- ورقة: الجزء الأخضر الذي يصنع الغذاء
- زهرة: تجذب النحل
- ساق: تحمل النبات
:::

كل مدخل كلمة ومفتاحها. يبني المحرك الشبكة، ويرقّم أول خانة من كل كلمة، ويطبع المفاتيح تحتها في قائمتين عنوانهما بلغة المستند (أفقيًا وعموديًا، Across وDown، ヨコのカギ・タテのカギ).

#العمليات العمودية

:::exercise{type=arithmetic}
احسب.
 
- ٣٤٥ + ٢٧٨
- ٩٠٢ − ٤٥٦
- ١٢٤ × ٣
- ٨٦٤ ÷ ٤
:::

تُصفّ كل عملية في خانات، كما يكتبها التلميذ: الأرقام في أعمدة، والإشارة على اليسار، وخط، وخانات فارغة للناتج، وحتى أربع عمليات في الصف. وفي الصفحة المكتوبة من اليمين إلى اليسار تحتفظ كل عملية بأرقامها من اليسار إلى اليمين، وتتوالى العمليات من اليمين إلى اليسار. والإشارات المقروءة هي + و- و− و× وx و* و· و⋅ و÷ و: و/، مع أعداد صحيحة. وتُقرأ الأرقام الهندية (٠–٩) والفارسية كما تُقرأ الأرقام الغربية، ويُطبع الناتج بأرقام العملية نفسها. والقسمة المطوّلة تتبع عرف المدرسة في لغة المستند، وarithmetic.division تختار غيره:

  • bracket: المقسوم عليه على اليسار، والمقسوم تحت قوس، وخارج القسمة فوقه. في الكتب العربية والإنجليزية والصينية واليابانية.
  • potence: المقسوم على اليسار، والمقسوم عليه على اليمين تحت زاوية على شكل L، وخارج القسمة تحت المقسوم عليه، والباقي في الأسفل. في الكتب الإسبانية والكتالونية والفرنسية والإيطالية والبرتغالية.
  • inline: 864 : 4 = وخانات خارج القسمة في السطر نفسه، والخطوات تحته. في الكتب الألمانية.

#بند أول مُجاب عنه

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

#الأرقام والإحالات والصعوبة

تُرقَّم التمارين 1 و2 و3 في كل فصل. والنمط يقرر الباقي: رقم مجرد بالعريض تليه نقطة (الافتراضي) أو داخل قرص أو مربع أو مربع مستدير الزوايا (number.shape)، وكلمة قبله («تمرين 3» مع number.label: true، بلغة المستند)، ونظام الأرقام (number.format، كالأرقام الهندية 'arabic-indic' أو الصينية 一、二、)، وقالب يضيف رقم الفصل ('{h1}.{n}')، وموضع بدء العدّ من جديد (number.resetOn: كل فصل، أو كل قسم، أو أبدًا). والأنماط التي تسمّي number.counter نفسه تتشارك عدًّا واحدًا، ويحمله الكتاب من فصل إلى فصل.

n=12 في الحاوية تعطي التمرين الرقم 12، وتكمل التمارين التالية من 13. و#id تجعل التمرين هدفًا لـ:ref، فتطبع الإحالة اسمه، «تمرين 3» (الكلمة التي يحددها النمط في number.label إن حدد واحدة، وإلا كلمة لغة المستند). وstyle=number تطبع 3، وstyle=title تطبع title الحاوية (أو الاسم إن لم يكن لها عنوان)، وstyle=page تطبع صفحته. وتصل الإحالة كذلك إلى تمارين الفصول الأخرى من الكتاب. وlevel وicon تُطبعان بعد الرقم: علامات الصعوبة وأيقونات النشاط التي يعرّفها النمط.

#الحلول

#مفتاح الإجابات

لكل تمرين يُصحَّح مفتاح يُبنى من إجاباته: الخيار الصحيح (ب) عطارد)، والفراغات بالترتيب (1 الماء · 2 غذاء · 3 الحشرات)، و«صح» أو «خطأ» لكل عبارة، والأزواج، والترتيب، والجمل، وكلمات الكلمات المتقاطعة بأرقامها، ونواتج العمليات. ومع التخطيط full (الافتراضي) يلي المفتاحَ :::solution الخاص بالتمرين. والتمرين المفتوح لا مفتاح له: إجابته النموذجية هي حله.

#موضع طباعة الحلول

يقرر ذلك exercises.solutions.placement للكتاب كله؛ ويمكن أن يغيّره النمط لتمارينه.

الموضعما يُطبع
noneلا حلول في الطباعة (الافتراضي). وتبقى في طبعات الشاشة.
afterالحل بعد تمرينه مباشرة، بخط أصغر.
invertedالإطار نفسه مقلوبًا رأسًا على عقب، كما تطبعه كتب الألغاز ومجلات الأطفال.
chapterEndكل حلول الفصل في آخره، تحت عنوان بلغة المستند (الحلول، Solutions، Soluciones، Lösungen، 参考答案…)، كل حل بعد رقم تمرينه.
directiveحيث يكتب الفصل :::solutions فقط.

مع directive، يطبع سطر :::solutions حلول التمارين التي قبله ولم تُطبع حلولها بعد؛ وtitle="…" تغيّر عنوانه. و:::solutions{scope="book"}، في فصل خاص به في آخر الكتاب، يطبع المفتاح والحلول لكل تمارين الكتاب، فصلًا فصلًا:

# الإجابات
 
:::solutions{scope="book"}

#طبعة المعلم

{ "exercises": { "edition": "teacher" } }

تطبع كل إجابة في موضعها، بلون الإجابات (أحمر أرجواني ما لم يحدد النمط answers.color): الفراغات مملوءة، والخيارات الصحيحة داخل دوائر أو مربعاتها ممتلئة، ومربع «صح» أو «خطأ» ممتلئًا، وخطوط التوصيل مرسومة، والأرقام في مربعات الترتيب، والجمل والكلمات المصنّفة على أسطرها، والإجابة النموذجية للسؤال المفتوح على أسطره، وكلمات الكلمات المتقاطعة ونواتج العمليات في خاناتها.

#الفحوص

تُبلغ لوحة الفحوص في Sandbox والدالة collectContentWarnings عمّا لا يستطيع المحرك قراءته:

  • exerciseUnknownType: قيمة type ليست من الأنواع الاثني عشر.
  • exerciseUnknownStyle: قيمة style لا تسمّي نمط تمرين (ويُستعمل أول نمط).
  • exerciseNoAnswer: تمرين يُصحَّح وليس فيه ما يُصحَّح: سؤال بلا خيار مؤشَّر، أو فراغات بلا [[…]]، أو توصيل بلا أزواج.
  • exerciseUnreadItem: بند قائمة لا يستطيع نوع التمرين قراءته، كبند توصيل بلا -> أو عملية ليست عددين صحيحين وإشارة.
  • exerciseWordUnplaced: كلمة لم تجد مكانًا في شبكة البحث عن الكلمات أو الكلمات المتقاطعة.
  • exerciseNested: تمرين داخل تمرين آخر.
  • solutionOutside: :::solution أو :::hint خارج تمرين. ولا يُطبع منها شيء.

#التمارين في HTML وEPUB

في عارض HTML وكتب EPUB يمكن الإجابة عن التمارين. يكتب القارئ في الفراغات وينقر الخيارات والعبارات ونقاط التوصيل وخانات الشبكة، ثم يتحقق من إجاباته، أو يعرض الحل، أو يبدأ من جديد. وتظهر الإجابة الصحيحة والخاطئة بلون وعلامة (digital.correctColor وdigital.wrongColor)، وتُعلَن لقارئات الشاشة. وتُحفظ الإجابات في المتصفح، لكل كتاب على حدة، فيجدها القارئ في زيارته التالية (exercises.digital.persist). ومع exercises.digital.check: 'instant' تُفحص كل إجابة لحظة كتابتها؛ ومع exercises.digital.interactive: false تبقى الصفحات كما طُبعت. ومفتاح الإجابات موجود دائمًا في كتاب EPUB، أيًّا كان موضع الحلول في الطباعة، فيجد الإجابات نظامُ القراءة الذي لا يشغّل البرامج النصية.

ويمكن أن تأخذ التمارين على الشاشة شكلًا خاصًا بها عبر htmlViewer.overrides، الذي يُدمج فوق إعدادات الكتاب قبل أن يصفّ عارض HTML صفحاته. وتحتفظ الطباعة بإعداداتها:

const config: PostextConfig = {
  exercises: { solutions: { placement: 'chapterEnd' } },
  htmlViewer: {
    overrides: {
      exercises: { solutions: { placement: 'none' } },
      exerciseStyles: [
        { id: 'exercise', blank: { minWidth: { value: 6, unit: 'em' } }, area: { kind: 'none' } },
      ],
    },
  },
};

#أنماط التمارين

const config: PostextConfig = {
  exerciseStyles: [
    {
      id: 'activity',
      number: { shape: 'disc', background: { hex: '#2a5ea8', model: 'hex' } },
      instruction: { fontFamily: 'Noto Kufi Arabic' },
      options: { marker: 'circle' },
      blank: { look: 'dots' },
    },
  ],
};

كل حقول النمط بأنواعها وقيمها الافتراضية في الإعدادات › التمارين. ويأخذ النمط إطاره من نمط إطار (box)، فيمكن أن يوضع التمرين في إطار ملوّن الخلفية بشريط على حافته ككل إطار آخر في الكتاب. وتتبع مهارة postext-port الخطوات نفسها حين تنقل تمارين كتاب مدرسي أو كراسة تمارين.