Merge branch 'main' into 225-ebook-situation

This commit is contained in:
Ced
2024-04-27 17:33:41 +01:00
44 changed files with 1042 additions and 348 deletions

View File

@@ -0,0 +1,11 @@
name: Test building book and website
on:
pull_request:
jobs:
test-building-book-website:
uses: ./.github/workflows/test-book-website.yml
with:
docker-image: ghcr.io/${{ github.repository }}:latest

View File

@@ -0,0 +1,10 @@
name: Test building book and website with default image
on:
push:
jobs:
test-building-book-website:
uses: ./.github/workflows/test-book-website.yml
with:
docker-image: ghcr.io/${{ github.repository }}:latest

View File

@@ -1,17 +1,14 @@
name: Test building book and website name: Test book and website for given image
on: on:
pull_request: workflow_call:
inputs:
env: docker-image:
IMAGE: ghcr.io/${{ github.repository }}:${{ github.event.pull_request.head.ref }} required: true
type: string
jobs: jobs:
build-and-push-image: test-book-website:
uses: ./.github/workflows/docker-build-push.yml
test-building-book-website:
needs: build-and-push-image
runs-on: ubuntu-latest runs-on: ubuntu-latest
steps: steps:
- name: Set up git repository - name: Set up git repository
@@ -19,7 +16,7 @@ jobs:
- name: Print dependency versions - name: Print dependency versions
uses: addnab/docker-run-action@v3 uses: addnab/docker-run-action@v3
with: with:
image: ${{ env.IMAGE }} image: ${{ inputs.docker-image }}
options: -v ${{ github.workspace }}:/app options: -v ${{ github.workspace }}:/app
run: | run: |
cd /app/book cd /app/book
@@ -27,7 +24,7 @@ jobs:
- name: Print build variables - name: Print build variables
uses: addnab/docker-run-action@v3 uses: addnab/docker-run-action@v3
with: with:
image: ${{ env.IMAGE }} image: ${{ inputs.docker-image }}
options: -v ${{ github.workspace }}:/app options: -v ${{ github.workspace }}:/app
run: | run: |
cd /app/book cd /app/book
@@ -35,7 +32,7 @@ jobs:
- name: Test baking the release versions - name: Test baking the release versions
uses: addnab/docker-run-action@v3 uses: addnab/docker-run-action@v3
with: with:
image: ${{ env.IMAGE }} image: ${{ inputs.docker-image }}
options: -v ${{ github.workspace }}:/app options: -v ${{ github.workspace }}:/app
run: | run: |
cd /app/book cd /app/book
@@ -51,7 +48,7 @@ jobs:
- name: Test building website - name: Test building website
uses: addnab/docker-run-action@v3 uses: addnab/docker-run-action@v3
with: with:
image: ${{ env.IMAGE }} image: ${{ inputs.docker-image }}
options: -v ${{ github.workspace }}:/app options: -v ${{ github.workspace }}:/app
run: | run: |
cd /app/book cd /app/book

2
.gitignore vendored
View File

@@ -1,3 +1,4 @@
.DS_Store
*.xbb *.xbb
*.aux *.aux
*.fdb_latexmk *.fdb_latexmk
@@ -14,6 +15,7 @@
*.dlog *.dlog
*.bak *.bak
*.opf *.opf
.DS_Store
book/book.out book/book.out
.vscode/ .vscode/
book/bookch* book/bookch*

View File

@@ -55,6 +55,11 @@ RUN wget https://github.com/mgieseki/dvisvgm/releases/download/3.1.2/dvisvgm-3.1
make && \ make && \
make install make install
RUN git clone https://github.com/michal-h21/make4ht.git && \
cd make4ht && \
make && \
make install
# Make sure everything is UTF-8 # Make sure everything is UTF-8
RUN echo "export LC_ALL=en_US.UTF-8" >> /root/.bashrc && \ RUN echo "export LC_ALL=en_US.UTF-8" >> /root/.bashrc && \
echo "export LANG=en_US.UTF-8" >> /root/.bashrc echo "export LANG=en_US.UTF-8" >> /root/.bashrc

View File

@@ -69,7 +69,7 @@ acid? How would the taste change?
methods. In this case I~used a Dutch oven and an apple as dough methods. In this case I~used a Dutch oven and an apple as dough
replacement. All the apples were coming from the fridge. The temperature replacement. All the apples were coming from the fridge. The temperature
was measured using a barbecue thermometer. The more steam, the faster was measured using a barbecue thermometer. The more steam, the faster
the surface temperature increases.} the apple's surface temperature increases.}
\end{figure} \end{figure}
As the temperature increases further the crust thickens. The Maillard reaction As the temperature increases further the crust thickens. The Maillard reaction
@@ -245,7 +245,7 @@ as the size of the Dutch oven is limited.
In many cases, it makes sense to bake multiple In many cases, it makes sense to bake multiple
loaves in one go. It makes the whole process more loaves in one go. It makes the whole process more
efficient as you have to knead less per loaf. The time it efficient as you have to knead less per loaf. The time it
takes to make one loaf is significantly reduced. Furthermore, takes to make one loaf is significantly reduced on average. Furthermore,
you don't require as much energy. You don't have you don't require as much energy. You don't have
to preheat your oven twice for each loaf. to preheat your oven twice for each loaf.

View File

@@ -211,9 +211,11 @@ tweak just by adjusting the speed of your dough's fermentation.
\section{Yeast} \section{Yeast}
Yeasts are single-celled microorganisms belonging to the fungi kingdom, and Yeasts are single-celled microorganisms belonging to the fungi kingdom. They
spores that are hundreds of millions of years old have been identified by can reproduce through either budding or by building spores. The spores are
scientists. There are a wide variety of species --- so far, about \num{1500} incredibly tiny and resistant to external factors. Scientists have found undamaged
spores that are hundreds of million years old. There are a wide variety of
species --- so far, about \num{1500}
have been identified. Unlike other members of the fungi kingdom such as mold, have been identified. Unlike other members of the fungi kingdom such as mold,
yeasts do not ordinarily create a mycelium yeasts do not ordinarily create a mycelium
network~\cite{molecular+mechanisms+yeast}.\footnote{For one interesting network~\cite{molecular+mechanisms+yeast}.\footnote{For one interesting
@@ -332,7 +334,7 @@ so that they could penetrate the tissue of the plants.
\section{Bacteria} \section{Bacteria}
The other most dominant microbial antagonists in your sourdough are bacteria. The other most dominant microbial antagonists in your sourdough are bacteria.
In fact, they are so dominant that they outnumber the yeast in your dough In fact, they are so dominant that they outnumber the yeast in your dough
100~to~1. Whereas yeast provides leavening power, bacteria create the distinct 100~to~1. Whereas yeast provides leavening power, bacteria create the distinct
flavours for which sourdough has been named. These are due to the acidic flavours for which sourdough has been named. These are due to the acidic
byproducts that result from bacterial feeding. As a bonus, these acids byproducts that result from bacterial feeding. As a bonus, these acids
@@ -341,8 +343,8 @@ breads~\cite{shelflife+acidity}.
\begin{figure} \begin{figure}
\includegraphics[width=1.0\textwidth]{bacteria-microscope} \includegraphics[width=1.0\textwidth]{bacteria-microscope}
\caption[Bacteria under the microscope]{Fructilactobacillus Sanfranciscensis \caption[Bacteria under the microscope]{Fructilactobacillus
under the microscope.}% sanfranciscensis under the microscope.}%
\label{lactobacillus-franciscensis-microscope} \label{lactobacillus-franciscensis-microscope}
\end{figure} \end{figure}

View File

@@ -7,3 +7,12 @@
object-fit: contain; object-fit: contain;
width: auto; width: auto;
} }
.float {
max-width: 100%;
}
.float img {
max-width: 100% !important;
height: auto;
object-fit: contain;
width: auto;
}

View File

@@ -41,8 +41,8 @@ To make a flatbread no oven is required; all you need is a stove.
\end{figure} \end{figure}
This type of bread is super simple to make as you can skip This type of bread is super simple to make as you can skip
a lot of the technique that is normally required. The flatbread a lot of the technique that is normally required to make wheat doughs.
can be made with all kinds of flours. You can even use The flatbread can be made with all kinds of flours. You can even use
flour without gluten, such as corn or rice flour, to make the flour without gluten, such as corn or rice flour, to make the
dough. To make the flatbread a little more fluffy, you dough. To make the flatbread a little more fluffy, you
can use a little bit of wheat flour. The developing gluten can use a little bit of wheat flour. The developing gluten
@@ -231,7 +231,8 @@ bake. A similar strategy is used when making corn tortillas.
You can safely store the baked flatbreads or pancakes in your fridge You can safely store the baked flatbreads or pancakes in your fridge
for weeks. When storing make sure to store them in an airtight plastic bag so that for weeks. When storing make sure to store them in an airtight plastic bag so that
they do not dry out. they do not dry out. If they dry out, spray them with some water and toast them.
They will be almost as good as when they were freshly baked.
Keep a little bit of your unbaked dough. You can use it to make the next Keep a little bit of your unbaked dough. You can use it to make the next
batch of bread or pancakes for the next day. If you want to bake a few days later, add batch of bread or pancakes for the next day. If you want to bake a few days later, add
@@ -344,10 +345,9 @@ evaporating moisture will stay inside.
A good trick to make excellent loaf pan bread is to make a very A good trick to make excellent loaf pan bread is to make a very
sticky dough. You can opt for a hydration of \qtyrange{90}{100}{\percent}, almost sticky dough. You can opt for a hydration of \qtyrange{90}{100}{\percent}, almost
resembling a default sourdough starter. Just like with flatbread, resembling a default sourdough starter. Just like with flatbread,
the high humidity helps to make a more airy, fluffy crumb. At the high humidity helps to make a more airy, fluffy crumb. The bread will
the same time the bread will be a bit chewier. This also be a bit chewier. This type of bread made with rye is my family's favorite
type of bread made with rye is my family's favorite style of bread. style of bread. The hearty rye flavor paired with the sticky consistency really
The hearty rye flavor paired with the sticky consistency really
makes an excellent sandwich bread. makes an excellent sandwich bread.
To improve the structure you can also consider using around \qty{50}{\percent} To improve the structure you can also consider using around \qty{50}{\percent}
@@ -385,13 +385,12 @@ and tools are required.
\end{center} \end{center}
\end{figure} \end{figure}
Normally you mix your dough, when using wheat you make sure that you mix When using wheat, make sure to mix your dough enough to develop a gluten network.
enough to develop a gluten network. You allow the dough to reach a certain Allow the dough to reach a certain size increase during the fermentation.
size increase during the fermentation, afterwards you divide and pre-shape the Afterward, divide and pre-shape the dough into the desired visual shape you
dough into the desired visual shape that you like. Each shape requires a would like. Each shape requires a different technique. Sometimes achieving
different technique. Sometimes achieving exactly the right shape can be the right shape can be challenging. Making a baguette, for instance,
challenging, making a baguette for instance, requires you to perform more requires performing more steps. Mastering this technique takes several attempts.
steps. Mastering this technique takes several attempts.
Once the dough is shaped, it is proofed again for a certain Once the dough is shaped, it is proofed again for a certain
period of time. Once the dough is ready, a sharp tool such period of time. Once the dough is ready, a sharp tool such
@@ -403,5 +402,5 @@ performed perfectly, without mistakes.
But after baking you will be rewarded with a beautiful bread But after baking you will be rewarded with a beautiful bread
with great taste and consistency. with great taste and consistency.
There is a fully dedicated recipe and tutorial There is a dedicated recipe and tutorial for this type of bread in the
for this type of bread in the~''\nameref{chapter:wheat-sourdough}''~Chapter. \nameref{chapter:wheat-sourdough} chapter.

View File

@@ -46,7 +46,7 @@
\draw[line width=1pt] (\textwidth,0.1) -- (\textwidth,-0.1); \draw[line width=1pt] (\textwidth,0.1) -- (\textwidth,-0.1);
% Full timeline width for billion years % Full timeline width for billion years
\draw[stealth-stealth, line width=1pt] (0,-3.8) -- node[midway, timeline_timespan] {5.45 billion years} (\textwidth,-3.8); \draw[stealth-stealth, line width=1pt] (0,-3.8) -- node[midway, timeline_timespan] {4.45 billion years} (\textwidth,-3.8);
% Indicator for the period of 3 months = 1.1 billion years % Indicator for the period of 3 months = 1.1 billion years
\draw[stealth-stealth, line width=1pt] (0,-1.0) -- node[midway, timeline_timespan] {1.11 billion years} ({\segmentwidth * 3},-1.0); \draw[stealth-stealth, line width=1pt] (0,-1.0) -- node[midway, timeline_timespan] {1.11 billion years} ({\segmentwidth * 3},-1.0);

View File

@@ -1,5 +1,5 @@
\begin{tikzpicture}[node distance = 3cm, auto] \begin{tikzpicture}[node distance = 3cm, auto]
\node [decision_start] (init) {Room temperature proofing?}; \node [decision_start] (init) {Room temperature-proofing?};
\node [decision, right of=init, node distance=8cm] (retard_bake_decision) {Bake in less than \qty{10}{\hour} from now?}; \node [decision, right of=init, node distance=8cm] (retard_bake_decision) {Bake in less than \qty{10}{\hour} from now?};
\node [block, below of=init, node distance=4cm] (poke) {Poke the dough}; \node [block, below of=init, node distance=4cm] (poke) {Poke the dough};
\node [block, left of=poke] (wait_poke) {Wait\\ 15~minutes}; \node [block, left of=poke] (wait_poke) {Wait\\ 15~minutes};

View File

@@ -141,7 +141,7 @@ This also provides a larger surface that your microbes can use to attack the mol
and start the fermentation process. and start the fermentation process.
I~am still I~am still
yet to find a good way of milling my own flour at home. Even after trying to yet to find a good way of milling my own wheat flour at home. Even after trying to
mill the flour 10~times with short breaks, I~was not able to achieve the same mill the flour 10~times with short breaks, I~was not able to achieve the same
properties as with commercially milled flour. The doughs I~would make felt properties as with commercially milled flour. The doughs I~would make felt
good, maybe a bit coarse. However, during baking the doughs would start to good, maybe a bit coarse. However, during baking the doughs would start to

View File

@@ -15,6 +15,17 @@ acid bacteria and acetic acid bacteria during fermentation. It gives sourdough b
its characteristic tangy flavor and helps to preserve the bread by lowering its pH. its characteristic tangy flavor and helps to preserve the bread by lowering its pH.
The flavor of acetic acid has a more vinegary profile. The flavor of acetic acid has a more vinegary profile.
\item[Aliquot jar] A small piece of dough extracted after creating initial
dough strength. The aliquot jar is used to monitor the dough's fermentation progress.
It's important to ensure the dough's water temperature in the aliquot matches
your room temperature for accurate readings. Be mindful that the aliquot
jar may not be as effective if there are significant temperature
fluctuations in your kitchen. This is because the small dough sample in
the aliquot can heat up or cool down faster than the main dough mass,
potentially impairing its ability to accurately monitor fermentation.
It's crucial to use a cylindrical-shaped aliquot container to properly judge
the dough's size increase.
\item[All Purpose Flour] A general flour thats balanced to make breads and also \item[All Purpose Flour] A general flour thats balanced to make breads and also
cakes. In Germany this is type~550. cakes. In Germany this is type~550.
@@ -104,6 +115,14 @@ proof. The bannetons are typically made out of rattan or wood pulp. An alternati
DIY solution is to use a bowl with a kitchen towel inside. While resting inside of DIY solution is to use a bowl with a kitchen towel inside. While resting inside of
the banneton the doughs surface dries out and becomes easier to score before baking. the banneton the doughs surface dries out and becomes easier to score before baking.
\item[Bassinage method] A bread making technique involving the staged addition of water
to the dough. Initially, the dough is mixed to a lower hydration level,
allowing gluten bonds to form more effectively. Once these gluten structures
are established, additional water is gradually incorporated through further
kneading. This method enhances the dough's extensibility, especially beneficial
when working with lower-gluten flours. By employing the bassinage method,
bakers can achieve a dough that is both strong and extensible.
\item[Bench Rest] A short resting period given to the dough after preshaping \item[Bench Rest] A short resting period given to the dough after preshaping
allowing the gluten to relax a little bit and making shaping easier. Most people allowing the gluten to relax a little bit and making shaping easier. Most people
bench rest for 10 minutes up to an hour. The bench rest becomes especially important bench rest for 10 minutes up to an hour. The bench rest becomes especially important
@@ -194,6 +213,39 @@ of starter is used for the fermentolyse. The flour, water and starter are mixed
together. By adding the starter early the dough becomes more extensible and easier together. By adding the starter early the dough becomes more extensible and easier
to handle. to handle.
\item[Finger poke test] The finger poke test is a simple yet effective way to
check if your sourdough bread is ready to bake. After the final rise, lightly
flour your finger and gently press about half an inch into the dough.
If the dough springs back slowly and leaves a slight indentation, it's perfect
and ready for the oven. If it springs back quickly, it needs more time to rise.
However, if the dough collapses or doesn't spring back at all, it may be
over fermented.
\item[Float test] The float test is a technique for assessing the readiness
of a sourdough starter. To perform this test, take a small sample of
your starter and gently place it in a glass of water. The outcome
of this test can provide insights into your starter's fermentation stage.
\begin{itemize}
\item[] \emph{Positive result:} If your starter effortlessly floats on the
surface of the water, it's a clear indication that it has reached its peak
of fermentation and is ready to be used as a leavening agent in your dough.
This buoyancy is a result of the carbon dioxide gas produced during
the active fermentation process.
\item[] \emph{Negative result:} Conversely, if your starter sinks to the
bottom of the glass, it suggests that it's not quite ready yet.
This indicates that the fermentation process has not progressed
sufficiently for optimal leavening power.
\end{itemize}
It's worth noting that while the float test is a reliable indicator
for wheat-based sourdough starters, it may not be as effective for non-wheat
starters. This is because the gas generated during fermentation in non-wheat
starters tends to escape more readily, making it less buoyant. For non-wheat
starters, a more accurate approach involves observing the presence of
bubbles in your starter jar and assessing its aroma. A mature starter should
emit a mildly sour, but not overly pungent, scent.
\item[Fools Crumb] A term used to describe a crumb structure that has several \item[Fools Crumb] A term used to describe a crumb structure that has several
large pockets or holes, rather than an even distribution of smaller holes. This large pockets or holes, rather than an even distribution of smaller holes. This
isn't necessarily a desired feature, as it can indicate uneven fermentation or isn't necessarily a desired feature, as it can indicate uneven fermentation or
@@ -225,6 +277,8 @@ to prevent clumping and burning it.
fermentation. It imparts a mild tangy yogurty flavor to sourdough bread and, along fermentation. It imparts a mild tangy yogurty flavor to sourdough bread and, along
with acetic acid, contributes to the bread's overall acidity. with acetic acid, contributes to the bread's overall acidity.
\item[Levain] See Sourdough starter.
\item[Maillard Reaction] The Maillard reaction is one of the causes of food browning \item[Maillard Reaction] The Maillard reaction is one of the causes of food browning
during cooking. The reaction occurs between reducing sugars and amino acids, and during cooking. The reaction occurs between reducing sugars and amino acids, and
depending on the initial reactants and cooking conditions can produce a wide variety depending on the initial reactants and cooking conditions can produce a wide variety
@@ -324,7 +378,8 @@ stage by placing the dough in a colder environment, typically a refrigerator. Th
bakers in scheduling, allowing them to have more control over when to bake their breads, bakers in scheduling, allowing them to have more control over when to bake their breads,
especially in large-scale bakeries where timing is essential to serve freshly baked bread especially in large-scale bakeries where timing is essential to serve freshly baked bread
to early morning customers. While scheduling is the main reason, some bakers also assert to early morning customers. While scheduling is the main reason, some bakers also assert
that retarding can enhance the bread's overall flavor profile. that retarding can enhance the bread's overall flavor profile. Also known as
fridge-proofing.
\item[Rye] A type of grain used in baking. Due to its low gluten content, breads \item[Rye] A type of grain used in baking. Due to its low gluten content, breads
made solely from rye flour tend to be dense. However, rye has a unique flavor and made solely from rye flour tend to be dense. However, rye has a unique flavor and
@@ -340,10 +395,6 @@ quality. The scalding technique can also enhance the overall flavor and aroma of
the bread, bringing out more pronounced grainy notes and reducing bitterness the bread, bringing out more pronounced grainy notes and reducing bitterness
sometimes found in certain whole grains. sometimes found in certain whole grains.
\item[Scalding] A method where boiling water is poured over flour and then cooled
down to room temperature. This process gelatinizes the starches in the flour,
resulting in a dough that retains moisture better and has an improved shelf life.
\item[Scoring] Cutting the surface of the bread dough before it's baked. This \item[Scoring] Cutting the surface of the bread dough before it's baked. This
allows the dough to expand freely in the oven, preventing it from bursting in allows the dough to expand freely in the oven, preventing it from bursting in
unpredictable ways. It also provides a controlled aesthetic to the finished loaf. unpredictable ways. It also provides a controlled aesthetic to the finished loaf.
@@ -351,9 +402,10 @@ unpredictable ways. It also provides a controlled aesthetic to the finished loaf
\item[Sift] To pass flour or another dry ingredient through a sieve to \item[Sift] To pass flour or another dry ingredient through a sieve to
remove lumps and aerate it. remove lumps and aerate it.
\item[Soaker] A mixture of grain and water that is left to soak overnight (or for a \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 specified amount of time) before being incorporated into bread dough. This helps to
soften and hydrate the grains, making them easier to integrate into the dough and 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. providing a moister crumb in the finished bread.
\item[Sponge] A type of preferment, a sponge is a wet mixture of flour, water, and \item[Sponge] A type of preferment, a sponge is a wet mixture of flour, water, and
@@ -389,8 +441,17 @@ with the plant providing a shield against pathogens and receiving sugars from th
photosynthesis of the plant in return. When the plant becomes weak the wild yeasts photosynthesis of the plant in return. When the plant becomes weak the wild yeasts
can become parasitic and consume the host. can become parasitic and consume the host.
\item[W-Value] A parameter representing the strength of flour in terms of its
baking quality. The W-value, derived from the Chopin Alveograph test,
measures the energy required to blow a bubble with the dough until it bursts.
It is a direct indicator of the flour's ability to withstand the fermentation
and baking processes. A higher W-value typically indicates a stronger
flour, suitable for breads with high volume and longer fermentation times.
Conversely, a lower W-value suggests a weaker flour, better suited for
products requiring less structure, like cakes and pastries.
\item[Yeast] Microorganisms that ferment the sugars present in the dough, producing \item[Yeast] Microorganisms that ferment the sugars present in the dough, producing
carbon dioxide and alcohol and thereby causing the dough to rise. carbon alcohol, carbon dioxide and heat; thereby causing the dough to rise.
\item[Yudane] A Japanese method of bread-making which involves the preparation \item[Yudane] A Japanese method of bread-making which involves the preparation
of a starter by mixing boiling water with bread flour in a specific ratio, typically 1:1 of a starter by mixing boiling water with bread flour in a specific ratio, typically 1:1

View File

@@ -1,4 +0,0 @@
\chapter{Foreword}%
\label{ch:Foreword}
Hopefully one day there is going to be an awesome foreword
by another bread baker!

View File

@@ -46,7 +46,8 @@ seemingly
healthy bread consisted of so many other things aside from flour and water. healthy bread consisted of so many other things aside from flour and water.
The black color was not coming from the flour, but from caramelized sugar. The black color was not coming from the flour, but from caramelized sugar.
The packaging stated it was a sourdough bread, but then why was there additional yeast? The packaging stated it was a sourdough bread, but then why was there additional yeast?
I~thought that if it was really sourdough, it shouldn't require additional yeast, and I~soon I~thought that if it was really sourdough, it shouldn't require additional
yeast. I~soon
realized that something was wrong with the bread I~was buying. realized that something was wrong with the bread I~was buying.
I~proceeded to check the other supermarket breads, only to discover that they, too, I~proceeded to check the other supermarket breads, only to discover that they, too,
contained ingredients I'd never heard of. That was the day I~lost trust contained ingredients I'd never heard of. That was the day I~lost trust
@@ -162,8 +163,8 @@ and more. It should provide a detailed understanding as to why certain steps are
and how to adapt them when things go wrong while making bread. and how to adapt them when things go wrong while making bread.
It is my desire for this knowledge to be accessible to everyone around the world, regardless It is my desire for this knowledge to be accessible to everyone around the world, regardless
of budget, and as such, I~do not want to charge for the book. That's why I've decided to make of budget, and as such, I~do not want to charge for the book. That's why I've decided to make
it open source and have asked the community to support my work financially via my ko-fi page it open source and have asked the community to support my work with
\url{https://ko-fi.com/thebreadcode}. The community's feedback has been amazing so far, and donations. The community's feedback has been amazing so far, and
I've already raised much more money than initially expected. The digital version of this book I've already raised much more money than initially expected. The digital version of this book
will always remain free. There is also a hardcover version of the book available for purchase. will always remain free. There is also a hardcover version of the book available for purchase.
You can read more details here: \url{https://breadco.de/physical-book} You can read more details here: \url{https://breadco.de/physical-book}

View File

@@ -49,9 +49,11 @@ images += $(foreach directory, $(chapters), $(wildcard $(directory)/*/*.png))
# images to lower resolution and greyscale # images to lower resolution and greyscale
bw_images := $(addprefix bw-book-epub/OEBPS/, $(images)) bw_images := $(addprefix bw-book-epub/OEBPS/, $(images))
src_all := $(src_tex) $(src_figures) $(src_tables) tex4ebook.cfg book.mk4 $(images) src_all := $(src_tex) $(src_figures) $(src_tables) $(images)
website_src := $(src_all) website.cfg ebook_src := $(src_all) tex4ebook.cfg book.mk4 book-ebook.css
website_src := $(src_all) website.cfg style.css
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)
@@ -89,7 +91,7 @@ book_sans_serif/book_sans_serif.pdf: $(src_all)
.PHONY: copy_ebook_files .PHONY: copy_ebook_files
epub/%.epub: %.tex $(src_all) cover/cover-page.xbb epub/%.epub: %.tex $(ebook_src) cover/cover-page.xbb
$(EBOOK) $< $(EBOOK) $<
copy_ebook_files: build_ebook copy_ebook_files: build_ebook
@@ -221,9 +223,9 @@ 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
-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
-rm book*-epub/mimetype -rm *book-epub/mimetype
mrproper: clean mrproper: clean
$(CLEAN) -C $(src_figures) $(CLEAN) -C $(src_figures)
@@ -236,7 +238,7 @@ 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 book-epub/ -rm -rf *book-epub/
-rm -rf $(website_dir) -rm -rf $(website_dir)
# top level releases rules # top level releases rules

Binary file not shown.

After

Width:  |  Height:  |  Size: 687 KiB

BIN
book/mix-ins/beer-bread.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 384 KiB

BIN
book/mix-ins/broa.jpg Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 860 KiB

View File

@@ -1,183 +1,315 @@
\chapter{Mix-ins}% \chapter{Mix-ins}%
\label{ch:mix-ins} \label{ch:mix-ins}
\begin{quoting} \begin{quoting}
This work-in-progress chapter will describes altering and additions you In this chapter, you will learn about the fascinating world of sourdough
could make to your dough to create beautiful or different tasting loafs. mix-ins. Discover how these additions can elevate your bread, enhancing
flavor, adding vibrant colors, and creating delightful textures that make
each loaf a culinary masterpiece.
\end{quoting} \end{quoting}
\begin{figure}[htb!]
\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
adds flavor and hydration to the dough.}%
\end{figure}
A loaf of wheat sourdough has a very pure aesthetic. Good craftsmanship and A loaf of wheat sourdough has a very pure aesthetic. Good craftsmanship and
precision transforms the ingredients into simple, but delicious food. With precision transform the ingredients into simple, but delicious food. With
mix-ins, the basic recipe can become the starting point for a whole world of mix-ins, the basic recipe can become the starting point for a whole world of
modifications to try and combine. Think of the loaf of bread as a blank canvas modifications to try and combine. Think of the loaf of bread as a blank canvas
to express yourself. to express yourself.
One approach to sort through the options is to categorize mix-ins by shape \section{Categories}
(the transition between these categories is somewhat fuzzy):
\begin{figure}[htb!]
\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
some of the water. When adding puré to the dough only slowly add
additional water as the puré slowly releases additional water to the
dough.}%
\end{figure}
One approach to categorizing the mixins is to look at their respective shape.
However, the transition between these categories is somewhat fuzzy:
\begin{itemize} \begin{itemize}
\item Liquids: Integrate homogeneously into the dough, may replace some of \item Liquids: Integrate homogeneously into the dough, may replace some of
the water. Examples: Milk, oil, spinach juice. or all of the water. Examples: Milk, butter, oil, spinach juice, tomato
juice, eggs
\item Powders: Integrate homogeneously into the dough, may replace some of \item Powders: Integrate homogeneously into the dough, may replace some of
the flour. Examples: Rye flour, semolina, cocoa, ground spices. the flour. Examples: Milk powder, semolina, cocoa, spices
\item Small bits: Individually visible in the final loaf, small enough to \item Small bits: Individually visible in the final loaf, small enough to
distribute somewhat evenly throughout the dough. Examples: Seeds (poppy distribute somewhat evenly throughout the dough. Examples: Seeds (wheat
seeds, sesame, pumpkin seeds), whole spices (coriander). berries, rye berries, poppy seeds, sesame, pumpkin seeds,
flax seeds), whole spices (coriander)
\item Chunks: Larger pieces that will only be present in the occasional bite \item Chunks: Larger pieces that will only be present in the occasional bite
when eating a slice of your bread. Examples: dried tomatoes, chunks of when eating a slice of your bread. Examples: dried tomatoes, chunks of
cheese, cheese, chunks of chocolate
\end{itemize} \end{itemize}
Another categorization approach looks at the changes to the bread. Most Another categorization approach looks at the changes to the bread:
mix-ins actually impact multiple aspects.
\begin{itemize} \begin{itemize}
\item Flavor: Significantly changes the taste of the bread. Examples: rye \item Flavor: Significantly changes the taste of the bread. Examples: rye
flour, spices. flour, corn flour, spices, sugar.
\item Color: Significantly changes the look of the bread. Examples: cocoa, \item Color: Significantly changes the look of the bread. Examples: cocoa,
squid ink, beetroot juice. squid ink, beetroot juice, tomato juice.
\item Texture: Significantly changes the feeling in the mouth when eaten. \item Texture: Significantly changes the feeling in the mouth when eaten.
Examples: Cheese (gummy), seeds (crunchy), olives (squishy chunks). Examples: Cheese (gummy), seeds (crunchy), olives (squishy chunks).
\end{itemize} \end{itemize}
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!]
\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.}%
\end{figure}
Mix-ins affect the structure of the dough. One aspect is the impact on Mix-ins affect the structure of the dough. One aspect is the impact on
hydration. Some mix-ins absorb a lot of water when added to the dough, so you hydration. Some mix-ins absorb a lot of water when added to the dough, so you
have to increase the amount of water to achieve the same dough consistency. have to increase the amount of water to achieve the same dough consistency.
The other impact is on the gluten network. Bits and chunks disrupt the gluten The other impact is on the gluten network. Bits and chunks disrupt the gluten
network, and may reduce the rise. All of this depends on the amount of mix-ins network and may reduce oven spring during baking. All of this depends on the amount of mix-ins
used. A good rule of thumb is to add \qtyrange{10}{20}{\percent} of the amount used. A good rule of thumb is to add \qtyrange{10}{20}{\percent} of the amount
of flour in most mix-ins, reduced to around \qtyrange{1}{5}{\percent} of the of flour in most mix-ins, reduced to around \qtyrange{1}{5}{\percent} of the
amount of flour for spices. amount of flour for spices.
An important factor is also the mix-in's behavior during baking. Particularly An important factor is also the mix-in's behavior during baking. Particularly
chunks may bake differently than dough, and either melt (cheese) leaving holes chunks may bake differently than dough, and either melt (cheese) leaving holes
inside, or char when peeking through the crust (\eg, vegetables). These inside, or char when peeking through the crust (\eg~vegetables). These
problems can be mitigated to some degree with the right preparation (\eg, problems can be mitigated to some degree with the right preparation (\eg~chopping
chopping into smaller pieces, soaking dry ingredients in water or oil first, into smaller pieces, soaking dry ingredients in water or oil first,
or squeezing out excess moisture). or squeezing out excess moisture).
% potential reference to link: https://food52.com/blog/25521-additions-to-sourdough-bread-ideas
\section{Examples} \section{Examples}
The following is a list of common mix-ins and their peculiarities: The following is a list of common mix-ins and their peculiarities. They can be
combined depending on your preference.
\subsection{Flours} \subsection{Flours}
These are powders. Usually you want to just replace some fraction of the These are powders. Usually, you want to just replace some fraction of the
regular bread flour. Different flours change the taste of the bread and regular bread flour. Different flours change the taste of the bread and
usually moderately affect the color. usually moderately affect the color.
\begin{figure}[htb!]
\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.}%
\end{figure}
\begin{itemize} \begin{itemize}
\item Whole wheat flour (substitute any amount, makes the bread taste more \item Whole wheat flour (substitute any amount, makes the bread taste more
complex, nutty) complex, nutty)
\item Rye flour (very hearty, nutty, malty taste) \item Rye flour (very hearty, nutty, malty taste)
\item Semolina (supports mediterranean flavors) \item Enzymatic malt (malty taste, improves enzymatic activity). The malt is
a great addition when making quicker yeast-based doughs.
\item Semolina (supports Mediterranean flavors)
\item Cocoa (replace \qty{10}{\percent} of the flour for a black loaf, goes \item Cocoa (replace \qty{10}{\percent} of the flour for a black loaf, goes
great with sweet toppings) great with sweet toppings)
\item Other non-wheat flours such as: Chickpea, corn, hemp, potato etc.
\end{itemize} \end{itemize}
\subsection{Liquids} \subsection{Liquids}
Substitute some of the water with a different liquid, affecting taste and
texture. Instead of using water, you can substitute it with a different liquid,
affecting taste and texture.
\begin{figure}[htb!]
\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}%
\end{figure}
\begin{itemize} \begin{itemize}
\item Coffee
\item Beer \item Beer
\item Olive oil (mediterranean) \item Butter
\item Milk (for sweet, soft breads)
\item Buttermilk \item Buttermilk
\item Cereal milk (the leftover milk from eating cereals)
\item Coffee
\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 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.
\end{itemize} \end{itemize}
\subsection{Colors} \subsection{Colors}
These drastically change the color of the bread. \label{section:colors}
Some mix-ins will change the color and flavor of your bread. Common colorings
include:
\begin{itemize} \begin{itemize}
\item Activated charcoal powder (black)
\item Beetroot juice (red) \item Beetroot juice (red)
\item Blueberry juice (blue)
\item Blue butterfly pea flower powder (blue)
\item Carrot juice (orange) \item Carrot juice (orange)
\item Pear juice (pink)
\item Spinach juice (green) \item Spinach juice (green)
\item Squid ink (black) \item Squid ink (black)
\item Strawberry juice (red)
\item Tomato juice (red)
\end{itemize} \end{itemize}
\subsection{Seeds and nuts} \subsection{Seeds and nuts}
These are small bits, with some almost crossing into the chunk category. Most These are small bits, with some almost crossing into the chunk category. Some
seeds benefit from being baked for about 10~minutes before adding them to the seeds benefit from being boiled for about 10~minutes before adding them to the
dough. dough.
\begin{figure}[htb!]
\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.}%
\end{figure}
\begin{itemize} \begin{itemize}
\item Pumpkin seed \item Cacao nibs
\item Chia seed \item Chia seed
\item Flaxseed (soak these in water first) \item Chopped or whole nuts such as: Almonds, hazelnuts and walnuts
\item Hemp seed (very crunchy, a personal favorite) \item Flaxseeds
\item Hemp seed
\item Poppy seed
\item Pumpkin seed
\item Sesame \item Sesame
\item Sunflower seed \item Sunflower seed
\item Poppy seed \item Whole rye berries (boil 10 minutes)
\item Cacao nibs \item Whole wheat berries (boil 10 minutes)
\item Chopped or whole walnuts
\item Chopped or whole hazelnuts
\end{itemize} \end{itemize}
\begin{figure}[htb!]
\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.}%
\end{figure}
\subsection{Spices and flavor mix-ins} \subsection{Spices and flavor mix-ins}
These are mostly powders or small bits. These are mostly powders or small bits.
\begin{itemize} \begin{itemize}
\item Mediterranean herbs (oregano, thyme, rosemary, marjoram) \item Blueberry skins (press through a sieve to remove juice, raw blueberries
\item Bread spice (coriander, cumin, fennel, anise)
\item Grated hard cheese: Gruyère, parmesan
\item Blueberry skins (press through sieve to remove juice, raw blueberries
would add too much water)
\item Lemon zest (alternatively orange or lime)
\item Browned onions \item Browned onions
\item Molasses \item Candied fruits such as: Lemon, orange, pineapple, etc.
\item Cinnamon
\item Grated hard cheese such as: Gruyère, parmesan, etc.
\item Mediterranean herbs such as: Marjoram, oregano, rosemary, thyme, etc.
\item Miso \item Miso
\item Molasses
\item Sugar
\item Spices such as: Anise, fennel, cinnamon, coriander, cumin, etc.
\item Zests such as: Lime, Lemon, orange, etc.
\end{itemize} \end{itemize}
\subsection{Highlights} \subsection{Highlights}
Mostly chunks, that add a big contrast and flavorful highlight to the basic Mostly chunks, that add a big contrast and flavorful highlight to the basic
bread. Usually you want to use only one (or maximum two) of these. Often can bread. Usually, you want to use only one (or a maximum of two) of these. The suggestions
be complemented well by some flavor mix-in or flour. can often be complemented by some flavor or flour mix-in.
\begin{itemize} \begin{itemize}
\item Chocolate chunks or drops
\item Chunks of black garlic
\item Chunks of cheese such as: Cheddar, feta, etc.
\item Cornflakes
\item Dried fruits such as: Cranberries, dates, raisins, etc.
\item Olives \item Olives
\item Pickled pepperoni
\item Sundried tomatoes (squeeze out the oil if using pickled ones, or soak \item Sundried tomatoes (squeeze out the oil if using pickled ones, or soak
dried ones in water) dried ones in water)
\item Pickled pepperoni
\item Cornflakes
\item Dried fruit (\eg, cranberries, raisins)
\item Chunks of cheese (\eg, cheddar, feta)
\item Chunks of black garlic
\item Chocolate chunks or drops
\end{itemize} \end{itemize}
\subsection{Combinations} \subsection{Combinations}
A few combinations where multiple mix-ins complement each other: A few combinations where multiple mix-ins complement each other:
\begin{itemize} \begin{itemize}
\item Semolina, mediterranen herbs, olives, sundried tomatoes. \item Butter and milk. Then add cinnamon and brown sugar before shaping
\item Cranberry and walnuts. \item Cheddar and pepperoni
\item Cheddar and pepperoni. \item Cheddar and jalapeño
\item Cocoa, cacao nibs, whole hazelnuts. \item Cocoa, cacao nibs, whole hazelnuts
\item Cranberry and walnuts
\item Semolina, Mediterranean herbs, olives, sundried tomatoes
\item Tomato juice instead of water with \qty{20}{\percent} rye flour
\end{itemize} \end{itemize}
\section{Techniques} \section{Techniques}
Adding mix-ins into the dough is just the simplest approach. There are other,
more advanced ways to include them into a loaf.
\subsection{Covering the crust} Adding mix-ins to the dough is just the simplest approach. Add the mix-ins
This works best for either powders or small bits. Spread the mix-in in a flat directly when you knead the dough. After the first kneading wait for 30 minutes to see
container, wet the surface of the loaf, and dip it into the mix-in right if the dough has enough or too much water. In the case of whole-soaked berries
before baking. (\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.
This does not work for all mix-ins, as some can't handle the high temperatures \subsection{Adding before shaping}
during baking and char. Most commonly done with seeds (\eg, sesame).
\begin{figure}[htb!]
\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.}%
\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
\subsection{Covering the surface}
\begin{figure}[htb!]
\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
dough is quickly dumped in water and then rolled in a bowl of seeds.
Afterward, the dough is directly baked in the preheated oven. These
coverings add superb additional flavor and can be adjusted depending on
your preference. I love adding a mixture of sunflower, flax, and
sesame seeds.}%
\end{figure}
This works best for either powders or small bits. After shaping wrap your
coverings on the dough's surface. This works great too when covering your
banneton or loaf pan with seeds or oats. When using a loaf pan or banneton
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).
\subsection{Swirled colors} \subsection{Swirled colors}
Mix-ins that change the color of the dough bring the opportunity for even more Mix-ins that change the color of the dough bring the opportunity for even more
creativity. creativity by merging the dough before shaping.
Separate the dough before adding a colorful ingredient. Combine the two (or Proceed and separate your base dough before adding a colorful ingredient. Bulk
ferment the dough in separate containers. Then Combine the two (or
more) differently colored doughs by laminating and stacking the colored sheets more) differently colored doughs by laminating and stacking the colored sheets
of dough before the last folding, just before shaping and bulk rise. 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
These can really become works of art. 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
% https://www.reddit.com/r/Sourdough/comments/onynqm/sourdough_with_dried_raspberries_recipe_in/ layered featuring different colors, textures, and flavors.}
% https://natashasbaking.com/blueberry-sourdough/
% https://www.reddit.com/r/Sourdough/comments/mot8vq/chocolate_sourdough_loaf/
% https://www.reddit.com/r/Sourdough/comments/13sdex9/fairy_bread_for_my_daughters_class_party_with/
% https://www.reddit.com/r/Sourdough/comments/keyx88/roasted_onion_and_garlic_loaf_this_loaf_didnt/
% https://myloveofbaking.com/rye-molasses-and-orange-sourdough/
% https://www.reddit.com/r/Sourdough/comments/qd3y4k/pick_your_player_miso_sesame_or_cranberry_walnut/
% https://www.reddit.com/r/Sourdough/comments/lziedg/10_spelt_flour_80_hydration_50_buttermilk_50/
% https://www.reddit.com/r/Sourdough/comments/lbrc4a/squid_ink_sourdough_with_sharp_cheddar_and/
% https://www.reddit.com/r/Sourdough/comments/na0zed/was_hoping_for_a_more_pronounced_purple_but_i/
% https://www.reddit.com/r/Sourdough/comments/10rzgif/sesame_and_poppyseed_64_hydration/
% https://www.reddit.com/r/Sourdough/comments/11lcgvr/sesame_seed_crusted_loaf_w_everything_bagel/

Binary file not shown.

After

Width:  |  Height:  |  Size: 741 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 529 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 385 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 805 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 463 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 192 KiB

View File

@@ -1,11 +1,11 @@
@article{raffaella+di+cagno, @article{raffaella+di+cagno,
author = {Di Cagno, Raffaella et al.}, author = {Di Cagno, Raffaella et al.},
title = {Proteolysis by sourdough lactic acid bacteria: title = {Proteolysis by sourdough lactic acid bacteria:
effects on wheat flour protein fractions and effects on wheat flour protein fractions and
gliadin peptides involved in human cereal intolerance}, gliadin peptides involved in human cereal intolerance},
journal = {Applied and environmental microbiology}, journal = {Applied and environmental microbiology},
publisher = {Dover}, publisher = {Dover},
volume = {68,2} volume = {68,2}
} }
@misc{too+hot+baking, @misc{too+hot+baking,
@@ -16,17 +16,17 @@
note = {Accessed: 2022-03-24} note = {Accessed: 2022-03-24}
} }
@article{rye-defects, @misc{rye-defects,
author = {Marie Oest et al.}, author = {Marie Oest et al.},
title = {Rye Bread Defects: Analysis of Composition and title = {Rye Bread Defects: Analysis of Composition and
Further Influence Factors as Determinants Further Influence Factors as Determinants
of Dry-Baking}, of Dry-Baking},
journal = {Applied and environmental microbiology}, journal = {Applied and environmental microbiology},
publisher = {Foods}, publisher = {Foods},
howpublished = {\url{https://www.mdpi.com/2304-8158/9/12/1900/pdf}} howpublished = {\url{https://www.mdpi.com/2304-8158/9/12/1900/pdf}}
} }
@article{stiff+starter, @misc{stiff+starter,
title = {Stiff sourdough starter}, title = {Stiff sourdough starter},
author = {Hendrik Kleinwächter}, author = {Hendrik Kleinwächter},
howpublished = {\url{https://www.youtube.com/watch?v=MqH3GVfjfBc}}, howpublished = {\url{https://www.youtube.com/watch?v=MqH3GVfjfBc}},
@@ -34,7 +34,7 @@
note = {Accessed: 2022-04-26} note = {Accessed: 2022-04-26}
} }
@article{baking+twice, @misc{baking+twice,
title = {Baking your dough twice to make a sourer bread}, title = {Baking your dough twice to make a sourer bread},
author = {Hendrik Kleinwächter}, author = {Hendrik Kleinwächter},
howpublished = {\url{https://youtu.be/0v1QhtyUic4}}, howpublished = {\url{https://youtu.be/0v1QhtyUic4}},
@@ -42,7 +42,7 @@
note = {Accessed: 2022-04-28} note = {Accessed: 2022-04-28}
} }
@article{more+active+starter, @misc{more+active+starter,
title = {4 tips to make a more active starter}, title = {4 tips to make a more active starter},
author = {Hendrik Kleinwächter}, author = {Hendrik Kleinwächter},
howpublished = {\url{https://www.youtube.com/watch?v=yYkTrGHNW2w}}, howpublished = {\url{https://www.youtube.com/watch?v=yYkTrGHNW2w}},
@@ -50,7 +50,7 @@
note = {Accessed: 2022-04-29} note = {Accessed: 2022-04-29}
} }
@article{baking+powder+reduce-acidity, @misc{baking+powder+reduce-acidity,
title = {Use baking powder to reduce dough acidity}, title = {Use baking powder to reduce dough acidity},
author = {Hendrik Kleinwächter}, author = {Hendrik Kleinwächter},
howpublished = {\url{https://www.youtube.com/watch?v=c8GId0ByASo}}, howpublished = {\url{https://www.youtube.com/watch?v=c8GId0ByASo}},
@@ -58,7 +58,7 @@
note = {Accessed: 2022-04-29} note = {Accessed: 2022-04-29}
} }
@article{food+safe+ph, @misc{food+safe+ph,
title = {Acidified Foods: Food Safety Considerations for Food Processors}, title = {Acidified Foods: Food Safety Considerations for Food Processors},
author = {Felix H. Barron and Angela M. Fraser}, author = {Felix H. Barron and Angela M. Fraser},
howpublished = {\url{https://www.intechopen.com/chapters/41654}}, howpublished = {\url{https://www.intechopen.com/chapters/41654}},
@@ -75,7 +75,7 @@
year = {2022} year = {2022}
} }
@article{liquid+on+starter, @misc{liquid+on+starter,
title = {Acidified Foods: Food Safety Considerations for Food Processors}, title = {Acidified Foods: Food Safety Considerations for Food Processors},
author = {Sourdoughhome}, author = {Sourdoughhome},
howpublished = {\url{https://www.sourdoughhome.com/what-is-hooch/}}, howpublished = {\url{https://www.sourdoughhome.com/what-is-hooch/}},
@@ -83,57 +83,59 @@
note = {Accessed: 2022-04-29} note = {Accessed: 2022-04-29}
} }
@article{acetic+acid+production, @misc{acetic+acid+production,
title = {Acetic Acid (or Ethanoic acid). The main constituent of vinegar.}, title = {Acetic Acid (or Ethanoic acid). The main constituent of vinegar.},
author = {chm.bris.ac.uk}, author = {chm.bris.ac.uk},
howpublished = {\url{http://www.chm.bris.ac.uk/motm/acetic-acid/acetic-acidjs.htm}}, howpublished = {\url{http://www.chm.bris.ac.uk/motm/acetic-acid/acetic-acidjs.htm}},
note = {Accessed: 2022-04-29} note = {Accessed: 2022-04-29}
} }
@article{jordan+bread, @misc{jordan+bread,
author = {Amaia Arranz-Otaegui et al.}, author = {Amaia Arranz-Otaegui et al.},
title = {Archaeobotanical evidence reveals the origins of bread 14,400 years ago in northeastern Jordan}, title = {Archaeobotanical evidence reveals the origins of
journal = {Proc Natl Acad Sci USA}, bread 14,400 years ago in northeastern Jordan},
year = {2018}, journal = {Proc Natl Acad Sci USA},
year = {2018},
howpublished = {\url{https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6077754/}} howpublished = {\url{https://www.ncbi.nlm.nih.gov/pmc/articles/PMC6077754/}}
} }
@article{fleischmann+history, @misc{fleischmann+history,
author = {Fleischmann History}, author = {Fleischmann History},
title = {History of Fleischmann's}, title = {History of Fleischmann's},
howpublished = {\url{https://www.fleischmannsyeast.com/our-history/}}, howpublished = {\url{https://www.fleischmannsyeast.com/our-history/}},
note = {Accessed: 2023-12-04} note = {Accessed: 2023-12-04}
} }
@article{evans+mill, @misc{evans+mill,
author = {Jeremy Norman}, author = {Jeremy Norman},
title = {Oliver Evans Builds the First Automated Flour Mill: Origins of the Integrated and Automated Factory}, title = {Oliver Evans Builds the First Automated Flour Mill: Origins
of the Integrated and Automated Factory},
howpublished = {\url{https://www.historyofinformation.com/detail.php?entryid=3567}}, howpublished = {\url{https://www.historyofinformation.com/detail.php?entryid=3567}},
note = {Accessed: 2023-12-04} note = {Accessed: 2023-12-04}
} }
@article{first+mixer, @misc{first+mixer,
author = {United States Patent office}, author = {United States Patent office},
title = {Eastman Mixer for cream, eggs and liquors}, title = {Eastman Mixer for cream, eggs and liquors},
howpublished = {\url{https://patents.google.com/patent/US330829}}, howpublished = {\url{https://patents.google.com/patent/US330829}},
note = {Accessed: 2023-12-04} note = {Accessed: 2023-12-04}
} }
@article{egypt+beer, @misc{egypt+beer,
author = {Smithsonian Magazine}, author = {Smithsonian Magazine},
title = {Worlds Oldest Industrial-Scale Brewery Found in Egypt}, title = {Worlds Oldest Industrial-Scale Brewery Found in Egypt},
howpublished = {\url{https://www.smithsonianmag.com/smart-news/worlds-oldest-industrial-scale-brewery-found-egypt-180977026/}}, howpublished = {\url{https://www.smithsonianmag.com/smart-news/worlds-oldest-industrial-scale-brewery-found-egypt-180977026/}},
note = {Accessed: 2023-12-04} note = {Accessed: 2023-12-04}
} }
@article{kitchenaid+history, @misc{kitchenaid+history,
author = {KitchenAid}, author = {KitchenAid},
title = {KitchenAid Brand History}, title = {KitchenAid Brand History},
howpublished = {\url{https://www.kitchenaid.com/100year/history.html}}, howpublished = {\url{https://www.kitchenaid.com/100year/history.html}},
note = {Accessed: 2023-12-04} note = {Accessed: 2023-12-04}
} }
@article{aboriginal+grinding+stones, @misc{aboriginal+grinding+stones,
author = {First Peoples - State Relations}, author = {First Peoples - State Relations},
title = {Fact sheet: Aboriginal grinding stones}, title = {Fact sheet: Aboriginal grinding stones},
howpublished = {\url{https://www.firstpeoplesrelations.vic.gov.au/fact-sheet-aboriginal-grinding-stones}}, howpublished = {\url{https://www.firstpeoplesrelations.vic.gov.au/fact-sheet-aboriginal-grinding-stones}},
@@ -193,9 +195,10 @@
} }
@article{egyptian+bread, @article{egyptian+bread,
title = {Investigation of ancient Egyptian baking and brewing methods by correlative microscopy}, title = {Investigation of ancient Egyptian baking
and brewing methods by correlative microscopy},
volume = {273}, volume = {273},
DOI = {10.1126/science.273.5274.488}, doi = {10.1126/science.273.5274.488},
number = {5274}, number = {5274},
journal = {Science}, journal = {Science},
author = {Samuel, Delwen}, author = {Samuel, Delwen},
@@ -203,26 +206,26 @@
pages = {488490} pages = {488490}
} }
@article{vienna+breadrolls, @misc{vienna+breadrolls,
author = {Eben Norton Horsford}, author = {Eben Norton Horsford},
title = {Report on Vienna bread}, title = {Report on Vienna bread},
year = {1875}, year = {1875},
howpublished = {\url{https://archive.org/details/bub_gb_6jRDAAAAIAAJ/page/n100/mode/2up}}, howpublished = {\url{https://archive.org/details/bub_gb_6jRDAAAAIAAJ/page/n100/mode/2up}},
note = {Accessed: 2022-05-02} note = {Accessed: 2022-05-02}
} }
@article{coeliac+disease, @misc{coeliac+disease,
author = {Giovanni Battista Gasbarrini et al.}, author = {Giovanni Battista Gasbarrini et al.},
title = {Coeliac disease: an old or a new disease? History of a pathology}, title = {Coeliac disease: an old or a new disease? History of a pathology},
year = {2014}, year = {2014},
journal = {Intern Emerg Med.}, journal = {Intern Emerg Med.},
howpublished = {\url{https://pubmed.ncbi.nlm.nih.gov/24435555/}} howpublished = {\url{https://pubmed.ncbi.nlm.nih.gov/24435555/}}
} }
@article{interview+karl+de+smedt, @misc{interview+karl+de+smedt,
author = {Hendrik Kleinwächter}, author = {Hendrik Kleinwächter},
title = {Interview with Karl de Smedt}, title = {Interview with Karl de Smedt},
year = {2021}, year = {2021},
howpublished = {\url{https://www.youtube.com/watch?v=vfDIfkqBCuk}}, howpublished = {\url{https://www.youtube.com/watch?v=vfDIfkqBCuk}},
note = {Accessed: 2022-05-06} note = {Accessed: 2022-05-06}
} }
@@ -251,7 +254,8 @@
@article{effects+oxygen+yeast+growth, @article{effects+oxygen+yeast+growth,
author = {Hiroshi Kuriyama et al.}, author = {Hiroshi Kuriyama et al.},
title = {Effects of oxygen supply on yeast growth and metabolism in continuous fermentation}, title = {Effects of oxygen supply on yeast growth
and metabolism in continuous fermentation},
year = {1993}, year = {1993},
journal = {Journal of Fermentation and Bioengineering}, journal = {Journal of Fermentation and Bioengineering},
publisher = {Elsevier}, publisher = {Elsevier},
@@ -270,7 +274,8 @@
@article{leaf+surface+sugars+epiphytes, @article{leaf+surface+sugars+epiphytes,
author = {Julien Mercier}, author = {Julien Mercier},
title = {Role of Leaf Surface Sugars in Colonization of Plants by Bacterial Epiphytes}, title = {Role of Leaf Surface Sugars in Colonization of
Plants by Bacterial Epiphytes},
year = {2000}, year = {2000},
journal = {Applied and Environmental Microbiology}, journal = {Applied and Environmental Microbiology},
volume = {66,1} volume = {66,1}
@@ -278,7 +283,8 @@
@article{yeasts+biocontrol+agent, @article{yeasts+biocontrol+agent,
author = {Gianluca Bleve et al.}, author = {Gianluca Bleve et al.},
title = {Isolation of epiphytic yeasts with potential for biocontrol of Aspergillus carbonarius and A. niger on grape}, title = {Isolation of epiphytic yeasts with potential for
biocontrol of Aspergillus carbonarius and A. niger on grape},
year = {2006}, year = {2006},
journal = {International Journal of Food Microbiology}, journal = {International Journal of Food Microbiology},
volume = {108,2} volume = {108,2}
@@ -286,13 +292,14 @@
@article{saccharomyces+cerevisiae+pathogen, @article{saccharomyces+cerevisiae+pathogen,
author = {Sabine Gognies et al.}, author = {Sabine Gognies et al.},
title = {Saccharomyces cerevisiae, a potential pathogen towards grapevine, Vitis vinifera}, title = {Saccharomyces cerevisiae, a potential pathogen
towards grapevine, Vitis vinifera},
year = {2001}, year = {2001},
journal = {FEMS Microbiology Ecology}, journal = {FEMS Microbiology Ecology},
volume = {37,2} volume = {37,2}
} }
@article{pickled+foods+expiration, @misc{pickled+foods+expiration,
title = {Hardcore hibernation}, title = {Hardcore hibernation},
author = {David Adam}, author = {David Adam},
howpublished = {\url{https://www.nature.com/articles/news001019-9}}, howpublished = {\url{https://www.nature.com/articles/news001019-9}},
@@ -300,7 +307,7 @@
note = {Accessed: 2022-06-23} note = {Accessed: 2022-06-23}
} }
@article{old+spores, @misc{old+spores,
title = {Do Pickles Go Bad?}, title = {Do Pickles Go Bad?},
author = {thrillist.com}, author = {thrillist.com},
howpublished = {\url{https://www.thrillist.com/eat/nation/do-pickles-go-bad-refrigerator-pickles-shelf-life}}, howpublished = {\url{https://www.thrillist.com/eat/nation/do-pickles-go-bad-refrigerator-pickles-shelf-life}},
@@ -308,7 +315,7 @@
note = {Accessed: 2022-06-23} note = {Accessed: 2022-06-23}
} }
@article{mold+anaerobic, @misc{mold+anaerobic,
title = {Differences between Yeasts and Molds}, title = {Differences between Yeasts and Molds},
author = {Sagar Aryal}, author = {Sagar Aryal},
howpublished = {\url{https://microbenotes.com/differences-between-yeasts-and-molds/}}, howpublished = {\url{https://microbenotes.com/differences-between-yeasts-and-molds/}},
@@ -317,7 +324,8 @@
} }
@article{effects+temperature+flavor+wine, @article{effects+temperature+flavor+wine,
title = {Effects of Fermentation Temperature on Key Aroma Compounds and Sensory Properties of Apple Wine}, title = {Effects of Fermentation Temperature on Key Aroma
Compounds and Sensory Properties of Apple Wine},
author = {Bangzhu Peng et al.}, author = {Bangzhu Peng et al.},
year = {2015}, year = {2015},
journal = {Food science}, journal = {Food science},
@@ -325,7 +333,9 @@
} }
@article{effects+temperature+flavor, @article{effects+temperature+flavor,
title = {Analysis of domestic refrigerator temperatures and home storage time distributions for shelf-life studies and food safety risk assessment}, title = {Analysis of domestic refrigerator temperatures and home
storage time distributions for shelf-life
studies and food safety risk assessment},
author = {Anna Roccato et al.}, author = {Anna Roccato et al.},
year = {2017}, year = {2017},
journal = {Food Research}, journal = {Food Research},
@@ -333,7 +343,8 @@
} }
@article{lactobacillus+sanfrancisco, @article{lactobacillus+sanfrancisco,
title = {Lactobacillus sanfrancisco a key sourdough lactic acid bacterium: a review}, title = {Lactobacillus sanfrancisco a key sourdough
lactic acid bacterium: a review},
author = {M. Gobbetti et al.}, author = {M. Gobbetti et al.},
year = {1997}, year = {1997},
journal = {Food Microbiology}, journal = {Food Microbiology},
@@ -349,7 +360,8 @@
} }
@article{shelflife+acidity, @article{shelflife+acidity,
title = {The effect of pH on shelf-life of pork during aging and simulated retail display}, title = {The effect of pH on shelf-life of pork during
aging and simulated retail display},
author = {S F Holmer et al.}, author = {S F Holmer et al.},
year = {2009}, year = {2009},
journal = {Meat Science}, journal = {Meat Science},
@@ -357,7 +369,8 @@
} }
@article{temperature+bacteria+corn, @article{temperature+bacteria+corn,
title = {Effect of temperature (5-25°C) on epiphytic lactic acid bacteria populations and fermentation of whole-plant corn silage}, title = {Effect of temperature (5-25°C) on epiphytic lactic acid
bacteria populations and fermentation of whole-plant corn silage},
author = {Y Zhou et al.}, author = {Y Zhou et al.},
year = {2016}, year = {2016},
journal = {Applied Microbiology and Biotechnology}, journal = {Applied Microbiology and Biotechnology},
@@ -365,7 +378,8 @@
} }
@article{acetic+acid+oxygen, @article{acetic+acid+oxygen,
title = {Effects of Oxygen Availability on Acetic Acid Tolerance and Intracellular pH in Dekkera bruxellensis}, title = {Effects of Oxygen Availability on Acetic Acid Tolerance
and Intracellular pH in Dekkera bruxellensis},
author = {Claudia Capusoni et al.}, author = {Claudia Capusoni et al.},
year = {2016}, year = {2016},
journal = {Applied Microbiology and Biotechnology}, journal = {Applied Microbiology and Biotechnology},
@@ -373,14 +387,15 @@
} }
@article{starch+damage+flour, @article{starch+damage+flour,
title = {A review of milling damaged starch: Generation, measurement, functionality and its effect on starch-based food systems}, title = {A review of milling damaged starch: Generation, measurement,
functionality and its effect on starch-based food systems},
author = {Qingfa Wang et al.}, author = {Qingfa Wang et al.},
year = {2020}, year = {2020},
journal = {Food chemistry}, journal = {Food chemistry},
volume = {15,31} volume = {15,31}
} }
@article{how+does+gluten+work, @misc{how+does+gluten+work,
title = {Gluten: How Does It Work?}, title = {Gluten: How Does It Work?},
author = {Modernist Cuisine}, author = {Modernist Cuisine},
howpublished = {\url{https://modernistcuisine.com/mc/gluten-how-does-it-work/}}, howpublished = {\url{https://modernistcuisine.com/mc/gluten-how-does-it-work/}},
@@ -389,87 +404,105 @@
} }
@article{bassinage+technique, @misc{bassinage+technique,
title = {The Bassinage Method}, title = {The Bassinage Method},
author = {The Sourdough School}, author = {The Sourdough School},
howpublished = {\url{https://www.sourdough.co.uk/glossary/bassinage/}}, howpublished = {\url{https://www.sourdough.co.uk/glossary/bassinage/}},
year = {2022}, year = {2022},
note = {Accessed: 2022-12-22} note = {Accessed: 2022-12-22}
} }
@article{oxidization+dough, @misc{oxidization+dough,
title = {Enzymes and pH matter, troubleshoot my loaf}, title = {Enzymes and pH matter, troubleshoot my loaf},
author = {Bread Blog}, author = {Bread Blog},
howpublished = {\url{https://bread.blog/enzymes-and-ph-matter-troubleshoot-my-loaf/}}, howpublished = {\url{https://bread.blog/enzymes-and-ph-matter-troubleshoot-my-loaf/}},
year = {2022}, year = {2022},
note = {Accessed: 2022-12-28} note = {Accessed: 2022-12-28}
} }
@article{stretch+and+fold+technique, @misc{stretch+and+fold+technique,
title = {How And When To Stretch And Fold Your Sourdough}, title = {How And When To Stretch And Fold Your Sourdough},
author = {The Bread Code YouTube}, author = {The Bread Code YouTube},
howpublished = {\url{https://www.youtube.com/watch?v=gMbZeUIVzZY}}, howpublished = {\url{https://www.youtube.com/watch?v=gMbZeUIVzZY}},
year = {2022}, year = {2022},
note = {Accessed: 2023-01-06} note = {Accessed: 2023-01-06}
} }
@article{rye+pentosans, @article{rye+pentosans,
author = {Krzysztof Buksa and Anna Nowotna and Werner Praznik and Halina Gambu{\'s} and Rafa{\l} Ziobro and Jan Krawontka}, author = {Krzysztof Buksa and Anna Nowotna and Werner Praznik
journal = {Food Research International}, and Halina Gambu{\'s} and Rafa{\l} Ziobro and Jan Krawontka},
keywords = {Rye bread, Wholemeal, Pentosans, Starch}, journal = {Food Research International},
number = {8}, keywords = {Rye bread, Wholemeal, Pentosans, Starch},
pages = {2045-2051}, number = {8},
title = {The role of pentosans and starch in baking of wholemeal rye bread}, pages = {2045-2051},
url = {https://www.sciencedirect.com/science/article/pii/S0963996910002127}, title = {The role of pentosans and starch in baking of wholemeal rye bread},
volume = {43}, url = {https://www.sciencedirect.com/science/article/pii/S0963996910002127},
year = {2010} volume = {43},
year = {2010}
} }
@article{storing+bread, @article{storing+bread,
author = {King Author}, author = {King Author},
title = {Storing yeast based bread}, title = {Storing yeast based bread},
url = {https://www.kingarthurbaking.com/blog/2020/07/08/the-best-way-to-store-yeast-bread}, url = {https://www.kingarthurbaking.com/blog/2020/07/08/the-best-way-to-store-yeast-bread},
note = {Accessed: 2023-02-03} note = {Accessed: 2023-02-03}
} }
@misc{wheat+kernel, @misc{wheat+kernel,
author = {W. Berghoff}, author = {W. Berghoff},
title = {A wheat kernel and its nutritional value.}, title = {A wheat kernel and its nutritional value.},
url = {https://en.wikipedia.org/wiki/Whole_grain#/media/File:Wheat-kernel_nutrition.svg}, url = {https://en.wikipedia.org/wiki/Whole_grain#/media/File:Wheat-kernel_nutrition.svg},
note = {Accessed: 2023-03-30} note = {Accessed: 2023-03-30}
} }
@article{enzymatic+activity+whole+wheat, @article{enzymatic+activity+whole+wheat,
author = {Rachana Poudel}, author = {Rachana Poudel},
title = {Enzymatic Activities and Compostional Properties of Whole Wheat Flour}, title = {Enzymatic Activities and Compostional Properties of Whole Wheat Flour},
year = {2018}, year = {2018},
page = {67}, page = {67}
} }
@article{review+of+sourdough+starters, @article{review+of+sourdough+starters,
author = {Calvert MD, Madden AA et al.}, author = {Calvert MD, Madden AA et al.},
title = {A review of sourdough starters: ecology, practices, and sensory quality with applications for baking and recommendations for future research}, title = {A review of sourdough starters: ecology, practices, and
year = {2021}, sensory quality with applications for baking
page = {3}, and recommendations for future research},
url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8117929/#ref-36}, year = {2021},
note = {Accessed: 2023-03-30} page = {3},
url = {https://www.ncbi.nlm.nih.gov/pmc/articles/PMC8117929/#ref-36},
note = {Accessed: 2023-03-30}
} }
@article{gluten+development+temperatures, @article{gluten+development+temperatures,
author = {Koga S., Böcker U. et al.}, author = {Koga S., Böcker U. et al.},
title = {Influence of temperature during grain filling on gluten viscoelastic properties and gluten protein composition.}, title = {Influence of temperature during grain filling on gluten
year = {2015}, viscoelastic properties and gluten protein composition.},
year = {2015},
journal = {Journal of the Science of Food and Agriculture}, journal = {Journal of the Science of Food and Agriculture},
number = {96}, number = {96},
pages = {122-130} pages = {122-130}
} }
@article{milling+commercial+home+mill+comparison, @article{milling+commercial+home+mill+comparison,
author = {Ross, Andrew S. and Kongraksawech, Teepakorn}, author = {Ross, Andrew S. and Kongraksawech, Teepakorn},
journal = {Cereal Chemistry}, journal = {Cereal Chemistry},
number = {2}, number = {2},
pages = {239-252}, pages = {239-252},
title = {Characterizing whole-wheat flours produced using a commercial stone mill, laboratory mills, and household single-stream flour mills}, title = {Characterizing whole-wheat flours produced using a
volume = {95}, commercial stone mill, laboratory mills, and household
year = {2018} single-stream flour mills},
volume = {95},
year = {2018}
}
@article{freezing+toasting+bread,
title = {The impact of freezing and toasting on the
glycaemic response of White Bread},
volume = {62},
doi = {10.1038/sj.ejcn.1602746},
number = {5},
journal = {European Journal of Clinical Nutrition},
author = {Burton, P and Lightowler, H J},
year = {2007},
pages = {594599}
} }

View File

@@ -70,7 +70,8 @@ before making another dough. Just use a very tiny amount of starter. For
\qty{1}{\kg} of flour I~would take around \qty{10}{\gram} of starter \qty{1}{\kg} of flour I~would take around \qty{10}{\gram} of starter
(\qty{1}{\percent} in terms of baker's (\qty{1}{\percent} in terms of baker's
math). If my starter is very young and had just been fed 6 to 8~hours ago I~might math). If my starter is very young and had just been fed 6 to 8~hours ago I~might
end up going up to \qty{20}{\percent} of starter. Remember that your dough is nothing end up going up to \qty{20}{\percent} of starter. As mentioned earlier,
remember that your dough is nothing
else other than a big starter. It will tremendously help you to figure out else other than a big starter. It will tremendously help you to figure out
your best next steps. your best next steps.
@@ -97,8 +98,8 @@ a longer fermentation before most gluten is broken down.
The regular sourdough starter is made at a hydration of around \qty{100}{\percent}. The regular sourdough starter is made at a hydration of around \qty{100}{\percent}.
This means the starter has equal parts of flour and water. This is the most This means the starter has equal parts of flour and water. This is the most
common and most universal sourdough starter there is. The starter has a good common and most universal sourdough starter there is. The starter has a good
balance of yeast and bacteria. After a feeding, the volume increases and balance of yeast and bacteria. After a feeding, the volume of the dough
increases. After it reaches a certain peak, it will start to collapse again. greatly increases. After it reaches a certain peak, it will start to collapse again.
The best way to judge whether the starter is ready is to look at signs such as The best way to judge whether the starter is ready is to look at signs such as
air pockets on the edges of your container. Also use the nose to evaluate the air pockets on the edges of your container. Also use the nose to evaluate the
@@ -278,13 +279,13 @@ production.
\label{fig:stollen} \label{fig:stollen}
\end{figure} \end{figure}
I~then proceeded and bought a cheap low cake flour in my nearby supermarket. I~then proceeded and bought a cheap low-gluten cake flour in my nearby supermarket.
This flour before had caused me massive headaches in the past. I~made a sourdough bread This flour before had caused me massive headaches in the past. I~made a sourdough bread
exactly how I~would normally do---I~had to reduce the hydration a bit as a low exactly how I~would normally do---I~had to reduce the hydration a bit as a low
gluten flour does not soak up as much water. Then I~replaced the starter with gluten flour does not soak up as much water. Then I~replaced the starter with
the stiff starter. The dough felt amazing and was suddenly able to withstand a the stiff starter. The dough felt amazing and was suddenly able to withstand a
much longer fermentation period. The bread had great oven spring and tasted much longer fermentation period. The bread had great oven spring and tasted
very mild. I~am still yet to find a proper explanation why the yeast part of very mild. I~am still yet to find a proper scientific explanation why the yeast part of
the dough is more active. Maybe it is not. It could also be that the bacteria the dough is more active. Maybe it is not. It could also be that the bacteria
is inhibited by the lack of water. is inhibited by the lack of water.
@@ -301,8 +302,9 @@ pockets of air on the sides of your container. Use your nose to smell the
starter. It should have a mild smell. It also tends to smell much more starter. It should have a mild smell. It also tends to smell much more
alcoholic than the other starters. alcoholic than the other starters.
When using a stiff starter, use around \qtyrange{1}{20}{\percent} depending on When using a stiff starter, use around \qtyrange{1}{20}{\percent} starter for your
the ripeness of your starter. In summer I~typically use around dough. This depends on the ripeness of your starter.
In summer I~typically use around
\qty{10}{\percent} and in winter around \qty{20}{\percent}. This way you can \qty{10}{\percent} and in winter around \qty{20}{\percent}. This way you can
also control the fermentation speed. also control the fermentation speed.
Mixing the starter can be a little bit annoying as it hardly homogenizes with Mixing the starter can be a little bit annoying as it hardly homogenizes with

View File

@@ -128,9 +128,9 @@ properly hydrated. This step activates the microbial spores
in your mixture, drawing them out of hibernation and in your mixture, drawing them out of hibernation and
reviving them. reviving them.
Finally, cover your mixture but make sure the covering is Finally, cover your mixture but make sure the covering is
not airtight. I~like to use a glass and place another not airtight. You still want some gas exchange to be possible.
inverted one on top. The container shouldn't be airtight, I~like to use a glass and place another
you still want some gas exchange to be possible. inverted one on top.
\begin{flowchart}[!htb] \begin{flowchart}[!htb]
\begin{center} \begin{center}
@@ -147,7 +147,7 @@ on a single leaf of a plant.
All of the different yeasts and bacteria are trying to get All of the different yeasts and bacteria are trying to get
the upper hand in this battle. Other pathogens such as mold the upper hand in this battle. Other pathogens such as mold
are also being activated as we added water. Only the strongest are also being activated as we added water. Only the strongest
most adaptable microorganisms will survive. most adaptable microorganisms will survive.
By adding water to the By adding water to the
flour the starches start to degrade. The seedling tries to flour the starches start to degrade. The seedling tries to
@@ -302,7 +302,7 @@ flour\footnote{Whether this is working, I~can't scientifically say.
Typically the microbes that have once taken place are very strong Typically the microbes that have once taken place are very strong
and won't allow other microbes to enter. My starter has initially and won't allow other microbes to enter. My starter has initially
been made with rye flour. So chances are that the majority of been made with rye flour. So chances are that the majority of
my microorganisms are from a rye source.}. my microorganisms are from a rye source.}.
Your nose is also Your nose is also
a great tool to determine starter readiness. Depending on a great tool to determine starter readiness. Depending on

View File

@@ -10,13 +10,12 @@
\usepackage[mode=match, reset-text-family=false]{siunitx} \usepackage[mode=match, reset-text-family=false]{siunitx}
\usepackage{fontspec} \usepackage{fontspec}
\usepackage{calc} \usepackage{calc}
\usepackage{enumitem}
\usepackage[font={sffamily, sbseries}]{quoting} \usepackage[font={sffamily, sbseries}]{quoting}
\usepackage{enumitem}
\usepackage{microtype} \usepackage{microtype}
% style=nextline breaks on make4ht % style=nextline breaks on make4ht
\ifdefined\HCode\else \ifdefined\HCode\else
\usepackage{enumitem}
\setlist[description]{style=nextline, leftmargin=0cm} \setlist[description]{style=nextline, leftmargin=0cm}
\fi \fi
@@ -106,6 +105,7 @@
{wheat-sourdough/} {wheat-sourdough/}
{wheat-sourdough/shaping/} {wheat-sourdough/shaping/}
{non-wheat-sourdough/} {non-wheat-sourdough/}
{mix-ins/}
} }
% Caption and figure size below images % Caption and figure size below images

View File

@@ -116,3 +116,9 @@ that you like.
This option is great for very long-term storage. Personally This option is great for very long-term storage. Personally
I~like having a few slices of bread frozen as an emergency I~like having a few slices of bread frozen as an emergency
backup when I~have had no time to bake. backup when I~have had no time to bake.
A 2008 study hints that there might be some health
benefits to freezing and toasting your bread. By doing so
the starch molecules could become more resistant to digestion
and thus lower your body's blood sugar
response by almost 40\%~\cite{freezing+toasting+bread}.

View File

@@ -6,11 +6,15 @@
--fw-bold: 800; --fw-bold: 800;
--f-lh: 28px; --f-lh: 28px;
--c-black: #282828; --c-black: #282828;
--c-black-background: #1c1819;
--fs-xxxl: 32px; --fs-xxxl: 32px;
--fs-xxl: 26px; --fs-xxl: 26px;
--fs-xl: 24px; --fs-xl: 24px;
--fs-l: 22px; --fs-l: 22px;
--fs-m: 16px; --fs-m: 16px;
--padding-hamburger: 5px;
--c-beige: #F3EDE6;
--border-radius: 7px;
} }
@media (min-width: 1200px){ @media (min-width: 1200px){
@@ -37,6 +41,7 @@ body{
font-family: var(--ff-sans); font-family: var(--ff-sans);
font-weight: var(--fw-regular); font-weight: var(--fw-regular);
font-size: var(--fs-m); font-size: var(--fs-m);
color: var(--c-black);
} }
@media screen and (min-width: 57rem) { @media screen and (min-width: 57rem) {
@@ -59,7 +64,6 @@ body{
/* ****************** */ /* ****************** */
main.main-content,main.titlepage,div.footnotes{ main.main-content,main.titlepage,div.footnotes{
padding:1rem;
} }
.permalink { .permalink {
@@ -143,9 +147,7 @@ nav.TOC a, nav.TOC a:visited{
body{ body{
background-color:#F8F8F8; background-color: var(--c-beige);
background: url("bg.jpg") center center no-repeat;
background-size: cover;
} }
a { a {
@@ -175,6 +177,7 @@ figure.texsource, figure.shellcommand, figure.htmlsource, figure.luasource, figu
.main-content { .main-content {
line-height: var(--f-lh); line-height: var(--f-lh);
margin-left: 30px;
} }
div.footnotes { div.footnotes {
@@ -230,6 +233,7 @@ figcaption.caption {
list-style: none; list-style: none;
margin: 0; margin: 0;
padding: 0; padding: 0;
width: 300px;
} }
.menu-items .chapterToc, .menu-items .likechapterToc { .menu-items .chapterToc, .menu-items .likechapterToc {
@@ -240,6 +244,14 @@ figcaption.caption {
text-decoration: none; text-decoration: none;
} }
.home-link {
display: block;
}
.home-title {
display: block;
}
@media (max-width: 768px) { @media (max-width: 768px) {
.toggle-menu-label { .toggle-menu-label {
display: block; display: block;
@@ -249,7 +261,8 @@ figcaption.caption {
.hamb{ .hamb{
cursor: pointer; cursor: pointer;
padding: 5px; padding: var(--padding-hamburger);
margin-right: calc(var(--padding-hamburger) * -1);
display: flex; display: flex;
align-items: center; align-items: center;
align-content: center; align-content: center;
@@ -284,7 +297,7 @@ figcaption.caption {
.menu { .menu {
background: var(--c-black); background: var(--c-black);
display: flex; display: flex;
padding: 10px 0px; padding: 10px 1rem;
position: relative; position: relative;
align-items: center; align-items: center;
justify-content: space-between; justify-content: space-between;
@@ -303,13 +316,16 @@ figcaption.caption {
color: #000; color: #000;
font-size: 20px; font-size: 20px;
font-weight: bold; font-weight: bold;
padding-left: 17px;
} }
.chapterToc a, .sectionToc a, .subsectionToc a, .likechapterToc a { .chapterToc a, .sectionToc a, .subsectionToc a, .likechapterToc a {
padding-left: 17px; padding-left: 17px;
} }
.menu-items .chapterToc.home-link {
display: none;
}
.home-title { .home-title {
display: none; display: none;
} }
@@ -320,7 +336,7 @@ div.center {
margin-right: 0 !important; margin-right: 0 !important;
} }
main.titlepage h2.chapterHead { main.main-content h2.chapterHead, main.main-content h2.likechapterHead {
margin-top: 0px; margin-top: 0px;
} }
@@ -368,3 +384,205 @@ h4 {
max-width: 100%; max-width: 100%;
margin-top: 1em; 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);
}
.main-content {
flex: 1;
}
.wrapper {
width: 100%;
display: flex;
flex-direction: column;
align-items: center;
}
.header {
background-color: var(--c-black-background);
width: 100%;
height: 340px;
display: flex;
align-content: center;
justify-content: center;
align-items: center;
margin-bottom: 40px;
}
.header img {
border-radius: 0px;
border: none;
width: 710px;
}
body {
display: block;
}
.book-content {
display: flex;
padding: 0px 40px;
max-width: 1200px;
}
.TOC.menu {
width: 330px;
}
.main-content {
width: 100%;
margin-bottom: 40px;
}
nav.TOC, nav.TOC a, nav.TOC a:visited {
background-color: transparent;
color: var(--c-black);
}
.menu-group {
display: flex;
flex-direction: column;
align-items: center;
}
.menu-inner {
border: 2px solid var(--c-black);
border-radius: var(--border-radius);
width: 100%;
}
.menu-entry {
padding: 1px;
border-radius: var(--border-radius);
}
.menu-arrow {
width: 14px;
border: none;
border-radius: 0px;
}
nav.TOC span:hover, nav.TOC span:hover *, nav.TOC span.chapterToc.selected, nav.TOC span.chapterToc.selected a {
background-color: transparent;
}
.menu-entry:hover {
background-color: #c8c8c8;
}
p.flowchart-image-wrapper {
background: white;
padding: 20px;
}
.menu-items .menu-group:last-of-type .menu-arrow {
display: none;
}
blockquote {
margin-left: 0px;
margin-right: 0px;
}
.crosslinks-bottom {
margin-top: 1em;
}
.crosslinks-bottom a {
display: inline-block;
border-radius: var(--border-radius);
border: 2px solid var(--c-black);
color: var(--c-black);
padding: 4px;
font-weight: bold;
text-decoration: none;
}
.crosslinks-bottom a.prev {
margin-right: 7px;
}
.crosslinks-bottom a:hover {
color: #444;
}
.menu-group.selected .menu-inner {
background-color: #c8c8c8;
}
.TOC.menu {
margin-bottom: 40px;
}
.mobile-banner {
display: none;
}
@media (max-width: 768px) {
.header {
display: none;
}
.book-content {
padding: 0px;
display: flex;
width: 100%;
flex-direction: column;
}
.main-content {
width: 100%;
margin-left: 0px;
box-sizing: border-box;
padding: 0px 14px;
margin-top: 20px;
max-width: 100%;
}
.TOC.menu {
width: 100%;
max-width: 100%;
background: var(--c-black-background);
box-sizing: border-box;
}
nav.TOC, nav.TOC a, nav.TOC a:visited {
color: #fff;
}
.menu-arrow {
display: none;
}
.menu-inner {
border: none;
border-radius: 0px;
}
.menu-group.selected .menu-inner {
background: var(--c-black-background);
}
p.flowchart-image-wrapper {
padding: 5px;
}
.menu-entry:hover {
background-color: transparent;
}
.TOC.menu {
margin-bottom: 0px;
}
.mobile-banner {
display: block;
background-color: var(--c-black-background);
padding: 5px;
}
}

View File

@@ -1,9 +1,10 @@
\begin{tabular}{@{}llrrr@{}} \begin{tabular}{@{}llrrr@{}}
\toprule \toprule
\textbf{USA} & \textbf{UK} & {\textbf{Germany}} & {\textbf{France}} & {\textbf{Italy}} \\ \midrule \textbf{USA} & \textbf{UK} & {\textbf{Germany}} & {\textbf{France}} & {\textbf{Italy}} \\ \midrule
Cake & Soft flour & T405 & T45 & 00 \\ Cake & Soft flour & T405 & T45 & 00 \\
All purpose & Plain flour & T550 & T55 & 0 \\ All purpose & Plain flour & T550 & T55 & 0 \\
& & T812 & T80 & 1 \\ Bread flour & Bread flour & T405 or T550 & T45 or T55 & 00 or 0 \\
& & T1050 & T110 & 2 \\ & & T812 & T80 & 1 \\
Whole & Whole & Vollkorn & T150 & Integrale \\ \bottomrule & & T1050 & T110 & 2 \\
Whole & Whole & Vollkorn & T150 & Integrale \\ \bottomrule
\end{tabular} \end{tabular}

View File

@@ -3,17 +3,17 @@
\toprule \toprule
\textbf{Method} & \textbf{Advantages} & \textbf{Disadvantages} \\ \textbf{Method} & \textbf{Advantages} & \textbf{Disadvantages} \\
\midrule \midrule
Room temperature & The easiest option. Best for bread that is eaten within a day. Room temperature & The easiest option. Best for bread that is eaten within a day.
Crust typically stays crisp when humidity not too high. Crust typically stays crisp when humidity not too high.
& Bread dries out very quickly.\\ & Bread dries out very quickly.\\
Room temperature in container & Good for up to a week. Catches mold more quickly. Room temperature in airtight container & Good for up to a week.
& Bread needs to be toasted for crust to become crisp again.\\ & Bread needs to be toasted for crust to become crisp again. Catches mold more quickly\\
Fridge & Bread stays good for weeks. Can dry out a little bit when not using air-tight container. Fridge & Bread stays good for weeks. Can dry out a little bit when not using air-tight container.
& Bread needs to be toasted. Requires fridge and energy.\\ & Bread needs to be toasted. Requires fridge and energy.\\
Freezer & Bread stays good for years. Freezer & Bread stays good for years.
& Requires thawing and then toasting. Requires freezer and energy.\\ & Requires thawing and then toasting. Requires freezer and energy.\\
\bottomrule \bottomrule
\end{tabular} \end{tabular}

View File

@@ -111,7 +111,7 @@ I~would use a lot of rice flour in my banneton to dry out the surface of the dou
This way the dough wouldn't stick, despite being overfermented. However as it This way the dough wouldn't stick, despite being overfermented. However as it
turns out the stickiness issue has been my lack of understanding the fermentation turns out the stickiness issue has been my lack of understanding the fermentation
process. Now I~never use rice flour, except when trying to apply decorative scorings. process. Now I~never use rice flour, except when trying to apply decorative scorings.
Properly managing fermentation results in a dough that is not sticky. Managing properly fermentation results in a dough that is not sticky.
If you are noticing, during a stretch and fold or during shaping, that your dough If you are noticing, during a stretch and fold or during shaping, that your dough
is suddenly overly sticky, then the best option is to use a loaf pan. Simply take is suddenly overly sticky, then the best option is to use a loaf pan. Simply take
@@ -139,7 +139,7 @@ dough with less bacterial activity. A better yeast activity also will result
in less acidity in your final bread. If you are a chaser of a very strong tangy in less acidity in your final bread. If you are a chaser of a very strong tangy
flavor profile, then a stronger flour with more gluten will help. flavor profile, then a stronger flour with more gluten will help.
When retarding sourdough (cold proofing in the refrigerator), temperature plays a When retarding sourdough (cold-proofing in the refrigerator), temperature plays a
pivotal role in fermentation rates. As the dough chills in the refrigerator, pivotal role in fermentation rates. As the dough chills in the refrigerator,
fermentation decelerates. Starting the retarding process at a warmer fermentation decelerates. Starting the retarding process at a warmer
temperature means this deceleration takes longer. temperature means this deceleration takes longer.
@@ -318,8 +318,8 @@ can heat up the surface of your dough faster. I~tested this by putting an apple
a Dutch oven and measuring its surface temperature using a barbecue thermometer. a Dutch oven and measuring its surface temperature using a barbecue thermometer.
I~then changed the steaming methods to plot how quickly the temperature I~then changed the steaming methods to plot how quickly the temperature
close to the surface changes. I~tested an ice cube inside of a preheated close to the surface changes. I~tested an ice cube inside of a preheated
Dutch oven, a preheated Dutch oven, a preheated Dutch oven with spritzes Dutch oven, a plain preheated Dutch oven, a preheated Dutch oven with spritzes
of water on the apple's surface, a non-preheated Dutch oven where I~would only preheat of water on the apple's surface and a non-preheated Dutch oven where I~would only preheat
the bottom part. The experiment then showed that the ice-cube method would heat up the bottom part. The experiment then showed that the ice-cube method would heat up
the surface of the apple a lot quicker. When replicating this with a bread dough, the surface of the apple a lot quicker. When replicating this with a bread dough,
I~would achieve less oven spring. I~would achieve less oven spring.

View File

@@ -117,7 +117,7 @@ acid-producing bacteria. So it is recommended to keep
a backup of your original starter. a backup of your original starter.
A downside to the liquid starter is the overall A downside to the liquid starter is the overall
enhanced bacterial activity. This means the baked bread enhanced bacterial activity compared to yeast activity. This means the baked bread
will have more acidity (but milder). The dough will degrade will have more acidity (but milder). The dough will degrade
faster during fermentation. For this reason, you faster during fermentation. For this reason, you
will need to use strong high-gluten flour when using will need to use strong high-gluten flour when using
@@ -345,6 +345,17 @@ made with such a starter. The flavor when taking a bite
is incredible. It nicely plays with soups as well. Just take is incredible. It nicely plays with soups as well. Just take
a bit of this bread and dip it in your soup. a bit of this bread and dip it in your soup.
\subsection{Why does my starter not float after using the float test?}
The float test may not reliably determine your starter's readiness for dough
inoculation. While it's effective for wheat-based doughs, where ample gas gets
trapped in the gluten matrix, it's less reliable for non-wheat doughs. In non-
wheat doughs, the gas generated during fermentation tends to escape, causing
the starter to likely sink.
For more accurate assessments of your starter's readiness, watch for bubbles
at the container's edge and consider its aroma. A mature starter should emit a
mildly sour scent without being overly pungent.
\section{Dough} \section{Dough}
\subsection{Should I~autolyse my dough?} \subsection{Should I~autolyse my dough?}
@@ -450,8 +461,8 @@ Please also note that you can only make bread with
great oven spring when making wheat based doughs. When great oven spring when making wheat based doughs. When
starting with this hobby I~always wondered why my rye starting with this hobby I~always wondered why my rye
breads would turn out so flat. Yes, rye has gluten, but breads would turn out so flat. Yes, rye has gluten, but
small particles called \emph{hemicelluloses} (arabinoxylan and beta-glucan)~\cite{rye-defects}. small particles called \emph{pentosans} (arabinoxylan and beta-glucan)~\cite{rye-defects}.
prevent the dough from developing a gluten network it can They prevent the dough from developing a gluten network it can
with wheat. Your efforts will be in vain, and your dough will with wheat. Your efforts will be in vain, and your dough will
stay flat. Only spelt- and wheat-based doughs have the capability stay flat. Only spelt- and wheat-based doughs have the capability
of retaining the \ch{CO2} created by the fermentation. of retaining the \ch{CO2} created by the fermentation.

View File

@@ -19,8 +19,8 @@ and technique than other types of bread. You have to perfectly
balance the fermentation process. You cannot ferment for too balance the fermentation process. You cannot ferment for too
short and also not for too long. The techniques you need to short and also not for too long. The techniques you need to
learn also require a bit more skill. It took me several attempts learn also require a bit more skill. It took me several attempts
to get this right. One of the challenges I~faced was that to get this right. I faced several challenges: I~had the wrong flour.
I~had the wrong flour. I~didn't properly know how to use my oven. I~didn't properly know how to use my oven.
When should I~stop the fermentation? There is a lot of information When should I~stop the fermentation? There is a lot of information
out there. I~dug through most of it and have tried almost everything. out there. I~dug through most of it and have tried almost everything.
In many cases the information was wrong; in other cases, I~found another In many cases the information was wrong; in other cases, I~found another
@@ -210,7 +210,7 @@ Find below an example recipe for 1 loaf including baker's math calculation:
\item \qty{400}{\gram} of bread flour \item \qty{400}{\gram} of bread flour
\item \qty{100}{\gram} of whole-wheat flour \item \qty{100}{\gram} of whole-wheat flour
% Manual unit so we can use emphasis % Manual unit so we can use emphasis
\item \emph{500~g of flour in total} \item \emph{Total: 500~g of flour}
\item \qtyrange{300}{450}{\gram} of room temperature water (\qty{60}{\percent} up to \qty{90}{\percent}). More on \item \qtyrange{300}{450}{\gram} of room temperature water (\qty{60}{\percent} up to \qty{90}{\percent}). More on
this topic in the next chapter. this topic in the next chapter.
\item \qty{50}{\gram} of stiff sourdough starter (\qty{10}{\percent}) \item \qty{50}{\gram} of stiff sourdough starter (\qty{10}{\percent})
@@ -222,10 +222,10 @@ how much flour you have. Let's say you have \qty{2000}{\gram} of flour available
recipe would look like this: recipe would look like this:
\begin{itemize} \begin{itemize}
\item \qty{1800}{\gram} of bread flour \item \qty{1600}{\gram} of bread flour
\item \qty{200}{\gram} of whole-wheat flour \item \qty{400}{\gram} of whole-wheat flour
% Manual unit so we can use emphasis again % Manual unit so we can use emphasis again
\item \emph{2000 g of flour}, equaling 4 loaves \item \emph{Total: 2000~g of flour}, equaling 4 loaves
\item \qty{1200}{\gram} up to \qty{1800}{\gram} of room temperature water (60 to \qty{90}{\percent}) \item \qty{1200}{\gram} up to \qty{1800}{\gram} of room temperature water (60 to \qty{90}{\percent})
\item \qty{200}{\gram} of stiff sourdough starter (\qty{10}{\percent}) \item \qty{200}{\gram} of stiff sourdough starter (\qty{10}{\percent})
\item \qty{40}{\gram} of salt (\qty{2}{\percent}) \item \qty{40}{\gram} of salt (\qty{2}{\percent})
@@ -247,7 +247,7 @@ When a seed gets into contact initially, the outer layers soak up the water.
That's why when using whole-wheat (still containing these layers) you have to That's why when using whole-wheat (still containing these layers) you have to
use a little bit more water. use a little bit more water.
By forming gluten strands, water is absorbed into your dough. The higher the By forming gluten strands, water is absorbed into your dough's gluten matrix. The higher the
protein value, the more water can be used. protein value, the more water can be used.
Some bakers like to use highly hydrated doughs to create fluffier Some bakers like to use highly hydrated doughs to create fluffier
@@ -334,7 +334,7 @@ and not fluffy crumb. That is because only very little gluten is broken down whe
finishing the fermentation period in 1~hour. If you were to slow things down, finishing the fermentation period in 1~hour. If you were to slow things down,
the dough would look completely different. the dough would look completely different.
Try this again and use much less yeast. This is the Try this again and use much less yeast. This is the
secret of Neapolitan Pizza. Only a tiny bit of yeast is used to make the secret of Neapolitan pizza. Only a tiny bit of yeast is used to make the
dough. My default pizza recipe calls for around \qty{150}{\mg} of dry dough. My default pizza recipe calls for around \qty{150}{\mg} of dry
yeast per \unit{\kg} of flour. Give it a shot yourself the next time you yeast per \unit{\kg} of flour. Give it a shot yourself the next time you
make a yeast-based dough. Try to push the fermentation to at least 8~hours. make a yeast-based dough. Try to push the fermentation to at least 8~hours.
@@ -409,7 +409,7 @@ slower the process.
While food is available, the microorganisms will reproduce and increase in While food is available, the microorganisms will reproduce and increase in
quantity. The process is a self-limiting: it stops when there is no quantity. The process is a self-limiting: it stops when there is no
more food available. This can be compared to wine making where more food available. This can be compared to wine making where
the yeast ultimately dies as ethanol levels increase. The ethanol creates an the yeast ultimately sporulates and dies as ethanol levels increase. The ethanol creates an
environment that makes it impossible for other environment that makes it impossible for other
microorganisms to join the feast. The same thing happens with the acidity microorganisms to join the feast. The same thing happens with the acidity
created by the bacteria. The high acidity slows the fermentation process and created by the bacteria. The high acidity slows the fermentation process and
@@ -445,12 +445,13 @@ I~use around \qty{5}{\percent} of sourdough starter in summer times
kitchen). In winter times I~opt for around \qty{10}{\percent} up to kitchen). In winter times I~opt for around \qty{10}{\percent} up to
\qty{20}{\percent} sourdough starter (kitchen temperature around \qty{20}{\percent} sourdough starter (kitchen temperature around
\qty{20}{\degreeCelsius} (\qty{68}{\degF})). This \qty{20}{\degreeCelsius} (\qty{68}{\degF})). This
allows me to use a sourdough starter that's not in perfect condition. Your allows me to use a sourdough starter that's not in perfect condition. As
explained earlier, your
bread dough is essentially a gigantic starter. The low inoculation rate allows bread dough is essentially a gigantic starter. The low inoculation rate allows
the starter to regrow inside your main dough into a desirable balance. the starter to regrow inside your main dough into a desirable balance.
Furthermore, the enzymes have enough time to break down the flour. This also Furthermore, the enzymes have enough time to break down the flour. This also
allows me to skip the so-called autolysis step completely (more in the next chapter). allows me to skip the so-called autolysis step completely (more in the next chapter).
Making dough becomes very simple. This greatly simplifies the whole process.
\section{Autolysis}% \section{Autolysis}%
\label{section:autolysis} \label{section:autolysis}
@@ -477,7 +478,7 @@ dough will start to taste sweeter and sweeter. The protease and amylase enzymes
are doing their job. The same process is used when making oat milk. By letting are doing their job. The same process is used when making oat milk. By letting
the mixture sit for some time, enzymes work on the oats. The taste is perceived as the mixture sit for some time, enzymes work on the oats. The taste is perceived as
sweeter and more appreciated. This process is further accelerated the more sweeter and more appreciated. This process is further accelerated the more
whole-wheat your flour is. The hull contains more enzymes. The gluten network whole-grain your flour is. The hull contains more enzymes. The gluten network
will ultimately tear, and your dough flattens out. For wheat sourdough, this is will ultimately tear, and your dough flattens out. For wheat sourdough, this is
your worst enemy. When this happens, your dough will become leaky and release your worst enemy. When this happens, your dough will become leaky and release
all that precious gas created during the fermentation. You need to find the all that precious gas created during the fermentation. You need to find the
@@ -652,12 +653,16 @@ the sign of a not well enough developed gluten network.
\label{fig:dough-touch-points} \label{fig:dough-touch-points}
\end{figure} \end{figure}
Kneading more is great in almost all cases. You'll have a stronger Kneading more is generally beneficial in almost all cases, as it results in a
gluten network. Unless you are making soft milk breads, you stronger gluten network. However, when making soft milk breads, you might prefer
might want to have a more extensible dough, to begin with. For every a more extensible dough from the start. In this scenario, excessive kneading
other type of wheat-based dough, kneading is helpful. When you use could lead to a chewier final bread, which is not desirable if you aim for a
a stand mixer, you can run into the issue of kneading too much. This fluffier texture. Achieving this fluffier dough can be accomplished by kneading
is almost impossible though. Even after kneading for 30~minutes on medium less. While this is an exception, properly kneading your wheat-based doughs
is generally advised.
When you use a stand mixer, you can run into the issue of kneading too much. This
is almost impossible in practice though. Even after kneading for 30~minutes on medium
speed, my doughs hardly ever were over-kneaded. The moment you knead speed, my doughs hardly ever were over-kneaded. The moment you knead
too much, the color of the dough can begin to change. You mostly too much, the color of the dough can begin to change. You mostly
notice this, though, during baking. The resulting loaf looks very notice this, though, during baking. The resulting loaf looks very
@@ -1071,7 +1076,8 @@ so, you will be gluing together the two sticky bottom sides. The top smooth side
not be sticky in your hands, while the bottom rough surface should tend not be sticky in your hands, while the bottom rough surface should tend
to stick to your hands. Rotate the container to stick to your hands. Rotate the container
and repeat the same thing from the other side. Rotate the container 90° and repeat the same thing from the other side. Rotate the container 90°
clockwise and then repeat the process once again. Rotate the container another 180° clockwise and then repeat the process once again. Rotate the container another 180° in
the same direction
and repeat the fold one last time. By doing so you have applied 4 folds in total. Your and repeat the fold one last time. By doing so you have applied 4 folds in total. Your
dough should now stay in place and resist flowing outwards\footnote{Please dough should now stay in place and resist flowing outwards\footnote{Please
also refer to~\cite{stretch+and+fold+technique} for a video showing you how to also refer to~\cite{stretch+and+fold+technique} for a video showing you how to
@@ -1150,7 +1156,7 @@ Now that you have cut your dough, the resulting chunks are not in an equal shape
This is problematic for the next stage when you are shaping your dough. This is problematic for the next stage when you are shaping your dough.
The resulting loaves wouldn't look nice and even. You would probably The resulting loaves wouldn't look nice and even. You would probably
end up with areas that tear the moment you are shaping your dough. end up with areas that tear the moment you are shaping your dough.
You wouldn't start the whole process on a good foundation. For that You wouldn't start the whole proofing process on a good foundation. For that
reason, you need to pre-shape your dough. reason, you need to pre-shape your dough.
Pre-shaping is done for several reasons: Pre-shaping is done for several reasons:
@@ -1446,7 +1452,7 @@ There are two proofing techniques. One strategy is to proof the dough
at room temperature whereas the other proofs the dough in the fridge. at room temperature whereas the other proofs the dough in the fridge.
Fridge-proofing is also commonly known as retarding. Fridge-proofing is also commonly known as retarding.
Some bakers claim that cold proofing improves the final flavor of the bread. Some bakers claim that cold-proofing improves the final flavor of the bread.
In all the loaves that I~retarded I~could not tell a difference In all the loaves that I~retarded I~could not tell a difference
in terms of flavor for cold-proofed doughs. The microorganisms work in terms of flavor for cold-proofed doughs. The microorganisms work
at a slower rate at colder temperatures. But I~doubt that they alter at a slower rate at colder temperatures. But I~doubt that they alter
@@ -1463,7 +1469,7 @@ of retarding and flavor development.
\end{center} \end{center}
\end{flowchart} \end{flowchart}
To me, the sole purpose of cold proofing is its ability to allow you To me, the sole purpose of cold-proofing is its ability to allow you
to better manage the timing of the whole process. Assuming you finished shaping to better manage the timing of the whole process. Assuming you finished shaping
your dough at 10 pm, chances are you wouldn't want to wait for another your dough at 10 pm, chances are you wouldn't want to wait for another
2~hours to proof the dough and then another 1 hour to bake it. In this case, 2~hours to proof the dough and then another 1 hour to bake it. In this case,
@@ -1481,13 +1487,13 @@ dough is big. It can be as little as 6~hours later up to 24~hours later.
Assuming you made an overnight dough and your dough is ready in the morning, Assuming you made an overnight dough and your dough is ready in the morning,
the situation might be different. You potentially want to bake the dough directly the situation might be different. You potentially want to bake the dough directly
for breakfast, or at lunchtime. In this case, you wouldn't want to proof the dough for for breakfast, or at lunchtime. In this case, you wouldn't want to proof the dough for
another 6~hours in the fridge. Room temperature proofing is your technique another 6~hours in the fridge. Room temperature-proofing is your technique
of choice. of choice.
To summarize, choose the technique that works for you depending on your To summarize, choose the technique that works for you depending on your
schedule and availability. schedule and availability.
\subsection{Room temperature proofing} \subsection{Room temperature-proofing}
The easiest and most reliable way to proof your dough is to proof the dough at The easiest and most reliable way to proof your dough is to proof the dough at
room temperature. It is my method of choice if my schedule allows it. This method room temperature. It is my method of choice if my schedule allows it. This method
@@ -1527,7 +1533,7 @@ over-proofed dough when the dough suddenly becomes very sticky. At the same
time, the dough is likely to collapse during baking and will not spring back. time, the dough is likely to collapse during baking and will not spring back.
Generally, it is better to end proofing too early rather than too late. Generally, it is better to end proofing too early rather than too late.
\subsection{Cold proofing (retarding)} \subsection{Cold-proofing (retarding)}
The second proofing option is to place your dough inside the fridge for The second proofing option is to place your dough inside the fridge for
proofing. This option is great if you do not want to bake the dough proofing. This option is great if you do not want to bake the dough
@@ -1566,7 +1572,7 @@ meter. By checking the amount of piled-up acidity you can ensure
each of your doughs has the right amount of acidity. Opt for an iterative each of your doughs has the right amount of acidity. Opt for an iterative
approach and check the pH for multiple proofing times. Find the pH approach and check the pH for multiple proofing times. Find the pH
the value that creates the best bread for you. Once you have identified the value that creates the best bread for you. Once you have identified
your perfect pH level you can resort to that value on all following your perfect pH value you can resort to that number on all following
doughs. See Table~\ref{table:sample-ph-values} for some sample pH values doughs. See Table~\ref{table:sample-ph-values} for some sample pH values
to follow. to follow.
@@ -1667,11 +1673,11 @@ until you are happy with your technique. After proofing, you only
have a single chance to practice scoring. It's either hit or miss. have a single chance to practice scoring. It's either hit or miss.
An additional trick that can help you to combine the benefits An additional trick that can help you to combine the benefits
of room temperature proofing and easy cold proofing scoring of room temperature-proofing and easy cold-proofing scoring
is to place your dough in the freezer for 30~minutes before baking. 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 Once you notice your dough is almost done proofing, move it to the
freezer. The freezer will dry out the surface even further and make freezer. The freezer will dry out the doughs's surface even further
scoring easier. while also lowering its viscosity, making scoring easier.
Another interesting trick is to bake your dough for 30 seconds without steam. Another interesting trick is to bake your dough for 30 seconds without steam.
The hot air will dry out the dough's surface even further and simplify The hot air will dry out the dough's surface even further and simplify

View File

@@ -1,7 +1,7 @@
.DEFAULT_GOAL := build_pdf .DEFAULT_GOAL := build_pdf
DOCKER_IMAGE := ghcr.io/hendricius/the-sourdough-framework DOCKER_IMAGE := ghcr.io/hendricius/the-sourdough-framework
DOCKER_CMD := docker run -it -v $(PWD):/opt/repo --platform linux/x86_64 $(DOCKER_IMAGE) /bin/bash -c DOCKER_CMD := docker run --rm -it -v $(PWD):/opt/repo --platform linux/x86_64 $(DOCKER_IMAGE) /bin/bash -c
.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

View File

@@ -5,6 +5,8 @@ GEM
method_source (1.0.0) method_source (1.0.0)
nokogiri (1.15.3-arm64-darwin) nokogiri (1.15.3-arm64-darwin)
racc (~> 1.4) racc (~> 1.4)
nokogiri (1.15.3-x86_64-darwin)
racc (~> 1.4)
nokogiri (1.15.3-x86_64-linux) nokogiri (1.15.3-x86_64-linux)
racc (~> 1.4) racc (~> 1.4)
pry (0.14.2) pry (0.14.2)
@@ -14,6 +16,7 @@ GEM
PLATFORMS PLATFORMS
arm64-darwin-22 arm64-darwin-22
x86_64-darwin-22
x86_64-linux x86_64-linux
DEPENDENCIES DEPENDENCIES

BIN
website/assets/arrow.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 298 B

BIN
website/assets/banner.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 170 KiB

Binary file not shown.

Before

Width:  |  Height:  |  Size: 500 KiB

Binary file not shown.

After

Width:  |  Height:  |  Size: 319 KiB

View File

@@ -52,18 +52,27 @@ class ModifyBuild
text = fix_titles(text) text = fix_titles(text)
text = fix_menu(text) text = fix_menu(text)
text = fix_cover_page(text) if is_cover_page?(filename) text = fix_cover_page(text) if is_cover_page?(filename)
text = add_header_banner(text)
text = add_home_link_to_menu(text) text = add_home_link_to_menu(text)
text = fix_anchor_hyperlinks_menu(text) text = fix_anchor_hyperlinks_menu(text)
text = add_favicon(text) text = add_favicon(text)
text = add_meta_tags(text, filename) text = add_meta_tags(text, filename)
text = remove_section_table_of_contents(text) text = remove_section_table_of_contents(text)
text = mark_menu_as_selected_if_on_page(text, extract_file_from_path(filename))
text = add_canonical_for_duplicates(text, extract_file_from_path(filename)) text = add_canonical_for_duplicates(text, extract_file_from_path(filename))
text = include_javascript(text) text = include_javascript(text)
text = add_text_to_coverpage(text, extract_file_from_path(filename)) text = add_text_to_coverpage(text, extract_file_from_path(filename))
text = fix_js_dependency_link(text) text = fix_js_dependency_link(text)
text = fix_list_of_tables_figures_duplicates(text) text = fix_list_of_tables_figures_duplicates(text)
text = add_anchors_to_headers(text) text = add_anchors_to_headers(text)
text = create_menu_groups(text)
text = fix_top_links(text)
text = fix_flowchart_background(text)
text = remove_empty_menu_links(text)
text = fix_bottom_cross_links(text)
text = insert_mobile_header_graphic(text)
text = fix_https_links(text)
text = add_anchors_to_glossary_items(text) if is_glossary_page?(filename)
text = mark_menu_as_selected_if_on_page(text, extract_file_from_path(filename))
text = fix_menus_list_figures_tables(text) if is_list_figures_tables?(filename) text = fix_menus_list_figures_tables(text) if is_list_figures_tables?(filename)
text = fix_list_of_figures_tables_display(text) if is_list_figures_tables?(filename) text = fix_list_of_figures_tables_display(text) if is_list_figures_tables?(filename)
File.open(filename, "w:UTF-8") {|file| file.puts text } File.open(filename, "w:UTF-8") {|file| file.puts text }
@@ -75,6 +84,10 @@ class ModifyBuild
end end
end end
def is_glossary_page?(filename)
filename.include?("Glossary.html")
end
def is_list_figures_tables?(filename) def is_list_figures_tables?(filename)
["listfigurename.html", "listtablename.html", "listoflocname.html", "bibname.html"].any? do |name| ["listfigurename.html", "listtablename.html", "listoflocname.html", "bibname.html"].any? do |name|
filename.include?(name) filename.include?(name)
@@ -146,6 +159,45 @@ class ModifyBuild
doc.to_html doc.to_html
end end
def create_menu_groups(text)
doc = build_doc(text)
groups = build_groups(doc.css(".menu-items > span"))
menu_el = doc.css(".menu-items")[0]
html = ""
groups.each do |group|
out = ""
group.each do |g|
if g.to_html.length > 0
out += %Q{<div class="menu-entry">#{g.to_html}</div>}
end
end
html += %Q{<div class="menu-group">
<div class="menu-inner">
#{out}
</div>
<img class="menu-arrow" src="arrow.png" />
</div>}
end
menu_el.inner_html = html
doc.to_html
end
def build_groups(menu_items)
final_groups = []
tmp_groups = []
menu_items.each_with_index do |el, index|
# Get next item and check if it is a lower entry level in the menu.
next_item = menu_items[index + 1]
if next_item && next_item["class"].include?("chapterToc") || next_item.nil?
final_groups.push(tmp_groups.push(el))
tmp_groups = []
else
tmp_groups.push(el)
end
end
final_groups
end
# By default the titles look boring. This changes the titles of all the # By default the titles look boring. This changes the titles of all the
# pages and adds the book name as appendix # pages and adds the book name as appendix
def fix_titles(text) def fix_titles(text)
@@ -231,7 +283,7 @@ class ModifyBuild
content = doc.css("body > .main-content")[0] content = doc.css("body > .main-content")[0]
menu = doc.css("body > nav")[0] menu = doc.css("body > nav")[0]
content = %Q{ content = %Q{
<main class="titlepage"> <main class="titlepage main-content">
<a href="Thehistoryofsourdough.html"> <a href="Thehistoryofsourdough.html">
<img src="cover-page.jpg" /> <img src="cover-page.jpg" />
<div class="version"><p>#{version}</p></div> <div class="version"><p>#{version}</p></div>
@@ -251,7 +303,7 @@ class ModifyBuild
menu = doc.css(".menu-items")[0] menu = doc.css(".menu-items")[0]
return text if menu.nil? return text if menu.nil?
home_html = %Q{<span class="chapterToc home-link"><a href="/">Home</a></span>} home_html = %Q{<span class="chapterToc home-link"><a href="/">🍞 The Sourdough Framework</a></span>}
# Normally the flowcharts link should be automatically added, but there # Normally the flowcharts link should be automatically added, but there
# seems to be a problem in the generation. See: # seems to be a problem in the generation. See:
# https://github.com/hendricius/the-sourdough-framework/pull/188 for more # https://github.com/hendricius/the-sourdough-framework/pull/188 for more
@@ -262,12 +314,12 @@ class ModifyBuild
<span class="link_text">List of Flowcharts</span> <span class="link_text">List of Flowcharts</span>
</a> </a>
</span> </span>
<span class="chapterToc"> <span class="chapterToc listtables-menu">
<a href="listtablename.html"> <a href="listtablename.html">
<span class="link_text">List of Tables</span> <span class="link_text">List of Tables</span>
</a> </a>
</span> </span>
<span class="chapterToc"> <span class="chapterToc listfigures-menu">
<a href="listfigurename.html"> <a href="listfigurename.html">
<span class="link_text">List of Figures</span> <span class="link_text">List of Figures</span>
</a> </a>
@@ -278,9 +330,15 @@ class ModifyBuild
</a> </a>
</span> </span>
<span class="chapterToc"> <span class="chapterToc">
<a href="https://breadco.de/kofi"> <a href="https://www.the-bread-code.io/book.pdf">
<span class="chapter_number"></span> <span class="chapter_number"></span>
<span class="link_text">Donate</span> <span class="link_text">Book .PDF</span>
</a>
</span>
<span class="chapterToc">
<a href="https://www.the-bread-code.io/book.epub">
<span class="chapter_number">⬇️</span>
<span class="link_text">Book .EPUB</span>
</a> </a>
</span> </span>
<span class="chapterToc"> <span class="chapterToc">
@@ -289,11 +347,55 @@ class ModifyBuild
<span class="link_text">Hardcover Book</span> <span class="link_text">Hardcover Book</span>
</a> </a>
</span> </span>
<span class="chapterToc">
<a href="https://www.github.com/hendricius/the-sourdough-framework">
<span class="chapter_number">⚙️</span>
<span class="link_text">Source code</span>
</a>
</span>
<span class="chapterToc">
<a href="https://breadco.de/kofi">
<span class="chapter_number">⭐️</span>
<span class="link_text">Support me</span>
</a>
</span>
} }
menu.inner_html = "#{home_html} #{menu.inner_html} #{appendix_html}" menu.inner_html = "#{home_html} #{menu.inner_html} #{appendix_html}"
doc.to_html doc.to_html
end end
# Adds a header banner to each page
def add_header_banner(text)
doc = build_doc(text)
body = doc.css("body")[0]
footnotes = doc.css(".footnotes")[0]
main = doc.css(".main-content")[0]
menu = doc.css(".menu")[0]
if main.nil? || menu.nil?
#raise ArgumentError.new("Don't know how to handle")
return doc.to_html
end
body.inner_html = %Q{
<div class='wrapper'>
#{build_header_html}
<div class='book-content'>
#{menu.to_html}
<main class='main-content'>
#{main.inner_html}
#{footnotes ? footnotes.to_html : ''}
</main>
</div>
</div>
}
return doc.to_html
end
def build_header_html
%Q{
<div class="header"><img src="banner.png"></div>
}
end
# Some of the menu links are added in the wrong order. Remove them since we # Some of the menu links are added in the wrong order. Remove them since we
# later on add them in the structure that we want. # later on add them in the structure that we want.
def remove_duplicate_entries_menu(text) def remove_duplicate_entries_menu(text)
@@ -411,13 +513,14 @@ class ModifyBuild
"Sourdoughstartertypes.html" => "og_image_sourdough_starter_types.png", "Sourdoughstartertypes.html" => "og_image_sourdough_starter_types.png",
"Storingbread.html" => "og_image_storing_bread.png", "Storingbread.html" => "og_image_storing_bread.png",
"Thehistoryofsourdough.html" => "og_image_the_history_of_sourdough.png", "Thehistoryofsourdough.html" => "og_image_the_history_of_sourdough.png",
"Wheatsourdough.html" => "og_image_troubleshooting.png", "Wheatsourdough.html" => "og_image_wheat_sourdough.png",
"Troubleshooting.html" => "og_image_troubleshooting.png",
"Mixins.html" => "og_image_mixins.png",
} }
end end
def mark_menu_as_selected_if_on_page(text, filename) def mark_menu_as_selected_if_on_page(text, filename)
doc = build_doc(text) doc = build_doc(text)
return doc.to_html
selected = doc.css(".menu-items .chapterToc > a").find do |el| selected = doc.css(".menu-items .chapterToc > a").find do |el|
el["href"] == "" el["href"] == ""
@@ -432,7 +535,17 @@ class ModifyBuild
# Special case for the flowcharts page which is added by us to the menu. # Special case for the flowcharts page which is added by us to the menu.
# This needs to be done for future manually added pages too # This needs to be done for future manually added pages too
if "listoflocname.html" == filename if "listoflocname.html" == filename
doc.css(".menu-items .chapterToc.flowcharts-menu")[0].add_class("selected") doc.css(".menu-items .chapterToc.flowcharts-menu")[0].ancestors(".menu-group")[0].add_class("selected")
return doc.to_html
end
if "listtablename.html" == filename
doc.css(".menu-items .chapterToc.listtables-menu")[0].ancestors(".menu-group")[0].add_class("selected")
return doc.to_html
end
if "listfigurename.html" == filename
doc.css(".menu-items .chapterToc.listfigures-menu")[0].ancestors(".menu-group")[0].add_class("selected")
return doc.to_html return doc.to_html
end end
@@ -441,7 +554,7 @@ class ModifyBuild
# Fix that when the menu is selected the href is empty. This way users can # Fix that when the menu is selected the href is empty. This way users can
# click the menu and the page will reload. # click the menu and the page will reload.
selected["href"] = filename selected["href"] = filename
selected.parent.add_class("selected") selected.ancestors(".menu-group")[0].add_class("selected")
doc.to_html doc.to_html
end end
@@ -472,14 +585,28 @@ class ModifyBuild
def add_text_to_coverpage(text, filename) def add_text_to_coverpage(text, filename)
return text unless is_cover_page?(filename) return text unless is_cover_page?(filename)
doc = build_doc(text) doc = build_doc(text)
content = doc.css(".titlepage")[0] content = doc.css(".main-content")[0]
raise ArgumentError.new(".titlepage not found in HTML") if content.nil?
content.add_class("main-content")
content.inner_html = "#{build_cover_page_content} #{content.inner_html}" content.inner_html = "#{build_cover_page_content} #{content.inner_html}"
doc.to_html doc.to_html
end end
def add_anchors_to_glossary_items(text)
doc = build_doc(text)
content = doc.css("dt.description")
content.each do |el|
term = el.css("span")[0]
item_name = term&.text
# No anchor for whatever reason
next unless item_name
anchor = item_name.downcase.strip.gsub(' ', '-').gsub(/[^\w-]/, '')
copy_link = %Q{<a href="#term-#{anchor}" class="permalink">🔗</a>}
el.set_attribute("id", "term-#{anchor}")
term.inner_html = "#{term.inner_html}#{copy_link}"
end
doc.to_html
end
def build_cover_page_content def build_cover_page_content
%Q{ %Q{
<h2 class="chapterHead home-title"> <h2 class="chapterHead home-title">
@@ -586,13 +713,10 @@ class ModifyBuild
# this. # this.
def fix_menus_list_figures_tables(text) def fix_menus_list_figures_tables(text)
doc = build_doc(text) doc = build_doc(text)
content = doc.css(".menu-items > .subsectionToc, .menu-items > .sectionToc") content = doc.css(".menu-group .subsectionToc, .menu-group .sectionToc")
content.each do |node| content.each do |node|
node.remove node.ancestors(".menu-entry")[0].remove
end end
doc.css(".menu-items > .lotToc").each(&:remove)
doc.css(".menu-items > .lofToc").each(&:remove)
doc.css(".menu-items > br").each(&:remove)
doc.to_html doc.to_html
end end
@@ -626,6 +750,69 @@ class ModifyBuild
end end
doc.to_html doc.to_html
end end
# For some reason some of the links are broken in the conversion process.
# They have https:/www and are missing a slash.
def fix_https_links(text)
text.gsub(/https:\/(?!\/)/, 'https://')
end
def fix_top_links(text)
doc = build_doc(text)
el = doc.css(".crosslinks-top")[0]
el.remove if el
doc.to_html
end
def remove_empty_menu_links(text)
doc = build_doc(text)
menus = doc.css(".menu-group")
menus.each do |m|
element = m.css("span.chapterToc")[0]
next unless element
if element.inner_html == "" || element.inner_html == " "
m.remove
end
end
doc.to_html
end
def insert_mobile_header_graphic(text)
doc = build_doc(text)
content = doc.css(".TOC.menu")[0]
content.after('<div class="mobile-banner"><img src="banner.png" /></div>')
doc.to_html
end
def fix_flowchart_background(text)
doc = build_doc(text)
images = doc.css("img")
images.each do |img|
src = img.attr("src")
is_flowchart = src.include?(".svg")
next unless is_flowchart
img.parent.add_class("flowchart-image-wrapper")
end
doc.to_html
end
def fix_bottom_cross_links(text)
doc = build_doc(text)
link_cont = doc.css(".crosslinks-bottom")[0]
return doc.to_html unless link_cont
links = doc.css(".crosslinks-bottom a")
prev_link = links.find {|l| l.inner_html == "prev" }
next_link = links.find {|l| l.inner_html == "next" }
prev_html = prev_link ? "<a class='prev' href='#{prev_link.attr('href')}'>Previous page</a>" : ''
next_html = next_link ? "<a class='next' href='#{next_link.attr('href')}'>Next page</a>" : ''
link_cont.inner_html = %Q{
#{prev_html}
#{next_html}
}
doc.to_html
end
end end
ModifyBuild.build ModifyBuild.build