انتقل إلى المحتوى الرئيسي
الوصفة رقم 173

دليل الوصفات · الفصل 12 · الكتب المدرسية

كراسة تمارين عربية من اليمين إلى اليسار

وحدة من كراسة تمارين عربية للمرحلة الابتدائية من اليمين إلى اليسار: خيارات أ ب ج، وعمودان للوصل، وبنك كلمات، وخانتا صح وخطأ، وأرقام مشرقية.

في هذه الصفحة
المُخرَج
Canvas · PDF
المستوى
متوسط
Postext
اختُبرت مع Postext 1.59.0
تتطلب ≥ 1.59.0 · postext-pdf ≥ 1.59.0
الترخيص
حُدّثت في 24 أكتوبر 2026
الشيفرة MIT · النص CC BY 4.0
  • مقاس القص 170 × 240 مم
  • عمود واحد
  • Noto Naskh Arabic 13/22
  • Baloo Bhaijaan 2
  • 8 صفحات
  • المستوى
  • Postext 1.59.0
  • أُخرجت في 126 ms
  • أسطر الشيفرة: 149

باختصار

صفحات من كراسة عربية للأطفال عن حديقة المدرسة: اختيار الإجابة، والوصل بين العمودين، وملء الفراغ من صندوق كلمات، ووضع علامة صح أو خطأ، وترتيب الكلمات، والبحث عن الكلمات في شبكة حروف.

ما الذي ستنضده

وحدة من كراسة تمارين في اللغة العربية للصف الثاني الابتدائي، على صفحة 17 × 24 سم، موضوعها حديقة المدرسة. يفتتحها شريط من لوحة مائية، وتحته لسان الوحدة وعنوانها، وسطر منقّط لكل من الاسم والصف والتاريخ. ثم تأتي التمارين التي يطبعها كتاب عربي للمرحلة الابتدائية: «اختر الإجابة الصحيحة» والخيارات أ) ب) ج) ثلاثة في السطر؛ و«صل بين العمودين»؛ و«أكمل الفراغ» من بنك الكلمات؛ وضع علامة في خانة صح أو خطأ؛ ورتّب الكلمات واكتب الجملة على السطر؛ وابحث عن سبع كلمات من الحديقة في شبكة الحروف. وتُختم الوحدة بالحلول. ويُنضَّد النص نفسه مرتين: طبعة المشرق ترقّم كل شيء بالأرقام العربية المشرقية ١ ٢ ٣، وطبعة المغرب بالأرقام الأوروبية. وكلتاهما تُقرأ من اليمين وتُجلَّد على اليمين.

تجيب هذه الوصفة عن

  • كيف أصفّ كراسة تمارين عربية من اليمين إلى اليسار: عمودان للتوصيل وصندوق كلمات وشبكة كلمات وأرقام هندية؟
  • كيف أصفّ صفحة كراسة أنشطة: أرقام في دوائر وبنك كلمات وصواب وخطأ وصِل؟
  • كيف أصنع شبكة بحث عن كلمات أو كلمات متقاطعة من قائمة كلمات؟

الجواب المختصر

script.js · الأسطر 34–53في الشيفرة الكاملة
// 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' } };

المكونات

الخطوط
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 · افتتاحية الحديقة

script.js · الأسطر 58–73في الشيفرة الكاملة
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 · طبعتان ونظاما أرقام

script.js · الأسطر 227–232في الشيفرة الكاملة
// 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 أرقام التمارين والبنود والحلول والصفحات بالأرقام الأوروبية، ويترك كل ما عداها على حاله: الاتجاه، والتجليد، وحروف الأبجد، وكلمات الحلول.

الوصفة كاملة

Sandbox
// ═══ 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
Sandbox