Merge branch 'main' into 225-ebook-situation

This commit is contained in:
Cedric
2025-01-05 21:23:29 +00:00
56 changed files with 1723 additions and 266 deletions

View File

@@ -64,7 +64,7 @@ jobs:
options: -v ${{ github.workspace }}:/app
run: |
cd /app/book
make -j bake
make -j -O bake
- name: Release baked book to S3
uses: shallwefootball/s3-upload-action@master
with:
@@ -74,21 +74,13 @@ jobs:
source_dir: book/release
destination_dir: release
- name: Upload book Artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: books
path: |
book/book_serif/book.log
book/book_serif/book.pdf
book/book-epub/book.epub
- name: Bake the website
uses: addnab/docker-run-action@v3
with:
image: ${{ env.LATEST_IMAGE }}
options: -v ${{ github.workspace }}:/app
run: |
cd /app/book
make mrproper && make website
- name: Release baked website to S3
uses: shallwefootball/s3-upload-action@master
with:
@@ -98,7 +90,7 @@ jobs:
source_dir: website/static_website_html
destination_dir: static_html_root
- name: Upload website Artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: website
path: website/static_website_html

View File

@@ -1,6 +1,12 @@
name: Test book and website for given image
on: [push, pull_request]
on:
push:
branches-ignore:
- main
pull_request:
branches:
- '**'
env:
DOCKER_IMAGE: ghcr.io/${{ github.repository }}:latest
@@ -27,32 +33,24 @@ jobs:
run: |
cd /app/book
make printvars
- name: Test baking the release versions
- name: Test baking the release versions and website
uses: addnab/docker-run-action@v3
with:
image: ${{ env.DOCKER_IMAGE }}
options: -v ${{ github.workspace }}:/app
run: |
cd /app/book
make -j build_serif_pdf build_ebook
make -j -O build_serif_pdf build_ebook website
- name: Upload book Artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: books
path: |
book/book_serif/book.log
book/book_serif/book.pdf
book/book-epub/book.epub
- name: Test building website
uses: addnab/docker-run-action@v3
with:
image: ${{ env.DOCKER_IMAGE }}
options: -v ${{ github.workspace }}:/app
run: |
cd /app/book
make mrproper && make website
- name: Upload website Artifacts
uses: actions/upload-artifact@v3
uses: actions/upload-artifact@v4
with:
name: website
path: website/static_website_html

4
.gitignore vendored
View File

@@ -15,7 +15,6 @@
*.dlog
*.bak
*.opf
.DS_Store
book/book.out
.vscode/
book/bookch*
@@ -42,3 +41,6 @@ book/epub/
book/book-epub/
book/bw-book-epub/*
book/release/*
book/low-res-book-epub/*
book/epub_build/*
book/website_build/*

View File

@@ -8,7 +8,7 @@ LABEL org.opencontainers.image.source="https://github.com/hendricius/the-sourdou
# Print release information if needed
RUN cat /etc/*release*
# Install base depdendencies
# Install base dependencies
RUN apt-get update && \
apt-get install --yes -y --no-install-recommends \
sudo \

View File

@@ -84,6 +84,13 @@ size. This shrinks the book from more than 50MB down to ~5MB:
* [Download compiled B&W .epub version](https://www.the-bread-code.io/bw-book.epub)
If you prefer a very short version (about 10 pages) with main flowcharts and
crucial information needed while you are in the kitchen, we also provide a
"too long;didn't read" version you could print. Having read the full book is
highly recommended to understand this leaflet:
* [Download a condensed version](https://www.the-bread-code.io/booklet.pdf)
## Online HTML version
Head over to [https://www.the-sourdough-framework.com](https://www.the-sourdough-framework.com)

Binary file not shown.

Before

Width:  |  Height:  |  Size: 369 KiB

View File

@@ -62,7 +62,7 @@ full acidity? What if you were to just completely get rid of the acetic
acid? How would the taste change?
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{baking-experiment-temperatures.png}
\input{plots/fig-temperature-surface.tex}
\caption[Surface temperature for different steaming methods]{This
chart shows how surface temperatures change using different steaming
methods. In this case I~used a Dutch oven and an apple as dough

View File

@@ -19,7 +19,7 @@ learn more about the yeast and bacterial microorganisms involved.
To understand the many enzymatic reactions that take place when flour
and water are mixed, we must first understand seeds and their role in
the lifecycle of wheat and other grains.
the life cycle of wheat and other grains.
Seeds are the primary means by which many plants, including wheat,
reproduce. Each seed contains the embryo of another plant, and must

View File

@@ -17,10 +17,8 @@
\ifdefined\HCode\else\tableofcontents\fi
}
\chapter{ebook problems}
Dès Noël, où un zéphyr haï me vêt de glaçons würmiens, je dîne dexquis rôtis
de bœuf au kir, à laÿ dâge mûr, \&cætera.
Jörg bäckt quasi zwei Haxenfüße vom Wildpony.
\input{intro/preface}
\input{intro/acknowledgments}
\begin{flowchart}[!htb]
\begin{center}

174
book/booklet.tex Normal file
View File

@@ -0,0 +1,174 @@
\documentclass[paper=a4, twoside=false, fontsize=12pt]{scrbook}
% General packages
\usepackage{sourdough}
\usepackage[
paperwidth=210mm,
paperheight=260mm,
top=10mm,
bottom=80mm,
inner=10mm,
outer=10mm,
marginparsep=7mm,
marginparwidth=48mm,
]{geometry}
\usepackage{subcaption}
\pagenumbering{gobble}
% Basic attributes
\author{Hendrik Kleinwächter}
\title{The Sourdough Framework\\\texttt{tl;dr Booklet Version}}
\begin{document}
\maketitle
\section*{Sourdough starter}
\begin{flowchart}[!htb]
\centering
\input{figures/fig-starter-process.tex}
\caption*{How to setup a sourdough starter}
\end{flowchart}
\begin{flowchart}[!htb]
\centering
\input{figures/fig-starter-readiness.tex}
\caption*{Preparing your starter for baking}
\end{flowchart}
\begin{flowchart}[!htb]
\centering
\input{figures/fig-starter-maintenance.tex}
\caption*{Maintaining your starter, change ratio as per starter hydration
type}
\end{flowchart}
\clearpage{}
\section*{Baker's math}
\begin{table}[!htb]
\centering
\input{tables/table-bakers-math-example.tex}
\caption*{An example table demonstrating how to properly calculate using
baker's math. All the ingredients are calculated as a percentage of the
flour quantity.}
\end{table}
\section*{Basic recipes}
\subsection*{Flat bread}
\input{recipes/flat-bread.tex}
\clearpage{}
\subsection*{Freestanding \& sandwich wheat-based breads}
\begin{table}[!htb]
\centering
\begin{tabular}{@{}lrrrp{0.4\linewidth}@{}}
\toprule
\thead{Ingredient}& & \thead{Percentage} & \thead{Calculation} & \thead{Comments} \\ \midrule
Flour & \qty{400}{g} & & & \\
Whole-wheat flour & \qty{100}{g} & & & \\
Total flour & & \qty{100}{\percent} & \qty{500}{g} & \\
Water & & \qty{60}{\percent} & \qty{300}{g} & \\
Sourdough starter & & \qty{10}{\percent} & \qty{50}{g} & \\
Salt & & \qty{2}{\percent} & \qty{10}{g} & \\ \midrule
Flour & & \qty{100}{\percent} & & \\
Water & & & & \\
Sourdough starter & & & & \\
Salt & & & & \\ \midrule
Flour & & & & \\
& & & & \\
& & & & \\
& & & & \\
& & & & \\ \bottomrule
\end{tabular}
\caption*{Table for your own calculation using baker's math}
\end{table}
\begin{flowchart}[!htb]
\centering
\input{figures/fig-wheat-sourdough-process.tex}
\caption*{The whole process of making wheat based sourdough breads}
\end{flowchart}
\begin{flowchart}[!htb]
\centering
\input{figures/fig-kneading-process.tex}
\caption*{The kneading process to create dough strength}
\end{flowchart}
\begin{flowchart}[!htb]
\centering
\input{figures/fig-bulk-fermentation.tex}
\caption*{How to properly manage bulk fermentation}
\end{flowchart}
\begin{figure*}[!htb]
\centering
\includegraphics[width=\textwidth]{stretch-and-fold-steps}
\caption*{An overview of the steps involved to perform stretch and folds for
wheat-based doughs. They are optional and should only be done when the dough
flattened out a lot.}%
\end{figure*}
\clearpage{}
\section*{Shaping}
\begin{figure*}[!htb]
\centering
\begin{subfigure}{.475\linewidth}
\includegraphics[width=\linewidth]{preshape-direction}
\caption*{Preshaping: Drag the dough in the direction of the rough
surface area.}%
\end{subfigure}
\begin{subfigure}{.475\linewidth}
\includegraphics[width=\linewidth]{step-1-flour-applied}
\caption*{Step 1: Apply flour to the dough's surface.}%
\end{subfigure}\hfill % <-- "\hfill"
\medskip % create some *vertical* separation between the graphs
\begin{subfigure}{.475\linewidth}
\includegraphics[width=\linewidth]{step-2-flipped-over}
\caption*{Step 2: Flipp-over dough. Note how the sticky side is facing
you while the floured side is facing the countertop.}
\end{subfigure}\hfill % <-- "\hfill"
\begin{subfigure}{.475\linewidth}
\includegraphics[width=\linewidth]{step-3-rectangular}
\caption*{Step 3: Make the dough rectangular, keep the sticky side
facing you while the floured side is facing the countertop.}%
\end{subfigure}
\caption*{First steps of shaping process}
\end{figure*}
\begin{figure*}[htb!]
\centering
\includegraphics[width=\textwidth]{step-4-folding}
\caption*{Step 4: The process of folding a batard. Note how the rectangle
is first glued together and then rolled inwards to create a dough roll.
Ultimately the edges are sealed to create a more uniform dough.}%
\end{figure*}
\clearpage{}
\section*{Proofing}
\begin{flowchart}[!htb]
\centering
\input{figures/fig-proofing-process.tex}
\end{flowchart}
\clearpage{}
\section*{Baking}
\begin{flowchart}[!htb]
\centering
\input{figures/fig-baking-process.tex}
\caption*{Summary of different bread baking processes}
\end{flowchart}
\begin{flowchart}[!htb]
\centering
\input{figures/fig-inverted-tray-method.tex}
\caption*{Baking with the inverted tray method}
\end{flowchart}
\begin{flowchart*}[!htb]
\centering
\input{figures/fig-dutch-oven-process.tex}
\caption*{Baking with a Dutch Oven}
\end{flowchart*}
\clearpage{}
\end{document}

View File

@@ -242,57 +242,10 @@ culinary applications. Whether you're scooping up a savory dip,
wrapping a flavorful filling, or simply enjoying a piece with a drizzle
of olive oil, these flatbreads are sure to impress.
\subsubsection*{Ingredients}
\input{recipes/flat-bread.tex}
\begin{tabular}{r@{}rl@{}}
\qty{400}{\gram} &~(\qty{100}{\percent}) & Flour (wheat, rye, corn, whatever you have at hand)\\
\qty{320}{\gram} & (\qty{80}{\percent}) & Water, preferably at room temperature\\
\qty{80}{\gram} & (\qty{20}{\percent}) & Active sourdough starter\\
\qty{8}{\gram} & (\qty{2}{\percent}) & Salt\\
\end{tabular}
\subsubsection*{Instructions}
\begin{description}
\item[Prepare the dough] In a large mixing bowl, combine the flour and water.
Mix until you have a shaggy dough with no dry spots.
Add the sourdough starter and salt to the mixture. Incorporate them thoroughly
until you achieve a smooth and homogenized dough.
\item[Fermentation:] Cover the bowl with a lid or plastic wrap. Allow the dough
to rest and ferment until it has increased by at least \qty{50}{\percent}
in size. Depending on the temperature and activity of your starter, this
can take anywhere from 4 to 24~hours.
\item[Cooking preparation:] Once the dough has risen, heat a pan over medium heat.
Lightly oil the pan, ensuring to wipe away any excess oil with a paper towel.
\item[Shaping and cooking:] With a ladle or your hands, scoop out a portion of
the dough and place it onto the hot pan, spreading it gently like a pancake.
Cover the pan with a lid. This traps the steam and ensures even cooking
from the top, allowing for easier flipping later.
After about 5~minutes, or when the bottom of the flatbread has a
golden-brown crust, carefully flip it using a spatula.
\emph{Adjusting cook time.} If the flatbread appears too dark,
remember to reduce the cooking time slightly for the next one.
Conversely, if it's too pale, allow it to cook a bit longer before flipping.
Cook the flipped side for an additional 5~minutes or until it's also golden
brown.
\item[Storing:] Once cooked, remove the flatbread from the pan and place it on a
kitchen towel. Wrapping the breads in the towel will help retain their
softness and prevent them from becoming overly crisp.
Repeat the cooking process for the remaining dough.
\item[Serving suggestion:] Enjoy your sourdough flatbreads warm,
paired with your favorite dips, spreads, or as a side to any meal.
\end{description}
\section{Loaf pan bread}
\section{Loaf pan bread}%
\label{sec:loaf-pan-bread}
Loaf pan bread is made using the help of a special loaf pan
or loaf tin. The edges of the pan provide additional support

View File

@@ -29,11 +29,11 @@
% Additional line for dinosaurs since it is so close
\draw[line width=1pt] (11.9*\segmentwidth,1.49) -- (11.70*\segmentwidth,1.85);
% Special lines for december events since they are so close togehter
% Special lines for december events since they are so close together
\draw[line width=1pt] (12.0*\segmentwidth,3.0) -- (12.0*\segmentwidth,0.2); % Main branch
\draw[line width=1pt] (12.0*\segmentwidth,3.0) -- (11.75*\segmentwidth,2.5); % Branch to first humans
\draw[line width=1pt] (12.0*\segmentwidth,3.0) -- (11.75*\segmentwidth,3.0); % Branch to Jordan
% Move pasteur down a bit so the lines look like they cross
% Move Pasteur down a bit so the lines look like they cross
\draw[line width=1pt] (12.0*\segmentwidth,2.99) -- (11.75*\segmentwidth,3.5); % Branch to Pasteur
% Draw months and month separators

View File

@@ -30,3 +30,5 @@
\tikzstyle{timeline_timespan} = [rectangle, draw=codeblack, fill=pinkpic, text=black,
text centered, rounded corners, line width=0.4mm]
\pgfplotsset{compat=1.18}
\pgfplotsset{width=\textwidth}

View File

@@ -157,7 +157,7 @@ and pastries.
\item[Coil fold] A special stretch and folding technique. The coil fold is
very gentle on the dough and is thus excellent throughout the bulk fermentation.
By applying the coil fold the dough strength is improved by minimising damage
By applying the coil fold the dough strength is improved by minimizing damage
to the dough structure.
\item[Crumb] The inner texture of the bread, which is characterized by the size,
@@ -285,7 +285,7 @@ depending on the initial reactants and cooking conditions can produce a wide var
of end products with different tastes and aromas. Maillard reactions occur readily
above \SI{150}{\celsius}, although will still occur much more slowly below that
temperature. Optimal reaction rate occurs between \pHvalue{6.0} to \pHvalue{8.0},
although it favours alkaline conditions.
although it favors alkaline conditions.
\item[Maltose] A sugar produced from the enzymatic breakdown of starch by amylases.
It's a primary food source for yeast during fermentation.
@@ -404,7 +404,7 @@ unpredictable ways. It also provides a controlled aesthetic to the finished loaf
\item[Soaker] A mixture of grains or seeds with water that is left to soak overnight (or for a
specified amount of time) before being incorporated into bread dough. This helps to
soften and hydrate the grains or seeds (sesame, pumpkin, etc.), making them
soften and hydrate the grains or seeds (sesame, pumpkin, \etc{}), making them
easier to integrate into the dough and
providing a moister crumb in the finished bread.

View File

@@ -38,7 +38,7 @@ organisms inhabit extreme environments, from boiling vents to icy waters.
Whoever comes first, bacteria or archaea, remains debated. For three
months (or approximately 1.1~billion years), these life forms dominated
the oceans. Then, on June~25 in an highly unlikely event, an archaeon consumed a bacterium.
the oceans. Then, on June~25 in a highly unlikely event, an archaeon consumed a bacterium.
Instead of digesting it, they formed a symbiotic relationship. This led to the
first nucleated organisms, marking an evolutionary milestone. This event lead
to the development of plants, fungi and also ultimately humans.

Binary file not shown.

Before

Width:  |  Height:  |  Size: 71 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 73 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 564 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.2 MiB

View File

@@ -1,5 +1,5 @@
\chapter{Acknowledgements}%
\label{ch:Acknowledgements}
\chapter{Acknowledgments}%
\label{ch:Acknowledgments}
This book would not have been possible without your help.
With all your donations I~have been able to focus on finishing
this book. Your continuous support allows me to focus

View File

@@ -81,7 +81,7 @@ sometimes you are faced with issues you don't understand. In \qty{99.95}{\percen
of all software bugs, the developer is the issue. Sometimes, however, the framework has a
bug. That is when the developer must dig deeper to see the \emph{what} and the
\emph{why} behind what
the framework is doing. You will need to read other engineer's source code, and you will be forced
the framework is doing. You will need to read other engineers' source code, and you will be forced
to understand \emph{why} things are happening.
Being unhappy with what I~was baking, my engineering mindset took over, and I~had

View File

@@ -1,7 +1,7 @@
# Macros for commands
LATEX := latexmk -cd -pdflua -lualatex="lualatex -interaction=nonstopmode" -synctex=1 -use-make
EBOOK := tex4ebook --lua -d epub -f epub -c tex4ebook.cfg
WEBSITE := make4ht --lua -c website.cfg -a debug -uf html5+tidy+common_domfilters
EBOOK := tex4ebook --lua -d epub -f epub -c tex4ebook.cfg -B epub_build
WEBSITE := make4ht --lua -c website.cfg -a debug -uf html5+tidy+common_domfilters -B website_build
CLEAN := latexmk -cd -lualatex -c -use-make
CHECK_1 := lacheck
CHECK_2 := chktex
@@ -9,7 +9,11 @@ CONVERT_PIC := convert
REDUCE_PIC := -resize '800x800>' \
-strip -interlace Plane -gaussian-blur 0.05 -quality 85\% \
-set colorspace Gray -separate -evaluate-sequence Mean
RSYNC := rsync -au --exclude 'book.epub' --exclude '*.jpg' --exclude '*.png'
REDUCE_PIC_COLOR := -quality 80\%
RSYNC := rsync -au --exclude 'book.epub' --exclude '*.jpg'
GIT := git --no-pager
SPELL_CHECK := hunspell -t -l -d en_US
EPUBSIZE := `du -sb epub/low_res_book.epub | cut -f1`
# We want bash as shell
SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -31,10 +35,14 @@ chapters = baking basics bread-types cover flour-types history intro mix-ins\
src_tables := $(wildcard tables/table-*.tex)
src_figures := $(wildcard figures/fig-*.tex) figures/flowcharts_tikz.tex
src_figures += $(wildcard plots/fig-*.tex)
src_recipes := $(wildcard recipes/*.tex)
src_plots := $(wildcard plots/*.table)
src_tex := $(foreach directory, $(chapters), $(wildcard $(directory)/*.tex))
src_tex += book.tex book_sans_serif.tex references.bib figures/vars.tex
src_tex += supporters.csv sourdough.sty colors.tex
src_tex += $(src_recipes)
images := $(wildcard images/*/*.jpg)
images += $(wildcard images/*.jpg)
@@ -49,12 +57,22 @@ images += $(foreach directory, $(chapters), $(wildcard $(directory)/*/*.png))
# images to lower resolution and greyscale
bw_images := $(addprefix bw-book-epub/OEBPS/, $(images))
src_all := $(src_tex) $(src_figures) $(src_tables) $(images)
# For lower res colour ebook we would not convert png as it only get worst
# we will copy them instead... so remove them as a dependency.
low_res_images := $(addprefix low-res-book-epub/OEBPS/, $(images))
low_res_images := $(filter-out %.png, $(low_res_images))
src_all := $(src_tex) $(src_figures) $(src_tables) $(images) $(src_plots)
ebook_src := $(src_all) tex4ebook.cfg book.mk4 book-ebook.css
website_src := $(src_all) website.cfg style.css
# This is more than what is actually needed but keeps the makefile simple
# and latexmk will handle the rest
booklet_src := $(src_figures) $(src_tables) $(src_recipes) $(images)
booklet_src += booklet.tex
website_assets := $(wildcard ../website/assets/*)
ruby_src := ../website/modify_build.rb $(website_assets)
ruby_pkg := ../website/Gemfile ../website/Gemfile.lock
@@ -90,13 +108,19 @@ figures/fig-life-planet-sourdough-timeline-external.pdf: figures/fig-life-planet
%.xbb: %.jpg
ebb -x $<
# We don't want to use latexmk as there is no biber nor references and it
# seems to make it somehow unhappy
booklet/booklet.pdf: $(booklet_src)
mkdir -p booklet
lualatex --output-directory=booklet booklet.tex
book_serif/book.pdf: $(src_all)
$(LATEX) -output-directory=book_serif book.tex
book_sans_serif/book_sans_serif.pdf: $(src_all)
$(LATEX) -output-directory=book_sans_serif book_sans_serif.tex
.PHONY: copy_ebook_files
.PHONY: copy_ebook_files copy_ebook_files_low_res
epub/%.epub: %.tex $(src_all) cover/cover-page.xbb\
figures/fig-life-planet-sourdough-timeline-external.pdf\
@@ -105,9 +129,12 @@ epub/%.epub: %.tex $(src_all) cover/cover-page.xbb\
$(EBOOK) $<
copy_ebook_files: build_ebook
$(RSYNC) book-epub/ bw-book-epub/
$(RSYNC) --exclude '*.png' epub_build/book-epub/ bw-book-epub/
# We not convert SVG to B&W or lower res for now as they are super small
copy_ebook_files_low_res: build_ebook
$(RSYNC) epub_build/book-epub/ low-res-book-epub/
# We do not convert SVG to B&W or lower res for now as they are super small
# anyway
bw-book-epub/OEBPS/%.jpg: %.jpg
mkdir -p $(dir $@)
@@ -117,10 +144,18 @@ bw-book-epub/OEBPS/%.png: %.png
mkdir -p $(dir $@)
$(CONVERT_PIC) $< $(REDUCE_PIC) $@
low-res-book-epub/OEBPS/%.jpg: %.jpg
mkdir -p $(dir $@)
$(CONVERT_PIC) $< $(REDUCE_PIC_COLOR) $@
epub/bw_book.epub: copy_ebook_files $(bw_images)
cd bw-book-epub; zip -q0X ../epub/bw_book.epub mimetype
cd bw-book-epub; zip -q9XrD ../epub/bw_book.epub ./
epub/low_res_book.epub: copy_ebook_files_low_res $(low_res_images)
cd low-res-book-epub; zip -q0X ../epub/low_res_book.epub mimetype
cd low-res-book-epub; zip -q9XrD ../epub/low_res_book.epub ./
# Now with the rules
# Expected usual rules first
@@ -132,59 +167,65 @@ help:
@echo ""
@echo "default: builds the book in pdf format (serif)"
@echo ""
@echo "all: pdf serif and sans-serif accessible version, as well as ebooks"
@echo " in colour and black&white versions"
@echo "Releases:"
@echo " all: pdf serif and sans-serif accessible version, ebooks in colours"
@echo " and black&white versions and the website"
@echo ""
@echo "bake: same as build all"
@echo " bake: same as build all"
@echo ""
@echo "check: runs static analysis checker on LaTeX source to spot"
@echo " programming or typographic mistakes"
@echo " release_serif: build serif only version of pdf and ebook"
@echo " release_sans_serif: build sans-serif/accessible version of pdf"
@echo ""
@echo "clean: delete all intermediate files keep targets (pdf/ebooks/website)"
@echo "Portable Document Format (pdf):"
@echo " build_sans_serif_pdf: build accessible pdf only (same as release_sans_serif)"
@echo " build_serif_pdf: build serif pdf only"
@echo " build_pdf: builds both serif and accessible pdf"
@echo ""
@echo "mrproper: delete all generated files intermediate and pdf/ebooks/website"
@echo "Ebooks (epub):"
@echo " build_ebook: builds only the colour ebook"
@echo " build_bw_ebook: builds the low res black & white ebook"
@echo ""
@echo "Website:"
@echo " website: build the static website from LaTeX sources and post-process it"
@echo " html: build the static website from LaTeX sources _without_ post-processing"
@echo ""
@echo "Cleanup:"
@echo " mrproper: delete all generated files intermediate and pdf/ebooks/website"
@echo " clean: delete all intermediate files keep targets (pdf/ebooks/website)"
@echo " clean_figures: delete intermediate TikZ files"
@echo " clean_website_build: delete intermediate website files"
@echo " clean_ebook_build: delete intermediate ebook files"
@echo ""
@echo "build_pdf: builds both serif and accessible pdf"
@echo ""
@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 ""
@echo "build_serif_pdf: build serif pdf only"
@echo ""
@echo "figures: build TikZ figures"
@echo ""
@echo "release_serif: build serif only version of pdf and ebooks"
@echo "release_sans_serif: build sans-serif/accessible version of pdf"
@echo ""
@echo "website: build the static website from LaTeX sources and post-process it"
@echo "html: build the static website from LaTeX sources _without_ post-processing"
@echo ""
@echo "Debug targets:"
@echo ""
@echo "quick: compiles serif_pdf but runs lulatex only once"
@echo "figures: build TikZ figures only"
@echo ""
@echo "quick_ebook: compiles ebook but runs lulatex only once"
@echo "Quick builds:"
@echo " quick: compiles serif_pdf but runs lulatex only once"
@echo " quick_ebook: compiles ebook but runs lulatex only once"
@echo " quick_booklet: compiles booklet but runs lulatex only once"
@echo ""
@echo "show_tools_version: Show version of tools used on the build machine"
@echo "Checks:"
@echo " tex-check: runs static analysis checker on LaTeX source to spot"
@echo " programming or typographic mistakes"
@echo " spell-check: runs a spell checker"
@echo " check: runs both checkers"
@echo ""
@echo "print-X: print makefile variable X"
@echo ""
@echo "printvars: print all variables in the makefile"
@echo "Dump informations:"
@echo " show_tools_version: Show version of tools used on the build machine"
@echo " printvars: print all variables in the makefile"
@echo " print-X: print makefile variable X"
@echo ""
@echo "set DEBUG i.e make DEBUG=1 build_ebook to add debug flags to commands"
# Finally actual project targets (i.e. build pdf and ebooks)
.PHONY: build_pdf build_serif_pdf build_sans_serif_pdf build_ebook
.PHONY: build_pdf build_booklet build_serif_pdf build_sans_serif_pdf build_ebook
build_pdf: build_serif_pdf build_sans_serif_pdf
build_booklet: booklet/booklet.pdf
build_serif_pdf: book_serif/book.pdf
build_sans_serif_pdf: book_sans_serif/book_sans_serif.pdf
@@ -193,80 +234,99 @@ build_ebook: epub/book.epub
build_bw_ebook: epub/bw_book.epub
.PHONY: export_figures check
build_low_res_ebook: epub/low_res_book.epub
.PHONY: export_figures check tex-check spell-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
check: $(SRC_TEX)
check: spell-check tex-check
tex-check: $(src_tex)
@echo "Running: " $(CHECK_1)
$(CHECK_1) book.tex
@echo ""
@echo "Running: " $(CHECK_2)
$(CHECK_2) book.tex
spell-check: $(src_tex) spelling_exceptions.txt
# Generate exceptions this way to avoid false positives
# hunspell -t -l -d en_US **/*.tex *.csv *.sty *.sty | cut -f 2 -d ':' | sort -u > spelling_exceptions.txt
$(SPELL_CHECK) -p spelling_exceptions.txt $(src_tex)
# 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))
- rm $(patsubst %.tex, %.png.in, $(src_figures))
- rm $(wildcard figures/*.png.*)
- rm cover/cover-page.xbb
-$(CLEAN) $(patsubst %.tex, %.png.in, $(src_figures))
-rm $(patsubst %.tex, %.png.pdf, $(src_figures))
-rm $(patsubst %.tex, %.png.in, $(src_figures))
-rm $(wildcard figures/*.png.*)
-rm cover/cover-page.xbb
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}
-rm book*x.svg
-rm book.css
-rm content.opf
-rm epub_build/book*.{4ct,4tc,aux,bbl,bcf,blg,dvi,fdb_latexmk,fls,html}
-rm epub_build/book*.{idv,lg,loc,log,ncx,run.xml,tmp,xref}
-rm epub_build/book*x.svg
-rm epub_build/book.css
-rm epub_build/content.opf
-rm epub_build/book-epub/mimetype
-rm -rf epub_build/book-epub/META-INF
-rm -rf epub_build/book-epub/OEBPS
clean_website_build: clean_ebook_build
-rm book-*.svg
-rm book.{loc,dlog}
-rm $(subst $(website_dir)/,, $(wildcard $(website_dir)/*.html))
clean_website_build:
-rm website_build/book*.{4ct,4tc,aux,bbl,bcf,blg,dvi,fdb_latexmk,fls,html}
-rm website_build/book*.{idv,lg,loc,log,ncx,run.xml,tmp,xref}
-rm website_build/book.{loc,dlog}
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
-rm book*/*.{bbl,loc,.run.xml}
-rm -rf *book-epub/META-INF
-rm -rf *book-epub/OEBPS
-rm *book-epub/mimetype
$(CLEAN) -output-directory=booklet booklet.tex
-rm book*/*.{bbl,loc,run.xml}
mrproper: clean
$(CLEAN) -C $(src_figures)
$(CLEAN) -C -output-directory=book_serif book.tex
$(CLEAN) -C -output-directory=book_sans_serif book_sans_serif.tex
$(CLEAN) -C -output-directory=booklet booklet.tex
-rm figures/*.png
-rm *.html
-rm *.svg
-rm -rf epub/
-rm -rf release/
-rm -rf book_serif/
-rm -rf book_sans_serif/
-rm -rf booklet/
-rm -rf *book-epub/
-rm -rf epub_build/
-rm -rf website_build/
-rm -rf $(website_dir)
# top level releases rules
.PHONY: bake release_serif release_sans_serif
bake: release_serif release_sans_serif
bake: release_serif release_sans_serif release_booklet website
release:
mkdir -p release
release_serif: build_serif_pdf build_ebook build_bw_ebook | release
release_serif: build_serif_pdf build_ebook build_bw_ebook build_low_res_ebook | release
cp book_serif/book.pdf release/TheBreadCode-The-Sourdough-Framework.pdf
cp epub/book.epub release/TheBreadCode-The-Sourdough-Framework.epub
cp epub/bw_book.epub release/TheBreadCode-The-Sourdough-Framework-black-and-white.epub
cp epub/low_res_book.epub release/TheBreadCode-The-Sourdough-Framework.epub
@if [ $(EPUBSIZE) -gt 49500000 ]; then \
echo "ERROR: epub File too big"; \
exit 1; \
fi
release_sans_serif: build_sans_serif_pdf | release
cp book_sans_serif/book_sans_serif.pdf release/TheBreadCode-The-Sourdough-Framework-sans-serif.pdf
release_booklet: build_booklet | release
cp booklet/booklet.pdf release/TheBreadCode-The-Sourdough-Framework-booklet.pdf
# Website stuff
.PHONY: html website
$(website_dir)/book.html: $(website_src) cover/cover-page.xbb
@@ -278,7 +338,7 @@ html: $(website_dir)/book.html
# Because packages will be installed in hard to predict places use a file as
# marker..
../website/_bundle_install_done: $(ruby_pkg)
- rm ../website/$@
-rm ../website/$@
cd ../website && bundle install
touch ../website/$@
@@ -294,11 +354,14 @@ website: html ../website/_bundle_install_done $(ruby_src)
quick: # run latex only once no biber, no references etc...
$(LATEX) -e '$$max_repeat=1' -halt-on-error -output-directory=book_serif book.tex
quick_booklet:
$(LATEX) -e '$$max_repeat=1' -halt-on-error -output-directory=booklet booklet.tex
quick_ebook: cover/cover-page.xbb # run latex only once no biber, ref etc...
$(EBOOK) --mode draft book.tex
show_tools_version: # Show version of tools used on the build machine
- git log -n 1
- $(GIT) log -1 --pretty=%B
@echo ""
- uname -a
@echo ""
@@ -319,7 +382,7 @@ show_tools_version: # Show version of tools used on the build machine
@echo ""
- dvisvgm --version
@echo ""
- lacheck --version
- lacheck | head -5 | tail -1
@echo ""
- chktex --version
@echo ""

View File

@@ -8,6 +8,7 @@
\end{quoting}
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{pumpkin-sourdough}
\caption[Pumpkin sourdough softbuns]{These soft pull-apart sourdough
buns have been made with the addition of pumpkin purée. The mashed pumpkin
@@ -23,6 +24,7 @@ to express yourself.
\section{Categories}
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{pumpkin-on-flour}
\caption[Pumpkin puré]{A common mix-in technique is to replace some of
the dough's water with another liquid. In this case, puréd pumpkin replaced
@@ -64,10 +66,12 @@ Many of the above-listed mix-ins can't be pinpointed to a single category. They
change multiple aspects of the final bread at the same time.
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{seeded-sourdough}
\caption[Seeded sourdough]{In this case a combination of flax, sunflower and
sesame was added to the dough. The seeds will slightly dehydrate the dough
during fermentation and thus adding a bit more water (\qtyrange{1}{2}{\percent}) is advised.}%
during fermentation and thus adding a bit more water
(\qtyrange{1}{2}{\percent}) is advised.}%
\end{figure}
Mix-ins affect the structure of the dough. One aspect is the impact on
@@ -97,6 +101,7 @@ regular bread flour. Different flours change the taste of the bread and
usually moderately affect the color.
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{broa}
\caption[Broa de milho]{Broa de milho is a traditional Portuguese bread
made out of half rye and half corn flour.}%
@@ -111,7 +116,7 @@ usually moderately affect the color.
\item Semolina (supports Mediterranean flavors)
\item Cocoa (replace \qty{10}{\percent} of the flour for a black loaf, goes
great with sweet toppings)
\item Other non-wheat flours such as: Chickpea, corn, hemp, potato etc.
\item Other non-wheat flours such as: Chickpea, corn, hemp, potato\dots{}
\end{itemize}
\subsection{Liquids}
@@ -120,9 +125,11 @@ Instead of using water, you can substitute it with a different liquid,
affecting taste and texture.
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{beer-bread}
\caption[Stout beer bread]{Dark hearty stouts work excellently as a water replacement
when making sourdough bread. The resulting loaf features a hearty malty taste}%
\caption[Stout beer bread]{Dark hearty stouts work excellently as a water
replacement when making sourdough bread. The resulting loaf features a
hearty malty taste}%
\end{figure}
\begin{itemize}
@@ -134,15 +141,15 @@ affecting taste and texture.
\item Eggs
\item Fruit/vegetable juices (also see Section~\ref{section:colors})
\item Milk (for sweet, soft breads)
\item Milk alternatives such as: Almond, oat, soy etc.
\item Milk alternatives such as: Almond, oat, soy\dots{}
\item Mashed potatoes
\item Mashed sweet potatoes. Bolo do caco is a typical bread from Madeira,
made from \qty{50}{\percent} wheat flour and \qty{50}{\percent} mashed potatoes.
\item Olive oil (Mediterranean)
\item Other mashed vegetables such as: Beets, pumpkin, etc.
\item Other mashed vegetables such as: Beets, pumpkin\dots{}
\end{itemize}
\subsection{Colors}
\subsection{Colors}%
\label{section:colors}
Some mix-ins will change the color and flavor of your bread. Common colorings
include:
@@ -166,12 +173,14 @@ seeds benefit from being boiled for about 10~minutes before adding them to the
dough.
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{stollen-close-up}
\caption[Stollen closeup]{The Stollen is a traditional German sweet Christmas
bread featuring a variety of mix-ins. The dough typically contains candied lemon,
candied orange, and raisins. The mix-ins are soaked in rum before being added to
the dough. While the stollen matures after baking (up to \num{6} months) the candied ingredients release
their aroma to the baked product.}%
bread featuring a variety of mix-ins. The dough typically contains candied
lemon, candied orange, and raisins. The mix-ins are soaked in rum before
being added to the dough. While the stollen matures after baking (up to
\num{6} months) the candied ingredients release their aroma to the baked
product.}%
\end{figure}
\begin{itemize}
@@ -190,28 +199,31 @@ dough.
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{seeds-bread}
\caption[Whole-rye with rye berries]{A sourdough bread made with half whole-rye flour and half rye berries. The
berries are typically boiled for 10~minutes to allow them to soften a bit. When baking a loaf
it is advised to use a thermometer to measure whether it is done baking. The final bread
features a hearty tangy flavor and has a moist crumb.}%
\caption[Whole-rye with rye berries]{A sourdough bread made with half
whole-rye flour and half rye berries. The berries are typically boiled
for 10~minutes to allow them to soften a bit. When baking a loaf it is
advised to use a thermometer to measure whether it is done baking. The
final bread features a hearty tangy flavor and has a moist crumb.}%
\end{figure}
\subsection{Spices and flavor mix-ins}
These are mostly powders or small bits.
\begin{itemize}
\item Blueberry skins (press through a sieve to remove juice, raw blueberries
\item Blueberry skins (press through a sieve to remove juice), raw
blueberries
\item Browned onions
\item Candied fruits such as: Lemon, orange, pineapple, etc.
\item Candied fruits such as: Lemon, orange, pineapple\dots{}
\item Cinnamon
\item Grated hard cheese such as: Gruyère, parmesan, etc.
\item Mediterranean herbs such as: Marjoram, oregano, rosemary, thyme, etc.
\item Grated hard cheese such as: Gruyère, parmesan\dots{}
\item Mediterranean herbs such as: Marjoram, oregano, rosemary, thyme\dots{}
\item Miso
\item Molasses
\item Sugar
\item Spices such as: Anise, fennel, cinnamon, coriander, cumin, etc.
\item Zests such as: Lime, Lemon, orange, etc.
\item Spices such as: Anise, fennel, cinnamon, coriander, cumin\dots{}
\item Zests such as: Lime, Lemon, orange\dots{}
\end{itemize}
\subsection{Highlights}
@@ -222,12 +234,12 @@ can often be complemented by some flavor or flour mix-in.
\begin{itemize}
\item Chocolate chunks or drops
\item Chunks of black garlic
\item Chunks of cheese such as: Cheddar, feta, etc.
\item Chunks of cheese such as: Cheddar, feta\dots{}
\item Cornflakes
\item Dried fruits such as: Cranberries, dates, raisins, etc.
\item Dried fruits such as: Cranberries, dates, raisins\dots{}
\item Olives
\item Pickled pepperoni
\item Sundried tomatoes (squeeze out the oil if using pickled ones, or soak
\item Sun-dried tomatoes (squeeze out the oil if using pickled ones, or soak
dried ones in water)
\end{itemize}
@@ -240,47 +252,70 @@ A few combinations where multiple mix-ins complement each other:
\item Cheddar and jalapeño
\item Cocoa, cacao nibs, whole hazelnuts
\item Cranberry and walnuts
\item Semolina, Mediterranean herbs, olives, sundried tomatoes
\item Semolina, Mediterranean herbs, olives, sun-dried tomatoes
\item Tomato juice instead of water with \qty{20}{\percent} rye flour
\end{itemize}
\section{Techniques}
Adding mix-ins to the dough is just the simplest approach. Add the mix-ins
directly when you knead the dough. After the first kneading wait for 30 minutes to see
if the dough has enough or too much water. In the case of whole-soaked berries
(\eg~rye or wheat) chances are that the berries will release some water and make the dough
wetter. In this case, you will want to add a bit more flour to the dough to
compensate for the high hydration.
directly when you knead the dough. After the first kneading wait for 30
minutes to see if the dough has enough or too much water. In the case of
whole-soaked berries (\eg~rye or wheat) chances are that the berries will
release some water and make the dough wetter. In this case, you will want to
add a bit more flour to the dough to compensate for the high hydration.
\subsection[Incorporating seeds into the dough]{What is the best stage to
incorporate inclusions (seeds) into the dough?}%
\label{subec:incorporate-seeds}
You can include seeds directly at the start when mixing the dough. If you use
whole seeds such as wheat or rye kernels, soak them in water overnight and
then rinse them before adding them to the dough. This makes sure that they are
not crunchy and are soft enough when eating the bread. If you forgot to soak
them you can cook the seeds for 10~minutes in hot water. Rinse them with cold
water before adding them to your dough.
If you want to sweeten the dough, your best option is to add sugar during the
shaping stage. Sugar added too early in the process typically gets fermented
until none of it remains. Adjust your shaping technique a little bit and
spread your sugar mixture over a flattened-out dough. You can then roll the
dough together, incorporating layers of sugar.
\subsection{Adding before shaping}
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{apple-swirl}
\caption[Apple swirl buns]{A great technique is to add some of your mix-ins
directly before shaping. In this case, a mixture of apples, cinnamon and brown
sugar was applied. Proceed and roll the dough together. Afterward cut the roll
into smaller pieces using a sharp knife, dough scraper or dental floss. Place
each piece of dough next to each other in a greased bowl to allow them to be proofed.
Proceed and bake as you would normally do. The benefit of this technique is that
the mix-ins will not be fermented. This is typically required in the case of sugar
since you want the final baked goods to feature sweetness. If included upon
initial mixing most of the sugar would be fermented and the bread would not taste sweet.}%
directly before shaping. In this case, a mixture of apples, cinnamon and
brown sugar was applied. Proceed and roll the dough together. Afterward
cut the roll into smaller pieces using a sharp knife, dough scraper or
dental floss. Place each piece of dough next to each other in a greased
bowl to allow them to be proofed. Proceed and bake as you would
normally do. The benefit of this technique is that the mix-ins will not
be fermented. This is typically required in the case of sugar since you
want the final baked goods to feature sweetness. If included upon
initial mixing most of the sugar would be fermented and the bread would
not taste sweet.}%
\label{fig:apple-swirl}
\end{figure}
Another approach is to lay the dough out flat after the bulk fermentation.
Then using a spatula spread your ingredient over the flat dough. Continue with
your regular shaping and/or roll up the dough. When creating a roll you can
use a sharp knife to cut the dough, dental floss works great too. Afterward,
place the tiny swirls in a container to let them proof and become fluffier. This is an
excellent way to add sweet mixins as the microbes will not ferment them. When
adding sugar to the initial dough it will be fermented and the resulting dough
will not taste sweet (depending on the fermentation duration). This approach
is excellent for garlic/cheese rolls, garlic/herb rolls, and cinnamon rolls
place the tiny swirls in a container to let them proof and become fluffier.
This is an excellent way to add sweet mix-ins as the microbes will not ferment
them. When adding sugar to the initial dough it will be fermented and the
resulting dough will not taste sweet (depending on the fermentation duration).
This approach is excellent for garlic/cheese rolls, garlic/herb rolls, and
cinnamon rolls
\subsection{Covering the surface}
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{surface-seeds}
\caption[Surface seeds]{These are chop buns which are created by chopping
up a retarded dough into smaller pieces before baking. Then each piece of
@@ -289,6 +324,7 @@ is excellent for garlic/cheese rolls, garlic/herb rolls, and cinnamon rolls
coverings add superb additional flavor and can be adjusted depending on
your preference. I love adding a mixture of sunflower, flax, and
sesame seeds.}%
\label{fig:surface-seeds}
\end{figure}
This works best for either powders or small bits. After shaping wrap your
@@ -298,8 +334,9 @@ these coverings also help to make the container stick less.
Another approach commonly used with buns is to wet the surface or dump the
dough in water. Afterward, dip the wetted piece of dough into your bowl of
mixins. This does not work for all mix-ins, as some can't handle the high temperatures
during baking and char. Most commonly done with seeds (\eg~sesame, oats, flax-seed).
mix-ins. This does not work for all mix-ins, as some can't handle the high
temperatures during baking and char. Most commonly done with seeds
(\eg~sesame, oats, flax-seed).
\subsection{Swirled colors}
Mix-ins that change the color of the dough bring the opportunity for even more
@@ -310,6 +347,6 @@ ferment the dough in separate containers. Then Combine the two (or
more) differently colored doughs by laminating and stacking the colored sheets
of dough before the last folding, just before shaping. This way the colored
layers won't mix and the resulting dough will have differently colored and
tasting layers. \footnote{I once made an experimental dough by merging a wheat,
tasting layers\footnote{I once made an experimental dough by merging a wheat,
rye, spelt and einkorn dough into a single dough. The resulting dough was
layered featuring different colors, textures, and flavors.}
layered featuring different colors, textures, and flavors.}.

View File

@@ -0,0 +1,29 @@
\begin{tikzpicture}
\tikzstyle{every node}+=[font=\normalsize\rmfamily]
\begin{axis}[
title=Ambient temperature,
grid=both,
major grid style={line width=.2pt,draw=gray!30},
axis x line=middle,
axis y line=middle,
width=\textwidth,
height=0.5\textwidth,
xmax=35, xmin=-0.1,
ymax=205, ymin=-0.1,
every axis y label/.style={%
at={(ticklabel cs:0.5)},rotate=90,anchor=near ticklabel},
every axis x label/.style={%
at={(ticklabel cs:0.5)},anchor=near ticklabel},
legend pos = south east,
legend style={draw=none},
legend cell align={left},
xlabel=Duration (minutes), ylabel=Temperature (\SI{}{\degree} C)
]
\addplot [color=redpic,smooth,ultra thick] table {plots/icecube_ambient.table};
\addplot [color=codeblack,smooth,ultra thick] table {plots/preheated_ambient.table};
\addplot [color=codeblue,smooth,ultra thick] table {plots/non-preheated_ambient.table};
\addplot [color=yellowpic,smooth,ultra thick] table {plots/preheated_bottom_ambient.table};
\addplot [color=pinkpic,smooth,ultra thick] table {plots/spritzing_ambient.table};
\legend{Ice cube, Preheated, Non-preheated, Preheated bottom, Spritzing};
\end{axis}
\end{tikzpicture}

View File

@@ -0,0 +1,29 @@
\begin{tikzpicture}
\tikzstyle{every node}+=[font=\normalsize\rmfamily]
\begin{axis}[
title=Surface temperature,
grid=both,
major grid style={line width=.2pt,draw=gray!30},
axis x line=middle,
axis y line=middle,
width=\textwidth,
height=0.5\textwidth,
xmax=35, xmin=-0.1,
ymax=108, ymin=-0.1,
every axis y label/.style={%
at={(ticklabel cs:0.5)},rotate=90,anchor=near ticklabel},
every axis x label/.style={%
at={(ticklabel cs:0.5)},anchor=near ticklabel},
legend pos = south east,
legend style={draw=none},
legend cell align={left},
xlabel=Duration (minutes), ylabel=Temperature (\SI{}{\degree} C)
]
\addplot [color=redpic,smooth,ultra thick] table {plots/icecube_surface.table};
\addplot [color=codeblack,smooth,ultra thick] table {plots/preheated_surface.table};
\addplot [color=codeblue,smooth,ultra thick] table {plots/non-preheated_surface.table};
\addplot [color=yellowpic,smooth,ultra thick] table {plots/preheated_bottom_surface.table};
\addplot [color=pinkpic,smooth,ultra thick] table {plots/spritzing_surface.table};
\legend{Ice cube, Preheated, Non-preheated, Preheated bottom, Spritzing};
\end{axis}
\end{tikzpicture}

View File

@@ -0,0 +1,42 @@
\begin{tikzpicture}
\tikzstyle{every node}+=[font=\normalsize\rmfamily]
\begin{axis}[
title style={align=center},
title={Gluten development of a sourdough and yeast based dough\\
\qty{22}{\degreeCelsius} (\qty{72}{\degF}) and
\qty{60}{\percent}~hydration},
axis x line=middle,
axis y line=middle,
width=\textwidth,
height=0.5\textwidth,
xmax=44, xmin=-0.1,
ymax=12, ymin=-0.1,
every axis y label/.style={%
at={(ticklabel cs:0.5)},rotate=90,anchor=near ticklabel},
every axis x label/.style={%
at={(ticklabel cs:0.5)},anchor=near ticklabel},
xtick distance=6,
ytick style={draw=none},
yticklabels={empty},
legend style={draw=none},
legend cell align={left},
xlabel=Duration (hours), ylabel=Dough strength
]
\addplot [color=redpic,smooth,ultra thick] table {plots/yeast.table};
\addplot [color=codeblue,smooth,ultra thick] table {plots/sourdough.table};
\node at (axis cs:18,7) [anchor=south west] {%
\begin{tabular}{@{}lll@{}} \textbf{Dough type}&
\textbf{Kneading} & \textbf{Stretch \& Fold}\\
\midrule
\textcolor{redpic}{Yeast} & \textcolor{redpic}{None}&
\textcolor{redpic}{None} \\ \textcolor{codeblue}{Sourdough}&
\textcolor{codeblue}{None} & \textcolor{codeblue}{None} \\
\end{tabular}
};
\node at (axis cs:8,8.3) [anchor=south] {Peak stage};
\node at (axis cs:1,1) [anchor=west] {Development stage};
\node at (axis cs:9.5,5) [anchor=west] {Extensibility stage};
\node at (axis cs:25.8,4) [anchor=west] {Decay stage};
\end{axis}
\end{tikzpicture}

View File

@@ -0,0 +1,24 @@
#Ice Cube
#Time Ambient
1 95
2 148
3 165
4 172
5 175
6 179
7 179
8 180
9 181
10 182
11 182
12 182
13 182
14 181
15 182
16 182
17 181
18 182
19 182
20 181
21 182
22 182

View File

@@ -0,0 +1,24 @@
#Ice Cube
#Time Surface
1 13
2 50
3 66
4 71
5 72
6 74
7 78
8 81
9 84
10 86
11 89
12 91
13 92
14 94
15 95
16 96
17 97
18 98
19 98
20 99
21 99
22 99

View File

@@ -0,0 +1,28 @@
#Non preheated
#Time Ambient
1 22
2 25
3 31
4 36
5 43
6 49
7 56
8 63
9 70
10 77
11 85
12 91
13 96
14 102
15 107
16 113
17 119
18 124
19 128
20 132
21 137
22 141
23 144
24 147
25 151
26 151

View File

@@ -0,0 +1,28 @@
#Non preheated
#Time Surface
1 13
2 14
3 15
4 15
5 17
6 18
7 19
8 21
9 23
10 26
11 28
12 31
13 34
14 37
15 40
16 43
17 47
18 50
19 53
20 57
21 61
22 65
23 68
24 71
25 74
26 75

View File

@@ -0,0 +1,18 @@
#Pre-heated
#Time Ambient
1 110
2 163
3 181
4 186
5 189
6 190
7 190
8 189
9 189
10 188
11 188
12 188
13 189
14 189
15 190

View File

@@ -0,0 +1,37 @@
#Preheated Bottom
#Time Ambient
1 31
2 105
3 133
4 143
5 149
6 151
7 152
8 152
9 153
10 154
11 157
12 159
13 161
14 162
15 164
16 167
17 169
18 171
19 172
20 173
21 174
22 176
23 176
24 176
25 176
26 176
27 176
28 176
29 176
30 176
31 176
32 176
33 176
34 176
35 176

View File

@@ -0,0 +1,36 @@
#Preheated bottom
#Time Surface
#1 0
2 7
3 13
4 18
5 23
6 29
7 33
8 38
9 42
10 47
11 51
12 55
13 60
14 64
15 68
16 71
17 74
18 78
19 83
20 90
21 95
22 97
23 99
24 99
25 99
26 100
27 100
28 100
29 100
30 100
31 100
32 100
33 100
34 101

View File

@@ -0,0 +1,17 @@
#Ice Cube
#Time Surface
1 7
2 16
3 25
4 35
5 43
6 51
7 58
8 65
9 70
10 74
11 78
12 82
13 85
14 85
15 85

100
book/plots/sourdough.table Normal file
View File

@@ -0,0 +1,100 @@
0.000000000000000000e+00 0.000000000000000000e+00
2.424242424242424310e-01 4.240754653977794608e-01
4.848484848484848619e-01 8.471491777276901614e-01
7.272727272727272929e-01 1.268219383921863175e+00
9.696969696969697239e-01 1.686284330912430240e+00
1.212121212121212155e+00 2.100342265631521599e+00
1.454545454545454586e+00 2.509391435011269600e+00
1.696969696969697017e+00 2.912430085983805039e+00
1.939393939393939448e+00 3.308456465481258935e+00
2.181818181818181657e+00 3.696468820435762304e+00
2.424242424242424310e+00 4.075465397779447052e+00
2.666666666666666963e+00 4.444444444444444642e+00
2.909090909090909172e+00 4.802404207362885202e+00
3.151515151515151381e+00 5.148342933466899751e+00
3.393939393939394034e+00 5.481258869688621971e+00
3.636363636363636687e+00 5.800150262960180214e+00
3.878787878787878896e+00 6.104015360213707275e+00
4.121212121212121104e+00 6.391852408381334172e+00
4.363636363636363313e+00 6.662659654395191033e+00
4.606060606060606410e+00 6.915435345187411542e+00
4.848484848484848619e+00 7.149177727690124051e+00
5.090909090909090828e+00 7.362885048835461355e+00
5.333333333333333925e+00 7.555555555555555358e+00
5.575757575757576134e+00 7.726187494782536191e+00
5.818181818181818343e+00 7.873779113448534872e+00
6.060606060606060552e+00 7.997328658485683306e+00
6.303030303030302761e+00 8.095834376826111622e+00
6.545454545454545858e+00 8.168294515401953504e+00
6.787878787878788067e+00 8.213707321145337303e+00
7.030303030303030276e+00 8.231071040988396703e+00
7.272727272727273373e+00 8.219383921863260056e+00
7.515151515151515582e+00 8.177644210702062821e+00
7.757575757575757791e+00 8.104850154436931575e+00
8.000000000000000000e+00 8.000000000000000000e+00
8.242424242424242209e+00 7.878787878787878896e+00
8.484848484848484418e+00 7.757575757575757791e+00
8.727272727272726627e+00 7.636363636363636687e+00
8.969696969696970612e+00 7.515151515151514694e+00
9.212121212121212821e+00 7.393939393939393590e+00
9.454545454545455030e+00 7.272727272727272485e+00
9.696969696969697239e+00 7.151515151515151381e+00
9.939393939393939448e+00 7.030303030303030276e+00
1.018181818181818166e+01 6.909090909090909172e+00
1.042424242424242387e+01 6.787878787878788067e+00
1.066666666666666785e+01 6.666666666666666075e+00
1.090909090909091006e+01 6.545454545454544970e+00
1.115151515151515227e+01 6.424242424242423866e+00
1.139393939393939448e+01 6.303030303030302761e+00
1.163636363636363669e+01 6.181818181818181657e+00
1.187878787878787890e+01 6.060606060606060552e+00
1.212121212121212110e+01 5.939393939393939448e+00
1.236363636363636331e+01 5.818181818181818343e+00
1.260606060606060552e+01 5.696969696969697239e+00
1.284848484848484951e+01 5.575757575757575246e+00
1.309090909090909172e+01 5.454545454545454142e+00
1.333333333333333393e+01 5.333333333333333037e+00
1.357575757575757613e+01 5.212121212121211933e+00
1.381818181818181834e+01 5.090909090909090828e+00
1.406060606060606055e+01 4.969696969696969724e+00
1.430303030303030276e+01 4.848484848484848619e+00
1.454545454545454675e+01 4.727272727272726627e+00
1.478787878787878896e+01 4.606060606060605522e+00
1.503030303030303116e+01 4.484848484848484418e+00
1.527272727272727337e+01 4.363636363636363313e+00
1.551515151515151558e+01 4.242424242424242209e+00
1.575757575757575779e+01 4.121212121212121104e+00
1.600000000000000000e+01 4.000000000000000000e+00
1.624242424242424221e+01 3.878787878787878896e+00
1.648484848484848442e+01 3.757575757575757791e+00
1.672727272727272663e+01 3.636363636363636687e+00
1.696969696969696884e+01 3.515151515151515582e+00
1.721212121212121104e+01 3.393939393939394478e+00
1.745454545454545325e+01 3.272727272727273373e+00
1.769696969696969902e+01 3.151515151515150492e+00
1.793939393939394122e+01 3.030303030303029388e+00
1.818181818181818343e+01 2.909090909090908283e+00
1.842424242424242564e+01 2.787878787878787179e+00
1.866666666666666785e+01 2.666666666666666075e+00
1.890909090909091006e+01 2.545454545454544970e+00
1.915151515151515227e+01 2.424242424242423866e+00
1.939393939393939448e+01 2.303030303030302761e+00
1.963636363636363669e+01 2.181818181818181657e+00
1.987878787878787890e+01 2.060606060606060552e+00
2.012121212121212110e+01 1.939393939393939448e+00
2.036363636363636331e+01 1.818181818181818343e+00
2.060606060606060552e+01 1.696969696969697239e+00
2.084848484848484773e+01 1.575757575757576134e+00
2.109090909090908994e+01 1.454545454545455030e+00
2.133333333333333570e+01 1.333333333333332149e+00
2.157575757575757791e+01 1.212121212121211045e+00
2.181818181818182012e+01 1.090909090909089940e+00
2.206060606060606233e+01 9.696969696969688357e-01
2.230303030303030454e+01 8.484848484848477312e-01
2.254545454545454675e+01 7.272727272727266268e-01
2.278787878787878896e+01 6.060606060606055223e-01
2.303030303030303116e+01 4.848484848484844179e-01
2.327272727272727337e+01 3.636363636363633134e-01
2.351515151515151558e+01 2.424242424242422089e-01
2.375757575757575779e+01 1.212121212121211045e-01
2.400000000000000000e+01 0.000000000000000000e+00

View File

@@ -0,0 +1,37 @@
#Spritzing
#Time Ambient
1 31
2 135
3 168
4 182
5 189
6 190
7 190
8 190
9 190
10 189
11 190
12 190
13 189
14 190
15 190
16 190
17 189
18 190
19 190
20 190
21 190
22 190
23 189
24 190
25 190
26 190
27 190
28 190
29 190
30 189
31 190
32 190
33 190
34 190
35 190

View File

@@ -0,0 +1,38 @@
#Spritzing
#Time Surface
1 6
2 13
3 29
4 40
5 47
6 54
7 60
8 65
9 70
10 74
11 78
12 82
13 85
14 88
15 91
16 94
17 96
18 97
19 98
20 99
21 99
22 99
23 99
24 99
25 99
26 99
27 99
28 100
29 100
30 101
31 101
32 101
33 102
34 103
35 103

100
book/plots/yeast.table Normal file
View File

@@ -0,0 +1,100 @@
0.000000000000000000e+00 0.000000000000000000e+00
4.242424242424242542e-01 7.169229458362316176e-01
8.484848484848485084e-01 1.428572670524745458e+00
1.272727272727272707e+00 2.130208499298593239e+00
1.696969696969697017e+00 2.817089757390826232e+00
2.121212121212121104e+00 3.484475770034495934e+00
2.545454545454545414e+00 4.127625862462654283e+00
2.969696969696969724e+00 4.741799359908352329e+00
3.393939393939394034e+00 5.322255587604640681e+00
3.818181818181818343e+00 5.864253870784571276e+00
4.242424242424242209e+00 6.363053534681196055e+00
4.666666666666666963e+00 6.813913904527567844e+00
5.090909090909090828e+00 7.212094305556735030e+00
5.515151515151515582e+00 7.552854063001753104e+00
5.939393939393939448e+00 7.831452502095669566e+00
6.363636363636364202e+00 8.043148948071538129e+00
6.787878787878788067e+00 8.183202726162404517e+00
7.212121212121211933e+00 8.246873161601330438e+00
7.636363636363636687e+00 8.229419579621360725e+00
8.060606060606060552e+00 8.142734264051528115e+00
8.484848484848484418e+00 8.049102099819306133e+00
8.909090909090910060e+00 7.954963367078545566e+00
9.333333333333333925e+00 7.860318065829249967e+00
9.757575757575757791e+00 7.765166196071416671e+00
1.018181818181818166e+01 7.669507757805047454e+00
1.060606060606060552e+01 7.573342751030141429e+00
1.103030303030303116e+01 7.476671175746698594e+00
1.145454545454545503e+01 7.379493031954719839e+00
1.187878787878787890e+01 7.281808319654204276e+00
1.230303030303030276e+01 7.183617038845151903e+00
1.272727272727272840e+01 7.084919189527563610e+00
1.315151515151515227e+01 6.985714771701438508e+00
1.357575757575757613e+01 6.886003785366776597e+00
1.400000000000000000e+01 6.785786230523578766e+00
1.442424242424242387e+01 6.685062107171844126e+00
1.484848484848484951e+01 6.583831415311573565e+00
1.527272727272727337e+01 6.482094154942766195e+00
1.569696969696969724e+01 6.379850326065422905e+00
1.612121212121212110e+01 6.277123761538812907e+00
1.654545454545454675e+01 6.174324510640207819e+00
1.696969696969696884e+01 6.071597983435813362e+00
1.739393939393939448e+01 5.968940305132156787e+00
1.781818181818182012e+01 5.866347600935763573e+00
1.824242424242424221e+01 5.763815996053158308e+00
1.866666666666666785e+01 5.661341615690869133e+00
1.909090909090908994e+01 5.558920585055421526e+00
1.951515151515151558e+01 5.456549029353340075e+00
1.993939393939394122e+01 5.354223073791151144e+00
2.036363636363636331e+01 5.251938843575382876e+00
2.078787878787878896e+01 5.149692463912558082e+00
2.121212121212121104e+01 5.047480060009204905e+00
2.163636363636363669e+01 4.945297757071848821e+00
2.206060606060606233e+01 4.843141680307013530e+00
2.248484848484848442e+01 4.741007954921228951e+00
2.290909090909091006e+01 4.638892706121018783e+00
2.333333333333333570e+01 4.536792059112909392e+00
2.375757575757575779e+01 4.434702139103427143e+00
2.418181818181818343e+01 4.332619071299096625e+00
2.460606060606060552e+01 4.230538980906445978e+00
2.503030303030303116e+01 4.128457993131998016e+00
2.545454545454545681e+01 4.026372233182281768e+00
2.587878787878787890e+01 3.924277826263822710e+00
2.630303030303030454e+01 3.822170897583144988e+00
2.672727272727272663e+01 3.720047572346776743e+00
2.715151515151515227e+01 3.617903975761242119e+00
2.757575757575757791e+01 3.515736233033067482e+00
2.800000000000000000e+01 3.413540469368780528e+00
2.842424242424242564e+01 3.311312809974904514e+00
2.884848484848484773e+01 3.209049380057968470e+00
2.927272727272727337e+01 3.106746304824495208e+00
2.969696969696969902e+01 3.004399709481012870e+00
3.012121212121212110e+01 2.902005719234047376e+00
3.054545454545454675e+01 2.799560459290122427e+00
3.096969696969696884e+01 2.697060054855767497e+00
3.139393939393939448e+01 2.594500631137504953e+00
3.181818181818182012e+01 2.491878313341862938e+00
3.224242424242424221e+01 2.389189226675367816e+00
3.266666666666666430e+01 2.286429496344544621e+00
3.309090909090909349e+01 2.183595247555917496e+00
3.351515151515151558e+01 2.080682605516016359e+00
3.393939393939393767e+01 1.977687695431364912e+00
3.436363636363636687e+01 1.874606642508488630e+00
3.478787878787878896e+01 1.771435571953915211e+00
3.521212121212121104e+01 1.668170608974169244e+00
3.563636363636364024e+01 1.564807878775775540e+00
3.606060606060606233e+01 1.461343506565263128e+00
3.648484848484848442e+01 1.357773617549156597e+00
3.690909090909091361e+01 1.254094336933980092e+00
3.733333333333333570e+01 1.150301789926262863e+00
3.775757575757575779e+01 1.046392101732529056e+00
3.818181818181817988e+01 9.423613975593052583e-01
3.860606060606060908e+01 8.382058026131148365e-01
3.903030303030303116e+01 7.339214421004879307e-01
3.945454545454545325e+01 6.295044412279485746e-01
3.987878787878788245e+01 5.249509252020206906e-01
4.030303030303030454e+01 4.202570192292340301e-01
4.072727272727272663e+01 3.154188485161137923e-01
4.115151515151515582e+01 2.104325382691821789e-01
4.157575757575757791e+01 1.052942136949696628e-01
4.200000000000000000e+01 4.440892098500626162e-16

View File

@@ -0,0 +1,53 @@
\subsubsection*{Ingredients}
\begin{tabular}{r@{}rl@{}}
\qty{400}{\gram} &~(\qty{100}{\percent}) & Flour (wheat, rye, corn, whatever
you have at hand)\\
\qty{320}{\gram} & (\qty{80}{\percent}) & Water, preferably at room
temperature\\
\qty{80}{\gram} & (\qty{20}{\percent}) & Active sourdough starter\\
\qty{8}{\gram} & (\qty{2}{\percent}) & Salt\\
\end{tabular}
\subsubsection*{Instructions}
\begin{description}
\item[Prepare the dough] In a large mixing bowl, combine the flour and water.
Mix until you have a shaggy dough with no dry spots.
Add the sourdough starter and salt to the mixture. Incorporate them
thoroughly until you achieve a smooth and homogenized dough.
\item[Fermentation:] Cover the bowl with a lid or plastic wrap. Allow the dough
to rest and ferment until it has increased by at least \qty{50}{\percent}
in size. Depending on the temperature and activity of your starter, this
can take anywhere from 4 to 24~hours.
\item[Cooking preparation:] Once the dough has risen, heat a pan over medium
heat. Lightly oil the pan, ensuring to wipe away any excess oil with a
paper towel.
\item[Shaping and cooking:] With a ladle or your hands, scoop out a portion of
the dough and place it onto the hot pan, spreading it gently like a
pancake.
Cover the pan with a lid. This traps the steam and ensures even cooking
from the top, allowing for easier flipping later.
After about 5~minutes, or when the bottom of the flatbread has a
golden-brown crust, carefully flip it using a spatula.
\emph{Adjusting cook time.} If the flatbread appears too dark, remember to
reduce the cooking time slightly for the next one. Conversely, if it's
too pale, allow it to cook a bit longer before flipping.
Cook the flipped side for an additional 5~minutes or until it's also
golden brown.
\item[Storing:] Once cooked, remove the flatbread from the pan and place it on
a kitchen towel. Wrapping the breads in the towel will help retain their
softness and prevent them from becoming overly crisp. Repeat the cooking
process for the remaining dough.
\item[Serving suggestion:] Enjoy your sourdough flatbreads warm, paired with
your favorite dips, spreads, or as a side to any meal.
\end{description}

Binary file not shown.

After

Width:  |  Height:  |  Size: 284 KiB

View File

@@ -84,7 +84,8 @@ are completely lost when trying to scale it up.
\section{The process of making a starter}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{sourdough-starter.jpg}
\centering
\includegraphics[width=\textwidth]{sourdough-starter-activity-indicators}
\caption[Very active sourdough]{A very active sourdough starter shown by the
bubbles in the dough.}%
\label{fig:sourdough-starter}
@@ -234,11 +235,22 @@ the starter when the starter itself dried out a lot.
You will
still have some mixture left from your first day. As this contains
possibly dangerous pathogens that have been activated make sure you discard
this mixture. Once your sourdough starter is mature you never need to
discard it. It's long-fermented flour that is an excellent addon
this mixture. A rule of thumb is to begin keeping the discard,
the moment you made your first successful bread. At that point
your discard is long-fermented flour that is an excellent addon
used to make crackers, pancakes or delicious hearty sandwich
bread\ldots I~also frequently dry it and use it as a rolling agent
for pizzas that I~am making.
for pizzas that I~am making.\footnote{Discarding starter when preparing
a new batch can be frustrating. With experience, bread-making
becomes more efficient, and excess discard is rarely produced. It is
possible to prepare just the right amount of starter
needed for bread dough. In fact, a fully depleted starter can even be revived
using a small portion of bread dough. Any leftover discard, rich in spores,
can also serve as a backup to create a new sourdough starter. Simply mix the
discard with a little flour and water, and it will spring back to life. That is a
great option if the starter was accidentally depleted. A practical approach
is to store all discard in a single jar in the fridge, adding new discard on
top as needed and using it whenever required.}
You should hopefully again see some bubbles, the starter increasing
in size and/or the starter changing its smell. Some people give
@@ -272,9 +284,12 @@ starters.
\centering
\input{figures/fig-starter-readiness.tex}
\caption[Determining sourdough starter readiness]{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.}%
determine if your sourdough starter is ready to be used. Make sure to
wait at least \qtyrange{6}{12}{\hour} after feeding your
starter to check its readiness. To evaluate it, look at your starter's size
increase, airy texture and take note of its smell.
All three factors are important to properly evaluate your starter's activity level.
An active starter is an important foundation for a successful dough fermentation}%
\label{fig:sourdough-starter-readiness}
\end{flowchart}
@@ -427,7 +442,7 @@ of water. This extra layer of water provides good protection from the top
part drying out. As mold is aerobic it can not grow efficiently under
water~\cite{mold+anaerobic}. Before using the starter again simply either stir
the liquid into the dough or drain it. If you drain the liquid you can use it
to make a lacto fermented hot sauce for instance.
to make a lacto-fermented hot sauce for instance.
The colder it is the longer you preserve a good balance of yeast and
bacteria. Generally, the warmer it is the faster the fermentation process is,

View File

@@ -1,11 +1,11 @@
\ProvidesPackage{sourdough}
\usepackage{blindtext}
\usepackage{graphicx}
\usepackage{pgfplots}
\usepackage{booktabs}
\usepackage{longtable}
\usepackage{chemformula}
\usepackage{chemfig}
\usepackage{booktabs}
\usepackage{makecell}
\usepackage[mode=match, reset-text-family=false]{siunitx}
\usepackage{fontspec}
@@ -24,15 +24,19 @@
types=flowcharts,% ,
float,
floattype=4,%
counterwithin=chapter,
name=Flowchart,%
listname = {List of Flowcharts}
]{loc}
\setuptoc{loc}{chapteratlist}
\DeclareTOCStyleEntry[numwidth=3em]{tocline}{figure}
\DeclareTOCStyleEntry[numwidth=3em]{tocline}{flowchart}
\DeclareTOCStyleEntry[numwidth=3em]{tocline}{table}
% Common abbreviations
\newcommand{\ie}{\emph{i.e.}\@ifnextchar.{\!\@gobble}{}}
\newcommand{\eg}{\emph{e.g.}\@ifnextchar.{\!\@gobble}{}}
\newcommand{\etc}{etc\@ifnextchar.{}{.\@}}
% Consistent pH values
\newcommand{\pHvalue}[1]{pH~\SI{#1}{}}
@@ -71,10 +75,11 @@
\addbibresource{references.bib}
% Clickable links in the table of contents
\usepackage[ocgcolorlinks]{hyperref}
\usepackage{hyperref}
\usepackage{bookmark}
\hypersetup{%
linktoc=all,
colorlinks = true,
linkcolor = hlorange,
urlcolor = codeblue,
citecolor = hlocre,

View File

@@ -0,0 +1,574 @@
0cm
0pt
100x
10x
1940s
1cm
1em
1in
1mm
1pt
2O
2cm
2mm
2pt
3cm
3em
3mm
3pt
4cm
4em
4mm
4pt
5cm
5em
6cm
7cm
7em
8cm
Abu
Acad
Alanblue
Alveograph
Amaia
Amanor
Amylases
Andail
Andale
Andreas
Andrieu
Andrzej
Anonnn
Antonie
Archaeobotanical
Arranz
Aryal
Aurore
Autolyse
BTSkete
BUtn4HKAiBs
Bangzhu
Banneton
Bassinage
Battista
Berghoff
BigWullie
Biopreservation
Bleve
Blixikan
Blusie
Bouguetaïa
Brigitta
Broa
Brockman
Brühstück
Buehler
Buksa
Böcker
CO2
Cagno
Capusoni
Capyboppy
Catzeddu
Charliefleurene
Chia
Chrillesen
Christiane
Chrysanna
Coeliac
Compostional
Cédric
DIY
DKitSeattle
Danieel
Danois
DeclareDocumentCommand
DeclareNewTOC
DeclareRobustCommand
DeclareSIUnit
DeclareTOCStyleEntry
Dekkera
Delwen
Diastatic
Dichev
Drey
DuBosq
Duivelsjong
Dybedahl
Eicher
Elsevier
Emerg
Ethanoic
FEMS
Fazio
Fermentolyse
Fermentolysis
Fleischmann
Fleischmann's
Flipp
FontFace
François
Fredrik
Fructilactobacillus
Gambu
Gasbarrini
Gelatinization
Geoff
Gianluca
Glutenins
Gobbetti
Gognies
Goldstein
Gottfried
Gruyère
Guidone
Gáliková
HCode
Halina
Hansandremanfredsson
Hendrik
Heterofermentative
Hiroshi
Hito
Holmer
Homofermentative
Horsford
IfUsePrefixLine
IfWideLayout
Ifthispageodd
Ilsefa
Inma
Integrale
Jc
Jessicat
Jimjo
JorisBelmans
Jure
Jz
KAO
KOMA
Kankiti
Kao
Karomizu
Keary
Kirill
KitchenAid
Kleinw
Kleinwächter
Knödel
Kochstück
Koga
Kongraksawech
Kotz
Krawontka
Krzysztof
Kuchengnom
Kuriyama
Labelling
Lausuch
Lecloux
Leeuwen
Leucosporidium
Leung
Levain
Lievito
Lightowler
Lili1232000
Lise
Lizabeth
Lucke
Lukasz
Madjedbebe
Maillard
Maktabdar
Marianito
Marijke
Maryam
MatchLowercase
Matsumoto
Mattson
Mckenney
Mcleish
Meghann
Mello
Mercier
Michaela
Microbiol
Mieke
Mitelski
Moj
Monicaks
MqH3GVfjfBc
NONINFRINGEMENT
Napoli
Nic
Nirpf
Nowak
Nowosiadly
Nowotna
Oest
Otaegui
Overfermented
Paaskus
Pagella
Palatino
Pangea
Parmigiano
Pentosans
Pieter
Piskur
Pitdepitis
Poudel
Praznik
Pre
Preshape
Preshaping
Proteolytic
ProvidesPackage
Pui
Qingfa
Rachana
Rafa
Raffaella
Raptorrich
RedeclareSectionCommand
Rizthebread
Roccato
Roijalbaker
Rori
Saccharomyces
Sagar
Schmid
Schmitz
Sebastianklocke
Semibold
Semmeln
Shar
Shelleymierle
Sherik
Shi
Sivy
Smedt
Smirnov
Sourdoughhome
Spelt
Spicher
Stollen
Strambinha
Sune
T00
T1050
T110
T150
T405
T45
T55
T550
T80
T812
TODO
Tangzhong
Tbonewilly
Teepakorn
Teff
Therealbruce
Toph
Underfermented
Usliv
Valadez
Valdaora
Vassil
Vitis
Voicu
Vollkorn
Wikander
Wittenboer
Yudane
Zhou
Ziobro
Zoltan
a4paper
achter
addbibresource
addon
afterskip
aliquot's
alveogram
alveograph
amylases
arabinoxylan
archae
archaea
archaeon
autodot
autolyse
autolysing
backend
banneton
bannetons
bassinage
batard
beforeskip
bfseries
biber
biblatex
biga
bigskip
biocontrol
blindtext
booktabs
breadmaking
breadrolls
breaklinks
bruxellensis
c8GId0ByASo
caco
cagno
calc
captionsetup
caramelise
carbonarius
cerevisiae
chapappifchapterprefix
chapteratlist
chapterformat
chapterlinesformat
chapterstylebar
chapterstylekao
chapterstylelines
chapterstyleplain
chemfig
chemformula
citecolor
codeblack
codeblue
coeliac
colour
countertop
crum
defaultfontfeatures
degF
dependant
diastatic
dimexpr
discard2
doi
eg
egypt
egyptian
ejcn
emph
endophytes
enskip
enumitem
evans
fermentolyse
fermentolysis
fermentée
fi
flatbreads
flavour
flavours
fleischmann
floattype
flushleft
flushright
fnpct
fontseries
fontspec
foodsafe
footnotesize
frigidum
gMbZeUIVzZY
gelatinization
gestions
giga
github
glucan
glutenin
glycaemic
graphicspath
graphicx
hangfrom
heterofermentative
hfill
hidelinks
hlocre
hlorange
hoffset
homofermentative
howpublished
hrule
hrulefill
hscale
hspace
htb
htp
hydrations
hyperref
hypersetup
ie
ifdefined
ifnextchar
ifthenelse
ifwidelayout
includegraphics
industrialisation
injera
isaccessible
jalapeño
jordan
kao
karl
keepaspectratio
kitchenaid
labelled
lacto
le
leavevmode
leftmargin
lievito
linkcolor
linktoc
listname
lll
loafpan
loc
longtable
madre
make4ht
makebox
makecell
makefile
marginparsep
marginparwidth
mbox
microbiome
microtype
mie
milho
mixins
mtocshift
naïve
newcommand
newif
newlength
nextline
niger
nobreakspace
nordic
nuklei
numwidth
ocgcolorlinks
oddsidemargin
outcompete
outcompeted
outcompeting
overferment
overfermented
overproof
overproofing
pHvalue
paperwidth
parbaked
parbox
parmesan
pathreplacing
pdfinfo
pentosans
ph
pinkpic
png
poolish
pre
preshape
preshaping
puré
puréd
purée
pâte
raffaella
redpic
renewcommand
rl
roti
saccharomyces
sanfranciscensis
sanfrancisco
saprotrophic
sbseries
scalebox
scandinavia
scorings
selectfont
semibold
sep
setchapterimage
setchapterpreamble
setchapterstyle
setlength
setlist
setmainfont
setmonofont
setsansfont
setuptoc
sffamily
shelflife
siunitx
sj
smedt
softbuns
spelt
sporulated
sporulates
sporulating
sporulation
standmixer
stollen
sublicense
sug
switzerland
teff
tex
textwidth
th
theadfont
thechapter
thrillist
tikz
tikzpicture
timeframe
timespan
tocline
toolchain
touchpoints
transformative
uk
unchlorinated
underfermented
underproofed
url
urlcolor
usepackage
vfDIfkqBCuk
vienna
vinifera
viscoelastic
vscale
vspace
wahlfeld
wait1
wait2
wetted
xsep
xshift
yYkTrGHNW2w
yeasted
yellowpic
yogurty
ysep
yshift
yudane
ziplock
Örjan
Łukasz

View File

@@ -15,6 +15,8 @@
--padding-hamburger: 5px;
--c-beige: #F3EDE6;
--border-radius: 7px;
--image-padding: 14px;
--image-background: #ffffff;
}
@media (min-width: 1200px){
@@ -385,11 +387,6 @@ h4 {
margin-top: 1em;
}
img[alt~="PIC"], iframe, a img {
border-radius: var(--border-radius);
border: 2px solid var(--c-black);
}
main.main-content, div.footnotes, main.titlepage {
background-color: var(--c-beige);
}
@@ -478,10 +475,6 @@ nav.TOC span:hover, nav.TOC span:hover *, nav.TOC span.chapterToc.selected, nav.
}
p.flowchart-image-wrapper {
background: white;
padding: 20px;
border-radius: var(--border-radius);
border: 2px solid var(--c-black);
display: flex;
justify-content: center;
}
@@ -528,6 +521,19 @@ blockquote {
display: none;
}
figure.float, div.figure, figure.figure {
padding: var(--image-padding);
background: var(--image-background);
}
figure.figure p.noindent {
text-align: center;
}
.flowchart-image-wrapper {
text-align: center;
}
@media (max-width: 768px) {
.header {
display: none;
@@ -572,10 +578,6 @@ blockquote {
background: var(--c-black-background);
}
p.flowchart-image-wrapper {
padding: 5px;
}
.menu-entry:hover {
background-color: transparent;
}
@@ -593,4 +595,8 @@ blockquote {
border: none;
border-radius: 0px;
}
}
figure.float, div.figure, figure.figure {
padding: calc(var(--image-padding) / 2);
}
}

View File

@@ -14,7 +14,6 @@ Anna G.,
Anonnn,
Anthony Atkinson,
Aurore,
BTSkete,
Beatriz,
Bee,
Ben Davies,
@@ -23,6 +22,7 @@ Blixikan,
Blusie,
Brigitta,
Brockman,
BTSkete,
C Fazio,
Cal Kotz,
Case,
@@ -36,12 +36,12 @@ Christiane B,
Christine,
Chrysanna,
Colleen Guidone,
DKitSeattle,
Danieel,
Daniel,
David,
Dee,
Desiree S,
DKitSeattle,
Douglas Penna,
Drey,
Duivelsjong,
@@ -68,6 +68,7 @@ Jessicat,
Jimjo,
John E Bergman,
Jonathan,
JorisBelmans,
Jose Lausuch,
Judith Roth,
Julian,
@@ -140,7 +141,7 @@ Sven,
Tbonewilly,
Thales Mello,
Therealbruce,
Tracy \& Paul Will,
Tracy and Paul Will,
Usliv,
Vassil Dichev,
Vladimir Smirnov,
1 Abu
14 Anonnn
15 Anthony Atkinson
16 Aurore
BTSkete
17 Beatriz
18 Bee
19 Ben Davies
22 Blusie
23 Brigitta
24 Brockman
25 BTSkete
26 C Fazio
27 Cal Kotz
28 Case
36 Christine
37 Chrysanna
38 Colleen Guidone
DKitSeattle
39 Danieel
40 Daniel
41 David
42 Dee
43 Desiree S
44 DKitSeattle
45 Douglas Penna
46 Drey
47 Duivelsjong
68 Jimjo
69 John E Bergman
70 Jonathan
71 JorisBelmans
72 Jose Lausuch
73 Judith Roth
74 Julian
141 Tbonewilly
142 Thales Mello
143 Therealbruce
144 Tracy \& Paul Will Tracy and Paul Will
145 Usliv
146 Vassil Dichev
147 Vladimir Smirnov

View File

@@ -7,7 +7,7 @@
100 / 212 & Water evaporation & Water begins to evaporate and inflates your dough's alveoli.\\
118 / 244 & Acetic acid evaporation & The vinegary tasting acid starts to evaporate, sourness decreases.\\
122 / 252 & Lactic acid evaporation & The dairy tasting lactic acid begins to evaporate, sourness further decreases.\\
140 / 284 & Maillard reaction & The maillard reaction starts to deform starches and proteins.
140 / 284 & Maillard reaction & The Maillard reaction starts to deform starches and proteins.
The dough starts browning.\\
170 / 338 & Caramelization & Remaining sugars begin to caramelise giving your bread a distinct flavor.\\ \bottomrule
\end{tabular}

View File

@@ -1,4 +1,4 @@
%TODO: Alignement is not great
%TODO: Alignment is not great
\begin{tabular}{@{}lll@{}}
\toprule
& \textbf{Flat breads} & \textbf{Pancakes} \\ \midrule

View File

@@ -325,7 +325,7 @@ the surface of the apple a lot quicker. When replicating this with a bread dough
I~would achieve less oven spring.
\begin{figure}[ht]
\includegraphics[width=\textwidth]{apple-experiment-surface-temperatures}
\input{plots/fig-temperature-surface.tex}
\caption[Surface temperature versus steaming technique]{A chart showing how
the temperature of the apple's surface changes with different
steaming techniques.}%
@@ -333,7 +333,7 @@ I~would achieve less oven spring.
\end{figure}
\begin{figure}[ht]
\includegraphics[width=\textwidth]{apple-experiment-ambient-temperatures}
\input{plots/fig-temperature-ambient.tex}
\caption[Dutch Oven temperature versus steaming technique]{This figure shows
how the ambient temperatures inside of the Dutch oven change depending
on the steaming technique that is used.}%

View File

@@ -141,7 +141,7 @@ should dissipate within 12--24~hours, and you have
the added advantage of automatically having
room-temperature water.
Make sure to use whole grain flour (whole-wheat, whole-rye, etc.).
Make sure to use whole grain flour (whole-wheat, whole-rye, \etc{}).
These flours have more natural wild yeast and
bacterial contamination. Making a starter
from just white flour sometimes doesn't work.
@@ -188,7 +188,7 @@ protecting your sourdough starter from aerobic mold entering through
the top.
\begin{figure}[!htb]
\centering
\centering
\includegraphics[width=0.5\textwidth]{sourdough-starter-hooch}
\caption[Hooch] {Hooch building on top of a sourdough
starter~\cite{liquid+on+starter}.}%
@@ -763,20 +763,3 @@ is concentrated extracted gluten from wheat flour.
I~recommend that you add around \qty{5}{\gram} of wheat gluten for every
\qty{100}{\gram} of flour that you are using.
\subsection[Incorporating seeds into the dough]{What's the best stage to
incorporate inclusions (seeds) into the dough?}
You can include seeds directly at the start when mixing the dough. If you use
whole seeds such as wheat or rye kernels, soak them in water overnight and
then rinse them before adding them to the dough. This makes sure that they
are not crunchy and are soft enough when eating the bread. If you forgot to soak
them you can cook the seeds for 10~minutes in hot water. Rinse them with cold
water before adding them to your dough.
If you want to sweeten the dough, your best option is to add sugar during the
shaping stage. Sugar added too early in the process typically gets fermented until none of it
remains. Adjust your shaping technique a little bit and spread your sugar
mixture over a flattened-out dough. You can then roll the dough together,
incorporating layers of sugar.

Binary file not shown.

After

Width:  |  Height:  |  Size: 164 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 1.1 MiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 626 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 32 KiB

View File

@@ -45,7 +45,7 @@ that tastes much better than any store-bought bread.
\section{The process}
\begin{flowchart}[!htb]
\centering
\centering
\input{figures/fig-wheat-sourdough-process.tex}
\caption{The typical process of making a wheat-based sourdough bread.}%
\label{fig:wheat-sourdough-process}
@@ -135,7 +135,7 @@ the microorganisms.
Some people use a 1:1:1 ratio to refresh the starter. This would
be one part of the old starter (\qty{10}{\gram} for instance), 1 part of flour,
and one part of water. I~think this is utter rubbish. As mentioned
your starter is a gigantic dough. You would never opt for a 1:1:1 ratio to
your starter is a miniature dough. You would never opt for a 1:1:1 ratio to
make dough. You might use a maximum of \qty{20}{\percent} starter to
make dough. That's why I~advocate using a 1:5:5 ratio or a
1:10:10 ratio depending on how ripe your starter is. As I~almost
@@ -579,7 +579,8 @@ your gluten network transforms into a web-like structure. This is what
traps the gases during the fermentation process~\cite{how+does+gluten+work}.
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{dough-strength-sourdough-yeast}
\centering
\input{plots/fig-yeast-sourdough-strength.tex}
\caption[Dough strength over time without kneading]{A schematic
visualization of automatic gluten development. The doughs are not
kneaded, just initially mixed. Note how dough strength deteriorates
@@ -587,8 +588,6 @@ traps the gases during the fermentation process~\cite{how+does+gluten+work}.
sourdough due to the bacteria's gluten proteolysis.}%
\label{fig:wheat-yeast-sourdough-degradation}
\end{figure}
% See https://www.figma.com/file/wTUVe6Nm2INOvT82mJhQur/Dough-strength-visualisation?node-id=0%3A1&t=fjdPvXYuJpsdQfWN-1 for
% the source of this visualization
The soaking process has to be extended the more whole-wheat flour is used.
The purpose of the wheat kernel's outer bran is to soak up water as fast
@@ -792,8 +791,7 @@ My go-to method for beginners is to use an \emph{Aliquot jar}.
The aliquot is a sample that you extract from your dough. The
sample is extracted after creating the initial dough strength.
You monitor the aliquot's size increase to judge the
level of fermentation of your main dough. The aliquot
sample is extracted after creating dough strength. As your
level of fermentation of your main dough. As your
dough ferments, so does the content of your aliquot jar. The moment your
sample reached a certain size, your main dough is ready
to be shaped and proofed. The size increase you should
@@ -913,7 +911,12 @@ as rough ballpark figures. Regardless, you need to find values
that work for your setup.
Another limitation is the price. You will need to purchase
a high-tech pH meter, ideally, a meter featuring a spearhead.
a high-tech pH meter, ideally, a meter featuring a spearhead
\footnote{Not every pH meter is suitable for measuring dough.
Please refer to the manual to make sure it is certified for
measuring the pH of liquid and semi-solid media. To receive
accurate pH readings further ensure that your pH meter
is properly calibrated.}.
This way you can directly poke the meter deep into the dough.
At the same time, automated temperature adjustments are a
feature to look out for. Depending on the temperature,
@@ -1665,7 +1668,7 @@ An additional trick that can help you to combine the benefits
of room temperature-proofing and easy cold-proofing scoring
is to place your dough in the freezer for 30~minutes before baking.
Once you notice your dough is almost done proofing, move it to the
freezer. The freezer will dry out the doughs's surface even further
freezer. The freezer will dry out the dough's surface even further
while also lowering its viscosity, making scoring easier.
Another interesting trick is to bake your dough for 30 seconds without steam.

View File

@@ -5,6 +5,7 @@ DOCKER_CMD := docker run --rm -it -v $(PWD):/opt/repo --platform linux/x86_64 $(
.PHONY: bake build_pdf build_docker_image push_docker_image validate website
.PHONY: print_os_version start_shell printvars show_tools_version mrproper
.PHONY: build_serif_pdf build_ebook booklet
# Dockers targets
build_docker_image:
@@ -24,11 +25,14 @@ build_pdf:
$(DOCKER_CMD) "cd /opt/repo/book && make"
bake:
$(DOCKER_CMD) "cd /opt/repo/book && make -j bake"
$(DOCKER_CMD) "cd /opt/repo/book && make bake"
website:
$(DOCKER_CMD) "cd /opt/repo/book && make website"
booklet:
$(DOCKER_CMD) "cd /opt/repo/book && make build_booklet"
mrproper:
$(DOCKER_CMD) "cd /opt/repo/book && make mrproper"

View File

@@ -730,7 +730,7 @@ class ModifyBuild
doc.to_html
end
# For some reason the depdency is missing a // in the url.
# For some reason the dependency is missing a // in the url.
def fix_js_dependency_link(text)
text.gsub("https:/cdn.jsdelivr.net", "https://cdn.jsdelivr.net")
end