Merge branch 'main' into 225-ebook-situation

This commit is contained in:
Ced
2023-10-11 09:40:47 +01:00
11 changed files with 148 additions and 132 deletions

View File

@@ -127,12 +127,12 @@ crust building. During the first stage of the bake, the dough
increases in size. The water in your dough evaporates and pushes
the whole dough upwards.
\begin{flowchart}[!htb]
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{baking-process-steam.jpg}
\caption[Steam building with inverted tray]{How steam builds in your oven
using the later described inverted tray method.}%
\label{flc:inverted-tray}
\end{flowchart}
\end{figure}
Normally, under high heat a crust would form. Just like
if you were to bake vegetables in your home oven, at some point
@@ -271,14 +271,14 @@ By placing another tray on top of your dough, the steam
created from the dough and water source stays
around your dough.
\begin{figure}[!htb]
\begin{flowchart}[!htb]
\begin{center}
\input{figures/fig-inverted-tray-method.tex}
\caption[Inverted tray baking process]{A schematic visualization the
inverted tray baking method that works great for home ovens.}%
\label{fig:inverted-tray-process}
\end{center}
\end{figure}
\end{flowchart}
The biggest advantage of this method compared to the

View File

@@ -1,13 +1,13 @@
\begin{tikzpicture}[node distance = 3cm, auto]
\node [start] (init) {Mix ingredients};
\begin{tikzpicture}[node distance = 3.8cm, auto]
\node [start] (init) {Mix \\ingredients};
\node [block, below of=init, node distance = 3cm] (bulk_ferment) {Bulk ferment};
\node [block, right of=init, node distance=3cm] (divide) {Divide};
\node [block, below of=divide, node distance=3cm] (shape) {Shape};
\node [block, right of=divide, node distance=3cm] (proof) {Proof};
\node [success, below of=proof, node distance=3cm] (bake) {Bake};
\node [block, right of=init] (divide) {Divide};
\node [block] at (divide |- bulk_ferment) (shape) {Shape};
\node [block, right of=divide] (proof) {Proof};
\node [success] at (proof |- bulk_ferment) (bake) {Bake};
\path [line] (init) -- (bulk_ferment);
\path [line] (bulk_ferment) -- (divide);
\path [line] (bulk_ferment.north east) -- (divide.south west);
\path [line] (divide) -- (shape);
\path [line] (shape) -- (proof);
\path [line] (shape.north east) -- (proof.south west);
\path [line] (proof) -- (bake);
\end{tikzpicture}

Binary file not shown.

Before

Width:  |  Height:  |  Size: 42 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -6,7 +6,7 @@ CLEAN := latexmk -cd -lualatex -c -use-make
CHECK_1 := lacheck
CHECK_2 := chktex
# we want bash as shell
# We want bash as shell
SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
else if [ -x /bin/bash ]; then echo /bin/bash; \
else echo sh; fi; fi)
@@ -38,6 +38,8 @@ images += $(wildcard images/*/*.png)
images += $(foreach directory, $(chapters), $(wildcard $(directory)/*.jpg))
images += $(foreach directory, $(chapters), $(wildcard $(directory)/*.png))
bw_images := $(addprefix bw-book-epub/OEBPS/, $(images))
src_all := $(src_tex) $(src_figures) $(src_tables) tex4ebook.cfg book.mk4 $(images)
website_src := $(src_all) website.cfg
@@ -79,6 +81,23 @@ book_sans_serif/book_sans_serif.pdf: $(src_all)
epub/%.epub: %.tex $(src_all) cover/cover-page.xbb
$(EBOOK) -f epub $<
copy_ebook_files: build_ebook
mkdir -p bw-book-epub/
rsync -au --exclude "book.epub" book-epub/ bw-book-epub/
convert_ebook_images: copy_ebook_files
mogrify -resize '800x800>' \
tstrip -interlace Plane -gaussian-blur 0.05 -quality 85\% \
-set colorspace Gray -separate -evaluate-sequence Mean $(bw_images)
bw_ebook.zip: convert_ebook_images
zip -qXr9D bw_ebook.zip bw-book-epub
epub/bw_book.epub: bw_ebook.zip
mv bw_ebook.zip epub/bw_book.epub
bw_epub: epub/bw_book.epub
# Now with the rules
# Expected usual rules first
@@ -90,14 +109,16 @@ help:
@echo ""
@echo "default: builds the book in pdf format (serif)"
@echo ""
@echo "all: pdf and ebooks serif and sans-serif accessible version, same as"
@echo " build release"
@echo "all: pdf serif and sans-serif accessible version, as well as ebooks"
@echo " in colour and black&white versions"
@echo ""
@echo "bake: same as build all"
@echo ""
@echo "check: runs static analysis checker on LaTeX source to spot"
@echo " programming or typographic mistakes"
@echo ""
@echo "clean: delete all intermediate files keep targets (pdf/ebooks/website)"
@echo ""
@echo "mrproper: delete all generated files intermediate and pdf/ebooks/website"
@echo " clean_figures: delete intermediate TikZ files"
@echo " clean_website_build: delete intermediate website files"
@@ -105,7 +126,9 @@ help:
@echo ""
@echo "build_pdf: builds both serif and accessible pdf"
@echo ""
@echo "build_ebook: builds only the ebook"
@echo "build_ebook: builds only the colour ebook"
@echo ""
@echo "build_bw_ebook: builds the low res black & white ebook"
@echo ""
@echo "build_sans_serif_pdf: build accessible pdf only"
@echo ""
@@ -123,7 +146,7 @@ help:
@echo ""
@echo "quick: compiles serif_pdf but runs lulatex only once"
@echo ""
@echo "quick_ebook: compiles serif_ebook but runs lulatex only once"
@echo "quick_ebook: compiles ebook but runs lulatex only once"
@echo ""
@echo "show_tools_version: Show version of tools used on the build machine"
@echo ""
@@ -134,30 +157,26 @@ help:
@echo "set DEBUG i.e make DEBUG=1 build_ebook to add debug flags to commands"
# Finally project specif targets
.PHONY: build_pdf
# Finally actual project targets (i.e. build pdf and ebooks)
.PHONY: build_pdf build_serif_pdf build_sans_serif_pdf build_ebook
build_pdf: build_serif_pdf build_sans_serif_pdf
.PHONY: build_serif_pdf
build_serif_pdf: book_serif/book.pdf
.PHONY: build_sans_serif_pdf
build_sans_serif_pdf: book_sans_serif/book_sans_serif.pdf
.PHONY: build_ebook
build_ebook: build_serif_ebook
build_ebook: epub/book.epub | make_release_dir
.PHONY: build_serif_ebook
build_serif_ebook: epub/book.epub | make_release_dir
build_bw_ebook: epub/bw_book.epub | make_release_dir
.PHONY: export_figures
.PHONY: export_figures check
# Requires that you have docker running on your computer.
export_figures: build_pdf $(tgt_figures)
cd figures/ && bash export_figures.sh
# Goal is not really to have 0 warning reported but we should check we don't
# add many and if we do, we know they are false positive
PHONY: check
check: $(SRC_TEX)
@echo "Running: " $(CHECK_1)
$(CHECK_1) book.tex
@@ -165,7 +184,9 @@ check: $(SRC_TEX)
@echo "Running: " $(CHECK_2)
$(CHECK_2) book.tex
.PHONY: clean_figures
# Clean up and delete generated files
.PHONY: clean_figures clean_ebook_build clean_website_build clean mrproper
clean_figures:
- $(CLEAN) $(patsubst %.tex, %.png.in, $(src_figures))
- rm $(patsubst %.tex, %.png.pdf, $(src_figures))
@@ -173,7 +194,6 @@ clean_figures:
- rm $(wildcard figures/*.png.*)
- rm cover/cover-page.xbb
.PHONY: clean_ebook_build
clean_ebook_build:
-rm book*.{4ct,4tc,aux,bbl,bcf,blg,dvi,fdb_latexmk,fls,html}
-rm book*.{idv,lg,loc,log,ncx,run.xml,tmp,xref}
@@ -181,13 +201,11 @@ clean_ebook_build:
-rm book.css
-rm content.opf
.PHONY: clean_website_build
clean_website_build: clean_ebook_build
-rm book-*.svg
-rm book.{loc,dlog}
-rm $(subst $(website_dir)/,, $(wildcard $(website_dir)/*.html))
.PHONY: clean
clean: clean_ebook_build clean_figures clean_website_build
$(CLEAN) -output-directory=book_serif book.tex
$(CLEAN) -output-directory=book_sans_serif book_sans_serif.tex
@@ -196,7 +214,6 @@ clean: clean_ebook_build clean_figures clean_website_build
-rm -rf book*-epub/OEBPS
-rm book*-epub/mimetype
.PHONY: mrproper
mrproper: clean
$(CLEAN) -C $(src_figures)
$(CLEAN) -C -output-directory=book_serif book.tex
@@ -211,27 +228,26 @@ mrproper: clean
-rm -rf book-epub/
-rm -rf $(website_dir)
.PHONY: bake
# top level releases rules
.PHONY: bake make_release_dir release_serif release_sans_serif
bake: release_serif release_sans_serif
.PHONY: make_release_dir
make_release_dir:
mkdir -p release
.PHONY: release_serif
release_serif: build_serif_pdf build_serif_ebook | make_release_dir
release_serif: build_serif_pdf build_ebook build_bw_ebook | make_release_dir
cp book_serif/book.pdf release/TheBreadCode-The-Sourdough-Framework.pdf
cp epub/book.epub release/TheBreadCode-The-Sourdough-Framework.epub
.PHONY: release_sans_serif
release_sans_serif: build_sans_serif_pdf | make_release_dir
cp book_sans_serif/book_sans_serif.pdf release/TheBreadCode-The-Sourdough-Framework-sans-serif.pdf
# Website stuff
.PHONY: html website
$(website_dir)/book.html: $(website_src) cover/cover-page.xbb
$(WEBSITE) -d $(website_dir) book.tex
.PHONY: html
html: $(website_dir)/book.html
cp $< $(website_dir)/index.html
@@ -243,18 +259,17 @@ html: $(website_dir)/book.html
touch ../website/$@
# TODO: this will run every single time, but is so fast we don't really care
.PHONY: website
website: html ../website/_bundle_install_done $(ruby_src)
cd ../website && ruby modify_build.rb
# Debug Stuff from now on
.PHONY: quick show_tools_version printvars
# Those 2 targets allow fast debug cycles but not reolvig refrences etc
quick: # run latex only once no biber, no references etc..
# Those 2 targets allow fast debug cycles but not resolving references etc
quick: # run latex only once no biber, no references etc...
$(LATEX) -e '$$max_repeat=1' -output-directory=book_serif book.tex
quick_ebook: cover/cover-page.xbb # run latex only once no biber, refe etc..
quick_ebook: cover/cover-page.xbb # run latex only once no biber, ref etc...
$(EBOOK) --mode draft -f epub book.tex
show_tools_version: # Show version of tools used on the build machine

View File

@@ -1,13 +1,38 @@
\chapter{Non wheat sourdough}%
\label{chapter:non-wheat-sourdough}
\begin{quoting}
In this chapter you will learn how to make a basic sourdough bread
using non-wheat flour. This includes all flour except spelt.
using non-wheat flour, basically all flour except spelt.
The key difference between wheat and non-wheat flour is
the quantity of gluten. Wheat and spelt feature a high amount
of gluten. The non-wheat flours do not. In the case of rye flour,
sugars called pentosans prevent gluten bonds from properly
forming~\cite{rye+pentosans}.
the quantity of gluten, the former feature a high amount
of gluten, while the non-wheat flours do not.
\end{quoting}
The whole process (see Flowchart~\ref{flc:non-wheat-sourdough}) is a lot
easier: you mix the ingredients and wait for a certain period until the dough
has reached the level of acidity that you like. Afterward, you shape the
dough or pour it into a loaf pan. After a short proofing period, the bread can
be baked. Due to the lack of gluten development, the final bread will feature
a denser crumb compared to wheat, as you can see in
Picture~\ref{fig:rye-crumb}.
\begin{flowchart}[!htb]
\begin{center}
\input{figures/fig-non-wheat-process.tex}
\caption[Process for non-wheat sourdough bread]{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.}%
\label{flc:non-wheat-sourdough}
\end{center}
\end{flowchart}
For non-wheat flours---including rye, emmer, and einkorn---no gluten
development has to be done, meaning there is no kneading, no
over-fermentation, and no issues with making flat bread. In the case of rye
flour, sugars called pentosans prevent gluten bonds from properly
forming~\cite{rye+pentosans}.
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{final-bread}
\caption[Sourdough rye bread]{A sourdough rye bread made using a loaf pan.
@@ -16,49 +41,28 @@ forming~\cite{rye+pentosans}.
\label{fig:non-wheat-final-bread}
\end{figure}
For these flours including rye, emmer, and einkorn, no gluten
development has to be done. This means there is no kneading,
no over-fermentation, and no issues with making flat bread.
The whole process
is a lot easier. You mix the ingredients and
wait for a certain period until the dough has
reached the level of acidity that you like. Afterward, you
shape the dough or pour it into a loaf pan. After a short proofing
period, the bread can be baked. Due to the lack
of gluten development, the final bread will feature a denser
crumb compared to wheat.
\begin{flowchart}[!htb]
\begin{center}
\input{figures/fig-non-wheat-process.tex}
\caption[Process for non-wheat sourdough bread]{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.}%
\label{fig:non-wheat-sourdough}
\end{center}
\end{flowchart}
This chapter will focus on making rye bread. The flour could
be replaced with einkorn or emmer based on your preference.
The following recipe will make you 2 loaves:
\begin{itemize}
\item \qty{1000}{\gram} of whole rye flour
\item \qty{800}{\gram} of room temperature water (\qty{80}{\percent})
\item \qty{200}{\gram} of sourdough starter (\qty{20}{\percent})
\item \qty{20}{\gram} of salt (\qty{2}{\percent})
\end{itemize}
\begin{tabular}{r@{}rl@{}}
\qty{1000}{\gram} &~(\qty{100}{\percent}) & Whole rye flour\\
\qty{800}{\gram} & (\qty{80}{\percent}) & Water at room temperature\\
\qty{200}{\gram} & (\qty{20}{\percent}) & Sourdough starter\\
\qty{20}{\gram} & (\qty{2}{\percent}) & Salt\\
\end{tabular}
The sourdough starter can be in an active or inactive state. If it has been
at room temperature for a week with no feedings then it will be okay, or
at room temperature for a week with no feedings then it will be okay, same
if it has come right out of the fridge then still it will be no problem.
The dough is very forgiving.
If you follow the suggested dough from the recipe you are making a relatively
wet rye dough. It's so wet that it can only be made using a loaf pan. If
you want to make a freestanding rye bread, consider reducing the hydration
to around \qty{60}{\percent}.
If you follow the suggested quantities from the recipe you are making a
relatively wet rye dough. It's so wet that it can only be made using a loaf
pan. If you want to make a freestanding rye bread, consider reducing the
hydration to around~\qty{60}{\percent}.
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{ingredients}
@@ -68,12 +72,11 @@ to around \qty{60}{\percent}.
\label{fig:non-wheat-ingredients}
\end{figure}
Mix together all the ingredients with your hands. You can also
opt for a spatula to simplify things. Rye flour itself is very
sticky and unpleasant to mix by hand. The dough will stick
a lot to your hands. If you use a stiff starter, it can be
easier to dissolve it in the dough's water. Once dissolved,
add the other ingredients.
Mix together all the ingredients with your hands, or opt for a spatula to
simplify things. Rye flour itself is very sticky and unpleasant to mix by
hand, the dough will stick a lot to your hands. If you use a stiff starter, it
could be easier to first dissolve it in the dough's water, then add the other
ingredients.
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{sticky-hands}
@@ -84,7 +87,7 @@ add the other ingredients.
\label{fig:non-wheat-sticky-hands}
\end{figure}
The goal of the mixing process is to homogenize the dough. There
The goal of the mixing process is simply to homogenize the dough, there
is no need to develop any dough strength. Once you see that
your sourdough starter has been properly incorporated, your
dough is ready to begin bulk fermentation.
@@ -97,21 +100,11 @@ most of the nutrients have been eaten by your microorganisms.
You could let your dough sit for longer, but it wouldn't alter the
final flavor profile by much.
I~recommend waiting until the dough has roughly increased by~\qty{50}{\percent}
in size. If you are daring, you can taste the dough
to get an idea of the acidity profile. The dough will likely
taste very sour. However, a lot of the acid will evaporate
during the baking process. So the final loaf will not be
as sour as the dough you are tasting.
Once you are happy with the acidity level, proceed to dividing
and shaping your dough. Shaping might not be possible if you opt
for the wetter dough. If you made a drier dough, use as much
flour as needed to dry the dough a little bit and form a dough ball.
There is no folding the dough. All you do is tuck it together
as much as is needed to apply the shape of your banneton.
For the wetter dough, use a spatula and pour as much dough as
needed into your greased loaf pan.
I~recommend waiting until the dough has roughly increased
by~\qty{50}{\percent} in size. If you are daring, you can taste the dough to
get an idea of the acidity profile, it will likely taste very sour. However, a
lot of the acid will evaporate during the baking process, therefore the final
loaf will not be as sour as the dough you are tasting.
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{crumb}
@@ -124,15 +117,21 @@ needed into your greased loaf pan.
\label{fig:rye-crumb}
\end{figure}
Carefully spread the dough with a spatula in your loaf pan. You
can wet the spatula to make this process easier. Spread it
until the surface looks smooth and shiny.
Once you are happy with the acidity level, proceed to dividing
and shaping your dough. If you made a drier dough, use as much
flour as needed to dry the dough a little bit and form a dough ball.
There is no folding the dough. All you do is tuck it together
as much as is needed to apply the shape of your banneton.
Shaping might not be possible if you opt for the wetter dough. Carefully spread
the dough with a spatula in your greased loaf pan, wetting the spatula to make
this process easier. Spread it until the surface looks smooth and shiny.
For proofing, I~recommend waiting around 60~minutes. An extended
proofing period does not make sense unless you want to further
increase the dough's acidity. The dough will not become fluffier
the longer you proof. With the short proofing period, however,
the dough will become a bit more homogenous. This way the final
the dough will become a bit more homogeneous. This way the final
bread looks more uniform. The proofing period also allows the
dough to fully extend and fill the edges of the loaf pan. I~also
like to move the dough to the fridge for proofing. The dough stays
@@ -140,24 +139,23 @@ good in the fridge for weeks. You can proceed and bake it at a
convenient time for you.
Once you are happy with the proofing stage, proceed and bake your dough
just like you'd normally do. For more details please refer to
just like you'd normally do, more details can be found in
Chapter~\ref{chapter:baking}. One challenging aspect
of using a loaf pan is to make sure that the center part of your
dough is properly cooked. For this reason, it is best to use a thermometer
and measure the internal temperature. The bread is
ready once the internal temperature reaches \qty{92}{\degreeCelsius} (\qty{197}{\degF}). I~recommend
removing the bread from the loaf pan once it reaches the desired
temperature. Then you can continue baking the loaf without the pan and
steam. This way you achieve a great crust all around your
loaf. You can bake as long as you like until you have achieved
your crust color of choice. The darker, the more crunchy
the crust and the more flavor it offers. If you feel your
dough might have been overly acidic, you can extend the baking time.
The longer you bake, the more acidity will evaporate.
and measure the internal temperature. The bread is ready once the internal
temperature reaches \qty{92}{\degreeCelsius} (\qty{197}{\degF}). I~recommend
removing the bread from the loaf pan once it reaches the desired temperature,
then continue baking the loaf without the pan and steam. This way you achieve
a great crust all around your loaf, and can bake as long as you like until you
have achieved your crust color of choice. The darker, the more crunchy
the crust and the more flavor it offers. If you feel your dough might have
been overly acidic you can extend the baking time, as the longer you bake, the
more acidity will evaporate.
This is one of my favorite breads to bake which I~eat on an
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 will have a very complex but delicious flavor profile.

Binary file not shown.

After

Width:  |  Height:  |  Size: 335 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

After

Width:  |  Height:  |  Size: 250 KiB

View File

@@ -1,10 +1,13 @@
\chapter{Storing bread}%
\label{chapter:storing-bread}
\begin{quoting}
In this chapter you will learn about different
methods of storing your bread. This way
your bread can be best enjoyed at a later
time.
In this chapter you will discuss different methods of storing your bread, each
with their own pro and cons. This way your bread can be best enjoyed at a
later time.
\end{quoting}
A summary can be found in Table~\ref{table:bread-storage}, with details and
explanation in th rest of this chapter.
\begin{table}[!htb]
\begin{center}
\input{tables/table-storing-bread-overview.tex}
@@ -35,7 +38,7 @@ A low-hydration recipe can dry out after 1--2 days;
a high-hydration bread needs 3--4 days to dry out.
Once your bread has dried out, you can run it under
tap water for around 10 to 15 seconds.
tap water for around 10 to 15~seconds.
This water bath allows the
crumb's starch to absorb a lot of water. Proceed and
bake your bread again in the oven. The resulting loaf
@@ -55,9 +58,9 @@ base ingredients for other recipes such as \emph{Knödel}\footnote{\emph{Knödel
Just like the previous option, you can also store your
bread inside a container. This could be a paper bag,
a plastic bag, or a bread storage box. The paper bag and
most bread boxes are not fully sealed. They allow some of
the air to diffuse out of the container. This means that
the bread will also slightly dry out.
most bread boxes are not fully sealed, allowing some of
the air to diffuse out of the container. This also means that
the bread will slightly dry out.
When using a sealed bag such as a plastic bag, the bread
will retain a lot of moisture. The bread will stay good
@@ -81,7 +84,7 @@ inhibitor.
\section{Fridge}
In my own experience storing bread inside the fridge
works well as long as you use a sealed container. Some
works well as long as you use a sealed container, even if some
sources say that the bread dries out inside of the
fridge~\cite{storing+bread}. Supposedly the fridge
encourages liquid from the crumb to migrate to the bread's surface.
@@ -103,10 +106,10 @@ that you can consume within a day. Store each portion
in a separate container and place them inside your
freezer.
When you want to eat fresh bread, open one of the portions
When you want to eat fresh bread, open one of the containers
in the morning and allow the bread to thaw over a few
hours. This way you can easily remove the frozen-together
slices. Proceed and toast the slices in your toaster
hours. This is needed so you can easily separate the frozen-together
slices. Toast the slices in your toaster
or bake them in the oven until they have the crispness
that you like.

View File

@@ -189,7 +189,7 @@ the top.
\begin{figure}[!htb]
\begin{center}
\includegraphics[width=0.5\textwidth]{hooch}
\includegraphics[width=0.5\textwidth]{sourdough-starter-hooch}
\caption[Hooch] {Hooch building on top of a sourdough
starter~\cite{liquid+on+starter}.}%
\label{fig:hooch}