Vai al contenuto principale
Ricetta numero 173

Ricettario · Capitolo 12 · Libri di testo

Un quaderno di esercizi arabo, da destra a sinistra

Un quaderno arabo per la primaria da destra a sinistra: opzioni أ ب ج, colonne da collegare, riquadro di parole, صح o خطأ, crucipuzzle e cifre arabo-indiane.

In questa pagina
Output
Canvas · PDF
Livello
Intermedio
Postext
Provata con Postext 1.59.0
Richiede ≥ 1.59.0 · postext-pdf ≥ 1.59.0
Licenza
Aggiornata il 24 ott 2026
Codice MIT · Testo CC BY 4.0

p. ١ · 1 di 8

  • Esempio in lingua straniera: non c’è ancora un’edizione italiana
  • Formato 170 × 240 mm
  • 1 colonna
  • Noto Naskh Arabic 13/22
  • Baloo Bhaijaan 2
  • 8 pagine
  • Livello
  • Postext 1.59.0
  • Impaginato in 126 ms
  • 149 righe di codice

In breve

Pagine di un quaderno di arabo per bambini sull’orto della scuola: scegliere la risposta, collegare le colonne, completare con le parole di un riquadro, segnare vero o falso, ordinare parole, trovarle in una griglia.

Che cosa comporrai

Un’unità di un quaderno di arabo di seconda elementare su una pagina di 17 × 24 cm, dedicata all’orto della scuola. Si apre con una fascia ad acquerello, la linguetta e il titolo dell’unità e una riga a puntini per il nome, la classe e la data. Poi vengono gli esercizi che stampa un libro arabo per la primaria: scegliere la risposta giusta, con أ) ب) ج) tre per riga; collegare le due colonne; completare gli spazi con un riquadro di parole; segnare صح o خطأ; mettere in ordine le parole e scrivere la frase sulla riga; trovare sette parole dell’orto in una griglia di lettere. Le soluzioni chiudono l’unità. Lo stesso testo si compone due volte: l’edizione del Mashriq numera tutto con cifre arabo-indiane, ١ ٢ ٣, quella del Maghreb con cifre europee. Tutte e due si leggono da destra e si rilegano a destra.

Questa ricetta risponde a

  • Come compongo un quaderno di esercizi arabo da destra a sinistra: colonne da collegare, riquadro di parole, crucipuzzle e cifre arabo-indiane?
  • Come compongo una pagina di eserciziario: numeri nei cerchi, banca di parole, vero o falso, collega?
  • Come faccio un crucipuzzle o un cruciverba da un elenco di parole?

La risposta breve

script.js · righe 34–53nel codice completo
// 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' } };

Ingredienti

Tipo
Noto Naskh Arabic, Baloo Bhaijaan 2 (SIL OFL 1.1)
Risorse
  • 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, originale)

Preparazione

#1 · Non nominare nessun lato

Il codice è la risposta breve qui sopra. locale: 'ar' compone il testo da destra a sinistra, rilega il libro a destra e sceglie le cifre; lo stile degli esercizi prende dalla lingua le lettere abjad delle opzioni e صح e خطأ per il vero o falso. Le colonne da collegare, il riquadro di parole, il crucipuzzle e le righe di scrittura sono disegnati come design di riquadro, che una pagina da destra a sinistra rispecchia: la prima colonna sta a destra, una parola letta in orizzontale nella griglia va da destra a sinistra e i puntini da collegare si guardano nel mezzo.

#2 · L’apertura dell’orto

script.js · righe 58–73nel codice completo
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) } } },
] } };

Il dipinto è ancorato alla pagina e tiene il suo posto. La linguetta e il titolo stanno nel flusso della pagina, dove left è l’inizio della riga, e così finiscono a destra senza coordinate proprie. I numeri di pagina restano fisici, come i titoli correnti, e indicano ogni lato.

#3 · Due edizioni, due serie di cifre

script.js · righe 227–232nel codice completo
// 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()];

La configurazione è una funzione, quindi ogni composizione riceve il suo oggetto, e la seconda cambia solo la lingua. ar-MA scrive in cifre europee i numeri degli esercizi, delle voci, delle soluzioni e delle pagine, e lascia il resto com’era: la direzione, la rilegatura, le lettere abjad e le parole delle soluzioni.

La ricetta completa

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 },

Lo script.js composto funziona così com’è: incollalo nello script modulo di qualsiasi pagina, oppure apri la ricetta su CodePen. Cartella della ricetta su GitHub ↗ (si apre in una nuova scheda)

Varianti

#Stampa la guida per l’insegnante

Le risposte si stampano allora al loro posto, nel colore di answers: i puntini collegati, le parole negli spazi, le caselle giuste piene e le parole cerchiate nella griglia.

-const exercises = { solutions: { placement: 'directive' } };
+const exercises = { edition: 'teacher', solutions: { placement: 'none' } };

#Scrivi gli esercizi in cinese

Il quaderno di esercizi cinese compone gli stessi tipi di esercizio con parentesi e numerali suoi.

Errori frequenti

Errore frequente

Assegna a un libro arabo il tag 'ar', non LANG

Le edizioni di una ricetta sono en ed es, ma un esempio arabo è arabo in entrambe: `locale: LANG` lo comporrebbe da sinistra a destra, lo rilegherebbe a sinistra, numererebbe le pagine 1 2 3 e darebbe alle figure didascalie Figure o Figura. Da postext 1.30 il tag è anche la lingua usata per lo shaping del testo (misura, disegno e incorporamento), quindi con un tag inglese o spagnolo un carattere come Markazi Text non disegna le forme arabe delle sue virgolette basse e dei suoi segni di interpunzione, e le righe vanno a capo altrove. Scrivi tu il tag: 'ar' (cifre arabo-indiane, la convenzione del Mashriq), una regione come 'ar-EG' o 'ar-SA', oppure 'ar-MA', 'ar-DZ' o 'ar-TN' per un’edizione del Maghreb con cifre europee. Una pagina latina che si limita a citare l’arabo mantiene la propria lingua. Testo da destra a sinistra →

Errore frequente

I caratteri arabi hanno bisogno del loro file arabic, tramite il blocco arabic

Fontsource serve Amiri, Noto Naskh Arabic o Scheherazade New come un file per sottoinsieme, e le lettere arabe stanno nel file arabic. loadFonts scarica solo latin (e latin-ext), così a schermo l’arabo viene da un font di sistema ed è misurato male, e fontsourceProvider passa al PDF quel file latin, che stampa riquadri vuoti. Elenca il blocco arabic del kit, chiama loadArabicFonts(FONTS, markdown) dopo loadFonts, con ogni peso che le pagine compongono in arabo elencato in FONTS, e passa a renderToPdf fontProvider: arabicPdfProvider. Font arabi →

  • Quasi nessun carattere arabo ha ✓ o ✗: vero e falso si scrivono صح e خطأ, e la consegna chiede un segno nella casella.
  • Il crucipuzzle riempie le caselle vuote con le lettere delle sue stesse parole, nella forma isolata. Scegli parole con lettere diverse, o la griglia si riempie di ة.

Crediti

Testo
Testo originale, CC BY 4.0
Immagini
  • 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 · originale
Font
Noto Naskh Arabic (SIL OFL 1.1) · Baloo Bhaijaan 2 (SIL OFL 1.1)
Sandbox