Kochbuch mit LaTeX verfassen
Dienstag, 15.12.2009 um 17:20 UhrMoin liebe Lesergemeinde,
lang ist’s her, dass ich mal was von mir hören ließ. Deswegen soll es nun heute wieder eine Vorlage für LaTeX Liebhaber geben.
Vor einiger Zeit ist mir der Zettelwust in der Küche mit den Rezepten auf die Nerven gegangen, hier mal ein Rezept hingekritzelt, da mal vergessen, das Rezept zu benennen und man weiß nicht mehr was man da eigentlich kochen wollte. Da kam ich auf die Idee das ganze mit einem eigenen Design zu digitalisieren und damit zu ordnen und vor allem auch durchsuchbar zu machen – die Idee zu einem eigenen Kochbuch war geboren.
Da ich nunmal ein Liebhaber von LaTeX bin, lag der Schluss nahe, ein Kochbuch in LaTeX zu verfassen. Zumal mir Word/OpenOffice/Scribus eher ungeeignet dafür erschienen, da man hier auch mit Vorlage immer noch formatieren muss.
Es gibt bereits einige Kochbuchklassen in einigen LaTeX Paketen, jedoch hat mir sowohl der Aufbau des Kochbuches als auch der Quelltext für ein Rezept nicht gefallen. So habe ich mir meine eigene Rezeptumgebung zusammen programmiert. Da ich bisher mit richtiger LaTeX-Programmierung sehr wenig am Hut hatte (und trotz viel Übung immer noch habe) hat das Ganze doch geraume Zeit gedauert. Nun möchte ich euch das Ergebnis präsentieren.
Hier gibt’s erstmal das Paket zum Download: Kochbuch Vorlage
So sieht ein Beispielrezept aus:
Wenn das Zip Archiv entpackt wird, befinden sich mehre Dateien und Ordner darin. Die PDF im Hauptordner ist eine vorkompilierte Beispieldatei. In die Ordner ./bilder/ und ./rezepte/ kommen jeweils die Bilder für die Rezepte und die jeweiligen Tex-Dateien für jedes einzelne Rezept. Die cook.sty im Hauptordner ist meine Style-Datei, die alle notwendigen Befehle und Umgebungen für mein Rezeptbuch beinhaltet. Diese muss sich immer in dem selben Ordner wie die cookbook.tex (Hauptdokument) befindet.
Öffnet man dieses Hauptdokument (cookbook.tex) ist das in dem Beispiel sehr übersichtlich. Je mehr Rezepte, desto länger wird auch dieses Dokument. In der zweiten Zeile der cookbook.tex sieht man wie die Style-Datei (cook.sty) eingebunden wird. In den folgenden Zeilen werden verschiedene Schriftarten für abwechslungsreiche Rezeptüberschriften geladen. Will man dies nicht, können diese Zeilen auskommentiert/gelöscht werden. Im Allgemeinen ist für die Nutzung der Schriftarten das Paket texlive-fonts-extra nachzuinstallieren. Nach den Schriftarten erfolgt die Deklaration der PDF Metadaten und der Titelseite.
Will man sein Rezeptbuch in verschiedene Kategorien unterteilen, kann man das wie in der Datei zu sehen, wie gewohnt mit den \section-Befehlen tun. Bei zweiseitigem Druck ist darauf zu achten, wie Titelseiten und Rezeptbeginn angeordnet sind (meistens auf der ungerade Seite). Mit \newpage kann man entsprechende Leerseiten einfügen. Rezepte werden an der entsprechenden Stelle mit dem Befehl \input{./rezepte/….tex} eingebunden.
Im Ordner ./rezepte/ liegt bereits ein Beispiel Rezept, wie es aussehen könnte.
Die Datei dummy.txt im Hauptordner des Kochbuchs listet alle Befehle mit ihren Parametern/Optionen auf. Diese Datei ist sehr wichtig, wenn man sein Kochbuch weiter individualisieren will (Bilder, mehrseitige Rezepte, Tipps, Anmerkungen, etc.). Ich bitte darum diese Datei aufmerksam zu lesen.
Bevor ihr eigene Rezepte in das Kochbuch einfügt, solltet ihr überprüfen, ob alles einwandfrei funktioniert. Eventuell sind einige Pakete nachzuinstallieren. Ich habe eine vollständige Textlive Distri installiert, so dass ich nicht weiß, welche Pakete in einer Standardinstallation über die Ubuntuquellen nicht enthalten sind. Sollte es nicht funktionieren, könnte es helfen im Hauptdokument alle Schriftarten und im Beispielrezept den optionalen Parameter in der Rezeptdeklaration >>[font=\rustfamily]<< zu entfernen.
Viel Spaß beim Testen, weitere Anregungen/Fehler/Lob bitte in die Kommentare


Das ist ja fast Gedankenübertragung. Ich hatte auch schon mal die Idee doch mal die lose Blattsammlung in der Küche in ein schön ordentlich aufgeräumtes LaTex Dokument zu verwandeln. Bei der Suche nach geeigneten Paketen hatte ich aber noch nichts zufrieden stellendes gefunden. Das scheint sich jetzt erledigt zu haben. Danke.
Du hast einen Rechtschreibfehler in der Headline “verfasseM”;-)…die Idee klingt interessant.
Hi,
den Artikel finde ich genial. Das Kochbuch werde ich auf jeden Fall mal ausporbieren. Es hat sich allerdings ein kleiner Rechtsschreibfehler eingeschlichen.
Das Paket heißt “texlive-fonts-extra”. Dir ist da ein “t” zu viel reingerutscht.
Hallo,
ewig habe ich gesucht nach einer Möglichkeit meine Rezeptsammlung zu verwalten. Habe mich jetzt entschieden, das mit OpenOffice als einfaches TextDokument zu machen. Aber noch ist vielleicht nichts verloren……da ich aber noch nie in meinem leben mit Latex gearbeitet habe, stellt sich für mich die Frage, ob Deine Lösung “dynamnisch” ist, ich also wann immer mir danach ist Rezepte einfügen kann, oder ob das mehr so eine einmalige Sache ist. Und ich dann wieder 5 Jahre Zettel sammele und mir eine 2 Latex version schraube..;-) ?
@Marcus: natürlich kannst du nach Belieben Rezepte einfügen oder umsortieren oder was auch immer. Jedes Rezept wird in einer eigenen Datei gespeichert und im Hauptdokument mit einem \input Befehl eingebunden. Das input kannst du natürlich setzen wann und wohin du auch immer willst. Sollte also kein Problem sein. Falls du nicht klar kommst sag Bescheid.
Danke auch! Sowas suche ich schon seit einer ganzen Weile.
Hi. Danke für den Post, das könnte ziemlich genau sein was ich brauche.
Allerdings bekomme ich die cookbook.tex nicht kompiliert, irgendwie scheint pdflatex nicht so anzuspringen wie gewünscht.
Ich nutze allerdings auch eh Kubuntu 9.04, hoffe es liegt nicht an unterschiedlichen Versionen.
Kann ich dir die log mal schicken oder posten, vielleicht liest du was raus?
Gruß
Hallo,
Klasse Vorlage ! Genau das habe ich gesucht.
Ein kleines Problem habe ich allerdings, das ich noch nicht selbst lösen konnte:
Bei manchen Rezepten ist die Zutatenliste länger als der Zubereitungstext. Dann wird kein Seitenumbruch erzeugt. Bisher konnte ich mir nur damit behelfen, die Seitengröße auf z.b. Din A4 zu ändern, oder den Zeilenabstand in der Zutatenliste zu verkleinern… Leider geht das dann zur Last der Optik.
Falls es möglich ist, auch bei der Zutatenliste einen Umbruch zu erzeugen würde ich mich über etwas Hilfestellung sehr freuen.
Viele Grüße
Julian
Das geht relativ einfach. Am Beispiel des im Paket mitgelieferten Beispielrezeptes (Buletteneintopf) kann ich dir das gerne zeigen (Rezept gekürzt):
\begin{recipe}[font=\rustfamily]{Buletteneintopf}
\timerecipe{ca. 1}
\personcount{4}
\ingredient{100 ml Milch}
\step
Toast würfeln.
\step
Hack, Speck, Ei, …
\step
Restliche Frühlingszwiebeln …
\recipenewpage
\ingredient{2 Scheiben Toastbrot oder}
\ingredient{1 Brötchen}
\step
Gurken in…
\step
Buletten zugeben. …
\graphic{./bilder/buletteneintopf.jpg}
\end{recipe}
Du machst also einfach mit \recipenewpage eine neue Rezeptseite und beginnst dann wieder mit Zutaten. Schon sind die auf der nächsten Seite.
Hallo,
ich schließe mich den anderen an: dies ist eine sehr gute Idee.
Da ich nur rudimentäre Kenntnisse von LaTeX habe, möchte ich noch zwei Fragen stellen:
1. wie kann ich bei den Zutaten die Kursivschrift behalten, aber das Unterstreichen weglassen?
2. ebenfalls bei den Zutaten, was muß ich dort tun, damit ca. 1 Stunde (also im Singular) und nicht ca. 1 Stunden (wie jetzt) gedruckt wird.
Danke für eine Antwort, wobei Frage 2 natürlich ziemlich pedantisch ist.
@Andreas:
zu 1. das ist nur in der cook.sty änderbar. Dazu öffnest du diese im Editor und gehst zur Zeile 149:
\underline{\textit{#1}}\\[.2cm]% Zutat kursiv und unterstrichen hinzufügen
Diese änderst du wie folgt (achte auf die korrekte Anzahl an geschweiften Klammern):
\textit{#1}\\[.2cm]% Zutat kursiv hinzufügen
zu 2.
Dies ist einfacher zu lösen:
\timerecipe[Stunde]{1}
In den eckigen Klammern ist ein optionaler Parameter. Es geht als zB auch in Minuten auszudrücken.
\timerecipe[Minuten]{54}
Schaue bitte in die dummy.txt. Dort sind alle Parameter und optionalen Möglichkeiten erklärt
Nochmals hallo,
ich ziehe Frage 2 zurück. Hab’s selbst rausgefunden, nachdem ich Dummy.txt genau gelesen habe. Die Zeile im Rezept muß dann lauten:
\timerecipe[Stunde]{ca. 1}
und noch ein drittes Hallo,
vielen Dank für die schnelle Anwort. Ich hatte bei meiner zweiten Mail gar nicht an den Anfang geschaut, weil ich noch nichts vor Dir vermutet hatte.
Dein Hinweis mit den geschweiften Klammern war auch richtig, denn ich hatte vorher schon mal genau die Lösung probiert, allerdings ohne die schließende Klammer von underline zu löschen.
Nochmals Danke und weiterhin guten Appetit!
Hi,
Ich wuenschte ich koennte so gut Latex programmieren wie du;
SChoen gemacht. Leider habe ich andere Vorstellungen was den Style betrifft und muss vermutlich selber was basteln. Wuerdest du mir verraten wie ich die wenigen “Kochbuchklassen in einigen LaTeX Paketen” finden kann?
@Sonja:
Paketname: cuisine, Doku: http://mirror.ctan.org/macros/latex/contrib/cuisine/cuisine.pdf
Paketname: cooking, Doku: http://mirror.ctan.org/macros/latex/contrib/cooking/cooking.pdf
Einbinden tust du die Pakete zB mit \usepackage{cooking}
Ich hoffe da ist was dabei, was du gut findest (Sind jetzt nur zwei auf die Schnelle). Geschmäcker sind halt verschieden
Moin Moin!
an aller erster stelle einen riesen dank für die schöne Vorlage!!
und dann auch gleich fragen über fragen: ich bin entweder zu dusselig oder deine vorlager “verarscht” mich
ich bekomme es bei “twosided” nicht hin, dass das Rezept auf linken (graden) und das entsprechende Bild auf der rechten (ungraden) seite ist … einfügen von leerseiten (wie auch immer realisiert) bringt nicht das gewünschte ergebnis, da dann nicht nur eine leere seite sondern 2 eingefügt werden ….. bin ratlos …
ist irgendwo evtl. deklariert, dass rezepte immer auf ungeraden seiten beginnen?? konnte dazu leider nichts finden ….
wäre für hilfe sehr dankbar, mag auch einfach sein, dass ich den Wald vor lauter Bäumen nicht sehe …
grüße und vielen dank
Christian
Hallo,
Vielen Dank für diese schöne Kochrezepte – Vorlage: so macht nicht nur Kochen, sondern auch Rezepteschreiben Spaß
Einfach, flexibel, schnell und dann noch – dank LaTeX – ein perfekter output!
Eine Frage habe ich doch noch: bei mir verarbeitet ein ‘pdflatex cookbook.tex’ leider nicht die hyperref – Anweisungen (genauer: Titel, Autor). Kann mir jemand einen Tipp geben woran das liegen könnte; benutze ubuntu 9.10 mit:
pdfTeX using libpoppler 3.141592-1.40.3-2.2 (Web2C 7.5.6)
Ansonsten benutze ich LyX als frontend – dort funktioniert es (bei anderen Dokumentenklassen).
Nochmals vielen Dank für dieses “leckere Teil”
.
Hi, finde die Vorlag sehr schön. Habe schon ein wenig Erfahrung mit LaTeX aber das Problem, dass die Umlaute anders dargestellt werden. Habe die Pakete:
\usepackage{german}
\usepackage[latin1]{inputenc}
am Beginn des Skripts eingebunden – funktioniert aber nicht. Ich arbeite auf einem APPLE. Habe bis jetzt schon Briefe entworfen und dieses Problem bis jetzt noch nicht. Was könnte ich da machen?
Vielen Dank – hoffe die Frage ist nicht zu dumm
@Erwin – nutze ngerman als paket
und ich weiß nicht wie die standardkodierung bei apple aussieht, aber bei linux sollte man utf8 anstatt latin1 angeben
Sehr schöne Kochbuch-Vorlage, gefällt mir um Längen besser als cuisine oder cooking. Ich habe leider das Problem, dass bei längeren Rezepten die Überschrift auf einer Extraseite landet und der Rest des Rezepts dann auf der nächsten. Ich fände einen globalen Parameter nett, bei dem man die Schriftgröße für das gesamte Buch festlegen kann. So hätten dann auch längere Rezepte Platz und müssten nicht zerschnitten werden.
Ach schon gut, ich bin ja auch zu blöd. Latex-Grundwissen. Zeile 1 von \documentclass{scrartcl} in \documentclass[10pt]{scrartcl} ändern, dann passt es. Überschriften werden dann ja automatisch angepasst.
Schön dass du es selber herausgefunden hast ^^
Hallo! Vielen Dank Der Beginn muss so aussehen (vielleicht kann das ja noch jemand brauchen)
\documentclass{scrartcl}
\usepackage[ngerman]{babel} % deutschsprachig
\usepackage[latin1]{inputenc} % latin1 encoding
\usepackage[T1]{fontenc} % Schriftkodierung
Für die Umlaute im Beispiel müssen die ganzen Wörter neu geschrieben werden sonst gibt es Fehler.
Herzlichen Dank für die Hilfe und die tolle Vorlage
Erwin
Danke sehr, nach unserem Erasmusjahr sind wir grade dabei, alle Rezepte zu organisieren. Deine Idee und vor allem die Realisierung ist super!
Vielen Dank für Deine Arbeit! Sehr schön geworden. Wollte mich gerade ransetzen, und habe Deine Vorlage gefunden. Das hat mir einige Stunden erspart.
Hallo,
auch von mir ein Lob für die tolle Vorlage. Ich fände es ein bisschen schöner, wenn die Zutatenliste rechts auf der Seite und die Zubereitungsschritte links stehen würden. Gibt es da eine einfache Umsetzung für? Habe ein bisschen mit den minipages in der cook.sty rumgespielt, aber leider noch kein gutes Ergebnis erzielt.
Danke für die Hilfe!
Anne
Hallo Anne,
leider ist das nicht ganz so einfach, man muss da ganz schön mit den minipages rumeiern. Ich versuche gerade das hinzubiegen. Werd mich wieder melden, wenn ich was rausgefunden hab.
Hallo, ich probiere auch gerade die schöne Vorlage aus, bekomme aber unter Miktex und Texlive keine Umlaute in den vorgeschlagen Schriften für die Überschriften. Es kommt da immer ein “Missing character: There is no in font sqrc17!” Haben die Schriften tatsächlich keine Umlate?
Vielen Dank
Ja es gibt einige Schriftarten ohne Umlaute. Du musst auch darauf achten, dass Miktex deine Dateien als UTF8 speichert. Sonst kommt er völlig durcheinander.
Ok, Danke für die Antwort. Meine Dateien sind auf jeden Fall UTF-8. Bei den Umlauten behelfe ich mit mit einem kleinen “E” über den Buchstaben:
\raisebox{5mm}{\hspace{-0.38em}\small e\hspace{0.38em}}
Gibt es dafür eine elegantere/allgemeinere Lösung, die die Breite des entsprechenden Buchstabens einbezieht?
Hallo
Ich finde die Darstellung super, vielen Dank. Nur leider kann ich das Dokument nicht erstellen. Ich kriege immer den Fehler GUI framework cannot be initialized. Ich arbeite mit Texniccenter. Hat jemand eine Idee an was das liegen könnte? Das Paket cook hat mein Miktek nicht gefunden und deshalb habe ich es von Hand integriert.
Danke
Hallo ‘mano’, Hilft dir das weiter:
http://www.miktex.org/2.8/issues (erster Punkt)
Hallo Georg
Danke für deine Antwort. Das habe ich schon versucht.. Geht nicht. Ich habe anschliessend es anschliessend manuell versucht (http://www.emath.de/Mathe-Board/messages/4096/28653.html?1270666779). Und irgendwie hat er das Paket cook aber trotzdem nicht gefunden. Kann Texniccenter nicht anzeigen welches Paket genau fehlt?
Danke
Ich kenn’ mich mit Texniccenter nicht mehr so gut aus – nehme TexMakerX. Das Paket ‘cook’ gibt es halt nicht in den Paketquellen also laß es erst mal im Pfad neben der Hauptdatei. So läuft es bei mir problemlos auch mit mit TC 1.0 RC1. Schon mal auf der Kommandozeile getestet?
Das Paket ist neben der Hauptquelle und wird auch geladen, aber das PDF wird nicht erstellt (bei anderen Dateien habe ich dieses Problem nicht!). Wie könnte ich dies von der Kommandozeile aus testen? Wie in meinem link angegeben oder anders? Vielen Dank
Ich habe versucht das file von der Kommandozeile aus zu starten und er lädt die Pakete, aber irgendwo ist ein Fehler drin. Alles beendet, aber wenn ich das Tex file dann vom Texniccenter aus starte kommt immer dieselbe Fehlermeldung!
Wenn ich es erneut versuche lädt er alle Pakete erneut – ist dies normal? Sollte er nicht die Pakete installieren und beim nächsten Durchgang nicht mehr laden müssen?
Sorry, aber ich habe das gleiche Prozedere mit einer anderen Datei gemacht – welche zuvor wegen mangelnden Paketen ebenfalls nicht funktionierte – und diese funktioniert nun. Hat jemand eine Idee? Ich würde wirklich sehr gerne mit dieser Datei arbeiten, aber ich weiss nicht was falsch läuft. Vielen Dank
Ich hatte dieses Phänomen mal bei einem einzigen Paket. Ich habe es mir dann von CTAN geholt und von Hand installiert. Hört sich eher wie ein Problem bei der Miktex-Installation an. Idee: Pakete über Paketmanager (Admin/User) installieren.
Ok. Nur damit ich das richtig mache. Kannst du mir erklären, was das genau heisst “von Hand installieren”. In welche Ordner muss ich die Pakete genau einordnen. Und wie weiss ich genau welche Pakete ich installieren muss? Ich sehe in der Kommandozeile viele Pakete, welche in Texniccenter nicht auftauchen, also irgendwo in den .sty files versteckt sind..
Vielen Dank
Hallo.
Das ist eine wundervolle Rezeptvorlage. Ich nutze sie ausgiebig.
Gibt es einen Trick, dass wenn das Rezept mit \recipenewpage mehrseitig wird, dass auf den weiteren Seiten nicht mehr Zubereitungszeit und Personenanzahl auftauchen?
Grüße
@Britta:
Ich fühle mich geehrt, dass die Vorlage auf soviel Anklang stößt.
Und ja, es ist relativ einfach, allerdings musst du in 2 Zeilen der cook.sty was ändern.
Kurze Anleitung:
Wir führen für den Befehl \recipenewpage einen optionalen Parameter ein. Das geht in der cook.sty, dort suchst du die Zeile:
\newcommand{\recipenewpage}{%
und änderst diese in
\newcommand{\recipenewpage}[1][0]{%
Etwas weiter unten in der selben Umgebung steht dann ein:
\ingredient{Fortsetzung:}%
Davor fügst du einfach noch eine neue Zeile mit dem folgenden Inhalt ein:
\ifthenelse{\equal{#1}{0}}{\personfalse\timerecipefalse}{}
Das war’s. Jetzt erscheinen keine Infos mehr auf der zweiten Seite. Willst du die Anzeige der Zeit/Personenanzahl bei bestimmten Rezepten wieder anzeigen lassen, dann einfach im Rezept \recipenewpage[1] schreiben.
Grüße
Ich habe nun versucht die Pakete von Hand zu installieren, aber einige konnte ich nicht finden. Namentlich: egothic,pbsi, inslrmin, rotunda und rustic. Weiss jemand, wo man die erhält? Ich bin aber trotzdem weitergekommen und falls ich nun das Rezept nicht integriere wird auch ein PDF kreiert. Weiss jemand woran das liegen könnte?
Vielen Dank
Und es hat geklappt!!! Ich möchte aber doch noch eine kleine Frage stellen. Ich habe nun das File mit dem winEDT geöffnet, dieser hat noch ein paar Pakete geladen (leider konnte ich nicht sehen welche) und nun funktioniert alles!
Darüber freue ich mich natürlich sehr, aber wieso hat dies texniccenter nicht geschafft? Wäre froh, falls mir das jemand erklären kann. Aber erstmal kann ich mich nun an das Einbinden meiner Rezepte machen.
Vielen Dank noch einmal an den Autor.
Hallo
Ich habe gleich noch eine technische Frage: Kann ich das file so verändern, dass ich nicht bei jeder Section eine neue Seite habe, sondern dies lediglich links vom ersten Rezept steht, respektive in einer Kopfzeile?
Danke