Zum Hauptinhalt springen
Rezept Nummer 169

Rezepte · Kapitel 12 · Schulbücher

Ein Arbeitsblatt in zehn Schultraditionen

Dieselben sieben :::exercise-Blöcke in zehn Sprachen, jede Ausgabe mit einem Übungsstil gesetzt, der den Schulbüchern ihres Landes folgt.

Auf dieser Seite
Ausgabe
Canvas · PDF
Stufe
Mittel
Postext
Getestet mit Postext 1.59.0
Erfordert ≥ 1.59.0 · postext-pdf ≥ 1.59.0
Lizenz
Aktualisiert am 24. Okt. 2026
Code MIT · Text CC BY 4.0

S. 1 von 2

  • Endformat 210 × 297 mm
  • 1 Spalte
  • Nunito 12/18
  • Baloo 2
  • 2 Seiten
  • Stufe
  • Postext 1.59.0
  • In 115 ms gesetzt
  • 154 Zeilen Code

Kurz gesagt

Ein zweiseitiges Arbeitsblatt für Sachunterricht und Mathe zum Wasserkreislauf, zehnmal gemacht. Die Aufgaben sind dieselben; Nummern, Kästchen, Schreiblinien und die Division sehen aus wie in den Schulbüchern des jeweiligen Landes.

Was Sie setzen

Arbeitsblatt 7 eines Kurses in Sachunterricht und Mathematik für die vierte Klasse, Das Wasser auf Reisen, in zehn Ausgaben. Die Aufgaben sind in allen Sprachen dieselben: eine Antwort auswählen, richtig oder falsch ankreuzen, einen Lückentext mit Wörtern aus einem Wortspeicher füllen, Begriffe mit ihrer Bedeutung verbinden, ein Wort einkreisen, das Wasser eines Tanks aufteilen und begründen, warum man es sparen soll. Jede Ausgabe druckt sie so, wie es die Schulen ihres Landes tun. Das spanische und das katalanische Blatt setzen die Nummer in einen Kreis, lassen V oder F ankreuzen und dividieren mit dem Divisor in einem L rechts vom Dividenden. Das französische nimmt Quadrate, cases à cocher, gepunktete Lücken und Seyès-Papier für die Antwort. Das deutsche schreibt R und F, Lückentext und 864 : 4 = in eine Zeile, die Multiplikation mit Malpunkt. Das brasilianische fragt nach V oder F in Klammern. Das englische dividiert unter dem Bogen ⟌. Das chinesische nummeriert seine Abschnitte 一、二、, setzt ( ) hinter jede Aufgabe, A. B. C. in einer Reihe, fragt nach √ oder × und schließt mit 看拼音,写词语 in 田字格-Kästchen. Das japanische bietet ア イ ウ und ○ ×, das arabische läuft von rechts nach links mit أ ب ج und صح oder خطأ.

Dieses Rezept beantwortet

  • Wie setze ich dasselbe Arbeitsblatt so, wie die Schulbücher jedes Landes ihre Aufgaben setzen?
  • Wie setze ich die schriftliche Division so, wie die Schulen jedes Landes sie schreiben?
  • Wie setze ich chinesische Prüfungsfragen: eine Klammer ( ) nach der Frage und die Antworten A. B. C. D. in einer Reihe?

Die kurze Antwort

script.js · Zeilen 36–69im vollständigen Code
// The Markdown of every edition has the same seven exercises. What changes is this table:
// how the number prints, how options are labelled and answered, how true/false reads, where
// a blank is written, the paper of the open answer and the layout of long division.
const disc = { shape: 'disc' };
const square = { shape: 'square' };
const bare = { shape: 'none', suffix: '.' };
const TRADITIONS = {
  es: { number: disc, options: { marker: 'none' }, trueFalse: { look: 'boxes' },
    blank: { look: 'line' }, area: { kind: 'lines' }, arithmetic: { division: 'potence' } },
  fr: { number: square, options: { marker: 'box' }, trueFalse: { look: 'boxes' },
    blank: { look: 'dots' }, area: { kind: 'seyes', spacing: mm(8) },
    arithmetic: { division: 'potence' } },
  de: { number: square, options: { marker: 'box' }, trueFalse: { look: 'boxes' },
    blank: { look: 'line' }, area: { kind: 'lines' }, arithmetic: { division: 'inline' } },
  it: { number: { shape: 'rounded' }, options: { marker: 'box' }, trueFalse: { look: 'boxes' },
    blank: { look: 'dots' }, area: { kind: 'lines' }, arithmetic: { division: 'potence' } },
  pt: { number: bare, options: { marker: 'none' }, trueFalse: { look: 'bracket' },
    blank: { look: 'line' }, area: { kind: 'lines' }, arithmetic: { division: 'potence' } },
  en: { number: bare, options: { marker: 'none' }, trueFalse: { look: 'boxes' },
    blank: { look: 'line' }, area: { kind: 'lines' }, arithmetic: { division: 'bracket' } },
  // 一、二、 sections; ( ) after the stem and A. B. C. in a row; √ × in a bracket; 田字格.
  zh: { number: { shape: 'none', format: 'simp-chinese-informal', suffix: '、' },
    options: { labels: 'alpha-upper', suffix: '.', layout: 'row', bracket: true },
    trueFalse: { look: 'bracket' }, blank: { look: 'line' },
    area: { kind: 'tianzige', spacing: mm(13), lines: 1 }, arithmetic: { division: 'bracket' } },
  // ア イ ウ in a row with ( ), ○ × in a bracket, the number in a square.
  ja: { number: square, options: { labels: 'katakana', suffix: '', layout: 'row', bracket: true },
    trueFalse: { look: 'bracket' }, blank: { look: 'line' }, area: { kind: 'lines' },
    arithmetic: { division: 'bracket' } },
  ar: { number: disc, options: { marker: 'none', prefix: '(', suffix: ')' },
    trueFalse: { look: 'boxes' },
    blank: { look: 'dots' }, area: { kind: 'lines' }, arithmetic: { division: 'bracket' } },
};
TRADITIONS.ca = TRADITIONS.es; // Catalan schools set exercises as Spanish ones do

Zutaten

Schrift
Nunito, Baloo 2, Noto Serif SC, Noto Sans SC, Klee One, Noto Sans JP, Noto Naskh Arabic, Baloo Bhaijaan 2 (SIL OFL 1.1)
Dateien
Keine: Jedes Bild wird im Code gezeichnet

Zubereitung

#1 · Jede Tradition in eine Tabelle schreiben

script.js · Zeilen 36–69im vollständigen Code
// The Markdown of every edition has the same seven exercises. What changes is this table:
// how the number prints, how options are labelled and answered, how true/false reads, where
// a blank is written, the paper of the open answer and the layout of long division.
const disc = { shape: 'disc' };
const square = { shape: 'square' };
const bare = { shape: 'none', suffix: '.' };
const TRADITIONS = {
  es: { number: disc, options: { marker: 'none' }, trueFalse: { look: 'boxes' },
    blank: { look: 'line' }, area: { kind: 'lines' }, arithmetic: { division: 'potence' } },
  fr: { number: square, options: { marker: 'box' }, trueFalse: { look: 'boxes' },
    blank: { look: 'dots' }, area: { kind: 'seyes', spacing: mm(8) },
    arithmetic: { division: 'potence' } },
  de: { number: square, options: { marker: 'box' }, trueFalse: { look: 'boxes' },
    blank: { look: 'line' }, area: { kind: 'lines' }, arithmetic: { division: 'inline' } },
  it: { number: { shape: 'rounded' }, options: { marker: 'box' }, trueFalse: { look: 'boxes' },
    blank: { look: 'dots' }, area: { kind: 'lines' }, arithmetic: { division: 'potence' } },
  pt: { number: bare, options: { marker: 'none' }, trueFalse: { look: 'bracket' },
    blank: { look: 'line' }, area: { kind: 'lines' }, arithmetic: { division: 'potence' } },
  en: { number: bare, options: { marker: 'none' }, trueFalse: { look: 'boxes' },
    blank: { look: 'line' }, area: { kind: 'lines' }, arithmetic: { division: 'bracket' } },
  // 一、二、 sections; ( ) after the stem and A. B. C. in a row; √ × in a bracket; 田字格.
  zh: { number: { shape: 'none', format: 'simp-chinese-informal', suffix: '、' },
    options: { labels: 'alpha-upper', suffix: '.', layout: 'row', bracket: true },
    trueFalse: { look: 'bracket' }, blank: { look: 'line' },
    area: { kind: 'tianzige', spacing: mm(13), lines: 1 }, arithmetic: { division: 'bracket' } },
  // ア イ ウ in a row with ( ), ○ × in a bracket, the number in a square.
  ja: { number: square, options: { labels: 'katakana', suffix: '', layout: 'row', bracket: true },
    trueFalse: { look: 'bracket' }, blank: { look: 'line' }, area: { kind: 'lines' },
    arithmetic: { division: 'bracket' } },
  ar: { number: disc, options: { marker: 'none', prefix: '(', suffix: ')' },
    trueFalse: { look: 'boxes' },
    blank: { look: 'dots' }, area: { kind: 'lines' }, arithmetic: { division: 'bracket' } },
};
TRADITIONS.ca = TRADITIONS.es; // Catalan schools set exercises as Spanish ones do

Alle Ausgaben haben dasselbe Markdown: sieben :::exercise-Blöcke, deren Lösungen im Text stehen (- [x], [[Wasserdampf]], - Verdunstung -> Wasser wird zu Dampf, - 864 : 4). Was die Bücher eines Landes anders machen, ist Form, und die steht in dieser Tabelle und nirgends sonst: Gestalt und Ziffern der Nummer, die Buchstaben der Antworten und ob das Kind ein Kästchen ankreuzt oder einen Buchstaben einkreist, das Aussehen von richtig und falsch, das der Lücken, die Schreibfläche und die Anordnung der schriftlichen Division. Das Katalanische übernimmt die spanische Zeile unverändert.

#2 · Die Tradition über den Hausstil legen

script.js · Zeilen 73–87im vollständigen Code
const T = TRADITIONS[LANG];
const ficha = {
  id: 'ficha', ...T,
  number: { background: col('accent'), color: T.number.shape === 'none' ? col('accent')
    : col('paper'), fontFamily: LABEL, fontWeight: 700, ...T.number },
  // Chinese and Japanese sheets set the instructions in the gothic (黑体, ゴシック).
  instruction: { bold: true, color: col('ink'), ...(LANG === 'zh' || LANG === 'ja'
    ? { fontFamily: LABEL } : {}) },
  blank: { color: col('ink'), weight: pt(0.7), ...T.blank },
  match: { look: 'dots', gap: em(5), color: col('accent') },
  bank: { order: 'alpha' },
  area: { color: col('rule'), spacing: mm(9), weight: pt(0.6), ...T.area },
  grid: { cell: mm(8.5), fontFamily: TEXT, rule: col('rule'), color: col('ink') },
  marginTop: mm(7), marginBottom: mm(1), itemSpacing: em(0.4),
};

Ein einziger Übungsstil, ficha, trägt, was alle zehn Blätter teilen (das Blau der Nummern, die grauen Linien, den Abstand zwischen den Aufgaben), und die Zeile der Ausgabe wird darübergelegt. Was die Zeile offenlässt, kommt aus der Sprache: T F, V F, R F, √ ×, ○ × und صح خطأ sind Wörter der Engine selbst, ebenso a) b) c), A. B. C., ア イ ウ und أ ب ج, also schreibt keine Ausgabe sie aus.

#3 · Jedem Schriftsystem seine Schriften geben

script.js · Zeilen 27–32im vollständigen Code
const FACES = {
  zh: { text: 'Noto Serif SC', label: 'Noto Sans SC' },
  ja: { text: 'Klee One', label: 'Noto Sans JP' },
  ar: { text: 'Noto Naskh Arabic', label: 'Baloo Bhaijaan 2' },
}[LANG] ?? { text: 'Nunito', label: 'Baloo 2' };
const [TEXT, LABEL] = [FACES.text, FACES.label];

Die lateinischen Ausgaben teilen sich Nunito und Baloo 2. Das chinesische Blatt setzt den Text in einer Song und die Arbeitsanweisungen in einer Hei, das japanische den Text in Klee One, einer Schulbuchschrift, und die Arbeitsanweisungen in einer Gothic; das arabische nimmt Noto Naskh Arabic. Der kräftigste Schnitt von Klee One ist 600, deshalb setzt die japanische Ausgabe ihren Fettdruck auf 600 (boldFontWeight): Eine 700 würde der Browser selbst zeichnen, und die Aufnahme schlüge fehl.

#4 · Das Blatt mit Linien für den Namen beginnen

script.js · Zeilen 91–110im vollständigen Code
const at = (to, edge, x = 0, y = 0, size) => ({ anchor: { to, edge },
  offset: { x: mm(x), y: mm(y) }, ...(size && { size }) });
const field = (id, attr, x, width) => [
  { kind: 'text', id, content: `{attr.${attr}}`, fontFamily: LABEL, fontSize: pt(10),
    fontWeight: 700, color: col('muted'), align: 'left', placement: at('container', 'top-left',
      x, 28) },
  { kind: 'rule', id: `${id}-line`, direction: 'horizontal', thickness: pt(0.75),
    color: col('rule'), placement: at('container', 'top-left', x + 16, 33, { width: mm(width) }) },
];
const head = { enabled: true, minHeight: mm(38), slot: { elements: [
  { kind: 'box', id: 'band', style: { backgroundColor: col('accent'), borderRadius: mm(3) },
    placement: at('container', 'top-left', 0, 0, { width: 'fill', height: mm(21) }) },
  { kind: 'text', id: 'kicker', content: '{title} · {subtitle}', fontFamily: LABEL,
    fontSize: pt(8.5), fontWeight: 700, color: col('tint'), align: 'left',
    placement: at('container', 'top-left', 6, 3.5) },
  { kind: 'text', id: 'title', content: '{titleText}', fontFamily: LABEL, fontSize: pt(22),
    fontWeight: 700, color: col('paper'), align: 'left', lineHeight: 1.1,
    placement: at('container', 'top-left', 6, 9.5) },
  ...field('name', 'nombre', 0, 96), ...field('date', 'fecha', 120, 40),
] } };

Die Überschrift der Ebene 1 zeichnet das Band, den Kurs aus dem Frontmatter und den Titel sowie zwei Felder mit Schreiblinie, deren Wörter aus den Attributen der Überschrift kommen (nombre="Name" fecha="Datum"). So steht auf dem deutschen Blatt Datum und auf dem japanischen 名前, ohne eine Zeichenkette im Code.

Das ganze Rezept

Sandbox
// ═══ Postext Cookbook · Nº 169 · One worksheet in ten school traditions ═════════
// https://postext.dev/en/cookbook/school-traditions-worksheet
// Code: MIT · Text: original (CC BY 4.0) · Pictures: none
// Fonts: Nunito, Baloo 2, Klee One, Noto Naskh Arabic and others (SIL OFL) · Needs postext ≥ 1.59.0
import {
  buildDocument, withLoadedFonts, renderPageToCanvas,
} from 'https://esm.sh/postext';
import { renderToPdf, decompressWoff2 } from 'https://esm.sh/postext-pdf';

const LANG = 'de'; // @lang: the language of the worksheet (en es ca fr de it pt zh ja ar)
const RECIPE = 'school-traditions-worksheet';

// ─── 1 · Design ─────────────────────────────────────────────────────────────
// #region palette: a blue-black ink, one blue accent, a pale tint, grey rules
const palette = {
  ink: '#1d2633', accent: '#2a5d9f', tint: '#e8f0fa', rule: '#a9b6c6', muted: '#5d6878',
  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

// #region faces: Latin editions share two faces; Chinese, Japanese and Arabic their own
const FACES = {
  zh: { text: 'Noto Serif SC', label: 'Noto Sans SC' },
  ja: { text: 'Klee One', label: 'Noto Sans JP' },
  ar: { text: 'Noto Naskh Arabic', label: 'Baloo Bhaijaan 2' },
}[LANG] ?? { text: 'Nunito', label: 'Baloo 2' };
const [TEXT, LABEL] = [FACES.text, FACES.label];
// #endregion

// #region answer: the form of the exercises, as each country's school books set them
// The Markdown of every edition has the same seven exercises. What changes is this table:
// how the number prints, how options are labelled and answered, how true/false reads, where
// a blank is written, the paper of the open answer and the layout of long division.
const disc = { shape: 'disc' };
const square = { shape: 'square' };
const bare = { shape: 'none', suffix: '.' };
const TRADITIONS = {
  es: { number: disc, options: { marker: 'none' }, trueFalse: { look: 'boxes' },
    blank: { look: 'line' }, area: { kind: 'lines' }, arithmetic: { division: 'potence' } },
  fr: { number: square, options: { marker: 'box' }, trueFalse: { look: 'boxes' },
    blank: { look: 'dots' }, area: { kind: 'seyes', spacing: mm(8) },
    arithmetic: { division: 'potence' } },
  de: { number: square, options: { marker: 'box' }, trueFalse: { look: 'boxes' },

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

#Die Lehrerausgabe drucken

Jede Lösung steht in Magenta an ihrem Platz: in den Klammern, den Kästchen, den Lücken und im Quotienten.

   exerciseStyles: [ficha],
+  exercises: { edition: 'teacher' },

#Die Lösungen am Fuß des Blatts sammeln

placement: 'after' setzt die Lösung jeder Aufgabe darunter; 'inverted' stellt sie auf den Kopf, wie auf Rätselseiten.

+  exercises: { solutions: { placement: 'inverted', layout: 'key' } },

Häufige Fehler

  • Fehlt einer Schrift der Schnitt 700, werden die Nummern der Aufgaben künstlich fett. Geben Sie einer solchen Textschrift ein boldFontWeight mit einem Gewicht, das sie mitbringt.
  • Das ○ der japanischen und das √ der chinesischen Arbeitsanweisungen gibt es nur in den CJK-Schriften: Setzen Sie sie in einen Satz des CJK-Texts, nicht in ein lateinisches Etikett.

Nachweise

Text
Eigener Text, CC BY 4.0
Schriften
Nunito (SIL OFL 1.1) · Baloo 2 (SIL OFL 1.1) · Noto Serif SC (SIL OFL 1.1) · Noto Sans SC (SIL OFL 1.1) · Klee One (SIL OFL 1.1) · Noto Sans JP (SIL OFL 1.1) · Noto Naskh Arabic (SIL OFL 1.1) · Baloo Bhaijaan 2 (SIL OFL 1.1)
SandboxPDF