mirror of
https://github.com/hendricius/the-sourdough-framework
synced 2025-12-03 08:13:58 -06:00
Compare commits
19 Commits
95c3a91bee
...
main
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
17b667f4b4 | ||
|
|
93006f34c7 | ||
|
|
cc044c7776 | ||
|
|
505abb15b4 | ||
|
|
134e423277 | ||
|
|
91b073e0fd | ||
|
|
cef0d9c8f7 | ||
|
|
656404782a | ||
|
|
ea75a1ac8a | ||
|
|
9e4e03bcfa | ||
|
|
b783b1e274 | ||
|
|
fb5f526b2f | ||
|
|
8b83e1c5b6 | ||
|
|
25f91cd7a1 | ||
|
|
5bb5d8a48a | ||
|
|
f64fc55977 | ||
|
|
3e02af03ad | ||
|
|
7da9f5b0ad | ||
|
|
19df1546f0 |
56
.github/workflows/release-book-website.yml
vendored
56
.github/workflows/release-book-website.yml
vendored
@@ -65,15 +65,16 @@ jobs:
|
||||
run: |
|
||||
cd /app/book
|
||||
make -j -O bake
|
||||
- name: Release baked book to S3
|
||||
uses: shallwefootball/s3-upload-action@master
|
||||
- name: Copy book to downloads server
|
||||
uses: burnett01/rsync-deployments@7.0.2
|
||||
with:
|
||||
aws_key_id: ${{ secrets.AWS_KEY_ID }}
|
||||
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
|
||||
aws_bucket: ${{ secrets.AWS_BUCKET_BOOK }}
|
||||
source_dir: book/release
|
||||
destination_dir: release
|
||||
- name: Upload book Artifacts
|
||||
switches: "-avzr"
|
||||
remote_host: ${{ secrets.SSH_HOST }}
|
||||
remote_user: ${{ secrets.SSH_USERNAME }}
|
||||
remote_key: ${{ secrets.SSH_KEY }}
|
||||
path: "book/release/*"
|
||||
remote_path: "~/downloads/the-sourdough-framework/"
|
||||
- name: Upload book artifacts to GitHub
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: books
|
||||
@@ -81,36 +82,17 @@ jobs:
|
||||
book/book_serif/book.log
|
||||
book/book_serif/book.pdf
|
||||
book/book-epub/book.epub
|
||||
- name: Release baked website to S3
|
||||
uses: shallwefootball/s3-upload-action@master
|
||||
- name: Copy website to downloads server
|
||||
uses: burnett01/rsync-deployments@7.0.2
|
||||
with:
|
||||
aws_key_id: ${{ secrets.AWS_KEY_ID }}
|
||||
aws_secret_access_key: ${{ secrets.AWS_SECRET_ACCESS_KEY}}
|
||||
aws_bucket: ${{ secrets.AWS_BUCKET_WEBSITE }}
|
||||
source_dir: website/static_website_html
|
||||
destination_dir: static_html_root
|
||||
- name: Upload website Artifacts
|
||||
switches: "-avzr --delete"
|
||||
remote_host: ${{ secrets.SSH_HOST }}
|
||||
remote_user: ${{ secrets.SSH_USERNAME }}
|
||||
remote_key: ${{ secrets.SSH_KEY }}
|
||||
path: "website/static_website_html/*"
|
||||
remote_path: "~/the-sourdough-framework/"
|
||||
- name: Upload website artifacts to GitHub
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: website
|
||||
path: website/static_website_html
|
||||
invalidate-book-website-cache:
|
||||
needs: release-book-website
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Invalidate Cloudfront book cache
|
||||
uses: chetan/invalidate-cloudfront-action@v2
|
||||
env:
|
||||
DISTRIBUTION: ${{ secrets.CLOUDFRONT_DISTRIBUTION_BOOK }}
|
||||
PATHS: "/*"
|
||||
AWS_REGION: "us-east-1"
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
- name: Invalidate Cloudfront website cache
|
||||
uses: chetan/invalidate-cloudfront-action@v2
|
||||
env:
|
||||
DISTRIBUTION: ${{ secrets.CLOUDFRONT_DISTRIBUTION_WEBSITE }}
|
||||
PATHS: "/*"
|
||||
AWS_REGION: "us-east-1"
|
||||
AWS_ACCESS_KEY_ID: ${{ secrets.AWS_KEY_ID }}
|
||||
AWS_SECRET_ACCESS_KEY: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
|
||||
path: website/static_website_html
|
||||
4
.github/workflows/test-book-website.yml
vendored
4
.github/workflows/test-book-website.yml
vendored
@@ -41,7 +41,7 @@ jobs:
|
||||
run: |
|
||||
cd /app/book
|
||||
make -j -O serif ebook website
|
||||
- name: Upload book Artifacts
|
||||
- name: Upload book artifacts to GitHub
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: books
|
||||
@@ -49,7 +49,7 @@ jobs:
|
||||
book/book_serif/book.log
|
||||
book/book_serif/book.pdf
|
||||
book/book-epub/book.epub
|
||||
- name: Upload website Artifacts
|
||||
- name: Upload website artifacts to GitHub
|
||||
uses: actions/upload-artifact@v4
|
||||
with:
|
||||
name: website
|
||||
|
||||
@@ -229,7 +229,7 @@ During World~War~II the first packaged dry yeast was developed. This would
|
||||
ultimately allow bakeries and home bakers to make bread much faster and more
|
||||
consistently. Thanks to pure yeast, building industrial bread making machines
|
||||
was now possible. Provided you maintain the same temperature, same flour and
|
||||
yeast strains fermentation became precisely reproducible. This ultimately lead
|
||||
yeast strains fermentation became precisely reproducible. This ultimately led
|
||||
to the development of giga bakeries and flour blenders. The bakeries demanded
|
||||
the same flour from year to year to bake bread in their machines. For this
|
||||
reason, none of the supermarket flour you buy today is single origin. It is
|
||||
|
||||
152
book/makefile
152
book/makefile
@@ -7,8 +7,8 @@ CHECK_1 := lacheck
|
||||
CHECK_2 := chktex
|
||||
CONVERT_PIC := convert
|
||||
REDUCE_PIC := -resize '800x800>' \
|
||||
-strip -interlace Plane -gaussian-blur 0.05 -quality 85\% \
|
||||
-set colorspace Gray -separate -evaluate-sequence Mean
|
||||
-strip -interlace Plane -gaussian-blur 0.05 -quality 85\% \
|
||||
-set colorspace Gray -separate -evaluate-sequence Mean
|
||||
REDUCE_PIC_COLOR := -quality 80\%
|
||||
RSYNC := rsync -au --exclude 'book.epub' --exclude '*.jpg'
|
||||
GIT := git --no-pager
|
||||
@@ -30,26 +30,26 @@ endif
|
||||
# and building everything take a long time.
|
||||
.DEFAULT_GOAL := serif
|
||||
|
||||
# List all files that are dependencies {{{
|
||||
# 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 figures/fig-*.tex) figures/flowcharts_tikz.tex figures/vars.tex
|
||||
src_figures += $(wildcard plots/fig-*.tex) abbreviations.tex colors.tex
|
||||
src_recipes := $(wildcard recipes/*.tex)
|
||||
src_plots := $(wildcard plots/*.table)
|
||||
# }}}
|
||||
|
||||
# Actual book text and LaTeX code {{{
|
||||
src_tex := $(foreach directory, $(chapters), $(wildcard $(directory)/*.tex))
|
||||
src_tex += book.tex book_sans_serif.tex colors.tex abbreviations.tex
|
||||
src_tex += $(src_recipes) supporters.csv references.bib
|
||||
src_tex += sourdough.sty
|
||||
# }}}
|
||||
|
||||
tgt_figures := $(patsubst %.tex, %.png,$(src_figures))
|
||||
|
||||
# Photos {{{
|
||||
@@ -75,15 +75,17 @@ 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
|
||||
# Format specific configuration files
|
||||
ebook_src := $(src_all) tex4ebook.cfg book.mk4 book-ebook.css nameref.4ht
|
||||
|
||||
website_src := $(src_all) website.cfg style.css
|
||||
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
|
||||
ruby_pkg := ../website/Gemfile ../website/Gemfile.lock
|
||||
# }}}
|
||||
|
||||
# Internal build rules {{{
|
||||
# Flowcharts {{{
|
||||
# TODO: check if it works on github CI
|
||||
%.png: %.tex
|
||||
@@ -98,7 +100,7 @@ ruby_pkg := ../website/Gemfile ../website/Gemfile.lock
|
||||
ebb -x $<
|
||||
# }}}
|
||||
|
||||
# pdf {{{
|
||||
# Pdf {{{
|
||||
# Default rules for pdf, getting overwritten when built in a sub-directory
|
||||
%.pdf: %.tex
|
||||
$(LATEX) $<
|
||||
@@ -116,15 +118,15 @@ book_sans_serif/book_sans_serif.pdf: $(src_all)
|
||||
epub/%.epub: %.tex $(ebook_src) cover/cover-page.xbb
|
||||
$(EBOOK) $<
|
||||
|
||||
copy_ebook_files: build_ebook
|
||||
copy_ebook_files: ebook
|
||||
$(RSYNC) --exclude '*.png' epub_build/book-epub/ bw-book-epub/
|
||||
|
||||
# Now that we have built the ebook we will generate 2 more versions
|
||||
# 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
|
||||
# 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
|
||||
# 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
|
||||
@@ -151,7 +153,7 @@ low-res-book-epub/OEBPS/%.jpg: %.jpg
|
||||
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 ./
|
||||
#}}}
|
||||
# }}}
|
||||
|
||||
# Website {{{
|
||||
###################################
|
||||
@@ -181,33 +183,47 @@ website: html ../website/_bundle_install_done $(ruby_src)
|
||||
export_figures: pdf $(tgt_figures)
|
||||
cd figures/ && bash export_figures.sh
|
||||
# }}}
|
||||
# }}}
|
||||
|
||||
# Now with the targets {{{
|
||||
# Expected usual targets first
|
||||
# User level targets {{{
|
||||
# Build targets {{{
|
||||
.PHONY: all
|
||||
all: bake
|
||||
|
||||
# Finally actual project targets (i.e. build pdf and ebooks)
|
||||
# Finally actual project targets (i.e. build pdf and ebooks)
|
||||
.PHONY: pdf serif sans_serif ebook
|
||||
|
||||
pdf: serif sans_serif
|
||||
|
||||
serif: book_serif/book.pdf
|
||||
sans_serif: book_sans_serif/book_sans_serif.pdf
|
||||
|
||||
ebook: epub/book.epub
|
||||
bw_ebook: epub/bw_book.epub
|
||||
low_res_ebook: epub/low_res_book.epub
|
||||
# }}}
|
||||
|
||||
# We keep the old target names for backward compatibility
|
||||
build_pdf: pdf
|
||||
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 target names are disabled with helpful help message {{{
|
||||
build_pdf:
|
||||
@echo "build_pdf target is not supported anymore, please use make pdf"
|
||||
@exit
|
||||
build_serif_pdf:
|
||||
@echo "build_serif_pdf target is not supported anymore, please use make serif"
|
||||
@exit
|
||||
build_sans_serif_pdf:
|
||||
@echo "build_sans_serif_pdf target is not supported anymore, please use make sans_serif"
|
||||
@exit
|
||||
build_ebook:
|
||||
@echo "build_ebook target is not supported anymore, please use make ebook"
|
||||
@exit
|
||||
build_bw_ebook:
|
||||
@echo "build_bw_ebook target is not supported anymore, please use make bw_ebook"
|
||||
@exit
|
||||
build_low_res_ebook:
|
||||
@echo "build_low_res_ebook target is not supported anymore, please use make low_res_ebook"
|
||||
@exit
|
||||
# }}}
|
||||
|
||||
# top level releases rules
|
||||
# Top level releases rules {{{
|
||||
.PHONY: bake release_serif release_sans_serif
|
||||
bake: release_serif release_sans_serif website
|
||||
|
||||
@@ -225,7 +241,7 @@ release_serif: serif ebook bw_ebook low_res_ebook | release
|
||||
fi
|
||||
|
||||
release_sans_serif: sans_serif | release
|
||||
cp book_sans_serif/book_sans_serif.pdf release/TheBreadCode-The-Sourdough-Framework-sans-serif.pdf
|
||||
cp book_sans_serif/book_sans_serif.pdf release/TheBreadCode-The-Sourdough-Framework-sans-serif.pdf
|
||||
# }}}
|
||||
|
||||
# Clean up {{{
|
||||
@@ -243,12 +259,9 @@ clean_figures:
|
||||
clean_ebook_build:
|
||||
-rm epub_build/book*.{4ct,4tc,aux,bbl,bcf,blg,dvi,fdb_latexmk,fls,html}
|
||||
-rm epub_build/book*.{idv,lg,loc,log,ncx,run.xml,tmp,xref}
|
||||
-rm epub_build/{book.css,content.opf} epub_build/book-epub/mimetype
|
||||
-rm epub_build/book*x.svg
|
||||
-rm epub_build/book.css
|
||||
-rm epub_build/content.opf
|
||||
-rm epub_build/book-epub/mimetype
|
||||
-rm -rf epub_build/book-epub/META-INF
|
||||
-rm -rf epub_build/book-epub/OEBPS
|
||||
-rm -rf epub_build/book-epub/META-INF epub_build/book-epub/OEBPS
|
||||
|
||||
clean_website_build:
|
||||
-rm website_build/book*.{4ct,4tc,aux,bbl,bcf,blg,dvi,fdb_latexmk,fls,html}
|
||||
@@ -265,15 +278,11 @@ mrproper: clean
|
||||
$(CLEAN) -C -output-directory=book_serif book.tex
|
||||
$(CLEAN) -C -output-directory=book_sans_serif book_sans_serif.tex
|
||||
-rm figures/*.png
|
||||
-rm -rf epub/
|
||||
-rm -rf release/
|
||||
-rm -rf book_serif/
|
||||
-rm -rf book_sans_serif/
|
||||
-rm -rf *book-epub/
|
||||
-rm -rf epub_build/
|
||||
-rm -rf website_build/
|
||||
-rm -rf $(website_dir)
|
||||
#}}}
|
||||
-rm -rf book_serif/ book_sans_serif/
|
||||
-rm -rf epub/ epub_build/ bw-book-epub/ low-res-book-epub/
|
||||
-rm -rf website_build/ $(website_dir)
|
||||
# }}}
|
||||
|
||||
# Help {{{
|
||||
###################################
|
||||
@@ -333,8 +342,9 @@ help:
|
||||
@echo ""
|
||||
@echo "set DEBUG i.e make DEBUG=1 ebook to add debug flags to commands"
|
||||
# }}}
|
||||
# }}}
|
||||
|
||||
# Debug Stuff from now on {{{
|
||||
# Debug Stuff {{{
|
||||
###################################
|
||||
|
||||
# Verify your spelling and TeX warnings {{{
|
||||
@@ -360,54 +370,54 @@ spell-check: $(src_tex) spelling_exceptions.txt
|
||||
.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...
|
||||
quick: # run latex only once no biber, no references etc...
|
||||
$(LATEX) -e '$$max_repeat=1' -halt-on-error -output-directory=book_serif book.tex
|
||||
|
||||
quick_ebook: cover/cover-page.xbb # run latex only once no biber, ref etc...
|
||||
quick_ebook: cover/cover-page.xbb # run latex only once no biber, ref etc...
|
||||
$(EBOOK) --mode draft book.tex
|
||||
|
||||
show_tools_version: # Show version of tools used on the build machine {{{
|
||||
- $(GIT) log -1 --pretty=%B
|
||||
show_tools_version: # Show version of tools used on the build machine {{{
|
||||
-$(GIT) log -5 --pretty="%h: %s by %an on %as"
|
||||
@echo ""
|
||||
- uname -a
|
||||
-uname -a
|
||||
@echo ""
|
||||
- $(SHELL) --version
|
||||
-$(SHELL) --version
|
||||
@echo ""
|
||||
- @echo "PATH:"
|
||||
- @echo $(PATH) | tr ':' '\n'
|
||||
-@echo "PATH:"
|
||||
-@echo $(PATH) | tr ':' '\n'
|
||||
@echo ""
|
||||
- latexmk --version
|
||||
-latexmk --version
|
||||
@echo ""
|
||||
- lualatex --version
|
||||
-lualatex --version
|
||||
@echo ""
|
||||
- tex4ebook --version
|
||||
-tex4ebook --version
|
||||
@echo ""
|
||||
- make4ht --version
|
||||
-make4ht --version
|
||||
@echo ""
|
||||
- tidy -version
|
||||
-tidy -version
|
||||
@echo ""
|
||||
- dvisvgm --version
|
||||
-dvisvgm --version
|
||||
@echo ""
|
||||
- lacheck | head -5 | tail -1
|
||||
-lacheck | head -5 | tail -1
|
||||
@echo ""
|
||||
- chktex --version
|
||||
-chktex --version
|
||||
@echo ""
|
||||
- make --version
|
||||
-make --version
|
||||
@echo ""
|
||||
- biber -version
|
||||
-biber -version
|
||||
@echo ""
|
||||
- ruby --version
|
||||
-ruby --version
|
||||
@echo ""
|
||||
- $(CONVERT_PIC) --version
|
||||
-$(CONVERT_PIC) --version
|
||||
@echo ""
|
||||
- rsync --version
|
||||
-rsync --version
|
||||
# }}}
|
||||
|
||||
# You can find the value of variable X with the following command:
|
||||
# make print-X
|
||||
print-%: ; @echo $* = $($*) # Print a makefile variable
|
||||
print-%: ; @echo $* = $($*) # Print a makefile variable
|
||||
|
||||
printvars: # Print all variables in the makefile
|
||||
printvars: # Print all variables in the makefile
|
||||
@$(foreach V,$(sort $(.VARIABLES)), \
|
||||
$(if $(filter-out environ% default automatic, \
|
||||
$(origin $V)),$(info $V=$($V) ($(value $V)))))
|
||||
|
||||
238
book/nameref.4ht
Normal file
238
book/nameref.4ht
Normal file
@@ -0,0 +1,238 @@
|
||||
% nameref.4ht (2024-06-15-13:36), generated from tex4ht-4ht.tex
|
||||
% Copyright 2005-2009 Eitan M. Gurari
|
||||
% Copyright 2009-2024 TeX Users Group
|
||||
%
|
||||
% This work may be distributed and/or modified under the
|
||||
% conditions of the LaTeX Project Public License, either
|
||||
% version 1.3c of this license or (at your option) any
|
||||
% later version. The latest version of this license is in
|
||||
% http://www.latex-project.org/lppl.txt
|
||||
% and version 1.3c or later is part of all distributions
|
||||
% of LaTeX version 2005/12/01 or later.
|
||||
%
|
||||
% This work has the LPPL maintenance status "maintained".
|
||||
%
|
||||
% The Current Maintainer of this work
|
||||
% is the TeX4ht Project <http://tug.org/tex4ht>.
|
||||
%
|
||||
% If you modify this program, changing the
|
||||
% version identification would be appreciated.
|
||||
\immediate\write-1{version 2024-06-15-13:36}
|
||||
|
||||
\let\NR:Type\relax
|
||||
\let\ltx@label\label
|
||||
\def\prf:label{{\ifx \NR:Title\:UnDef \a:newlabel{\@currentlabelname}\else \NR:Title\fi}%
|
||||
{\ifx \NR:Type\relax \else \NR:Type .1\fi}{}}%
|
||||
|
||||
\append:defI\label{\let\NR:Title\undefined}
|
||||
|
||||
\let\NR:StartSec\:StartSec
|
||||
\let\NR:no@sect\no@sect
|
||||
\def\no@sect#1#2#3#4#5#6[#7]#8{\gdef\NR:Title{\a:newlabel{#7}}%
|
||||
\gdef\NR:Type{#1}%
|
||||
\NR:no@sect{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}}
|
||||
\def\:StartSec#1#2#3{%
|
||||
\gdef\NR:Title{\a:newlabel{#3}}%
|
||||
\gdef\NR:Type{#1}%
|
||||
\NR:StartSec{#1}{#2}{#3}%
|
||||
}
|
||||
|
||||
\def\:tempc#1#2#3#4#5#6[#7]#8{%
|
||||
\gdef\NR:Title{\a:newlabel{#7}}%
|
||||
\gdef\NR:Type{#1}%
|
||||
\o:NR@sect:{#1}{#2}{#3}{#4}{#5}{#6}[{#7}]{#8}}
|
||||
\HLet\NR@sect\:tempc
|
||||
|
||||
\def\:tempc#1#2#3#4#5{%
|
||||
\gdef\NR:Title{\a:newlabel\ssect:ttl}%
|
||||
\gdef\NR:Type{#1}%
|
||||
\o:NR@ssect:{#1}{#2}{#3}{#4}{#5}%
|
||||
}
|
||||
\HLet\NR@ssect\:tempc
|
||||
|
||||
\def\:tempc[#1]#2{%
|
||||
\gdef\NR:Title{\a:newlabel{#1}}%
|
||||
\gdef\NR:Type{part}%
|
||||
\o:no@part:[{#1}]{#2}}
|
||||
|
||||
% this definition clashes with asmart and amsproc classes, so we
|
||||
% need to skip if these are active
|
||||
\@ifundefined{opt@amsart.cls}{%
|
||||
\@ifundefined{opt@amsproc.cls}{%
|
||||
\HLet\no@part\:tempc
|
||||
}{}}{}
|
||||
|
||||
|
||||
\def\:tempc#1{%
|
||||
\gdef\NR:Title{\a:newlabel{#1}}%
|
||||
\gdef\NR:Type{part}%
|
||||
\o:no@spart:{#1}}
|
||||
\HLet\no@spart\:tempc
|
||||
|
||||
\def\:tempc[#1]#2{%
|
||||
\gdef\NR:Title{\a:newlabel{#1}}%
|
||||
\gdef\NR:Type{chapter}%
|
||||
\o:NR@chapter:[{#1}]{#2}}
|
||||
\HLet\NR@chapter\:tempc
|
||||
|
||||
\def\:tempc#1{%
|
||||
\gdef\NR:Title{\a:newlabel\sch:ttl}%
|
||||
\o:NR@schapter:{#1}%
|
||||
\gdef\NR:Type{chapter}%
|
||||
}
|
||||
\HLet\NR@schapter\:tempc
|
||||
|
||||
\let\o:NR@@caption\@caption
|
||||
|
||||
\ifdefined\scr@makechapterhead
|
||||
% fixes for Komascript
|
||||
\def\:tempa[#1]#2{%
|
||||
\gdef\NR:Title{\a:newlabel{#1}}%
|
||||
\gdef\NR:Type{chapter}%
|
||||
\o:@chapter:[#1]{#2}%
|
||||
}
|
||||
\HLet\@chapter\:tempa
|
||||
|
||||
\def\:tempa#1{%
|
||||
\gdef\NR:Title{\a:newlabel{#1}}%
|
||||
\gdef\NR:Type{chapter}%
|
||||
\o:@schapter:{#1}%
|
||||
}
|
||||
\HLet\@schapter\:tempa
|
||||
|
||||
\fi
|
||||
%
|
||||
%
|
||||
% Keith Andrews <kandrews@iicm.edu> reported that \@captype as
|
||||
% \NR:Type threw an undefined control sequence error. I think
|
||||
% \@currenvir is safe, there is nothing special about \@captype.
|
||||
%
|
||||
% use of \index and \label inside caption results in a fatal error
|
||||
% we need to disable them in \NR:Title
|
||||
|
||||
% there can be more problematic commands, so we provide a configuration
|
||||
% that can be used multiple times - the default value fixes known commands
|
||||
% but a user can add more of them
|
||||
|
||||
\def\a:captioncommandsfix{}
|
||||
\NewConfigure{CaptionCommandsFix}[1]{\concat:config\a:captioncommandsfix{#1}}
|
||||
\Configure{CaptionCommandsFix}{
|
||||
\let\index\:gobble%
|
||||
\let\label\:gobble%
|
||||
\let\\\relax% causes issues when \centering is active
|
||||
}
|
||||
|
||||
\long\def\@caption#1[#2]{%
|
||||
\gdef\NR:Type{\@currenvir}%
|
||||
\begingroup%
|
||||
\a:captioncommandsfix
|
||||
\protected@xdef\NR:Title{\a:newlabel{#2}}%
|
||||
\endgroup%
|
||||
\o:NR@@caption{#1}[{#2}]%
|
||||
}
|
||||
|
||||
\let\o:NRorg@opargbegintheorem\@opargbegintheorem
|
||||
\def\@opargbegintheorem#1#2#3{%
|
||||
\gdef\NR:Title{\a:newlabel{#3}}%
|
||||
\gdef\NR:Type{\@currenvir}%
|
||||
\NR@gettitle{#3}%
|
||||
\defineautorefname{\@currenvir}{#1}%
|
||||
\o:NRorg@opargbegintheorem{#1}{#2}{#3}%
|
||||
}%
|
||||
|
||||
\let\o:NRorg@begintheorem\@begintheorem
|
||||
\def\@begintheorem#1#2{%
|
||||
\gdef\NR:Title{\a:newlabel{#1 #2}}%
|
||||
\gdef\NR:Type{\@currenvir}%
|
||||
\defineautorefname{\@currenvir}{#1}%
|
||||
\NR@gettitle{}%
|
||||
\o:NRorg@begintheorem{#1}{#2}%
|
||||
}%
|
||||
|
||||
% I don't know if this was useful for anything
|
||||
% but we cannot use it anymore
|
||||
% \AtBeginDocument{%
|
||||
\@ifpackageloaded{listings}{%
|
||||
\def\:tempc#1{%
|
||||
\gdef\NR:Title{\a:newlabel{listing}}%
|
||||
\gdef\NR:Type{lstlisting}%
|
||||
\o:NROrg@lst@MakeCaption:{#1}%
|
||||
\gdef\@currentlabelname{listing}}
|
||||
\HLet\NROrg@lst@MakeCaption\:tempc
|
||||
}{}%
|
||||
% bug [348]
|
||||
\def\:tempams{%
|
||||
\gdef\NR:Title{\a:newlabel{equation}}%
|
||||
\gdef\NR:Type{equation}%
|
||||
\gdef\@currentlabelname{equation}%
|
||||
}
|
||||
|
||||
% https://tex.stackexchange.com/a/581856/2891
|
||||
\@ifpackageloaded{caption}{
|
||||
\pend:defIII\caption@beginex{%
|
||||
\gdef\NR:Type{\@currenvir}%
|
||||
% handle \label and \index in Caption's package
|
||||
% version of \caption
|
||||
\begingroup%
|
||||
\a:captioncommandsfix
|
||||
\protected@xdef\NR:Title{\a:newlabel{##2}}%
|
||||
\endgroup%
|
||||
}
|
||||
}{}
|
||||
|
||||
|
||||
\@ifpackageloaded{amsmath}{%
|
||||
\Configure{@begin}{align}{\:tempams}
|
||||
\Configure{@begin}{multline}{\:tempams}
|
||||
\Configure{@begin}{equation}{\:tempams}
|
||||
\Configure{@begin}{boxed}{\:tempams}
|
||||
\Configure{@begin}{equations}{\:tempams}
|
||||
\Configure{@begin}{equation}{\:tempams}
|
||||
\Configure{@begin}{gather*}{\:tempams}
|
||||
\Configure{@begin}{gather}{\:tempams}
|
||||
\Configure{@begin}{genfrac}{\:tempams}
|
||||
\Configure{@begin}{measure@}{\:tempams}
|
||||
\Configure{@begin}{multline*}{\:tempams}
|
||||
\Configure{@begin}{multline}{\:tempams}
|
||||
\Configure{@begin}{overset}{\:tempams}
|
||||
\Configure{@begin}{smallmatrix}{\:tempams}
|
||||
\Configure{@begin}{split}{\:tempams}
|
||||
\Configure{@begin}{subarray}{\:tempams}
|
||||
\Configure{@begin}{substack}{\:tempams}
|
||||
\Configure{@begin}{underset}{\:tempams}
|
||||
\Configure{@begin}{xleftarrow}{\:tempams}
|
||||
\Configure{@begin}{xrightarrow}{\:tempams}
|
||||
}{
|
||||
\Configure{@begin}{equation}{\:tempams}
|
||||
}
|
||||
|
||||
\let\T:ref=\::ref
|
||||
\def\::ref{\@ifstar{\protect\T@ref}{\protect\T@ref}}
|
||||
\def\T@ref#1{%
|
||||
\@safe@activestrue%
|
||||
\let\::ref\T:ref%
|
||||
\expandafter\@setref\csname r@#1\endcsname\@firstoffive{#1}%
|
||||
\def\::ref{\@ifstar{\protect\T@ref}{\protect\T@ref}}%
|
||||
\@safe@activesfalse%
|
||||
}
|
||||
|
||||
\gdef\defineautorefname#1#2{%
|
||||
\expandafter\gdef\csname #1autorefname\endcsname{#2}}
|
||||
\defineautorefname{theorem}{Theorem}
|
||||
|
||||
\Configure{newlabel}
|
||||
{\csname cur:th\endcsname \csname :currentlabel\endcsname}
|
||||
{\string\csname\space :autoref\string\endcsname
|
||||
{\NR:Type}#1}
|
||||
|
||||
\ifx \@currentlabelname\:UnDef
|
||||
\let\@currentlabelname\empty
|
||||
\fi
|
||||
|
||||
\pend:defIII\@setref{\edef\RefArg{##3}}
|
||||
\append:defIII\@setref{\let\:autoref\:gobble}
|
||||
\let\:autoref\:gobble
|
||||
|
||||
|
||||
\Hinput{nameref}
|
||||
\endinput
|
||||
@@ -4,7 +4,7 @@
|
||||
In this chapter you will learn how to make your
|
||||
own sourdough starter, but before doing so you will
|
||||
quickly learn about baker's math. Don't worry,
|
||||
it's a very simple way how to write a recipe which
|
||||
it's a very simple way to write a recipe which
|
||||
is cleaner and more scalable. Once you get the hang
|
||||
of it you will want to write every recipe this way.
|
||||
You will learn to understand the signs indicating
|
||||
@@ -125,7 +125,7 @@ values are just shown as a reference.
|
||||
Don't use chlorinated water when setting up your starter.
|
||||
Ideally, you should use bottled water. In certain regions
|
||||
like Germany, tap water is perfectly fine. Chlorine is added
|
||||
to water as a disinfectant to kill microorganisms, you will
|
||||
to water as a disinfectant to kill microorganisms; you will
|
||||
not be able to grow a starter with chlorinated water.
|
||||
|
||||
In this process, the hydration of your starter is \qty{100}{\percent}.
|
||||
|
||||
@@ -300,7 +300,7 @@ Similar to baking too hot, when baking without enough steam, your dough's crust
|
||||
forms too quickly. It's hard to spot the difference between the two mistakes.
|
||||
I~typically first ask about the temperature and then about the steaming technique
|
||||
to determine what might be wrong with the baking process. Too little steam can
|
||||
typically be spotted by having a thick crust around all around your dough paired
|
||||
typically be spotted by having a thick crust all around your dough paired
|
||||
with large alveoli towards the edges.
|
||||
|
||||
The steam essentially prevents the Maillard reaction from happening too quickly
|
||||
|
||||
@@ -1 +1 @@
|
||||
3.3.7
|
||||
3.3.8
|
||||
|
||||
@@ -23,7 +23,7 @@ DEPENDENCIES
|
||||
pry
|
||||
|
||||
RUBY VERSION
|
||||
ruby 3.3.7p123
|
||||
ruby 3.3.8
|
||||
|
||||
BUNDLED WITH
|
||||
2.4.12
|
||||
|
||||
Reference in New Issue
Block a user