Merge branch 'main' into fix_warnings

This commit is contained in:
Ced
2024-06-16 19:14:15 +01:00
9 changed files with 277 additions and 56 deletions

View File

@@ -64,7 +64,7 @@ jobs:
options: -v ${{ github.workspace }}:/app options: -v ${{ github.workspace }}:/app
run: | run: |
cd /app/book cd /app/book
make -j bake make bake
- name: Release baked book to S3 - name: Release baked book to S3
uses: shallwefootball/s3-upload-action@master uses: shallwefootball/s3-upload-action@master
with: with:

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) * [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 informations 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 ## Online HTML version
Head over to [https://www.the-sourdough-framework.com](https://www.the-sourdough-framework.com) Head over to [https://www.the-sourdough-framework.com](https://www.the-sourdough-framework.com)

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 flpour 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.
Utimately 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 wrapping a flavorful filling, or simply enjoying a piece with a drizzle
of olive oil, these flatbreads are sure to impress. of olive oil, these flatbreads are sure to impress.
\subsubsection*{Ingredients} \input{recipes/flat-bread.tex}
\begin{tabular}{r@{}rl@{}} \section{Loaf pan bread}%
\qty{400}{\gram} &~(\qty{100}{\percent}) & Flour (wheat, rye, corn, whatever you have at hand)\\ \label{sec:loaf-pan-bread}
\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}
Loaf pan bread is made using the help of a special loaf pan Loaf pan bread is made using the help of a special loaf pan
or loaf tin. The edges of the pan provide additional support or loaf tin. The edges of the pan provide additional support

View File

@@ -31,10 +31,12 @@ chapters = baking basics bread-types cover flour-types history intro mix-ins\
src_tables := $(wildcard tables/table-*.tex) src_tables := $(wildcard tables/table-*.tex)
src_figures := $(wildcard figures/fig-*.tex) figures/flowcharts_tikz.tex src_figures := $(wildcard figures/fig-*.tex) figures/flowcharts_tikz.tex
src_recipes := $(wildcard recipes/*.tex)
src_tex := $(foreach directory, $(chapters), $(wildcard $(directory)/*.tex)) src_tex := $(foreach directory, $(chapters), $(wildcard $(directory)/*.tex))
src_tex += book.tex book_sans_serif.tex references.bib figures/vars.tex src_tex += book.tex book_sans_serif.tex references.bib figures/vars.tex
src_tex += supporters.csv sourdough.sty colors.tex src_tex += supporters.csv sourdough.sty colors.tex
src_tex += $(src_recipes)
images := $(wildcard images/*/*.jpg) images := $(wildcard images/*/*.jpg)
images += $(wildcard images/*.jpg) images += $(wildcard images/*.jpg)
@@ -55,6 +57,11 @@ ebook_src := $(src_all) tex4ebook.cfg book.mk4 book-ebook.css
website_src := $(src_all) website.cfg style.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/*) website_assets := $(wildcard ../website/assets/*)
ruby_src := ../website/modify_build.rb $(website_assets) ruby_src := ../website/modify_build.rb $(website_assets)
ruby_pkg := ../website/Gemfile ../website/Gemfile.lock ruby_pkg := ../website/Gemfile ../website/Gemfile.lock
@@ -83,6 +90,9 @@ tgt_figures := $(patsubst %.tex, %.png,$(src_figures))
%.xbb: %.jpg %.xbb: %.jpg
ebb -x $< ebb -x $<
booklet/booklet.pdf: $(booklet_src)
$(LATEX) -output-directory=booklet booklet.tex
book_serif/book.pdf: $(src_all) book_serif/book.pdf: $(src_all)
$(LATEX) -output-directory=book_serif book.tex $(LATEX) -output-directory=book_serif book.tex
@@ -97,7 +107,7 @@ epub/%.epub: %.tex $(ebook_src) cover/cover-page.xbb
copy_ebook_files: build_ebook copy_ebook_files: build_ebook
$(RSYNC) book-epub/ bw-book-epub/ $(RSYNC) book-epub/ bw-book-epub/
# We not convert SVG to B&W or lower res for now as they are super small # We do not convert SVG to B&W or lower res for now as they are super small
# anyway # anyway
bw-book-epub/OEBPS/%.jpg: %.jpg bw-book-epub/OEBPS/%.jpg: %.jpg
mkdir -p $(dir $@) mkdir -p $(dir $@)
@@ -140,6 +150,8 @@ help:
@echo "" @echo ""
@echo "build_ebook: builds only the colour ebook" @echo "build_ebook: builds only the colour ebook"
@echo "" @echo ""
@echo "build_booklet: builds only the short booklet"
@echo ""
@echo "build_bw_ebook: builds the low res black & white ebook" @echo "build_bw_ebook: builds the low res black & white ebook"
@echo "" @echo ""
@echo "build_sans_serif_pdf: build accessible pdf only" @echo "build_sans_serif_pdf: build accessible pdf only"
@@ -160,6 +172,8 @@ help:
@echo "" @echo ""
@echo "quick_ebook: compiles ebook but runs lulatex only once" @echo "quick_ebook: compiles ebook but runs lulatex only once"
@echo "" @echo ""
@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 "show_tools_version: Show version of tools used on the build machine"
@echo "" @echo ""
@echo "print-X: print makefile variable X" @echo "print-X: print makefile variable X"
@@ -170,10 +184,12 @@ help:
# Finally actual project targets (i.e. build pdf and ebooks) # 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_pdf: build_serif_pdf build_sans_serif_pdf
build_booklet: booklet/booklet.pdf
build_serif_pdf: book_serif/book.pdf build_serif_pdf: book_serif/book.pdf
build_sans_serif_pdf: book_sans_serif/book_sans_serif.pdf build_sans_serif_pdf: book_sans_serif/book_sans_serif.pdf
@@ -221,6 +237,7 @@ clean_website_build: clean_ebook_build
clean: clean_ebook_build clean_figures clean_website_build clean: clean_ebook_build clean_figures clean_website_build
$(CLEAN) -output-directory=book_serif book.tex $(CLEAN) -output-directory=book_serif book.tex
$(CLEAN) -output-directory=book_sans_serif book_sans_serif.tex $(CLEAN) -output-directory=book_sans_serif book_sans_serif.tex
$(CLEAN) -output-directory=booklet booklet.tex
-rm book*/*.{bbl,loc,.run.xml} -rm book*/*.{bbl,loc,.run.xml}
-rm -rf *book-epub/META-INF -rm -rf *book-epub/META-INF
-rm -rf *book-epub/OEBPS -rm -rf *book-epub/OEBPS
@@ -230,6 +247,7 @@ mrproper: clean
$(CLEAN) -C $(src_figures) $(CLEAN) -C $(src_figures)
$(CLEAN) -C -output-directory=book_serif book.tex $(CLEAN) -C -output-directory=book_serif book.tex
$(CLEAN) -C -output-directory=book_sans_serif book_sans_serif.tex $(CLEAN) -C -output-directory=book_sans_serif book_sans_serif.tex
$(CLEAN) -C -output-directory=booklet booklet.tex
-rm figures/*.png -rm figures/*.png
-rm *.html -rm *.html
-rm *.svg -rm *.svg
@@ -237,13 +255,14 @@ mrproper: clean
-rm -rf release/ -rm -rf release/
-rm -rf book_serif/ -rm -rf book_serif/
-rm -rf book_sans_serif/ -rm -rf book_sans_serif/
-rm -rf booklet/
-rm -rf *book-epub/ -rm -rf *book-epub/
-rm -rf $(website_dir) -rm -rf $(website_dir)
# top level releases rules # top level releases rules
.PHONY: bake release_serif release_sans_serif .PHONY: bake release_serif release_sans_serif
bake: release_serif release_sans_serif bake: release_serif release_sans_serif release_booklet
release: release:
mkdir -p release mkdir -p release
@@ -256,6 +275,9 @@ release_serif: build_serif_pdf build_ebook build_bw_ebook | release
release_sans_serif: build_sans_serif_pdf | release release_sans_serif: build_sans_serif_pdf | release
cp book_sans_serif/book_sans_serif.pdf release/TheBreadCode-The-Sourdough-Framework-sans-serif.pdf 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 # Website stuff
.PHONY: html website .PHONY: html website
$(website_dir)/book.html: $(website_src) cover/cover-page.xbb $(website_dir)/book.html: $(website_src) cover/cover-page.xbb
@@ -283,6 +305,9 @@ website: html ../website/_bundle_install_done $(ruby_src)
quick: # run latex only once no biber, no references etc... quick: # run latex only once no biber, no references etc...
$(LATEX) -e '$$max_repeat=1' -halt-on-error -output-directory=book_serif book.tex $(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... quick_ebook: cover/cover-page.xbb # run latex only once no biber, ref etc...
$(EBOOK) --mode draft book.tex $(EBOOK) --mode draft book.tex

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.

Before

Width:  |  Height:  |  Size: 115 KiB

After

Width:  |  Height:  |  Size: 626 KiB

View File

@@ -913,7 +913,12 @@ as rough ballpark figures. Regardless, you need to find values
that work for your setup. that work for your setup.
Another limitation is the price. You will need to purchase 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. This way you can directly poke the meter deep into the dough.
At the same time, automated temperature adjustments are a At the same time, automated temperature adjustments are a
feature to look out for. Depending on the temperature, feature to look out for. Depending on the temperature,

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: bake build_pdf build_docker_image push_docker_image validate website
.PHONY: print_os_version start_shell printvars show_tools_version mrproper .PHONY: print_os_version start_shell printvars show_tools_version mrproper
.PHONY: build_serif_pdf build_ebook booklet
# Dockers targets # Dockers targets
build_docker_image: build_docker_image:
@@ -24,11 +25,14 @@ build_pdf:
$(DOCKER_CMD) "cd /opt/repo/book && make" $(DOCKER_CMD) "cd /opt/repo/book && make"
bake: bake:
$(DOCKER_CMD) "cd /opt/repo/book && make -j bake" $(DOCKER_CMD) "cd /opt/repo/book && make bake"
website: website:
$(DOCKER_CMD) "cd /opt/repo/book && make website" $(DOCKER_CMD) "cd /opt/repo/book && make website"
booklet:
$(DOCKER_CMD) "cd /opt/repo/book && make build_booklet"
mrproper: mrproper:
$(DOCKER_CMD) "cd /opt/repo/book && make mrproper" $(DOCKER_CMD) "cd /opt/repo/book && make mrproper"