freemapperEnglish

Handbuch › freemapper-print

5. Eine Veranstaltung anlegen

Zu jeder Veranstaltung gehört ein Ordner mit einer Projektdatei, freemapper-print.toml. Darin stehen die Veranstaltung, die Karte, die Layouts und die Blattelemente. Ohne Bahndatei druckt das Programm die Karte mit Titel, Logos und Kontrollstrecke. Mit einer Bahndatei druckt es ein Blatt je Bahn, mit Bahnaufdruck (Kapitel 8).

Der Ablauf hat drei Befehle:

  1. init legt die Projektdatei an.
  2. Sie bearbeiten die Datei mit einem Texteditor und rufen check auf, bis die Blätter so aussehen, wie sie sollen.
  3. export schreibt je Layout ein PDF, bei einem Projekt mit Bahndatei je Bahn eines.

Das Beispiel examples/rummelsburg-competition-layouts zeigt den ganzen Weg mit allen Befehlen und Ausgaben.

Die Projektdatei anlegen: init

freemapper-print init stadtsprint --map karten/rummelsburg.omap --title "Stadtsprint Rummelsburg"

Das legt den Ordner stadtsprint an, falls es ihn noch nicht gibt, und darin freemapper-print.toml. Eine vorhandene Projektdatei überschreibt init nicht. Den Pfad zur Karte speichert die Datei relativ zu sich selbst. Sie können den Ordner also verschieben, solange die Karte mitwandert.

Die neue Datei enthält:

  • den Titel aus --title, ohne die Option den Dateinamen der Karte;
  • die Kartenart. Sie kommt aus --kind, sonst aus der freemapper.toml neben der Karte, sonst aus dem Symbolsatz und dem Maßstab der Karte, und init sagt, woher. Findet das Programm keine, bricht es ab und fragt nach --kind sprint, --kind schoolyard oder --kind forest;
  • eine Äquidistanz. Nennt die freemapper.toml neben der Karte eine (freemapper schreibt sie, wenn sie von der Standardäquidistanz der Kartenart abweicht), übernimmt init sie. Sonst schlägt es eine vor: 2 m für Sprintkarten, 5 m für Waldkarten, keine für Schulhofkarten. Ein Kommentar in der Datei sagt, welcher der beiden Fälle es ist. Sehen Sie auf der Karte nach, welche Äquidistanz sie hat, und korrigieren Sie sie;
  • einen Titelblock mit {event} und 1:{print_scale} · {contour_interval} oben links im Kartenausschnitt und eine Kontrollstrecke unten rechts;
  • ein Layout im Maßstab der Karte. init probiert A4 mit 8 mm Passepartout, dann A4 mit breiterem Passepartout (in Schritten von 2 mm bis 24 mm), dann A3 und nimmt das erste Blatt, auf dem check nichts zu melden hat. Die Karte Rummelsburger Bucht ist ein Streifen, der auf kein A4- oder A3-Blatt passt. Passt keines, bleibt die Datei bei A4 mit 8 mm; init beginnt seine Meldung dann mit „Warnung:“ und zeigt, was check melden wird.

Die Blattsprache, also die Sprache von Datum, Dezimalzeichen und Namensnennung auf dem Blatt, setzt init auf die Programmsprache. Sie steht in event.lang.

Die Projektdatei

Die Datei ist TOML. Jede Zeile hat die Form schlüssel = wert, Abschnitte stehen in eckigen Klammern. Ein Schlüssel, den das Programm nicht kennt, ist ein Fehler mit Datei, Zeile und Spalte, damit ein Tippfehler nicht still übergangen wird. Ein Wert außerhalb seines Bereichs ist ein Fehler mit Zeile und Spalte des Werts. Pfade gelten relativ zur Projektdatei.

format = 1

[event]
title = "Stadtsprint Rummelsburg"
date = 2027-05-15                  # optional, für {date}
organiser = "OL-Verein Musterstadt" # optional, für {organiser}
lang = "de"                        # Blattsprache: de oder en, Standard de

[sources]
map = "rummelsburg.omap"

[map]
kind = "sprint"                    # sprint, schoolyard oder forest
contour_interval_m = 2.0           # Äquidistanz in Metern, für {contour_interval}

[print]
copyright = """
Karte: Rummelsburger Bucht, Remo Madella, MOO Challenge Berlin 2025
"""                                # optional, ersetzt die Quellen aus der Karte

[[shared]]                         # gemeinsame Blattelemente, Kapitel 7
id = "title"
kind = "title_block"
lines = ["{event}", "1:{print_scale} · Äquidistanz {contour_interval}"]
anchor = { to = "map_frame", corner = "top_left", offset_mm = [2.0, 2.0] }

[[layouts]]                        # ein oder mehrere Layouts, Kapitel 6
id = "a4-4000"
paper = "A4"
print_scale = 4000
AbschnittSchlüsselBedeutung
obenformatimmer 1. Eine andere Zahl lehnt das Programm ab und nennt die Version, die es kennt.
[event]titleName der Veranstaltung, für {event}
dateDatum als JJJJ-MM-TT ohne Anführungszeichen, für {date}
organiserAusrichter, für {organiser}
langBlattsprache de oder en: „15.05.2027“ oder „15 May 2027“, „2,5 m“ oder „2.5 m“, „Erstellt mit“ oder „Created with“
[sources]mapPfad zur OOM-Karte (.omap)
[map]kindKartenart: sprint, schoolyard oder forest. Sie bestimmt, wie die Symbole bei einem anderen Druckmaßstab wachsen (Kapitel 9) und wie weit Nordlinien auseinanderliegen.
contour_interval_mÄquidistanz in Metern, größer als 0 und höchstens 100
[print]copyrightQuellenangaben, eine je Zeile. Ohne den Schlüssel nimmt das Programm die Kartennotizen.
rule_profileRegelprofil mit den Druckregeln, Vorgabe iof-print, zurzeit das einzige. Die Profile beschreibt crates/freemapper-printrules/rules/README.md in freemapper-core.
rule_overlaysAufsätze auf das Regelprofil, als Liste in der Reihenfolge, in der sie gelten. Vorgabe: keine.
[[shared]]ein gemeinsames Blattelement; der Abschnitt darf mehrfach vorkommen
[[layouts]]ein Layout; mindestens eines, beliebig viele

Prüfen: check

freemapper-print check stadtsprint

check nimmt die Projektdatei oder ihren Ordner. Es zeichnet jedes Layout im Speicher, schreibt aber keine Datei, und gibt je Layout eine Zeile mit Papier, Ausrichtung, Maßstab und Faktoren aus, danach die Hinweise. Zum Schluss steht „1 Layout geprüft, keine Hinweise.“ oder „Layouts mit Hinweisen: 1 von 2.“

Der Exit-Code ist 0, wenn kein Layout etwas zu melden hat, und 1, wenn eines einen Hinweis hat oder sich nicht zeichnen lässt. Zeilen, die mit „Zur Information:“ beginnen, für ergänzte Nordlinien und einen gewollten Beschnitt (map_frame.crop), zählen nicht. So kann ein Skript check vor export setzen. Ein Hinweis hält den Export nicht auf. Manche Hinweise sind gewollt, etwa der Überstand einer Karte, die größer ist als das Blatt. Kapitel 10 erklärt jeden Hinweis.

Die PDFs schreiben: export

freemapper-print export stadtsprint
freemapper-print export stadtsprint --layout a4-4000
freemapper-print export stadtsprint --out-dir ~/Desktop/druck

export schreibt je Layout ein PDF und benennt es nach der Layout-ID, etwa a4-4000.pdf. Ohne --out-dir landen die PDFs im Ordner out neben der Projektdatei, den das Programm bei Bedarf anlegt. Ein Ordner hinter --out-dir muss schon existieren. --layout exportiert nur dieses Layout und lässt sich wiederholen. Ein PDF gleichen Namens wird überschrieben.

Für jedes Layout gibt export dieselben Zeilen aus wie check, mit dem Pfad des PDFs in der ersten. Die Layouts entstehen nacheinander, es liegt immer nur ein Blatt im Speicher. Der Exit-Code ist 0, sobald alle PDFs geschrieben sind, auch wenn es Hinweise gab.

Vor dem Schreiben prüft das Programm den freien Platz: Es braucht die Größe des PDFs und 50 MB Reserve. Das PDF entsteht zuerst als Teildatei (<Name>.pdf.….part) und bekommt erst seinen Namen, wenn es vollständig auf dem Datenträger steht. Ist der Datenträger voll, bleibt ein älteres PDF gleichen Namens unverändert, und es bleibt kein halbes PDF zurück; ebenso bei jedem anderen Fehler. Die Meldung nennt, wie viel Platz nötig und wie viel frei ist, oder dass der Datenträger das nicht meldet. Die Teildatei heißt <Name>.pdf.<Prozess-ID>.<Zähler>.part, zwei Exporte im selben Ordner teilen sie sich also nicht. export löscht Teildateien im Ordner out des Projekts, die älter als eine Stunde sind.

Ist out oder ein Ordner im Projekt, den Sie mit --out-dir angeben, ein Link aus dem Projektordner hinaus, schreibt das Programm nichts dorthin und meldet „Ein Link führt aus dem Projektordner hinaus“. Ersetzen Sie den Link durch einen echten Ordner. Ein --out-dir außerhalb des Projekts, auch auf einem anderen Laufwerk, funktioniert.

Stand: v0.11.0 · Quelle auf GitHub