Kurz gesagt
Seiten eines arabischen Kinder-Arbeitshefts über einen Schulgarten: die Antwort wählen, Spalten verbinden, Lücken aus einem Wortkasten füllen, richtig oder falsch ankreuzen, Wörter ordnen, Wörter im Gitter finden.
Was Sie setzen
Eine Einheit aus einem arabischen Arbeitsheft für die zweite Klasse, auf einer Seite von 17 × 24 cm, rund um einen Schulgarten. Sie beginnt mit einem Aquarellband, dem Reiter und dem Titel der Einheit und je einer gepunkteten Linie für Name, Klasse und Datum. Dann folgen die Übungen, die ein arabisches Grundschulbuch druckt: die richtige Antwort wählen, mit أ) ب) ج), drei in einer Reihe; die beiden Spalten verbinden; die Lücken aus einem Wortkasten füllen; صح oder خطأ ankreuzen; Wörter ordnen und den Satz auf die Linie schreiben; sieben Gartenwörter in einem Buchstabengitter finden. Die Lösungen schließen die Einheit ab. Derselbe Text wird zweimal gesetzt: Die Maschrek-Ausgabe zählt alles mit ostarabischen Ziffern, ١ ٢ ٣, die Maghreb-Ausgabe mit europäischen. Beide liest man von rechts, beide sind rechts gebunden.
Dieses Rezept beantwortet
- Wie setze ich ein arabisches Arbeitsheft von rechts nach links: Spalten zum Verbinden, Wortkasten, Suchsel und ostarabische Ziffern?
- Wie setze ich eine Arbeitsheftseite: Nummern im Kreis, Wortspeicher, richtig oder falsch, verbinde?
- Wie mache ich aus einer Wortliste ein Suchsel oder ein Kreuzworträtsel?
Die kurze Antwort
// 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' } };
Zutaten
- Funktionen
- ÜbungenText von rechts nach linksZiffern der erzeugten ZahlenÜbungsstileAuswahl und richtig oder falschLücken und WortspeicherZuordnen und sortierenOrdnenSuchsel und KreuzworträtselLösungenArabische SchriftenArabische NummerierungsstileRechts gebundene BücherInline-ChipsKästenGestaltete AuftakteÜberschriftenattributeBilder in SeitengestaltungenSemantische FarbpalettePDF-Export
- Nutzt außerdem
- Kästen, die sich teilen oder ganz bleibenSpaltenausgleichOffene Fragen und SchreibflächenKopfzeilen nach SeitenrolleAbsatzformateIm PDF eingebettete SchriftenAbbildungen und Tabellen als Ressourcen
- Schrift
- Noto Naskh Arabic, Baloo Bhaijaan 2 (SIL OFL 1.1)
- Dateien
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, eigener Text)
Zubereitung
#1 · Keine Seite nennen
Der Code steht oben in der kurzen Antwort. locale: 'ar' setzt den Text von rechts nach links, bindet das Buch rechts und wählt die Ziffern; der Übungsstil nimmt aus der Sprache die Abdschad-Buchstaben für die Optionen und صح und خطأ für richtig oder falsch. Die Zuordnungsspalten, der Wortkasten, der Buchstabensalat und die Schreiblinien sind als Kastengestaltungen gezeichnet, und eine Seite von rechts nach links spiegelt sie. Die erste Spalte steht dann rechts, ein waagrecht im Gitter gelesenes Wort läuft von rechts nach links, und die Zuordnungspunkte stehen sich in der Mitte gegenüber.
#2 · Der Auftakt mit dem Garten
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) } } },
] } };
Das Bild ist an der Seite verankert und behält seinen Platz. Reiter und Titel stehen im Fluss der Seite, wo left der Zeilenanfang ist, und rücken so ohne eigene Koordinate nach rechts. Die Seitenzahlen bleiben physisch, wie Kolumnentitel, und geben jede Seite ausdrücklich an.
#3 · Zwei Ausgaben, zwei Ziffernsätze
// 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()];
Die Konfiguration ist eine Funktion, also bekommt jeder Satzlauf sein eigenes Objekt, und der zweite ändert nur die Locale. ar-MA schreibt die Übungsnummern, die Aufgaben, die Lösungen und die Seitenzahlen in europäischen Ziffern und lässt alles andere, wie es war: die Richtung, die Bindung, die Abdschad-Buchstaben und die Wörter der Lösungen.
Das ganze Rezept
// ═══ 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 },
Das zusammengesetzte script.js läuft unverändert: Fügen Sie es in das Modulskript einer beliebigen Seite ein, oder öffnen Sie das Rezept auf CodePen. Ordner des Rezepts auf GitHub ↗ (öffnet sich in einem neuen Tab)
Varianten
#Das Lehrerheft drucken
Die Antworten stehen dann an ihrem Platz, in der Farbe von answers: die Punkte verbunden, die Wörter in ihren Lücken, die richtigen Kästchen gefüllt und die Wörter im Gitter eingekreist.
-const exercises = { solutions: { placement: 'directive' } };
+const exercises = { edition: 'teacher', solutions: { placement: 'none' } };#Die Übungen auf Chinesisch schreiben
Das chinesische Übungsheft setzt dieselben Übungsarten mit eigenen Klammern und Zahlzeichen.
Häufige Fehler
Häufiger Fehler
Zeichnen Sie ein arabisches Buch mit 'ar' aus, nicht mit LANG
Die Ausgaben eines Rezepts sind en und es, ein arabisches Beispiel ist aber in beiden Arabisch: `locale: LANG` würde es von links nach rechts setzen, links binden, seine Seiten 1 2 3 nummerieren und seine Abbildungen mit Figure oder Figura beschriften. Seit postext 1.30 ist die Auszeichnung auch die Sprache, in der der Text geformt wird (gemessen, gezeichnet und eingebettet). Unter einer englischen oder spanischen Auszeichnung zeichnet eine Schrift wie Markazi Text daher die arabischen Formen ihrer Guillemets und Satzzeichen nicht, und die Zeilen brechen an anderer Stelle um. Schreiben Sie die Auszeichnung selbst: 'ar' (arabisch-indische Ziffern, die Maschrek-Konvention), eine Region wie 'ar-EG' oder 'ar-SA', oder 'ar-MA', 'ar-DZ' bzw. 'ar-TN' für eine Maghreb-Ausgabe mit europäischen Ziffern. Eine lateinische Seite, die Arabisch nur zitiert, behält ihr eigenes Gebietsschema. Text von rechts nach links →
Häufiger Fehler
Arabische Schnitte brauchen ihre arabic-Datei, über den Block arabic
Fontsource liefert Amiri, Noto Naskh Arabic oder Scheherazade New als eine Datei pro Teilmenge aus, und die arabischen Buchstaben stehen in der Datei arabic. loadFonts holt nur latin (und latin-ext), am Bildschirm stammt das Arabische also aus einer Systemschrift und wird falsch gemessen, und fontsourceProvider gibt dem PDF diese latin-Datei, die leere Kästchen druckt. Führen Sie den Kit-Block arabic auf, rufen Sie loadArabicFonts(FONTS, markdown) nach loadFonts auf, mit jeder Schriftstärke, die die Seiten auf Arabisch setzen, in FONTS aufgeführt, und geben Sie renderToPdf fontProvider: arabicPdfProvider. Arabische Schriften →
- Die meisten arabischen Schriften haben weder ✓ noch ✗: Richtig und falsch heißen صح und خطأ, und die Aufgabe verlangt ein Zeichen im Kästchen.
- Der Buchstabensalat füllt seine leeren Felder mit den Buchstaben seiner eigenen Wörter, in ihrer isolierten Form. Wählen Sie Wörter mit verschiedenen Buchstaben, sonst füllt sich das Gitter mit ة.
Nachweise
- Rezept
- Ignacio Ferro
- Text
- Eigener Text, CC BY 4.0
- Bilder
- 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 · eigener Text
- Schriften
- Noto Naskh Arabic (SIL OFL 1.1) · Baloo Bhaijaan 2 (SIL OFL 1.1)
- Code
- MIT, wie Postext
Diesen Text bearbeiten ↗ (öffnet sich in einem neuen Tab)Ordner des Rezepts auf GitHub ↗ (öffnet sich in einem neuen Tab)


