summaryrefslogtreecommitdiff
path: root/macros/luatex/latex/makecookbook/mycookbook
diff options
context:
space:
mode:
authorNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
committerNorbert Preining <norbert@preining.info>2019-09-02 13:46:59 +0900
commite0c6872cf40896c7be36b11dcc744620f10adf1d (patch)
tree60335e10d2f4354b0674ec22d7b53f0f8abee672 /macros/luatex/latex/makecookbook/mycookbook
Initial commit
Diffstat (limited to 'macros/luatex/latex/makecookbook/mycookbook')
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/cb-idxstyle.ist16
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/cb-lettrine.cfl44
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/cb-preamble.tex762
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/img/image-a.jpgbin0 -> 12904 bytes
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/img/image-b.jpgbin0 -> 12940 bytes
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/makecookbook.pdfbin0 -> 248344 bytes
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/makecookbook.tex24
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/tex/cb-chapterA.tex413
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/tex/cb-chapterB.tex121
-rw-r--r--macros/luatex/latex/makecookbook/mycookbook/tex/cb-frontmatter.tex66
10 files changed, 1446 insertions, 0 deletions
diff --git a/macros/luatex/latex/makecookbook/mycookbook/cb-idxstyle.ist b/macros/luatex/latex/makecookbook/mycookbook/cb-idxstyle.ist
new file mode 100644
index 0000000000..0ea4255595
--- /dev/null
+++ b/macros/luatex/latex/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/macros/luatex/latex/makecookbook/mycookbook/cb-lettrine.cfl b/macros/luatex/latex/makecookbook/mycookbook/cb-lettrine.cfl
new file mode 100644
index 0000000000..f2fa4a0506
--- /dev/null
+++ b/macros/luatex/latex/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/macros/luatex/latex/makecookbook/mycookbook/cb-preamble.tex b/macros/luatex/latex/makecookbook/mycookbook/cb-preamble.tex
new file mode 100644
index 0000000000..bf5e77529c
--- /dev/null
+++ b/macros/luatex/latex/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/macros/luatex/latex/makecookbook/mycookbook/img/image-a.jpg b/macros/luatex/latex/makecookbook/mycookbook/img/image-a.jpg
new file mode 100644
index 0000000000..19ac8b9cf4
--- /dev/null
+++ b/macros/luatex/latex/makecookbook/mycookbook/img/image-a.jpg
Binary files differ
diff --git a/macros/luatex/latex/makecookbook/mycookbook/img/image-b.jpg b/macros/luatex/latex/makecookbook/mycookbook/img/image-b.jpg
new file mode 100644
index 0000000000..1179cba6cd
--- /dev/null
+++ b/macros/luatex/latex/makecookbook/mycookbook/img/image-b.jpg
Binary files differ
diff --git a/macros/luatex/latex/makecookbook/mycookbook/makecookbook.pdf b/macros/luatex/latex/makecookbook/mycookbook/makecookbook.pdf
new file mode 100644
index 0000000000..ef295364c8
--- /dev/null
+++ b/macros/luatex/latex/makecookbook/mycookbook/makecookbook.pdf
Binary files differ
diff --git a/macros/luatex/latex/makecookbook/mycookbook/makecookbook.tex b/macros/luatex/latex/makecookbook/mycookbook/makecookbook.tex
new file mode 100644
index 0000000000..4518c25c9a
--- /dev/null
+++ b/macros/luatex/latex/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/macros/luatex/latex/makecookbook/mycookbook/tex/cb-chapterA.tex b/macros/luatex/latex/makecookbook/mycookbook/tex/cb-chapterA.tex
new file mode 100644
index 0000000000..8df5468122
--- /dev/null
+++ b/macros/luatex/latex/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/macros/luatex/latex/makecookbook/mycookbook/tex/cb-chapterB.tex b/macros/luatex/latex/makecookbook/mycookbook/tex/cb-chapterB.tex
new file mode 100644
index 0000000000..92a139bafb
--- /dev/null
+++ b/macros/luatex/latex/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/macros/luatex/latex/makecookbook/mycookbook/tex/cb-frontmatter.tex b/macros/luatex/latex/makecookbook/mycookbook/tex/cb-frontmatter.tex
new file mode 100644
index 0000000000..8ef9bb98f0
--- /dev/null
+++ b/macros/luatex/latex/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]
+}
+
+
+