الفصل 3.13 · الجزء II · الحرفة
الإعدادات: التمارين
أنماط التمارين (exerciseStyles) وإعدادات التمارين في الكتاب (exercises): شارات الأرقام، وخط التعليمة، وتسميات الخيارات وعلامات التأشير، والفراغات، وإجابات صح أو خطأ، والتوصيل، وبنوك الكلمات، ومساحات الكتابة، والشبكات، والقسمة المطوّلة، وعلامات الصعوبة، والأيقونات، ولون الإجابات، وموضع طباعة الحلول، وطبعة المعلم، وطبعات الشاشة
باختصار
تسرد هذه الصفحة كل إعدادات مظهر التمارين. يحدد نمط التمرين كيف يُطبع الرقم، وكيف تُسمّى الخيارات، وما شكل الفراغ الذي يُملأ، وكيف تُسطَّر الأسطر التي يُكتب عليها، وكيف تُرسم الشبكات والعمليات الحسابية. وتحدد إعدادات الكتاب أين تُطبع الحلول، وهل الكتاب طبعة التلميذ أم طبعة المعلم. وتحدد أيضًا كيف يجيب القراء عن التمارين على الشاشة. أما طريقة كتابة التمارين نفسها فتشرحها صفحة التمارين.
#أنماط التمارين
تعرّف الخاصية exerciseStyles الأنماط المسمّاة التي يختارها التمرين بـ:::exercise{style="…"}. النمط شكلُ عائلة من التمارين؛ أما الأسئلة والإجابات فتبقى في Markdown (انظر التمارين). يأتي افتراضيًا نمط واحد هو exercise، فتعمل الحاوية دون أي إعداد؛ وتعريف exerciseStyles يستبدله، وأول نمط مُعرَّف هو الذي يأخذه التمرين الذي لا style له. كل الحقول اختيارية، والقيم الافتراضية تتبع لغة المستند حيث تختلف المدارس: تسميات الخيارات، وعلامتا صح وخطأ، وطريقة كتابة القسمة المطوّلة، والكلمات المطبوعة.
const config: PostextConfig = {
exerciseStyles: [
{
id: 'activity',
box: 'activity-frame',
number: { shape: 'disc', background: { hex: '#2a5ea8', model: 'hex' } },
instruction: { fontFamily: 'Noto Kufi Arabic' },
options: { marker: 'circle' },
blank: { look: 'dots', width: 'answer' },
area: { kind: 'grid', lines: 4 },
level: { glyph: '★', empty: '☆' },
icons: { pair: { glyph: '👥' } },
},
{ id: 'quiz', extends: 'activity', options: { layout: 'row', columns: 4 } },
],
};| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
id | string | — | المعرّف الذي يختاره :::exercise{style="…"}. والمعرّف غير المعروف يعود إلى أول نمط ويُبلَّغ عنه (exerciseUnknownStyle). |
name | string | id | اسم مقروء للبشر (لواجهة المحرّر فقط). |
extends | string | — | معرّف النمط الذي يُبنى عليه هذا النمط. تُدمج كل مجموعة (number، options، blank…) حقلًا حقلًا، وicons معرّفًا معرّفًا. |
box | string | — | معرّف في calloutStyles لإطار التمرين: الخلفية والحدّ والشريط والحشوة الداخلية والموضع والانقسام. وإن لم يُحدَّد صُفّ التمرين في النص الجاري بلا إطار، وبقي كاملًا في صفحة واحدة. |
number | object | — | كيف يُطبع الرقم. انظر الرقم. |
instruction | object | — | خط التعليمة. انظر التعليمة. |
options | object | — | خيارات سؤال الاختيار. انظر الخيارات. |
blank | object | — | كيف يُطبع [[…]]. انظر الفراغات. |
trueFalse | object | — | إجابتا عبارة صح أو خطأ. انظر صح أو خطأ. |
match | object | — | عمودان يُوصل بينهما. انظر التوصيل. |
bank | object | — | بنك الكلمات. انظر بنك الكلمات. |
area | object | — | مساحات الكتابة. انظر مساحة الكتابة. |
grid | object | — | خانات البحث عن الكلمات والكلمات المتقاطعة والعمليات. انظر الشبكات. |
arithmetic | object | — | العمليات في أعمدة. انظر العمليات الحسابية. |
level | object | — | علامات الصعوبة. انظر الصعوبة. |
icons | Record<string, ExerciseIcon> | {} | أيقونات النشاط بمعرّفاتها، تسمّيها icon في الحاوية. انظر الأيقونات. |
answers | object | — | كيف تُطبع الإجابات في طبعة المعلم وفي البند النموذجي وفي الحلول. انظر الإجابات. |
solutions | ExerciseSolutionsConfig | — | exercises.solutions الخاصة بالكتاب، لتمارين هذا النمط: لا يتغير إلا ما يُحدَّد هنا من حقول. |
digital | object | — | ألوان طبعات الشاشة. انظر ألوان الشاشة. |
marginTop | Dimension | 1em | المساحة فوق التمرين الذي لا box له. |
marginBottom | Dimension | 1em | المساحة تحت التمرين الذي لا box له. |
itemSpacing | Dimension | 0.25em | المساحة بين بندين: الخيارات والأسئلة والعبارات والأزواج. |
#الرقم
تضبط number رقم التمرين. الرقم المجرد عريض، باللون الرئيسي، تليه نقطة؛ والرقم داخل شكل أبيض في قرص أو مربع أو مربع مستدير الزوايا باللون الرئيسي، ولا يليه شيء.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
show | boolean | true | يطبع الرقم. ويستمر العدّ في الحالتين. |
label | boolean | string | false | كلمة قبل الرقم: true تأخذ كلمة لغة المستند (تمرين، Exercise، Ejercicio، Exercice، Übung، 练习، 練習…)، والنص هو الكلمة نفسها ('نشاط'). |
shape | 'none' | 'disc' | 'square' | 'rounded' | 'none' | الشكل الذي يُصفّ فيه الرقم. |
color | ColorValue | الأبيض داخل الشكل، وإلا اللون الرئيسي | لون الرقم. |
background | ColorValue | اللون الرئيسي | تعبئة الشكل. |
fontFamily | string | النص المحيط | عائلة خط الرقم. |
fontSize | Dimension | 1em | حجم الرقم، والـem هنا em التعليمة. |
fontWeight | number | 700 | القيمة 600 فأكثر تجعله عريضًا. |
suffix | string | '.'، ولا شيء مع الشكل | ما يُطبع بعد الرقم المجرد وكلمته: '.'، ')'، '、'. |
template | string | '{n}' | ما يُكتب في الرقم: {n} عدد التمرين، و{h1} و{h2} رقما الفصل والقسم ('{h1}.{n}' تطبع 3.4). |
resetOn | 'never' | 'h1' … 'h6' | 'h1' | مستوى العنوان الذي يبدأ عنده العدّ من جديد؛ و'never' تعدّ عبر الكتاب كله. |
counter | string | 'exercise' | العدّاد الذي يزيده النمط. الأنماط التي تسمّي عدّادًا واحدًا تتشاركه؛ والنمط الذي له عدّاد خاص ('review') يرقّم تمارينه على حدة. |
format | ResourceCounterFormat | 'decimal' | أرقام {n}، كما في عدّاد الموارد: 'arabic-indic' (١، ٢)، و'roman-upper'، و'alpha-lower'، و'simp-chinese-informal' (一، 二)، و'circled-decimal' (①، ②)… |
#التعليمة
تضبط instruction الفقرات التي يبدأ بها التمرين. والحقول غير المحددة تأخذ قيم النص الأساسي.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
bold | boolean | true | تُصفّ التعليمة بالعريض. |
italic | boolean | false | تُصفّ بالمائل. |
color | ColorValue | لون النص | لونها، ومعه المقاطع العريضة. |
fontFamily | string | خط النص | عائلة خطها: تعليمة بخط كوفي أو بخط بلا زوائد فوق نص بخط النسخ شائعة في الكتب المدرسية. |
fontSize | Dimension | حجم النص | حجمها. |
#الخيارات
تضبط options خيارات سؤال الاختيار (- [ ] …).
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
labels | ResourceCounterFormat | 'none' | بحسب اللغة | كيف تُعَدّ الخيارات: 'abjad' في العربية (أ، ب، ج)، و'alpha-lower' (a، b، c)، و'alpha-upper' في الصينية (A، B، C)، و'katakana' في اليابانية (ア، イ، ウ). وأيضًا 'decimal'، و'katakana-iroha'، و'circled-decimal'… و'none' لا تطبع تسمية. |
prefix | string | '' | قبل التسمية: '(' لكتابة (أ). |
suffix | string | ')'؛ و'.' في الصينية، ولا شيء في اليابانية | بعد التسمية. |
marker | 'none' | 'box' | 'circle' | 'none' | مربع أو دائرة قبل كل خيار، للتأشير. ومع 'none' يضع القارئ دائرة حول التسمية. |
layout | 'stack' | 'row' | 'stack' | 'stack': خيار في كل سطر، وأسطره التالية معلّقة تحت نصه. 'row': الخيارات متجاورة. وcolumns=n في الحاوية تصفّها صفوفًا أيضًا. |
columns | number | كلها | عدد الخيارات في الصف مع التخطيط 'row' (حتى 6). |
shuffle | boolean | false | تُطبع الخيارات بترتيب مخلوط، هو نفسه في كل المخرجات وفي المفتاح. |
indent | Dimension | 1em | إزاحة الخيارات عن حافة النص، في السؤال الذي لا رأس له. |
bracket | boolean | false | قوسان ( ) في آخر رأس كل سؤال يُكتب فيهما الحرف، كما تطبعهما الاختبارات الصينية واليابانية. وتكتب طبعة المعلم الحرف فيهما. |
#الفراغات
تضبط blank كيف يُطبع [[…]] في نص التلميذ: مساحة بقدر الإجابة عليها خط أو نقاط أو مربع، ولا تُرسم الإجابة نفسها.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
look | 'line' | 'dots' | 'box' | 'none' | 'line' | خط يُكتب عليه، أو خط منقّط، أو مربع، أو مساحة فارغة. |
width | 'answer' | 'longest' | Dimension | 'longest' | 'longest': كل فراغات التمرين بعرض أطول إجاباته، فلا يكشف فراغ إجابته. 'answer': كل فراغ بعرض إجابته. والطول: هذا العرض للجميع. و{width=N} في الفراغ مقدَّمة عليه. |
extra | Dimension | 1.5em | مساحة تُضاف إلى عرض الإجابة، بوحدات em كاملة. |
minWidth | Dimension | 3em | أضيق فراغ. |
color | ColorValue | الأسود | لون الخط أو النقاط أو المربع. وإن حُدِّد لوّن أيضًا مربعات التأشير ودوائره وأطر كلمات البنك، وهي باللون الرئيسي إن لم يُحدَّد. |
weight | Dimension | 0.6pt | سماكة الخط. |
#صح أو خطأ
تضبط trueFalse الإجابتين في آخر العبارة.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
labels | [string, string] | بحسب اللغة | الإجابتان: ['صح', 'خطأ'] في العربية؛ وT F في الإنجليزية؛ وV F في الإسبانية والكتالونية والفرنسية والإيطالية والبرتغالية؛ وR F في الألمانية؛ و√ × في الصينية؛ و○ × في اليابانية. |
look | 'boxes' | 'bracket' | 'boxes' | 'boxes': لكل علامة مربع للتأشير، في آخر السطر. 'bracket': فراغ واحد تُكتب فيه الإجابة. |
#التوصيل
تضبط match تمرين الأزواج.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
look | 'dots' | 'letters' | 'dots' | 'dots': عمودان بجانب كل بند فيهما نقطة، يُوصل بينها بخط. 'letters': بنود العمود الثاني بحروف، وبجانب كل بند في العمود الأول فراغ للحرف. |
gap | Dimension | 4em | المسافة بين العمودين. |
dotSize | Dimension | 0.35em | قطر النقاط. |
color | ColorValue | اللون الرئيسي | النقاط، وإطار بنك الكلمات. |
#بنك الكلمات
تضبط bank إطار الكلمات في تمرين الفراغات الذي فيه bank أو ::bank[…]، وفي كل تمرين تصنيف. ويُطبع الإطار حيث كُتب السطر ::bank، وإلا فتحت التعليمة.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
box | string | إطار بلون التوصيل | معرّف في calloutStyles لإطار البنك. |
order | 'shuffle' | 'alpha' | 'written' | 'shuffle' | الكلمات مخلوطة (ببذرة)، أو بالترتيب الألفبائي للغة المستند، أو كما كُتبت. |
separator | string | مسافة em | ما بين كلمتين. وتُصفّ كل كلمة في شارة بإطار رفيع. |
#مساحة الكتابة
تضبط area المساحة تحت السؤال المفتوح، وتحت الجملة المبعثرة، وفي أعمدة تمرين التصنيف.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
kind | 'lines' | 'dots' | 'grid' | 'seyes' | 'tianzige' | 'box' | 'none' | 'lines' | أسطر، أو صف من النقاط، أو ورق مربعات، أو تسطير Seyès الفرنسي، أو مربعات 田字格، أو إطار فارغ، أو مساحة خالية. وarea في الحاوية مقدَّمة عليها. |
lines | number | 3 | الارتفاع بعدد الأسطر. وlines في الحاوية مقدَّمة عليها. |
spacing | Dimension | 1.35 من ارتفاع سطر النص (1.2 للشبكات) | المسافة بين سطرين. |
color | ColorValue | رمادي فاتح | لون التسطير. |
weight | Dimension | 0.5pt | سماكة التسطير. |
#الشبكات
تضبط grid خانات البحث عن الكلمات والكلمات المتقاطعة والعمليات في أعمدة.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
cell | Dimension | 1.6em | ضلع الخانة. |
fontFamily | string | خط النص | عائلة خط الحروف والأرقام. |
fontSize | Dimension | 0.58 من ضلع الخانة | حجم الحروف والأرقام، والـem هو em النص. |
color | ColorValue | لون النص | لون الحروف والأرقام. |
rule | ColorValue | رمادي متوسط | خطوط الخانات. |
ruleWidth | Dimension | 0.6pt | سماكتها. |
blocked | ColorValue | — | تعبئة خانات شبكة الكلمات المتقاطعة التي لا تشغلها كلمة. ومن دونها لا تُطبع إلا خانات الكلمات. |
uppercase | boolean | true | تُكتب حروف البحث عن الكلمات والكلمات المتقاطعة كبيرة، بقواعد الحالة في لغة المستند. ولا أثر لها في الحروف العربية. |
#العمليات الحسابية
تضبط arithmetic العمليات في أعمدة.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
division | 'bracket' | 'potence' | 'inline' | بحسب اللغة | القسمة المطوّلة. 'bracket': المقسوم عليه على يسار المقسوم، وفوق المقسوم قوس، وخارج القسمة في الأعلى (العربية والإنجليزية والصينية واليابانية، وكل لغة ليس لها عرف خاص). 'potence': المقسوم عليه على يمين المقسوم تحت زاوية على شكل L، وخارج القسمة تحت المقسوم عليه (الإسبانية والكتالونية والفرنسية والإيطالية والبرتغالية). 'inline': 864 : 4 = وخارج القسمة في السطر والخطوات تحته (الألمانية). |
columns | number | 4 | عدد العمليات في الصف، وأقل منه حين يضيق العمود. |
#الصعوبة
تضبط level العلامات التي تطبعها level في الحاوية بعد الرقم، بحجم أصغر.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
glyph | string | '●' | مستوى بُلغ: '★'، '■'. |
empty | string | '○' | مستوى لم يُبلغ؛ و'' لا تطبع شيئًا. |
max | number | 3 | أعلى مستوى: level=2 مع max: 3 تطبع ●●○. |
color | ColorValue | اللون الرئيسي | لون العلامات. |
#الأيقونات
تربط icons معرّفًا بأيقونة نشاط (شفهي، كتابي، عمل في ثنائيات، استماع، آلة حاسبة)، تُطبع بعد الرقم حين تسمّيها الحاوية: icon="pair".
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
glyph | string | — | محرف يُطبع: '✎'، '🎧'، أو رسم من خط أيقونات. |
fontFamily | string | — | عائلة خط الأيقونات. |
color | ColorValue | — | لون الأيقونة. |
resourceId | string | — | مورد صورة نقطية أو SVG للأيقونة. |
alt | string | — | ما تدل عليه الأيقونة، لقارئات الشاشة وملف PDF الموسوم. |
size | number | 0.75 | ارتفاع الأيقونة بوحدة em من التعليمة: افتراضيًا ارتفاع الحرف الكبير. |
تُطبع الأيقونة رمزًا داخل السطر بعد الرقم: صورة resourceId إن سمّت واحدة، وإلا فـglyph بخط fontFamily وبلون color (لون النص إن لم يُحدَّد). تقف على خط أساس التعليمة بارتفاع size em، ويُقرأ alt في موضعها.
#الإجابات
تضبط answers الإجابات حيثما ظهرت: في طبعة المعلم، وفي البند النموذجي لتمرين example، والدوائر والمربعات الممتلئة، والخطوط المرسومة بين الأزواج، والحروف والأرقام في الشبكات.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
color | ColorValue | #d6246e، أحمر أرجواني | لون الإجابات، كما يطبعها كتاب المعلم فوق النص. |
fontFamily | string | خط النص | خط للإجابات: خط يشبه الكتابة باليد شائع. |
italic | boolean | false | تُصفّ الإجابات داخل الفراغات بالمائل. |
#ألوان الشاشة
تضبط digital كيف يعرض عارض HTML وكتب EPUB الإجابة بعد فحصها.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
correctColor | ColorValue | أخضر (#1e8e3e) | الإجابة الصحيحة. |
wrongColor | ColorValue | أحمر (#c5221f) | الإجابة الخاطئة. |
#إعدادات الكتاب
تحمل الخاصية exercises إعدادات الكتاب كله: الطبعة، وموضع طباعة الحلول، والبذرة التي يُخلط منها كل شيء، وطبعات الشاشة. والكتاب الذي لا يحدد exercises ولا exerciseStyles يُصفّ ويُحسب بصمته كما كان.
const config: PostextConfig = {
exercises: {
edition: 'student',
solutions: { placement: 'chapterEnd', layout: 'key' },
seed: 3,
digital: { check: 'instant' },
},
};| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
edition | 'student' | 'teacher' | 'student' | 'teacher' تطبع كل إجابة في موضعها بلون answers: كتاب المعلم من نص التلميذ. |
solutions | ExerciseSolutionsConfig | — | أين تُطبع الحلول وكيف. انظر الحلول. |
seed | number | 1 | ما يُستمد منه كل خلط: الخيارات، والأعمدة الثانية، وبنود الترتيب، والكلمات المبعثرة، والبنوك، وحروف الحشو في البحث عن الكلمات. غيّرها لنسخة أخرى من الاختبار؛ وتبقى الطباعة والشاشة والمفتاح متطابقة. |
digital | object | — | عارض HTML وكتب EPUB. انظر الطبعات على الشاشة. |
#الحلول
exercises.solutions، وفوقها solutions في النمط لتمارين ذلك النمط.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
placement | 'none' | 'after' | 'inverted' | 'chapterEnd' | 'directive' | 'none' | 'none': لا حلول في الطباعة. 'after': بعد كل تمرين، بخط أصغر. 'inverted': بعد كل تمرين، مقلوبة رأسًا على عقب. 'chapterEnd': في آخر الفصل، تحت heading. 'directive': حيث يوجد سطر :::solutions. |
box | string | إطار بلا حدود بخط أصغر | معرّف في calloutStyles لإطار الحل، ولقائمة حلول الفصل. |
heading | string | كلمة لغة المستند | عنوان الحلول في آخر الفصل: الحلول، Solutions، Soluciones، Solucions، Corrigés، Lösungen، Soluzioni، Gabarito، 参考答案، 解答. وسطر :::solutions{title="…"} يحدد عنوانه بنفسه. |
layout | 'key' | 'full' | 'full' | 'key': الإجابات وحدها (1 ب · 2 الماء). 'full': المفتاح، ثم :::solution الخاص بالتمرين. |
#الطبعات على الشاشة
تضبط exercises.digital سلوك التمارين في عارض HTML وكتب EPUB.
| الخاصية | النوع | القيمة الافتراضية | الوصف |
|---|---|---|---|
interactive | boolean | true | تمارين يجيب عنها القارئ. وfalse تعرضها كما طُبعت. |
persist | boolean | true | تُحفظ إجابات القارئ في المتصفح، لكل كتاب على حدة. |
check | 'button' | 'instant' | 'button' | 'button': تُفحص الإجابات حين يطلب القارئ ذلك. 'instant': تُفحص كل إجابة لحظة كتابتها. |
ويمكن أن تكون للشاشة إعدادات تمارين خاصة بها: تأخذ htmlViewer.overrides أيضًا exercises وexerciseStyles، وتُدمجان فوق إعدادات الكتاب قبل أن يصفّ عارض HTML صفحاته. فتحتفظ الطباعة بحلولها في آخر الفصل وتخفيها الشاشة، أو تحذف الشاشة مساحات الكتابة التي لا حاجة للقارئ بها.
const config: PostextConfig = {
htmlViewer: {
overrides: {
exercises: { solutions: { placement: 'none' } },
exerciseStyles: [{ id: 'exercise', area: { kind: 'none' }, blank: { minWidth: { value: 6, unit: 'em' } } }],
},
},
};