7. Titel, Logos und andere Blattelemente
Blattelemente stehen auf dem Blatt, gehören aber nicht zur Karte. Gemeinsame Elemente stehen unter [[shared]] und erscheinen auf jedem Blatt. Ein Layout blendet einzelne mit hide_shared aus und hat unter [[layouts.elements]] eigene. Die IDs der gemeinsamen Elemente und der Elemente eines Layouts müssen zusammen eindeutig sein. footer ist vergeben.
Jedes Element hat:
| Schlüssel | Bedeutung |
|---|---|
id | Name, mit dem Hinweise das Element nennen |
kind | title_block, text, logo, scale_check_bar, copyright_line, credit_line oder control_descriptions (Kapitel 8) |
anchor.to | "page" (das Blatt) oder "map_frame" (der Kartenausschnitt) |
anchor.corner | eine von neun Stellen: top_left, top, top_right, left, centre, right, bottom_left, bottom, bottom_right |
anchor.offset_mm | [x, y], Abstand in mm von dieser Stelle nach innen |
Jeder Abstand liegt zwischen -2000 und 2000 mm. Er zählt von einer linken oder oberen Kante nach rechts oder unten, von einer rechten oder unteren nach links oder oben, von einer Mitte nach rechts oder unten. Das Element liegt innen an seiner Stelle: top_right mit [2, 2] setzt seine rechte obere Ecke 2 mm links und 2 mm unter die rechte obere Ecke.
Ein Element am Kartenausschnitt liegt auf der Karte und deckt sie ab, das ist gewollt. Ein Element am Blatt, das in den Kartenausschnitt ragt, bekommt einen Hinweis. Ebenso ein Element, das über den Blattrand ragt.
Andere Schlüssel gelten nur für bestimmte Arten. Steht einer bei der falschen Art, ist das ein Fehler.

Ein Layoutblatt mit Titelblock, Logo, Maßstabsleiste und Namensnennung (das Logo ist für dieses Beispiel gezeichnet). Karte: Remo Madella, MOO Challenge Berlin 2025.
Titelblock und Text
[[shared]]
id = "title"
kind = "title_block"
lines = ["{event}", "{date} · {organiser}", "1:{print_scale} · Äquidistanz {contour_interval}"]
anchor = { to = "map_frame", corner = "top_left", offset_mm = [2.0, 2.0] }
Ein Titelblock setzt die erste Zeile fett in 14 pt (size_pt ändert das, bis 200) und die übrigen in 9 pt. Ein text setzt alle Zeilen in 9 pt oder in size_pt. Beide stehen auf einem weißen Kasten mit 1 mm Rand; box_white = false lässt ihn weg. Die Schrift ist Arimo, dieselbe wie für Kartentexte.
In den Zeilen setzt das Programm diese Platzhalter ein:
| Platzhalter | wird zu |
|---|---|
{event} | event.title |
{date} | event.date, auf Deutsch „15.05.2027“, auf Englisch „15 May 2027“ |
{organiser} | event.organiser |
{print_scale} | Druckmaßstab des Layouts, ab fünf Stellen mit schmalem Leerzeichen: „4000“, „10 000“ |
{map_scale} | Maßstab der Karte |
{contour_interval} | map.contour_interval_m mit Einheit: „2 m“, „2,5 m“ |
{layout} | die Layout-ID |
{course} | auf einem Bahnblatt der Name der Bahn |
{length_km} | auf einem Bahnblatt die Länge der Bahn in Kilometern, ohne Einheit |
{climb_m} | auf einem Bahnblatt der Anstieg in Metern, ohne Einheit |
{controls} | auf einem Bahnblatt die Zahl der Posten |
Ein unbekannter Platzhalter, etwa ein Tippfehler wie {evnet}, bleibt so stehen und gibt einen Hinweis. Die vier Bahn-Platzhalter kennt das Programm überall, gefüllt werden sie aber nur auf Bahnblättern (Kapitel 8). Auf einem Layoutblatt bleiben sie leer, und check sagt das als Information.
Die IOF verlangt Maßstab und Äquidistanz auf jedem Blatt. Fehlt in allen Texten eines Layouts {print_scale} oder {contour_interval}, oder fehlt map.contour_interval_m, meldet check das.
Logo
[[shared]]
id = "club_logo"
kind = "logo"
file = "logos/verein.svg"
width_mm = 35.0
anchor = { to = "map_frame", corner = "top_right", offset_mm = [2.0, 2.0] }
width_mm ist die Breite auf dem Papier, höchstens 2000; die Höhe folgt aus dem Seitenverhältnis. Das Programm nimmt PNG, JPEG und SVG:
- PNG und JPEG bleiben Pixelbilder, ein PNG behält seine Transparenz. Für den Druck sollte das Bild etwa 300 Pixel je Zoll haben, für 35 mm Breite also rund 400 Pixel.
- SVG wird zu Flächen und Linien in CMYK und bleibt in jeder Größe scharf. Das ist die beste Wahl, wenn das Logo nur aus Flächen, Linien und Verläufen besteht.
Nicht jedes SVG lässt sich drucken. Ein SVG kann viel mehr als Formen: Masken, Filter, Muster, eingebettete Bilder, Schrift, Stilvorlagen. Manche Dateien nutzen das, um mit wenigen Kilobyte Minuten an Rechenzeit oder Gigabyte an Speicher zu verlangen. Deshalb nimmt das Programm nur eine feste Liste einfacher Elemente an: svg, g, path, rect, circle, ellipse, line, polyline, polygon, defs, linearGradient, radialGradient, stop, use, title, desc, metadata und clipPath (nur in Nutzerkoordinaten). Enthält ein Logo etwas anderes, lässt das Programm es weg und meldet das. Typische Gründe:
- Text als
<text>: Wandeln Sie die Schrift in Pfade um (Inkscape: „Pfad › Objekt in Pfad umwandeln“, Illustrator: „Schrift › In Pfade umwandeln“). - Masken, Filter, Schatten, Muster, eingebettete Pixelbilder, Stilvorlagen in
<style>: Speichern Sie das Logo ohne diese Effekte. - Eine Dokumenttypdeklaration (DTD), die mehr enthält als Kommentare und kurze Text-Entitäten, wie Illustrator sie schreibt.
- Zu groß oder zu tief verschachtelt: über 10 MB, über 20 000 Pfadsegmente, über 256 Ebenen.
Die Meldung rät dann, das Logo als einfaches SVG zu exportieren, in Inkscape etwa mit „Speichern unter › Normales SVG“. Den Rest des Blatts druckt das Programm trotzdem.
Was das Blatt nicht genau so zeichnen kann, wie das SVG es beschreibt, zeichnet es vereinfacht und meldet es: ein Verlauf erscheint in seiner ersten Farbe, Transparenz wird deckend, Strichelung wird durchgezogen, und Beschneidungspfade wirken nicht. Ein PNG oder JPEG über 25 Megapixel oder über 65 535 Pixel Kantenlänge, eine Datei über 10 MB und eine fehlende oder kaputte Datei werden ausgelassen und gemeldet. Die genauen Grenzen stehen im Glossar unter „Logo“ und in ADR 0026.
Das Programm liest und dekodiert jede Logodatei einmal je check oder export, egal wie viele Elemente und Layouts sie nutzen, und das PDF enthält sie einmal. Ein Blatt trägt höchstens 50 Megapixel an PNG- und JPEG-Logos und 1 000 000 Einheiten SVG-Arbeit, jedes Logo so oft gezählt, wie es platziert ist. Ein Logo darüber hinaus fehlt mit einem Hinweis. Zwei Logos der größten erlaubten Größe passen; ein Vereinslogo von einigen hundert Pixeln braucht fast nichts davon.
Kontrollstrecke
[[shared]]
id = "scale_check_bar"
kind = "scale_check_bar"
anchor = { to = "map_frame", corner = "bottom_right", offset_mm = [2.0, 2.0] }
Ein schwarz-weißer Balken auf weißem Kasten, beschriftet etwa „200 m = 50 mm“. Seine Länge ist die größte runde Strecke (5, 10, 20, 50, 100, 200, 250, 500 oder 1000 m), die im Druckmaßstab höchstens 50 mm lang ist: 200 m bei 1:4000, 100 m (33,3 mm) bei 1:3000. Mit einem Lineal am Ausdruck sehen Sie, ob der Drucker skaliert hat (Kapitel 9).
Fußzeile: Quellenangaben und Namensnennung
Jedes Blatt hat unten links eine Fußzeile in 5 pt, auf einem weißen Kasten, damit nichts darunter sie verdeckt; unter dem Kartenausschnitt ist der Kasten weiß auf weißem Papier. Oben stehen die Quellenangaben, eine je Zeile, aus print.copyright oder aus den Kartennotizen. Darunter steht die Namensnennung „Erstellt mit freemapper-print – https://github.com/HenryJobst/freemapper-print“ (auf englischen Blättern „Created with …“). Die Namensnennung lässt sich nicht abschalten.
Die Fußzeile steht unter dem Kartenausschnitt, wenn sie dort ganz Platz hat. Sonst steht sie links unten im Kartenausschnitt, und check meldet, dass sie einen Teil der Karte abdeckt. An beiden Stellen nennt check jedes Element, das die Fußzeile abdeckt. Abhilfe: ein breiteres Passepartout (margin_mm) oder weniger Zeilen in print.copyright. Mehr als sechs Zeilen Quellenangaben zeigt das Programm nicht: fünf und eine sechste, die den Rest zählt. Eine Zeile, die breiter ist als der Kartenausschnitt, kürzt es mit „…“, und check nennt sie.
Ein Element copyright_line oder credit_line holt diesen Teil aus der Fußzeile und setzt ihn an seinen eigenen Anker, in 5 pt oder size_pt. Es verschiebt die Zeilen nur; die Namensnennung bleibt auf dem Blatt, auf einem eigenen weißen Kasten. Ein credit_line braucht mindestens 5 pt. Läge es nicht ganz auf dem Blatt, bleibt die Namensnennung in der Fußzeile, und check meldet das. Die Namensnennung wird nach allem anderen auf dem Blatt gezeichnet, kein Element kann sie verdecken.