Der kleine Affel Knufftuff ist ein liebevolles Familienbuchprojekt, das vor einigen Jahren spontan beim Zubettgehen entstanden ist, als unsere damals gerade mal zweijährige Lara sich von ihrem Papa eine Gute-Nacht-Geschichte wünschte. Zufällig lag ein kunterbunter Kuschelaffe in der Nähe des Bettes, der prompt zur Hauptfigur erklärt wurde. Dieser „Affel“, wie unsere kleine Lara damals immer fälschlicherweise zu „Affe“ sagte, erhielt den Namen Knufftuff und sollte mit ihr, später auch mit ihrem kleinen Bruder Dominik und schließlich sogar mit unserem Jüngsten, Julian, wilde Alltagsgeschichten erleben.
Zusammen mit unseren Kindern haben wir uns immer neue Geschichten ausgedacht, diese teilweise wieder verworfen, teilweise aber auch mehrmals überarbeitet, bis wir alle mit ihnen zufrieden waren. Daraus ist schließlich dieses schöne Kinderbuch entstanden, mit Lara, Dominik und Baby Julian in der „Original-Version“.
Das Besondere an diesem Vorlesebuch ist zudem, dass man es personalisieren lassen kann, also über die Anzahl der Kinder, die Geschlechter und die Namen selbst entscheiden kann. Somit bekommt es einen ganz persönlichen Charakter und eignet sich schön als individuelles Geschenk für Kindergartenkinder und deren Eltern – ganz besonders auch als Geschenk für den frisch gebackenen großen Bruder bzw. die frisch gebackene große Schwester zur Geburt eines kleinen Geschwisterchens.
Wie die personalisierte Version entsteht
Ab hier geht es technisch weiter, für alle, die sich dafür interessieren 🙂
Wie sieht der Quelltext aus?
Das gesamte Buch ist in Latex geschrieben und besteht aus mehreren Dateien (mind. für jedes Kapitel eine eigene Datei). Und wird mit dem Programm pdflatex erstellt.
Dabei wird für jedes einzelne Buch eine Kopie des Originalbuches erzeugt, in der dann tatsächlich gearbeitet wird:
String line = String.format("/usr/bin/rsync -av --no-owner --no-group /opt/affel/book/ %s", bookPath);
log.info(" - exec: " + line);
ExceutorService.executeCommand(line, bookPath);
Danach wird die Widmung, die ebenfalls personalisiert werden kann erzeugt.
\\ThisLRCornerWallPaper{1.0}{illustrations/widmung.jpg}
\\vspace*{2.6cm}
\\begin{addmargin}[2.5cm]{2.5cm}
\\begin{center}
\\Large \\textbf{Widmung}\\\\
\\vspace*{1.0cm}
\\footnotesize
${widmung}
\\end{center}
\\end{addmargin}
\\newpage
Wer es vielleicht übersehen hat, die Widmung wird dort eingesetzt, wo oben ${widmung} steht.
Im nächsten Schritt werden die tatsächlichen Namen über Latex-Variablen für das Buch verfügbar gemacht:
\newcommand{\Kinderzahl}{2}
\newcommand{\Baby}{ja} % nein
\newcommand{\GeschlechtLara}{Maedchen} % "Maedchen" oder "Junge"
\newcommand\NLara{\namescolor{Lara}} % Name wie "Lara geht"
\newcommand{\GeschlechtDominik}{Junge} % "Maedchen" oder "Junge"
\newcommand\NDominik{\namescolor{Dominik}} % Name wie "Dominik geht"
\newcommand{\GeschlechtJulian}{Junge} % "Maedchen" oder "Junge"
\newcommand\NJulian{\namescolor{Julian}} % Name wie "Julian geht"
% Lange Namen für Titel und Charakterbeschreibung
\newcommand\NLangLara{\namescolor{\NLara{}}}
\newcommand\NLangDominik{\namescolor{\NDominik{}}}
\newcommand\NLangJulian{\namescolor{\NJulian{}}}
Damit kann dann Latex das Buch entsprechend personalisiert erstellen. Hier ein Auszug aus dem Latex-Quelltext:
Vorher muss ich dir doch erst von \NLara{} erzählen.
\NLara{} ist \ifBaby{im Moment noch das}{das} einzige Kind von Mama
und Papa und wie du dir sicher vorstellen kannst, sind beide wahnsinnig
stolz auf \ifLara{sie}{ihn}.\\ Aber das ist ja auch kein Wunder.
Schließlich kann \NLara{} so konzentriert spielen, dass
\ifLara{sie}{er} nicht einmal hört, wenn Mama und Papa schon
zum fünften Mal zum Essen rufen.
Der Bestellprozess
tbd.
Wie kommen die Namen auf das Cover
Ich benutze hier imagemagick und habe für die Webanwendung, die das Buch erstellt, ein Bash-Skript geschrieben:
#!/bin/bash
# ==========================
# This file is needed that the website can add the character names to the cover
# ==========================
value=$(<cover/coverNames.txt)
echo "createCoverNames.sh will now create coverNames.png with $value";
$1 -size 500x120 -background transparent -fill "#2d6ea0" -font cover/LucidaGrandeBold.ttf -gravity center caption:"$value" cover/coverNames.png