summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorKarl Berry <karl@freefriends.org>2018-12-03 22:33:47 +0000
committerKarl Berry <karl@freefriends.org>2018-12-03 22:33:47 +0000
commitf855360800d3dd036378f102ca41cf5fa3e87db1 (patch)
treee2f8e6d516f187985f1b3b37a9e0ea84cf04536a
parent6f3b3d36a2d2b7a83e71a012d0b95e877fdf62fb (diff)
makecookbook (3dec18)
git-svn-id: svn://tug.org/texlive/trunk@49311 c570f23f-e606-0410-a88d-b1316a301751
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/README.old109
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/README.txt110
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/makecookbook-doc.pdfbin0 -> 292770 bytes
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/makecookbook-doc.tex1819
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-idxstyle.ist16
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-lettrine.cfl44
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-preamble.tex762
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/img/image-a.jpgbin0 -> 12904 bytes
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/img/image-b.jpgbin0 -> 12940 bytes
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/makecookbook.pdfbin0 -> 248344 bytes
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/makecookbook.tex24
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-chapterA.tex413
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-chapterB.tex121
-rw-r--r--Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-frontmatter.tex66
-rwxr-xr-xMaster/tlpkg/bin/tlpkg-ctan-check3
-rw-r--r--Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc2
-rw-r--r--Master/tlpkg/tlpsrc/collection-publishers.tlpsrc1
-rw-r--r--Master/tlpkg/tlpsrc/makecookbook.tlpsrc0
18 files changed, 3488 insertions, 2 deletions
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/README.old b/Master/texmf-dist/doc/lualatex/makecookbook/README.old
new file mode 100644
index 00000000000..4e81ac46626
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/README.old
@@ -0,0 +1,109 @@
+VERSION
+
+This is the README file for the MAKECOOKBOOK bundle, version 0.85 dated
+2018-12-02.
+
+BRIEF DESCRIPTION
+
+The MAKECOOKBOOK bundle contains the files needed to create (using
+LuaTex) a nice quality family cookbook in a form ready to submit to a
+print-on-demand printer. Modifiable choices have been made regarding
+standard book features such as trim size, margins, headers/footers,
+chapter heading formatting, front matter (copyright page, table of
+contents, etc.) and back matter (recipe index). Commands and environments
+have been created to format the food stories and recipes. The user will
+need to: (1) supply their own food stories and recipes(!), and (2) select
+(install if necessary) the needed OpenType fonts as briefly discussed
+below and further described in the documentation. Please note that no new
+document class or package is included here. Rather, we provide a
+modifiable preamble and a small number of other files that, together,
+fully support creation of all of the internal pages of a cookbook (i.e.,
+everything except the cover art).
+
+COPYRIGHT AND LICENSE
+
+Copyright 2018 Terrence P. Murphy and Rosalie A. D’Amico
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License (“LPPL”), either version 1.3c of this
+license or (at your option) any later version. The latest version of this
+license is at:
+
+ http://www.latex-project.org/lppl.txt
+
+This work is author-maintained and consists of the files listed in the
+FILES section of this README file.
+
+CHANGE HISTORY
+
+This is the initial version 0.85, dated 2018-12-02.
+
+MAINTENANCE
+
+Please report bugs or request features to Terrence P. Murphy:
+ latex@rd-tpm.com
+
+FILES
+
+This work consists of the following files:
+
+README this file
+makecookbook-doc.tex documentation file
+makecookbook-doc.pdf PDF of the above
+makecookbook.tex the “root” cookbook file
+makecookbook.pdf PDF of the cookbook
+cb-preamble.tex the preamble for the cookbook
+cb-lettrine.cfl config file for the lettrine package
+cb-idxstyle.ist config file for makeindex/imakeidx
+cb-frontmatter.tex the cookbook front matter
+cb-chapterA.tex a sample cookbook chapter
+cb-chapterB.tex a sample cookbook chapter
+cb-imageA.jpg a sample image (from mwe package)
+cb-imageB.jpg a sample image (from mwe package)
+
+FILE DIRECTORIES
+
+In the CTAN zip archive, the above files are organized into directories
+and subdirectories as follows:
+
+makecookbook/ The top level makecookbook package directory
+| README
+| makecookbook-doc.tex
+| makecookbook-doc.pdf
+|
+|--- mycookbook/
+ | makecookbook.tex
+ | makecookbook.pdf
+ | cb-preamble.tex
+ | cb-lettrine.cfl
+ | cb-idxstyle.ist
+ |
+ |--- tex/
+ | cb-frontmatter.tex
+ | cb-chapterA.tex
+ | cb-chapterB.tex
+ |
+ |--- img/
+ cb-imageA.jpg
+ cb-imageB.jpg
+
+As described in the documentation, the idea is that the mycookbook/
+directory will be the root directory of your cookbook project.
+All of your cookbook chapters will be held in mycookbook/tex/
+All of your cookbook images will be held in mycookbook/img/
+
+FONTS
+
+The MAKECOOKBOOK bundle assumes you have installed the three fonts
+listed below. (All are OpenType, including TrueType, and all are
+licensed under the SIL Open Font License, Version 1.1). To have a
+successful compile "out of the box", these fonts must be installed
+on your system:
+
+SERIF-------> EB Garamond (version from Google Fonts)
+SANS SERIF--> Lato (version from http://www.latofonts.com)
+SCRIPT------> Italianno (version from Google Fonts)
+
+As described in the documentation, you can easily replace those three
+fonts with your favorite serif, sans serif and script fonts, so long
+as your replacement fonts have certain required font features.
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/README.txt b/Master/texmf-dist/doc/lualatex/makecookbook/README.txt
new file mode 100644
index 00000000000..9f90046ac75
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/README.txt
@@ -0,0 +1,110 @@
+VERSION
+sdfsfsf
+
+This is the README file for the MAKECOOKBOOK bundle, version 0.85 dated
+2018-12-02.
+
+BRIEF DESCRIPTION
+
+The MAKECOOKBOOK bundle contains the files needed to create (using
+LuaTex) a nice quality family cookbook in a form ready to submit to a
+print-on-demand printer. Modifiable choices have been made regarding
+standard book features such as trim size, margins, headers/footers,
+chapter heading formatting, front matter (copyright page, table of
+contents, etc.) and back matter (recipe index). Commands and environments
+have been created to format the food stories and recipes. The user will
+need to: (1) supply their own food stories and recipes(!), and (2) select
+(install if necessary) the needed OpenType fonts as briefly discussed
+below and further described in the documentation. Please note that no new
+document class or package is included here. Rather, we provide a
+modifiable preamble and a small number of other files that, together,
+fully support creation of all of the internal pages of a cookbook (i.e.,
+everything except the cover art).
+
+COPYRIGHT AND LICENSE
+
+Copyright 2018 Terrence P. Murphy and Rosalie A. D'Amico
+
+This work may be distributed and/or modified under the conditions of the
+LaTeX Project Public License ("LPPL"), either version 1.3c of this
+license or (at your option) any later version. The latest version of this
+license is at:
+
+ http://www.latex-project.org/lppl.txt
+
+This work is author-maintained and consists of the files listed in the
+FILES section of this README file.
+
+CHANGE HISTORY
+
+This is the initial version 0.85, dated 2018-12-02.
+
+MAINTENANCE
+
+Please report bugs or request features to Terrence P. Murphy:
+ latex@rd-tpm.com
+
+FILES
+
+This work consists of the following files:
+
+README this file
+makecookbook-doc.tex documentation file
+makecookbook-doc.pdf PDF of the above
+makecookbook.tex the "root" cookbook file
+makecookbook.pdf PDF of the cookbook
+cb-preamble.tex the preamble for the cookbook
+cb-lettrine.cfl config file for the lettrine package
+cb-idxstyle.ist config file for makeindex/imakeidx
+cb-frontmatter.tex the cookbook front matter
+cb-chapterA.tex a sample cookbook chapter
+cb-chapterB.tex a sample cookbook chapter
+cb-imageA.jpg a sample image (from mwe package)
+cb-imageB.jpg a sample image (from mwe package)
+
+FILE DIRECTORIES
+
+In the CTAN zip archive, the above files are organized into directories
+and subdirectories as follows:
+
+makecookbook/ The top level makecookbook package directory
+| README
+| makecookbook-doc.tex
+| makecookbook-doc.pdf
+|
+|--- mycookbook/
+ | makecookbook.tex
+ | makecookbook.pdf
+ | cb-preamble.tex
+ | cb-lettrine.cfl
+ | cb-idxstyle.ist
+ |
+ |--- tex/
+ | cb-frontmatter.tex
+ | cb-chapterA.tex
+ | cb-chapterB.tex
+ |
+ |--- img/
+ cb-imageA.jpg
+ cb-imageB.jpg
+
+As described in the documentation, the idea is that the mycookbook/
+directory will be the root directory of your cookbook project.
+All of your cookbook chapters will be held in mycookbook/tex/
+All of your cookbook images will be held in mycookbook/img/
+
+FONTS
+
+The MAKECOOKBOOK bundle assumes you have installed the three fonts
+listed below. (All are OpenType, including TrueType, and all are
+licensed under the SIL Open Font License, Version 1.1). To have a
+successful compile "out of the box", these fonts must be installed
+on your system:
+
+SERIF-------> EB Garamond (version from Google Fonts)
+SANS SERIF--> Lato (version from http://www.latofonts.com)
+SCRIPT------> Italianno (version from Google Fonts)
+
+As described in the documentation, you can easily replace those three
+fonts with your favorite serif, sans serif and script fonts, so long
+as your replacement fonts have certain required font features.
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/makecookbook-doc.pdf b/Master/texmf-dist/doc/lualatex/makecookbook/makecookbook-doc.pdf
new file mode 100644
index 00000000000..aa5ba6225ed
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/makecookbook-doc.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/makecookbook-doc.tex b/Master/texmf-dist/doc/lualatex/makecookbook/makecookbook-doc.tex
new file mode 100644
index 00000000000..ad4906620e4
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/makecookbook-doc.tex
@@ -0,0 +1,1819 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LICENSE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Copyright 2018 Terrence P. Murphy and Rosalie D'Amico.
+% This file may be distributed and/or modified under the conditions of the LaTeX Project
+% Public License (“LPPL”), either version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is at:
+% http://www.latex-project.org/lppl.txt.
+% This file is author-maintained and is one of the files that, collectively, make up the
+% MAKECOOKBOOK bundle available at https://ctan.org/pkg/makecookbook
+% For additional information, please see the associated README file.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\documentclass[10pt]{article}
+\emergencystretch 3em
+\usepackage{enumitem,multicol,xcolor, textcomp, xparse, fancyvrb, array, graphicx}
+
+\usepackage{ifluatex, ifxetex}
+\ifluatex
+ \usepackage{fontspec}
+\else
+ \ifxetex
+ \usepackage{fontspec}
+ \else
+ \usepackage[T1]{fontenc}
+ \usepackage{lmodern}
+ \fi
+\fi
+
+\usepackage{geometry}
+\geometry{
+ inner=1.0in,
+ outer=1.0in,
+ top=0.75in,
+ bottom=1in,
+ nomarginpar,
+ footskip=40pt}
+
+\usepackage{titlesec}
+\titlespacing{\subsubsection}{15pt}{5pt}{5pt}
+
+\usepackage{chngcntr}
+%\counterwithin*{section}{part}
+
+\newcommand{\Cmd}[1]{\texttt{\textbackslash{}#1}}
+
+\NewDocumentCommand \latex{o}{\IfNoValueTF{#1}{\LaTeX{} }{\LaTeX{}#1}}%
+\NewDocumentCommand \tex{o}{\IfNoValueTF{#1}{\TeX{} }{\TeX{}#1}}%
+\NewDocumentCommand \pdftex{o}{\IfNoValueTF{#1}{pdfTeX }{pdfTeX#1}}%
+\NewDocumentCommand \luatex{o}{\IfNoValueTF{#1}{LuaTeX }{LuaTeX#1}}%
+\NewDocumentCommand \xetex{o}{\IfNoValueTF{#1}{XeTeX }{XeTeX#1}}%
+
+\NewDocumentCommand \pkg{m}{\texttt{#1}}
+\NewDocumentCommand \boldit{m} {\textbf{\textit{#1}}}
+
+\NewDocumentCommand \RedText{+m}{{{\color{red} #1}}}%
+\NewDocumentCommand \Quote{m}{``#1"}
+\NewDocumentCommand \NL{}{\par}
+
+\newsavebox{\HatBox}
+\AtBeginDocument{\savebox{\HatBox}[\hatwidth]{\MakeChefHat}}%
+\NewDocumentCommand \ChefHat {}{\usebox{\HatBox}}%
+\NewDocumentCommand \ChefNote {}{{\raisebox{.4ex}{\ChefHat}}}
+
+%\newcommand*{\fvtextcolor}[2]{\textcolor{#1}{#2}} % for Verbatim/fancyvrb -- see Q 23091
+\DefineVerbatimEnvironment{MyVerbatim}{Verbatim}{fontsize=\small, fontseries=b, xleftmargin=17pt}
+\DefineVerbatimEnvironment{MyVerbatimNums}{Verbatim}{fontsize=\small, fontseries=b, numbers=left, xleftmargin=17pt}
+
+\usepackage{xcolor}
+\definecolor{clrBackSideNote}{rgb}{1.0, 0.95, 0.95} % red!5!white
+\definecolor{clrFrameSideNote}{rgb}{0.75, 0.0, 0.0} % red!75!black
+\definecolor{clrBackTip}{rgb}{1.0, 0.95, 0.95} % red!5!white
+\definecolor{clrFrameTip}{rgb}{0.75, 0.0, 0.0} % red!75!black
+\definecolor{clrBackCheffy}{rgb}{1.0, 1.0, 1.0} % white
+\definecolor{clrFrameCheffy}{rgb}{0.0, 0.0, 0.75} % blue!75!black
+\definecolor{clrBackNotes}{rgb}{1.0, 1.0, 1.0} % white
+\definecolor{clrFrameNotes}{rgb}{0.0, 0.75, 0.0} % green!75!black
+\definecolor{clrHyperRef}{cmyk}{0.00, 1.00, 1.00, 0.00} % true red
+
+\usepackage{tcolorbox}
+\tcbset{fonttitle=\rmfamily\large\bfseries}
+
+\NewDocumentEnvironment{SideNote}{+m}
+{
+\begin{tcolorbox}[colback=clrBackSideNote,colframe=clrFrameSideNote, title=Side Note]
+ {#1}%
+\end{tcolorbox}
+}
+
+\NewDocumentEnvironment{Tip}{+m}
+{
+\begin{tcolorbox}[colback=clrBackTip,colframe=clrFrameTip, title=Food for Thought]
+ {#1}%
+\end{tcolorbox}
+}
+
+\NewDocumentEnvironment{Cheffy}{+m}
+{
+\begin{tcolorbox}[colback=clrBackCheffy,colframe=clrFrameCheffy, title=Let's Get Cheffy]
+ {#1}%
+\end{tcolorbox}
+}
+
+\NewDocumentEnvironment{ChefNotes}{+m}
+{
+\begin{tcolorbox}[colback=clrBackNotes,colframe=clrFrameNotes,title=Chefnotes]
+ \ChefNote{}{#1}%
+\end{tcolorbox}
+}
+
+\usepackage{xfrac}
+\def\fr#1/#2 {\sfrac{#1}{#2} }
+\def\frx#1/#2 {\sfrac{#1}{#2}}
+
+%************ TIKZ DRAWINGS ************************************************
+\usepackage{tikz}
+\usetikzlibrary{calc}
+
+\def\hatscale{0.05}
+\def\hatwidth{12.5pt}
+\NewDocumentCommand \MakeChefHat{}
+{
+ \begin{tikzpicture}[scale=\hatscale]
+ \coordinate (HA) at (1.27, 0.635);
+ \coordinate (HB) at (5.87375, 0);
+ \coordinate (HC) at (1.5825, 0.9475);
+ \coordinate (HD) at (5.77375, 0.15);
+ \coordinate (HE) at (1.5875,1.905);
+ \coordinate (HF) at (1.8,1.74625);
+ \coordinate (HG) at (6.0325, 1.27);
+ \coordinate (HH) at (6.22, 1.33);
+ \coordinate (HI) at (6.45, 2.18);
+ \coordinate (HJ) at (6.35, 2.70);
+ \coordinate (HK) at (8.5725, 3.97);
+ \coordinate (HL) at (6.03, 4.7625);
+ \coordinate (HM) at (6.03, 3.651);
+ \coordinate (HN) at (2.2225, 5.3975);
+ \coordinate (HO) at (0.159, 4.603);
+ \coordinate (HP) at (1.587, 3.55);
+ \coordinate (HQ) at (2.5, 4.7625);
+ \coordinate (HR) at (2.778, 2.08);
+ \coordinate (HS) at (2.7, 4.1275);
+ \coordinate (HT) at (4.0, 1.98);
+ \coordinate (HU) at (4.286, 3.4925);
+ \coordinate (HV) at (5.3, 1.7);
+ \coordinate (HW) at (5.55, 2.85);
+ \coordinate (HX) at (4.286, 5.0);
+ %
+ \path[fill=black] (HA) to [bend left=20] (HB) to (HD) to [bend right=20] (HC) to (HA);
+ \path[fill=black] (HA) to (HC) to (HF) to (HE) to (HA);
+ \path[fill=black] (HE) to (HF) to [bend left=20] (HG) to (HH) to [bend right=20] (HE);
+ \path[fill=black] (HB) to (HD) to (HG) to (HH) to (HB);
+ \path[fill=black] (HH) to (HI) to (HJ) to (HG);
+ \draw[line width=5*\hatscale] (HI) to [bend right=50] (HK);
+ \draw[line width=5*\hatscale] (HK) to [bend right=50] (HL);
+ \draw[line width=5*\hatscale] (HL) to [bend right=45] (HX);
+ \draw[line width=5*\hatscale] ($(HX) + (0.4, -.4)$) to [bend right=45] (HN);
+ \path[fill=black] (HM) to ($(HL) -(0.15, 0)$) to ($(HL) + (0.15, 0)$) to (HM);
+ \draw[line width=5*\hatscale] (HN) to [bend right=50] (HO);
+ \draw[line width=5*\hatscale] (HO) to [bend right=50] (HP);
+ \draw[line width=5*\hatscale] ($(HF) +(0, 0.15)$) to (HP);
+ \path[fill=black] (HQ) to ($(HN) -(0.15, 0)$) to ($(HN) + (0.15, 0)$) to (HQ);
+ \path[fill=black] (HS) to ($(HR) -(0.15, 0)$) to ($(HR) + (0.15, 0)$) to (HS);
+ \path[fill=black] (HU) to ($(HT) -(0.15, 0)$) to ($(HT) + (0.15, 0)$) to (HU);
+ \path[fill=black] (HW) to ($(HV) -(0.15, 0)$) to ($(HV) + (0.15, 0)$) to (HW);
+ \end{tikzpicture}
+}
+
+\usepackage[bookmarks=true,colorlinks=true, allcolors=clrHyperRef]{hyperref}
+\usepackage{bookmark}
+% the following must be run AFTER hyperref has changed \counterwithin
+\counterwithin*{section}{part}
+
+\pdfstringdefDisableCommands{% see Q 10555
+ \def\latex{LaTeX }%
+ \def\Quote#1{"#1"}%
+ \def\pkg#1{#1}%
+}
+
+% see Q 193380
+\NewDocumentCommand \MyLabel{o m}{\IfValueTF{#1}{\phantomsection}{} \label{#2}}
+
+
+\begin{document}
+
+\title{The \pkg{MakeCookbook} Bundle\NL Make a Cookbook Using \latex}
+\author{Terrence P. Murphy \and Rosalie A. D'Amico}
+\maketitle
+
+\tableofcontents
+\newpage
+\part{Introduction}
+
+\section{About}
+
+The \pkg{makecookbook} bundle contains the files needed to create a nice quality family cookbook in a form ready to submit to most print-on-demand companies. Modifiable choices have been made regarding standard book features such as trim size, margins, headers/footers, chapter heading formatting, front matter (copyright page, table of contents, etc.) and back matter (index). Commands and environments have been created to format the food stories and recipes. The user will need to: (1) supply their own food stories and recipes(!), and (2) select (install if necessary) the needed fonts.
+
+The design, layout and typography for cookbooks varies substantially, so we necessarily take a \Quote{point of view} on the desired look of the cookbook. However, even if your goal is a significantly different layout, you may find this work helpful in thinking through and implementing your design.
+
+Please note that no new document class or package is included here. Rather, we provide a modifiable preamble and a small number of other files that, together, fully support creation of all of the \textit{internal} pages of a cookbook (i.e., everything except the cover art). We may refer to the \pkg{makecookbook} \Quote{package} in this documentation -- by that we mean package in a broader sense and do \textit{not} mean an actual .sty style package.
+
+\section{Preliminaries}
+
+\subsection{Requirements}
+
+\subsubsection{Compiler}
+
+The \pkg{makecookbook} bundle uses the \pkg{fontspec} package. That means it must be compiled with either Lua\TeX{} or Xe\TeX. We have only tested with Lua\TeX . However, we have not used Lua code, so we expect you should be successful (after a possible tweak or two) with an Xe\TeX{} compile.
+
+\subsubsection{Fonts}\MyLabel{IntroFonts}
+
+The \pkg{makecookbook} bundle assumes you have installed the three fonts listed below. (All are licensed under the SIL Open Font License, Version 1.1). To have a successful compile \Quote{out of the box}, these fonts must be installed on your system:
+
+\begin{center}
+ \begin{tabular}{ >{\bfseries} l | >{\itshape}l | l | l }
+ \hline
+ Serif & EB Garamond & TrueType & Version from Google Fonts\\ \hline
+ Sans Serif & Lato & TrueType & Version from \pkg{www.latofonts.com} \\ \hline
+ Script & Italianno & OpenType & Version from Google Fonts\\
+ \hline
+ \end{tabular}
+\end{center}
+
+Please note: we assume that the \textit{EB Garamond} and \textit{Italianno} fonts were obtained from Google Fonts, and that the \textit{Lato} font was obtained from \pkg{http://www.latofonts.com}. These fonts \textit{do not} required installation of any font-related packgages other than \pkg{fontspec}.
+
+Beginning on page \pageref{Fonts}, we discuss how you can easily substitute your own favorite OpenType (including TrueType flavored) fonts, subject only to certain requirements regarding feature set.
+
+\subsection{License}
+
+Copyright \copyright{} 2018 Terrence P. Murphy and Rosalie A. D'Amico. This work may be distributed and/or modified under the conditions of the \latex Project Public License (“LPPL”), either version 1.3c of this license or (at your option) any later version. The latest version of this license is at:
+
+\quad \pkg{http://www.latex-project.org/lppl.txt}.
+
+\noindent This work is author-maintained and consists of the files listed in the FILES section of the README file.
+
+The \pkg{makecookbook} bundle includes an example cookbook with seven recipes. Those recipes are courtesy of Rosalie D'Amico\footnote{D'Amico, Rosalie A. \textit{Mama, How Do You Make...}. (self-published, 2018).}.
+You are, of course, welcome to try them! They are included in the bundle to provide real-world examples of using \latex code to enter recipes. We only ask that you consider those recipes as for you personal use and not (without attribution) for further food-related publication (further publication OK in a \latex context).
+
+\subsection{Contact Information / Feedback}
+
+No doubt, this documents contains typos, poorly explained (or unexplained) items, and other errors. It is equally likely the \pkg{makecookbook} package includes coding errors. We value your feedback. Please report problems or make other suggestions to Terry Murphy: \pkg{latex@rd-tpm.com}.
+
+\subsection{Version Information / Change History}
+
+Version 0.85 dated \date{\today}. This is the initial version of the \pkg{makecookbook} bundle.
+
+\subsection{The \latex Community / StackExchange}
+
+In this \pkg{makecookbook} package, much of the code (except for the mistakes!) is not original. When we ran into difficulties, we usually turned to \pkg{tex.stackexchange.com} for help. We often found solutions in previous questions and answers, but sometimes had to ask our own questions. The \latex community is amazingly generous with their time.
+
+You may see in the text or in the comments to the code something like \Quote{See Q 59619}. That is a reference to a specific question and answer on \pkg{tex.stackexchange.com}. You can often track it down by a Google search of \Quote{latex 59619}; if that doesn't work, try \Quote{tex.stackexchange.com 59619}.
+
+\section{Installing \pkg{makecookbook}}
+
+Go to the CTAN homepage of the \pkg{makecookbook} package: \pkg{https://ctan.org/pkg/makecookbook}. On that page you can download the complete zip file using the download button next to \Quote{\textit{Download the contents of this package in one zip archive}}. After unzipping, you will have the following files and directories:
+
+\begin{MyVerbatim}
+makecookbook/
+| README
+| makecookbook-doc.tex
+| makecookbook-doc.pdf
+|
+|--- mycookbook/
+ | makecookbook.tex
+ | makecookbook.pdf
+ | cb-preamble.tex
+ | cb-lettrine.cfl
+ | cb-idxstyle.ist
+ |
+ |--- tex/
+ | cb-frontmatter.tex
+ | cb-chapterA.tex
+ | cb-chapterB.tex
+ |
+ |--- img/
+ cb-imageA.jpg
+ cb-imageB.jpg
+\end{MyVerbatim}
+
+Copy the \pkg{mycookbook} directory (including all its subdirectories and files) to you \latex project area. Choose a location so that the \pkg{mycookbook} directory is the root directory of your cookbook project.
+
+Next, download and install\footnote{We are not experts on font installation. Because we load fonts by filename, our understanding is that you just need to follow the normal instructions of your operating system for installing a system font. That's all we did for our Windows 10 system. If you run into problems, first verify that the installed font is available for other non-\latex programs. Beyond that, check the \luatex documentation, check the \pkg{fontspec} documentation, or ask a question at \pkg{tex.stackexchage.com}.}
+the three required fonts. Get \textit{EB Garamond} and \textit{Italianno} from Google Fonts. Get \textit{Lato} from \pkg{http://www.latofonts.com/}. We highly recommend that you download the three fonts from those sources to ensure you have the same versions as we have used, with the same filenames.
+
+Once the fonts are installed, you will be able to build the initial version of your cookbook by doing a Lua\TeX{} compile (or two) of \pkg{makecookbook.tex}.
+
+If you decide to substitute you own fonts for any of the three fonts, you cannot compile until you modify \pkg{cb-preamble.tex} to associate your selected fonts with your cookbook project. Instructions on how to make the required modifications are given, beginning on page \pageref{Fonts}.
+
+\section{How This Document is Organized}
+
+Before we discuss the details of the \pkg{makecookbook} files and our \latex code, we first (in Parts II and III) look at the cookbook-writing project at a higher level:
+
+\begin{description}
+\item[Part II - Managing/Organizing Your Cookbook Files.] Keeping a book size project well organized is critical. We start by describing our approach to organizing the cookbook files.
+
+\item[Part III - Elements of a Book/Cookbook.] Next, we provide an \textit{overview} of the key elements that make up a cookbook. This include elements common to most any book (title page, table of contents, chapters, index, etc.), as well as elements particular to a cookbook (recipe names, ingredients, steps, etc.). All of the elements listed here will be discussed in detail further below.
+\end{description}
+
+Then, we dig deeper into the elements that make a book/cookbook:
+
+\begin{description}
+ \item[Part IV - Elements of a Book - the Details.] We list and discuss the key elements that are common to most books. We describe the choices we made regarding each element and, where appropriate, we describe how you can make a different choice for that element.
+
+ \item[Part V - Elements of a Book - the Details (Fonts).] Due to the length of this discussion, and due to the importance of font selection and usage, we break this topic out separately.
+
+ \item[Part VI - Elements of a Cookbook - the Details.] We list and discuss the elements that are particular to cookbooks. For each element, we describe the \latex commands and environments you will use to include that element in your cookbook, including any options that have been programmed into those commands and environments. Using the files provided and the information discussed here, you should have the tools to make a complete cookbook.
+
+ \item[Part VII - The PDF File.] We discuss the sometimes conflicting requirements for building a PDF file for a digital cookbook (with bookmarks and links) versus building a PDF file for submittal to a print-on-demand company.
+
+ \item[Part VIII - Examples.] We present and discuss several recipe examples. This allows you to see real world examples of the \latex commands and environments needed to make your cookbook.
+\end{description}
+
+\newpage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\part{Managing/Organizing Your Cookbook Files}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Writing a cookbook is a large project. Early on, you should think through how you will manage your cookbook files. We describe below our fairly standard approach to organizing a book-size document in \latex[:]\footnote{See, e.g.: https://en.wikibooks.org/wiki/LaTeX/Modular\_Documents}
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item Create a directory devoted exclusively to the cookbook. We will call that directory the \textit{root directory} of the cookbook (in the files distributed with the \pkg{makecookbook} package, we call that directory \pkg{mycookbook}). All other directories used in the cookbook project will be referenced relative to the root directory. The root directory holds: (1) a one-page \pkg{makecookbook.tex} file that includes the instructions needed to pull all of the cookbook files together, (2) the \pkg{cb-preamble.tex} file that includes the \latex packages and programming code used by the cookbook, and (3) any special files needed by \pkg{cb-preamble.tex} (in our case, the \pkg{cb-lettrine.cfl} and \pkg{cb-idxstyle.ist} files).
+ \item Create two subdirectories under the root directory, one called \texttt{tex} and one called \texttt{img}. The \texttt{tex} directory holds a \pkg{.tex} file for each chapter of the cookbook (plus \pkg{cb-frontmatter.tex}). The \texttt{img} directory holds any image files used in the cookbook.
+\end{itemize}
+
+It is helpful to see the full contents of the \pkg{makecookbook.tex} file. This file brings in the preamble, the front matter and the cookbook chapters and handles a few other \Quote{housekeeping} items:
+
+\begin{MyVerbatim}
+\documentclass[11pt]{book}
+\input{cb-preamble}
+
+\begin{document}
+ \frontmatter
+ \include{./tex/cb-frontmatter}
+
+ \mainmatter
+ \include{./tex/cb-chapterA}
+ .
+ . (you include here all of the chapters of your cookbook)
+ .
+ \include{./tex/cb-chapterB}
+
+ \backmatter
+ \CookbookIndex{}
+\end{document}
+\end{MyVerbatim}
+
+\newpage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\part{Elements of a Book/Cookbook}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+Here we present an \textit{overview} of the elements that make up a book (in general), plus the special additional elements that make up a cookbook.
+
+An excellent source for the elements of a book is \textit{A Few Notes on Book Design} by Peter Wilson\footnote{https://ctan.org/pkg/memdesign}. Although the entire article is well worth reading, see in particular \textit{Chapter Two - The Parts of a Book}.
+
+\section{Elements of a Book}
+We list here some of the typical elements of a book. The first five are very basic elements:
+
+\begin{description}
+ \item[Trim Size] The physical size (height x width) of the paper used to print the book.
+ \item[Margins] In its simplest form, this is the top, bottom, inner and outer margins of the text area. Allowances must also be made for the areas where any header or footer is printed.
+ \item[Headers and Footers] This is where (above or below the text area) things like page number and current chapter name/number are printed.
+ \item[Chapter Title Formatting] The chapter name/number as printed on the first page of each new chapter.
+ \item[Fonts] Selection of fonts and choice of point size both play a fundamental role in all books.
+ \item[Odds and Ends] We will briefly consider a few other elements, such as color, drop caps and images.
+
+\end{description}
+
+Next we list the elements associated with the three traditional areas of a book: the front matter, the main matter and the back matter:
+
+\begin{description}
+ \item[Front Matter] This is the first part of the book, and includes an assortment of preliminary information. Typically, in this order, there is a title page, a copyright page, a dedication page, and a table of contents, all of which may be followed by one or more short chapters such as a preface or acknowledgments.
+ \item[Main Matter] This is the heart of the book. We follow the typical case where the main matter consists only of the chapters of the book.
+ \item[Back Matter] We follow the typical case where the back matter contains the book index. This is where you might include other ancillary information such as a bibliography, an appendix, notes, etc.
+\end{description}
+
+\section{Elements of a Cookbook}
+
+\begin{description}
+ \item[Chapter Intro] In a cookbook, chapters tend to be organized into logical units such as cookies, desserts, pasta, appetizers, etc. Following the chapter name, there will usually be some introductory text for that chapter. We call that the \textit{chapter intro}.
+ \item[Recipe Name and Yield] A new recipe is introduced with a recipe name and, often, with information regarding the ``yield" of the recipe (e.g., ``makes 36 cookies" or ``serves 4 to 6", etc.).
+ \item[Recipe Intro/Story] Often there is a story or other information specific to a recipe.
+ \item[Ingredients and Steps] Following the recipe name/yield and (possibly) a recipe story, there is a list of the ingredients, plus the steps required to make the recipe.
+ \item[Attribution] If the source of the recipe is known, it is proper to acknowledge that source.
+ \item[Additional Comments/Advice] There may be some recipe side notes and/or advice that is not properly included within the recipe, but is noted afterwards.
+\end{description}
+
+\newpage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\part{Elements of a Book -- the Details}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Terminology}
+
+We define here some of the terms used below. Our book is two-sided, so visualize an open book with both the left and right page visible.
+
+The terms \boldit{recto} and \boldit{verso} (from the Latin) refer to the text written or printed on the right (front) side and on the left (reverse or back) side of a leaf of paper. By book publishing convention, the first page of a book, and the start of each chapter of a book, is on a recto page. That means all recto pages will have odd page numbers and all verso pages will have even page numbers.
+
+Still visualizing our open book, the \boldit{outer margin} is the right margin on a right/recto page and the left margin on a left/verso page -- the margin \textit{away from} the book binding. Similarly, the \boldit{inner margin} is the left margin on a recto page and the right margin on a verso page -- the margin \textit{closest to} the book binding.
+
+\section{Trim Size and Margins}
+
+In deciding on the trim size of the cookbook, we started with two requirements: (1) for the main text, we wanted an easily readable font size of at least 11 points, and (2) with very few exceptions, we wanted all recipes to fit on one page. With trial and error on margins and possible use of multiple columns, plus research on best practices in typography, and testing of various fonts, we ended up with the trim size and margins described below. Then we used the \pkg{geometry} package to set those parameters.
+
+We chose an industry standard trim size of 8{\thinspace}x{\thinspace}10 inches. That trim size allows for printing by most print-on-demand printing companies.
+
+It is tempting to set small margins to allow for more text on the page. Typographers have given much thought to these matters and it just isn't that simple. A useful discussion is found in Chapter 2 of the KOMA-script documentation\footnote{https://ctan.org/pkg/koma-script}. As a result, we increased our margins well beyond our initial instincts. Even so, there is still not as much margin space as some experts might like.
+
+We set the outer margins to 1.0 inch. When the book is open, you see both sides of the inner margin together; it is therefore recommended that you set the inner margins to one-half the outer margin (here, 0.5 inch). Visually, it is as if you had three margins: a 1-inch verso outer margin, a 1-inch combined recto/verso inner margin, and a 1-inch recto outer margin. You should also add a \textbf{\textit{binding offset}} to compensate for the part of the inner margin that disappears into the binding -- we have set the binding offset (for \textit{each} side of the inner margin) to 0.375 inches.
+
+Because we are using footers but not headers, we have set the top margin to 0.75 inches and the bottom margin to 1.0 inch. That leaves the text area at 6.125{\thinspace}x{\thinspace}8.25 inches, about 63\% of the full page size.
+
+We have set the distance between the bottom of the text area and the baseline of the footer to 40 points, which seems to give a nice separation between the text area and the footer.
+
+The above is obtained with the following \pkg{geometry} package settings:
+
+\begin{MyVerbatim}
+\usepackage{geometry}
+
+\ifCookbookDraft
+\geometry{paper=letterpaper, % the physical paper size during draft mode
+ layoutsize={8in,10in}, % always use intended final paper size for layout
+ layouthoffset=0.25in, % center the "layout" horizontally
+ layoutvoffset=0.5in, % center the "layout" vertically
+ %showframe, % use when needed
+ showcrop}
+\else
+\geometry{papersize={8in,10in}} % the physical paper size in final production mode
+\fi
+
+\geometry{nomarginpar, % do not reserve space for margin notes
+ bindingoffset=0.375in,
+ inner=0.5in,
+ outer=1in,
+ top=0.75in,
+ bottom=1in,
+ footskip=40pt} % default seems to be 27pt
+\end{MyVerbatim}
+
+\MyLabel[1]{Geometry}When you submit your cookbook to a print-on-demand printer, the PDF file's metadata must show the paper size equal to the intended trim size. In the \pkg{geometry} package, this is done by making sure that \pkg{papersize} equals \pkg{layoutsize}. However, during the time you are working on your cookbook (in draft mode), you want to set the \pkg{geometry} package \pkg{papersize} equal to the physical size of the paper coming out of your local printer. In our case, we are printing draft pages in \pkg{letterpaper} size (8.5 x 11 inches). You manage this draft vs.{}\thinspace final difference, by setting the \Cmd{newif} value of \Cmd{ifCookbookDraft} to \Cmd{CookbookDrafttrue} (draft) or \Cmd{CookbookDraftfalse} (final). You will find these settings near the very top of \pkg{cb-preamble.tex}.
+
+Just modify the above \pkg{geometry} settings for your needed trim size, draft paper size, margins, etc.
+
+\section{Headers and Footers}
+
+\latex sets headers and footers with the \pkg{pagestyle} command. Several page\-styles are predefined by \latex[,] but you are also allowed to define your own. We are using the \pkg{book} document class, which by default uses: (1) the predefined \pkg{empty} pagestyle (no header or footer on the page), (2) the predefined \pkg{plain} pagestyle (no header, the footer contains only a centered page number), and (3) a modified version of the predefined \pkg{headings} pagestyle.
+
+In the cookbook, we use the \pkg{empty} pagestyle, a modified version of the \pkg{plain} pagestyle, plus a \pkg{main} pagestyle that we define. We use the \pkg{fancyhdr} package to redefine the \pkg{plain} pagestyle and to define our own \pkg{main} pagestyle, as follows:
+
+\begin{MyVerbatim}
+\usepackage{emptypage, fancyhdr} % for emptypage, see Q360739
+ % NOTE: RO = right/odd; LE = left/even; CE = center/even; CO = center/odd
+\fancypagestyle{plain}{%
+ \fancyhf{} % clear the header and footer
+ \renewcommand{\headrulewidth}{0pt} % use 0 to disable header ruler line
+ \renewcommand{\footrulewidth}{0.2pt}
+ \fancyfoot[RO, LE] {Page \thepage}}
+
+\makeatletter % \makeatletter must be OUTSIDE the command - see Q 444532
+\fancypagestyle{main}{ % identical to plain, except in mainmatter, where
+ % it includes \leftmark in the center of the footer
+ \fancyhf{}
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0.2pt}
+ \fancyfoot[RO, LE] {Page \thepage}
+ \fancyfoot[CE,CO]{\if@mainmatter \leftmark\fi}} % See Q340125
+\makeatother
+\end{MyVerbatim}
+
+The above code does as follows:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item By loading the \pkg{emptypage} package, we force all completely empty pages to use the \pkg{empty} pagestyle.
+ \item The redefined \pkg{plain} pagestyle: (1) has no header and no header-area rule line, (2) has a footer-area rule line that is 0.2 points thick, and (3) prints the page number at the outer margin -- the right side of the footer on \textit{recto} (odd numbered) pages and the left side of the footer on \textit{verso} (even numbered) pages.
+ \item The \pkg{main} pagestyle is identical to the redefined \pkg{plain} pagestyle, except, \textit{in the mainmatter area only}, it prints the \Cmd{leftmark} in the center of the footer on both even and odd numbered pages. In the \pkg{book} class, the \Cmd{leftmark} is in all-caps and looks like \Quote{CHAPTER 2. COOKIES}. %is \Quote{CHAPTER} followed by the chapter number (Arabic) and the chapter name.
+\end{itemize}
+
+With our pagestyles defined, we now describe how they are used. We follow a very typical approach to headers and footers in printed books:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item Empty Page: if a page is otherwise completely empty, we use the \pkg{empty} pagestyle. This rule applies through the frontmatter, mainmatter and backmatter, \textit{and supersedes all other rules}. An empty page happens, for example, when a chapter ends on a recto page. Since all new chapters start on a recto page, the intervening verso page is completely empty.
+ \item Frontmatter: We employ the \pkg{empty} pagestyle from the beginning (title page) up to and including the page just before the \Cmd{tableofcontents} page. Then, from that page through the end of the frontmatter, we employ the (redefined) \pkg{plain} pagestyle. We follow the default rule for the \pkg{book} class, where frontmatter page numbers are indicated by small roman numerals. Note that there is “pagination” (page counting) from the first page, but only printing of the page number after switching to the \pkg{plain} pagestyle.
+ \item Mainmatter: We employ the \pkg{main} pagestyle, except on the first page of each \Cmd{chapter}, which switches to the redefined \pkg{plain} pagestyle (this switch is the default book class \Cmd{chapter} behavior, so requires no coding by us). Page numbers are arabic, with page 1 being the first page of the first mainmatter chapter.
+ \item Backmatter: We employ the \pkg{plain} pagestyle. Page numbers are arabic, and continue with the pagination from the mainmatter.
+\end{itemize}
+
+Our code only needs to issue two \Cmd{pagestyle} commands: (1) we include \Cmd{pagestyle\{empty\}} as the first line of \pkg{cb-frontmatter.tex}, and (2) we include \Cmd{pagestyle\{main\}} just after the \Cmd{tableofcontents} command in \pkg{cb-frontmatter.tex}. (Recall that the \pkg{main} pagestyle is identical to the \pkg{plain} pagestyle in the frontmatter and backmatter). To implement our rule for empty pages, we load the \pkg{emptypage} package, which automatically applies the \pkg{empty} pagestyle to all empty pages.
+
+The \pkg{fancyhdr} documentation is a good source of additional information on these matters.
+
+\section{Chapter Title Formatting}
+
+We use the \pkg{titlesec} package for the formatting of chapter titles. Following are some key concepts of the \pkg{titlesec} package:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item The \boldit{label} means the basic chapter information, such as ``Chapter 6".
+ \item To obtain the current \boldit{label}, you use the \Cmd{chaptertitlename} command (to obtain ``Chapter") and the \Cmd{thechapter} command (to obtain the current chapter number). Importantly, per the \pkg{book} class default, both of those commands are blank in the frontmatter and backmatter, so we only obtain a non-empty \boldit{label} in the mainmatter.
+ \item The \boldit{title body} means the text identifying the current chapter, such as ``Sauces and Chutneys".
+ \item the \boldit{title} means the entire chapter title (\textit{label} plus \textit{title body}).
+ \item Two commands are provided to change the \boldit{title} format. The \Cmd{titleformat} command is used for the “internal” format (i.e., shape, font, label, etc.) and the \Cmd{titlespacing} command defines the “external” format (i.e., spacing before and after, etc.).
+\end{itemize}
+
+Following is our code:
+
+\begin{MyVerbatim}
+\usepackage{titlesec}
+
+\titleformat{\chapter}[display] % [display] puts the label in a separate paragraph
+ {\filleft\FontChapterLabel} % The format for the whole title (label and title body text)
+ {\chaptertitlename\ \thechapter} % This defines the text for the label
+ {1pt} % The horizontal separation between label and title body:
+ % Next is optional code preceding the title body. We change
+ % the title body font from the initial setting above.
+ % we include \raggedleft because text may exceed one line.
+ {\titlerule\vspace{1ex}\raggedleft\FontChapterTitle}
+
+\titlespacing*{\chapter} % The starred version kills the indentation of the
+ % paragraph following the title.
+ {0pt} % amount to increase left margin
+ {20pt} % vertical space before title
+ {20pt} % verticle space between title and text
+\end{MyVerbatim}
+
+The \pkg{titlesec} documentation is a good source of additional information on these matters.
+
+\section{Odds and Ends}
+
+\subsection{Color}\MyLabel{Color}
+
+An important decision in a cookbook is whether to print in black and white or color. The printing costs can be substantially different. One option is to first print a small number of books in black and white, live with the book for a while, edit as necessary, and then move to color printing when you are fully satisfied with the final product.
+
+Our approach is to define all colors used in the cookbook in one place in the preamble. We use the \pkg{xcolor} package and the \Cmd{definecolor} command to create our defined names for all of our colors. That allows us (in one place) to change those color definitions to accommodate either a black and white or color cookbook.
+
+You should check with your print on demand printer to determine whether they prefer (or require) either the CMYK or RGB color model. In our code, below, we provide examples of both color models:
+
+\begin{MyVerbatim}
+\usepackage{xcolor}
+\definecolor{clrWhite}{cmyk}{0.00, 0.00, 0.00, 0.00} % true white
+\definecolor{clrBackTip}{rgb}{1.0, 0.95, 0.95} % red!5!white
+\definecolor{clrFrameTip}{rgb}{0.75, 0.0, 0.0} % red!75!black
+\definecolor{clrBackCheffy}{rgb}{1.0, 1.0, 1.0} % white
+\definecolor{clrFrameCheffy}{rgb}{0.0, 0.0, 0.75} % blue!75!black
+\definecolor{clrBackNotes}{rgb}{1.0, 1.0, 1.0} % white
+\definecolor{clrFrameNotes}{rgb}{0.0, 0.75, 0.0} % green!75!black
+\definecolor{clrLettrineBig}{gray}{0.5}
+\definecolor{clrLettrineSmall}{gray}{0.5}
+\definecolor{clrIngTitle}{cmyk}{0.00, 1.00, 1.00, 0.00} % true red
+\definecolor{clrEditNote}{cmyk}{0.00, 1.00, 1.00, 0.00} % true red
+\definecolor{clrHyperRef}{cmyk}{0.00, 1.00, 1.00, 0.00} % true red
+\end{MyVerbatim}
+
+See the \pkg{xcolor} package for helpful information on the CMYK and RGB color models.
+
+\subsection{Drop Cap}\MyLabel{DropCap}
+
+A \textit{drop cap letter} is a single letter (usually at the beginning of a chapter or important paragraph) that is larger than the following text. The practice began more than 2,000 years ago. Originally, the drop cap was very ornate and several lines high. As typesetting took hold in the mid 15th century, the typesetter would leave the necessary blank space to allow for a hand-drawn drop cap. The drop cap served two purposes: (1) it was a decorative element and (2) it assisted the reader by dividing the text into different parts. By the latter part of the 19th century, drop caps had mostly lost their ornamental flourish and usually consisted only of a larger letter (maybe sized to two or three lines) signifying the start of a chapter or section.
+
+There was a substantial reduction in the use of drop caps at the beginning of the 20th century. More recently, there has been a bit of a revival. Our review of modern cookbooks found that it now quite common, but hardly universal. We have elected to use drop caps in the chapter intro and in the recipe story, but our code does not require it. We use the \pkg{lettrine} package to implement our drop caps (\Quote{lettrine} is the French word for drop caps). As is customary, the \pkg{lettrine} package (optionally) uses a different font style for the first several characters following the drop cap (by default they are set to small caps). We call these special characters the \textit{drop caps text}. Our code:
+
+\begin{MyVerbatim}
+\usepackage{lettrine}
+\renewcommand{\LettrineFontHook}{\MyScriptFont\color{clrLettrineBig}}
+\renewcommand{\LettrineTextFont}{\color{clrLettrineSmall}\FontLettrineText}
+\renewcommand{\DefaultOptionsFile}{cb-lettrine.cfl}
+\end{MyVerbatim}
+
+We use the \Cmd{LettrineFontHook} command to set the font (and color) of the \textit{drop cap letter} to our script font. We use the \Cmd{LettrineTextFont} command to set the font (and color) of our \textit{drop caps text} to a small-caps version of the current roman font. Finally, we use the \Cmd{DefaultOptionsFile} command to point to a \pkg{lettrine} package configuration file (here \pkg{cb-lettrine.cfl}) where we fine-tuned the height (in rows) and width of each alphabetic letter that may be used as a \textit{drop cap letter}. See the \pkg{lettrine} package documentation for more details.
+
+\subsection{Images/Photos}
+
+There is very little material here on using images in your cookbook. We use the well-documented \pkg{graphicx} package and its\Cmd{includegraphics} command as the starting point for displaying photos. Our advice is to use non-\latex programs to put your images in final form (any rotation or cropping needed, as well as any needed adjustments to size or dpi).
+
+By way of example, we include the code for our \Cmd{SideBySide} command, used for displaying two images side-by-side. Some comments on the setup:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item Recall that all of our \pkg{*.tex} files (and therefore our \Quote{current directory}) will either be in: (1) the root directory of the cookbook project, or (2) the \pkg{tex} subdirectory under that root directory. Also, all of our image files will be in the \pkg{img} subdirectory under that root directory. We use the \Cmd{graphicspath} command to tell \latex to look for the image files either: (1) in the \pkg{img} subdirectory under the current directory, or (2) in the \pkg{img} directory that is a sibling of the current directory.
+ \item We use the \pkg{caption} package to manage any caption we put under an image. With \pkg{skip=2pt}, the vertical distance between the image and caption is set to 2 points. With \pkg{labelformat=empty}, we have an empty caption label. With \pkg{font=\{rm,it\}}, the caption font is \Cmd{rmfamily} and italic. The \pkg{caption} package options can be selected in the \Cmd{usepackage} command, or separately in the \Cmd{captionsetup} command. To demonstrate the latter, we select the \pkg{justification=centering} option in \Cmd{captionsetup}.
+ \item The \Cmd{SideBySide} command has two mandatory arguments. For the two side-by-side images, \textbf{Arg \#2} is the left image and \textbf{Arg \#3} is the right image.
+ \item \textbf{Arg \#1} is an optional key-value argument with three possible entries. \pkg{VertAlign=} defaults to \pkg{c} (vertically align images at their centers) and can also be set to \pkg{t} (align at their tops) or \pkg{b} (align at their bottoms). \pkg{LeftCaption=} and \pkg{RightCaption=} default to \Cmd{empty} and can be use to include a caption under one or both of the images.
+\end{itemize}
+
+
+
+\begin{MyVerbatim}
+\graphicspath{{img/}{../img/}} % look in img directory (subdir of book root or sibling of tex)
+\usepackage[skip=2pt, labelformat=empty, font={rm,it}]{caption} %
+\captionsetup{justification=centering} % this is needed to have multi-line captions centered
+
+\pgfkeys{
+ /SideBySide/.is family, /SideBySide,
+ default/.style = {VertAlign = c, LeftCaption = \empty, RightCaption = \empty},
+ VertAlign/.estore in = \VerticalAlign,
+ LeftCaption/.estore in = \LeftText,
+ RightCaption/.estore in = \RightText,
+}
+
+\NewDocumentCommand \SideBySide{O{\empty} m m} % Q 5769
+{
+\pgfkeys{/SideBySide, default, #1}%
+%
+\begin{figure}[htb]
+ \centering
+ \begin{minipage}[\VerticalAlign]{0.49\textwidth} % align at t= top, c = center, b = bottom
+ \centering
+ \includegraphics[width=0.97\textwidth]{#2} %
+ \ifx\LeftText\empty\relax\else\caption{\LeftText}\fi
+ \end{minipage}\hfill%
+ \begin{minipage}[\VerticalAlign]{0.49\textwidth}
+ \centering
+ \includegraphics[width=0.97\textwidth]{#3} %
+ \ifx\RightText\empty\relax\else\caption{\RightText}\fi
+ \end{minipage}
+ \end{figure}
+}
+\end{MyVerbatim}
+
+
+\section{Front Matter, Main Matter and Back Matter}
+
+\subsection{Introduction}
+
+Almost all books have a structure consisting of three sections: the front matter, the main matter and the back matter. We describe here the organization and contents of those three sections. Although there are many options regarding the organization and contents of those three sections, we limit our discussion to the actual (and very typical) structure we have selected.
+
+\subsection{Front Matter}
+
+The \textbf{front matter} (sometimes called \Quote{preliminaries}) is the first section of a book. Because the front matter is normally the last section of a book to be completed, small roman numerals are traditionally used for the front matter page numbers. That way, last-minute changes will not require renumbering the main text.
+
+For our cookbook, the front matter is contained in the file \pkg{cb-frontmatter.tex}. We now describe, in order of appearance, the parts that make up the front matter.
+
+\subsubsection{Title Page}
+
+It is actually typical for old-line publishers to start with a half-title page (just the book name and no other information) and then the full title page (including author's name and possibly other information). We include only a full title page.
+
+\subsubsection{Copyright Page}
+
+Here we provide the copyright information. As is common, we also includes information on the publisher, the book edition and edition history, the ISBN number (if any), and the Library of Congress number (if a USA book). We also include here information about the production, design and fonts (the \Quote{colophon}). \textit{You will need to make several edits to this page -- see the \Quote{front matter helper commands} section of the preamble}.
+
+\subsubsection{Dedication}
+
+The dedication, if any, follows the copyright page and is the only element on that page.
+
+\subsubsection{Table of Contents}
+
+We provide the page number for each chapter in the book, and for the index. If your book has an appendix (or similar), you should also include that in the table of contents.
+
+With the book class, no package is required to include chapters, sections and subsections in the table of contents. Because our cookbook has no sections or subsections, we list only chapters (plus the index) in our table of contents. We insert the table of contents at the desired location in the front matter simply by issuing the \Cmd{tableofcontents} command. Section \ref{BackMatter} (page \pageref{BackMatter}) shows how we add the index to our table of contents.
+
+\subsubsection{Other}
+
+Following the table of contents, there may be some or all of the following (each as a separate chapter and each included in the table of contents): foreword, preface, acknowledgments, introduction, or similar.
+
+\subsection{Main Matter}
+
+The \textbf{main matter} (sometimes called the \Quote{body matter}) follows the front matter. This is the actual text of your book. We follow the typical case where the main matter consists only of the chapters of the book. The first page of the main matter is page 1 of the book (Arabic numbering).
+
+\subsection{Back Matter}\label{BackMatter}
+
+The \textbf{back matter} (sometimes called the \Quote{end matter}) follows the main matter. Ours is a typical case, where the back matter contains only the book index. The back matter is where you might include other ancillary information such as an appendix, notes, a glossary, a bibliography, etc. Our index consists only of the recipes in the cookbook. See page \pageref{RecNameYield} and the \Cmd{RecipeNameAndYield} command for how we put our recipes in the index.
+
+Following is the code to include the index in the back matter. First, from \pkg{cb-preamble.tex} we have:
+
+\begin{MyVerbatim}
+\usepackage{imakeidx} % supports creation of an index (here, a recipe index)
+\makeindex[intoc] % make the *.idx file; intoc = include this Index in TOC (Q 59619)
+
+\NewDocumentCommand \CookbookIndex{}{
+ \cleardoublepage % flush all material and clear until you start new odd numbered (recto) page
+ \phantomsection\addcontentsline{toc}{chapter}{\indexname} % see also Q 59619
+ \printindex
+}
+\end{MyVerbatim}
+
+\noindent And from \pkg{makecookbook.tex} we have:
+
+\begin{MyVerbatim}
+\backmatter
+\CookbookIndex{}
+\end{MyVerbatim}
+
+With the above code, you get the standard index format for the \pkg{book} document class (plus inclusion in the table of contents). We have also added code that modifies the format of the index in three ways: (1) it slightly changes the hanging indent of long index items, (2) it right justifies the page number associated with the index item, and (3) it \Quote{dot fills} between the index item and the page number. Our code:
+
+\begin{MyVerbatim}
+\makeatletter
+\def\@idxitem{\par\hangindent 10pt} % not needed unless you want to fine tune hanging indent
+\newcommand{\betterdotfill} % see Q 396898
+ {\leavevmode \nobreak\cleaders \hb@xt@ .44em{\hss .\hss }\hskip .5em plus 1fill \kern \z@}
+\makeatother
+\makeindex[options=-s cb-idxstyle] % use cb-idxstyle.ist for style; Q 132465 & Q 396898
+\end{MyVerbatim}
+
+You might want to temporarily comment out this additional code, just to compare the results to the standard \pkg{book} class index format.
+
+The above code: (1) slightly changes the hanging indent for index items that are longer than a single line (this code is definitely \textit{not} necessary), (2) defines the \Cmd{betterdotfill} command (more on this below), and (3) uses the \Cmd{makeindex} command to load an \Quote{index style file} named \pkg{cb-idxstyle.ist} to modify the format of the index\footnote{See \pkg{https://ctan.org/tex-archive/indexing/makeindex/paper/ind.pdf} for documentation on the index style file.}. The \pkg{cb-idxstyle.ist} file is a text file with the following contents:
+
+\begin{MyVerbatim}
+ delim_0 "\\betterdotfill "
+ delim_1 "\\betterdotfill "
+ delim_2 "\\betterdotfill "
+\end{MyVerbatim}
+
+What is with that strange \Cmd{betterdotfill} command (courtesy of Enrico Gregorio in Q 396898)? If you still have the default setup of the \pkg{makecookbook} package (including fonts, margins, etc.), we can demonstrate why it is needed. In the above \pkg{cb-idxstyle.ist} file, change the three \pkg{betterdotfill} entries to standard \pkg{dotfill} entries:
+
+\begin{MyVerbatim}
+ delim_0 "\\dotfill "
+ delim_1 "\\dotfill "
+ delim_2 "\\dotfill "
+\end{MyVerbatim}
+
+Now compile and look at the index entry for the recipe named \Quote{G -- Potato Salad with Sherry Shallot Vinaigrette}. That recipe is \textit{exactly} the wrong size, causing \Cmd{dotfill} to fail. The page number is not right justified and there is no dot fill. Enrico's magic code\footnote{Don't ask us to fully explain Enrico's code, although there are strong hints in \textit{The TeXbook} by Donald E. Knuth.} solves the problem by forcing the last part of \Quote{wrong-sized} recipe names to spill over to the next line.
+
+\newpage
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\part{Elements of a Book -- the Details (Fonts)}\MyLabel{Fonts}
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+\section{Introduction}
+
+The \texttt{METAFONT} font selection scheme in original \tex was developed beginning in the late 1970's. Although advanced for its time, it is quite limiting by today's standards. In \latex[,] a 'New Font Selection Scheme' (NFSS) was released in 1989 and then updated in 1993. While certainly a great improvement, allowing package writers to make many new fonts available, it is still a cumbersome and limiting system.
+
+Backward compatibility has been a limiting factor in \latex development, due to: (1) the expectation that older documents will still compile and produce identical output and (2) the large ecosystem of third-party packages. Until recently, one of the most important advances was the \pkg{pdfTeX} compiler, which produced PDF output directly from a \tex or \latex compile. However, \pkg{pdfTeX} is still an 8-bit system with the same font limitations. While there are packages and methods for incorporating Unicode in a \pkg{pdfTeX} compile, it is both kludgy and incomplete.
+
+Recently, the \xetex and \luatex compilers have been released. They are Unicode-based 32-bit systems. Both can load any OpenType (including TrueType) font installed on your computer -- all you need is the \pkg{fontspec} package. That allows easy use of the advanced typographic features of OpenType. It must be noted that these two new compilers have some subtle incompatibilities with \tex and \latex{}. However, those incompatibilities are minimal and will impact a small group of uses -- primarily those with old legacy code. Of course, \pkg{pdfTeX} is still available for any such legacy code.
+
+To allow for more modern font handling, we therefore decided to use the \luatex compiler. As between \luatex and \xetex[,] we decided that \luatex is a better choice due to its more complete support of the \pkg{microtype} package and for the option (which we have not used) of Lua scripting.
+
+\subsection{Fonts}
+
+We discussed on page \pageref{IntroFonts} the three fonts you must install if you want a successful compile \Quote{out of the box}. Here we discuss the attributes required of substitute fonts. We begin by again listing the three font, along with the weights and shapes required of substitute fonts:
+
+\begin{description}
+ \item[Serif] \textit{EB Garamond} (version from Google Fonts). Any substitute font should have regular and bold weights, both to include the italics shape. Also, the regular weight should include the small caps shape.
+ \item[Sans Serif] \textit{Lato} (version from \pkg{www.latofonts.com}). Any substitute font should have regular, semi-bold and bold weights, all to include the italics shape.
+ \item [Script] \textit{Italianno} (version from Google Fonts). We only need the regular font weight and shape.
+\end{description}
+
+In addition to the above, the substitute fonts must be OpenType (including TrueType) and should support the \pkg{Ligatures=TeX} font feature described in the \pkg{fontspec} package manual. Finally, the \textit{serif} and \textit{sans serif} fonts should support the following (there are workarounds if they do not):
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item These glyphs: \textit{degree} (char 176), \textit{copyright} (char 169), \textit{center dot} (char 183), and \textit{bullet} (char 8226).
+ \item The \pkg{Fractions=On} OpenType font feature, as described in the \pkg{fontspec} package manual.
+\end{itemize}
+
+On page \pageref{FontCode} and following, below, we discuss the simple changes to \pkg{cb-preamble.tex} you must make to substitute your own favorite fonts.
+
+\section{Line Length and Font Size}
+
+Part of the font selection process is choosing a proper point size for the intended use. And these decisions directly impact other issues, such as the choice of trim size and margins. We consider here the important relationship between point size and line length.
+
+Lines of text can be less comfortable to read if they are either too long or too short. Following are a couple of (sometimes contradictory) rules of thumb for the body text of a printed book\footnote{See, e.g.: \pkg{https://en.wikipedia.org/wiki/Line\_length} and the references cited there.}:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item Line length should be between 45 and 75 characters per line. For printed works with multiple columns, 40 to 50 characters per line is preferred.
+ \item Line length should be about 30 times the point size of the font, with an acceptable range between 20 and 40 times. We call that number the \textit{point multiple}, and calculate it by dividing the length (in points) of the line by the point size of the font. We assume that 1 inch equals 72.27 points (often rounded to 72 points in desktop publishing applications). Our 6.125-inch text margin is therefore about 443 points wide.
+\end{itemize}
+
+Now let's relate the above rules of thumb to our four different layouts of body text.
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item The introductory text at the beginning of each chapter has a font size of 14 points. Dividing 443 by 14, we have a nearly ideal \textit{point multiple} of about 31.6. We roughly calculate the characters per line at between 78 and 80 -- a little high, but we find the text easily readable and note the \textit{point multiple} is right where it needs to be.
+ \item The introductory text at the beginning of each recipe has a font size of 13 points. Also, the text is indented on each side by 20 points, giving a text width of 403 points. Dividing 403 by 13, we have a nearly ideal \textit{point multiple} of about 31. We roughly calculate the characters per line at about 78 -- again, a little high, but we find the text easily readable and note the \textit{point multiple} is right where it needs to be.
+ \item The recipe ingredients and steps are presented in a two-column format, with a font size of 10.95 points. Listing of ingredients should not be considered \Quote{body text}, so we focus on the recipe steps. With a 10 point separation between the two columns, each column is about 217 points wide. Dividing 217 by 10.95, we have a \textit{point multiple} of just about 20 -- at the low end, as might be expected for multi-column text. We roughly calculate the characters per line at 48, right where it should be for multi-column text.
+ \item The copyright page uses a font size of 9 points. This is a \Quote{fine print} page and should not be considered as body text. It is of no concern that the characters per line and \textit{point multiple} are not within prescribed parameters.
+
+\end{itemize}
+
+\section{Our Selected Fonts}
+
+Below we provide additional detail on the fonts and font sizes we selected.
+
+\subsection{Serif Font}
+
+For the \pkg{makecookbook} package, we selected the \textit{EB Garamond} font. Garamond (produced in many versions) is an old-style serif typeface, named for sixteenth-century Parisian engraver Claude Garamond. It and related typefaces are very popular for printing body text in books. It is a classic design that does not shout \Quote{look at me} but just unobtrusively makes for very easy to read text.
+
+\textit{EB Garamond} is the primary font used in the cookbook. It is used everywhere in the cookbook that is not specifically mentioned below for the other fonts. Some of the key places where this font is used:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item When listing the steps to make a recipe. This is in a two-column environment, using a 10.95 point font.
+ \item At the beginning of recipes, when telling a story about the recipe or describing other special information regarding the recipe. This is in a one-column environment, indented 20 points on both the left and right sides. We use a 13 point font.
+ \item At the beginning of each chapter, when discussing the recipes in that chapter. This is in a one-column full-width environment, using a 14 point font.
+ \item On the copyright page, where it is typical to have a smaller font. We use a 9 point font.
+ \item In the chapter title, this font is used as the chapter \boldit{label} (e.g., ``Chapter 7"), using a 14.4 point font.
+\end{itemize}
+
+\subsection{Sans Serif Font}
+
+For the \pkg{makecookbook} package, we selected the \textit{Lato} font. \textit{Lato} is described as \Quote{clean and modern} as well as \Quote{transparent} (unobtrusive), meeting our goal for easy to read but low-key body text fonts. This is the only other font used for body text. It is used in two places:
+
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item When listing recipe ingredients. This is in a two-column environment, using a 10.95 point font. We use the semi-bold face to provide a better visual contrast between recipe ingredients and recipe steps.
+ \item When a recipe has multiple sections of ingredients/steps, we use this font for the title of a recipe section. It is still 10.95 points, but in italics with a bold face.
+\end{itemize}
+
+\subsection{Script}
+
+For the \pkg{makecookbook} package, we selected the \textit{Italianno} font. We believe it provides an interesting contrast to our two body text fonts, while still remaining readable. It is used in three places:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item In the chapter title, it is used for the name of the chapter. We use a 40 point font size.
+ \item In recipes, it is used for the recipe name. We use a 24 point font size.
+ \item As the large \textit{drop cap letter}. (Font size determined by the \Cmd{lettrine} package).
+\end{itemize}
+
+
+\begin{SideNote}
+ {
+ We have a confession to make. For our cookbook, we do not use the \textit{EB Garamond} or \textit{Lato} font. (We do use \textit{Italianno}). In their place, we use the \textit{Adobe Garamond Pro} and \textit{Adobe Myriad Pro} commercial fonts. Although both implementation of Garamond are excellent, for our main font we wanted a well-tested and reliable font (\textit{EB Garamond} is still in development). For our secondary font, we just very much like the look and readability of the Myriad typeface. Of course, we could not use a commercial font in this package.
+ }
+\end{SideNote}
+
+\section{Code to Implement our Font Usage}\MyLabel{FontCode}
+
+\subsection{Load Our Fonts}
+
+The first step is to load our three fonts using the \pkg{fontspec} package:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item Our \textit{serif} font is loaded using the \Cmd{setmainfont} command. After that, our code refers to this family as the \Cmd{rmfamily}.
+ \item Our \textit{sans serif} font is loaded using the \Cmd{setsansfont} command. After that, our code refers to this family as the \Cmd{sffamily}.
+ \item Our \textit{script} font is loaded using the \Cmd{newfontfamily} command. The \Cmd{newfontfamily} command allows us to name the family (similar to \Cmd{rmfamily}). We name our script font \Cmd{MyScriptFont}.
+\end{itemize}
+
+All three font loading commands include a mandatory argument to identify the font, plus various optional key-value augments. The \pkg{fontspec} package provides several options for identifying the font. We use their \Quote{by file name} option. The easiest way to understand this is to look at the six font files that make up \textit{EB Garamond's} regular, regular italic, bold, bold italic, semi-bold and semi-bold italic font faces:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item \pkg{ebgaramond-regular.ttf}
+ \item \pkg{ebgaramond-italic.ttf}
+ \item \pkg{ebgaramond-bold.ttf}
+ \item \pkg{ebgaramond-bolditalic.ttf}
+ \item \pkg{ebgaramond-semibold.ttf}
+ \item \pkg{ebgaramond-semibolditalic.ttf}
+\end{itemize}
+
+The leading part of the font name (\pkg{ebgaramond}) is entered as the mandatory argument. The \pkg{.ttf} file extension is entered in the optional key-value argument: \pkg{Extension=.ttf}. The six font faces are identified by their filename, with a \pkg{*} representing the leading part of their filename. The complete code to load the fonts (see the \pkg{fontspec} package for more details):
+
+\begin{MyVerbatim}
+\usepackage{fontspec}
+\usepackage{microtype}
+
+\setmainfont{ebgaramond}[
+ Extension=.ttf,
+ UprightFont=*-regular,
+ ItalicFont=*-italic,
+ BoldFont=*-bold,
+ BoldItalicFont=*-bolditalic,
+ FontFace={sb}{n}{*-semibold},
+ FontFace={sb}{it}{*-semibolditalic},
+ Ligatures=TeX,
+ Numbers=Lining]
+
+\setsansfont{lato}[
+ Extension=.ttf,
+ UprightFont=*-regular,
+ ItalicFont=*-italic,
+ BoldFont=*-bold,
+ BoldItalicFont=*-bolditalic,
+ FontFace={sb}{n}{*-semibold},
+ FontFace={sb}{it}{*-semibolditalic},
+ FontFace={k}{n}{*-black},
+ FontFace={k}{it}{*-blackitalic},
+ Ligatures=TeX,
+ Numbers=Lining]
+
+\newfontfamily\MyScriptFont{Italianno}[
+ Extension=.otf,
+ UprightFont=*-Regular-OTF,
+ Ligatures=TeX]
+\end{MyVerbatim}
+
+As mentioned above, in our cookbook, we use the \textit{Adobe Garamond Pro} and \textit{Adobe Myriad Pro} fonts. To replace \textit{EB Garamond} and \textit{Lato} with those fonts, it is as simple as changing the \Cmd{setmainfont} and \Cmd{setsansfont} commands with (you can do the same to substitute your favorite fonts):
+
+\begin{MyVerbatim}
+\setmainfont{agaramondpro}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ ItalicFont=*-italic,
+ BoldFont=*-bold,
+ BoldItalicFont=*-bolditalic,
+ FontFace={sb}{n}{*-semibold},
+ FontFace={sb}{it}{*-semibolditalic},
+ Ligatures=TeX,
+ Numbers=Lining]
+
+\setsansfont{myriadpro}[
+ Extension=.otf,
+ UprightFont=*-regular,
+ ItalicFont=*-it,
+ BoldFont=*-bold,
+ BoldItalicFont=*-boldit,
+ FontFace={sb}{n}{*-semibold},
+ FontFace={sb}{it}{*-semiboldit},
+ FontFace={k}{n}{*-black},
+ FontFace={k}{it}{*-blackit},
+ Ligatures=TeX,
+ Numbers=Lining]
+\end{MyVerbatim}
+
+\subsection{Handle Special Font Faces}
+
+We handle the two special font faces, semi-bold and black, giving them commands that are similar to the built-in commands used, for example, by bold (i.e., similar to the \Cmd{textbf} and \Cmd{bfseries} comands):
+
+\begin{MyVerbatim}
+\NewDocumentCommand \sbseries {}{\fontseries{sb}\selectfont}
+\DeclareTextFontCommand{\textsb}{\sbseries}
+\NewDocumentCommand \kseries {}{\fontseries{k}\selectfont}
+\DeclareTextFontCommand{\textk}{\kseries}
+\end{MyVerbatim}
+
+\subsection{Commands to Select Our Fonts}
+
+Next, we provide the commands needed to select the fonts. This gives us a level of indirection between the actual font used and the more abstract name we use for that font. In referencing/selecting a font, we will only use the below command names:
+
+\begin{MyVerbatim}
+\NewDocumentCommand \FontSteps {}{\rmfamily\mdseries}
+\NewDocumentCommand \FontStepsDefault {}{\rmfamily\mdseries}
+\NewDocumentCommand \FontIngredients {}{\sffamily\sbseries}
+\NewDocumentCommand \FontIngDefault {}{\sffamily\sbseries}
+\NewDocumentCommand \FontIngTitle {}{\sffamily\bfseries\itshape}
+\NewDocumentCommand \FontChapterIntro {}{\rmfamily\fontsize{14}{16.8}\selectfont}
+\NewDocumentCommand \FontRecipeStory {}{\rmfamily\fontsize{13}{15.6}\selectfont}
+\NewDocumentCommand \FontCopyrightPage {}{\rmfamily\fontsize{9}{11}\selectfont}
+\NewDocumentCommand \FontChapterLabel {}{\rmfamily\fontsize{14.4}{18}\selectfont}
+\NewDocumentCommand \FontChapterTitle {}{\MyScriptFont\fontsize{40}{48}\selectfont}
+\NewDocumentCommand \FontRecipeName {}{\MyScriptFont\fontsize{24}{29}\selectfont}
+\NewDocumentCommand \FontLettrineText {}{\rmfamily\scshape\sbseries}
+\NewDocumentCommand \FontTitleColorBox {}{\rmfamily\Large\bfseries}
+\NewDocumentCommand \FontTitlepageTitle {}{\MyScriptFont\fontsize{40}{48}\selectfont}
+\NewDocumentCommand \FontTitlepageAuthor{}{\rmfamily\sbseries\scshape\fontsize{14.4}{18}\selectfont}
+\end{MyVerbatim}
+
+\subsection{Special Handling of Fractions}
+
+For a cookbook, it is important to have a consistent way to display \Quote{nice} (and readable) fractions. For cookbooks, fractions are almost always of the \Quote{split level} type. Based on a suggestion in Q416164, we began by using the \pkg{xfrac} package and the \Cmd{sfrac} command, as follows:
+
+\begin{MyVerbatim}
+\usepackage{xfrac}
+\def\fr#1/#2 {\sfrac{#1}{#2} }
+\def\frx#1/#2 {\sfrac{#1}{#2}}
+\end{MyVerbatim}
+
+The first \Cmd{def} allows you to type \Cmd{fr}1/2 to get nicely formatted \fr1/2 followed by a space.
+The second \Cmd{def} allows you to type \Cmd{frx}1/2 to get nicely formatted \fr1/2 where the space following
+your entry is “gobbled” by the \Cmd{def} because there is a space between \Cmd{def} and \{. This second form is needed in the less common case when you want a parenthesis, comma, period or other character to immediately follow the fraction (i.e., no space between). Thus, to have a period immediately follow a nice \fr1/2 fraction, you would
+enter \Cmd{frx}1/2 . (Note the space between the 2 and the period).
+
+Later we noted the discussion in Q234857 and the possibility of using the OpenType \pkg{Fractions=On} option. Our serif and sans serif fonts include full support for \pkg{Fractions=On}. So we replaced the \Cmd{sfrac} command with the \Cmd{addfontfeatures} command (below). Although \Cmd{sfrac} does a good job of producing \Quote{nice} fractions, the fractions look even nicer when you use an OpenType font that fully supports \pkg{Fractions=On}. The new \Cmd{def} still uses the same “space trick” as the old \Cmd{def}. NOTE: some OpenType fonts \Quote{support} \pkg{Fractions=On} only partially – if there is an internal \Quote{pre-made} fraction they will use that, but things don’t otherwise look so nice (or consistent). Check you font.
+
+Our final code (you can revert to \Cmd{sfrac} if you desired font does not support this feature):
+
+\begin{MyVerbatim}
+\def\fr#1/#2 {{\addfontfeatures{Fractions=On}#1/#2} }
+\def\frx#1/#2 {{\addfontfeatures{Fractions=On}#1/#2}}
+\end{MyVerbatim}
+
+\subsection{Commands for Certain Glyphs}\MyLabel{Glyphs}
+
+The degree, copyright, bullet and center (or mid) dot glyphs all have standard unicode character codes, and all are available in our serif and sans serif fonts. We therefore provide our own commands for these glyphs, rather than using the associated \latex commands. Our goal is to avoid the possible loading by \latex of other unnecessary fonts to create those glyphs. A font uses only for a few glyphs can cause some confusion, and even failed print jobs, at some of the print on demand companies.
+
+Similarly, to avoid use of the math command \texttt{\$\Cmd{cdot}\$} (and possible loading of a math font), we “rolled our own” using our \Cmd{CtrDot} glyph and appropriate kerning to build the \Cmd{CtrDots} (plural) command.
+
+If you use a font that does not provide these glyphs, use the \latex macros \Cmd{textdegree} or \Cmd{copyright} or \Cmd{textbullet} or (math) \texttt{\$\Cmd{cdot}\$}.
+
+We also include here the code to use two \Quote{glyph-like} images: \Cmd{ChefHat} and \Cmd{Oven}. We made those two images using the \pkg{tikz} package and then saved them each in a \tex box. They are used in selected places, in the same fashion as normal font glyphs.
+
+\begin{MyVerbatim}
+\NewDocumentCommand \TextDegree {}{{\char176}} % or ^^^^00B0
+\NewDocumentCommand \Copyright {}{{\char169}} % or ^^^^00A9
+\NewDocumentCommand \TextBullet {}{{\char8226}} % or ^^^^2022
+\NewDocumentCommand \CtrDot {}{{\char183}} % or ^^^^00B7
+\NewDocumentCommand \CtrDots {}{{\CtrDot\kern 0.2em\CtrDot\kern 0.2em\CtrDot\kern 0.2em}}
+
+\newsavebox{\HatBox}
+\AtBeginDocument{\savebox{\HatBox}[\hatwidth]{\MakeChefHat}}%
+\NewDocumentCommand \ChefHat {}{\usebox{\HatBox}}%
+\NewDocumentCommand \ChefNote {}{{\raisebox{.4ex}{\ChefHat}}}
+
+\newsavebox{\OvenBox}
+\AtBeginDocument{\savebox{\OvenBox}[\ovenwidth]{\MakeOven}}%
+\NewDocumentCommand \Oven {}{\usebox{\OvenBox}}%
+\end{MyVerbatim}
+
+\subsection{Point Size of Default Roman and Sans Fonts}
+
+The \pkg{IngredientsAndSteps} environment and the \Cmd{RecipeStory} and \Cmd{ChapterIntro} commands (discussed further below) need to know certain default font parameters (in points) for the fonts they use. We calculated those values beforehand and stored the hard-coded values:
+
+\begin{MyVerbatim}
+\def\StdIFontSize{10.95}
+\def\StdSFontSize{10.95}
+\def\StdIBaseline{13.6}
+\def\StdSBaseline{13.6}
+\def\RStoryFontBaseline{15.6pt}
+\def\CIntroFontBaseline{16.8pt}
+\end{MyVerbatim}
+
+\newpage
+
+\part{Elements of a Cookbook -- the Details}
+
+\section{Chapter Introduction}
+
+In a cookbook, chapters tend to be organized into logical units such as cookies, pasta, appetizers, etc. Following the chapter name, there will usually be some introductory text for that chapter. We call that the \textit{chapter intro}.
+
+Use the \Cmd{ChapterIntro} command to enter your \textit{chapter intro} text. The command sets the default (roman serif) font to a larger size (14 points). A simplified version of the \Cmd{ChapterIntro} command follows. The actual code (page \pageref{RealChapterIntro}) includes an optional argument that you will rarely use:
+
+\begin{MyVerbatim}
+\NewDocumentCommand \ChapterIntro {+m}{\FontChapterIntro{#1\par}} % the \par needed by \lettrine
+\end{MyVerbatim}
+
+As noted, the \Cmd{ChapterIntro} command sets a default font face and size. However, you are free to use most any of the \latex text markup commands. You might make some text \textbf{bold} or \textit{italic}, or use an \pkg{enumerate} environment (e.g., to list you favorite cookie recipes). In our book, we have elected to use the \Cmd{lettrine} command to create a \Quote{drop cap} effect -- see the separate discussion of this on page \pageref{DropCap}.
+
+\section{Recipe Name and Yield}\MyLabel{RecNameYield}
+
+A new recipe is introduced with a recipe name and, often, with information regarding the ``yield" of the recipe (e.g., ``makes 36 cookies" or ``serves 4 to 6", etc.). To enter this information, we use the \Cmd{RecipeNameAndYield} command. It uses a key/value interface of the form:
+
+\begin{MyVerbatim}
+\RecipeNameAndYield{〈key=value, ...âŒȘ}
+\end{MyVerbatim}
+
+The key/value options are as follows:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item \textbf{[Name=]} Required. This is the recipe name. it is the only required key/value option.
+ \item \textbf{[Yield=]} Optional. You can optionally provide the \Quote{yield} of the recipe.
+ \item \textbf{[NoIdxName=]} Optional. As a general rule, the recipe name (as entered in the \textbf{Name=} option) is included in the Index to the cookbook (in the back matter). However, if you set this key to the number '1', the recipe name will not be placed in the Index. The purpose of this option is to allow you to make enties in the \Cmd{index} that are somewhat different than the actual recipe name. For example, perhaps you want to slightly shorten the recipe name for the Index.
+ \item \textbf{[IndexA=]} Optional. This is where you would enter alternate text for this recipe's index.
+ \item \textbf{[IndexB=]} Optional. Use this if you want another recipe index entry.
+ \item \textbf{[IndexC=]} Optional. Use this if you want yet another recipe index entry.
+ \item \textbf{[XRefLabel=]} Optional. Normally, recipes do not have a cross-reference \Cmd{label} created. Use this key/value option if you want to create a cross-reference \Cmd{label} for this recipe (the value entered here is the \Cmd{label}). That allows you to reference this recipe's page number from another location in the cookbook.
+\end{itemize}
+
+\begin{SideNote}
+ {This is a good place to remind you of the special handling needed when the \pkg{value} element of a key/value entry includes a comma. Suppose, for example, that your recipe is \textit{Pasta with Sausage, Tomatoes and Cream}. If your key/value entry is \textbf{Name=Pasta with Sausage, Tomatoes and Cream}, then they key/value parser will think the \pkg{Name=} entry ends at the comma. The solution is to put an extra set of curly braces around the value, such as: \textbf{Name=\{Pasta with Sausage, Tomatoes and Cream\}}. That tells the parser to treat the internally braced text as one unit.
+ }
+\end{SideNote}
+
+Following is the code defining the \Cmd{RecipeNameAndYield} command:
+
+\begin{MyVerbatim}
+\pgfkeys{
+ /RecipeNameAndYield/.is family, /RecipeNameAndYield,
+ default/.style = {Name = 0, NoIdxName = 0, XRefLabel = \empty, Yield = \empty,
+ IndexA = \empty, IndexB = \empty, IndexC = \empty},
+ Name/.estore in = \RecipeName,
+ NoIdxName/.estore in = \NoIndexName,
+ IndexA/.estore in = \IdxA,
+ IndexB/.estore in = \IdxB,
+ IndexC/.estore in = \IdxC,
+ XRefLabel/.estore in = \XRefLbl,
+ Yield/.estore in = \RecipeYield,
+}
+
+\NewDocumentCommand \RecipeNameAndYield {m}{%
+ \pgfkeys{/RecipeNameAndYield, default, #1}%
+ % Put the recipe name in the Index, unless the user sets NoIdxName = 1:
+ \ifnum\NoIndexName=1 \relax\else\index{\RecipeName}\fi
+ % Can add up to three other Index entries:
+ \ifx\IdxA\empty\relax\else\index{\IdxA}\fi
+ \ifx\IdxB\empty\relax\else\index{\IdxB}\fi
+ \ifx\IdxC\empty\relax\else\index{\IdxC}\fi
+ % Did the user ask us to set up a label for cross-reference?:
+ \ifx\XRefLbl\empty\relax\else\RecipeLabel{\XRefLbl}\fi
+ % Add a bookmark (only adds bookmark if hyperref is active):
+ \ifnum\NoIndexName=1 \RecipeBookmark{\IdxA}\else\RecipeBookmark{\RecipeName}\fi
+ % Now write the recipe name and (possibly) the yield
+ \begin{center}%
+ {\FontRecipeName{\RecipeName}}\par%
+ \ifx\RecipeYield\empty\relax\else {\textit{\RecipeYield}}\par \fi%
+ \end{center}%
+}
+\end{MyVerbatim}
+
+
+\section{Recipe Story}
+
+Often there is a story or other information specific to a recipe. In our design, that story follows the recipe's \pkg{RecipeNameAndYield} and precedes its \pkg{IngredientsAndSteps}. We call it the \textit{recipe story}.
+
+For reasons of readability, and for visual interest, we indent both the left and right margin of the \textit{recipe story} by 20 points and use a font size of 13 points. However, like the chapter intro, you are free to use most any of the \latex text markup commands\footnote{But see Q 66332 and Q 183569. You cannot use a list environment or similar.}. A simplified version of the \Cmd{RecipeStory} command follows. The actual code (page \pageref{RealRecipeStory}) includes an optional argument that you will rarely (if ever) use.
+
+\begin{MyVerbatim}
+\def\RecipeStoryIndent{20 pt}
+\NewDocumentCommand \RecipeStory {+m}{%
+ \FontRecipeStory
+ \leftskip=\RecipeStoryIndent \rightskip=\leftskip
+ {#1\par} % the \par needed by \lettrine
+}
+\end{MyVerbatim}
+
+
+\section{Ingredients and Steps}
+
+Following the recipe name/yield and (possibly) a recipe story, there is a list of the ingredients, plus the steps required to make the recipe. We have formatted this section into two columns, with the ingredients in a semi-bold face of the sans serif font and the steps in a normal face of the roman (serif) font. Both fonts use the default font size of 10.95 points.
+
+The code to accomplish this uses the \pkg{IngredientsAndSteps} environment to establish the two-column format, and then the \Cmd{ListIngredientsAndSteps} command to list the ingredients and steps. We discuss them below.
+
+\subsection{The \pkg{IngredientsAndSteps} Environment}
+
+A simplified version of the \pkg{IngredientsAndSteps} environment follows. The actual code (page \pageref{RealIngStepEnv}) is somewhat complicated. It has no mandatory arguments, but has several optional \pkg{key=value} style arguments that you will rarely (if ever) use.
+
+When used without optional arguments, the \pkg{IngredientsAndSteps} environment is very simple. Its only purpose is to establish the two-column format, using code that is equivalent to the following:
+
+\begin{MyVerbatim}
+\NewDocumentEnvironment{IngredientsAndSteps}{}
+ {\begin{multicols}{2}} % The "before environment" setup
+ {\end{multicols}} % The "after environment" cleanup
+\end{MyVerbatim}
+
+\noindent We simply provide a wrapper around the \pkg{multicols} environment where we select the two-column option.
+
+\subsection{The \Cmd{ListIngredientsAndSteps} Command}
+
+We use the \Cmd{ListIngredientsAndSteps} command to list the ingredients and provide the steps needed to make the recipe. There is one optional argument and two mandatory arguments, as follows:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item \textbf{[Arg 1]} Optional. In some recipes, there may be multiple sections of ingredients and steps. For example, the first section might be the ingredients and steps to make the cake, and the second section the ingredients and steps to make the frosting. In that case, you may want a label associated with each ingredients and steps section. The optional argument is the name of that section, formatted in bold italics and using the \pkg{clrIngTitle} color.
+ \item \textbf{[Arg 2]} Required. This is the list of ingredients. Each ingredient entry is separated by a blank line (i.e., the paragraph indicator in \latex text entry). Each paragraph becomes an ingredient in the list, formatted as \Cmd{raggedright} (not right justified), with a separation of 2 points between paragraphs.
+ \item \textbf{[Arg 3]} Required. This is the recipe steps. Each step entry is separated by a blank line (again, the paragraph indicator). Each paragraph becomes a recipe step. Unlike the ingredients, the steps are formatted as justified (the document default). We use the \pkg{enumerate} list environment to list the steps by number.
+\end{itemize}
+
+Following is the code defining the \Cmd{ListIngredientsAndSteps} command:\MyLabel{IngredientsHeading}
+
+\begin{MyVerbatim}
+\NewDocumentCommand \IngredientsHeading {O{0} m O{2}}%
+ {\begingroup \setlength{\parindent}{0pt} \ifnum #1 > 0 {\vspace{#1 pt}}\fi
+ \FontIngTitle\color{clrIngTitle} #2\par\vspace{#3 pt} \endgroup}%
+
+\NewDocumentCommand \ListIngredientsAndSteps {o +m +m}{%
+ \IfValueT {#1}{\IngredientsHeading{#1}[3]}%
+ {\begingroup\ifx\relax#2\relax\else\FontIngredients{}\IngredientsList{#2}\fi\endgroup}% arg2
+ {\begingroup\ifx\relax#3\relax\else\FontSteps{}\RecipeSteps{#3}\fi\endgroup}% % arg3
+}
+
+\NewDocumentCommand \IngredientsList { >{\SplitList{\par}} +m}{%
+ \setlength{\parskip}{2pt}\raggedright%
+ \ProcessList{#1}{\ProcessIngList}}
+
+\newcommand\ProcessIngList[1]{\hangindent1em #1\par}
+
+\NewDocumentCommand \RecipeSteps { >{\SplitList{\par}} +m}{%
+ \begin{enumerate}[itemsep=2pt plus 1 pt minus 1pt, parsep=0pt plus 1pt,
+ topsep=4.5pt plus 2.0pt minus 1.0pt, leftmargin=*]
+ \ProcessList{#1}{\item}
+ \end{enumerate}
+}
+\end{MyVerbatim}
+
+As indicated in the description of the optional argument, please note that one \pkg{IngredientsAndSteps} environment may contain more than one \Cmd{ListIngredientsAndSteps} command.
+
+\section{Attribution}
+
+If the source of the recipe is known, it is proper to acknowledge that source. In that case, after the listing of ingredients and steps, we include an attribution. It is formatted as right justified and italics, in the default 11 point roman/serif font. The code:
+
+\begin{MyVerbatim}
+\NewDocumentCommand \Attribution{m}{{\hspace*\fill}{\textit{#1}}}%
+\end{MyVerbatim}
+
+\section{Additional Comments/Advice}
+
+There may be some recipe side notes and/or advice that is not properly included within the recipe, but is noted afterwards. We provide three separate environments to display that information -- the \pkg{Tip}, the \pkg{Cheffy}, and the \pkg{ChefNotes} environments -- all based on the \pkg{tcolorbox} package. All three environments take one mandatory arguments, which is the text (and any associated \latex markup commands) to be included in the body of the \pkg{tcolorbox} environment.
+
+For example, the following code...:
+
+\begin{MyVerbatim}
+\begin{Tip}
+ {You can substitute \fr1/2 cup of vegetable or light olive oil for the butter.}
+\end{Tip}
+
+\begin{Cheffy}
+ {Using some almond flour results in biscotti with a delightful crunchy texture without making
+ them hard. I encourage you try useing 25\% almond flour.}
+\end{Cheffy}
+
+\begin{ChefNote}
+ {The amount of flour might vary if you use all-purpose flour versus “00” flour. If Tipo “00”
+ flour, you might need a little more flour. Use the texture of your dough as a guide.}
+\end{ChefNote}
+\end{MyVerbatim}
+
+\noindent...gives you the following results:
+\vspace{5pt}
+
+\begin{Tip}
+ {You can substitute \fr1/2 cup of vegetable or light olive oil for the butter.}
+\end{Tip}
+
+\begin{Cheffy}
+ {Using some almond flour results in biscotti with a delightful crunchy texture without making them
+ hard. I encourage you try using 25\% almond flour.}
+\end{Cheffy}
+
+\begin{ChefNotes}
+ {The amount of flour might vary if you use all-purpose flour versus “00” flour. If Tipo “00” flour,
+ you might need a little more flour. Use the texture of your dough as a guide.}
+\end{ChefNotes}
+
+Of course, given the needs of your cookbook, you can easily change the title and color of these three environments. The \latex code follows (see page \pageref{Color} for information on the colors used below):
+
+\begin{MyVerbatim}
+\usepackage{tcolorbox}
+\tcbset{fonttitle=\FontTitleColorBox}
+
+\NewDocumentEnvironment{Tip}{+m}
+ {
+ \begin{tcolorbox}[colback=clrBackTip,colframe=clrFrameTip, title=Food for Thought]
+ {#1}%
+ \end{tcolorbox}
+ }
+
+\NewDocumentEnvironment{Cheffy}{+m}
+ {
+ \begin{tcolorbox}[colback=clrBackCheffy,colframe=clrFrameCheffy, title=Let's Get Cheffy]
+ {#1}%
+ \end{tcolorbox}
+ }
+
+\NewDocumentEnvironment{ChefNotes}{+m}
+ {
+ \begin{tcolorbox}[colback=clrBackNotes,colframe=clrFrameNotes,title=Chefnotes]
+ \ChefNote{}{#1}%
+ \end{tcolorbox}
+ }
+\end{MyVerbatim}
+
+\section{Odds and Ends}
+
+This section includes a number of cooking-related commands that were included in our preamble. Some you may find useful; others, not so much. Even if not right for your cookbook, we hope you can use the ideas here to make your own \Quote{helper} commands.
+
+\subsection{Various Simple but Useful Commands/Defines}
+
+We present the code immediately below and selectively discuss that code following:
+
+\begin{MyVerbatim}
+\def\nl{\par} % see Q 96247 for why we defined \nl for use with pgfkeys
+
+\NewDocumentCommand \PreheatC{m}{Preheat oven to #1\Degrees convection.\thinspace\Oven}%
+\NewDocumentCommand \PreheatR{m}{Preheat oven to #1\Degrees regular oven.\thinspace\Oven}%
+
+\NewDocumentCommand \Tbl{o}{\IfNoValueTF{#1}{tablespoon }{tablespoon#1}}%
+\NewDocumentCommand \tsp{o}{\IfNoValueTF{#1}{teaspoon }{teaspoon#1}}%
+\NewDocumentCommand \Pd{o}{\IfNoValueTF{#1}{pound }{pound#1}}%
+\NewDocumentCommand \Ounce{o}{\IfNoValueTF{#1}{ounce }{ounce#1}}%
+\NewDocumentCommand \Degrees{o}{\IfNoValueTF{#1}{\TextDegree{} }{\TextDegree{}#1}}%
+
+\NewDocumentCommand \AxB{m m o}{{#1\thinspace{x}\thinspace#2}\IfValueT{#3}{#3}}%
+\NewDocumentCommand \AxBxC{m m m o}{%
+ {#1\thinspace{x}\thinspace#2\thinspace{x}\thinspace#3}\IfValueT{#4}{#4}}%
+
+\NewDocumentCommand \Inch{m}{{#1-inch}}%
+\NewDocumentCommand \EditNote{m}{{{\color{clrEditNote} #1}}}%
+\NewDocumentCommand \Quote{m}{{``#1''}}%
+
+\NewDocumentCommand \IngredientsSeparator{}{{\FontStepsDefault \CtrDots\CtrDots}}%
+\NewDocumentCommand \SeparateParagraphs{}{{\vskip 5pt}}%
+\NewDocumentCommand \Recipe{+m}{{\textit{\textsb{#1}}}}%
+\end{MyVerbatim}
+
+The definition of \Cmd{nl} is needed to get around a problem with the \pkg{pgfkeys} package (for handling \pkg{key=value} arguments), because \pkg{pgfkeys} does not allow use of \Cmd{par} in a \pkg{value}.
+
+There is a story behind the \Cmd{Preheat} commands. Traditionally, cookbooks have assumed the reader has only a regular (not convection) oven. We went back and forth on whether we should stick with tradition. When we surveyed friends and family most likely to use our cookbook, almost all had convection ovens. If we gave cooking times and temperatures only for regular ovens, those times and temperatures would be wrong for the vast majority of our readers. Our compromise was to include an \Cmd{Oven} image (drawn using the \pkg{tikz} package) after the \Cmd{Preheat} instructions. That oven acts as a reminder to the reader that they may need to adjust time and temperature based on their particular oven type. Of course, even if the reader has the indicated oven type, it also acts as a reminder that each oven is different -- they should adjust if their oven normally cooks hotter or cooler. If the \Cmd{Oven} image is too quirky for you, just remove it from the \Cmd{Preheat} commands.
+
+The five commands (beginning with \Cmd{Tbl} and ending with \Cmd{D}egrees) first came about due to indecision. When first entering our recipes, we couldn't decide whether \Quote{teaspoon} and \Quote{tablespoon} should be spelled our or abbreviated. We put off the decision by using these commands, which could be redefined later based on our final decision. We quickly ran into a problem in cases where we wanted no space after the command, such as plurals (needing an 's' after tablespoon), punctuation or closed parenthesis. That lead to the current approach, with an optional argument that is appended without an space; without the optional argument, a space is automatically inserted.
+
+The next two commands (\Cmd{AxB} and \Cmd{AxBxC}) are used to get the right spacing when you want \Quote{5 x 7} or \Quote{5 x 7 x 2}. By using \Cmd{thinspace}, we believe the results are better: e.g.: \Quote{5\thinspace{x}\thinspace{7}} and \Quote{5\thinspace{x}\thinspace{7}\thinspace{x}\thinspace{2}}. We also use the same optional argument technique as with teaspoon.
+
+We use the \Cmd{EditNote} command to insert editing notes {\color{red}{(in red)}} in the cookbook, allowing comments and notes at places that need some further work. The \Cmd{Quote} command ensures that quote marks around text are the correct shape for beginning and ending quotes.
+
+In some recipes, there is a logical separation of ingredients into two parts. The \Cmd{IngredientsSeparator} command provides a visual marker (6 center dots) for that separation.
+
+\subsection{\Cmd{BakeUntil}}
+
+No doubt, your collection of recipes come from all sorts of sources, many no longer even known to you. There is no standard way to describe the steps to make a recipe, so your recipes likely vary substantially in the ordering and wording used to describe common recipe steps. It is good goal to make your cookbook recipes as consistent as possible in this regard.
+
+One place we constantly ran across this issue is in \Quote{Bake Until} instructions. We decided to standardize our instruction by use of a \Cmd{BakeUntil} command. This command takes one key/value style argument.
+
+The key/value options are as follows:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item \textbf{[Min=]} Required. The minimum baking time.
+ \item \textbf{[Max=]} Optional. The maximum baking time.
+ \item \textbf{[TPick=]} Optional. If equal to 1, then the \Quote{until} is \Quote{until toothpick tests clean}
+ \item \textbf{[GBrown=]} Optional. If equal to 1, then the \Quote{until} is \Quote{until golden brown}
+ \item \textbf{[Until=]} Optional. Use this if you want any other \Quote{until} phrase.
+\end{itemize}
+
+Here are three examples:
+
+\begin{MyVerbatim}
+\BakeUntil[Min=15, Max=18, GBrown=1]
+\BakeUntil[Min=15, TPick=1]
+\BakeUntil[Min=15, Max=18, Until=until firm to the touch]
+\end{MyVerbatim}
+
+The results:
+
+\vspace{5pt}
+\quad Bake about 15-18 minutes, until golden brown
+
+\quad Bake about 15 minutes, until toothpick tests clean
+
+\quad Bake about 15-18 minutes, until firm to the touch
+
+\vspace{5pt}
+Following is the code defining the \Cmd{BakeUntil} command:
+
+\begin{MyVerbatim}
+\pgfkeys{
+ /BakeUntil/.is family, /BakeUntil,
+ default/.style = {Min = 0, Max = 0, TPick = 0, GBrown = 0, Until = \empty},
+ Min/.estore in = \BkMin,
+ Max/.estore in = \BkMax,
+ TPick/.estore in = \BkTPick,
+ GBrown/.estore in = \BkGBrown,
+ Until/.estore in = \BkUntil,
+}
+
+\NewDocumentCommand \BakeUntil{m}{%
+ \pgfkeys{/BakeUntil, default, #1}%
+ \newcount\MyCount \MyCount = \BkMax%
+ \newcount\MyCase%
+ {Bake about \BkMin}%
+ \ifnum\MyCount > 0 {-\BkMax}\fi
+ { minutes}%
+ \ifx\BkUntil\empty \MyCase = 0 \else \MyCase = 1 \fi%
+ \ifnum\BkTPick = 1 \MyCase = 2 \fi%
+ \ifnum\BkGBrown = 1 \MyCase = 3 \fi%
+ \ifcase\MyCase% '0' case - do nothing
+ \or {, \BkUntil}% '1' case - use the "Until" text
+ \or {, until toothpick tests clean}% '2' case - TPick
+ \or {, until golden brown}% '3' case - GBrown
+ \fi
+}
+\end{MyVerbatim}
+
+
+\subsection{A Few Other Commands}
+
+\textbf{Copyright}. We establish the environment for the copyright page. In that environment: (1) the font size is set to 9 points, (2) there is no indentation of the first line of a paragraph, and (3) all of the text is pushed down (as far as possible) to the bottom of the page.
+
+\begin{MyVerbatim}
+\NewDocumentEnvironment{CopyrightPage}{} % See 31186
+ {\FontCopyrightPage\setlength{\parindent}{0pt}\par\vspace*{\fill}}
+ {\clearpage}
+\end{MyVerbatim}
+
+\noindent \textbf{Hidden Lines}. When listing recipe ingredients and steps, the \pkg{multicol} environment matches the lengths of the first and second columns. There are some cases where the results don't look quite right. For example, the ingredients may take up \textit{almost} all of the first column, but not quite. So the listing of steps begins with one (lonely) line in the first column. We use the \Cmd{InsertHiddenLines} command to insert an extra (non-visible) ingredient that tricks the \pkg{multicol} environment into moving the first line of the recipe steps to the second column.
+
+The \Cmd{InsertHiddenLines} command takes one parameter: the number of hidden lines to insert:
+
+\begin{MyVerbatim}
+\newcount\LineCount
+\NewDocumentCommand \InsertHiddenLines{m}{%
+ \LineCount = #1
+ {%
+ \newcount\foo \foo=0
+ \loop % \loop starts the construct ended by \repeat
+ \phantom{.}\par \advance \foo by 1
+ \ifnum \foo < \LineCount \repeat % \repeat also “serves as” the \fi to the \ifnum
+ }%
+}
+\end{MyVerbatim}
+
+\section{Handling of Long Recipes}
+
+The code for the \Cmd{RecipeStory} command and the \pkg{IngredientsAndSteps} environment is actually more complicated than was shown above. In both cases, the actual code includes a rarely-used optional parameter. For a longer recipe, these optional parameters allow certain tweaks to the recipe layout that may allow you to keep the recipe name plus the full text of the ingredients and steps on one page.
+
+\subsection{The \Quote{Real} \Cmd{RecipeStory} Command}\MyLabel{RealRecipeStory}
+
+In our standard setup, the recipe story comes after the recipe name and before the ingredients and steps. One potential problem is that the length of the recipe story may cause the ingredients and steps to continue past the bottom of the current page. To avoid that problem, we designed the \Cmd{RecipeStory} command to include an option of dividing the recipe story into two parts. That allows one part (or none) to print before the ingredients and steps and the remaining part to print after.
+
+The parameters for the actual \Cmd{RecipeStory} command:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item \textbf{[Arg \#1]} Optional. Permitted values: non-negative integers less than or equal to the number of lines in the recipe story. If a value is provided, then the given number of lines (possibly zero) of the recipe story will be printed \textit{before} the ingredients and steps. To print the remaining lines after the ingredients and steps, you issue the \Cmd{Finish RecipeStory} command.
+ \item \textbf{[Arg \#2]} Required. This is the text of the recipe story. As mentioned above, this may also include many of the \latex text markup commands. (However, if you use the optional argument, your \latex code should not change the height of the baseline from the predefine \Cmd{RStoryFontBaseline} value).
+\end{itemize}
+
+The actual code follows:
+
+\begin{MyVerbatim}
+\def\RecipeStoryIndent{20 pt}
+\newbox\StoryBox
+\newbox\StoryBoxA
+\NewDocumentCommand \RecipeStory {o +m} % arg1 = optional = lines for first part
+{ % arg2 = story text
+\setbox\StoryBox\vbox
+ {
+ \FontRecipeStory
+ \leftskip=\RecipeStoryIndent \rightskip=\leftskip % Q 66332
+ {#2\par} % the \par needed by \lettrine
+ }
+ \IfNoValueTF {#1} % NoValue=TRUE or NoValue=FALSE?
+ {\unvbox\StoryBox} % NoValue=TRUE, so flush the full StoryBox
+ { % handle the NoValue=FALSE case
+ \ifnum #1 > 0 % > 0 means we split the story into two part; print the first part here
+ { % = 0 means ALL of story is deferred
+ \setbox\StoryBoxA=\vsplit\StoryBox to #1\dimexpr \RStoryFontBaseline %
+ \unvbox\StoryBoxA%
+ }
+ \fi
+ }
+}
+
+\NewDocumentCommand \FinishRecipeStory{}%
+ {\ifvoid\StoryBox \else \smallskip\unvbox\StoryBox\par\medskip\fi} %
+\end{MyVerbatim}
+
+\subsection{The \Quote{Real} \pkg{IngredientsAndSteps} Environment}\MyLabel{RealIngStepEnv}
+
+There is one more thing to try if splitting the recipe story, above, does not work to fit the recipe name plus ingredients and steps all on one page. We have coded the \pkg{IngredientsAndSteps} environment to provide some additional options.
+
+In it default mode, the \pkg{IngredientsAndSteps} environment simply: (1) creates a two-column environment, and (2) sets the \Cmd{FontIngredients} and \Cmd{FontSteps} font selection commands to use their default font size of 10.95 points.
+
+Using an optional parameter with a key/value interface, the the \pkg{IngredientsAndSteps} environment can be used to change (temporarily) the default text width and default font size. By increasing the text width and/or decreasing the font size for the ingredients and steps, it might be possible to fit the recipe on one page. The key/value options are as follows:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item \textbf{[AdjIFont=]} Default value = 1. This is a floating point number that indicates the size you want the \Cmd{FontIngredients} font, computed as a ratio of the default size. For example, if AdjIFont=0.92, then the font would be set to 92 percent of its default size. IMPORTANT: This is the \Quote{controlling} ratio for all font parameters. If any of the other font parameters are set to 0 or not entered, then that other parameter will have the same value as set here.
+ \item \textbf{[AdjIBaseline=]} Default value = 0. This is a floating point number that indicates the size you want the \Cmd{FontIngredients} baseline, computed as a ratio of the default baseline size. For example, if AdjIBaseline=0.92, then the ingredient font's baseline would be set to 92 percent of its default size. If 0 or not entered, then AdjIBaseline = AdjIFont.
+ \item \textbf{[AdjSFont=]} Default value = 0. This is a floating point number that indicates the size you want the \Cmd{FontSteps} font, computed as a ratio of the default size. For example, if AdjIFont=0.92, then the font would be set to 92 percent of its default size. If 0 or not entered, then AdjSFont = AdjIFont.
+ \item \textbf{[AdjSBaseline=]} Default value = 0. This is a floating point number that indicates the size you want the \Cmd{FontSteps} baseline, computed as a ratio of the default baseline size. For example, if AdjIBaseline=0.92, then the steps font's baseline would be set to 92 percent of its default size. If 0 or not entered, then AdjSBaseline = AdjIFont.
+ \item \textbf{[AddWidth=]} Default value = 0. This is amount (taken as points) that you want to increase both the left and right margins. So, if AddWidth=5, then the text width will be increased by 5 points on both the left and right margins.
+\end{itemize}
+
+Following is the code defining the \pkg{IngredientsAndSteps} environment:
+
+\begin{MyVerbatim}
+\usepackage{multicol} % allows multiple column environments
+\usepackage[strict]{changepage} % for \adjustwidth
+\usepackage{xfp} % for fpeval floating point macro
+
+\pgfkeys{ /IngredientsAndSteps/.is family, /IngredientsAndSteps,
+ default/.style = {AdjIFont = 1, AdjIBaseline = 0,
+ AdjSFont = 0, AdjSBaseline = 0,
+ AddWidth = 0, RaggedCols = 0},
+ AdjIFont/.estore in = \AdjustIFont,
+ AdjIBaseline/.estore in = \AdjustIBaseline,
+ AdjSFont/.estore in = \AdjustSFont,
+ AdjSBaseline/.estore in = \AdjustSBaseline,
+ AddWidth/.estore in = \AddPageWidth,
+ RaggedCols/.estore in = \RaggedColumns,
+}
+
+\newdimen\IFont \newdimen\IBase \newdimen\SFont \newdimen\SBase \newdimen\AddWidth
+
+\NewDocumentEnvironment{IngredientsAndSteps}{o}
+{ % Do the before-environment setup:
+\IfNoValueTF {#1}%
+ % Handle the simple case = no optional key/value argument:
+ {\AddWidth = 0 pt}
+ % Handle the special case = there IS an optional key/value argument:
+ {
+ \pgfkeys{/IngredientsAndSteps, default, #1}%
+
+ \IFont = \AdjustIFont pt
+ \IBase = \AdjustIBaseline pt
+ \SFont = \AdjustSFont pt
+ \SBase = \AdjustSBaseline pt
+ \AddWidth = \AddPageWidth pt
+
+ \ifdim\IBase = 0 pt \IBase = \IFont \fi
+ \ifdim\SFont = 0 pt \SFont = \IFont \fi
+ \ifdim\SBase = 0 pt \SBase = \IFont \fi
+
+ \RenewDocumentCommand\FontIngredients{}{\FontIngDefault\fontsize{\fpeval{\StdIFontSize * \IFont}}
+ {\fpeval{\StdIBaseline * \IBase}}\selectfont}
+ \RenewDocumentCommand\FontSteps{}{\FontStepsDefault\fontsize{\fpeval{\StdSFontSize * \SFont}}
+ {\fpeval{\StdSBaseline * \SBase}}\selectfont}
+ }
+ % Now, finish setup:
+\adjustwidth{-\AddWidth}{-\AddWidth}
+\begin{multicols}{2}%
+} % End of the before-environment setup
+ % Now do the after-environment cleanup:
+{
+\end{multicols}
+\endadjustwidth
+ % We need to restore the fonts to default size IF there was an optional key/value argument:
+\IfValueT {#1}
+ {
+ \RenewDocumentCommand \FontIngredients {}{\FontIngDefault}
+ \RenewDocumentCommand \FontSteps {}{\FontStepsDefault}
+ }
+} % End of the "after environment" cleanup
+\end{MyVerbatim}
+
+\section{Adding Images in the Chapter Intro}
+
+You may wish to strategically place images in the middle of the \textit{chapter intro} text. For example, on the first page of a chapter, you may begin with the \textit{chapter intro} text, then include image(s) at the bottom of that first page, and then complete the \textit{chapter intro} text on the next page.
+
+\subsection{The \Quote{Real} \Cmd{ChapterIntro} Command}\MyLabel{RealChapterIntro}
+
+The code for the \Cmd{ChapterIntro} command is shown below. It allows for splitting the \textit{chapter intro} into two parts and is essentially identical to the code for the \Cmd{RecipeStory} command. For the use of the optional first argument, see the \Cmd{RecipeStory} command (page \pageref{RealRecipeStory}). To print the second part of the \textit{chapter intro} text, you issue the \Cmd{FinishChapterIntro} command.
+
+\begin{MyVerbatim}
+\newbox\IntroBox
+\newbox\IntroBoxA
+\NewDocumentCommand \ChapterIntro {o +m} % arg1 = optional = lines for first part
+{ % arg2 = chapter intro text
+\setbox\IntroBox\vbox
+ {
+ \FontChapterIntro {#2\par}% the \par needed by \lettrine
+ }
+\IfNoValueTF {#1} % NoValue=TRUE or NoValue=FALSE?
+ {\unvbox\IntroBox} % NoValue=TRUE, so flush the full IntroBox
+ { % handle the NoValue=FALSE case
+ \ifnum #1 > 0 % > 0 means we split the story into two part; print the first part here
+ { % = 0 means ALL of story is deferred
+ \setbox\IntroBoxA=\vsplit\IntroBox to #1\dimexpr \CIntroFontBaseline %
+ \unvbox\IntroBoxA %
+ }
+ \fi
+ }
+}
+
+\NewDocumentCommand \FinishChapterIntro{}%
+ {\ifvoid\IntroBox \else \smallskip\unvbox\IntroBox\par\medskip\fi} %
+\end{MyVerbatim}
+
+\newpage
+\part{The PDF File}
+
+We have two separate goals for the PDF file created by \latex[.] We need a PDF file in the proper form to submit to a print-on-demand printer. We also need a PDF file that is a digital version of the cookbook, but also includes bookmarks and links. Unfortunately, the two styles of PDF files are not identical and therefore require different compile-time options.
+
+The best way to show the differences between the digital and print-on-demand compiles is to first describe our setup for the digital cookbook. We will then describe the changes needed to generate the print-on-demand PDF file.
+
+\section{The Digital Cookbook}
+
+In the digital version of the cookbook, we would like to include bookmarks and other links to content. Specifically, we would like:
+
+\begin{itemize}[label=\textbullet, leftmargin=*, itemsep=1pt, parsep=1pt]
+ \item Top-level bookmarks equal to the entries in the Table of Contents.
+ \item Second-level bookmarks for each recipe (associated with its top-level cookbook chapter).
+ \item For the recipe Index, links back to each recipe by clicking on the recipe's indicated page number.
+ \item Within the cookbook main text, where there is a page number cross-reference to another recipe, a link back to that recipe by clicking on the cross-reference page number.
+\end{itemize}
+
+We implement these bookmarks and links by using the \pkg{hyperref} and \pkg{bookmark} packages. First, we load the packages (and set the color of the links):
+
+\begin{MyVerbatim}
+\usepackage[bookmarks=true,colorlinks=true, allcolors=clrHyperRef]{hyperref}
+\usepackage{bookmark} % Q 247158 shows Heiko (the author) loads both hyperref and bookmark
+\end{MyVerbatim}
+
+To create a bookmark/link for each recipe, we define the \Cmd{RecipeBookmark} command, which will be called by the \Cmd{RecipeNameAndYield} command. (The [1] in \Cmd{pdfbookmark} makes the recipe a second-level bookmark):
+
+\begin{MyVerbatim}
+\newcounter{ctrRecipe} % initially set to zero by \newcounter macro
+\NewDocumentCommand \RecipeBookmark{m}{%
+ \ifx\%1\empty\relax\else\stepcounter{ctrRecipe}\pdfbookmark[1]{#1}{Recipe\arabic{ctrRecipe}}\fi
+}
+\end{MyVerbatim}
+
+To create a linkable \Cmd{label} to a recipe, we define the \Cmd{RecipeLabel} command (note: \Cmd{phantomsection} is from \pkg{hyperref} and marks the linkable location of the recipe). Our \Cmd{RecipePageNo} command then uses \Cmd{pageref} to display the page number and (via \pkg{hyperref}) provide a link to the recipe \Cmd{label}:
+
+\begin{MyVerbatim}
+\NewDocumentCommand \RecipeLabel{m}{\phantomsection\label{recipe:#1}}
+\NewDocumentCommand \RecipePageNo{m}{\pageref{recipe:#1}}
+\end{MyVerbatim}
+
+Finally, we define the \Cmd{CookbookIndex} command (called from \pkg{cb-frontmatter.tex}) to create the recipe Index, make the Index a top-level part of the bookmarks, and include the Index in the Table of Contents:
+
+\begin{MyVerbatim}
+\NewDocumentCommand \CookbookIndex{}
+{
+\cleardoublepage % flush all material and clear until you start new odd numbered (recto) page
+\phantomsection\addcontentsline{toc}{chapter}{\indexname} % see also Q 59619
+\printindex
+}
+\end{MyVerbatim}
+
+\section{The Print-On-Demand Cookbook}
+
+There are generally stricter requirements for PDF files submitted for print-on-demand printing. We discuss the various issues below.
+
+\subsection{Embedded Fonts}
+
+Your print-on-demand company will require that all of your fonts are embedded in the PDF file. In most cases, it will be sufficient to include an \Quote{embedded subset} (i.e., includes only the glyphs that were actually used). However, we note Q 24005, where the questioner stated that the print-on-demand company lulu.com requires full font embedding. If that happens to you, a solution is provided at that question. But, as stated there, many font licenses disallow full font embedding. Check your font license if that situation arises.
+
+We note that our compiled PDF file includes an embedded subset of our fonts without any special or additional steps. You should still double-check your PDF file to make sure your fonts are embedded.
+
+As discussed at Section \ref{Glyphs} (page \pageref{Glyphs}), to avoid any unnecessary font issues, it is best to avoid loading any font you do not really need. For that reason, we relied on our already loaded fonts (rather than relying on \latex macros) for the degree, copyright, bullet and center (or mid) dot glyphs.
+
+\subsection{Bookmarks, Annotations, and Comments}
+
+Your PDF file should not include any bookmarks, links, annotations or comments. Because our digital cookbook includes bookmarks and links, we will need different compile-time options. We handle that by making a few small changes to the preamble. Near the top of the preamble, we use \Cmd{newif} to create a new conditional: \Cmd{ifHyperRef}. We set the value to \Cmd{HyperReftrue} if we are making the digital cookbook, and to \Cmd{HyperReffalse} if we are making the printed cookbook. For example, for the printed cookbook:
+
+\begin{MyVerbatim}
+ \newif\ifHyperRef \HyperReffalse
+\end{MyVerbatim}
+
+We also modify the first two code snippets shown in the above discussion of the Digital Cookbook. Below, the \pkg{hyperref} and \pkg{bookmark} packages are only loaded if we have \Cmd{HyperReftrue}. If \Cmd{HyperReffalse}, we only need to set the \Cmd{phantomsection} and \Cmd{RecipeBookmark} commands to do nothing:
+
+\begin{MyVerbatim}
+\ifHyperRef
+ \usepackage[bookmarks=true,colorlinks=true, allcolors=clrHyperRef]{hyperref}
+ \usepackage{bookmark}
+
+ \newcounter{ctrRecipe}
+ \NewDocumentCommand \RecipeBookmark{m}{%
+ \ifx\%1\empty\relax\else\stepcounter{ctrRecipe}\pdfbookmark[1]{#1}{Recipe\arabic{ctrRecipe}}\fi
+}
+\else
+ \providecommand\phantomsection{}% Q 44088
+ \NewDocumentCommand \RecipeBookmark{m}{}%
+\fi
+\end{MyVerbatim}
+
+\begin{SideNote}
+ {
+ You may run into anomalies in your compile if you switch back and forth between \Cmd{HyperReftrue} and \Cmd{HyperReffalse}. Because the \pkg{*.ind} index file was created with the \Quote{other} option, in the first switched compile, the contents of that file may contain unknown commands causing compile errors. Just run the compile again and all should be OK.
+ }
+\end{SideNote}
+
+
+\subsection{Trim Size, Crop Marks and Other Printer's Marks}
+
+Almost all print-on-demand companies require: (1) that the trim size indicated in the PDF file matches the trim size requested for the printed cookbooks, and (2) that there are no crop marks or other printer's marks in the submitted PDF file.
+
+The \Cmd{ifCookbookDraft} logic discussed on page \pageref{Geometry} handles the trim size, plus the crop marks and other printer's marks made by the \pkg{geometry} package. We also use \Cmd{ifCookbookDraft} logic to only load the \pkg{layout} and \pkg{lipsum} packages when we are in draft mode:
+
+\begin{MyVerbatim}
+\ifCookbookDraft
+ \usepackage{lipsum, layout}
+\fi
+\end{MyVerbatim}
+
+\noindent Note that some print-on-demand printers (e.g., Kindle Direct Publishing) will not accept a PDF file that includes filler from the \pkg{lipsum} package (or similar).
+
+\subsection{PDF/X}
+
+Although very few print-on-demand companies \textit{require} PDF/X compliant documents, it is almost always their preferred format. We have not taken the extra steps needed for full PDF/X compliance. However, you may wish to familiarize yourself with this (very large) topic. A good starting point is the documentation for the \pkg{pdfx} package.
+
+If you use \pkg{pdfx} or other methods of entering metadata (such as title, author, etc.) into you PDF file, be sure the entered information \boldit{exactly} matches the information you give to your print-on-demand company in their submittal forms.
+
+\subsection{Other Print-on-Demand Issues}
+
+Of course, document security of any type must not be used. For the best results, all images should be sized at 100\%, flattened to one layer and inserted into your file at a minimum resolution of 300 dots per inch. You should expect that all transparent objects will be flattened. See also Section \ref{Color} on page \pageref{Color} for consideration relating to color.
+
+\newpage
+\part{Examples}
+
+In this part, we present and discuss some example code (mostly for entering recipes). You will see \Quote{in action} the use of various commands and environments, and you will see how we use some of the helper macros. We assume you have downloaded and installed the \pkg{makecookbook} package, and that you are ready to compile the sample cookbook that uses \pkg{mycookbook} as its root directory.
+
+Recall that the \pkg{mycookbook/tex} directory holds two example chapters of recipes. To make those recipes easier to reference here, we name the first recipe \textbf{\Quote{A -- (With Recipe Name Here)}}, the second recipe \textbf{\Quote{B -- (With Recipe Name Here)}}, and so on. Here, we will refer to the included recipes by their first alphabetic letter only (e.g., \Quote{see recipe \textbf{D}}).
+
+\section{\Cmd{RecipeNameAndYield} Command}
+
+\subsection{Recipe A}
+
+Recipe \textbf{A} presents the simplest case of the \Cmd{RecipeNameAndYield} command. We enter only the recipe name (no yield, no special Index entries, no cross-reference label). Our actual code:
+
+\begin{MyVerbatim}
+\RecipeNameAndYield{Name=A -- Lemon Roasted Potatoes}
+\end{MyVerbatim}
+
+\subsection{Recipe B}
+
+In recipe \textbf{B} the \Cmd{RecipeNameAndYield} command includes an entry for \pkg{Yield=}. We also wanted the Index to hold only the actual recipe name (without the leading \textbf{B}), so we included \pkg{NoIdxName=1} and \pkg{IndexA=Pumpkin Pancakes}.
+
+On second thought, we decided a leading \textbf{B} was needed so you could use the index to find the recipe. We therefore added \pkg{IndexB=B!Pumpkin Pancakes}, which also allowed us to demonstrate the sub-entry indicator character !\footnote{see the \pkg{makeindex} package at \pkg{ctan.org/pkg/makeindex} for documentation of the \Cmd{index} command.} and create a sub-entry for this recipe. (Yes, it looks a little funny. In the real world, a sub-entry only looks right if there are multiple sub-entries under the entry).
+
+Check the Index entries for recipe \textbf{A} and recipe \textbf{B} to see the differences. Please note that you \textit{do not} need to include \pkg{NoIdxName=1} when you use \pkg{IndexA=} (You can have \textit{both} the original name and up to three alternate names).
+
+\begin{MyVerbatim}
+\RecipeNameAndYield{Name=B -- Pumpkin Pancakes, Yield=Yield: 6 Pancakes, NoIdxName=1,
+ IndexA=Pumpkin Pancakes, IndexB=B!Pumpkin Pancakes}
+\end{MyVerbatim}
+
+\subsection{Recipe C}
+
+Recipe \textbf{C} demonstrates use of \pkg{XRefLabel=} to create a cross-reference label for this recipe. (See recipe \textbf{D} for the reference back to this recipe). Our actual code:
+
+\begin{MyVerbatim}
+\RecipeNameAndYield{Name=C -- Pesto, XRefLabel=Pesto}%
+\end{MyVerbatim}
+
+\subsection{Recipe D}
+
+Recipe \textbf{D} demonstrates two things regarding the \Cmd{RecipeNameAndYield} command: (1) the use of \Cmd{nl} to manage multi-line text for the recipe or yield, and (2) the use of an extra set of curly braces when the key/value text includes commas. Our actual code:
+
+\begin{MyVerbatim}
+\RecipeNameAndYield{Name=D -- Pasta Genovese,
+ Yield={(Pasta with Pesto, Potatoes and Green Beans)\nl Makes 4 to 6 servings}}
+\end{MyVerbatim}
+
+\section{\Cmd{RecipeStory} Command}
+
+\subsection{Recipe A}
+
+Recipe \textbf{A} presents the typical case, using the \Cmd{RecipeStory} command \textit{without} the optional argument. We also demonstrate use of the \Cmd{lettrine} command. Our actual code:
+
+\begin{MyVerbatim}
+\RecipeStory{\lettrine{T}{his is a recipe} story. \lipsum[66]}
+\end{MyVerbatim}
+
+\subsection{Recipe E}
+
+Recipe \textbf{E} presents the special case, using the \Cmd{RecipeStory} command \textit{with} the optional argument. Note that our recipe is the same as recipe \textbf{A}, except we: (1) increased the length of the recipe story, and (2) included the optional argument to the \Cmd{RecipeStory} command ([8]) that prints only the first 8 lines of the recipe story before the recipe, with the balance printed at the location of the \Cmd{FinishRecipeStory} command. Our actual code:
+
+\begin{MyVerbatim}
+\RecipeStory[8]{\lettrine{T}{his is a recipe} story. \lipsum[1-3]}
+\end{MyVerbatim}
+
+
+\section{\pkg{IngredientsAndSteps} Environment}
+
+\subsection{Recipe A}
+
+Recipe \textbf{A} presents the typical case, using the \pkg{IngredientsAndSteps} environment \textit{without} the optional (key/value style) argument. In that case, they only thing the \pkg{IngredientsAndSteps} environment does is set up a two-column environment (using the \pkg{multicol} package) for entering the ingredients and steps. Our actual code (with pseudo-code for the \Cmd{ListIngredientsAndSteps} command):
+
+\begin{MyVerbatim}
+\begin{IngredientsAndSteps}
+ \ListIngredientsAndSteps{...ingredients...}{...steps...}
+\end{IngredientsAndSteps}
+\end{MyVerbatim}
+
+\subsection{Recipe F}
+
+Recipe \textbf{F} presents the special case, using the \pkg{IngredientsAndSteps} environment \textit{with} the optional (key/value style) argument. Here, we want to shrink the ingredients and steps fonts, and and their baselines, to 92\% of their default size. We also want to increase both the left and right margins by 5 points. Our actual code (with pseudo-code for the \Cmd{ListIngredientsAndSteps} command):
+
+\begin{MyVerbatim}
+\begin{IngredientsAndSteps}[AdjIFont=0.92, AddWidth=5]
+ \ListIngredientsAndSteps[Tomato Meat Sauce]{...ingredients...}{...steps...}
+ \ListIngredientsAndSteps[BĂ©chamel]{...ingredients...}{...steps...}
+ \ListIngredientsAndSteps[Assembly]{...ingredients...}{...steps...}
+\end{IngredientsAndSteps}
+\end{MyVerbatim}
+
+Note that these values allow the recipe to fit on one page (try that recipe without any optional key/value entries). You might also try playing with the optional key/value entries by entering your own values. For example, set both fonts and their baselines to different values.
+
+\section{\Cmd{ListIngredientsAndSteps} Command}
+
+\subsection{Recipe A}
+
+Recipe \textbf{A} presents the typical case, using the \Cmd{ListIngredientsAndSteps} command \textit{without} its optional argument. The first required argument is the list of ingredients, and the second is the list of steps. Our actual code:
+
+\begin{MyVerbatim}
+\ListIngredientsAndSteps
+ { % begin ingredients
+ 2 \Pd[s] baby Dutch gold potatoes, washed and cut in half
+
+ \fr1/2 cup water
+
+ \fr1/4 cup extra-virgin olive oil
+
+ ...and the rest of the ingredients
+ } % end ingredients
+ { % begin steps
+ \PreheatC{375} \ChefNote
+
+ In a \Inch{\AxB{9}{13}} baking dish, combine all ingredients except parsley.
+
+ Roast for 30 minutes.
+
+ ...and the rest of the steps
+ } % end steps
+\end{MyVerbatim}
+
+\subsection{Recipe F}
+
+Recipe \textbf{F} presents the special case, using the \Cmd{ListIngredientsAndSteps} command \textit{with} its optional argument. This normally is needed when you have more than one listing of ingredients and steps (e.g., one for making the cake and one for making the frosting). Our actual code (mostly pseudo-code, and for clarity we also show the \pkg{IngredientsAndSteps} environment, but not its optional arguments):
+
+\begin{MyVerbatim}
+\begin{IngredientsAndSteps}
+ \ListIngredientsAndSteps[Tomato Meat Sauce]
+ {
+ ...ingredients...
+ }
+ {
+ ...steps...
+ }
+ \ListIngredientsAndSteps[BĂ©chamel]
+ {
+ ...ingredients...
+ }
+ {
+ ...steps...
+ }
+ \ListIngredientsAndSteps[Assembly]
+ {
+ ...ingredients...
+ }
+ {
+ ...steps...
+ }
+\end{IngredientsAndSteps}
+\end{MyVerbatim}
+
+\subsection{Recipe I}
+
+Recipe \textbf{I} presents another special case. You might wish to divide the ingredients into separate groupings, each with a heading, but only have one grouping of recipe steps. We use the \Cmd{ListIngredientsAndSteps} command \textit{without} its optional argument. But we use the \Cmd{IngredientsHeading} helper command (page \pageref{IngredientsHeading}) to enter those heading within the listing of ingredients. Note the use of optional \pkg{Arg \#1} (for the second heading) -- that is the number of points of vertical skip before the heading. (Not really needed here, but it would be useful if the heading was not at the top of a column).
+
+\subsection{Recipes B, C and G}
+
+Our \pkg{IngredientsAndSteps} environment uses the \pkg{multicols} environment (from the \pkg{multicol} package). It creates a two-column environment for entering ingredients and steps. One of the features of the \pkg{multicols} environment is that it balances the lengths of the first and second column. In some instances, the result may not look right to you. For example, the ingredients may take up \textit{almost} all of the first column, but not quite. To balance the two columns, the \pkg{multicols} environment may put one line from the recipe steps in the first column.
+
+To work around the above problem, you can use the \Cmd{InsertHiddenLines} command. That command takes one mandatory parameter, which is the number of hidden lines to insert. Now look at the printed output for recipes \textbf{B}, \textbf{C} and \textbf{G}. You can probably see that we inserted, respectively, 1, 2 and 3 hidden lines at the bottom of the first column of those recipes.
+
+Recipe \textbf{B} also uses the \Cmd{IngredientsSeparator} command. That command provides a visual separation between ingredients. In this case, it separates the dry ingredients from the wet ingredients.
+
+\section{\Cmd{ChapterIntro} Command}
+
+\subsection{Chapter One}
+
+Chapter One presents the typical case, using the \Cmd{ChapterIntro} command \textit{without} the optional argument. We also demonstrate use of the \Cmd{lettrine} command. Our actual code:
+
+\begin{MyVerbatim}
+\ChapterIntro{
+ \lettrine{T}{his is the} chapter intro. \lipsum[1-3]
+}
+\end{MyVerbatim}
+
+\subsection{Chapter Two}
+
+Chapter Two presents the special case, using the \Cmd{ChapterIntro} command \textit{with} the optional argument. We wanted two side-by-side images at the bottom of the first page of the chapter. After a trial run, we calculated that the first 16 lines of the \textit{chapter into} text would fit (with the images) on page one. We print the balance of the \textit{chapter into} text with the \Cmd{FinishChapterIntro} command. Our actual code:
+
+\begin{MyVerbatim}
+\ChapterIntro[16]{\lipsum[1-3]}
+\SideBySide[LeftCaption={left caption}, RightCaption={right caption}]{image-a}{image-b}
+\FinishChapterIntro{}
+\end{MyVerbatim}
+
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-idxstyle.ist b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-idxstyle.ist
new file mode 100644
index 00000000000..0ea42555954
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-idxstyle.ist
@@ -0,0 +1,16 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% This file is from a question and answer (answer by Enrico Gregorio) at:
+%
+% https://tex.stackexchange.com/questions/396898/weird-padding-using-imakeidx
+%
+% This file is author-maintained and is one of the files that, collectively,
+% make up the MAKECOOKBOOK bundle available at:
+%
+% https://ctan.org/pkg/makecookbook
+%
+% For additional information, please see the associated README file.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+ delim_0 "\\betterdotfill "
+ delim_1 "\\betterdotfill "
+ delim_2 "\\betterdotfill "
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-lettrine.cfl b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-lettrine.cfl
new file mode 100644
index 00000000000..f2fa4a05063
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-lettrine.cfl
@@ -0,0 +1,44 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LICENSE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Copyright 2018 Terrence P. Murphy and Rosalie D'Amico.
+% This file may be distributed and/or modified under the conditions of the LaTeX Project
+% Public License (“LPPL”), either version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is at:
+% http://www.latex-project.org/lppl.txt.
+% This file is author-maintained and is one of the files that, collectively, make up the
+% MAKECOOKBOOK bundle available at https://ctan.org/pkg/makecookbook
+% For additional information, please see the associated README file.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%%% The settings below, for the Italianno font, were defined according to our visual tastes.
+%%% No mathematical rule based on the metrices was applied.
+%%% Though the result may not please you, it should be better than the default placement.
+%%% That said, comments are welcome.
+
+\LettrineOptionsFor{A}{loversize=0.15, findent=0.25\LettrineWidth, nindent=-0.07\LettrineWidth}
+\LettrineOptionsFor{B}{loversize=0.15, findent=0.12\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{C}{loversize=0.15, findent=0.14\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{D}{loversize=0.15, findent=0.15\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{E}{loversize=0.15, findent=0.20\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{F}{loversize=0.15, findent=0.34\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{G}{loversize=0.15, findent=0.16\LettrineWidth, nindent=0.00\LettrineWidth, depth=1}
+\LettrineOptionsFor{H}{loversize=0.15, findent=0.19\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{I}{loversize=0.15, findent=0.62\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{J}{loversize=0.15, findent=0.68\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{K}{loversize=0.15, findent=0.40\LettrineWidth, nindent=-0.18\LettrineWidth}
+\LettrineOptionsFor{L}{loversize=0.15, findent=0.05\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{M}{loversize=0.15, findent=0.21\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{N}{loversize=0.15, findent=0.28\LettrineWidth, nindent=-0.11\LettrineWidth}
+\LettrineOptionsFor{O}{loversize=0.15, findent=0.15\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{P}{loversize=0.15, findent=0.15\LettrineWidth, nindent=-0.18\LettrineWidth}
+\LettrineOptionsFor{Q}{loversize=0.15, findent=0.15\LettrineWidth, nindent=0.00\LettrineWidth, depth=1}
+\LettrineOptionsFor{R}{loversize=0.15, findent=0.07\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{S}{loversize=0.15, findent=0.18\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{T}{loversize=0.15, findent=0.64\LettrineWidth, nindent=-0.29\LettrineWidth}
+\LettrineOptionsFor{U}{loversize=0.15, findent=0.18\LettrineWidth, nindent=0.00\LettrineWidth}
+\LettrineOptionsFor{V}{loversize=0.15, findent=0.67\LettrineWidth, nindent=-0.43\LettrineWidth}
+\LettrineOptionsFor{W}{loversize=0.15, findent=0.43\LettrineWidth, nindent=-0.26\LettrineWidth}
+\LettrineOptionsFor{X}{loversize=0.15, findent=0.42\LettrineWidth, nindent=-0.23\LettrineWidth}
+\LettrineOptionsFor{Y}{loversize=0.15, findent=0.46\LettrineWidth, nindent=-0.39\LettrineWidth}
+\LettrineOptionsFor{Z}{loversize=0.15, findent=0.29\LettrineWidth, nindent=0.30\LettrineWidth, depth=1}
+
+\endinput
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-preamble.tex b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-preamble.tex
new file mode 100644
index 00000000000..bf5e77529c9
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/cb-preamble.tex
@@ -0,0 +1,762 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION 0 - LICENSE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Copyright 2018 Terrence P. Murphy and Rosalie D'Amico.
+% This file may be distributed and/or modified under the conditions of the LaTeX Project
+% Public License (“LPPL”), either version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is at:
+% http://www.latex-project.org/lppl.txt.
+% This file is author-maintained and is one of the files that, collectively, make up the
+% MAKECOOKBOOK bundle available at https://ctan.org/pkg/makecookbook
+% For additional information, please see the associated README file.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION 1 - INITIAL SETUP %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\raggedbottom % Q320739 and Q65355
+\emergencystretch 3em % can also use for only parts of a document
+%\tracingmacros=1
+%\tracingcommands=1 % or =2
+
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % We use the TeX \newif macro to choose betweeen the makecookbook code and the code for
+ % our own cookbook. One of the key differences is our use of commercial fonts (Adobe Garamond
+ % Pro and Adobe Myriad Pro) vs. makecookbook's free fonts (EB Garamond and Lato).
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\newif\ifMakeCookbook \MakeCookbooktrue
+ % \newif to indicate whether \geometry (and other) settings are for draft or final form
+\newif\ifCookbookDraft \CookbookDrafttrue
+ % newif to indicate whether we are using the hyperref/bookmark packages
+\newif\ifHyperRef \HyperReftrue
+
+%************************* FIRST PACKAGES **************************************************
+% We load the packages that are used for multiple purposes. The single-purpose packages
+% will be loaded with their associated code to make their purpose clearer.
+%*******************************************************************************************
+\usepackage{%
+ xparse, % For \NewDocumentCommand and related
+ enumitem, % improvements to the standard list environments
+ pgfkeys, % For Key=Value arguments to commands
+ graphicx} % for including photos = \includegraphics
+
+\ifCookbookDraft
+\usepackage{lipsum, layout} %
+\fi
+%\usepackage{indentfirst} % use if you want first paragraphs indented; see Q 39227 (Warner)
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION 2 - FONTS %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%************ SECTION 2A - FONT PACKAGES ***************************************************
+\usepackage{fontspec} % Needed for our font handling -- how about [no-math] ??
+\usepackage{microtype} % Highly advised-READ UP to understand better; see Q 66052 and S.K. link
+
+%************ SECTION 2B - ESTABLISH ALL FONTS TO BE USED **********************************
+\ifMakeCookbook
+ \setmainfont{ebgaramond}[ % EB Garamond
+ Extension=.ttf,
+ UprightFont=*-regular, % this face includes small caps
+ ItalicFont=*-italic,
+ BoldFont=*-bold,
+ BoldItalicFont=*-bolditalic,
+ FontFace={sb}{n}{*-semibold}, % this face includes small caps
+ FontFace={sb}{it}{*-semibolditalic},
+ Ligatures=TeX,
+ Numbers=Lining] % !!! consider Numbers=OldStyle
+\else
+ \setmainfont{agaramondpro}[ % Abobe Garamond Pro
+ Extension=.otf,
+ UprightFont=*-regular, % this face includes small caps
+ ItalicFont=*-italic,
+ BoldFont=*-bold,
+ BoldItalicFont=*-bolditalic,
+ FontFace={sb}{n}{*-semibold}, % this face includes small caps
+ FontFace={sb}{it}{*-semibolditalic},
+ Ligatures=TeX,
+ Numbers=Lining]
+\fi
+
+\ifMakeCookbook
+ \setsansfont{lato}[ % Lato
+ Extension=.ttf,
+ UprightFont=*-regular, % \mdseries
+ ItalicFont=*-italic,
+ BoldFont=*-bold, % \bfseries
+ BoldItalicFont=*-bolditalic,
+ FontFace={sb}{n}{*-semibold},
+ FontFace={sb}{it}{*-semibolditalic},
+ FontFace={k}{n}{*-black},
+ FontFace={k}{it}{*-blackitalic},
+ Ligatures=TeX,
+ Numbers=Lining]
+\else
+ \setsansfont{myriadpro}[ % Adobe Myriad Pro
+ Extension=.otf, % None of the font faces include small caps
+ UprightFont=*-regular, % \mdseries
+ ItalicFont=*-it,
+ BoldFont=*-bold, % \bfseries
+ BoldItalicFont=*-boldit,
+ FontFace={sb}{n}{*-semibold},
+ FontFace={sb}{it}{*-semiboldit},
+ FontFace={k}{n}{*-black},
+ FontFace={k}{it}{*-blackit},
+ Ligatures=TeX,
+ Numbers=Lining] % the OldStyle '1' is not too good for ingredients
+\fi
+
+\newfontfamily\MyScriptFont{Italianno}[ % Italianno script font
+Extension=.otf,
+UprightFont=*-Regular-OTF, % This is the only face for this font
+Ligatures=TeX] % Otherwise, don't get -- converted to en dash, etc. Q 53413
+ % (and \textendash doesn't work that well with Italianno)
+
+%************ SECTION 2C - HANDLE THE SPECIAL FONT FACES ***********************************
+\NewDocumentCommand \sbseries {}{\fontseries{sb}\selectfont} % egreg uses \DeclareRobustCommand
+\DeclareTextFontCommand{\textsb}{\sbseries}
+\NewDocumentCommand \kseries {}{\fontseries{k}\selectfont} % egreg uses \DeclareRobustCommand
+\DeclareTextFontCommand{\textk}{\kseries}
+
+%************ SECTION 2D - SET COMMANDS TO SELECT FONTS ************************************
+\NewDocumentCommand \FontSteps {}{\rmfamily\mdseries}
+\NewDocumentCommand \FontStepsDefault {}{\rmfamily\mdseries}
+\NewDocumentCommand \FontIngredients {}{\sffamily\sbseries}
+\NewDocumentCommand \FontIngDefault {}{\sffamily\sbseries}
+\NewDocumentCommand \FontIngTitle {}{\sffamily\bfseries\itshape} % consider \kseries
+\NewDocumentCommand \FontChapterIntro {}{\rmfamily\fontsize{14}{16.8}\selectfont}
+\NewDocumentCommand \FontRecipeStory {}{\rmfamily\fontsize{13}{15.6}\selectfont}
+\NewDocumentCommand \FontCopyrightPage {}{\rmfamily\fontsize{9}{11}\selectfont}
+\NewDocumentCommand \FontChapterLabel {}{\rmfamily\fontsize{14.4}{18}\selectfont}
+\NewDocumentCommand \FontChapterTitle {}{\MyScriptFont\fontsize{40}{48}\selectfont}
+\NewDocumentCommand \FontRecipeName {}{\MyScriptFont\fontsize{24}{29}\selectfont}
+\NewDocumentCommand \FontLettrineText {}{\rmfamily\scshape} % consider adding \sbseries
+\NewDocumentCommand \FontTitleColorBox {}{\rmfamily\Large\bfseries}
+\NewDocumentCommand \FontTitlepageTitle {}{\MyScriptFont\fontsize{40}{48}\selectfont}
+\NewDocumentCommand \FontTitlepageAuthor{}{\rmfamily\sbseries\scshape\fontsize{14.4}{18}\selectfont}
+
+%************ SECTION 2E - SPECIAL HANDLING OF FRACTIONS ***********************************
+\def\fr#1/#2 {{\addfontfeatures{Fractions=On}#1/#2} } %
+\def\frx#1/#2 {{\addfontfeatures{Fractions=On}#1/#2}} %
+
+%************ SECTION 2F - SPECIAL GLYPHS NEEDED IN COOKBOOK *******************************
+\NewDocumentCommand \TextDegree {}{{\char176}} % or ^^^^00B0
+\NewDocumentCommand \Copyright {}{{\char169}} % or ^^^^00A9
+\NewDocumentCommand \TextBullet {}{{\char8226}} % or ^^^^2022
+\NewDocumentCommand \CtrDot {}{{\char183}} % or ^^^^00B7
+ % The following replaces $\cdots$ -- it is essentially identical and uses our fonts:
+\NewDocumentCommand \CtrDots{}{{\CtrDot\kern 0.2em\CtrDot\kern 0.2em\CtrDot\kern 0.2em}}%
+
+ % \ChefHat and \Oven are not actually glyphs - they were created (further below)
+ % with \MakeChefHat and \MakeOven using TIKZ
+\newsavebox{\HatBox}
+\AtBeginDocument{\savebox{\HatBox}[\hatwidth]{\MakeChefHat}}%
+\NewDocumentCommand \ChefHat {}{\usebox{\HatBox}}%
+\NewDocumentCommand \ChefNote {}{{\raisebox{.4ex}{\ChefHat}}}
+
+\newsavebox{\OvenBox}
+\AtBeginDocument{\savebox{\OvenBox}[\ovenwidth]{\MakeOven}}%
+\NewDocumentCommand \Oven {}{\usebox{\OvenBox}}%
+
+%************ SECTION 2G - FONT SIZE INFORMATION NEEDED IN CODE FURTHER BELOW ***************
+\def\StdIFontSize{10.95} % Needed in IngredientsAndSteps environment
+\def\StdSFontSize{10.95} % Needed in IngredientsAndSteps environment
+\def\StdIBaseline{13.6} % Needed in IngredientsAndSteps environment
+\def\StdSBaseline{13.6} % Needed in IngredientsAndSteps environment
+\def\RStoryFontBaseline{15.6pt} % Needed in \RecipeStory command; value from \FontRecipeStory
+\def\CIntroFontBaseline{16.8pt} % Needed in \ChapterIntro command; value from \FontChapterIntro
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION 3 - PACKAGES %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+%************ SECTION 3A - GEOMETRY ********************************************************
+\usepackage{geometry} %
+
+\ifCookbookDraft
+\geometry{paper=letterpaper, % the physical paper size during draft mode
+layoutsize={8in,10in}, % always use intended final paper size for layout
+layouthoffset=0.25in, % center the "layout" horizontally
+layoutvoffset=0.5in, % center the "layout" vertically
+%showframe, % use when needed
+showcrop}
+\else
+\geometry{papersize={8in,10in}} % the physical paper size in final production mode
+\fi
+ % The following are the same in draft and final:
+\geometry{nomarginpar, % do not reserve space for margin notes
+bindingoffset=0.375in,
+inner=0.5in,
+outer=1in,
+top=0.75in,
+bottom=1in,
+footskip=40pt} % default seems to be 27pt
+
+%************ SECTION 3B - IMAKEIDX PACKAGE ************************************************
+\usepackage{imakeidx} % supports creation of an index (here, a recipe index)
+
+ %%% COMMENT OUT THE FOLLOWING CODE IF YOU WANT THE STANDARD BOOK CLASS INDEX FORMAT %%%%%%
+\makeatletter
+\def\@idxitem{\par\hangindent 10pt} % NOT needed unless you want to fine tune hanging indent
+\newcommand{\betterdotfill}%
+ {\leavevmode \nobreak\cleaders \hb@xt@ .44em{\hss .\hss }\hskip .5em plus 1fill \kern \z@}
+\makeatother
+\makeindex[options=-s cb-idxstyle] % use cb-idxstyle.ist for style; Q 132465 & Q 396898
+ %%% END OF SPECIAL INDEX FORMAT %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%************ SECTION 3C - LETTRINE PACKAGE ************************************************
+\usepackage{lettrine} % Sets first character to multi-line height with various options
+\renewcommand{\LettrineFontHook}{\MyScriptFont\color{clrLettrineBig}} % for the BIG first letter
+\renewcommand{\LettrineTextFont}{\color{clrLettrineSmall}\FontLettrineText} % for the following text
+\renewcommand{\DefaultOptionsFile}{cb-lettrine.cfl} % for the lettrine package
+
+%************ SECTION 3D - FANCYHDR PACKAGE ************************************************
+\usepackage{emptypage} % per Q 360739 replaces \clearpage{\pagestyle{empty}\cleardoublepage} which
+ % would have to be issued at the end of each chapter and possibly the last
+ % page of the frontmatter and as needed in the backmatter
+\usepackage{fancyhdr}
+
+\fancypagestyle{plain}{ % Need to redefine the "plain" style
+ \fancyhf{} % clear the header and footer
+ \renewcommand{\headrulewidth}{0pt} % use 0 to disable header ruler line
+ \renewcommand{\footrulewidth}{0.2pt}
+ \fancyfoot[RO, LE] {Page \thepage}
+}
+
+\makeatletter % must be OUTSIDE of the command - see Q 444532
+\fancypagestyle{main}{ % identical to plain, except non-\chapter pages in mainmatter
+ \fancyhf{}
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0.2pt}
+ \fancyfoot[RO, LE] {Page \thepage}
+ \fancyfoot[CE,CO]{\if@mainmatter \leftmark\fi} % See Q340125
+}
+\makeatother
+
+%************ SECTION 3E - TITLESEC PACKAGE ************************************************
+\usepackage{titlesec}
+\titleformat{\chapter}[display]
+{\filleft\FontChapterLabel}{\chaptertitlename\ \thechapter}{1pt}
+{\titlerule\vspace{1ex}\raggedleft\FontChapterTitle}
+\titlespacing*{\chapter}{0pt}{20pt}{20pt}
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION 4 - CERTAIN SIMPLE MACROS %%%%%%%%%%%%%%%%%%%%%%%%%%%
+
+%************ SECTION 4A - COLORS **********************************************************
+\usepackage{xcolor}
+\definecolor{clrWhite}{cmyk}{0.00, 0.00, 0.00, 0.00} % true white
+\definecolor{clrBackTip}{rgb}{1.0, 0.95, 0.95} % red!5!white
+\definecolor{clrFrameTip}{rgb}{0.75, 0.0, 0.0} % red!75!black
+\definecolor{clrBackCheffy}{rgb}{1.0, 1.0, 1.0} % white
+\definecolor{clrFrameCheffy}{rgb}{0.0, 0.0, 0.75} % blue!75!black
+\definecolor{clrBackNotes}{rgb}{1.0, 1.0, 1.0} % white
+\definecolor{clrFrameNotes}{rgb}{0.0, 0.75, 0.0} % green!75!black
+\definecolor{clrLettrineBig}{gray}{0.25} % 0.0 = black; 1.0 = white
+\definecolor{clrLettrineSmall}{gray}{0.25} % 0.0 = black; 1.0 = white
+\definecolor{clrIngTitle}{cmyk}{0.00, 1.00, 1.00, 0.00} % true red
+\definecolor{clrEditNote}{cmyk}{0.00, 1.00, 1.00, 0.00} % true red
+\definecolor{clrHyperRef}{cmyk}{0.00, 1.00, 1.00, 0.00} % true red
+
+%************ SECTION 4B - A FIX FOR PGFKEYS ***********************************************
+\def\nl{\par} % see Q 96247 for why we defined \nl for use with pgfkeys
+
+%************ SECTION 4C - VARIOUS SIMPLE BUT USEFUL COMMANDS ******************************
+\NewDocumentCommand \PreheatC{m}{Preheat oven to #1\Degrees convection.\thinspace\Oven}%
+\NewDocumentCommand \PreheatR{m}{Preheat oven to #1\Degrees regular oven.\thinspace\Oven}%
+
+\NewDocumentCommand \Tbl{o}{\IfNoValueTF{#1}{tablespoon }{tablespoon#1}}%
+\NewDocumentCommand \tsp{o}{\IfNoValueTF{#1}{teaspoon }{teaspoon#1}}%
+\NewDocumentCommand \Pd{o}{\IfNoValueTF{#1}{pound }{pound#1}}%
+\NewDocumentCommand \Ounce{o}{\IfNoValueTF{#1}{ounce }{ounce#1}}%
+\NewDocumentCommand \Degrees{o}{\IfNoValueTF{#1}{\TextDegree{} }{\TextDegree{}#1}}%
+
+\NewDocumentCommand \AxB{m m o}{{#1\thinspace{x}\thinspace#2}\IfValueT{#3}{#3}}%
+\NewDocumentCommand \AxBxC{m m m o}{%
+ {#1\thinspace{x}\thinspace#2\thinspace{x}\thinspace#3}\IfValueT{#4}{#4}}%
+
+\NewDocumentCommand \Inch{m}{{#1-inch}}%
+\NewDocumentCommand \EditNote{m}{{{\color{clrEditNote} #1}}}%
+\NewDocumentCommand \Quote{m}{{``#1''}}%
+
+\NewDocumentCommand \IngredientsSeparator{}{{\FontStepsDefault \CtrDots\CtrDots}}%
+\NewDocumentCommand \SeparateParagraphs{}{{\vskip 5pt}}%
+\NewDocumentCommand \Recipe{+m}{{\textit{\textsb{#1}}}}%
+
+%************ SECTION 4D - BAKE UNTIL ******************************************************
+\pgfkeys{
+ /BakeUntil/.is family, /BakeUntil,
+ default/.style = {Min = 0, Max = 0, TPick = 0, GBrown = 0, Until = \empty},
+ Min/.estore in = \BkMin,
+ Max/.estore in = \BkMax,
+ TPick/.estore in = \BkTPick,
+ GBrown/.estore in = \BkGBrown,
+ Until/.estore in = \BkUntil,
+}
+
+\NewDocumentCommand \BakeUntil{m}{%
+\pgfkeys{/BakeUntil, default, #1}%
+\newcount\MyCount \MyCount = \BkMax%
+\newcount\MyCase%
+{Bake about \BkMin}%
+\ifnum\MyCount > 0 {-\BkMax}\fi
+{ minutes}%
+%
+\ifx\BkUntil\empty \MyCase = 0 %
+ \else \MyCase = 1 \fi%
+\ifnum\BkTPick = 1 \MyCase = 2 \fi%
+\ifnum\BkGBrown = 1 \MyCase = 3 \fi%
+%
+\ifcase\MyCase% '0' case - do nothing
+\or {, \BkUntil}% '1' case - use the "Until" text
+\or {, until toothpick tests clean}% '2' case - TPick
+\or {, until golden brown}% '3' case - GBrown
+\fi
+}
+
+%************ SECTION 4E - OTHER MISCELLANEOUS COMMANDS ************************************
+\NewDocumentEnvironment{CopyrightPage}{} % See 31186
+{\FontCopyrightPage\setlength{\parindent}{0pt}\par\vspace*{\fill}}
+{\clearpage}
+
+\NewDocumentCommand \Attribution{m}{{\hspace*\fill}{\textit{#1}}}%
+\NewDocumentCommand \ThreeLines{}{%
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Ut purus elit, vestibulum ut,
+ placerat ac, adipiscing vitae, felis. Curabitur dictum gravida mauris. Nam arcu libero,
+ nonummy eget, consectetuer id, vulputate a, magna. Donec vehicula augue eu neque.
+}
+
+\newcount\LineCount
+\NewDocumentCommand \InsertHiddenLines{m}{%
+ \LineCount = #1
+ {%
+ \newcount\foo \foo=0
+ \loop % \loop starts the construct ended by \repeat
+ \phantom{.}\par \advance \foo by 1
+ \ifnum \foo < \LineCount \repeat % \repeat also “serves as” the \fi to the \ifnum
+ }%
+}
+
+%************ SECTION 4F - CHAPTER INTRO ***************************************************
+\newbox\IntroBox
+\newbox\IntroBoxA
+\NewDocumentCommand \ChapterIntro {o +m} % arg1 = optional = lines for first part
+{ % arg2 = story text
+\setbox\IntroBox\vbox
+ {
+ \FontChapterIntro
+ {#2\par} % the \par needed by \lettrine
+ }
+\IfNoValueTF {#1} % NoValue=TRUE or NoValue=FALSE?
+ {\unvbox\IntroBox} % NoValue=TRUE, so flush the full IntroBox
+ { % handle the NoValue=FALSE case
+ \ifnum #1 > 0 % > 0 means we split the story into two part; print the first part here
+ { % = 0 means ALL of story is deferred
+ \setbox\IntroBoxA=\vsplit\IntroBox to #1\dimexpr \CIntroFontBaseline %
+ \unvbox\IntroBoxA %
+ }
+ \fi
+ }
+}
+
+\NewDocumentCommand \FinishChapterIntro{}%
+{\ifvoid\IntroBox \else \smallskip\unvbox\IntroBox\par\medskip\fi} %
+
+%%%%%%%%%%%%%%%%%%%%%%%%%%%% SECTION 5 - RECIPE ENVIRONMENTS AND COMMANDS %%%%%%%%%%%%%%%%
+
+%************ SECTION 5A - RECIPE NAME AND YIELD *******************************************
+\pgfkeys{
+ /RecipeNameAndYield/.is family, /RecipeNameAndYield,
+ default/.style = {Name = 0, NoIdxName = 0, XRefLabel = \empty, Yield = \empty, %
+ IndexA = \empty, IndexB = \empty, IndexC = \empty},
+ Name/.estore in = \RecipeName,
+ NoIdxName/.estore in = \NoIndexName,
+ IndexA/.estore in = \IdxA,
+ IndexB/.estore in = \IdxB,
+ IndexC/.estore in = \IdxC,
+ XRefLabel/.estore in = \XRefLbl,
+ Yield/.estore in = \RecipeYield,
+}
+
+\NewDocumentCommand \RecipeNameAndYield {m}{% !!! Need a way to show "starred" (favorite) recipes??
+ \pgfkeys{/RecipeNameAndYield, default, #1}%
+ % Put the recipe name in the Index, unless the user sets NoIdxName = 1:
+ % (How about any non-empty instead of = 1)?
+ \ifnum\NoIndexName=1 \relax\else\index{\RecipeName}\fi
+ % Can add up to three other Index entries:
+ \ifx\IdxA\empty\relax\else\index{\IdxA}\fi
+ \ifx\IdxB\empty\relax\else\index{\IdxB}\fi
+ \ifx\IdxC\empty\relax\else\index{\IdxC}\fi
+ % Did the user ask us to set up a label for cross-reference?:
+ \ifx\XRefLbl\empty\relax\else\RecipeLabel{\XRefLbl}\fi
+ % Add a bookmark (only adds bookmark if hyperref is active):
+ \ifnum\NoIndexName=1 \RecipeBookmark{\IdxA}\else\RecipeBookmark{\RecipeName}\fi
+ \begin{center}%
+ {\FontRecipeName{\RecipeName}}\par%
+ \ifx\RecipeYield\empty\relax\else {\textit{\RecipeYield}}\par \fi%
+ \end{center}%
+}
+
+%************ SECTION 5B - RECIPE STORY ****************************************************
+\def\RecipeStoryIndent{20 pt}
+\newbox\StoryBox
+\newbox\StoryBoxA
+\NewDocumentCommand \RecipeStory {o +m} % arg1 = optional = lines for first part
+{ % arg2 = story text
+\setbox\StoryBox\vbox
+ {
+ \FontRecipeStory
+ \leftskip=\RecipeStoryIndent \rightskip=\leftskip % Q 66332 see also Q 156986 (egreg and his comment)
+ {#2\par} % the \par needed by \lettrine
+ }
+\IfNoValueTF {#1} % NoValue=TRUE or NoValue=FALSE?
+ {\unvbox\StoryBox} % NoValue=TRUE, so flush the full StoryBox
+ { % handle the NoValue=FALSE case
+ \ifnum #1 > 0 % > 0 means we split the story into two part; print the first part here
+ { % = 0 means ALL of story is deferred
+ \setbox\StoryBoxA=\vsplit\StoryBox to #1\dimexpr \RStoryFontBaseline %
+ \unvbox\StoryBoxA %
+ }
+ \fi
+ }
+}
+
+\NewDocumentCommand \FinishRecipeStory{}%
+ {\ifvoid\StoryBox \else \smallskip\unvbox\StoryBox\par\medskip\fi} %
+
+%************ SECTION 5C - INGREDIENTS AND STEPS ENVIRONMENT *******************************
+\usepackage{multicol} % allows multiple columns in selected areas of a single-column document
+\usepackage[strict]{changepage} % for \adjustwidth
+\usepackage{xfp} % for fpeval floating point macro
+
+\pgfkeys{
+ /IngredientsAndSteps/.is family, /IngredientsAndSteps,
+ default/.style = {AdjIFont = 1, AdjIBaseline = 0,
+ AdjSFont = 0, AdjSBaseline = 0,
+ AddWidth = 0, RaggedCols = 0},
+ AdjIFont/.estore in = \AdjustIFont,
+ AdjIBaseline/.estore in = \AdjustIBaseline,
+ AdjSFont/.estore in = \AdjustSFont,
+ AdjSBaseline/.estore in = \AdjustSBaseline,
+ AddWidth/.estore in = \AddPageWidth,
+ RaggedCols/.estore in = \RaggedColumns,
+}
+
+\newdimen\IFont \newdimen\IBase \newdimen\SFont \newdimen\SBase \newdimen\AddWidth
+
+\NewDocumentEnvironment{IngredientsAndSteps}{o} % !!! Need \raggedcolumns ??
+ % Do the before-environment setup:
+ {
+ \IfNoValueTF {#1}%
+ % Handle the simple case = no optional key/value argument:
+ {\AddWidth = 0 pt}
+ % Handle the special case = there IS an optional key/value argument:
+ {
+ \pgfkeys{/IngredientsAndSteps, default, #1}%
+
+ \IFont = \AdjustIFont pt
+ \IBase = \AdjustIBaseline pt
+ \SFont = \AdjustSFont pt
+ \SBase = \AdjustSBaseline pt
+ \AddWidth = \AddPageWidth pt
+
+ \ifdim\IBase = 0 pt \IBase = \IFont \fi
+ \ifdim\SFont = 0 pt \SFont = \IFont \fi
+ \ifdim\SBase = 0 pt \SBase = \IFont \fi
+
+ \RenewDocumentCommand \FontIngredients {}{\FontIngDefault\fontsize{\fpeval{\StdIFontSize * \IFont}}
+ {\fpeval{\StdIBaseline * \IBase}}\selectfont}
+ \RenewDocumentCommand \FontSteps {}{\FontStepsDefault\fontsize{\fpeval{\StdSFontSize * \SFont}}
+ {\fpeval{\StdSBaseline * \SBase}}\selectfont}
+ }
+ % Now, finish setup:
+ \adjustwidth{-\AddWidth}{-\AddWidth}
+ \begin{multicols}{2}%
+ } % End of the before-environment setup
+ % Now do the after-environment cleanup:
+ {
+ \end{multicols}
+ \endadjustwidth
+ % We need to restore the fonts to default size IF there was an optional key/value argument:
+ \IfValueT {#1}
+ {
+ \RenewDocumentCommand \FontIngredients {}{\FontIngDefault}
+ \RenewDocumentCommand \FontSteps {}{\FontStepsDefault}
+ }
+ } % End of the "after environment" cleanup
+
+%************ SECTION 5D - COMMANDS TO DISPLAY INGREDIENTS AND STEPS ***********************
+\NewDocumentCommand \IngredientsHeading {O{0} m O{2}}%
+ {\begingroup
+ \setlength{\parindent}{0pt}
+ \ifnum #1 > 0 {\vspace{#1 pt}}\fi
+ \FontIngTitle\color{clrIngTitle} #2\par%
+ \vspace{#3 pt}
+ \endgroup}%
+
+\NewDocumentCommand \ListIngredientsAndSteps {o +m +m}
+{
+\IfValueT {#1}{\IngredientsHeading{#1}[3]}%
+{\begingroup\ifx\relax#2\relax\else\FontIngredients{}\IngredientsList{#2}\fi\endgroup}%
+{\begingroup\ifx\relax#3\relax\else\FontSteps{}\RecipeSteps{#3}\fi\endgroup}%
+}
+
+\NewDocumentCommand \IngredientsList { >{\SplitList{\par}} +m}{%
+ \setlength{\parskip}{2pt}\raggedright%
+ \ProcessList{#1}{\ProcessIngList}
+}
+\newcommand\ProcessIngList[1]{\hangindent1em #1\par}
+
+\NewDocumentCommand \RecipeSteps { >{\SplitList{\par}} +m}{%
+\begin{enumerate}[itemsep=2pt plus 1 pt minus 1pt, parsep=0pt plus 1pt,
+ topsep=4.5pt plus 2.0pt minus 1.0pt, leftmargin=*]
+ \ProcessList{#1}{\item}
+\end{enumerate}
+ }
+
+%************ SECTION 5E - THE TIPS, CHEFFY AND CHEFNOTES ENVIRONMENTS *********************
+\usepackage{tcolorbox}
+\tcbset{fonttitle=\FontTitleColorBox}
+
+\NewDocumentEnvironment{Tip}{+m} %
+{
+\begin{tcolorbox}[colback=clrBackTip,colframe=clrFrameTip, title=Food for Thought] %
+ {#1}%
+\end{tcolorbox}
+}
+
+\NewDocumentEnvironment{Cheffy}{+m} %
+{
+\begin{tcolorbox}[colback=clrBackCheffy,colframe=clrFrameCheffy, title=Let's Get Cheffy] %
+ {#1}%
+\end{tcolorbox}
+}
+
+\NewDocumentEnvironment{ChefNotes}{+m} %
+{
+\begin{tcolorbox}[colback=clrBackNotes,colframe=clrFrameNotes,title=Chefnotes] %
+ \ChefNote{}{#1}%
+\end{tcolorbox}
+}
+
+%************ SECTION 6 - ANY TIKZ DRAWINGS ************************************************
+\usepackage{tikz}
+\usetikzlibrary{calc}
+
+\def\hatscale{0.05}
+\def\hatwidth{12.5pt}
+\NewDocumentCommand \MakeChefHat{}
+{
+ \begin{tikzpicture}[scale=\hatscale]
+ \coordinate (HA) at (1.27, 0.635);
+ \coordinate (HB) at (5.87375, 0);
+ \coordinate (HC) at (1.5825, 0.9475);
+ \coordinate (HD) at (5.77375, 0.15);
+ \coordinate (HE) at (1.5875,1.905);
+ \coordinate (HF) at (1.8,1.74625);
+ \coordinate (HG) at (6.0325, 1.27);
+ \coordinate (HH) at (6.22, 1.33);
+ \coordinate (HI) at (6.45, 2.18);
+ \coordinate (HJ) at (6.35, 2.70);
+ \coordinate (HK) at (8.5725, 3.97);
+ \coordinate (HL) at (6.03, 4.7625);
+ \coordinate (HM) at (6.03, 3.651);
+ \coordinate (HN) at (2.2225, 5.3975);
+ \coordinate (HO) at (0.159, 4.603);
+ \coordinate (HP) at (1.587, 3.55);
+ \coordinate (HQ) at (2.5, 4.7625);
+ \coordinate (HR) at (2.778, 2.08);
+ \coordinate (HS) at (2.7, 4.1275);
+ \coordinate (HT) at (4.0, 1.98);
+ \coordinate (HU) at (4.286, 3.4925);
+ \coordinate (HV) at (5.3, 1.7);
+ \coordinate (HW) at (5.55, 2.85);
+ \coordinate (HX) at (4.286, 5.0);
+ %
+ \path[fill=black] (HA) to [bend left=20] (HB) to (HD) to [bend right=20] (HC) to (HA);
+ \path[fill=black] (HA) to (HC) to (HF) to (HE) to (HA);
+ \path[fill=black] (HE) to (HF) to [bend left=20] (HG) to (HH) to [bend right=20] (HE);
+ \path[fill=black] (HB) to (HD) to (HG) to (HH) to (HB);
+ \path[fill=black] (HH) to (HI) to (HJ) to (HG);
+ \draw[line width=5*\hatscale] (HI) to [bend right=50] (HK);
+ \draw[line width=5*\hatscale] (HK) to [bend right=50] (HL);
+ \draw[line width=5*\hatscale] (HL) to [bend right=45] (HX);
+ \draw[line width=5*\hatscale] ($(HX) + (0.4, -.4)$) to [bend right=45] (HN);
+ \path[fill=black] (HM) to ($(HL) -(0.15, 0)$) to ($(HL) + (0.15, 0)$) to (HM);
+ \draw[line width=5*\hatscale] (HN) to [bend right=50] (HO);
+ \draw[line width=5*\hatscale] (HO) to [bend right=50] (HP);
+ \draw[line width=5*\hatscale] ($(HF) +(0, 0.15)$) to (HP);
+ \path[fill=black] (HQ) to ($(HN) -(0.15, 0)$) to ($(HN) + (0.15, 0)$) to (HQ);
+ \path[fill=black] (HS) to ($(HR) -(0.15, 0)$) to ($(HR) + (0.15, 0)$) to (HS);
+ \path[fill=black] (HU) to ($(HT) -(0.15, 0)$) to ($(HT) + (0.15, 0)$) to (HU);
+ \path[fill=black] (HW) to ($(HV) -(0.15, 0)$) to ($(HV) + (0.15, 0)$) to (HW);
+ \end{tikzpicture}
+}
+
+\def\ovenscale{0.2666}
+\def\ovenwidth{18pt}
+\NewDocumentCommand \MakeOven{} % inspired by the oven in the tikzsymbols package
+{
+ \begin{tikzpicture}[scale=\ovenscale]
+ \draw [line width=2*\ovenscale] (0,0) rectangle (2,1.5);
+ \draw [line width=2*\ovenscale] (0.125,0.125) rectangle (1.875,1);
+ \draw [line width=2*\ovenscale] (0.75,1.125) rectangle (1.25,1.375);
+ \draw [line width=2*\ovenscale] (0.5,0.875) to (1.5,0.875);
+ \draw [fill=black] (0.23, 1.25) circle [radius=0.1];
+ \draw [fill=black] (0.52, 1.25) circle [radius=0.1];
+ \draw [fill=black] (1.48, 1.25) circle [radius=0.1];
+ \draw [fill=black] (1.77, 1.25) circle [radius=0.1];
+ \end{tikzpicture}
+}
+
+\ifMakeCookbook
+\else
+\NewDocumentCommand \MakeTitlePage{}
+{
+\begingroup
+%\centering
+ \begin{tikzpicture}[x=1in,y=1in]
+ \coordinate (TA) at (0, 0);
+ \coordinate (TB) at (6.125, 8); % we ignore bottom 0.25 of text area to prevent newpage
+ \coordinate (TC) at (1, 0.25);
+ \coordinate (TD) at (5.125, 7.5);
+ \coordinate (TE) at (1, 7.5);
+ \coordinate (TF) at (5.125, 0.25);
+ \useasboundingbox (TA) rectangle (TB);
+ \draw [line width=1] (TC) to (TD);
+ \node[anchor=north west, align=left, font=\FontTitlepageTitle] at (TE) {Mama, How \\ Do You \\ Make...};
+ \node[left, font=\FontTitlepageAuthor] at (TF) {Rosalie A. D'Amico};
+ \end{tikzpicture}
+\endgroup
+}
+\fi
+
+%************ SECTION 7 - FRONT MATTER HELPER COMMANDS *************************************
+
+\ifMakeCookbook
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % This group for the MAKECOOKBOOK bundle
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NewDocumentCommand \MyTitlePage{}
+{
+\noindent\vspace{144pt}
+\begin{center}
+ {
+ {\FontTitlepageTitle Smith Family Cookbook} \par
+ \vspace*{\fill}
+ {\FontTitlepageAuthor by Henry A. Smith}\par
+ }
+\end{center}
+\vspace{40pt} \clearpage
+}
+
+\NewDocumentCommand \ColophonFonts{}
+{
+Serif font (primary document font):
+EB Garamond, \Copyright{} The EB Garamond Project Authors\par
+\quad (github.com/octaviopardo/EBGaramond12). Licensed under the SIL Open Font License, Version 1.1.\par
+Sans Serif font:
+Lato, \Copyright{} Ɓukasz Dziedzic. Licensed under the SIL Open Font License, Version 1.1.\par
+Script font: Italianno, \Copyright{} TypeSETit, LLC. Licensed under the SIL Open Font License, Version 1.1.\par
+}
+
+\NewDocumentCommand \CopyrightInfo{}
+ {Copyright \Copyright{} 2018, Henry A. Smith, all rights reserved}
+
+\NewDocumentCommand \MyDedication{}
+ {\hrule\vspace{5pt} To my family. And possibly some other stuff. \vspace{5pt}\hrule}
+
+\NewDocumentCommand \DedicationVerso{}{}
+
+\else
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % This group for our cookbook
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\NewDocumentCommand \MyTitlePage{} {\noindent \MakeTitlePage{} \clearpage}
+
+\NewDocumentCommand \ColophonFonts{}
+{
+Serif font (primary document font):
+Adobe Garamond Pro, \Copyright{} Adobe Systems Incorporated.\par
+Sans Serif font:
+Adobe Myriad Pro, \Copyright{} Adobe Systems Incorporated.\par
+Script font: Italianno, \Copyright{} TypeSETit, LLC. Licensed under the SIL Open Font License, Version 1.1.\par
+}
+
+\NewDocumentCommand \CopyrightInfo{}
+ {Copyright \Copyright{} 2018, Rosalie A. D'Amico, all rights reserved}
+
+\NewDocumentCommand \MyDedication{}
+ {\hrule\vspace{5pt}
+ To my family. Now when you ask \Quote{how do you make...}, I just need to give you a page number.%
+ \vspace{5pt}\hrule}
+
+\NewDocumentCommand \DedicationVerso{}
+{
+\begin{center}
+ {\FontChapterTitle
+ One cannot think well, \\
+ love well, sleep well, \\
+ if one has not dined well.\\
+ \vspace{5pt}
+ \hrule
+ \vspace{5pt}
+ Uno non pu\`o pensare bene, \\
+ amare bene, dormire bene, \\
+ se non ha mangiato bene. \\
+ \vspace{5pt}
+ \hrule
+ \vspace{5pt}
+ Virginia Woolf
+ }
+\end{center}
+}
+\fi
+
+%************ SECTION 8 - GRAPHICX RELATED COMMANDS ****************************************
+\graphicspath{{img/}{../img/}} % look in the img directory (subdir of book root or sibling of tex)
+\usepackage[skip=2pt, labelformat=empty, font={rm,it}]{caption} % <-
+\captionsetup{justification=centering} % this is needed to have multi-line captions centered
+
+\pgfkeys{
+ /SideBySide/.is family, /SideBySide,
+ default/.style = {VertAlign = c, LeftCaption = \empty, RightCaption = \empty},
+ VertAlign/.estore in = \VerticalAlign,
+ LeftCaption/.estore in = \LeftText,
+ RightCaption/.estore in = \RightText,
+}
+
+\NewDocumentCommand \SideBySide{O{\empty} m m} % Q 5769
+{
+\pgfkeys{/SideBySide, default, #1}%
+%
+ \begin{figure}[htb]
+ \centering
+ \begin{minipage}[\VerticalAlign]{0.49\textwidth} % align at t= top, c = center, b = bottom
+ \centering
+ \includegraphics[width=0.97\textwidth]{#2} %
+ \ifx\LeftText\empty\relax\else\caption{\LeftText}\fi
+ \end{minipage}\hfill%
+ \begin{minipage}[\VerticalAlign]{0.49\textwidth}
+ \centering
+ \includegraphics[width=0.97\textwidth]{#3} %
+ \ifx\RightText\empty\relax\else\caption{\RightText}\fi
+ \end{minipage}
+ \end{figure}
+}
+
+%************ SECTION 9 - HYPERREF RELATED COMMANDS ****************************************
+\ifHyperRef
+\usepackage[bookmarks=true,colorlinks=true, allcolors=clrHyperRef]{hyperref}
+\usepackage{bookmark} % Q 247158 shows Heiko (the author) loads both hyperref and bookmark
+
+\newcounter{ctrRecipe} % initially set to zero by \newcounter macro
+\NewDocumentCommand \RecipeBookmark{m}{%
+ \ifx\%1\empty\relax\else\stepcounter{ctrRecipe}\pdfbookmark[1]{#1}{Recipe\arabic{ctrRecipe}}\fi
+}
+\else
+\providecommand\phantomsection{}% Q 44088
+\NewDocumentCommand \RecipeBookmark{m}{}%
+\fi
+
+\NewDocumentCommand \RecipeLabel{m}{\phantomsection\label{recipe:#1}}
+\NewDocumentCommand \RecipePageNo{m}{\pageref{recipe:#1}}
+
+\NewDocumentCommand \CookbookIndex{}
+{
+\cleardoublepage % flush all material and clear until you start new odd numbered (recto) page
+%
+% the following line needed if hyperref is loaded (p. 18 of hyperref manual):
+\phantomsection\addcontentsline{toc}{chapter}{\indexname} % see also Q 59619
+%
+\printindex
+}
+
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/img/image-a.jpg b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/img/image-a.jpg
new file mode 100644
index 00000000000..19ac8b9cf4f
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/img/image-a.jpg
Binary files differ
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/img/image-b.jpg b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/img/image-b.jpg
new file mode 100644
index 00000000000..1179cba6cd8
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/img/image-b.jpg
Binary files differ
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/makecookbook.pdf b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/makecookbook.pdf
new file mode 100644
index 00000000000..ef295364c89
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/makecookbook.pdf
Binary files differ
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/makecookbook.tex b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/makecookbook.tex
new file mode 100644
index 00000000000..4518c25c9a8
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/makecookbook.tex
@@ -0,0 +1,24 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LICENSE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Copyright 2018 Terrence P. Murphy and Rosalie D'Amico.
+% This file may be distributed and/or modified under the conditions of the LaTeX Project
+% Public License (“LPPL”), either version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is at:
+% http://www.latex-project.org/lppl.txt.
+% This file is author-maintained and is one of the files that, collectively, make up the
+% MAKECOOKBOOK bundle available at https://ctan.org/pkg/makecookbook
+% For additional information, please see the associated README file.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\documentclass[11pt]{book}
+\input{cb-preamble}
+
+\begin{document}
+\frontmatter
+\include{./tex/cb-frontmatter}
+
+\mainmatter
+\include{./tex/cb-chapterA}
+\include{./tex/cb-chapterB}
+
+\backmatter
+\CookbookIndex{}
+\end{document} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-chapterA.tex b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-chapterA.tex
new file mode 100644
index 00000000000..8df54681227
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-chapterA.tex
@@ -0,0 +1,413 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LICENSE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Copyright 2018 Terrence P. Murphy and Rosalie D'Amico.
+% This file may be distributed and/or modified under the conditions of the LaTeX Project
+% Public License (“LPPL”), either version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is at:
+% http://www.latex-project.org/lppl.txt.
+% This file is author-maintained and is one of the files that, collectively, make up the
+% MAKECOOKBOOK bundle available at https://ctan.org/pkg/makecookbook
+% For additional information, please see the associated README file.
+%
+% The MAKECOOKBOOK bundle includes an example cookbook with seven recipes. Those recipes are
+% courtesy of Rosalie D'Amico. You are, of course, welcome to try them! They are included in
+% the bundle to provide real-world examples of using LaTex code to enter recipes. We only ask
+% that you consider those recipes as for you personal use and not (without attribution) for
+% further food-related publication (further publication OK in a LaTex context).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Some Chapter Name}
+
+\ChapterIntro{
+ \lettrine{T}{his is the} chapter intro. \lipsum[1-3]
+}
+
+\newpage
+\RecipeNameAndYield{Name=A -- Lemon Roasted Potatoes}
+\RecipeStory{\lettrine{T}{his is a recipe} story. \lipsum[66]}
+
+\begin{IngredientsAndSteps}
+ \ListIngredientsAndSteps
+ {
+ 2 \Pd[s] baby Dutch gold potatoes, washed and cut in half
+
+ \fr1/2 cup water
+
+ \fr1/4 cup extra-virgin olive oil
+
+ 4 cloves garlic, finely minced
+
+ \fr1/2 \tsp salt
+
+ Several grinds of black pepper
+
+ \fr1/2 \tsp dried oregano
+
+ \fr1/2 \tsp Piment\'on
+
+ Juice and zest from 1 large lemon
+
+ \fr1/2 cup chopped Italian parsley
+ }
+ {
+ \PreheatC{375} \ChefNote
+
+ In a \Inch{\AxB{9}{13}} baking dish, combine all ingredients except parsley.
+
+ Roast for 30 minutes.
+
+ Stir potatoes and roast another 15 minutes or until well done.
+
+ Serve sprinkled with parsley.
+ }
+
+\end{IngredientsAndSteps}
+\Attribution{Recipe courtesy of Rosalie D'Amico}
+\begin{Tip}
+ {Add \fr1/2 cup pitted kalamata olives before roasting. The olives mellow out and add a nice salty note with the long roasting time.}
+\end{Tip}
+
+\begin{ChefNotes}
+ {If your oven has a convection roast option, use that. }
+\end{ChefNotes}
+
+\newpage
+
+\RecipeNameAndYield{Name=B -- Pumpkin Pancakes, Yield=Yield: 6 Pancakes, NoIdxName=1, IndexA=Pumpkin Pancakes,
+ IndexB=B!Pumpkin Pancakes}
+
+\RecipeStory{\lettrine{W}{e tell a story} here. \lipsum[66]}
+
+\begin{IngredientsAndSteps}
+
+ \ListIngredientsAndSteps
+ {
+ 1\fr1/4 cups all-purpose flour
+
+ 2 \tsp[s] baking powder
+
+ \fr1/2 \tsp cinnamon
+
+ \fr1/2 \tsp ginger
+
+ \fr1/2 \tsp nutmeg
+
+ Pinch of cloves and allspice
+
+ \fr1/4 \tsp salt
+
+ \IngredientsSeparator
+
+ \InsertHiddenLines{1} % also try the multicol \columnbreak command
+
+ \fr1/2 cup canned solid pack pumpkin
+
+ 2 \Tbl[s] brown sugar or Maple Syrup
+
+ 1 large egg
+
+ 2 \Tbl[s] oil
+
+ 1 cup milk
+ }
+ {
+ Mix dry ingredients in bowl. In another bowl, whisk pumpkin and remaining ingredients together until well mixed. Add to dry ingredients and fold together. Do not overmix.
+ }
+
+\end{IngredientsAndSteps}
+\Attribution{Recipe courtesy of Rosalie D'Amico}
+\newpage
+\RecipeNameAndYield{Name=C -- Pesto, XRefLabel=Pesto}%
+\RecipeStory{\lettrine{W}{ith such a} simple, uncooked sauce, it is important to use the freshest and highest-quality ingredients possible -- a very good, extra-virgin olive oil, genuine Parmigiano-Reggiano cheese, American or Italian pine nuts. Avoid pine nuts from China. They can cause \Quote{pine mouth} syndrome, which can leave a bitter, metallic taste in your mouth for up to two weeks. Italian pine nuts are difficult to find and extremely expensive, so I generally use American grown pine nuts.}
+
+\begin{IngredientsAndSteps}
+
+ \ListIngredientsAndSteps
+ {
+ 3 cups packed fresh basil leaves (washed, just shake water out, leaving a bit of water clinging to the leaves), roughly chopped
+
+ 2 cloves garlic
+
+ 2 \Tbl[s] toasted pine nuts
+
+ \fr1/4 \tsp salt
+
+ \fr3/4 cup olive oil divided \fr1/2 and \fr1/4 cup
+
+ \fr1/4 cup chopped Italian parsley (optional)
+
+ \fr1/2 cup grated Parmigiano-Reggiano cheese
+
+ \InsertHiddenLines{2} % see also \columnbreak in the multicol documentation
+ }
+ {
+ Put pine nuts, garlic, salt, and \fr1/2 cup olive oil in food processor. Blend to combine and chop the garlic and pine nuts.
+
+ Add basil (and parsley if using) and remaining olive oil. Blend together until mixture is smooth and bright green.
+
+ Add Parmigiano. Blend until cheese is evenly dispersed. Adjust seasonings and consistency to your liking.
+
+ Transfer to a small bowl and cover the top with a drizzle of olive oil to prevent the pesto from darkening in color.
+ }
+
+\end{IngredientsAndSteps}
+\Attribution{Recipe courtesy of Rosalie D'Amico}
+\begin{Cheffy}
+ {To blanch or not to blanch the basil leaves


+
+ My personal conclusion: I'd skip the blanching if planning to serve (or consume) the pesto that same day. But if I'm going to store it in the refrigerator (or the freezer) for some time, where it will continue to oxidize (which degrades the flavor anyway), that's when I'd consider blanching first. I personally feel blanching takes away some of the flavor. If you do blanch, be sure to blanch for no more than 5 seconds and immediately immerse in an ice bath.}
+\end{Cheffy}
+
+\newpage
+\RecipeNameAndYield{Name=D -- Pasta Genovese, Yield={(Pasta with Pesto, Potatoes and Green Beans)\nl %
+ Makes 4 to 6 servings}}
+\RecipeStory{\lettrine{A}{ccording to} Marcella Hazan, there is no single dish more delicious in the entire Italian pasta repertory than \textit{Pasta Genovese}. And my husband and I could not agree more!
+
+ \textit{Pasta with Pesto, Potatoes, and Green Beans} is the classic Genovese pasta dish from Liguria, a small coastal region of north-western Italy. Liguria is considered to be the birthplace of pesto. Ask any Italian where the best basil in Italy is grown and they will tell you it comes from the area of Pra on the hills to the west of Genoa.
+
+ It may seem odd to have two starches in one dish, but it works. It is very easy to prepare since the green beans and potatoes cook in the same water as the pasta. Use any pasta you desire. Good choices are gemelli, linguine, or my favorite, garganelli. Add more or less potatoes and green beans to your taste.}
+
+\begin{IngredientsAndSteps}
+
+ \ListIngredientsAndSteps
+ {
+ Pesto (one recipe -- page \RecipePageNo{Pesto})
+
+ 8 \Ounce of pasta of your choice
+
+ 3 cups green beans, cut into \Inch{2} pieces
+
+ 5 small red or Dutch gold potatoes, washed, unpeeled and sliced into \Inch{\frx1/4 } slices
+
+ Parmigiano-Reggiano for serving
+ }
+ {
+ Bring a pot of salted water to a boil. You want the water nicely salted for flavor and also to maintain the shape of the potatoes and greenness of the beans.
+
+ Cook the potatoes first, just until they are done. Remove the potatoes with a strainer or slotted spoon and place in a bowl. \textit{Do not throw away the water.}
+
+ Add the beans to the water and cook until they are done all the way. Remove with a slotted spoon and add to the bowl with the potatoes, keeping the cooking water.
+
+ Add the pasta to the boiling water and cook to al dente. When pasta is cooked, add the potatoes and beans and leave in the hot water for one minute just to re-heat them.
+
+ Reserve a cup or more cooking water before draining the pasta, potatoes and beans.
+
+ Add the pasta, potatoes and beans back to the pot you cooked them in. Add the pesto and mix together. Add a little of the pasta cooking water if you want it “saucier”. Serve with grated Parmigiano-Reggiano cheese.
+ }
+\end{IngredientsAndSteps}
+\Attribution{Recipe courtesy of Rosalie D'Amico}
+\newpage
+\RecipeNameAndYield{Name=E -- Lemon Roasted Potatoes}
+\RecipeStory[8]{\lettrine{T}{his is a recipe} story. \lipsum[1-3]}
+
+\begin{IngredientsAndSteps}
+ \ListIngredientsAndSteps
+ {
+ 2 \Pd[s] baby Dutch gold potatoes, washed and cut in half
+
+ \fr1/2 cup water
+
+ \fr1/4 cup extra-virgin olive oil
+
+ 4 cloves garlic, finely minced
+
+ \fr1/2 \tsp salt
+
+ Several grinds of black pepper
+
+ \fr1/2 \tsp dried oregano
+
+ \fr1/2 \tsp Piment\'on
+
+ Juice and zest from 1 large lemon
+
+ \fr1/2 cup chopped Italian parsley
+ }
+ {
+ \PreheatC{375} \ChefNote
+
+ In a \Inch{\AxB{9}{13}} baking dish, combine all ingredients except parsley.
+
+ Roast for 30 minutes.
+
+ Stir potatoes and roast another 15 minutes or until well done.
+
+ Serve sprinkled with parsley.
+ }
+
+\end{IngredientsAndSteps}
+\Attribution{Recipe courtesy of Rosalie D'Amico}
+\begin{Tip}
+ {Add \fr1/2 cup pitted kalamata olives before roasting. The olives mellow out and add a nice salty note with the long roasting time.}
+\end{Tip}
+
+\begin{ChefNotes}
+ {If your oven has a convection roast option, use that. }
+\end{ChefNotes}
+
+\FinishRecipeStory{}
+
+\newpage
+% !!! Note: Fits on one page with \RecipeStory[0] and fonts at 0.925
+\RecipeNameAndYield {Name={F -- Lasagne with Meat Sauce}, %
+ Yield={Makes one \Inch{\AxB{9}{13}} Baking Dish or two \Inch{\AxB{8}{8}} Baking Dishes}}
+\RecipeStory[0]{\ThreeLines}
+
+\begin{IngredientsAndSteps}[AdjIFont=0.92, AddWidth=5]
+
+ \ListIngredientsAndSteps[Tomato Meat Sauce]
+ {
+ 3 \Tbl[s] olive oil or butter
+
+ 2 \Ounce[s] pancetta, finely chopped
+
+ 1 medium onion, finely chopped
+
+ 3 ribs celery, leaves included
+
+ 2 small carrots, peeled and finely chopped
+
+ 3 cloves garlic
+
+ Chili pepper flakes to taste (not traditional)
+
+ 8 \Ounce[s] ground veal
+
+ 8 \Ounce[s] ground pork
+
+ 8 \Ounce[s] ground beef
+
+ 2 \Tbl[s] tomato paste
+
+ 1 cup red wine
+
+ 1\fr1/2 cups chicken or beef stock
+
+ 1 (28 \Ounce[)] can crushed Italian tomatoes in purĂše
+
+ \fr1/4 \tsp ground nutmeg
+
+ Salt and pepper to taste
+ }
+ {
+ Sauté the pancetta and vegetables for about 10 minutes, stirring frequently.
+
+ Add chili pepper flakes along with the meats and cook, breaking meat into small pieces with a wooden spoon, until meat is in very small pieces.
+
+ Stir in the tomato paste and wine. Cook and reduce by half.
+
+ Add stock, tomatoes, salt, pepper and nutmeg. Bring to a boil, reduce heat and simmer very slowly partially covered for 45-60 minutes, stirring occasionally.
+ }
+
+ \ListIngredientsAndSteps[B\'echamel]
+ {
+ 4 \Tbl[s] butter
+
+ 4 \Tbl[s] flour
+
+ \fr1/4 \tsp nutmeg
+
+ 4 cups milk, heated
+
+ Salt and pepper to taste
+ }
+ {
+ Melt the butter over medium-low heat.
+
+ Sprinkle with the flour and nutmeg and whisk until smooth.
+
+ Cook 5 minutes on low heat, whisking frequently. Do not let the butter brown. But do cook for the full time to cook off the raw flour.
+
+ Gradually whisk in the HOT milk. Bring to a slow bubble until sauce thickens and continue cooking on low heat for 5 minutes.
+
+ While bĂ©chamel is cooling, whisk every few minutes to prevent a “skin” from forming. But don’t be concerned if that happens. Just whisk it before using.
+ }
+
+ \ListIngredientsAndSteps[Assembly]
+ {
+ 9-\Ounce box of no-boil lasagne noodles (my favorite brand is Barilla)
+
+ BĂ©chamel sauce
+
+ Tomato meat sauce
+
+ 4 cups grated Italian cheese (a combination of Parmigiano and Mozzarella or other Italian cheese of your choice)
+
+ \fr1/4 cup fresh parsley, chopped
+
+ \fr1/4 cup fresh basil, chopped
+ }
+ {
+ \PreheatC{375}
+
+ Have the pasta, sauce, béchamel and cheese at hand. Spray the pan with non-stick cooking spray.
+
+ Cover the no-boil pasta sheets in hot tap water for 5 minutes. Lay on paper towels or a kitchen towel before using to remove excess water.
+
+ Spread a very thin layer of meat sauce in the bottom of the baking dish. Cover with lasagne sheets in a single layer. Spread a thin layer of béchamel over the pasta and then spoon some sauce on top of the pasta. Sprinkle with cheese, fresh parsley, and basil. Repeat the layers, ending with a nice layer of meat sauce and generous sprinkling of cheese.
+
+ Cover with foil (coat the foil with non-stick cooking spray to keep it from sticking to the cheese).
+ \BakeUntil{Min=30, Max=45}. Remove the foil for the last 15 minutes. Let the Lasagne rest 10 minutes before cutting. Garnish with chopped parsley and basil.
+ }
+\end{IngredientsAndSteps}
+\Attribution{Recipe courtesy of Rosalie D'Amico}
+\FinishRecipeStory{}
+
+\newpage
+\RecipeNameAndYield{Name=G -- Potato Salad with Sherry Shallot Vinaigrette}
+\RecipeStory{\ThreeLines}
+
+\begin{IngredientsAndSteps}
+ \ListIngredientsAndSteps[Vinaigrette]
+ {
+ 1 \Tbl Dijon mustard
+
+ 1 \Tbl sherry vinegar
+
+ \fr1/2 \tsp salt
+
+ \fr1/4 cup olive oil
+
+ 1 \Tbl finely chopped shallots
+
+ 1 \Tbl finely chopped fresh thyme
+
+ Black pepper to taste
+ }
+ {
+ Whisk mustard, vinegar, and salt together. Drizzle in olive oil while whisking until emulsified.
+
+ Stir in shallots and thyme.
+
+ Add black pepper to taste.
+ }
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ % HERE WE PUSH "SALAD" TO THE NEXT COLUMN
+ \InsertHiddenLines{3}
+ %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+ \ListIngredientsAndSteps[Salad]
+ {
+ 1 \Pd small yellow gold potatoes
+
+ 2 slices bacon, \Inch{\frx1/4 } dice
+
+ 2 hardboiled eggs diced
+
+ Fresh parsley finely chopped
+ }
+ {
+ Boil potatoes in salted water (1 \tsp per pound) and 2 \tsp[s] vinegar until tender.
+
+ As soon as you can handle the potatoes, peel and slice into thick coins or cut into quarters. Do not let them get cold.
+
+ Toss in a little of the dressing while warm.
+
+ Meanwhile, cook bacon over medium heat in a skillet until brown and crisp. Drain on paper towels.
+
+ Toss potatoes with bacon, eggs, fresh parsley, and more dressing if needed to your taste.
+ }
+
+\end{IngredientsAndSteps}
+\Attribution{Recipe courtesy of Rosalie D'Amico}
+\begin{Tip}
+ {Double the dressing recipe and save half for a green salad the next day. Romaine lettuce, bacon, and hard-boiled egg with this dressing is yummy.}
+\end{Tip}
+
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-chapterB.tex b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-chapterB.tex
new file mode 100644
index 00000000000..92a139bafbd
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-chapterB.tex
@@ -0,0 +1,121 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LICENSE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Copyright 2018 Terrence P. Murphy and Rosalie D'Amico.
+% This file may be distributed and/or modified under the conditions of the LaTeX Project
+% Public License (“LPPL”), either version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is at:
+% http://www.latex-project.org/lppl.txt.
+% This file is author-maintained and is one of the files that, collectively, make up the
+% MAKECOOKBOOK bundle available at https://ctan.org/pkg/makecookbook
+% For additional information, please see the associated README file.
+%
+% The MAKECOOKBOOK bundle includes an example cookbook with seven recipes. Those recipes are
+% courtesy of Rosalie D'Amico. You are, of course, welcome to try them! They are included in
+% the bundle to provide real-world examples of using LaTex code to enter recipes. We only ask
+% that you consider those recipes as for you personal use and not (without attribution) for
+% further food-related publication (further publication OK in a LaTex context).
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\chapter{Another Chapter Name}
+\ChapterIntro[16]{
+ \lipsum[1-3]
+}
+
+\SideBySide[LeftCaption={left caption}, RightCaption={right caption}]{image-a}{image-b}
+\FinishChapterIntro{}
+
+\newpage
+\RecipeNameAndYield{Name=H -- Chicken Scarpariello}
+\RecipeStory{\lettrine{S}{carpariello} is \textit{shoemaker} in Italian. \textit{Shoemaker’s} chicken may refer to Neapolitan shoemakers making delicious food in the little time they had at the end of the day.}
+
+\begin{IngredientsAndSteps}
+
+ \ListIngredientsAndSteps
+ {
+ \fr1/2 \Pd Italian sausage, links or bulk
+
+ 6 boneless, skinless chicken thighs
+
+ 1 large yellow onion diced small
+
+ \fr1/2 large red bell pepper diced small
+
+ 6 cloves finely minced garlic
+
+ 1 cup dry white wine
+
+ 1 cup chicken broth
+
+ \fr1/2 cup diced pickled Peppadew peppers*
+
+ \fr1/4 cup white wine vinegar
+
+ 3 sprigs fresh rosemary
+
+ Italian parsley for serving
+ }
+ {
+ Brown sausage in skillet with a little oil for 6-8 minutes (they will not be fully cooked). If using links, slice before cooking. Transfer to a plate.
+
+ Salt and pepper the chicken and dredge in flour. Cook in same skillet until nice and brown and remove from skillet (it will not be fully cooked). Transfer to plate with sausage.
+
+ Cook onions, bell pepper and garlic in same skillet for 8 to 10 minutes, adding a bit more oil if necessary.
+
+ Add wine and cook about 5 minutes until slightly reduced.
+
+ Add broth, peppers, vinegar, and rosemary and bring to a boil.
+
+ Add chicken and sausages to skillet and cook until chicken is cooked through, about 10 to 15 minutes.
+
+ Garnish with chopped parsley and serve with steamed rice.
+ }
+
+\end{IngredientsAndSteps}
+\Attribution{Recipe courtesy of Rosalie D'Amico -- Adapted from Bon Appetit}
+
+\begin{Tip}
+ {* Peppadew is the brand name for the pickled grape-size red pepper known as Juanita. They are available on Amazon or can be found bulk in “Olive Bars” in many grocery stores.}
+\end{Tip}
+\newpage
+\RecipeNameAndYield{Name=I -- Pumpkin Pancakes, Yield=Yield: 6 Pancakes}
+
+\RecipeStory{\lettrine{W}{e tell a story} here. \lipsum[66]}
+
+\begin{IngredientsAndSteps}
+
+ \ListIngredientsAndSteps
+ {
+ \IngredientsHeading {Dry Ingredients}%
+
+ 1\fr1/4 cups all-purpose flour
+
+ 2 \tsp[s] baking powder
+
+ \fr1/2 \tsp cinnamon
+
+ \fr1/2 \tsp ginger
+
+ \fr1/2 \tsp nutmeg
+
+ Pinch of cloves and allspice
+
+ \fr1/4 \tsp salt
+
+ \InsertHiddenLines{2} % also try the multicol \columnbreak command
+
+ \IngredientsHeading [2]{Wet Ingredients}%
+
+ \fr1/2 cup canned solid pack pumpkin
+
+ 2 \Tbl[s] brown sugar or Maple Syrup
+
+ 1 large egg
+
+ 2 \Tbl[s] oil
+
+ 1 cup milk
+ }
+ {
+ Mix dry ingredients in bowl. In another bowl, whisk pumpkin and remaining ingredients together until well mixed. Add to dry ingredients and fold together. Do not overmix.
+ }
+
+\end{IngredientsAndSteps}
+\Attribution{Recipe courtesy of Rosalie D'Amico} \ No newline at end of file
diff --git a/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-frontmatter.tex b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-frontmatter.tex
new file mode 100644
index 00000000000..8ef9bb98f0c
--- /dev/null
+++ b/Master/texmf-dist/doc/lualatex/makecookbook/mycookbook/tex/cb-frontmatter.tex
@@ -0,0 +1,66 @@
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% LICENSE %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+% Copyright 2018 Terrence P. Murphy and Rosalie D'Amico.
+% This file may be distributed and/or modified under the conditions of the LaTeX Project
+% Public License (“LPPL”), either version 1.3c of this license or (at your option) any
+% later version. The latest version of this license is at:
+% http://www.latex-project.org/lppl.txt.
+% This file is author-maintained and is one of the files that, collectively, make up the
+% MAKECOOKBOOK bundle available at https://ctan.org/pkg/makecookbook
+% For additional information, please see the associated README file.
+%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
+\pagestyle{empty}
+\MyTitlePage{} % this does a \clearpage
+
+\begin{CopyrightPage}
+{
+First Beta Edition (file created \today ) \par
+\CopyrightInfo{}\par
+
+No part of this publication may be reproduced, distributed, or transmitted in any form or by any means, including photocopying, recording, or other electronic or mechanical methods, without the prior written permission of the publisher, except in the case of brief quotations embodied in critical reviews and certain other noncommercial uses permitted by copyright law. For permission requests, write to the publisher at the address below. \par
+\vspace{5pt}
+ISBN No: {\textsb{978-3-00-000000-0}}\par
+Library of Congress Control Number: {\textsb{00000000000}} \par
+\vspace{5pt}
+Publisher: \par
+Example Publisher\par
+111 Address St.\par
+City, State, 12345\par
+www.theirwebsite.com
+
+\vspace{5pt}
+\hrule
+\vspace{5pt}
+The formatting/layout of this book was produced using MiK\TeX\space (with the Lua\TeX\space compiler), which is a software front-end for the \TeX\space / \LaTeX\space typesetting and document preparation system. See also the \textsb{makecookbook} bundle at:
+
+\quad https://ctan.org/pkg/makecookbook
+
+\vspace{5pt}
+The fonts used in this book are:\par
+\vspace{6pt}
+\ColophonFonts{}
+\vspace{5pt}
+Front cover image by [Artist].\par
+Book design by Terrence P. Murphy and Rosalie A. D'Amico.\par
+Printed by [printer name here], in the United States of America. \par
+}
+\end{CopyrightPage} % ends with a \clearpage
+
+\MyDedication{}
+\newpage
+
+\DedicationVerso{} % Optional content for the usually empty verso page after the dedication (and before TOC)
+\newpage
+
+% The \pagestyle{main} call seems to be "in time" to apply to the \tableofcontents
+% (and I even tested making the TOC two pages and the first page was still correct)
+
+\tableofcontents
+\pagestyle{main}
+
+\chapter{Preface}
+\ChapterIntro{
+ \lipsum[1-10]
+}
+
+
+
diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check
index d550629977a..5a19d4e5425 100755
--- a/Master/tlpkg/bin/tlpkg-ctan-check
+++ b/Master/tlpkg/bin/tlpkg-ctan-check
@@ -419,7 +419,8 @@ my @TLP_working = qw(
luatodonotes luavlna luaxml
lwarp lxfonts ly1 lyluatex
m-tx macros2e macroswap mafr magaz mailing mailmerge
- make4ht makebarcode makebase makebox makecell makecirc makecmds
+ make4ht makebarcode makebase makebox
+ makecell makecirc makecmds makecookbook
makedtx makeglos makeplot maker
makeshape mandi manfnt manfnt-font manuscript manyind margbib
marginfit marginfix marginnote markdown marvosym
diff --git a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
index f83b75dd62f..9c9ca154d01 100644
--- a/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-latexextra.tlpsrc
@@ -658,6 +658,7 @@ depend lua-check-hyphen
depend luatodonotes
depend macroswap
depend magaz
+depend makecookbook
depend mailing
depend mailmerge
depend makebarcode
@@ -1189,6 +1190,7 @@ depend xcntperchap
depend xcolor-material
depend xcolor-solarized
depend xcomment
+depend xcookybooky
depend xdoc
depend xellipsis
depend xfakebold
diff --git a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
index 12085bc5a97..8f59009f41e 100644
--- a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
+++ b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc
@@ -205,6 +205,5 @@ depend uwthesis
depend vancouver
depend xduthesis
depend wsemclassic
-depend xcookybooky
depend yathesis
depend york-thesis
diff --git a/Master/tlpkg/tlpsrc/makecookbook.tlpsrc b/Master/tlpkg/tlpsrc/makecookbook.tlpsrc
new file mode 100644
index 00000000000..e69de29bb2d
--- /dev/null
+++ b/Master/tlpkg/tlpsrc/makecookbook.tlpsrc