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

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

الإعدادات: التمارين

أنماط التمارين (exerciseStyles) وإعدادات التمارين في الكتاب (exercises): شارات الأرقام، وخط التعليمة، وتسميات الخيارات وعلامات التأشير، والفراغات، وإجابات صح أو خطأ، والتوصيل، وبنوك الكلمات، ومساحات الكتابة، والشبكات، والقسمة المطوّلة، وعلامات الصعوبة، والأيقونات، ولون الإجابات، وموضع طباعة الحلول، وطبعة المعلم، وطبعات الشاشة

آخر تحديث 2026-10-2412 دقيقةضمن الفصل 3 الإعداداتenescadefritptzhjaar

باختصار

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

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

تعرّف الخاصية 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 } },
  ],
};
الخاصيةالنوعالقيمة الافتراضيةالوصف
idstring—المعرّف الذي يختاره :::exercise{style="…"}. والمعرّف غير المعروف يعود إلى أول نمط ويُبلَّغ عنه (exerciseUnknownStyle).
namestringidاسم مقروء للبشر (لواجهة المحرّر فقط).
extendsstring—معرّف النمط الذي يُبنى عليه هذا النمط. تُدمج كل مجموعة (number، options، blank…) حقلًا حقلًا، وicons معرّفًا معرّفًا.
boxstring—معرّف في calloutStyles لإطار التمرين: الخلفية والحدّ والشريط والحشوة الداخلية والموضع والانقسام. وإن لم يُحدَّد صُفّ التمرين في النص الجاري بلا إطار، وبقي كاملًا في صفحة واحدة.
numberobject—كيف يُطبع الرقم. انظر الرقم.
instructionobject—خط التعليمة. انظر التعليمة.
optionsobject—خيارات سؤال الاختيار. انظر الخيارات.
blankobject—كيف يُطبع [[…]]. انظر الفراغات.
trueFalseobject—إجابتا عبارة صح أو خطأ. انظر صح أو خطأ.
matchobject—عمودان يُوصل بينهما. انظر التوصيل.
bankobject—بنك الكلمات. انظر بنك الكلمات.
areaobject—مساحات الكتابة. انظر مساحة الكتابة.
gridobject—خانات البحث عن الكلمات والكلمات المتقاطعة والعمليات. انظر الشبكات.
arithmeticobject—العمليات في أعمدة. انظر العمليات الحسابية.
levelobject—علامات الصعوبة. انظر الصعوبة.
iconsRecord<string, ExerciseIcon>{}أيقونات النشاط بمعرّفاتها، تسمّيها icon في الحاوية. انظر الأيقونات.
answersobject—كيف تُطبع الإجابات في طبعة المعلم وفي البند النموذجي وفي الحلول. انظر الإجابات.
solutionsExerciseSolutionsConfig—exercises.solutions الخاصة بالكتاب، لتمارين هذا النمط: لا يتغير إلا ما يُحدَّد هنا من حقول.
digitalobject—ألوان طبعات الشاشة. انظر ألوان الشاشة.
marginTopDimension1emالمساحة فوق التمرين الذي لا box له.
marginBottomDimension1emالمساحة تحت التمرين الذي لا box له.
itemSpacingDimension0.25emالمساحة بين بندين: الخيارات والأسئلة والعبارات والأزواج.

#الرقم

تضبط number رقم التمرين. الرقم المجرد عريض، باللون الرئيسي، تليه نقطة؛ والرقم داخل شكل أبيض في قرص أو مربع أو مربع مستدير الزوايا باللون الرئيسي، ولا يليه شيء.

الخاصيةالنوعالقيمة الافتراضيةالوصف
showbooleantrueيطبع الرقم. ويستمر العدّ في الحالتين.
labelboolean | stringfalseكلمة قبل الرقم: true تأخذ كلمة لغة المستند (تمرين، Exercise، Ejercicio، Exercice، Übung، 练习، 練習…)، والنص هو الكلمة نفسها ('نشاط').
shape'none' | 'disc' | 'square' | 'rounded''none'الشكل الذي يُصفّ فيه الرقم.
colorColorValueالأبيض داخل الشكل، وإلا اللون الرئيسيلون الرقم.
backgroundColorValueاللون الرئيسيتعبئة الشكل.
fontFamilystringالنص المحيطعائلة خط الرقم.
fontSizeDimension1emحجم الرقم، والـem هنا em التعليمة.
fontWeightnumber700القيمة 600 فأكثر تجعله عريضًا.
suffixstring'.'، ولا شيء مع الشكلما يُطبع بعد الرقم المجرد وكلمته: '.'، ')'، '、'.
templatestring'{n}'ما يُكتب في الرقم: {n} عدد التمرين، و{h1} و{h2} رقما الفصل والقسم ('{h1}.{n}' تطبع 3.4).
resetOn'never' | 'h1' … 'h6''h1'مستوى العنوان الذي يبدأ عنده العدّ من جديد؛ و'never' تعدّ عبر الكتاب كله.
counterstring'exercise'العدّاد الذي يزيده النمط. الأنماط التي تسمّي عدّادًا واحدًا تتشاركه؛ والنمط الذي له عدّاد خاص ('review') يرقّم تمارينه على حدة.
formatResourceCounterFormat'decimal'أرقام {n}، كما في عدّاد الموارد: 'arabic-indic' (١، ٢)، و'roman-upper'، و'alpha-lower'، و'simp-chinese-informal' (一، 二)، و'circled-decimal' (①، ②)…

#التعليمة

تضبط instruction الفقرات التي يبدأ بها التمرين. والحقول غير المحددة تأخذ قيم النص الأساسي.

الخاصيةالنوعالقيمة الافتراضيةالوصف
boldbooleantrueتُصفّ التعليمة بالعريض.
italicbooleanfalseتُصفّ بالمائل.
colorColorValueلون النصلونها، ومعه المقاطع العريضة.
fontFamilystringخط النصعائلة خطها: تعليمة بخط كوفي أو بخط بلا زوائد فوق نص بخط النسخ شائعة في الكتب المدرسية.
fontSizeDimensionحجم النصحجمها.

#الخيارات

تضبط options خيارات سؤال الاختيار (- [ ] …).

الخاصيةالنوعالقيمة الافتراضيةالوصف
labelsResourceCounterFormat | 'none'بحسب اللغةكيف تُعَدّ الخيارات: 'abjad' في العربية (أ، ب، ج)، و'alpha-lower' (a، b، c)، و'alpha-upper' في الصينية (A، B، C)، و'katakana' في اليابانية (ア، イ، ウ). وأيضًا 'decimal'، و'katakana-iroha'، و'circled-decimal'… و'none' لا تطبع تسمية.
prefixstring''قبل التسمية: '(' لكتابة (أ).
suffixstring')'؛ و'.' في الصينية، ولا شيء في اليابانيةبعد التسمية.
marker'none' | 'box' | 'circle''none'مربع أو دائرة قبل كل خيار، للتأشير. ومع 'none' يضع القارئ دائرة حول التسمية.
layout'stack' | 'row''stack''stack': خيار في كل سطر، وأسطره التالية معلّقة تحت نصه. 'row': الخيارات متجاورة. وcolumns=n في الحاوية تصفّها صفوفًا أيضًا.
columnsnumberكلهاعدد الخيارات في الصف مع التخطيط 'row' (حتى 6).
shufflebooleanfalseتُطبع الخيارات بترتيب مخلوط، هو نفسه في كل المخرجات وفي المفتاح.
indentDimension1emإزاحة الخيارات عن حافة النص، في السؤال الذي لا رأس له.
bracketbooleanfalseقوسان ( ) في آخر رأس كل سؤال يُكتب فيهما الحرف، كما تطبعهما الاختبارات الصينية واليابانية. وتكتب طبعة المعلم الحرف فيهما.

#الفراغات

تضبط blank كيف يُطبع [[…]] في نص التلميذ: مساحة بقدر الإجابة عليها خط أو نقاط أو مربع، ولا تُرسم الإجابة نفسها.

الخاصيةالنوعالقيمة الافتراضيةالوصف
look'line' | 'dots' | 'box' | 'none''line'خط يُكتب عليه، أو خط منقّط، أو مربع، أو مساحة فارغة.
width'answer' | 'longest' | Dimension'longest''longest': كل فراغات التمرين بعرض أطول إجاباته، فلا يكشف فراغ إجابته. 'answer': كل فراغ بعرض إجابته. والطول: هذا العرض للجميع. و{width=N} في الفراغ مقدَّمة عليه.
extraDimension1.5emمساحة تُضاف إلى عرض الإجابة، بوحدات em كاملة.
minWidthDimension3emأضيق فراغ.
colorColorValueالأسودلون الخط أو النقاط أو المربع. وإن حُدِّد لوّن أيضًا مربعات التأشير ودوائره وأطر كلمات البنك، وهي باللون الرئيسي إن لم يُحدَّد.
weightDimension0.6ptسماكة الخط.

#صح أو خطأ

تضبط trueFalse الإجابتين في آخر العبارة.

الخاصيةالنوعالقيمة الافتراضيةالوصف
labels[string, string]بحسب اللغةالإجابتان: ['صح', 'خطأ'] في العربية؛ وT F في الإنجليزية؛ وV F في الإسبانية والكتالونية والفرنسية والإيطالية والبرتغالية؛ وR F في الألمانية؛ و√ × في الصينية؛ و○ × في اليابانية.
look'boxes' | 'bracket''boxes''boxes': لكل علامة مربع للتأشير، في آخر السطر. 'bracket': فراغ واحد تُكتب فيه الإجابة.

#التوصيل

تضبط match تمرين الأزواج.

الخاصيةالنوعالقيمة الافتراضيةالوصف
look'dots' | 'letters''dots''dots': عمودان بجانب كل بند فيهما نقطة، يُوصل بينها بخط. 'letters': بنود العمود الثاني بحروف، وبجانب كل بند في العمود الأول فراغ للحرف.
gapDimension4emالمسافة بين العمودين.
dotSizeDimension0.35emقطر النقاط.
colorColorValueاللون الرئيسيالنقاط، وإطار بنك الكلمات.

#بنك الكلمات

تضبط bank إطار الكلمات في تمرين الفراغات الذي فيه bank أو ::bank[…]، وفي كل تمرين تصنيف. ويُطبع الإطار حيث كُتب السطر ::bank، وإلا فتحت التعليمة.

الخاصيةالنوعالقيمة الافتراضيةالوصف
boxstringإطار بلون التوصيلمعرّف في calloutStyles لإطار البنك.
order'shuffle' | 'alpha' | 'written''shuffle'الكلمات مخلوطة (ببذرة)، أو بالترتيب الألفبائي للغة المستند، أو كما كُتبت.
separatorstringمسافة emما بين كلمتين. وتُصفّ كل كلمة في شارة بإطار رفيع.

#مساحة الكتابة

تضبط area المساحة تحت السؤال المفتوح، وتحت الجملة المبعثرة، وفي أعمدة تمرين التصنيف.

الخاصيةالنوعالقيمة الافتراضيةالوصف
kind'lines' | 'dots' | 'grid' | 'seyes' | 'tianzige' | 'box' | 'none''lines'أسطر، أو صف من النقاط، أو ورق مربعات، أو تسطير Seyès الفرنسي، أو مربعات 田字格، أو إطار فارغ، أو مساحة خالية. وarea في الحاوية مقدَّمة عليها.
linesnumber3الارتفاع بعدد الأسطر. وlines في الحاوية مقدَّمة عليها.
spacingDimension1.35 من ارتفاع سطر النص (1.2 للشبكات)المسافة بين سطرين.
colorColorValueرمادي فاتحلون التسطير.
weightDimension0.5ptسماكة التسطير.

#الشبكات

تضبط grid خانات البحث عن الكلمات والكلمات المتقاطعة والعمليات في أعمدة.

الخاصيةالنوعالقيمة الافتراضيةالوصف
cellDimension1.6emضلع الخانة.
fontFamilystringخط النصعائلة خط الحروف والأرقام.
fontSizeDimension0.58 من ضلع الخانةحجم الحروف والأرقام، والـem هو em النص.
colorColorValueلون النصلون الحروف والأرقام.
ruleColorValueرمادي متوسطخطوط الخانات.
ruleWidthDimension0.6ptسماكتها.
blockedColorValue—تعبئة خانات شبكة الكلمات المتقاطعة التي لا تشغلها كلمة. ومن دونها لا تُطبع إلا خانات الكلمات.
uppercasebooleantrueتُكتب حروف البحث عن الكلمات والكلمات المتقاطعة كبيرة، بقواعد الحالة في لغة المستند. ولا أثر لها في الحروف العربية.

#العمليات الحسابية

تضبط arithmetic العمليات في أعمدة.

الخاصيةالنوعالقيمة الافتراضيةالوصف
division'bracket' | 'potence' | 'inline'بحسب اللغةالقسمة المطوّلة. 'bracket': المقسوم عليه على يسار المقسوم، وفوق المقسوم قوس، وخارج القسمة في الأعلى (العربية والإنجليزية والصينية واليابانية، وكل لغة ليس لها عرف خاص). 'potence': المقسوم عليه على يمين المقسوم تحت زاوية على شكل L، وخارج القسمة تحت المقسوم عليه (الإسبانية والكتالونية والفرنسية والإيطالية والبرتغالية). 'inline': 864 : 4 = وخارج القسمة في السطر والخطوات تحته (الألمانية).
columnsnumber4عدد العمليات في الصف، وأقل منه حين يضيق العمود.

#الصعوبة

تضبط level العلامات التي تطبعها level في الحاوية بعد الرقم، بحجم أصغر.

الخاصيةالنوعالقيمة الافتراضيةالوصف
glyphstring'●'مستوى بُلغ: '★'، '■'.
emptystring'○'مستوى لم يُبلغ؛ و'' لا تطبع شيئًا.
maxnumber3أعلى مستوى: level=2 مع max: 3 تطبع ●●○.
colorColorValueاللون الرئيسيلون العلامات.

#الأيقونات

تربط icons معرّفًا بأيقونة نشاط (شفهي، كتابي، عمل في ثنائيات، استماع، آلة حاسبة)، تُطبع بعد الرقم حين تسمّيها الحاوية: icon="pair".

الخاصيةالنوعالقيمة الافتراضيةالوصف
glyphstring—محرف يُطبع: '✎'، '🎧'، أو رسم من خط أيقونات.
fontFamilystring—عائلة خط الأيقونات.
colorColorValue—لون الأيقونة.
resourceIdstring—مورد صورة نقطية أو SVG للأيقونة.
altstring—ما تدل عليه الأيقونة، لقارئات الشاشة وملف PDF الموسوم.
sizenumber0.75ارتفاع الأيقونة بوحدة em من التعليمة: افتراضيًا ارتفاع الحرف الكبير.

تُطبع الأيقونة رمزًا داخل السطر بعد الرقم: صورة resourceId إن سمّت واحدة، وإلا فـglyph بخط fontFamily وبلون color (لون النص إن لم يُحدَّد). تقف على خط أساس التعليمة بارتفاع size em، ويُقرأ alt في موضعها.

#الإجابات

تضبط answers الإجابات حيثما ظهرت: في طبعة المعلم، وفي البند النموذجي لتمرين example، والدوائر والمربعات الممتلئة، والخطوط المرسومة بين الأزواج، والحروف والأرقام في الشبكات.

الخاصيةالنوعالقيمة الافتراضيةالوصف
colorColorValue#d6246e، أحمر أرجوانيلون الإجابات، كما يطبعها كتاب المعلم فوق النص.
fontFamilystringخط النصخط للإجابات: خط يشبه الكتابة باليد شائع.
italicbooleanfalseتُصفّ الإجابات داخل الفراغات بالمائل.

#ألوان الشاشة

تضبط digital كيف يعرض عارض HTML وكتب EPUB الإجابة بعد فحصها.

الخاصيةالنوعالقيمة الافتراضيةالوصف
correctColorColorValueأخضر (#1e8e3e)الإجابة الصحيحة.
wrongColorColorValueأحمر (#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: كتاب المعلم من نص التلميذ.
solutionsExerciseSolutionsConfig—أين تُطبع الحلول وكيف. انظر الحلول.
seednumber1ما يُستمد منه كل خلط: الخيارات، والأعمدة الثانية، وبنود الترتيب، والكلمات المبعثرة، والبنوك، وحروف الحشو في البحث عن الكلمات. غيّرها لنسخة أخرى من الاختبار؛ وتبقى الطباعة والشاشة والمفتاح متطابقة.
digitalobject—عارض HTML وكتب EPUB. انظر الطبعات على الشاشة.

#الحلول

exercises.solutions، وفوقها solutions في النمط لتمارين ذلك النمط.

الخاصيةالنوعالقيمة الافتراضيةالوصف
placement'none' | 'after' | 'inverted' | 'chapterEnd' | 'directive''none''none': لا حلول في الطباعة. 'after': بعد كل تمرين، بخط أصغر. 'inverted': بعد كل تمرين، مقلوبة رأسًا على عقب. 'chapterEnd': في آخر الفصل، تحت heading. 'directive': حيث يوجد سطر :::solutions.
boxstringإطار بلا حدود بخط أصغرمعرّف في calloutStyles لإطار الحل، ولقائمة حلول الفصل.
headingstringكلمة لغة المستندعنوان الحلول في آخر الفصل: الحلول، Solutions، Soluciones، Solucions، Corrigés، Lösungen، Soluzioni، Gabarito، 参考答案، 解答. وسطر :::solutions{title="…"} يحدد عنوانه بنفسه.
layout'key' | 'full''full''key': الإجابات وحدها (1 ب · 2 الماء). 'full': المفتاح، ثم :::solution الخاص بالتمرين.

#الطبعات على الشاشة

تضبط exercises.digital سلوك التمارين في عارض HTML وكتب EPUB.

الخاصيةالنوعالقيمة الافتراضيةالوصف
interactivebooleantrueتمارين يجيب عنها القارئ. وfalse تعرضها كما طُبعت.
persistbooleantrueتُحفظ إجابات القارئ في المتصفح، لكل كتاب على حدة.
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' } } }],
    },
  },
};