Screen Readers (#53)

* add tikzcache

* ignore files

* add latexmkrc file

* Move figures to new files

* rename images

* Fix build commands

* Release as epub3 and mobi

* Add cover-image support

* use older epub

* Externalize all tables

* change gh actions command

* fix linux xargs rm
This commit is contained in:
Hendrik Kleinwaechter
2023-03-02 20:33:25 +01:00
committed by GitHub
parent 2691ecfa22
commit 6e97f9bbd0
54 changed files with 766 additions and 536 deletions

View File

@@ -15,7 +15,6 @@ jobs:
run: |
apk add make
cd book
make all
make release
- name: Release book on S3
uses: shallwefootball/s3-upload-action@master

View File

@@ -12,4 +12,4 @@ jobs:
run: |
apk add make
cd book
make all
make build_pdf

36
.gitignore vendored
View File

@@ -1,3 +1,4 @@
*.xbb
*.aux
*.fdb_latexmk
*.fls
@@ -12,3 +13,38 @@
book/book.out
.vscode/
book/book.synctex*
book/tikz-cache/*
book/bookch*
book/content.opf
book/output-epub
book/figures/*.png
book/figures/*.pdf
book/tables/*.png
book/tables/*.pdf
book/release/*
book/book.4ct
book/book.4tc
book/book.aux
book/book.bbl
book/book.bcf
book/book.blg
book/book.css
book/book.dvi
book/book.html
book/book.idv
book/book.lg
book/book.log
book/book.mobi
book/book.azw3
book/book.epub
book/book.ncx
book/book.out
book/book.pdf
book/book.run.xml
book/book.tmp
book/book.toc
book/book.xref
book/book*.html
book/book-epub/
book/book-mobi/
book/book-azw3/

View File

Before

Width:  |  Height:  |  Size: 785 KiB

After

Width:  |  Height:  |  Size: 785 KiB

View File

@@ -3,29 +3,7 @@ your dough into the oven. This is typically done after your
dough has gone through the bulk fermentation and proofing stage.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (heat_oven) {\footnotesize Heat oven to 230°C (446°F) for 30 minutes};
\node [block, right of=heat_oven, node distance=3cm] (score_dough) {\footnotesize Score your dough};
\node [decision, right of=score_dough, node distance=4cm] (decide_steam) {\footnotesize Choose your steaming method};
\node [block, below of=heat_oven, node distance=4cm] (inverted_tray_method) {\footnotesize Inverted tray method};
\node [block, right of=inverted_tray_method, node distance=3cm] (dutch_oven) {\footnotesize Dutch oven};
\node [block, right of=dutch_oven, node distance=3cm] (steam_injection) {\footnotesize Steam injection oven};
\node [block, below of=inverted_tray_method, node distance=3cm] (bake_30) {\footnotesize Bake dough for 30 minutes with steam};
\node [block, right of=bake_30, node distance=3cm] (remove_steam) {\footnotesize Remove source of steam};
\node [block, right of=remove_steam, node distance=3cm] (build_crust) {\footnotesize Build the crust};
\node [block, right of=build_crust, node distance=3cm] (finish_baking) {\footnotesize Stop baking 10-30 minutes later depending on crust preference};
\path [line] (heat_oven) -- (score_dough);
\path [line] (score_dough) -- (decide_steam);
\path [line] (decide_steam) -- (inverted_tray_method);
\path [line] (decide_steam) -- (dutch_oven);
\path [line] (decide_steam) -- (steam_injection);
\path [line] (steam_injection) -- (bake_30);
\path [line] (inverted_tray_method) -- (bake_30);
\path [line] (dutch_oven) -- (bake_30);
\path [line] (bake_30) -- (remove_steam);
\path [line] (remove_steam) -- (build_crust);
\path [line] (build_crust) -- (finish_baking);
\end{tikzpicture}
\includegraphics{figures/fig-baking-process.pdf}
\caption{A schematic visualization of the baking process using different sources of steam in a home oven.}
\label{fig:baking-process}
\end{figure}
@@ -41,22 +19,9 @@ Your dough starts to vertically rise. This is called oven spring.
Your bread starts to build a crust of gel like consistency. The crust is still
extensible and can be stretched.
\begin{table}[!htb]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|l|}
\hline
\textbf{°C °F} & \textbf{Stage} & \textbf{Description} \\ \hline
60 - 140 & Sterilisation & \begin{tabular}[c]{@{}l@{}}The temperature is too hot for your\\ microorganisms and they die\end{tabular} \\ \hline
75 - 167 & Gel building & \begin{tabular}[c]{@{}l@{}}A gel builds on the surface persisting\\ your dough's structure. It is still\\ extensible and can spring in the\\ oven\end{tabular} \\ \hline
100 - 212 & Water evaporates & \begin{tabular}[c]{@{}l@{}}Water begins to evaporate and\\ inflates your dough's alveoli\end{tabular} \\ \hline
118 - 244 & Acetic acid evaporates & \begin{tabular}[c]{@{}l@{}}The vinegary tasting acid starts\\ to evaporate. The sourness decreases\end{tabular} \\ \hline
122 - 252 & Lactic acid evaporates & \begin{tabular}[c]{@{}l@{}}The dairy tasting lactic acid begins\\ to evaporate. Sourness further decreases\end{tabular} \\ \hline
140 - 284 & Maillard reaction & \begin{tabular}[c]{@{}l@{}}The maillard reaction starts to deform\\ starches and proteins. The dough starts\\ browning\end{tabular} \\ \hline
170 - 338 & Caramelization & \begin{tabular}[c]{@{}l@{}}Remaining sugars begin to caramelise\\ giving your bread a distinct flavor\end{tabular} \\ \hline
\end{tabular}%
}
\caption{The different stages of the baking process and their impact on your bread}
\begin{table}[htp!]
\includegraphics[width=\textwidth]{tables/table-baking-process-stages.pdf}
\caption{The different stages that your dough undergoes during the baking process.}
\end{table}
At around 60°C (140°F) the microbes in your dough start to die.
@@ -194,7 +159,7 @@ would like a soft crust you can steam your dough all the
way.
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{baking-too-hot.jpeg}
\includegraphics[width=\textwidth]{baking-too-hot}
\caption{A submission by Karomizu showing a bread that has been baked
at too high a temperature or with too little steam. Note the large
pockets of air towards the crust. They are a typical indicator.}
@@ -241,27 +206,7 @@ created from the dough and water source stays
around your dough.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Place water tray and stone in oven};
\node [block, right of=init] (heat_oven) {\footnotesize Heat oven to 230°C (446°F) for 30 minutes};
\node [block, right of=heat_oven] (score_your_dough) {\footnotesize Score your dough};
\node [block, right of=score_your_dough] (spritz) {\footnotesize Spritz your dough with water};
\node [block, right of=spritz] (load_tray) {\footnotesize Place non-preheated inverted tray in oven};
\node [block, below of=load_tray, node distance=4cm] (load_doughs) {\footnotesize Load doughs into oven};
\node [block, left of=load_doughs, node distance=3cm] (load_water) {\footnotesize Place water in heated water tray};
\node [block, left of=load_water, node distance=3cm] (bake) {\footnotesize Bake 30 minutes or until core temperature is 92°C (197°F)};
\node [block, left of=bake, node distance=3cm] (remove_steam) {\footnotesize Remove steam source and top tray};
\node [block, left of=remove_steam, node distance=3cm] (finish) {\footnotesize Bake at least another 10 minutes or until crust has your desired color};
\path [line] (init) -- (heat_oven);
\path [line] (heat_oven) -- (score_your_dough);
\path [line] (score_your_dough) -- (spritz);
\path [line] (spritz) -- (load_tray);
\path [line] (load_tray) -- (load_doughs);
\path [line] (load_doughs) -- (load_water);
\path [line] (load_water) -- (bake);
\path [line] (bake) -- (remove_steam);
\path [line] (remove_steam) -- (finish);
\end{tikzpicture}
\includegraphics{figures/fig-inverted-tray-method.pdf}
\caption{A schematic visualization the inverted tray baking method that works great for home ovens.}
\label{fig:inverted-tray-process}
\end{figure}
@@ -315,20 +260,10 @@ crust color. In my case this is another 15-25 minutes typically.
\section{Conclusions}
\begin{table}[]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{Oven type} & \textbf{Plain (no tools)} & \textbf{Inverted tray} & \textbf{Dutch oven} \\ \hline
Gas & No & No & Yes \\ \hline
\begin{tabular}[c]{@{}l@{}}Convection\\ (Fan always on)\end{tabular} & No & No & Yes \\ \hline
\begin{tabular}[c]{@{}l@{}}Convection\\ (Fan can be disabled)\end{tabular} & No & Yes & Yes \\ \hline
Steam & Yes & Yes & Yes \\ \hline
\end{tabular}%
}
\caption{An overview of ovens and their different baking methods}
\end{table}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-oven-baking-overview.pdf}
\caption{An overview of different oventypes and their different baking methods}
\end{figure}
Depending on your home oven a different method
of steaming should be used. Generally most ovens

View File

@@ -11,6 +11,7 @@
\usepackage{float}
\usepackage[T1]{fontenc}
\usepackage{tocloft}
\usepackage{tex4ebook}
% References
\usepackage[backend=biber]{biblatex}
@@ -46,22 +47,14 @@
% Space between paragraphs
\usepackage[skip=5pt plus1pt, indent=0pt]{parskip}
% Define styles for the flow chart graphics
\definecolor{codeblue}{RGB}{69, 161, 248}
\usepackage{tikz}
\usetikzlibrary{shapes,arrows}
\tikzstyle{decision} = [diamond, draw, fill=codeblue, text=white,
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt]
\tikzstyle{block} = [rectangle, draw, fill=codeblue, text=white,
text width=5em, text centered, rounded corners, minimum height=4em]
\tikzstyle{line} = [draw, -latex']
\tikzstyle{cloud} = [draw, ellipse,fill=red!20, node distance=3cm,
minimum height=2em]
% Caption and figure size below images
\usepackage{caption}
\captionsetup[figure]{font=footnotesize}
% Basic attributes
\author{Hendrik Kleinwächter}
\title{The Sourdough Framework}
\begin{document}
% Title page

View File

@@ -7,21 +7,11 @@ the most accessible, least effort type of bread you can make.
If you are a busy person and/or don't have an oven this might
be exactly the type of bread you should consider.
\begin{table}[htp!]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|l|l|}
\hline
& \textbf{Flat bread} & \textbf{Loaf pan bread} & \textbf{Free standing bread} \\ \hline
\textbf{Cooking method} & Fire, pan, barbecue & Oven & Oven \\ \hline
\textbf{Working time in minutes} & 3 & 5 & 60 \\ \hline
\textbf{Flour types} & All & All & Gluten flours \\ \hline
\textbf{Difficulty} & Very easy & Easy & Difficult \\ \hline
\textbf{Cost} & Low & Medium & High \\ \hline
\end{tabular}%
}
\caption{\label{tab:bread-types-comparison}An overview of different bread types}
\end{table}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-overview-bread-types.pdf}
\caption{An overview of different bread types and their respective complexity}
\label{tab:bread-types-comparison}
\end{figure}
\section{Flat bread}
@@ -170,13 +160,7 @@ few steps you can stop buying bread forever. This works with
every flour, including gluten free options.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto, every node/.style={inner sep=10, outer sep=0}]
\node [block] (init) {Mix ingredients};
\node [block, right of=init, node distance=5cm] (wait) {Wait for dough to be ready};
\node [block, right of=wait, node distance=5cm] (bake_bread) {Bake bread on stove};
\path [line] (init) -- (wait);
\path [line] (wait) -- (bake_bread);
\end{tikzpicture}
\includegraphics{figures/fig-process-flat-bread.pdf}
\caption{The process of making a flat bread is very simple requiring very little effort. This
type of bread is especially handy for busy bakers.}
\label{fig:flat-bread-process}
@@ -187,23 +171,12 @@ I have little time or when I am abroad. You can choose
between two options. 1) A flat bread similar to a roti or naan bread
or 2) sourdough pancakes.
\begin{table}[htb!]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|l|}
\hline
& \textbf{Flat breads} & \textbf{Pancakes} \\ \hline
\textbf{Flour} & 100g & 100g \\ \hline
\textbf{Water} & 100g (100\%) & 300g (300\%) \\ \hline
\textbf{Sourdough starter} & 5-20g (5-20\%) & 5-20g (5-20\%) \\ \hline
\textbf{Salt} & 2g (2\%) & 2g (2\%) \\ \hline
\textbf{When bake?} & Dough increased 50 percent in size & Bubbles visible on surface \\ \hline
\end{tabular}%
}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-flat-bread-pancake-recipe.pdf}
\caption{\label{tab:flat-bread-ingredients}Flat breads or pancakes recipe for 1 person. Multiply the ingredients
to increase portion size. Refer to the section \ref{section:bakers-math} "\nameref{section:bakers-math}" to learn how
to understand and use the percentages properly.}
\end{table}
\end{figure}
To get started prepare your sourdough starter. If it has not been using for a very
long time consider giving it another feeding. To do so simply take 1g of your
@@ -240,7 +213,7 @@ when getting started. You can better observe the dough and see when
it is ready.
\begin{figure}[htb!]
\includegraphics[width=1.0\textwidth]{ethiopian-woman-checking-bread.jpeg}
\includegraphics[width=1.0\textwidth]{ethiopian-woman-checking-bread}
\centering
\caption{An ethiopian woman baking an "injera" made using teff flour.
The image has been provided by Charliefleurene via Wikipedia}

View File

@@ -0,0 +1,27 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (heat_oven) {\footnotesize Heat oven to 230°C (446°F) for 30 minutes};
\node [block, right of=heat_oven, node distance=3cm] (score_dough) {\footnotesize Score your dough};
\node [decision, right of=score_dough, node distance=4cm] (decide_steam) {\footnotesize Choose your steaming method};
\node [block, below of=heat_oven, node distance=4cm] (inverted_tray_method) {\footnotesize Inverted tray method};
\node [block, right of=inverted_tray_method, node distance=3cm] (dutch_oven) {\footnotesize Dutch oven};
\node [block, right of=dutch_oven, node distance=3cm] (steam_injection) {\footnotesize Steam injection oven};
\node [block, below of=inverted_tray_method, node distance=3cm] (bake_30) {\footnotesize Bake dough for 30 minutes with steam};
\node [block, right of=bake_30, node distance=3cm] (remove_steam) {\footnotesize Remove source of steam};
\node [block, right of=remove_steam, node distance=3cm] (build_crust) {\footnotesize Build the crust};
\node [block, right of=build_crust, node distance=3cm] (finish_baking) {\footnotesize Stop baking 10-30 minutes later depending on crust preference};
\path [line] (heat_oven) -- (score_dough);
\path [line] (score_dough) -- (decide_steam);
\path [line] (decide_steam) -- (inverted_tray_method);
\path [line] (decide_steam) -- (dutch_oven);
\path [line] (decide_steam) -- (steam_injection);
\path [line] (steam_injection) -- (bake_30);
\path [line] (inverted_tray_method) -- (bake_30);
\path [line] (dutch_oven) -- (bake_30);
\path [line] (bake_30) -- (remove_steam);
\path [line] (remove_steam) -- (build_crust);
\path [line] (build_crust) -- (finish_baking);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,13 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Dividing required?};
\node [decision, right of=init, node distance=5cm] (more_than_one_loaf) {\footnotesize More than 1 loaf?};
\node [block, right of=more_than_one_loaf, node distance=5cm] (yes) {\footnotesize Yes};
\node [block, below of=yes, node distance=3cm] (no) {\footnotesize No};
\path [line] (init) -- (more_than_one_loaf);
\path [line] (more_than_one_loaf) -- (yes);
\path [line] (more_than_one_loaf) -- (no);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,25 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Place water tray and stone in oven};
\node [block, right of=init] (heat_oven) {\footnotesize Heat oven to 230°C (446°F) for 30 minutes};
\node [block, right of=heat_oven] (score_your_dough) {\footnotesize Score your dough};
\node [block, right of=score_your_dough] (spritz) {\footnotesize Spritz your dough with water};
\node [block, right of=spritz] (load_tray) {\footnotesize Place non-preheated inverted tray in oven};
\node [block, below of=load_tray, node distance=4cm] (load_doughs) {\footnotesize Load doughs into oven};
\node [block, left of=load_doughs, node distance=3cm] (load_water) {\footnotesize Place water in heated water tray};
\node [block, left of=load_water, node distance=3cm] (bake) {\footnotesize Bake 30 minutes or until core temperature is 92°C (197°F)};
\node [block, left of=bake, node distance=3cm] (remove_steam) {\footnotesize Remove steam source and top tray};
\node [block, left of=remove_steam, node distance=3cm] (finish) {\footnotesize Bake at least another 10 minutes or until crust has your desired color};
\path [line] (init) -- (heat_oven);
\path [line] (heat_oven) -- (score_your_dough);
\path [line] (score_your_dough) -- (spritz);
\path [line] (spritz) -- (load_tray);
\path [line] (load_tray) -- (load_doughs);
\path [line] (load_doughs) -- (load_water);
\path [line] (load_water) -- (bake);
\path [line] (bake) -- (remove_steam);
\path [line] (remove_steam) -- (finish);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,33 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Homogenize recipe ingredients};
\node [block, right of=init, node distance=3cm] (wait1) {\footnotesize Wait 15 minutes};
\path [line] (init) -- (wait1);
\node [block, right of=wait1, node distance=3cm] (knead1) {\footnotesize Knead 5 minutes};
\path [line] (wait1) -- (knead1);
\node [block, right of=knead1, node distance=3cm] (wait2) {\footnotesize Wait 15 minutes};
\path [line] (knead1) -- (wait2);
\node [decision, below of=wait2, node distance=3cm] (windowpane_test) {\footnotesize Window-pane?};
\path [line] (wait2) -- (windowpane_test);
\path [line] (windowpane_test) -- node{no} (knead1);
\node [decision, left of=windowpane_test, node distance=4.5cm] (more_water) {\footnotesize Bassinage for more water?};
\path [line] (windowpane_test) -- node{yes} (more_water);
\node [block, left of=more_water, node distance=4.5cm] (add_water) {\footnotesize Add water};
\path [line] (more_water) -- node{yes} (add_water);
\path [line] (add_water) -- (knead1);
\node [block, below of=add_water, node distance=4cm] (wait3) {\footnotesize Wait 15 minutes};
\path [line] (add_water) -- (wait3);
\node [decision, right of=wait3, node distance=4.5cm] (dough_sample) {\footnotesize Aliquot jar?};
\path [line] (wait3) -- (dough_sample);
\path [line] (more_water) -- node{no} (dough_sample);
\node [block, right of=dough_sample, node distance=4.5cm] (dough_ball) {\footnotesize Make round dough ball};
\path [line] (dough_sample) -- node{no} (dough_ball);
\node [block, below of=dough_sample, node distance=3cm] (extract_sample) {\footnotesize Extract sample};
\path [line] (dough_sample) -- node{yes} (extract_sample);
\path [line] (extract_sample) -- (dough_ball);
\node [block, below of=dough_ball, node distance=3cm] (begin_bulk) {\footnotesize Begin bulk fermentation};
\path [line] (dough_ball) -- (begin_bulk);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,23 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Make a regular or stiff starter};
\node [block, right of=init] (feed_new_ratio) {\footnotesize Mix 1g existing starter, 5g flour and 25g water};
\node [block, right of=feed_new_ratio] (next_day) {\footnotesize Wait 24 hours};
\node [block, below of=init, node distance=4cm] (feed_again) {\footnotesize Feed again using 1:5:25 ratio};
\node [block, right of=next_day, node distance=5cm] (test) {\footnotesize Check starter readiness?};
\node [decision, below of=next_day, node distance=4cm] (ready_signs) {\footnotesize Sour yogurty smell and bubbles visible on flour?};
\node [block, below of=test, node distance=4cm] (last_feed) {\footnotesize Feed one last time};
\node [block, below of=last_feed, node distance=3cm] (bread_dough) {\footnotesize Make bread dough};
\path [line] (init) -- (feed_new_ratio);
\path [line] (feed_new_ratio) -- (next_day);
\path [line] (feed_again) -- node{\footnotesize repeat 3 times} (feed_new_ratio);
\path [line] (next_day) -- node{\footnotesize after 3 days} (test);
\path [line] (next_day) -- (feed_again);
\path [line] (test) -- (ready_signs);
\path [line] (ready_signs) -- node{\footnotesize no} (feed_again);
\path [line] (ready_signs) -- node{\footnotesize yes} (last_feed);
\path [line] (last_feed) -- node{\footnotesize after 6-12 hours} (bread_dough);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,17 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Mix ingredients};
\node [block, below of=init, node distance=3cm] (bulk_ferment) {\footnotesize Bulk ferment};
\node [block, right of=init, node distance=3cm] (divide) {\footnotesize Divide};
\node [block, below of=divide, node distance=3cm] (shape) {\footnotesize Shape};
\node [block, right of=divide, node distance=3cm] (proof) {\footnotesize Proof};
\node [block, below of=proof, node distance=3cm] (bake) {\footnotesize Bake};
\path [line] (init) -- (bulk_ferment);
\path [line] (bulk_ferment) -- (divide);
\path [line] (divide) -- (shape);
\path [line] (shape) -- (proof);
\path [line] (proof) -- (bake);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,11 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto, every node/.style={inner sep=10, outer sep=0}]
\node [block] (init) {Mix ingredients};
\node [block, right of=init, node distance=5cm] (wait) {Wait for dough to be ready};
\node [block, right of=wait, node distance=5cm] (bake_bread) {Bake bread on stove};
\path [line] (init) -- (wait);
\path [line] (wait) -- (bake_bread);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,26 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [decision] (init) {\footnotesize Room temperature proofing?};
\node [decision, right of=init, node distance=9cm] (retard_bake_decision) {\footnotesize Bake in less than 10 hours from now?};
\node [block, below of=init, node distance=4cm] (poke) {\footnotesize Poke the dough};
\node [block, right of=poke, node distance=4cm] (wait_poke) {\footnotesize Wait 15 minutes};
\node [decision, below of=poke, node distance=3cm] (dent_visible_decision) {\footnotesize Dent still visible after 1 minute?};
\node [block, right of=dent_visible_decision, node distance=4cm] (bake) {\footnotesize Score and bake};
\node [block, below of=retard_bake_decision, node distance=3cm] (wait_retard) {\footnotesize Wait 15 minutes};
\node [block, below of=wait_retard, node distance=3cm] (retard) {\footnotesize Proof in fridge at 4°C (40°F)};
\node [block, right of=wait_retard, node distance=3cm] (move_to_fridge) {\footnotesize Move dough directly to fridge};
\path [line] (init) -- node{yes} (poke);
\path [line] (init) -- node{no} (retard_bake_decision);
\path [line] (poke) -- (dent_visible_decision);
\path [line] (dent_visible_decision) -- node{yes} (bake);
\path [line] (dent_visible_decision) -- node{no} (wait_poke);
\path [line] (wait_poke) -- (poke);
\path [line] (retard_bake_decision) -- node{yes} (wait_retard);
\path [line] (retard_bake_decision) -- node{no} (move_to_fridge);
\path [line] (wait_retard) -- (retard);
\path [line] (move_to_fridge) -- (retard);
\path [line] (retard) -- (bake);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,21 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Begin shaping};
\node [decision, right of=init, node distance=5cm] (overfermented_decision) {\footnotesize Dough overly sticky or dough tears?};
\node [block, right of=overfermented_decision, node distance=4cm] (overfermented) {\footnotesize Your dough is likely overfermented};
\node [block, right of=overfermented, node distance=3cm] (loafpan) {\footnotesize Move to loaf pan, short proof, then bake directly};
\node [block, below of=init, node distance=4cm] (shaping_technique) {\footnotesize Proceed with shaping technique};
\node [block, right of=shaping_technique, node distance=3cm] (flour) {\footnotesize Flour shaped dough};
\node [block, right of=flour, node distance=3cm] (banneton) {\footnotesize Place upside down in banneton};
\node [block, right of=banneton, node distance=3cm] (proof) {\footnotesize Begin proofing};
\path [line] (init) -- (overfermented_decision);
\path [line] (overfermented_decision) -- node{yes} (overfermented);
\path [line] (overfermented_decision) -- node{no} (shaping_technique);
\path [line] (shaping_technique) -- (flour);
\path [line] (flour) -- (banneton);
\path [line] (banneton) -- (proof);
\path [line] (overfermented) -- (loafpan);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,36 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Make your bread dough};
\node [decision, below of=init, node distance=3.5cm] (all_starter_used) {\footnotesize All starter used?};
\path [line] (init) -- (all_starter_used);
\node [block, right of=init, node distance=3cm] (use_dough) {\footnotesize Take 10g of your bread dough};
\node [block, right of=all_starter_used, node distance=3cm] (use_starter) {\footnotesize Take all but not more than 10g of your starter};
\path [line] (all_starter_used) -- node{yes} (use_dough);
\path [line] (all_starter_used) -- node{no} (use_starter);
\node [block, right of=use_dough, node distance=3cm] (feed_starter) {\footnotesize Feed using 1:5:5 ratio};
\path [line] (use_dough) -- (feed_starter);
\path [line] (use_starter) -- (feed_starter);
\node [decision, right of=feed_starter, node distance=3cm] (bake_next_day_check) {\footnotesize Bake next day?};
\path [line] (feed_starter) -- (bake_next_day_check);
\node [block, right of=bake_next_day_check, node distance=3.5cm] (make_bread_dough) {\footnotesize Make bread dough again after 8-12 hours};
\path [line] (bake_next_day_check) -- node{yes} (make_bread_dough);
\node [decision, right of=use_starter, node distance=3cm] (bake_next_week_check) {\footnotesize Baking in next 2 weeks?};
\node [block, right of=bake_next_week_check, node distance=3.5cm] (store_fridge) {\footnotesize Store starter in fridge at 4°C(40°F)};
\path [line] (bake_next_week_check) -- node{yes} (store_fridge);
\node [block, right of=store_fridge, node distance=3cm] (feed_after_fridge) {\footnotesize Feed again using 1:5:5 ration 8-12 hours before making dough};
\path [line] (store_fridge) -- (feed_after_fridge);
\path [line] (bake_next_day_check) -- node{no} (bake_next_week_check);
\node [decision, below of=use_starter, node distance=3cm] (freezer_check) {\footnotesize Have a freezer?};
\path [line] (bake_next_week_check) -- (store_fridge);
\path [line] (bake_next_week_check) -- node{no} (freezer_check);
\node [block, right of=freezer_check, node distance=3cm] (dry_starter) {\footnotesize Dry your starter};
\node [block, below of=dry_starter, node distance=3cm] (freeze_starter) {\footnotesize Freeze your starter};
\path [line] (freezer_check) -- node{no} (dry_starter);
\path [line] (freezer_check) -- node{yes} (freeze_starter);
\node [block, right of=dry_starter, node distance=3.5cm] (reactivate_freezer) {\footnotesize Reactivate starter for 3 days with daily 1:5:5 feedings};
\path [line] (dry_starter) -- (reactivate_freezer);
\path [line] (freeze_starter) -- (reactivate_freezer);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,24 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Mix 50g flour + 50g water, stir};
\node [block, right of=init, node distance=3cm] (wait1) {\footnotesize Wait 24 hours};
\path [line] (init) -- (wait1);
\node [block, right of=wait1, node distance=3cm] (feed) {\footnotesize 10g of previous day + 50g water + 50g flour, stir};
\path [line] (wait1) -- (feed);
\node [block, below of=feed] (discard) {\footnotesize Discard the rest};
\path [line] (feed) -- (discard);
\node [decision, right of=feed, node distance=3.5cm] (decide) {\footnotesize Is good?};
\node [decision, above of=decide, node distance=3cm] (timeout) {\footnotesize Less than 10 feeds?};
\node [block, above of=feed, node distance=3cm] (wait2) {\footnotesize Wait 24 hours};
\node [block, right of=timeout, node distance=3cm] (discard2) {\footnotesize Batch failed};
\path [line] (timeout) -- node{no} (discard2);
\path [line] (timeout) -- node{yes} (wait2);
\path [line] (feed) -- (decide);
\node [block, right of=decide, node distance=3cm] (use) {\footnotesize Ready to use};
\path [line] (decide) -- node{no} (timeout);
\path [line] (wait2) -- (feed);
\path [line] (decide) -- node{yes} (use);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,21 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Make a starter};
\node [block, right of=init, node distance=3cm] (feed) {\footnotesize Feed your starter};
\path [line] (init) -- (feed);
\node [block, right of=feed, node distance=3cm] (ready_question) {\footnotesize Perform readiness check};
\path [line] (feed) -- (ready_question);
\node [block, below of=feed, node distance=3cm] (wait_12) {\footnotesize Wait 12 hours};
\path [line] (wait_12) -- (feed);
\node [decision, right of=ready_question, node distance=3.5cm] (is_bubbly) {\footnotesize Bubbly? Size Increase?};
\path [line] (ready_question) -- (is_bubbly);
\path [line] (is_bubbly) -- node{no} (wait_12);
\node [decision, below of=is_bubbly, node distance=4.0cm] (check_smell) {\footnotesize Vinegary, or yogurt smell?};
\path [line] (is_bubbly) -- node{yes} (check_smell);
\node [block, below of=init, node distance=6cm] (make_dough) {\footnotesize Make your dough};
\path [line] (check_smell) -- node{yes} (make_dough);
\path [line] (check_smell) -- node{no} (wait_12);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,23 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Make a regular or liquid starter};
\node [block, right of=init] (feed_new_ratio) {\footnotesize Mix 10g existing starter, 50g flour and 25g water};
\node [block, right of=feed_new_ratio] (next_day) {\footnotesize Wait 24 hours};
\node [block, below of=feed_new_ratio] (feed_again) {\footnotesize Feed again using 1:5:2.5 ratio};
\node [block, right of=next_day, node distance=5cm] (test) {\footnotesize Check starter readiness?};
\node [decision, right of=feed_again, node distance=4cm] (ready_signs) {\footnotesize Size increase and sour smell?};
\node [block, right of=ready_signs, node distance=4cm] (last_feed) {\footnotesize Feed one last time};
\node [block, below of=last_feed, node distance=3cm] (bread_dough) {\footnotesize Make bread dough};
\path [line] (init) -- (feed_new_ratio);
\path [line] (feed_new_ratio) -- (next_day);
\path [line] (feed_again) -- node{\footnotesize repeat 3 times} (feed_new_ratio);
\path [line] (next_day) -- node{\footnotesize after 3 days} (test);
\path [line] (next_day) -- (feed_again);
\path [line] (test) -- (ready_signs);
\path [line] (ready_signs) -- node{\footnotesize no} (feed_again);
\path [line] (ready_signs) -- node{\footnotesize yes} (last_feed);
\path [line] (last_feed) -- node{\footnotesize after 6-12 hours} (bread_dough);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,26 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Ready starter};
\node [block, right of=init, node distance=3cm] (mix_ingredients) {\footnotesize Mix ingredients};
\node [block, right of=mix_ingredients, node distance=3cm] (dough_strength) {\footnotesize Create dough strength};
\node [block, right of=dough_strength, node distance=3cm] (bulk) {\footnotesize Bulk ferment};
\node [decision, below of=dough_strength, node distance=3cm] (divide_test) {\footnotesize Making 1 loaf?};
\node [block, left of=divide_test, node distance=3cm] (divide) {\footnotesize Divide};
\node [block, left of=divide, node distance=3cm] (preshape) {\footnotesize Preshape};
\node [block, below of=preshape, node distance=3cm] (shape) {\footnotesize Shape};
\node [block, right of=shape, node distance=3cm] (proof) {\footnotesize Proof};
\node [block, right of=proof, node distance=3cm] (bake) {\footnotesize Bake};
\path [line] (init) -- (mix_ingredients);
\path [line] (mix_ingredients) -- (dough_strength);
\path [line] (dough_strength) -- (bulk);
\path [line] (bulk) -- (divide_test);
\path [line] (divide_test) -- node{yes} (shape);
\path [line] (divide_test) -- node{no} (divide);
\path [line] (divide) -- (preshape);
\path [line] (preshape) -- (shape);
\path [line] (shape) -- (proof);
\path [line] (proof) -- (bake);
\end{tikzpicture}
\end{document}

View File

@@ -0,0 +1,34 @@
\input{./vars}
\begin{document}
\begin{tikzpicture}[node distance = 3cm, auto]
\node [decision] (init) {\footnotesize Starter last fed within 3 days?};
\node [block, right of=init, node distance=4cm] (feed_no_branch)
{\footnotesize Feed starter twice. 48 hours before and 6-12 hours before};
\node [block, below of=feed_no_branch, node distance=3cm] (feed_yes_branch)
{\footnotesize Feed starter once 6-12 hours before making dough};
\node [block, right of=feed_no_branch, node distance=6cm] (high_ratio)
{\footnotesize Use a 1:10:10 ratio. 10g starter, 100g flour, 100g water};
\node [block, right of=feed_yes_branch, node distance=3cm] (low_ratio)
{\footnotesize Use a 1:5:5 ratio. 10g starter, 50g flour, 50g water};
\node [block, below of=high_ratio, node distance=6cm] (check_starter)
{\footnotesize Check if starter is ready to be used};
\node [decision, below of=init, node distance=6cm] (size_check)
{\footnotesize Bubbly? Increased in size?};
\node [decision, below of=size_check, node distance=5cm] (smell_check)
{\footnotesize Vinegary or yogurty smell?};
\node [block, right of=smell_check, node distance=6cm] (make_dough)
{\footnotesize Prepare dough};
\path [line] (init) -- node{no} (feed_no_branch);
\path [line] (init) -- node{yes} (feed_yes_branch);
\path [line] (feed_yes_branch) -- (low_ratio);
\path [line] (feed_no_branch) -- (high_ratio);
\path [line] (high_ratio) -- (check_starter);
\path [line] (low_ratio) -- (check_starter);
\path [line] (check_starter) -- (size_check);
\path [line] (size_check) -- node{no} (feed_yes_branch);
\path [line] (size_check) -- node{yes} (smell_check);
\path [line] (smell_check) -- node{no} (feed_yes_branch);
\path [line] (smell_check) -- node{yes} (make_dough);
\end{tikzpicture}
\end{document}

10
book/figures/vars.tex Normal file
View File

@@ -0,0 +1,10 @@
\documentclass[tikz]{standalone}
\usepackage{tikz}
\definecolor{codeblue}{RGB}{69, 161, 248}
\usetikzlibrary{shapes,arrows}
\tikzstyle{decision} = [diamond, draw, fill=codeblue, text=white,
text width=4.5em, text badly centered, node distance=3cm, inner sep=0pt]
\tikzstyle{block} = [rectangle, draw, fill=codeblue, text=white,
text width=5em, text centered, rounded corners, minimum height=4em]
\tikzstyle{line} = [draw, -latex']

View File

@@ -12,21 +12,11 @@ activated. The whitest flour you can get is mostly just the starch part of the s
Depending on which layers are still present, names are used to describe the
type of flour.
\begin{table}[htb!]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|r|r|r|}
\hline
\textbf{Type USA} & \textbf{Type UK} & \multicolumn{1}{l|}{\textbf{Type Germany}} & \multicolumn{1}{l|}{\textbf{Type France}} & \multicolumn{1}{l|}{\textbf{Type Italy}} \\ \hline
Cake & Soft flour & T405 & T45 & 00 \\ \hline
All purpose & Plain flour & T550 & T55 & 0 \\ \hline
& & T812 & T80 & 1 \\ \hline
& & T1050 & T110 & 2 \\ \hline
Whole & Whole & Vollkorn & T150 & Integrale \\ \hline
\end{tabular}%
}
\caption{\label{tab:flour-types-comparison}A comparison of the different wheat flour types}
\end{table}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-flour-types.pdf}
\label{tab:flour-types-comparison}
\caption{A comparison of the different wheat flour types}
\end{figure}
In Germany the ash content is used to describe the flours. The lab will burn
100 grams of flour in the oven. Then afterwards the remaining ash is extracted
@@ -57,25 +47,10 @@ structure. For no/low gluten flour your main focus is managing acidity. You do n
want the final bread to be too sour. You do not have to worry about the gluten
degradation, removing a huge headache from the equation.
\begin{table}[]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|l|l|l|}
\hline
\textbf{Grain type} & \textbf{Homogenize} & \textbf{Knead} & \textbf{Stretch \& Fold} & \textbf{Shape} \\ \hline
\textbf{Wheat} & Yes & Yes & Yes & Yes \\ \hline
\textbf{\textgreater 70\% Wheat} & Yes & Yes & Yes & Yes \\ \hline
\textbf{Spelt} & Yes & Yes & Yes & Yes \\ \hline
\textbf{Rye} & Yes & No & No & No \\ \hline
\textbf{Emmer} & Yes & No & No & No \\ \hline
\textbf{Einkorn} & Yes & No & No & No \\ \hline
\textbf{Rice} & Yes & No & No & No \\ \hline
\textbf{Corn} & Yes & No & No & No \\ \hline
\end{tabular}%
}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-grains-bread-making-process.pdf}
\caption{An overview of different grain types and the steps involved in the respective bread making process}
\end{table}
\end{figure}
As gluten has a special role, the rest of this chapter is dedicated to having a
closer look at different gluten flours and how to distinguish them. Spelt
@@ -123,21 +98,11 @@ product out of a high W flour you will need to have a long fermentation period.
The long fermentation period also means that your microbes will enrich
your dough with more flavor.
\begin{table}[]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|r|l|r|}
\hline
\textbf{W-Value} & \multicolumn{1}{l|}{\textbf{Hydration in \%}} & \textbf{Uses} & \multicolumn{1}{l|}{\textbf{Fermentation times}} \\ \hline
0-150 & 50 & Cookies & Very short \\ \hline
150-250 & 50-60 & Cakes, Bread, Pizza & Short-Medium \\ \hline
250-350 & 60-70 & Bread, Pizza & Long \\ \hline
350+ & 70-90 & Bread, Pizza & Very long \\ \hline
\end{tabular}%
}
\caption{\label{tab:w-value}An overview of different levels of W values and the respective hydrations and fermentation times}
\end{table}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-overview-w-values.pdf}
\caption{An overview of different levels of W values and the respective hydrations and fermentation times}
\label{tab:w-value}
\end{figure}
Generally, when aiming to
bake free standing sourdough bread aim for a higher protein content. If the

View File

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

Before

Width:  |  Height:  |  Size: 2.8 MiB

After

Width:  |  Height:  |  Size: 2.8 MiB

5
book/latexmkrc Normal file
View File

@@ -0,0 +1,5 @@
END{
# system("tex4ebook -j output -m draft -a debug main > tex4ebook.log");
system("tex4ebook -j output -e build.mk4 main");
system("rm tikz-cache/*");
}

View File

@@ -1,23 +1,74 @@
all:
.PHONY: build_pdf
build_pdf: clean figures tables
pdflatex book.tex
biber book
pdflatex book.tex
fast:
pdflatex book.tex
.PHONY: figures
figures:
cd figures && find . -name "fig-*.tex" -exec pdflatex '{}' \; && cd ../
.PHONY: tables
tables:
cd tables && find . -name "table-*.tex" -exec pdflatex '{}' \; && cd ../
.PHONY: clean
clean:
rm book.blg
rm book.bbl
rm book.aux
rm book.out
rm book.toc
rm book.run.xml
rm book.bcf
rm book.pdf
rm book.log
rm -f book.blg
rm -f book.bbl
rm -f book.aux
rm -f book.out
rm -f book.toc
rm -f book.run.xml
rm -f book.bcf
rm -f book.pdf
rm -f book.log
rm -f book.mobi
rm -f book.4ct
rm -f book.4tc
rm -f book.dvi
rm -f book.epub
rm -f book.css
rm -f book.fdb_latexmk
rm -f book.fls
rm -f book.idv
rm -f book.lg
rm -f book.ncx
rm -f book.tmp
rm -f book.xref
rm -f book*.svg
rm -f book*.html
rm -f book*.xhtml
rm -rf book-epub/
rm -rf book-epub3/
rm -rf book-mobi/
rm -f *.pdf
rm -f output.log
rm -f content.opf
rm -rf figures/*.aux
rm -rf figures/*.fdb_latexmk
rm -rf figures/*.fls
rm -rf figures/*.log
rm -rf figures/*.pdf
rm -rf figures/*.png
find . -name "*.xbb" | xargs rm -f
rm -rf release/
release:
rm -rf release
mkdir release
.PHONY: release
release: clean build_pdf make_release_dir build_ebook
cp book.pdf release/TheBreadCode-The-Sourdough-Framework.pdf
cp book.epub release/TheBreadCode-The-Sourdough-Framework.epub
cp book.mobi release/TheBreadCode-The-Sourdough-Framework.mobi
cp book.azw3 release/TheBreadCode-The-Sourdough-Framework.azw3
.PHONY: make_release_dir
make_release_dir:
mkdir -p release
.PHONY: build_ebook
build_ebook: build_pdf make_release_dir
find . -name "*.jpg" | xargs ebb -x
find . -name "*.png" | xargs ebb -x
tex4ebook -c tex4ebook.cfg -f epub book.tex
tex4ebook -c tex4ebook.cfg -f mobi book.tex
tex4ebook -c tex4ebook.cfg -f azw3 book.tex

View File

@@ -27,19 +27,7 @@ of gluten development, the final bread will feature a denser
crumb compared to wheat.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Mix ingredients};
\node [block, below of=init, node distance=3cm] (bulk_ferment) {\footnotesize Bulk ferment};
\node [block, right of=init, node distance=3cm] (divide) {\footnotesize Divide};
\node [block, below of=divide, node distance=3cm] (shape) {\footnotesize Shape};
\node [block, right of=divide, node distance=3cm] (proof) {\footnotesize Proof};
\node [block, below of=proof, node distance=3cm] (bake) {\footnotesize Bake};
\path [line] (init) -- (bulk_ferment);
\path [line] (bulk_ferment) -- (divide);
\path [line] (divide) -- (shape);
\path [line] (shape) -- (proof);
\path [line] (proof) -- (bake);
\end{tikzpicture}
\includegraphics{figures/fig-non-wheat-process.pdf}
\caption{A visualization of the process to make non-wheat sourdough bread.
The process is much simpler than making wheat sourdough bread. There is
no gluten development. The ingredients are simply mixed together.}
@@ -165,4 +153,4 @@ almost daily basis. The effort required to make bread like
this is much lower compared to a wheat-based dough. In some
cases, I extend the recipe and add additional sourdough discard
to the dough. You can add as much discard as you like. The resulting
bread has a very complex but delicious flavor profile.
bread has a very complex but delicious flavor profile.

View File

@@ -3,17 +3,11 @@ at different sourdough starter types and their respective
traits.
\begin{table}[htp!]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|l|l|r|l|}
\hline
\textbf{Starter type} & \textbf{Hydration in \%} & \textbf{Flour type} & \multicolumn{1}{l|}{\textbf{Yeast activity}} & \textbf{Bacterial activity} \\ \hline
Regular & 100 & Strong wheat flour & Balanced & Balanced \\ \hline
Liquid & 500 & Very strong wheat flour & Minimal & High \\ \hline
Stiff & 50-60 & All wheat flour & High & Low \\ \hline
\end{tabular}%
}
\caption{\label{tab:starter-types-comparison}A comparison of different sourdough starter types}
\includegraphics[width=\textwidth]{tables/table-starter-types.pdf}
\caption{A comparison of different sourdough starter types and their
respective properties. The only difference is the level of water (hydration)
that is used when feeding the starter.}
\label{tab:starter-types-comparison}
\end{table}
Depending on the flour you have at hand the type of starter changes. With more
@@ -118,26 +112,9 @@ starter's flavour by changing the type to a liquid starter.
\label{fig:liquid-sourdough-starter}
\end{figure}
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Make a regular or stiff starter};
\node [block, right of=init] (feed_new_ratio) {\footnotesize Mix 1g existing starter, 5g flour and 25g water};
\node [block, right of=feed_new_ratio] (next_day) {\footnotesize Wait 24 hours};
\node [block, below of=init, node distance=4cm] (feed_again) {\footnotesize Feed again using 1:5:25 ratio};
\node [block, right of=next_day, node distance=5cm] (test) {\footnotesize Check starter readiness?};
\node [decision, below of=next_day, node distance=4cm] (ready_signs) {\footnotesize Sour yogurty smell and bubbles visible on flour?};
\node [block, below of=test, node distance=4cm] (last_feed) {\footnotesize Feed one last time};
\node [block, below of=last_feed, node distance=3cm] (bread_dough) {\footnotesize Make bread dough};
\path [line] (init) -- (feed_new_ratio);
\path [line] (feed_new_ratio) -- (next_day);
\path [line] (feed_again) -- node{\footnotesize repeat 3 times} (feed_new_ratio);
\path [line] (next_day) -- node{\footnotesize after 3 days} (test);
\path [line] (next_day) -- (feed_again);
\path [line] (test) -- (ready_signs);
\path [line] (ready_signs) -- node{\footnotesize no} (feed_again);
\path [line] (ready_signs) -- node{\footnotesize yes} (last_feed);
\path [line] (last_feed) -- node{\footnotesize after 6-12 hours} (bread_dough);
\end{tikzpicture}
\includegraphics{figures/fig-liquid-starter-conversion.pdf}
\caption{The process to convert your regular or stiff starter into a liquid starter. The whole
process takes around 3 days. The longer you maintain your starter at the
suggested hydration level the more adapted your microorganisms become. It is recommended
@@ -210,25 +187,7 @@ around 50 to 60 percent. So for 100 grams of flour you are using around 50 to
60 grams of water.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Make a regular or liquid starter};
\node [block, right of=init] (feed_new_ratio) {\footnotesize Mix 10g existing starter, 50g flour and 25g water};
\node [block, right of=feed_new_ratio] (next_day) {\footnotesize Wait 24 hours};
\node [block, below of=feed_new_ratio] (feed_again) {\footnotesize Feed again using 1:5:2.5 ratio};
\node [block, right of=next_day, node distance=5cm] (test) {\footnotesize Check starter readiness?};
\node [decision, right of=feed_again, node distance=4cm] (ready_signs) {\footnotesize Size increase and sour smell?};
\node [block, right of=ready_signs, node distance=4cm] (last_feed) {\footnotesize Feed one last time};
\node [block, below of=last_feed, node distance=3cm] (bread_dough) {\footnotesize Make bread dough};
\path [line] (init) -- (feed_new_ratio);
\path [line] (feed_new_ratio) -- (next_day);
\path [line] (feed_again) -- node{\footnotesize repeat 3 times} (feed_new_ratio);
\path [line] (next_day) -- node{\footnotesize after 3 days} (test);
\path [line] (next_day) -- (feed_again);
\path [line] (test) -- (ready_signs);
\path [line] (ready_signs) -- node{\footnotesize no} (feed_again);
\path [line] (ready_signs) -- node{\footnotesize yes} (last_feed);
\path [line] (last_feed) -- node{\footnotesize after 6-12 hours} (bread_dough);
\end{tikzpicture}
\includegraphics{figures/fig-stiff-starter-conversion.pdf}
\caption{The process to convert your regular starter into a stiff starter. The whole
process takes around 3 days. The longer you maintain your starter at the
suggested hydration level the more adapted your microorganisms become. The

View File

@@ -34,19 +34,10 @@ but there is an easier way. This is where baker's math
comes in handy. Let's look at the default recipe with baker's
math and then adjust it for the 1.4 kilogram flour quantity.
\begin{table}[H]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|r|r|}
\hline
\textbf{Ingredient} & \multicolumn{1}{l|}{\textbf{Percent}} & \multicolumn{1}{l|}{\textbf{Calculation}} \\ \hline
1000g flour & 100\% & 1000g of 1000g = 100\% \\ \hline
600g water & 60\% & 600g of 1000g = 60\% \\ \hline
100g sourdough starter & 10\% & 100g of 1000g = 10\% \\ \hline
20g salt & 2\% & 20g of 1000g = 2\% \\ \hline
\end{tabular}%
}
\end{table}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-bakers-math-example.pdf}
\caption{An example table demonstrating how to properly calclate using baker's math}
\end{figure}
Note how each of the ingredients is calculated as a percentage
based on the flour. The 100 percent is the baseline as the absolute
@@ -57,19 +48,11 @@ Now let's go back to our example and add just the flour, as we have
more flour available the next day. As mentioned the next day
we have 1.4 kilograms at hand (1400 grams).
\begin{table}[H]
\centering
\resizebox{\textwidth}{!}{%
\begin{tabular}{|l|r|r|}
\hline
\textbf{Ingredient} & \multicolumn{1}{l|}{\textbf{Baker's math}} & \multicolumn{1}{l|}{\textbf{Calculated value}} \\ \hline
Flour & 100\% & 1400*1 = 1400g \\ \hline
Water & 60\% & 1400*0.6 = 840g \\ \hline
Sourdough starter & 10\% & 1400*0.1 = 140g \\ \hline
Salt & 2\% & 1400*0.02 = 28g \\ \hline
\end{tabular}%
}
\end{table}
\begin{figure}[H]
\includegraphics[width=\textwidth]{tables/table-recipe-bakers-math.pdf}
\caption{An example recipe that uses 1400 grams as base and is then
calculated using baker's math}
\end{figure}
For each ingredient we calculate the percentage
based on the flour available (1400 grams). So for the water
@@ -133,26 +116,7 @@ use a glass and place another inverted one on top. The container shouldn't
be airtight. You still want some gas exchange to be possible.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Mix 50g flour + 50g water, stir};
\node [block, right of=init, node distance=3cm] (wait1) {\footnotesize Wait 24 hours};
\path [line] (init) -- (wait1);
\node [block, right of=wait1, node distance=3cm] (feed) {\footnotesize 10g of previous day + 50g water + 50g flour, stir};
\path [line] (wait1) -- (feed);
\node [block, below of=feed] (discard) {\footnotesize Discard the rest};
\path [line] (feed) -- (discard);
\node [decision, right of=feed, node distance=3.5cm] (decide) {\footnotesize Is good?};
\node [decision, above of=decide, node distance=3cm] (timeout) {\footnotesize Less than 10 feeds?};
\node [block, above of=feed, node distance=3cm] (wait2) {\footnotesize Wait 24 hours};
\node [block, right of=timeout, node distance=3cm] (discard2) {\footnotesize Batch failed};
\path [line] (timeout) -- node{no} (discard2);
\path [line] (timeout) -- node{yes} (wait2);
\path [line] (feed) -- (decide);
\node [block, right of=decide, node distance=3cm] (use) {\footnotesize Ready to use};
\path [line] (decide) -- node{no} (timeout);
\path [line] (wait2) -- (feed);
\path [line] (decide) -- node{yes} (use);
\end{tikzpicture}
\includegraphics{figures/fig-starter-process.pdf}
\caption{The process of making a sourdough starter from scratch}
\label{fig:sourdough-starter-process}
\end{figure}
@@ -270,23 +234,7 @@ yeast has been isolated like this from century old sourdough
starters.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Make a starter};
\node [block, right of=init, node distance=3cm] (feed) {\footnotesize Feed your starter};
\path [line] (init) -- (feed);
\node [block, right of=feed, node distance=3cm] (ready_question) {\footnotesize Perform readiness check};
\path [line] (feed) -- (ready_question);
\node [block, below of=feed, node distance=3cm] (wait_12) {\footnotesize Wait 12 hours};
\path [line] (wait_12) -- (feed);
\node [decision, right of=ready_question, node distance=3.5cm] (is_bubbly) {\footnotesize Bubbly? Size Increase?};
\path [line] (ready_question) -- (is_bubbly);
\path [line] (is_bubbly) -- node{no} (wait_12);
\node [decision, below of=is_bubbly, node distance=4.0cm] (check_smell) {\footnotesize Vinegary, or yogurt smell?};
\path [line] (is_bubbly) -- node{yes} (check_smell);
\node [block, below of=init, node distance=6cm] (make_dough) {\footnotesize Make your dough};
\path [line] (check_smell) -- node{yes} (make_dough);
\path [line] (check_smell) -- node{no} (wait_12);
\end{tikzpicture}
\includegraphics{figures/fig-starter-readiness.pdf}
\caption{A flow chart showing you how to determine if your sourdough starter is ready to be used.
For checking readiness look at a size increase and take note of your starter's smell. Both are important
indicators to check for readiness.}
@@ -353,38 +301,7 @@ yeast part of your sourdough and balance the fermentation.
\section{Maintenance}
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Make your bread dough};
\node [decision, below of=init, node distance=3.5cm] (all_starter_used) {\footnotesize All starter used?};
\path [line] (init) -- (all_starter_used);
\node [block, right of=init, node distance=3cm] (use_dough) {\footnotesize Take 10g of your bread dough};
\node [block, right of=all_starter_used, node distance=3cm] (use_starter) {\footnotesize Take all but not more than 10g of your starter};
\path [line] (all_starter_used) -- node{yes} (use_dough);
\path [line] (all_starter_used) -- node{no} (use_starter);
\node [block, right of=use_dough, node distance=3cm] (feed_starter) {\footnotesize Feed using 1:5:5 ratio};
\path [line] (use_dough) -- (feed_starter);
\path [line] (use_starter) -- (feed_starter);
\node [decision, right of=feed_starter, node distance=3cm] (bake_next_day_check) {\footnotesize Bake next day?};
\path [line] (feed_starter) -- (bake_next_day_check);
\node [block, right of=bake_next_day_check, node distance=3.5cm] (make_bread_dough) {\footnotesize Make bread dough again after 8-12 hours};
\path [line] (bake_next_day_check) -- node{yes} (make_bread_dough);
\node [decision, right of=use_starter, node distance=3cm] (bake_next_week_check) {\footnotesize Baking in next 2 weeks?};
\node [block, right of=bake_next_week_check, node distance=3.5cm] (store_fridge) {\footnotesize Store starter in fridge at 4°C(40°F)};
\path [line] (bake_next_week_check) -- node{yes} (store_fridge);
\node [block, right of=store_fridge, node distance=3cm] (feed_after_fridge) {\footnotesize Feed again using 1:5:5 ration 8-12 hours before making dough};
\path [line] (store_fridge) -- (feed_after_fridge);
\path [line] (bake_next_day_check) -- node{no} (bake_next_week_check);
\node [decision, below of=use_starter, node distance=3cm] (freezer_check) {\footnotesize Have a freezer?};
\path [line] (bake_next_week_check) -- (store_fridge);
\path [line] (bake_next_week_check) -- node{no} (freezer_check);
\node [block, right of=freezer_check, node distance=3cm] (dry_starter) {\footnotesize Dry your starter};
\node [block, below of=dry_starter, node distance=3cm] (freeze_starter) {\footnotesize Freeze your starter};
\path [line] (freezer_check) -- node{no} (dry_starter);
\path [line] (freezer_check) -- node{yes} (freeze_starter);
\node [block, right of=dry_starter, node distance=3.5cm] (reactivate_freezer) {\footnotesize Reactivate starter for 3 days with daily 1:5:5 feedings};
\path [line] (dry_starter) -- (reactivate_freezer);
\path [line] (freeze_starter) -- (reactivate_freezer);
\end{tikzpicture}
\includegraphics{figures/fig-starter-maintenance.pdf}
\caption{A full flowchart showing you how to conduct proper sourdough starter maintenance. You can use a
piece of your dough as the next starter. You can also use left-over starter and feed it again. Choose an
option that works fest for your own schedule. The chart assumes that you are using a starter at a 100 percent

View File

@@ -3,19 +3,12 @@ methods of storing your bread. This way
your bread can best be enjoyed at a later
time.
\begin{table}[!htb]
\begin{tabular}{|l|l|l|}
\hline
\textbf{Method} & \textbf{Advantages} & \textbf{Disadvantages} \\ \hline
\textbf{\begin{tabular}[c]{@{}l@{}}Room\\ temperature\end{tabular}} & \begin{tabular}[c]{@{}l@{}}The easiest option. Best for bread that\\ is eaten within a day. Crust typically\\ stays crisp when humidity not too high.\end{tabular} & Bread dries out very quickly. \\ \hline
\textbf{\begin{tabular}[c]{@{}l@{}}Room\\ temperature\\ in container\end{tabular}} & \begin{tabular}[c]{@{}l@{}}Good for up to a week. Catches mold\\ more quickly.\end{tabular} & \begin{tabular}[c]{@{}l@{}}Bread needs to be toasted\\ for crust to become crisp again.\end{tabular} \\ \hline
\textbf{Fridge} & \begin{tabular}[c]{@{}l@{}}Bread stays good for weeks. Can dry\\ out a little bit when not using air-tight\\ container.\end{tabular} & \begin{tabular}[c]{@{}l@{}}Bread needs to be toasted.\\ Requires fridge and energy.\end{tabular} \\ \hline
\textbf{Freezer} & Bread stays good for years. & \begin{tabular}[c]{@{}l@{}}Requires thawing and then\\ toasting. Requires freezer and\\ energy.\end{tabular} \\ \hline
\end{tabular}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-storing-bread-overview.pdf}
\caption{A table visualizing the advantages and disadvantages
of different bread storing options.}
\label{table:bread-storage}
\end{table}
\end{figure}
\section{Room temperature}
@@ -116,4 +109,4 @@ that you like.
This option is great for the very long-term storage. Personally
I like having a few slices of bread frozen as an emergency
backup when I had no time to bake.
backup when I had no time to bake.

View File

@@ -0,0 +1,12 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|r|r|}
\hline
\textbf{Ingredient} & \multicolumn{1}{l|}{\textbf{Percent}} & \multicolumn{1}{l|}{\textbf{Calculation}} \\ \hline
1000g flour & 100\% & 1000g of 1000g = 100\% \\ \hline
600g water & 60\% & 600g of 1000g = 60\% \\ \hline
100g sourdough starter & 10\% & 100g of 1000g = 10\% \\ \hline
20g salt & 2\% & 20g of 1000g = 2\% \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,16 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|l|}
\hline
\textbf{°C °F} & \textbf{Stage} & \textbf{Description} \\ \hline
60 - 140 & Sterilisation & \begin{tabular}[c]{@{}l@{}}The temperature is too hot for your\\ microorganisms and they die\end{tabular} \\ \hline
75 - 167 & Gel building & \begin{tabular}[c]{@{}l@{}}A gel builds on the surface persisting\\ your dough's structure. It is still\\ extensible and can spring in the\\ oven\end{tabular} \\ \hline
100 - 212 & Water evaporates & \begin{tabular}[c]{@{}l@{}}Water begins to evaporate and\\ inflates your dough's alveoli\end{tabular} \\ \hline
118 - 244 & Acetic acid evaporates & \begin{tabular}[c]{@{}l@{}}The vinegary tasting acid starts\\ to evaporate. The sourness decreases\end{tabular} \\ \hline
122 - 252 & Lactic acid evaporates & \begin{tabular}[c]{@{}l@{}}The dairy tasting lactic acid begins\\ to evaporate. Sourness further decreases\end{tabular} \\ \hline
140 - 284 & Maillard reaction & \begin{tabular}[c]{@{}l@{}}The maillard reaction starts to deform\\ starches and proteins. The dough starts\\ browning\end{tabular} \\ \hline
170 - 338 & Caramelization & \begin{tabular}[c]{@{}l@{}}Remaining sugars begin to caramelise\\ giving your bread a distinct flavor\end{tabular} \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,12 @@
\input{./vars}
\begin{document}
\begin{tabular}{|r|r|}
\hline
\multicolumn{1}{|l|}{\textbf{Flour protein content}} & \multicolumn{1}{l|}{\textbf{Relative aliquot size increase}} \\ \hline
8-10\% & 25\% \\ \hline
10-12\% & 50\% \\ \hline
12-15\% & 100\% \\ \hline
\textgreater 15\% & \textgreater 100\% \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,13 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{} & \textbf{\begin{tabular}[c]{@{}l@{}}Too short\\ fermentation\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Too long\\ fermentation\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Perfect\\ fermentation\end{tabular}} \\ \hline
\textbf{\begin{tabular}[c]{@{}l@{}}Crumb\\ texture\end{tabular}} & \begin{tabular}[c]{@{}l@{}}Unbaked gummy areas\\ towards the bottom of\\ the bread\end{tabular} & \begin{tabular}[c]{@{}l@{}}Crumb can be\\ perceived as\\ gummy, as most\\ gluten broken\\ down\end{tabular} & \begin{tabular}[c]{@{}l@{}}Crumb evenly baked.\\ Crumb can be perceived\\ as moist, but not\\ gummy\end{tabular} \\ \hline
\textbf{Alveoli} & \begin{tabular}[c]{@{}l@{}}Overly large alveoli\\ in the crumb "craters"\end{tabular} & \begin{tabular}[c]{@{}l@{}}Many tiny alveoli\\ equally distributed\end{tabular} & \begin{tabular}[c]{@{}l@{}}Alveoli evenly\\ distributed, no\\ "craters"\end{tabular} \\ \hline
\textbf{Taste} & Pale neutral taste & \begin{tabular}[c]{@{}l@{}}Strong acidic flavor\\ profile. Acidity\\ overweighs when\\ tasting\end{tabular} & \begin{tabular}[c]{@{}l@{}}Balanced flavor profile,\\ not too mild but also\\ not too sour. Depending\\ on starter vinegary\\ or lactic notes\end{tabular} \\ \hline
\textbf{Texture} & Overall poor Texture & \begin{tabular}[c]{@{}l@{}}Good consistency,\\ crumb is not as fluffy\\ as it could be\end{tabular} & \begin{tabular}[c]{@{}l@{}}Great combination of \\ textures\end{tabular} \\ \hline
\textbf{\begin{tabular}[c]{@{}l@{}}Oven\\ spring\end{tabular}} & \begin{tabular}[c]{@{}l@{}}Vertical oven spring,\\ mostly due to water\\ evaporating and\\ inflating the dough\end{tabular} & \begin{tabular}[c]{@{}l@{}}Very flat pancake like \\ structure after baking\end{tabular} & \begin{tabular}[c]{@{}l@{}}Great vertical oven\\ spring. Dough grows\\ more upwards rather\\ than sideways\end{tabular} \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,13 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|l|}
\hline
& \textbf{Flat breads} & \textbf{Pancakes} \\ \hline
\textbf{Flour} & 100g & 100g \\ \hline
\textbf{Water} & 100g (100\%) & 300g (300\%) \\ \hline
\textbf{Sourdough starter} & 5-20g (5-20\%) & 5-20g (5-20\%) \\ \hline
\textbf{Salt} & 2g (2\%) & 2g (2\%) \\ \hline
\textbf{When bake?} & Dough increased 50 percent in size & Bubbles visible on surface \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,13 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|r|r|r|}
\hline
\textbf{Type USA} & \textbf{Type UK} & \multicolumn{1}{l|}{\textbf{Type Germany}} & \multicolumn{1}{l|}{\textbf{Type France}} & \multicolumn{1}{l|}{\textbf{Type Italy}} \\ \hline
Cake & Soft flour & T405 & T45 & 00 \\ \hline
All purpose & Plain flour & T550 & T55 & 0 \\ \hline
& & T812 & T80 & 1 \\ \hline
& & T1050 & T110 & 2 \\ \hline
Whole & Whole & Vollkorn & T150 & Integrale \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,16 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|l|l|l|}
\hline
\textbf{Grain type} & \textbf{Homogenize} & \textbf{Knead} & \textbf{Stretch \& Fold} & \textbf{Shape} \\ \hline
\textbf{Wheat} & Yes & Yes & Yes & Yes \\ \hline
\textbf{\textgreater 70\% Wheat} & Yes & Yes & Yes & Yes \\ \hline
\textbf{Spelt} & Yes & Yes & Yes & Yes \\ \hline
\textbf{Rye} & Yes & No & No & No \\ \hline
\textbf{Emmer} & Yes & No & No & No \\ \hline
\textbf{Einkorn} & Yes & No & No & No \\ \hline
\textbf{Rice} & Yes & No & No & No \\ \hline
\textbf{Corn} & Yes & No & No & No \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,12 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{Oven type} & \textbf{Plain (no tools)} & \textbf{Inverted tray} & \textbf{Dutch oven} \\ \hline
Gas & No & No & Yes \\ \hline
\begin{tabular}[c]{@{}l@{}}Convection\\ (Fan always on)\end{tabular} & No & No & Yes \\ \hline
\begin{tabular}[c]{@{}l@{}}Convection\\ (Fan can be disabled)\end{tabular} & No & Yes & Yes \\ \hline
Steam & Yes & Yes & Yes \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,13 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|l|l|}
\hline
& \textbf{Flat bread} & \textbf{Loaf pan bread} & \textbf{Free standing bread} \\ \hline
\textbf{Cooking method} & Fire, pan, barbecue & Oven & Oven \\ \hline
\textbf{Working time in minutes} & 3 & 5 & 60 \\ \hline
\textbf{Flour types} & All & All & Gluten flours \\ \hline
\textbf{Difficulty} & Very easy & Easy & Difficult \\ \hline
\textbf{Cost} & Low & Medium & High \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,12 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|r|l|r|}
\hline
\textbf{W-Value} & \multicolumn{1}{l|}{\textbf{Hydration in \%}} & \textbf{Uses} & \multicolumn{1}{l|}{\textbf{Fermentation times}} \\ \hline
0-150 & 50 & Cookies & Very short \\ \hline
150-250 & 50-60 & Cakes, Bread, Pizza & Short-Medium \\ \hline
250-350 & 60-70 & Bread, Pizza & Long \\ \hline
350+ & 70-90 & Bread, Pizza & Very long \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,15 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|r|}
\hline
\textbf{Step} & \multicolumn{1}{l|}{\textbf{pH Value}} \\ \hline
Starter ready & 4.20 \\ \hline
Mixing & 6.00 \\ \hline
Dividing/preshaping & 4.10 \\ \hline
Shaping & 4.05 \\ \hline
Before proofing & 4.03 \\ \hline
After proofing & 3.80 \\ \hline
After baking & 3.90 \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,12 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|r|r|}
\hline
\textbf{Ingredient} & \multicolumn{1}{l|}{\textbf{Baker's math}} & \multicolumn{1}{l|}{\textbf{Calculated value}} \\ \hline
Flour & 100\% & 1400*1 = 1400g \\ \hline
Water & 60\% & 1400*0.6 = 840g \\ \hline
Sourdough starter & 10\% & 1400*0.1 = 140g \\ \hline
Salt & 2\% & 1400*0.02 = 28g \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,11 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|l|r|l|}
\hline
\textbf{Starter type} & \textbf{Hydration in \%} & \textbf{Flour type} & \multicolumn{1}{l|}{\textbf{Yeast activity}} & \textbf{Bacterial activity} \\ \hline
Regular & 100 & Strong wheat flour & Balanced & Balanced \\ \hline
Liquid & 500 & Very strong wheat flour & Minimal & High \\ \hline
Stiff & 50-60 & All wheat flour & High & Low \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,14 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{\begin{tabular}[c]{@{}l@{}}Temperature\\ in °C\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Temperature\\ in °F\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Starter\\ recently fed?\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Amount\\ of starter in\%\end{tabular}} \\ \hline
30 & 86 & Yes & 5 \\ \hline
25 & 77 & Yes & 10 \\ \hline
20 & 68 & Yes & 15 \\ \hline
30 & 86 & No & 2.5 \\ \hline
25 & 77 & No & 5 \\ \hline
20 & 68 & No & 10 \\ \hline
\end{tabular}
\end{document}

View File

@@ -0,0 +1,12 @@
\input{./vars}
\begin{document}
\begin{tabular}{|l|l|l|}
\hline
\textbf{Method} & \textbf{Advantages} & \textbf{Disadvantages} \\ \hline
\textbf{\begin{tabular}[c]{@{}l@{}}Room\\ temperature\end{tabular}} & \begin{tabular}[c]{@{}l@{}}The easiest option. Best for bread that\\ is eaten within a day. Crust typically\\ stays crisp when humidity not too high.\end{tabular} & Bread dries out very quickly. \\ \hline
\textbf{\begin{tabular}[c]{@{}l@{}}Room\\ temperature\\ in container\end{tabular}} & \begin{tabular}[c]{@{}l@{}}Good for up to a week. Catches mold\\ more quickly.\end{tabular} & \begin{tabular}[c]{@{}l@{}}Bread needs to be toasted\\ for crust to become crisp again.\end{tabular} \\ \hline
\textbf{Fridge} & \begin{tabular}[c]{@{}l@{}}Bread stays good for weeks. Can dry\\ out a little bit when not using air-tight\\ container.\end{tabular} & \begin{tabular}[c]{@{}l@{}}Bread needs to be toasted.\\ Requires fridge and energy.\end{tabular} \\ \hline
\textbf{Freezer} & Bread stays good for years. & \begin{tabular}[c]{@{}l@{}}Requires thawing and then\\ toasting. Requires freezer and\\ energy.\end{tabular} \\ \hline
\end{tabular}
\end{document}

1
book/tables/vars.tex Normal file
View File

@@ -0,0 +1 @@
\documentclass{standalone}

8
book/tex4ebook.cfg Normal file
View File

@@ -0,0 +1,8 @@
\Preamble{xhtml}
\begin{document}
\Configure{DocumentLanguage}{en}
\Configure{OpfScheme}{URI}
\Configure{UniqueIdentifier}{https://the-bread-code.io}
\Configure{CoverMimeType}{image/jpeg}
\CoverMetadata{images/cover-page.jpg}
\EndPreamble

View File

Before

Width:  |  Height:  |  Size: 388 KiB

After

Width:  |  Height:  |  Size: 388 KiB

View File

Before

Width:  |  Height:  |  Size: 1.5 MiB

After

Width:  |  Height:  |  Size: 1.5 MiB

View File

Before

Width:  |  Height:  |  Size: 1.0 MiB

After

Width:  |  Height:  |  Size: 1.0 MiB

View File

Before

Width:  |  Height:  |  Size: 1.6 MiB

After

Width:  |  Height:  |  Size: 1.6 MiB

View File

@@ -43,28 +43,7 @@ that tastes much better than any store-bought bread.
\section{The process}
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Ready starter};
\node [block, right of=init, node distance=3cm] (mix_ingredients) {\footnotesize Mix ingredients};
\node [block, right of=mix_ingredients, node distance=3cm] (dough_strength) {\footnotesize Create dough strength};
\node [block, right of=dough_strength, node distance=3cm] (bulk) {\footnotesize Bulk ferment};
\node [decision, below of=dough_strength, node distance=3cm] (divide_test) {\footnotesize Making 1 loaf?};
\node [block, left of=divide_test, node distance=3cm] (divide) {\footnotesize Divide};
\node [block, left of=divide, node distance=3cm] (preshape) {\footnotesize Preshape};
\node [block, below of=preshape, node distance=3cm] (shape) {\footnotesize Shape};
\node [block, right of=shape, node distance=3cm] (proof) {\footnotesize Proof};
\node [block, right of=proof, node distance=3cm] (bake) {\footnotesize Bake};
\path [line] (init) -- (mix_ingredients);
\path [line] (mix_ingredients) -- (dough_strength);
\path [line] (dough_strength) -- (bulk);
\path [line] (bulk) -- (divide_test);
\path [line] (divide_test) -- node{yes} (shape);
\path [line] (divide_test) -- node{no} (divide);
\path [line] (divide) -- (preshape);
\path [line] (preshape) -- (shape);
\path [line] (shape) -- (proof);
\path [line] (proof) -- (bake);
\end{tikzpicture}
\includegraphics{figures/fig-wheat-sourdough-process.pdf}
\caption{The typical process of making a wheat-based sourdough bread}
\label{fig:wheat-sourdough-process}
\end{figure}
@@ -116,36 +95,7 @@ doesn't have a good balance of yeast to bacteria, so will your
main dough.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [decision] (init) {\footnotesize Starter last fed within 3 days?};
\node [block, right of=init, node distance=4cm] (feed_no_branch)
{\footnotesize Feed starter twice. 48 hours before and 6-12 hours before};
\node [block, below of=feed_no_branch, node distance=3cm] (feed_yes_branch)
{\footnotesize Feed starter once 6-12 hours before making dough};
\node [block, right of=feed_no_branch, node distance=6cm] (high_ratio)
{\footnotesize Use a 1:10:10 ratio. 10g starter, 100g flour, 100g water};
\node [block, right of=feed_yes_branch, node distance=3cm] (low_ratio)
{\footnotesize Use a 1:5:5 ratio. 10g starter, 50g flour, 50g water};
\node [block, below of=high_ratio, node distance=6cm] (check_starter)
{\footnotesize Check if starter is ready to be used};
\node [decision, below of=init, node distance=6cm] (size_check)
{\footnotesize Bubbly? Increased in size?};
\node [decision, below of=size_check, node distance=5cm] (smell_check)
{\footnotesize Vinegary or yogurty smell?};
\node [block, right of=smell_check, node distance=6cm] (make_dough)
{\footnotesize Prepare dough};
\path [line] (init) -- node{no} (feed_no_branch);
\path [line] (init) -- node{yes} (feed_yes_branch);
\path [line] (feed_yes_branch) -- (low_ratio);
\path [line] (feed_no_branch) -- (high_ratio);
\path [line] (high_ratio) -- (check_starter);
\path [line] (low_ratio) -- (check_starter);
\path [line] (check_starter) -- (size_check);
\path [line] (size_check) -- node{no} (feed_yes_branch);
\path [line] (size_check) -- node{yes} (smell_check);
\path [line] (smell_check) -- node{no} (feed_yes_branch);
\path [line] (smell_check) -- node{yes} (make_dough);
\end{tikzpicture}
\includegraphics{figures/fig-wheat-sourdough-starter-process.pdf}
\caption{The process to check your sourdough starter when making wheat-based doughs. In practice
I frequently use a stiff sourdough starter. The stiff starter features enhanced yeast activity. In that case, you can
use the same ratios as shown in the chart except for the water quantity. The stiff starter has a hydration of 50 to
@@ -550,19 +500,10 @@ autolysis step might call for 20 percent sourdough starter. Simply reduce this
value to 5-10 percent. The other option could be to place the dough in a colder
environment and thus reduce the speed at which your microorganisms replicate.
\begin{table}[!htb]
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{\begin{tabular}[c]{@{}l@{}}Temperature\\ in °C\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Temperature\\ in °F\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Starter\\ recently fed?\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Amount\\ of starter in\%\end{tabular}} \\ \hline
30 & 86 & Yes & 5 \\ \hline
25 & 77 & Yes & 10 \\ \hline
20 & 68 & Yes & 15 \\ \hline
30 & 86 & No & 2.5 \\ \hline
25 & 77 & No & 5 \\ \hline
20 & 68 & No & 10 \\ \hline
\end{tabular}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-starter-usage-activity.pdf}
\caption{A table visualizing how much sourdough starter to use depending on temperature and the starter's activity level}
\end{table}
\end{figure}
Based on my experience and my sourdough my ideal bread always take around 8
to 12 hours during bulk fermentation. Based on my availability throughout
@@ -597,35 +538,7 @@ all the gases during the fermentation process. Without the gluten network,
the gases would just diffuse out of your dough.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Homogenize recipe ingredients};
\node [block, right of=init, node distance=3cm] (wait1) {\footnotesize Wait 15 minutes};
\path [line] (init) -- (wait1);
\node [block, right of=wait1, node distance=3cm] (knead1) {\footnotesize Knead 5 minutes};
\path [line] (wait1) -- (knead1);
\node [block, right of=knead1, node distance=3cm] (wait2) {\footnotesize Wait 15 minutes};
\path [line] (knead1) -- (wait2);
\node [decision, below of=wait2, node distance=3cm] (windowpane_test) {\footnotesize Window-pane?};
\path [line] (wait2) -- (windowpane_test);
\path [line] (windowpane_test) -- node{no} (knead1);
\node [decision, left of=windowpane_test, node distance=4.5cm] (more_water) {\footnotesize Bassinage for more water?};
\path [line] (windowpane_test) -- node{yes} (more_water);
\node [block, left of=more_water, node distance=4.5cm] (add_water) {\footnotesize Add water};
\path [line] (more_water) -- node{yes} (add_water);
\path [line] (add_water) -- (knead1);
\node [block, below of=add_water, node distance=4cm] (wait3) {\footnotesize Wait 15 minutes};
\path [line] (add_water) -- (wait3);
\node [decision, right of=wait3, node distance=4.5cm] (dough_sample) {\footnotesize Aliquot jar?};
\path [line] (wait3) -- (dough_sample);
\path [line] (more_water) -- node{no} (dough_sample);
\node [block, right of=dough_sample, node distance=4.5cm] (dough_ball) {\footnotesize Make round dough ball};
\path [line] (dough_sample) -- node{no} (dough_ball);
\node [block, below of=dough_sample, node distance=3cm] (extract_sample) {\footnotesize Extract sample};
\path [line] (dough_sample) -- node{yes} (extract_sample);
\path [line] (extract_sample) -- (dough_ball);
\node [block, below of=dough_ball, node distance=3cm] (begin_bulk) {\footnotesize Begin bulk fermentation};
\path [line] (dough_ball) -- (begin_bulk);
\end{tikzpicture}
\includegraphics{figures/fig-kneading-process.pdf}
\caption{The gluten development process for a wheat-based dough}
\label{fig:wheat-sourdough-kneading-process}
\end{figure}
@@ -811,19 +724,10 @@ the dough more toward a longer fermentation. The
flavor of the resulting bread is better compared to a pale
underfermented dough.
\begin{table}[!htb]
\small
\begin{tabular}{|l|l|l|l|}
\hline
\textbf{} & \textbf{\begin{tabular}[c]{@{}l@{}}Too short\\ fermentation\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Too long\\ fermentation\end{tabular}} & \textbf{\begin{tabular}[c]{@{}l@{}}Perfect\\ fermentation\end{tabular}} \\ \hline
\textbf{\begin{tabular}[c]{@{}l@{}}Crumb\\ texture\end{tabular}} & \begin{tabular}[c]{@{}l@{}}Unbaked gummy areas\\ towards the bottom of\\ the bread\end{tabular} & \begin{tabular}[c]{@{}l@{}}Crumb can be\\ perceived as\\ gummy, as most\\ gluten broken\\ down\end{tabular} & \begin{tabular}[c]{@{}l@{}}Crumb evenly baked.\\ Crumb can be perceived\\ as moist, but not\\ gummy\end{tabular} \\ \hline
\textbf{Alveoli} & \begin{tabular}[c]{@{}l@{}}Overly large alveoli\\ in the crumb "craters"\end{tabular} & \begin{tabular}[c]{@{}l@{}}Many tiny alveoli\\ equally distributed\end{tabular} & \begin{tabular}[c]{@{}l@{}}Alveoli evenly\\ distributed, no\\ "craters"\end{tabular} \\ \hline
\textbf{Taste} & Pale neutral taste & \begin{tabular}[c]{@{}l@{}}Strong acidic flavor\\ profile. Acidity\\ overweighs when\\ tasting\end{tabular} & \begin{tabular}[c]{@{}l@{}}Balanced flavor profile,\\ not too mild but also\\ not too sour. Depending\\ on starter vinegary\\ or lactic notes\end{tabular} \\ \hline
\textbf{Texture} & Overall poor Texture & \begin{tabular}[c]{@{}l@{}}Good consistency,\\ crumb is not as fluffy\\ as it could be\end{tabular} & \begin{tabular}[c]{@{}l@{}}Great combination of \\ textures\end{tabular} \\ \hline
\textbf{\begin{tabular}[c]{@{}l@{}}Oven\\ spring\end{tabular}} & \begin{tabular}[c]{@{}l@{}}Vertical oven spring,\\ mostly due to water\\ evaporating and\\ inflating the dough\end{tabular} & \begin{tabular}[c]{@{}l@{}}Very flat pancake like \\ structure after baking\end{tabular} & \begin{tabular}[c]{@{}l@{}}Great vertical oven\\ spring. Dough grows\\ more upwards rather\\ than sideways\end{tabular} \\ \hline
\end{tabular}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-fermentation-effects.pdf}
\caption{The different stages of sourdough fermentation and the effects on crumb, alveoli, texture, and overall taste.}
\end{table}
\end{figure}
The worst thing you can do when fermenting sourdough
is to rely on a recipe's timing suggestions. In 99 percent
@@ -867,17 +771,10 @@ I recommend beginning with a size increase of 25 percent and testing
up to 100 percent with subsequent bakes. Then identify a value
that you are happy with.
\begin{table}[!htb]
\begin{tabular}{|r|r|}
\hline
\multicolumn{1}{|l|}{\textbf{Flour protein content}} & \multicolumn{1}{l|}{\textbf{Relative aliquot size increase}} \\ \hline
8-10\% & 25\% \\ \hline
10-12\% & 50\% \\ \hline
12-15\% & 100\% \\ \hline
\textgreater 15\% & \textgreater 100\% \\ \hline
\end{tabular}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-dough-size-increase.pdf}
\caption{Reference values for how much size increase to aim for with an aliquot jar depending on the dough's protein content}
\end{table}
\end{figure}
The beauty of the aliquot is that no matter the surrounding
temperature, you will always know when your dough is ready.
@@ -951,21 +848,11 @@ you can use them as a reference for your next batch. If the
bread didn't turn out the way you like, either shorten
the fermentation or extend it a little bit.
\begin{table}[!htb]
\begin{tabular}{|l|r|}
\hline
\textbf{Step} & \multicolumn{1}{l|}{\textbf{pH Value}} \\ \hline
Starter ready & 4.20 \\ \hline
Mixing & 6.00 \\ \hline
Dividing/preshaping & 4.10 \\ \hline
Shaping & 4.05 \\ \hline
Before proofing & 4.03 \\ \hline
After proofing & 3.80 \\ \hline
After baking & 3.90 \\ \hline
\end{tabular}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{tables/table-ph-values-dough.pdf}
\caption{Example pH values for the different breakpoints of my own sourdough process}
\label{table:sample-ph-values}
\end{table}
\end{figure}
The beauty of this method is its reliability. Once you found
out your good working values, you can reproduce
@@ -1179,15 +1066,7 @@ The step is required if you are making multiple loaves in one
batch. It is optional if you are making a single loaf.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Dividing required?};
\node [decision, right of=init, node distance=5cm] (more_than_one_loaf) {\footnotesize More than 1 loaf?};
\node [block, right of=more_than_one_loaf, node distance=5cm] (yes) {\footnotesize Yes};
\node [block, below of=yes, node distance=3cm] (no) {\footnotesize No};
\path [line] (init) -- (more_than_one_loaf);
\path [line] (more_than_one_loaf) -- (yes);
\path [line] (more_than_one_loaf) -- (no);
\end{tikzpicture}
\includegraphics{figures/fig-dividing-preshaping.pdf}
\caption{Dividing is only required when you are making multiple loaves in a single dough batch}
\label{fig:dividing-decision-tree}
\end{figure}
@@ -1298,23 +1177,7 @@ your environment.
\section{Shaping}
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [block] (init) {\footnotesize Begin shaping};
\node [decision, right of=init, node distance=5cm] (overfermented_decision) {\footnotesize Dough overly sticky or dough tears?};
\node [block, right of=overfermented_decision, node distance=4cm] (overfermented) {\footnotesize Your dough is likely overfermented};
\node [block, right of=overfermented, node distance=3cm] (loafpan) {\footnotesize Move to loaf pan, short proof, then bake directly};
\node [block, below of=init, node distance=4cm] (shaping_technique) {\footnotesize Proceed with shaping technique};
\node [block, right of=shaping_technique, node distance=3cm] (flour) {\footnotesize Flour shaped dough};
\node [block, right of=flour, node distance=3cm] (banneton) {\footnotesize Place upside down in banneton};
\node [block, right of=banneton, node distance=3cm] (proof) {\footnotesize Begin proofing};
\path [line] (init) -- (overfermented_decision);
\path [line] (overfermented_decision) -- node{yes} (overfermented);
\path [line] (overfermented_decision) -- node{no} (shaping_technique);
\path [line] (shaping_technique) -- (flour);
\path [line] (flour) -- (banneton);
\path [line] (banneton) -- (proof);
\path [line] (overfermented) -- (loafpan);
\end{tikzpicture}
\includegraphics{figures/fig-shaping-process.pdf}
\caption{A schematic visualization of the shaping process including checks for an overfermented dough.}
\label{fig:shaping-decision-tree}
\end{figure}
@@ -1532,30 +1395,8 @@ at a slower rate at colder temperatures. But I doubt that they alter
their biochemical processes. More research is needed on the topic
of retarding and flavor development.
\begin{figure}[!htb]
\begin{tikzpicture}[node distance = 3cm, auto]
\node [decision] (init) {\footnotesize Room temperature proofing?};
\node [decision, right of=init, node distance=9cm] (retard_bake_decision) {\footnotesize Bake in less than 10 hours from now?};
\node [block, below of=init, node distance=4cm] (poke) {\footnotesize Poke the dough};
\node [block, right of=poke, node distance=4cm] (wait_poke) {\footnotesize Wait 15 minutes};
\node [decision, below of=poke, node distance=3cm] (dent_visible_decision) {\footnotesize Dent still visible after 1 minute?};
\node [block, right of=dent_visible_decision, node distance=4cm] (bake) {\footnotesize Score and bake};
\node [block, below of=retard_bake_decision, node distance=3cm] (wait_retard) {\footnotesize Wait 15 minutes};
\node [block, below of=wait_retard, node distance=3cm] (retard) {\footnotesize Proof in fridge at 4°C (40°F)};
\node [block, right of=wait_retard, node distance=3cm] (move_to_fridge) {\footnotesize Move dough directly to fridge};
\path [line] (init) -- node{yes} (poke);
\path [line] (init) -- node{no} (retard_bake_decision);
\path [line] (poke) -- (dent_visible_decision);
\path [line] (dent_visible_decision) -- node{yes} (bake);
\path [line] (dent_visible_decision) -- node{no} (wait_poke);
\path [line] (wait_poke) -- (poke);
\path [line] (retard_bake_decision) -- node{yes} (wait_retard);
\path [line] (retard_bake_decision) -- node{no} (move_to_fridge);
\path [line] (wait_retard) -- (retard);
\path [line] (move_to_fridge) -- (retard);
\path [line] (retard) -- (bake);
\end{tikzpicture}
\includegraphics{figures/fig-proofing-process.pdf}
\caption{A schematic overview of the different steps of the sourdough proofing process. The proofing technique to choose
depends on your availability and schedule.}
\label{fig:proofing-process}
@@ -1772,4 +1613,4 @@ scoring easier.
Another interesting trick is to bake your dough for 30 seconds without steam.
The hot air will dry out the dough's surface even further and simplify
the scoring technique. Experiment with the timing to identify your personal
sweet spot.
sweet spot.