93 Commits

Author SHA1 Message Date
Cedric
ac8f2038ee Merge branch 'chemical' into 225-ebook-situation
Some checks failed
Test book and website for given image / test-book-website (push) Has been cancelled
2025-01-21 21:05:56 +00:00
Cedric
75dc8432bb Merge remote-tracking branch 'hendiricus/main' into 225-ebook-situation 2025-01-21 21:04:46 +00:00
Cedric
8fd1df9d33 Fix the chemical equation.
All credits due to @michal-h21
https://github.com/michal-h21/tex4ebook/issues/137
2025-01-21 21:01:17 +00:00
Cedric
70d90781c8 Add latest dvisvgm drive for tex4ht
commit f1707125de2f058634523b0b3391a7c7be2d6784
Author: Michal Hoftich <michal.h21@gmail.com>
Date:   Tue Oct 29 18:12:59 2024 +0100

    use \Picture* instead of \Picture+

from:
https://github.com/michal-h21/dvisvgm4ht.git (fetch)
2025-01-21 21:01:05 +00:00
Ced
d02e99c46e Fix merge errors 2025-01-21 20:56:40 +00:00
Ced
9e267a2b4b Modernize target names in makefile
Names might have made sense at some point... but not so sure anymore

build_pdf            => pdf
build_booklet        => booklet
build_serif_pdf      => serif
build_sans_serif_pdf => sans_serif
build_ebook          => ebook
build_bw_ebook       => bw_ebook
build_low_res_ebook  => low_res_ebook

Old names kept not to break backward compatibility
2025-01-21 20:56:40 +00:00
Ced
a93a19d40d Reorder and add comments in makefile
Also added markers {{{ for folding
2025-01-21 20:56:40 +00:00
Ced
7f2f010571 Simplify the epub size check 2025-01-21 20:56:40 +00:00
Ced
75b015cda6 Remove debug flag on default website build 2025-01-21 20:56:40 +00:00
Hendrik Kleinwaechter
d0a5d6d37e Fix duplicate font loading 2025-01-21 20:56:40 +00:00
Cedric
2c86529981 Use sans-serif fonts with tex4ht
This has to be done in the config file..:

All fonts are suppressed in the --lua mode of TeX4ht, because we need to
prevent the loading of OpenType fonts, which causes a fatal error.:
https://tex.stackexchange.com/questions/705948/change-font-of-tikz-diagrams-in-html-produced-by-make4ht
2025-01-21 20:56:40 +00:00
Cedric
e73b0f331a Use a sans-serif math font for pgfplots
pgfplots uses math fonts for graphs ticks... and it looks weird when
building sans serif.

Not sure Fira is necessarily a great choice with open-sans but we have
very little math so that should do...
2025-01-21 20:56:40 +00:00
Ramin Kamal
3b8dfd8d81 Layout "Repeat 3 Times" loops in better way. 2025-01-21 20:56:40 +00:00
Ced
374fb7adfa Delete rogue draft file 2025-01-21 20:56:40 +00:00
Ced
d1e3390360 Fix more uppercase in flowcharts 2025-01-21 20:56:40 +00:00
Ced
bcdaf79479 Fix merge error in starter-process flowchart 2025-01-21 20:56:40 +00:00
Ced
8b581f3bc4 Use uppercase in flowcharts conditions 2025-01-21 20:56:40 +00:00
Ced
f6cf15156a Remove the MWE from git
was added for the debug branches but shall not go to main.
2025-01-21 20:56:40 +00:00
Ced
864127e571 Reworked flowchart as per discussions 2025-01-21 20:56:40 +00:00
Ramin Kamal
d884d588d6 Change plots to use "Latex" arrows for the axes 2025-01-21 20:56:40 +00:00
Ramin Kamal
42c9f31673 Change "Repeat 3 times" elements to use "Latex" arrows 2025-01-21 20:56:40 +00:00
Ramin Kamal
d5ae1315ce Rearrange starter process flowchart
- Added an extra state for clarity
- Made it more compact
- Added details section
2025-01-21 20:56:40 +00:00
Ramin Kamal
311bd55a7f Update all flowchart arrows to LaTeX arrows
- Change tikzstyle definition for "line" so that all flowchart arrows
  have the "Latex" styling.
2025-01-21 20:56:40 +00:00
Ramin Kamal
b57089b777 Chang arrowheads to be cleaner LaTex style.
Update flowcharts_tikz.tex to use arrows.meta instead of arrows, which
is not nice and deprecated.
2025-01-21 20:56:40 +00:00
Cedric
ad94b9fabc Enable abbreviations in standalone flowcharts
Spun the file out for inclusion basically... we want to be able to use
\eg in flowcharts even when built standalone.

Fixed dependencies in makefile as well
2025-01-21 20:56:40 +00:00
Cedric
194511d5cf Enable standalone chemical figures generation 2025-01-21 20:56:40 +00:00
Cedric
7f6fde9e42 Fix makefile standalone flowchart png generation 2025-01-21 20:56:40 +00:00
Ced
62880e7ff2 Fix merge errors
Some checks are pending
Release the book and website / build-and-push-image (push) Waiting to run
Release the book and website / release-book-website (push) Blocked by required conditions
Release the book and website / invalidate-book-website-cache (push) Blocked by required conditions
2025-01-21 17:51:57 +00:00
Ced
157cbb03b7 Modernize target names in makefile
Names might have made sense at some point... but not so sure anymore

build_pdf            => pdf
build_booklet        => booklet
build_serif_pdf      => serif
build_sans_serif_pdf => sans_serif
build_ebook          => ebook
build_bw_ebook       => bw_ebook
build_low_res_ebook  => low_res_ebook

Old names kept not to break backward compatibility
2025-01-21 17:51:57 +00:00
Ced
d37e2aa4bc Reorder and add comments in makefile
Also added markers {{{ for folding
2025-01-21 17:51:57 +00:00
Ced
9eaff81c49 Simplify the epub size check 2025-01-21 17:51:57 +00:00
Ced
6a2b334c2a Remove debug flag on default website build 2025-01-21 17:51:57 +00:00
cedounet
14e1e7ae2e Merge pull request #433 from hendricius/sans_serif_pics_website_2
Some checks failed
Release the book and website / build-and-push-image (push) Has been cancelled
Release the book and website / release-book-website (push) Has been cancelled
Release the book and website / invalidate-book-website-cache (push) Has been cancelled
Sans serif TikZ pics website
2025-01-20 14:55:17 +00:00
Hendrik Kleinwaechter
1b5d23a348 Fix duplicate font loading
Some checks failed
Test book and website for given image / test-book-website (push) Has been cancelled
2025-01-20 11:23:55 +01:00
cedounet
98a3360348 Merge pull request #432 from ramink/layout_fig_loops
Some checks failed
Release the book and website / build-and-push-image (push) Has been cancelled
Release the book and website / release-book-website (push) Has been cancelled
Release the book and website / invalidate-book-website-cache (push) Has been cancelled
Layout "Repeat 3 Times" loops in better way.
2025-01-18 18:47:16 +00:00
Cedric
1b90bf669b Use sans-serif fonts with tex4ht
This has to be done in the config file..:

All fonts are suppressed in the --lua mode of TeX4ht, because we need to
prevent the loading of OpenType fonts, which causes a fatal error.:
https://tex.stackexchange.com/questions/705948/change-font-of-tikz-diagrams-in-html-produced-by-make4ht
2025-01-18 18:24:22 +00:00
Cedric
427dcbfa37 Use a sans-serif math font for pgfplots
pgfplots uses math fonts for graphs ticks... and it looks weird when
building sans serif.

Not sure Fira is necessarily a great choice with open-sans but we have
very little math so that should do...
2025-01-18 18:23:17 +00:00
Ramin Kamal
eea69bb854 Layout "Repeat 3 Times" loops in better way. 2025-01-13 09:35:40 -08:00
Ced
c3904d2f14 Delete rogue draft file
Some checks failed
Release the book and website / build-and-push-image (push) Has been cancelled
Release the book and website / release-book-website (push) Has been cancelled
Release the book and website / invalidate-book-website-cache (push) Has been cancelled
2025-01-12 12:16:58 +00:00
cedounet
e77e7e5260 Merge pull request #430 from hendricius/new_starter_flowchart
New starter flowchart
2025-01-12 11:35:38 +00:00
cedounet
8a3b237f21 Merge pull request #429 from hendricius/typos
Some checks are pending
Release the book and website / build-and-push-image (push) Waiting to run
Release the book and website / release-book-website (push) Blocked by required conditions
Release the book and website / invalidate-book-website-cache (push) Blocked by required conditions
Typos and rewording corrections
2025-01-11 11:12:08 +00:00
Ced
9ad48ea1a3 Fix more uppercase in flowcharts
Some checks failed
Test book and website for given image / test-book-website (push) Has been cancelled
2025-01-11 11:09:16 +00:00
Ced
fe667b82e8 Fix merge error in starter-process flowchart 2025-01-11 11:01:49 +00:00
Ced
19029daf8a Merge remote-tracking branch 'upstream/new_starter_flowchart' into new_starter_flowchart 2025-01-11 10:51:01 +00:00
Ced
fa157c350e Use uppercase in flowcharts conditions 2025-01-11 10:31:19 +00:00
Ced
3069b5ff7c Remove the MWE from git
was added for the debug branches but shall not go to main.
2025-01-11 10:31:19 +00:00
Ced
3a1b247bc4 Reworked flowchart as per discussions 2025-01-11 10:30:07 +00:00
Ced
c99efe6f20 Rephrase pumpkin puree water release warning 2025-01-11 10:01:21 +00:00
Ced
0a0d227611 Remove words from spelling exceptions 2025-01-11 09:49:18 +00:00
Steve Nicholson
bbeef2d10f Fix typos
puré -> purée

Reference: https://www.merriam-webster.com/dictionary/puree

Typo
2025-01-11 09:48:16 +00:00
Ezekiel-DA
d6c862eea4 Correct reference to flowchart in dough strength section (#424)
Some checks failed
Release the book and website / build-and-push-image (push) Has been cancelled
Release the book and website / release-book-website (push) Has been cancelled
Release the book and website / invalidate-book-website-cache (push) Has been cancelled
2025-01-10 09:32:44 +01:00
Cedric
7014b1f5ea Simplify epub test file
Some checks failed
Test book and website for given image / test-book-website (push) Has been cancelled
2025-01-05 22:04:36 +00:00
Cedric
69c7b8bc5f Use updated makefile 2025-01-05 21:26:40 +00:00
Cedric
b2dfd2e71c Merge branch 'main' into 225-ebook-situation 2025-01-05 21:23:29 +00:00
Ced
fad09e9b26 Merge branch 'main' into 225-ebook-situation 2024-06-15 21:06:03 +01:00
Ced
574eca71e6 Add unredable table in full book
https://github.com/hendricius/the-sourdough-framework/issues/358 does
look ok here though...
2024-05-26 11:53:30 +01:00
Ced
7f86f2fc20 Merge remote-tracking branch 'upstream/225-ebook-situation' into 225-ebook-situation 2024-05-26 00:22:33 +01:00
Ced
266de7b7ee Merge remote-tracking branch 'upstream/main' into 225-ebook-situation 2024-05-25 21:55:33 +01:00
Ced
92c5e418b3 Merge branch 'main' into 225-ebook-situation 2024-04-27 17:33:41 +01:00
Cedric
66e8a57b51 Merge branch 'main' into 225-ebook-situation 2024-01-16 20:19:08 +00:00
Ced
cf1e2b03be Merge branch 'main' into 225-ebook-situation 2023-12-14 09:01:14 +00:00
Cedric
8ae707a1c6 Merge branch 'main' into 225-ebook-situation 2023-12-10 18:53:49 +00:00
Cedric
9faf2cfc63 Merge branch 'main' into 225-ebook-situation 2023-12-08 20:10:29 +00:00
Cedric
d31372e063 Merge branch 'main' into 225-ebook-situation 2023-11-29 18:22:31 +00:00
Cedric
20b058fbc6 DRAFT: try png 2023-11-26 11:00:31 +00:00
Cedric
c799d65826 Fix few things on the timeline
1) Use arrows <--> to indicate duration
 2) Use : to introduce date
 3) Move some text around so slightly... First data moved right so we have
    full text width for the timeline
2023-11-26 11:00:31 +00:00
Cedric
d6dfb50beb Fix date typo 2023-11-26 11:00:31 +00:00
Cedric
240d6f4591 Fix epub MWE building on Github CI
does not build the epub on my machine but that can be sorted later.
2023-11-25 17:17:57 +00:00
Cedric
fd9924a7c4 Merge branch 'main' into 225-ebook-situation 2023-11-24 14:57:35 +00:00
Hendrik Kleinwaechter
c987ddfa92 Add Example chemfig 2023-11-17 12:37:19 -10:00
Hendrik Kleinwaechter
996a6e6e47 Add example for chemfig 2023-11-17 12:32:52 -10:00
Hendrik Kleinwaechter
93fb6bce30 add comment 2023-11-17 12:26:13 -10:00
Hendrik Kleinwaechter
e8748b7137 Add example of how adding pre generated pdfs works 2023-11-17 12:24:06 -10:00
Ced
4af4287561 Add sourdough timeline to the MWE
this is broken on website at least...
2023-11-10 14:30:55 +00:00
Ced
0fc8bf911b Merge branch 'main' into 225-ebook-situation 2023-11-10 14:29:26 +00:00
Ced
ae7e518106 Merge branch 'main' into 225-ebook-situation 2023-11-08 13:12:21 +00:00
Ced
e3a04ca337 Merge remote-tracking branch 'upstream/main' into 225-ebook-situation 2023-10-26 09:15:22 +01:00
Ced
5cd2b6862f Merge branch 'main' into 225-ebook-situation 2023-10-13 14:17:27 +01:00
Ced
ec6f9b335d Merge branch 'main' into 225-ebook-situation 2023-10-11 09:40:47 +01:00
Ced
dbc7d84610 Add jpg picture in mwe 2023-10-04 10:17:03 +01:00
Ced
9c7e75b104 Merge branch 'main' into 225-ebook-situation 2023-10-04 09:49:03 +01:00
Ced
a31d4c5e70 Merge branch 'main' into 225-ebook-situation 2023-09-28 09:39:43 +01:00
Ced
ae8ece92f0 Merge branch 'main' into 225-ebook-situation 2023-09-26 13:25:33 +01:00
Ced
042343819e Add list of flowcharts in ebook 2023-09-24 10:06:04 +01:00
Ced
29461db9ab Merge branch 'main' into 225-ebook-situation 2023-09-24 08:44:06 +01:00
Ced
11580d4647 Simplify test flowchart 2023-09-18 08:51:22 +01:00
Ced
a4235fd028 Merge branch 'main' into 225-ebook-situation 2023-09-17 15:51:36 +01:00
Ced
b8c080d17f Remove azw3 and mobi ebook format from build
they take a lot of time and are being deprecated on main branch.
2023-09-16 11:35:59 +01:00
Ced
f104287988 Merge branch 'main' into 225-ebook-situation 2023-09-15 10:41:35 +01:00
Ced
c73e297585 Make ebook the default again 2023-09-15 09:54:28 +01:00
Ced
2c78aeb92d Merge branch 'main' into 225-ebook-situation 2023-09-15 09:50:43 +01:00
Ced
c85cc7caaa Make ebook the default target 2023-09-11 13:31:30 +01:00
Ced
400305a172 Create a MWE showing (known) ebook issues
Those issues are:
- Temp in flowchart
- No front image
- Chemical formula
- No list of flowcharts
- Weird looking table

Also test fonts, accents, etc.. seems ok.
2023-09-11 13:31:30 +01:00
27 changed files with 505 additions and 392 deletions

View File

@@ -40,7 +40,7 @@ jobs:
options: -v ${{ github.workspace }}:/app
run: |
cd /app/book
make -j -O build_serif_pdf build_ebook website
make -j -O serif ebook website
- name: Upload book Artifacts
uses: actions/upload-artifact@v4
with:

View File

@@ -12,7 +12,6 @@
\input{cover/cover.tex}
\titlepage
\frontmatter
{%
\hypersetup{hidelinks}
\ifdefined\HCode\else\tableofcontents\fi
@@ -21,43 +20,89 @@
\input{intro/preface}
\input{intro/acknowledgments}
\mainmatter
\begin{flowchart}[!htb]
\begin{center}
\input{figures/fig-dutch-oven-process.tex}
\caption[Baking process with a dutch oven]{A visualization of the baking
process using a dutch oven (DO). The dough is steamed for the first half
of the bake and then baked without cover for the second half of the
bake. The desired darkness and thickness of the crust depends on your
personal preference. Some bakers prefer a lighter crust and others a
darker.}%
\label{fig:dutch-oven-process}
\end{center}
\end{flowchart}
\input{history/sourdough-history}
At around \qty{60}{\degreeCelsius} (\qty{140}{\degF}) the microbes in your
dough start to die. There are rumors that until this happens the microbes
produce a lot of \ch{CO2}.
\input{basics/how-sourdough-works}
% Does not work
\begin{figure}[!htb]
\begin{center}
\input{figures/fig-ethanol-oxidation.tex}
\caption[Acetic acid creation]{Oxygen is required to create acetic
acid~\cite{acetic+acid+production}.}%
\label{fig:ethanol-oxidation}
\end{center}
\end{figure}
\input{sourdough-starter/sourdough-starter}
%% Works
%% Generate first with: cd figures && pdflatex fig-ethanol-oxidation-external.tex
%\begin{figure}[!htb]
% \begin{center}
% \includegraphics{figures/fig-ethanol-oxidation-external.png}
% \caption[Acetic acid creation]{Oxygen is required to create acetic
% acid~\cite{acetic+acid+production}.}%
% \end{center}
%\end{figure}
%
%% Does not work
%\begin{figure}[!htb]
%\begin{center}
% \input{figures/fig-life-planet-sourdough-timeline.tex}
% \caption[Sourdough microbiology timeline]{Timeline giberrish on website}%
%\end{center}
%\end{figure}
%
%% Works
%% Generate first with: cd figures && pdflatex fig-life-planet-sourdough-timeline-external.pdf
%\begin{figure}[!htb]
% \includegraphics{figures/fig-life-planet-sourdough-timeline-external.png}
% \caption[Sourdough microbiology timeline]{Timeline works embedded as png}%
%\end{figure}
%
%\begin{figure}[!htb]
% \includegraphics[width=\textwidth]{baking-experiment-temperatures.png}
% \caption[Surface temperature for different steaming methods]{png file}
%\end{figure}
\input{sourdough-starter/sourdough-starter-types}
\begin{figure}[!htb]
\includegraphics[width=\textwidth]{baking-process-steam.jpg}
\caption[Steam building with inverted tray]{jpg file}%
\label{flc:inverted-tray}
\end{figure}
If you're a hobby brewer, you'll know that it's important to keep your beer at
certain temperatures to allow the different amylases to convert the contained
starches into sugar~\cite{beer+amylase}.
This test, called the \emph{Iodine Starch Test}, involves mixing iodine into
a sample of your brew and checking the color.
\input{flour-types/flour-types}
% https://github.com/hendricius/the-sourdough-framework/issues/358
\begin{table}[!htb]
\begin{center}
\input{tables/table-starter-usage-activity.tex}
\caption[Different oven types]{An overview of different oven types and
eheir different baking methods.}
\end{center}
\end{table}
\input{bread-types/bread-types}
\chapter{Wheat sourdough}%
\label{chapter:wheat-sourdough}
\input{wheat-sourdough/wheat-sourdough}
\input{non-wheat-sourdough/non-wheat-sourdough}
\input{mix-ins/mix-ins.tex}
\input{baking/baking}
\input{storing-bread/storing-bread}
\chapter{Troubleshooting}
\input{troubleshooting/misc}
\backmatter
\input{glossary/glossary}
{%
\hypersetup{hidelinks}
\listofflowcharts
\listoftables
\listoffigures
}
\printbibliography
\begin{table}[!htb]
\begin{center}
\input{tables/table-oven-baking-overview.tex}
\caption[Different oven types]{An overview of different oven types and their
different baking methods.}
\end{center}
\end{table}
\end{document}

View File

@@ -10,6 +10,7 @@ if [ "$#" -ne 1 ]; then
done
else
target=figures/`basename $1 .png.pdf`.png
echo ${target}
echo "Converting: " $1 " to: " ${target}
convert -density 900 -trim $1 -quality 100 ${target}
fi

View File

@@ -20,10 +20,10 @@
% Same tricks not to get double lines and also we do _not_ want arrows
\path [draw, thick] (ph_value) -- node{} ++(2, 0);
\path [draw, thick] (smell) -| node{} ++(2, 4);
\path [line] (dough_ready) -- node{yes} (divide_preshape);
\path [line] (dough_ready) |- node[right=3pt]{no} (dough_flattened);
\path [line] (dough_flattened) |- node[right=3pt]{yes} (stretch_fold);
\path [line] (dough_flattened) -- node{no} (wait_60_minutes);
\path [line] (dough_ready) -- node{Yes} (divide_preshape);
\path [line] (dough_ready) |- node[right=3pt]{No} (dough_flattened);
\path [line] (dough_flattened) |- node[right=3pt]{Yes} (stretch_fold);
\path [line] (dough_flattened) -- node{No} (wait_60_minutes);
\path [line] (stretch_fold) -- (wait_60_minutes);
\path [line] (wait_60_minutes) -- (check_dough);
\end{tikzpicture}

View File

@@ -1,32 +1,8 @@
\begin{tikzpicture}[node distance = 3cm, auto]
\node [start] (heat_oven) {Preheat DO to \qty{230}{\degreeCelsius} (\qty{446}{\degF}) for 30~minutes};
\node [block, right of=heat_oven] (remove_oven) {Remove DO from oven };
\node [block, right of=remove_oven] (open_load_dough) {Open DO \& load your dough};
\node [block, right of=open_load_dough] (score) {Score your dough};
\node [block, right of=score] (spritz) {Spritz dough with water};
\node [block, below of=spritz] (close) {Close DO};
\node [block, left of=close] (back_oven) {Place DO back in oven};
\node [block, left of=back_oven] (bake) {Bake 30~minutes at \qty{230}{\degreeCelsius} (\qty{446}{\degF})};
\node [decision, below right= 5cm and -1 cm of heat_oven] (is_ready_check)
{Core temperature \qty{92}{\degreeCelsius} (\qty{197}{\degF})?};
\node [block, below of=is_ready_check, node distance=4cm] (wait_5_minutes) {Wait\\ 5 minutes};
\node [block, right of=is_ready_check, node distance=4cm] (remove_do_lid) {Remove DO lid};
\node [decision, right of=remove_do_lid, node distance=3.5cm] (dark_enough_decision) {Crust color dark enough?};
\node [success, below of=dark_enough_decision, node distance=4cm] (finish_baking) {Bread is finished};
\node [block, right of=dark_enough_decision, node distance=3.5cm] (bake_5_more_minutes) {Bake another 5~minutes};
\path [line] (heat_oven) -- (remove_oven);
\path [line] (remove_oven) -- (open_load_dough);
\path [line] (open_load_dough) -- (score);
\path [line] (score) -- (spritz);
\path [line] (spritz) -- (close);
\path [line] (close) -- (back_oven);
\path [line] (back_oven) -- (bake);
\path [line] (bake.west) -- node{} ++(-2, 0) -| (is_ready_check.north);
\path [line] (is_ready_check) -- node{yes} (remove_do_lid);
\path [line] (is_ready_check) -- node{no} (wait_5_minutes);
\path [line] (wait_5_minutes.west) -- node{} ++(-1.5, 0) |- (is_ready_check.west);
\path [line] (remove_do_lid) -- (dark_enough_decision);
\path [line] (dark_enough_decision) -- node{yes} (finish_baking);
\path [line] (dark_enough_decision) -- node{no} (bake_5_more_minutes);
\path [line] (bake_5_more_minutes.east) -- node{} ++(1, 0) -- node{} ++(0, 2.3) -| (dark_enough_decision.north);
\node [block, right of=heat_oven] (remove_oven) {Remove DO from oven ° \text{°} \textup{°}};
\node [decision, below of=heat_oven, node distance=4cm] (is_ready_check) {Core temperature \qty{92}{\degreeCelsius} (\qty{197}{\degF})?};
\node [block, right of=is_ready_check, node distance=4cm] (remove_do_lid) {%
Jörg bäckt quasi zwei Haxenfüße vom Wildpony .Dès Noël, où un zéphyr haï me
vêt};
\end{tikzpicture}

View File

@@ -8,18 +8,18 @@
\path [line] (knead) -- (wait2);
\node [decision, below of=wait2, node distance=4cm] (windowpane_test) {Window-pane?};
\path [line] (wait2) -- (windowpane_test);
\path [line] (windowpane_test.east) -- node{no} ++(1, 0) -- node{} ++(0, 5.7) -| (knead.north);
\path [line] (windowpane_test.east) -- node{No} ++(1, 0) -- node{} ++(0, 5.7) -| (knead.north);
\node [decision] at (windowpane_test -| knead) (more_water) {Bassinage for more water?};
\path [line] (windowpane_test) -- node{yes} (more_water);
\path [line] (windowpane_test) -- node{Yes} (more_water);
\node [block] at (wait1 |- more_water) (add_water) {Add water};
\path [line] (more_water) -- node{yes} (add_water);
\path [line] (more_water) -- node{Yes} (add_water);
\path [line] (add_water.north east) -- (knead.south west);
\node [decision, below of=more_water, node distance=4.5cm] (dough_sample) {Aliquot sample?};
\path [line] (more_water) -- node{no} (dough_sample);
\path [line] (more_water) -- node{No} (dough_sample);
\node [block] at (dough_sample -| wait2) (dough_ball) {Make round dough ball};
\path [line] (dough_sample) -- node{no} (dough_ball);
\path [line] (dough_sample) -- node{No} (dough_ball);
\node [block, below of=dough_sample] (extract_sample) {Extract sample};
\path [line] (dough_sample) -- node{yes} (extract_sample);
\path [line] (dough_sample) -- node{Yes} (extract_sample);
\path [line] (extract_sample.north east) -- (dough_ball.south west);
\node [success, below of=dough_ball] (begin_bulk) {Begin bulk fermentation};
\path [line] (dough_ball) -- (begin_bulk);

View File

@@ -8,10 +8,10 @@
\path [line] (init) -- (feed_new_ratio);
\path [line] (feed_new_ratio) -- node{Wait \qty{24}{\hour}} (ready_signs);
\path [line] (feed_again) -- node[anchor=east] {} ++(2.2,0) |- (feed_new_ratio);
\path [line] (ready_signs) -- node{no} (feed_again);
\path [line] (ready_signs) -- node[above=2pt]{~yes} (last_feed);
\path [line] (ready_signs) -- node{No} (feed_again);
\path [line] (ready_signs) -- node[above=2pt]{~Yes} (last_feed);
\path [line] (last_feed) -- node{after \qtyrange{6}{12}{\hour}} (bread_dough);
% TODO: find a better way to position the Repeat 3 times text and arrow. Hard-coded values are finicky and don't work well across media.
\draw [line] ($ (feed_again.north) +(0.7cm, 1cm)$) arc (-45:220:1cm);
\node [anchor=north, text width=5em] at ($(feed_again.north west)+(1.55cm, 2.2cm)$) {Repeat 3~times};
\node [above of=feed_again, text width=5em, align=center, node distance=3cm] (repeat_text) {Repeat 3~times};
\draw [line] ($(repeat_text) +(0, 1 cm)$) arc (90:420:1cm);
\end{tikzpicture}

View File

@@ -7,14 +7,14 @@
\node [success, right of=dent_visible_decision, node distance=4cm] (bake) {Score and bake};
\node [block] at (retard_bake_decision |- poke) (wait_retard) {Wait\\ 15~minutes};
\node [block] at (wait_retard |- bake) (retard) {Proof in fridge at \qty{4}{\degreeCelsius} (\qty{40}{\degF})};
\path [line] (init) -- node{yes} (poke);
\path [line] (init) -- node{no} (retard_bake_decision);
\path [line] (init) -- node{Yes} (poke);
\path [line] (init) -- node{No} (retard_bake_decision);
\path [line] (poke) -- (dent_visible_decision);
\path [line] (dent_visible_decision) -- node{yes} (bake);
\path [line] (dent_visible_decision.west) -- node{no} ++(-1.4, 0) -- node{} (wait_poke.south);
\path [line] (dent_visible_decision) -- node{Yes} (bake);
\path [line] (dent_visible_decision.west) -- node{No} ++(-1.4, 0) -- node{} (wait_poke.south);
\path [line] (wait_poke) -- (poke);
\path [line] (retard_bake_decision) -- node{yes} (wait_retard);
\path [line] (retard_bake_decision.east) -- node{no} ++(1, 0) |- node{} (retard.east);
\path [line] (retard_bake_decision) -- node{Yes} (wait_retard);
\path [line] (retard_bake_decision.east) -- node{No} ++(1, 0) |- node{} (retard.east);
\path [line] (wait_retard) -- (retard);
\path [line] (retard) -- (bake);
\end{tikzpicture}

View File

@@ -8,8 +8,8 @@
\node [block, right of=flour] (banneton) {Place upside down in banneton};
\node [success, right of=banneton] (proof) {Begin proofing};
\path [line] (init) -- (overfermented_decision);
\path [line] (overfermented_decision) -- node{yes} (overfermented);
\path [line] (overfermented_decision) -- node{no} (shaping_technique);
\path [line] (overfermented_decision) -- node{Yes} (overfermented);
\path [line] (overfermented_decision) -- node{No} (shaping_technique);
\path [line] (shaping_technique) -- (flour);
\path [line] (flour) -- (banneton);
\path [line] (banneton) -- (proof);

View File

@@ -4,8 +4,8 @@
\path [line] (init) -- (all_starter_used);
\node [block, right of=init, node distance=3cm] (use_dough) {Take \qty{10}{\gram} of your bread dough};
\node [block, right of=all_starter_used, node distance=3cm] (use_starter) {Take all but not more than \qty{10}{\gram} of your starter};
\path [line] (all_starter_used) -- node{yes} (use_dough);
\path [line] (all_starter_used) -- node{no} (use_starter);
\path [line] (all_starter_used) -- node{Yes} (use_dough);
\path [line] (all_starter_used) -- node{No} (use_starter);
\node [block, right of=use_dough, node distance=3cm] (feed_starter) {Feed using 1:5:5 ratio};
\path [line] (use_dough) -- (feed_starter);
\path [line] (use_starter) -- (feed_starter);
@@ -13,20 +13,20 @@
\path [line] (feed_starter) -- (bake_next_day_check);
\node [success, right of=bake_next_day_check, node distance=3.5cm]
(make_bread_dough) {Make bread dough again after \qtyrange{8}{12}{\hour}};
\path [line] (bake_next_day_check) -- node{yes} (make_bread_dough);
\path [line] (bake_next_day_check) -- node{Yes} (make_bread_dough);
\node [decision, right of=use_starter, node distance=3cm] (bake_next_week_check) {Baking in next 2 weeks?};
\node [block, right of=bake_next_week_check, node distance=3.5cm] (store_fridge) {Store starter in fridge at \qty{4}{\degreeCelsius} (\qty{40}{\degF})};
\path [line] (bake_next_week_check) -- node{yes} (store_fridge);
\path [line] (bake_next_week_check) -- node{Yes} (store_fridge);
\node [success, right of=store_fridge, node distance=3cm] (feed_after_fridge) {Feed again using 1:5:5 ratio \qtyrange{8}{12}{\hour} before making dough};
\path [line] (store_fridge) -- (feed_after_fridge);
\path [line] (bake_next_day_check) -- node{no} (bake_next_week_check);
\path [line] (bake_next_day_check) -- node{No} (bake_next_week_check);
\node [decision, below of=use_starter, node distance=3cm] (freezer_check) {Have a freezer?};
\path [line] (bake_next_week_check) -- (store_fridge);
\path [line] (bake_next_week_check) -- node{no} (freezer_check);
\path [line] (bake_next_week_check) -- node{No} (freezer_check);
\node [block, right of=freezer_check, node distance=3cm] (dry_starter) {Dry your starter};
\node [block, below of=dry_starter, node distance=3cm] (freeze_starter) {Freeze your starter};
\path [line] (freezer_check) -- node{no} (dry_starter);
\path [line] (freezer_check) -- node{yes} (freeze_starter);
\path [line] (freezer_check) -- node{No} (dry_starter);
\path [line] (freezer_check) -- node{Yes} (freeze_starter);
\node [success, right of=dry_starter, node distance=3.5cm] (reactivate_freezer) {Reactivate starter for 3 days with daily 1:5:5 feedings};
\path [line] (dry_starter) -- (reactivate_freezer);
\path [line] (freeze_starter) -- (reactivate_freezer);

View File

@@ -1,47 +1,22 @@
\begin{tikzpicture}[node distance = 3.5cm, auto]
\node [start] (init) {Mix \qty{50}{\gram} flour + \qty{50}{\gram} water, stir};
\node [block, right of=init] (wait2) {Wait\\ \qty{24}{\hour}};
\path [line] (init) -- (wait2);
\node [block, below of=wait2, node distance=3.5cm] (feed) {\qty{10}{\gram} of previous day + \qty{50}{\gram} water + \qty{50}{\gram} flour, stir};
\path [line] (wait2) -- (feed);
\node [block, below of=feed] (discard) {Discard the rest};
\path [line] (feed) -- (discard);
\node [decision, right of=feed, node distance=3.5cm] (decide) {Is good?};
\node [decision, above of=decide, node distance=3.5cm] (timeout) {Less than 10 feeds?};
\node [fail, right of=timeout, node distance=3.5cm] (discard2) {Batch failed};
\path [line] (timeout) -- node{no} (discard2);
\path [line] (timeout) -- node{yes} (wait2);
\path [line] (feed) -- (decide);
\node [success, right of=decide, node distance=3.5cm] (use) {Ready to use};
\path [line] (decide) -- node{no} (timeout);
\path [line] (wait2) -- (feed);
\path [line] (decide) -- node{yes} (use);
\node [start, below of=discard, left of=discard] (start_n) { Start with Initial Mixture };
\node [block, right of=start_n, node distance = 3.2cm] (wait_n) { Wait\\ \qty{24}{\hour} };
\node [decision, right of=wait_n, node distance = 3.2cm] (readycheck_n) { Ready? };
\node [block, below of=wait_n, node distance = 3cm] (feed_n) { Feed the Mixture };
\node [decision, right of=feed_n, node distance = 3.2cm] (limitcheck_n) { Failed? };
\node [fail, right of=limitcheck_n, node distance = 3.2cm] (abort_n) { Discard All, Start Over };
\node [success, right of=readycheck_n, node distance = 3.2cm] (final_n) { Done };
\node [start] (start_n) {Mix \qty{50}{\gram} flour + \qty{50}{\gram} water, stir};
\node [block, right of=start_n, node distance = 3.5cm] (wait_n) {Wait\\ \qty{24}{\hour}};
\node [decision, right of=wait_n, node distance = 3.5cm] (readycheck_n) {Ready?};
\node [block, below of=wait_n, node distance = 3.2cm] (feed_n) {Feed the mixture };
\node [decision, right of=feed_n, node distance = 3.5cm] (limitcheck_n) {>10 feeds?};
\node [fail, right of=limitcheck_n, node distance = 3.5cm] (abort_n) {Discard all. Start over};
\node [success, right of=readycheck_n, node distance = 3.5cm] (final_n) {Ready to use};
\draw [line] (start_n) -- (wait_n);
\draw [line] (wait_n) -- (readycheck_n);
\draw [line] (feed_n) -- (wait_n);
\draw [line] (readycheck_n) -- node { No } (limitcheck_n);
\draw [line] (limitcheck_n) -- node (feedok_n) { No } (feed_n) ;
\draw [line] (limitcheck_n) -- node { Yes } (abort_n);
\draw [line] (readycheck_n) -- node { Yes } (final_n);
\draw [line] (readycheck_n) -- node {No} (limitcheck_n);
\draw [line] (limitcheck_n) -- node (feedok_n) {No} (feed_n) ;
\draw [line] (limitcheck_n) -- node {Yes} (abort_n);
\draw [line] (readycheck_n) -- node {Yes} (final_n);
\node [below of=feedok_n, node distance=2cm, align=left] (details2) [shape=rectangle,draw,fill=maingray]{
For the \emph{Initial Mixture}, mix \qty{50}{\gram} flour/\qty{50}{\gram} water.\\
The Mixture is \emph{Ready} when it has
\emph{grown}, has \emph{bubbles}, and \emph{smells}
vinegary/yoghurty. \\
The Mixture has \emph{Failed} when you
have fed it too many (\eg~10) times without success.\\
To \emph{Feed the Mixture}, discard all but \qty{10}{\gram}, mix in \qty{50}{\gram} flour and \qty{50}{\gram} water.
\node [below of=feedok_n, node distance=2cm, align=left] (details2) [shape=rectangle, draw, fill=maingray]{%
\textbf{Ready}: Mixture has \emph{grown}, has \emph{bubbles}, and \emph{smells} vinegary/yoghurty. \\
\textbf{Feed the mixture}: Discard all but \qty{10}{\gram}, mix in \qty{50}{\gram} flour and \qty{50}{\gram} water.
};
\end{tikzpicture}

View File

@@ -23,16 +23,16 @@
{Prepare dough};
\path [line] (init) -- (decision_start);
\path [line] (decision_start) -- node{no} (feed_no_branch);
\path [line] (decision_start) -- node[below=2pt]{yes} (feed_yes_branch.north west);
\path [line] (decision_start) -- node{No} (feed_no_branch);
\path [line] (decision_start) -- node[below=2pt]{Yes} (feed_yes_branch.north west);
\path [line] (feed_yes_branch) -- (low_ratio);
\path [line] (feed_no_branch) -- (high_ratio);
\path [line] (high_ratio) -- node[anchor=east, above=2pt] {} ++(2.2,0) |-(size_check);
\path [line] (low_ratio) -- (size_check);
\path [line] (size_check) -- node{no} (feed_yes_branch.south east);
\path [line] (size_check) -- node{yes} (smell_check);
\path [line] (smell_check) -- node{no} (feed_yes_branch.south west);
\path [line] (smell_check) -- node{yes} (make_dough);
\path [line] (size_check) -- node{No} (feed_yes_branch.south east);
\path [line] (size_check) -- node{Yes} (smell_check);
\path [line] (smell_check) -- node{No} (feed_yes_branch.south west);
\path [line] (smell_check) -- node{Yes} (make_dough);
% braces
\draw[BC] (size_check.south) --

View File

@@ -11,15 +11,15 @@
\path [line] (init) -- (feed_new_ratio);
\path [line] (feed_again) -- (feed_new_ratio);
\path [line] (next_day) -- (ready_signs);
\path [line] (ready_signs) -- node{no} (feed_again |- last_feed) -| (feed_again.south);
\path [line] (ready_signs) -- node{yes} (last_feed);
\path [line] (ready_signs) -- node{No} (feed_again |- last_feed) -| (feed_again.south);
\path [line] (ready_signs) -- node{Yes} (last_feed);
\path [line] (last_feed) -- node{after \qtyrange{6}{12}{\hour}} (bread_dough);
\path [line] (feed_new_ratio) -- (too_dry);
\path [line] (add_water.north) -- node{} ++(0, 1.3) -| (too_dry.north);
\path [line] (too_dry) -- node{no} (next_day);
\path [line] (too_dry) -- node{yes} (add_water);
\path [line] (ready_signs) -- node{yes} (last_feed);
% TODO: find a better way to position the Repeat 3 times text and arrow. Hard-coded values are finicky and don't work well across media.
\draw [line] ($ (feed_again.east) +(0.7cm, 0.9cm)$) arc (220:-45:1cm);
\node [anchor=north, text width=5em] at ($(feed_again.east)+(1.9cm, 2cm)$) {Repeat 3~times};
\path [line] (too_dry) -- node{No} (next_day);
\path [line] (too_dry) -- node{Yes} (add_water);
\path [line] (ready_signs) -- node{Yes} (last_feed);
\node [text width=5em, align=center] (repeat_text) at ($(feed_new_ratio)!0.5!(next_day)$) {Repeat 3~times};
\draw [line] ($(repeat_text) +(0, 1 cm)$) arc (90:-210:1cm);
\end{tikzpicture}

View File

@@ -13,8 +13,8 @@
\path [line] (mix_ingredients) -- (dough_strength);
\path [line] (dough_strength) -- (bulk);
\path [line] (bulk) -- (divide_test);
\path [line] (divide_test) -- node{yes} (shape);
\path [line] (divide_test) -- node{no} (divide);
\path [line] (divide_test) -- node{Yes} (shape);
\path [line] (divide_test) -- node{No} (divide);
\path [line] (divide) -- (preshape);
\path [line] (preshape) -- (shape);
\path [line] (shape) -- (proof);

View File

@@ -1,7 +1,7 @@
# Macros for commands
# Macros for commands {{{
LATEX := latexmk -cd -pdflua -lualatex="lualatex -interaction=nonstopmode" -synctex=1 -use-make
EBOOK := tex4ebook --lua -d epub -f epub -c tex4ebook.cfg -B epub_build
WEBSITE := make4ht --lua -c website.cfg -a debug -uf html5+tidy+common_domfilters -B website_build
WEBSITE := make4ht --lua -c website.cfg -uf html5+tidy+common_domfilters -B website_build
CLEAN := latexmk -cd -lualatex -c -use-make
CHECK_1 := lacheck
CHECK_2 := chktex
@@ -13,7 +13,6 @@ REDUCE_PIC_COLOR := -quality 80\%
RSYNC := rsync -au --exclude 'book.epub' --exclude '*.jpg'
GIT := git --no-pager
SPELL_CHECK := hunspell -t -l -d en_US
EPUBSIZE := `du -sb epub/low_res_book.epub | cut -f1`
# We want bash as shell
SHELL := $(shell if [ -x "$$BASH" ]; then echo $$BASH; \
@@ -25,25 +24,35 @@ LATEX += -diagnostics
EBOOK += -a debug
WEBSITE += -a debug
endif
# }}}
website_dir := static_website_html
# Default target is not all because most of the time we just want a pdf...
# and building everything take a long time.
.DEFAULT_GOAL := serif
# List all files that are dependencies
# List all files that are dependencies {{{
chapters = baking basics bread-types cover flour-types history intro mix-ins\
non-wheat-sourdough sourdough-starter storing-bread troubleshooting\
wheat-sourdough glossary
# Actual book text and LaTeX code {{{
src_tex := $(foreach directory, $(chapters), $(wildcard $(directory)/*.tex))
src_tex += book.tex book_sans_serif.tex references.bib figures/vars.tex
src_tex += supporters.csv sourdough.sty colors.tex abbreviations.tex
src_tex += $(src_recipes)
# }}}
# Tables and TikZ flowcharts/plots/drawings... {{{
src_tables := $(wildcard tables/table-*.tex)
src_figures := $(wildcard figures/fig-*.tex) figures/flowcharts_tikz.tex
src_figures += $(wildcard plots/fig-*.tex) abbreviations.tex colors.tex
src_recipes := $(wildcard recipes/*.tex)
src_plots := $(wildcard plots/*.table)
# }}}
src_tex := $(foreach directory, $(chapters), $(wildcard $(directory)/*.tex))
src_tex += book.tex book_sans_serif.tex references.bib figures/vars.tex
src_tex += supporters.csv sourdough.sty colors.tex abbreviations.tex
src_tex += $(src_recipes)
tgt_figures := $(patsubst %.tex, %.png,$(src_figures))
# Photos {{{
images := $(wildcard images/*/*.jpg)
images += $(wildcard images/*.jpg)
images += $(wildcard images/*.png)
@@ -57,37 +66,30 @@ images += $(foreach directory, $(chapters), $(wildcard $(directory)/*/*.png))
# images to lower resolution and greyscale
bw_images := $(addprefix bw-book-epub/OEBPS/, $(images))
# For lower res colour ebook we would not convert png as it only get worst
# we will copy them instead... so remove them as a dependency.
# For lower resolution colour ebook (see below) we will not convert png as it
# only get worst we will copy them instead... so remove them as a dependency.
low_res_images := $(addprefix low-res-book-epub/OEBPS/, $(images))
low_res_images := $(filter-out %.png, $(low_res_images))
# }}}
# All together.
src_all := $(src_tex) $(src_figures) $(src_tables) $(images) $(src_plots)
# And format specific configurations
ebook_src := $(src_all) tex4ebook.cfg book.mk4 book-ebook.css
website_src := $(src_all) website.cfg style.css
# This is more than what is actually needed but keeps the makefile simple
# and latexmk will handle the rest
booklet_src := $(src_figures) $(src_tables) $(src_recipes) $(images)
booklet_src += booklet.tex
website_dir := static_website_html
website_assets := $(wildcard ../website/assets/*)
ruby_src := ../website/modify_build.rb $(website_assets)
ruby_pkg := ../website/Gemfile ../website/Gemfile.lock
tgt_figures := $(patsubst %.tex, %.png,$(src_figures))
# Default target is not all because most of the time we just want a pdf...
# and ebook take a long time to build.
.DEFAULT_GOAL := build_serif_pdf
# Default rules for pdf and ebooks, getting overwritten when built in a
# sub-directory
%.pdf: %.tex
$(LATEX) $<
# This is more than what is actually needed but keeps the makefile simple
booklet_src := $(src_figures) $(src_tables) $(src_recipes) $(images)
booklet_src += booklet.tex
# }}}
# Flowcharts {{{
# TODO: check if it works on github CI
%.png: %.tex
@printf '%s\n' "\input{./vars.tex}" > $@.in
@@ -99,12 +101,12 @@ tgt_figures := $(patsubst %.tex, %.png,$(src_figures))
%.xbb: %.jpg
ebb -x $<
# }}}
# We don't want to use latexmk as there is no biber nor references and it
# seems to make it somehow unhappy
booklet/booklet.pdf: $(booklet_src)
mkdir -p booklet
lualatex --output-directory=booklet booklet.tex
# pdf {{{
# Default rules for pdf, getting overwritten when built in a sub-directory
%.pdf: %.tex
$(LATEX) $<
book_serif/book.pdf: $(src_all)
$(LATEX) -output-directory=book_serif book.tex
@@ -112,16 +114,28 @@ book_serif/book.pdf: $(src_all)
book_sans_serif/book_sans_serif.pdf: $(src_all)
$(LATEX) -output-directory=book_sans_serif book_sans_serif.tex
.PHONY: copy_ebook_files copy_ebook_files_low_res
# We don't want to use latexmk as there is no biber nor references and it
# seems to make it somehow unhappy
booklet/booklet.pdf: $(booklet_src)
mkdir -p booklet
lualatex --output-directory=booklet booklet.tex
# }}}
# Ebook {{{
###################################
.PHONY: copy_ebook_files copy_ebook_files_low_res
epub/%.epub: %.tex $(ebook_src) cover/cover-page.xbb
$(EBOOK) $<
copy_ebook_files: build_ebook
$(RSYNC) --exclude '*.png' epub_build/book-epub/ bw-book-epub/
copy_ebook_files_low_res: build_ebook
$(RSYNC) epub_build/book-epub/ low-res-book-epub/
# Now that we have built the ebook we will generate 2 more versions
#
# 1) With kindle app on phone we want a colour version with size < 50 MB
# 2) A black-white version for actual eink readers
#
# In both cases we just convert images and repack the ebpub
# We do not convert SVG to B&W or lower res for now as they are super small
# anyway
@@ -133,120 +147,107 @@ bw-book-epub/OEBPS/%.png: %.png
mkdir -p $(dir $@)
$(CONVERT_PIC) $< $(REDUCE_PIC) $@
low-res-book-epub/OEBPS/%.jpg: %.jpg
mkdir -p $(dir $@)
$(CONVERT_PIC) $< $(REDUCE_PIC_COLOR) $@
epub/bw_book.epub: copy_ebook_files $(bw_images)
cd bw-book-epub; zip -q0X ../epub/bw_book.epub mimetype
cd bw-book-epub; zip -q9XrD ../epub/bw_book.epub ./
# Now the low res
copy_ebook_files_low_res: ebook
$(RSYNC) epub_build/book-epub/ low-res-book-epub/
low-res-book-epub/OEBPS/%.jpg: %.jpg
mkdir -p $(dir $@)
$(CONVERT_PIC) $< $(REDUCE_PIC_COLOR) $@
epub/low_res_book.epub: copy_ebook_files_low_res $(low_res_images)
cd low-res-book-epub; zip -q0X ../epub/low_res_book.epub mimetype
cd low-res-book-epub; zip -q9XrD ../epub/low_res_book.epub ./
#}}}
# Now with the rules
# Expected usual rules first
# Website {{{
###################################
.PHONY: html website
$(website_dir)/book.html: $(website_src) cover/cover-page.xbb
$(WEBSITE) -d $(website_dir) book.tex
html: $(website_dir)/book.html
cp $< $(website_dir)/index.html
# Because packages will be installed in hard to predict places use a file as
# marker..
../website/_bundle_install_done: $(ruby_pkg)
-rm ../website/$@
cd ../website && bundle install
touch ../website/$@
# TODO: this will run every single time, but is so fast we don't really care
website: html ../website/_bundle_install_done $(ruby_src)
cd ../website && ruby modify_build.rb
#}}}
# Figures only {{{
###################################
.PHONY: export_figures
# Requires that you have docker running on your computer.
export_figures: pdf $(tgt_figures)
cd figures/ && bash export_figures.sh
# }}}
# Now with the targets {{{
# Expected usual targets first
.PHONY: all
all: bake
.PHONY: help
help:
@echo ""
@echo "default: builds the book in pdf format (serif)"
@echo ""
@echo "Releases:"
@echo " all: pdf serif and sans-serif accessible version, ebooks in colours"
@echo " and black&white versions and the website"
@echo ""
@echo " bake: same as build all"
@echo ""
@echo " release_serif: build serif only version of pdf and ebook"
@echo " release_sans_serif: build sans-serif/accessible version of pdf"
@echo ""
@echo "Portable Document Format (pdf):"
@echo " build_sans_serif_pdf: build accessible pdf only (same as release_sans_serif)"
@echo " build_serif_pdf: build serif pdf only"
@echo " build_pdf: builds both serif and accessible pdf"
@echo ""
@echo "Ebooks (epub):"
@echo " build_ebook: builds only the colour ebook"
@echo " build_bw_ebook: builds the low res black & white ebook"
@echo ""
@echo "Website:"
@echo " website: build the static website from LaTeX sources and post-process it"
@echo " html: build the static website from LaTeX sources _without_ post-processing"
@echo ""
@echo "Cleanup:"
@echo " mrproper: delete all generated files intermediate and pdf/ebooks/website"
@echo " clean: delete all intermediate files keep targets (pdf/ebooks/website)"
@echo " clean_figures: delete intermediate TikZ files"
@echo " clean_website_build: delete intermediate website files"
@echo " clean_ebook_build: delete intermediate ebook files"
@echo ""
@echo "Debug targets:"
@echo ""
@echo "figures: build TikZ figures only"
@echo ""
@echo "Quick builds:"
@echo " quick: compiles serif_pdf but runs lulatex only once"
@echo " quick_ebook: compiles ebook but runs lulatex only once"
@echo " quick_booklet: compiles booklet but runs lulatex only once"
@echo ""
@echo "Checks:"
@echo " tex-check: runs static analysis checker on LaTeX source to spot"
@echo " programming or typographic mistakes"
@echo " spell-check: runs a spell checker"
@echo " check: runs both checkers"
@echo ""
@echo "Dump informations:"
@echo " show_tools_version: Show version of tools used on the build machine"
@echo " printvars: print all variables in the makefile"
@echo " print-X: print makefile variable X"
@echo ""
@echo "set DEBUG i.e make DEBUG=1 build_ebook to add debug flags to commands"
# Finally actual project targets (i.e. build pdf and ebooks)
.PHONY: build_pdf build_booklet build_serif_pdf build_sans_serif_pdf build_ebook
.PHONY: pdf booklet serif sans_serif ebook
build_pdf: build_serif_pdf build_sans_serif_pdf
pdf: serif sans_serif
build_booklet: booklet/booklet.pdf
booklet: booklet/booklet.pdf
serif: book_serif/book.pdf
sans_serif: book_sans_serif/book_sans_serif.pdf
build_serif_pdf: book_serif/book.pdf
ebook: epub/book.epub
bw_ebook: epub/bw_book.epub
low_res_ebook: epub/low_res_book.epub
build_sans_serif_pdf: book_sans_serif/book_sans_serif.pdf
# We keep the old target names for backward compatibility
build_pdf: pdf
build_booklet: booklet
build_serif_pdf: serif
build_sans_serif_pdf: sans_serif
build_ebook: ebook
build_bw_ebook: bw_ebook
build_low_res_ebook: low_res_ebook
build_ebook: epub/book.epub
# top level releases rules
.PHONY: bake release_serif release_sans_serif
bake: release_serif release_sans_serif release_booklet website
build_bw_ebook: epub/bw_book.epub
release:
mkdir -p release
build_low_res_ebook: epub/low_res_book.epub
release_serif: serif ebook bw_ebook low_res_ebook | release
cp book_serif/book.pdf release/TheBreadCode-The-Sourdough-Framework.pdf
cp epub/bw_book.epub release/TheBreadCode-The-Sourdough-Framework-black-and-white.epub
cp epub/low_res_book.epub release/TheBreadCode-The-Sourdough-Framework.epub
# Kindle does not allow files larger than 50 MB... so let's check
@if [ `du -sb epub/low_res_book.epub | cut -f1` -gt 49500000 ]; then \
echo "ERROR: epub File too big"; \
exit 1; \
fi
.PHONY: export_figures check tex-check spell-check
# Requires that you have docker running on your computer.
export_figures: build_pdf $(tgt_figures)
cd figures/ && bash export_figures.sh
release_sans_serif: sans_serif | release
cp book_sans_serif/book_sans_serif.pdf release/TheBreadCode-The-Sourdough-Framework-sans-serif.pdf
# Goal is not really to have 0 warning reported but we should check we don't
# add many and if we do, we know they are false positive
check: spell-check tex-check
release_booklet: booklet | release
cp booklet/booklet.pdf release/TheBreadCode-The-Sourdough-Framework-booklet.pdf
# }}}
tex-check: $(src_tex)
@echo "Running: " $(CHECK_1)
$(CHECK_1) book.tex
@echo ""
@echo "Running: " $(CHECK_2)
$(CHECK_2) book.tex
# Clean up {{{
###################################
spell-check: $(src_tex) spelling_exceptions.txt
# Generate exceptions this way to avoid false positives
# hunspell -t -l -d en_US **/*.tex *.csv *.sty *.sty | cut -f 2 -d ':' | sort -u > spelling_exceptions.txt
$(SPELL_CHECK) -p spelling_exceptions.txt $(src_tex)
# Clean up and delete generated files
# delete generated files
.PHONY: clean_figures clean_ebook_build clean_website_build clean mrproper
clean_figures:
-$(CLEAN) $(patsubst %.tex, %.png.in, $(src_figures))
@@ -291,52 +292,92 @@ mrproper: clean
-rm -rf epub_build/
-rm -rf website_build/
-rm -rf $(website_dir)
#}}}
# top level releases rules
.PHONY: bake release_serif release_sans_serif
# Help {{{
###################################
.PHONY: help
help:
@echo ""
@echo "default: builds the book in pdf format (serif)"
@echo ""
@echo "Releases:"
@echo " all: pdf serif and sans-serif accessible version, ebooks in colours"
@echo " and black&white versions as well as the website"
@echo ""
@echo " bake: same as build all"
@echo ""
@echo " release_serif: build serif only version of pdf and ebook"
@echo " release_sans_serif: build sans-serif/accessible version of pdf"
@echo ""
@echo "Portable Document Format (pdf):"
@echo " sans_serif: build accessible pdf only (same as release_sans_serif)"
@echo " serif: build serif pdf only"
@echo " pdf: builds both serif and accessible pdf"
@echo ""
@echo "Ebooks (epub):"
@echo " ebook: builds only the colour ebook"
@echo " low_res_ebook: builds the colour ebook in lower resolution"
@echo " bw_ebook: builds the low res black & white ebook"
@echo ""
@echo "Website:"
@echo " website: build the static website from LaTeX sources and post-process it"
@echo " html: build the static website from LaTeX sources _without_ post-processing"
@echo ""
@echo "Cleanup:"
@echo " mrproper: delete all generated files intermediate and pdf/ebooks/website"
@echo " clean: delete all intermediate files keep targets (pdf/ebooks/website)"
@echo " clean_figures: delete intermediate TikZ files"
@echo " clean_website_build: delete intermediate website files"
@echo " clean_ebook_build: delete intermediate ebook files"
@echo ""
@echo "Debug targets:"
@echo ""
@echo "figures: build TikZ figures only"
@echo ""
@echo "Quick builds:"
@echo " quick: compiles serif_pdf but runs lulatex only once"
@echo " quick_ebook: compiles ebook but runs lulatex only once"
@echo " quick_booklet: compiles booklet but runs lulatex only once"
@echo ""
@echo "Checks:"
@echo " tex-check: runs static analysis checker on LaTeX source to spot"
@echo " programming or typographic mistakes"
@echo " spell-check: runs a spell checker"
@echo " check: runs both checkers"
@echo ""
@echo "Dump informations:"
@echo " show_tools_version: Show version of tools used on the build machine"
@echo " printvars: print all variables in the makefile"
@echo " print-X: print makefile variable X"
@echo ""
@echo "set DEBUG i.e make DEBUG=1 ebook to add debug flags to commands"
# }}}
bake: release_serif release_sans_serif release_booklet website
# Debug Stuff from now on {{{
###################################
release:
mkdir -p release
# Verify your spelling and TeX warnings {{{
.PHONY: check tex-check spell-check
# Goal is not really to have 0 warning reported but we should check we don't
# add many and if we do, we know they are false positive
check: spell-check tex-check
release_serif: build_serif_pdf build_ebook build_bw_ebook build_low_res_ebook | release
cp book_serif/book.pdf release/TheBreadCode-The-Sourdough-Framework.pdf
cp epub/bw_book.epub release/TheBreadCode-The-Sourdough-Framework-black-and-white.epub
cp epub/low_res_book.epub release/TheBreadCode-The-Sourdough-Framework.epub
@if [ $(EPUBSIZE) -gt 49500000 ]; then \
echo "ERROR: epub File too big"; \
exit 1; \
fi
tex-check: $(src_tex)
@echo "Running: " $(CHECK_1)
$(CHECK_1) book.tex
@echo ""
@echo "Running: " $(CHECK_2)
$(CHECK_2) book.tex
release_sans_serif: build_sans_serif_pdf | release
cp book_sans_serif/book_sans_serif.pdf release/TheBreadCode-The-Sourdough-Framework-sans-serif.pdf
# Should be 0 if not and you are really sure update the exception file
spell-check: $(src_tex) spelling_exceptions.txt
# Generate exceptions this way to avoid false positives
# hunspell -t -l -d en_US **/*.tex *.csv *.sty *.sty | cut -f 2 -d ':' | sort -u > spelling_exceptions.txt
$(SPELL_CHECK) -p spelling_exceptions.txt $(src_tex)
#}}}
release_booklet: build_booklet | release
cp booklet/booklet.pdf release/TheBreadCode-The-Sourdough-Framework-booklet.pdf
# Website stuff
.PHONY: html website
$(website_dir)/book.html: $(website_src) cover/cover-page.xbb
$(WEBSITE) -d $(website_dir) book.tex
html: $(website_dir)/book.html
cp $< $(website_dir)/index.html
# Because packages will be installed in hard to predict places use a file as
# marker..
../website/_bundle_install_done: $(ruby_pkg)
-rm ../website/$@
cd ../website && bundle install
touch ../website/$@
# TODO: this will run every single time, but is so fast we don't really care
website: html ../website/_bundle_install_done $(ruby_src)
cd ../website && ruby modify_build.rb
# Debug Stuff from now on
.PHONY: quick quick_ebook show_tools_version printvars
# Those 2 targets allow fast debug cycles but not resolving references etc
# They also ignore dependencies and run each time you call them.
quick: # run latex only once no biber, no references etc...
@@ -348,7 +389,7 @@ quick_booklet:
quick_ebook: cover/cover-page.xbb # run latex only once no biber, ref etc...
$(EBOOK) --mode draft book.tex
show_tools_version: # Show version of tools used on the build machine
show_tools_version: # Show version of tools used on the build machine {{{
- $(GIT) log -1 --pretty=%B
@echo ""
- uname -a
@@ -383,6 +424,7 @@ show_tools_version: # Show version of tools used on the build machine
- $(CONVERT_PIC) --version
@echo ""
- rsync --version
# }}}
# You can find the value of variable X with the following command:
# make print-X
@@ -392,3 +434,4 @@ printvars: # Print all variables in the makefile
@$(foreach V,$(sort $(.VARIABLES)), \
$(if $(filter-out environ% default automatic, \
$(origin $V)),$(info $V=$($V) ($(value $V)))))
# }}}

View File

@@ -26,11 +26,11 @@ to express yourself.
\begin{figure}[htb!]
\centering
\includegraphics[width=\textwidth]{pumpkin-on-flour}
\caption[Pumpkin puré]{A common mix-in technique is to replace some of
the dough's water with another liquid. In this case, puréd pumpkin replaced
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.}%
\caption[Pumpkin purée]{A popular method is to substitute part of the
dough's water with another liquid, such as puréed pumpkin. When
incorporating the purée, add any extra water gradually, as the purée
will release its own liquid into the dough over time.}%
\label{fig:pumpkin-on-flour}
\end{figure}
One approach to categorizing the mixins is to look at their respective shape.

View File

@@ -1,49 +0,0 @@
\documentclass[paper=a4, twoside=false, fontsize=12pt, parskip=half,
bibliography=totoc, listof=totoc]{scrbook}
% General packages
\usepackage{pgfplots}
\usepackage{fontspec}
\usepackage[mode=match, reset-text-family=false]{siunitx}
\usepackage{fontspec}
\usepackage{calc}
\input{colors.tex}
% Define flowcharts macros independently so we can build them as png files
% for the website or something. This is supported in the makefile
\input{figures/flowcharts_tikz.tex}
% Fonts
\defaultfontfeatures{Scale=MatchLowercase, Ligatures=TeX}
% Define Semi-bold
\DeclareRobustCommand\sbseries{\fontseries{sb}\selectfont}
% Fonts for accessibility
\ifdefined\isaccessible
\setmainfont{Open Sans}[
Scale=MatchLowercase]
\else
\setmainfont{TeX Gyre Pagella}[Scale=1.0] % Or Palatino Linotype, etc.
% TODO not available on github CI
% \setmonofont{Andale Mono}[Scale=MatchLowercase]
\fi
% Opens Sans in both case..
\setsansfont{Open Sans}[
Scale=MatchLowercase,
FontFace = {sb}{it}{* Semibold Italic},
FontFace = {sb}{n}{*-semibold}]
\usepackage{layouts}
\newcommand{\printsizes}{
Width: \printinunitsof{in}\prntlen{\textwidth}in \\
Height: \printinunitsof{in}\prntlen{\textheight}in
}
\begin{document}
\begin{figure}[!htb]
\centering
\input{figures/fig-starter-process.tex}
\caption[Dough strength over time with kneading]{A schematic visualization
of gluten development in sourdoughs with different kneading techniques.
A combination of techniques can be utilized to achieve maximum dough
strength.}%
\label{fig:dough-strength-sourdough}
\end{figure}
\end{document}

View File

@@ -0,0 +1,75 @@
% Copyright 2021-2024 by Michal Hoftich
% Copyright 2006 by Till Tantau
%
% This file may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU Public License.
%
% See the file doc/generic/pgf/licenses/LICENSE for more details.
\ProvidesFileRCS{pgfsys-dvisvgm4ht.def}
% Driver commands for tex4ht
%
% Load common pdf commands:
%
% we switched to dvisvgm driver by default. it supports patterns and other features
% dvips driver is available through the tikz+ option. It doesn't support everything,
% but it worked better with nested pictures in the past.
\ifdefined\ifOption
\ifOption{tikz+}{\input pgfsys-dvips.def}{\input pgfsys-dvisvgm.def}
\else
% load the dvips driver by default
\input pgfsys-dvisvgm.def
\fi
\catcode`\:=11%
% we must call most of these redefinitions in \AtBeginDocument, because \HLet is available
% only at that moment
\AtBeginDocument{%
% configure the output picture format to svg, as it will require dvisvgm
% post processing.
\Configure{Picture}{.svg}%
% insert picture hooks to pgfsys commands
% these redefinitions are usually called only with the \tikz command,
% they are ignored in tikzpicture environment
\def\:tempa#1{%
\texfourht@tikz@begin%
\csname o:pgfsys@typesetpicturebox:\endcsname{#1}
\texfourht@tikz@end%
}
\HLet\pgfsys@typesetpicturebox\:tempa
% we must remove Picture-alt in \pgfsys@beginpicture, because it can result in alt text included in the image
\def\:tempa{\Configure{Picture-alt}{}\texfourht@tikz@begin\o:pgfsys@beginpicture:}
\HLet\pgfsys@beginpicture\:tempa
\let\o:pgfsys@endpicture:\pgfsys@endpicture
\def\:tempa{\o:pgfsys@endpicture:}
\HLet\pgfsys@endpicture\:tempa
% start picture around TikZ and PGF environments
\ConfigureEnv{tikzpicture}{\begingroup\texfourht@tikz@begin}{\texfourht@tikz@end\endgroup}{}{}%
\ConfigureEnv{pgfpicture}{\begingroup\texfourht@tikz@begin}{\texfourht@tikz@end\endgroup}{}{}%
}
\def\texfourht@tikz@begin{
\protect\csname nested:math\endcsname% support display math
\Picture*[\csname a:Picture-alt\endcsname]{}%
}
\def\texfourht@tikz@end{\EndPicture}
\catcode`\:=12%
\endinput
%%% Local Variables:
%%% mode: latex
%%% End:

View File

@@ -52,8 +52,9 @@
\DeclareRobustCommand\sbseries{\fontseries{sb}\selectfont}
% Fonts for accessibility
\ifdefined\isaccessible
\setmainfont{Open Sans}[
Scale=MatchLowercase]
\usepackage[mathrm=sym]{unicode-math}
\setmathfont{Fira Math}[Scale=MatchLowercase]
\setmainfont{Open Sans}[Scale=MatchLowercase]
\else
\setmainfont{TeX Gyre Pagella}[Scale=1.0] % Or Palatino Linotype, etc.
% TODO not available on github CI

View File

@@ -483,8 +483,6 @@ poolish
pre
preshape
preshaping
puré
puréd
purée
pâte
raffaella

View File

@@ -7,7 +7,7 @@ later time.
\end{quoting}
A summary can be found in Table~\ref{table:bread-storage}, with details and
explanation in th rest of this chapter.
explanation in the rest of this chapter.
\begin{table}[!htb]
\centering
\input{tables/table-storing-bread-overview.tex}
@@ -120,4 +120,4 @@ 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}.
response by almost 40\%~\cite{freezing+toasting+bread}.

View File

@@ -1,5 +1,3 @@
@import url('https://fonts.googleapis.com/css2?family=Open+Sans:wght@400;800&display=swap');
:root{
--ff-sans: 'Open Sans', sans-serif;
--fw-regular: 400;
@@ -147,7 +145,6 @@ nav.TOC a, nav.TOC a:visited{
/* *** Colors *** */
/* ************** */
body{
background-color: var(--c-beige);
}
@@ -254,6 +251,10 @@ figcaption.caption {
display: block;
}
.chapterToc a, .chapterToc, .likechapterToc a, .likechapterToc, .appendixToc a, .appendixToc, .addchapToc a {
font-weight: var(--fw-bold);
}
@media (max-width: 768px) {
.toggle-menu-label {
display: block;
@@ -317,7 +318,7 @@ figcaption.caption {
display: block;
color: #000;
font-size: 20px;
font-weight: bold;
font-weight: var(--fw-bold);
}
.chapterToc a, .sectionToc a, .subsectionToc a, .likechapterToc a {
@@ -498,7 +499,7 @@ blockquote {
border: 2px solid var(--c-black);
color: var(--c-black);
padding: 4px;
font-weight: bold;
font-weight: var(--fw-bold);
text-decoration: none;
}
.crosslinks-bottom a.prev {

View File

@@ -11,4 +11,26 @@
\Configure{AddCss}{book-ebook.css}
\Configure{CoverMimeType}{image/jpeg}
\CoverMetadata{cover/cover-page.jpg}
\AddToHook{env/tikzpicture/begin}{\fontfamily{opensans-TLF}\selectfont}
\Configure{@HEAD}{\HCode{
<style type="text/css">
@import url('https://fonts.cdnfonts.com/css/open-sans');
body{
font-family: 'Open Sans';
}
</style>}}
% Deal with chemical equations in a single svg
\ExplSyntaxOn
\def\standaloneenv#1{}
\pend:def\schemestart{\Picture+{}}
\append:def\CF_schemestop{\EndPicture}
\ExplSyntaxOff
\makeatletter
\def\texfourht@tikz@begin{
\protect\csname nested:math\endcsname% support display math
\Picture+[\csname a:Picture-alt\endcsname]{}%
}
\makeatother
\EndPreamble

View File

@@ -9,6 +9,14 @@
}}
\Configure{AddCss}{style.css}
\AddToHook{env/tikzpicture/begin}{\fontfamily{opensans-TLF}\selectfont}
\Configure{@HEAD}{\HCode{
<style type="text/css">
@import url('https://fonts.cdnfonts.com/css/open-sans');
body{
font-family: 'Open Sans';
}
</style>}}
\ConfigureEnv{titlepage}{\ifvmode\IgnorePar\fi\EndP\HCode{<main class="titlepage">}}{\ifvmode\IgnorePar\fi\EndP\HCode{</main>}}{}{}
% Mini TOC
@@ -39,5 +47,17 @@
}
\ConfigureToc{loc}{\HCode{<span class="lofToc">}}{\ }{}{\HCode{</span><br />}}
\ExplSyntaxOn
\def\standaloneenv#1{}
\pend:def\schemestart{\Picture+{}}
\append:def\CF_schemestop{\EndPicture}
\ExplSyntaxOff
\makeatletter
\def\texfourht@tikz@begin{
\protect\csname nested:math\endcsname% support display math
\Picture+[\csname a:Picture-alt\endcsname]{}%
}
\makeatother
\begin{document}
\EndPreamble

View File

@@ -405,7 +405,7 @@ your dough. The warmer the temperature, the faster the process; the colder, the
slower the process.
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 self-limiting: it stops when there is no
more food available. This can be compared to wine making where
the yeast ultimately sporulates and dies as ethanol levels increase. The ethanol creates an
environment that makes it impossible for other
@@ -448,7 +448,7 @@ explained earlier, your
bread dough is essentially a gigantic starter. The low inoculation rate allows
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
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 section).
This greatly simplifies the whole process.
\section{Autolysis}%
@@ -465,7 +465,7 @@ The overall time that flour and water are in contact is extended. Thus you get t
beneficial enzymatic reactions that improve the taste and characteristics of the
dough. I~do not recommend autolysis as it adds an unnecessary step to the
process. Instead, I~recommend the fermentolysis technique which will be covered in the
next chapter of this book.
next section of this book.
The effects of autolysis are very interesting. Try to mix just flour and
water and let that sit for a day. During the day, check the consistency of
@@ -615,7 +615,7 @@ by adding water and kneading again. This is a great trick to make
a more extensible dough with lower-gluten flour~\cite{bassinage+technique}.
When machine kneading a dough, opt for the same technique shown in
figure~\ref{fig:wheat-sourdough-kneading-process}. Initially opt for a low
flowchart~\ref{fig:wheat-sourdough-kneading-process}. Initially opt for a low
speed. This helps the homogenization process.
After waiting to allow the flour to soak up the water, proceed on a higher speed
setting. A good sign of a well-developed gluten network is
@@ -1563,7 +1563,7 @@ A reliable way to ensure consistent proofing is to opt for using a pH
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
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
value that creates the best bread for you. Once you have identified
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
to follow.
@@ -1610,7 +1610,7 @@ banneton should now be facing you.
\label{fig:artistic-scoring}
\end{figure}
The scoring cut for done at a \ang{45}~angle relative to the dough's
The scoring cut is done at a \ang{45}~angle relative to the dough's
surface slightly off the dough's center. With the \ang{45}~angle cut
the overlaying side will rise more in the oven than the other side.
This way you will achieve a so-called \emph{ear} on the final bread.

View File

@@ -15,13 +15,13 @@ push_docker_image: build_docker_image
docker push $(DOCKER_IMAGE):latest
# Books/website
build_serif_pdf:
$(DOCKER_CMD) "cd /opt/repo/book && make build_serif_pdf"
serif_pdf:
$(DOCKER_CMD) "cd /opt/repo/book && make serif_pdf"
build_ebook:
$(DOCKER_CMD) "cd /opt/repo/book && make build_ebook"
ebook:
$(DOCKER_CMD) "cd /opt/repo/book && make ebook"
build_pdf:
pdf:
$(DOCKER_CMD) "cd /opt/repo/book && make"
bake:
@@ -31,7 +31,7 @@ website:
$(DOCKER_CMD) "cd /opt/repo/book && make website"
booklet:
$(DOCKER_CMD) "cd /opt/repo/book && make build_booklet"
$(DOCKER_CMD) "cd /opt/repo/book && make booklet"
mrproper:
$(DOCKER_CMD) "cd /opt/repo/book && make mrproper"
@@ -48,3 +48,8 @@ print_os_version:
start_shell:
docker run -it -v $(PWD):/opt/repo $(DOCKER_IMAGE) /bin/bash
# Old names for backward compatibility
build_serif_pdf: serif_pdf
build_ebook: ebook
build_pdf: pdf