باختصار
صفحات من كراسة عربية للأطفال عن حديقة المدرسة: اختيار الإجابة، والوصل بين العمودين، وملء الفراغ من صندوق كلمات، ووضع علامة صح أو خطأ، وترتيب الكلمات، والبحث عن الكلمات في شبكة حروف.
ما الذي ستنضده
وحدة من كراسة تمارين في اللغة العربية للصف الثاني الابتدائي، على صفحة 17 × 24 سم، موضوعها حديقة المدرسة. يفتتحها شريط من لوحة مائية، وتحته لسان الوحدة وعنوانها، وسطر منقّط لكل من الاسم والصف والتاريخ. ثم تأتي التمارين التي يطبعها كتاب عربي للمرحلة الابتدائية: «اختر الإجابة الصحيحة» والخيارات أ) ب) ج) ثلاثة في السطر؛ و«صل بين العمودين»؛ و«أكمل الفراغ» من بنك الكلمات؛ وضع علامة في خانة صح أو خطأ؛ ورتّب الكلمات واكتب الجملة على السطر؛ وابحث عن سبع كلمات من الحديقة في شبكة الحروف. وتُختم الوحدة بالحلول. ويُنضَّد النص نفسه مرتين: طبعة المشرق ترقّم كل شيء بالأرقام العربية المشرقية ١ ٢ ٣، وطبعة المغرب بالأرقام الأوروبية. وكلتاهما تُقرأ من اليمين وتُجلَّد على اليمين.
تجيب هذه الوصفة عن
- كيف أصفّ كراسة تمارين عربية من اليمين إلى اليسار: عمودان للتوصيل وصندوق كلمات وشبكة كلمات وأرقام هندية؟
- كيف أصفّ صفحة كراسة أنشطة: أرقام في دوائر وبنك كلمات وصواب وخطأ وصِل؟
- كيف أصنع شبكة بحث عن كلمات أو كلمات متقاطعة من قائمة كلمات؟
الجواب المختصر
// The locale sets the direction, the binding and the digits: 'ar' writes the exercise
// numbers, the items and the key in Arabic-Indic digits (١ ٢ ٣), 'ar-MA' in European ones.
// Options take the abjad letters (أ ب ج), true/false the words صح / خطأ, both from the
// language. Nothing below names a side: the engine sets every part from the right.
const tamrin = {
id: 'tamrin',
number: { shape: 'disc', fontFamily: LABEL, background: col('accent') },
instruction: { fontFamily: LABEL, bold: false, color: col('ink') },
options: { layout: 'row' }, // أ) ب) ج) side by side, three to a row (columns=3)
blank: { look: 'dots', color: col('muted') }, // a dotted line, as Arab workbooks print it
match: { color: col('accent') },
bank: { box: 'sunduq', order: 'shuffle' },
area: { kind: 'lines', color: col('rule') },
grid: { fontFamily: TEXT, rule: col('leaf'), uppercase: false }, // Arabic has no capitals
answers: { color: col('leaf'), fontFamily: TEXT },
solutions: { box: 'hulul' },
marginTop: em(1.1), marginBottom: em(0.5),
};
// The solutions where :::solutions stands: at the end of the unit.
const exercises = { solutions: { placement: 'directive' } };
المكونات
- الميزات
- التمارينالنص من اليمين إلى اليسارأشكال الأرقام في الأعداد المولَّدةأنماط التمارينالاختيار والصواب والخطأالفراغات وبنوك الكلماتالتوصيل والتصنيفالترتيبالبحث عن الكلمات والكلمات المتقاطعةالحلولالخطوط العربيةأنماط الترقيم العربيةكتب مجلّدة من اليمينالشارات داخل السطرإطارات التنبيهصفحات افتتاح مصمَّمةسمات العنوانالصور في تصاميم الصفحةلوحة ألوان دلاليةالتصدير إلى PDF
- تستخدم أيضًا
- إطارات تنقسم أو تبقى كاملةموازنة الأعمدةالأسئلة المفتوحة ومساحات الكتابةالترويسات بحسب دور الصفحةأنماط الفقراتالخطوط المضمَّنة في PDFالأشكال والجداول بوصفها موارد
- الخطوط
- Noto Naskh Arabic, Baloo Bhaijaan 2 (SIL OFL 1.1)
- الأصول
garden-1600.jpg- A school garden in an Arab town: date palms, a fountain, lemon trees, a girl watering plants and a boy carrying a pot of mint. (Generated With Diffusion Models, أصلي)
طريقة التحضير
#1 · لا تسمِّ أي جهة
الشيفرة هي الجواب المختصر أعلاه. يجعل locale: 'ar' النص من اليمين إلى اليسار، ويجلّد الكتاب على اليمين، ويختار الأرقام؛ ويأخذ نمط التمارين من اللغة حروف الأبجد للخيارات، وكلمتي صح وخطأ لأسئلة الصواب والخطأ. أما عمودا الوصل وبنك الكلمات وشبكة البحث وأسطر الكتابة فمرسومة تصاميمَ إطار، والصفحة التي تجري من اليمين إلى اليسار تعكسها: فيقف العمود الأول على اليمين، وتجري الكلمة المقروءة أفقيًّا في الشبكة من اليمين إلى اليسار، وتتقابل نقاط الوصل في الوسط.
#2 · افتتاحية الحديقة
const BAND = 170 / 2.4; // mm: the painting's height at the page's width
const opener = { enabled: true, minHeight: mm(BAND - 20 + 21), slot: { elements: [
{ kind: 'image', id: 'picture', resourceId: '{attr.pic}', decorative: true, reserve: false,
placement: { anchor: { to: 'page', edge: 'top-left' },
size: { width: mm(170), height: mm(BAND) } } },
// In the flow of a right-to-left page 'left' is the start of the line: the right.
{ kind: 'text', id: 'unit', content: '{attr.kicker}', fontFamily: LABEL, fontSize: pt(11),
fontWeight: 700, color: col('paper'), align: 'left',
box: { backgroundColor: col('accent'), borderRadius: mm(1.5),
padding: { top: mm(0.6), bottom: mm(0.4), left: mm(2.4), right: mm(2.4) } },
placement: { anchor: { to: 'container', edge: 'top-left' },
offset: { x: mm(0), y: mm(BAND - 20 + 3) } } },
{ kind: 'text', id: 'title', content: '{titleText}', fontFamily: LABEL, fontSize: pt(30),
fontWeight: 700, color: col('ink'), align: 'left',
placement: { anchor: { to: '#unit', edge: 'right-of' }, offset: { x: mm(4), y: mm(-5) } } },
] } };
اللوحة مثبّتة إلى الصفحة وتحتفظ بمكانها. أما اللسان والعنوان فيوضعان في تدفق الصفحة، حيث left هو بداية السطر، فيقفان على اليمين دون إحداثيات خاصة بهما. وتبقى أرقام الصفحات مثبّتة إلى الصفحة الفعلية، كالترويسات، وتسمّي كل جهة باسمها.
#3 · طبعتان ونظاما أرقام
// Both are bound on the right and read from the right; only the locale changes.
const build = () => withLoadedFonts(() => buildDocument({ markdown, resources }, config()),
{ ...kitFonts(FONTS), text: markdown });
const mashriq = await build();
edition = { locale: 'ar-MA' }; // the same book for Morocco: European digits, still right to left
const docs = [mashriq, await build()];
الإعداد دالة، فيحصل كل تنضيد على كائنه الخاص، ولا يغيّر التنضيد الثاني إلا اللغة. يكتب ar-MA أرقام التمارين والبنود والحلول والصفحات بالأرقام الأوروبية، ويترك كل ما عداها على حاله: الاتجاه، والتجليد، وحروف الأبجد، وكلمات الحلول.
الوصفة كاملة
// ═══ Postext Cookbook · Nº 173 · An Arabic workbook, right to left ═══════════════
// https://postext.dev/en/cookbook/arabic-workbook-rtl
// Code: MIT · Text: original (CC BY 4.0) · Pictures: generated with diffusion models
// Fonts: Noto Naskh Arabic, Baloo Bhaijaan 2 (SIL OFL 1.1) · Needs postext ≥ 1.59.0
import {
buildDocument, withLoadedFonts, renderPageToCanvas, registerResourceImage,
} from 'https://esm.sh/postext';
import { renderToPdf, decompressWoff2 } from 'https://esm.sh/postext-pdf';
const LANG = 'ar'; // @lang: the language of the frame; the workbook is Arabic in all
const RECIPE = 'arabic-workbook-rtl';
// ─── 1 · Design ─────────────────────────────────────────────────────────────
// #region palette: a garden workbook: ink, a terracotta accent, a leaf green, sand
const palette = {
ink: '#22282e', // text
accent: '#b9542a', // the one accent: exercise numbers, the unit tab, the word bank
leaf: '#4f7d3a', // the second: rules and the word search's ruling
sand: '#f8eedf', // the bank's ground, the answers box
rule: '#c8b49b', // writing lines
muted: '#6f655c', // folios, the name line, the colophon
paper: '#ffffff',
};
const col = (id) => ({ hex: palette[id], model: 'hex', paletteId: id });
const colorPalette = [
...Object.entries(palette).map(([id, hex]) => ({ id, name: id, value: { hex, model: 'hex' } })),
{ id: 'main-color', name: 'accent (defaults)', value: { hex: palette.accent, model: 'hex' } },
];
// #endregion
// Naskh for the text, a rounded Arabic for the labels a child reads first.
const [TEXT, LABEL] = ['Noto Naskh Arabic', 'Baloo Bhaijaan 2'];
// #region answer: one exercise style read right to left, in the edition's digits
// The locale sets the direction, the binding and the digits: 'ar' writes the exercise
// numbers, the items and the key in Arabic-Indic digits (١ ٢ ٣), 'ar-MA' in European ones.
// Options take the abjad letters (أ ب ج), true/false the words صح / خطأ, both from the
// language. Nothing below names a side: the engine sets every part from the right.
const tamrin = {
id: 'tamrin',
number: { shape: 'disc', fontFamily: LABEL, background: col('accent') },
instruction: { fontFamily: LABEL, bold: false, color: col('ink') },
options: { layout: 'row' }, // أ) ب) ج) side by side, three to a row (columns=3)
blank: { look: 'dots', color: col('muted') }, // a dotted line, as Arab workbooks print it
match: { color: col('accent') },
bank: { box: 'sunduq', order: 'shuffle' },
area: { kind: 'lines', color: col('rule') },
grid: { fontFamily: TEXT, rule: col('leaf'), uppercase: false }, // Arabic has no capitals
answers: { color: col('leaf'), fontFamily: TEXT },
يعمل ملف script.js المجمّع كما هو: الصقه في سكربت الوحدة (module) لأي صفحة، أو افتح الوصفة على CodePen. مجلد الوصفة على GitHub ↗ (يفتح في تبويب جديد)
تنويعات
#اطبع كتاب المعلم
تُطبع الإجابات عندئذ في أماكنها بلون answers: النقاط موصولة، والكلمات في فراغاتها، والخانات الصحيحة مملوءة، والكلمات محاطة بدوائر في الشبكة.
-const exercises = { solutions: { placement: 'directive' } };
+const exercises = { edition: 'teacher', solutions: { placement: 'none' } };#اكتب التمارين بالصينية
تنضّد كراسة التمارين الصينية الأنواع نفسها من التمارين بأقواسها وأرقامها.
أخطاء شائعة
خطأ شائع
اوسم الكتاب العربي بـ 'ar'، لا بـ LANG
نسختا الوصفة هما en وes، لكن المثال العربي عربي في كلتيهما: `locale: LANG` سيجعله من اليسار إلى اليمين، ويجلّده على اليسار، ويرقّم صفحاته 1 2 3، ويسمّي أشكاله Figure أو Figura. ومنذ postext 1.30 صار الوسم أيضًا اللغة التي يُشكَّل بها النص (يُقاس ويُرسم ويُضمَّن بها)، فتحت وسم إنجليزي أو إسباني لا يرسم خط مثل Markazi Text الأشكال العربية لعلامتَي التنصيص « » وللنقطة، وتنكسر الأسطر في مواضع أخرى. اكتب الوسم بنفسك: 'ar' (الأرقام العربية المشرقية، عُرف المشرق)، أو منطقة مثل 'ar-EG' أو 'ar-SA'، أو 'ar-MA' أو 'ar-DZ' أو 'ar-TN' لنسخة مغاربية بالأرقام الأوروبية. أما الصفحة اللاتينية التي تقتبس العربية فقط فتحتفظ بلغتها. النص من اليمين إلى اليسار →
خطأ شائع
الخطوط العربية تحتاج إلى ملفها arabic، عبر الكتلة arabic
يقدّم Fontsource الخطوط Amiri وNoto Naskh Arabic وScheherazade New في ملف لكل مجموعة فرعية، والحروف العربية في ملف arabic. لا يجلب loadFonts إلا latin (وlatin-ext)، فيأتي النص العربي على الشاشة من خط النظام ويُقاس خطأً، ويسلّم fontsourceProvider ملف latin ذاك إلى PDF، فيطبع مربعات فارغة. اذكر كتلة الأدوات arabic، واستدعِ loadArabicFonts(FONTS, markdown) بعد loadFonts، مع ذكر كل وزن تضع به الصفحاتُ نصًا عربيًا في FONTS، وأعطِ renderToPdf القيمة fontProvider: arabicPdfProvider. الخطوط العربية →
- أغلب الخطوط العربية تخلو من ✓ و✗، لذلك تُكتب الإجابة في أسئلة الصواب والخطأ بكلمتي صح وخطأ، ويطلب نص السؤال وضع علامة في الخانة.
- تملأ شبكة البحث خاناتها الفارغة بحروف كلماتها نفسها، في صورتها المنفصلة. فاختر كلمات متنوعة الحروف، وإلا امتلأت الشبكة بالتاء المربوطة ة.
الحقوق
- الوصفة
- Ignacio Ferro
- النص
- نص أصلي, CC BY 4.0
- الصور
- A school garden in an Arab town: date palms, a fountain, lemon trees, a girl watering plants and a boy carrying a pot of mint. · Generated With Diffusion Models · أصلي
- الخطوط
- Noto Naskh Arabic (SIL OFL 1.1) · Baloo Bhaijaan 2 (SIL OFL 1.1)
- الشيفرة
- MIT، مثل Postext
حرّر هذا الشرح ↗ (يفتح في تبويب جديد)مجلد الوصفة على GitHub ↗ (يفتح في تبويب جديد)


