summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/recipebook/RecipeBook.cls
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/latex/contrib/recipebook/RecipeBook.cls
Initial commit
Diffstat (limited to 'macros/latex/contrib/recipebook/RecipeBook.cls')
-rw-r--r--macros/latex/contrib/recipebook/RecipeBook.cls393
1 files changed, 393 insertions, 0 deletions
diff --git a/macros/latex/contrib/recipebook/RecipeBook.cls b/macros/latex/contrib/recipebook/RecipeBook.cls
new file mode 100644
index 0000000000..2a13d424e5
--- /dev/null
+++ b/macros/latex/contrib/recipebook/RecipeBook.cls
@@ -0,0 +1,393 @@
+%% RecipeBook.cls
+%% Copyright 2015 Brad Granger
+%
+% This work may be distributed and/or modified under the
+% conditions of the LaTeX Project Public License, either version 1.3
+% of this license or (at your option) any later version.
+% The latest version of this license is in
+% http://www.latex-project.org/lppl.txt
+% and version 1.3 or later is part of all distributions of LaTeX
+% version 2005/12/01 or later.
+%
+% This work has the LPPL maintenance status `maintained'.
+% The Current Maintainer of this work is Brad Granger
+%
+% This work consists of the file RecipeBook.cls
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{RecipeBook}[2015/02/13 Custom recipe class]
+
+\LoadClass[letterpaper,12pt,twocolumn]{article}
+
+\RequirePackage[document]{ragged2e} % Left-aligns document (need document option)
+\RequirePackage{amsmath,amsfonts,amssymb} % Use for \square symbol, etc.
+\RequirePackage{xparse} % Multiple optional arguments in new environments
+\RequirePackage{wrapfig} % Use for wrapping around large numbers in instructions
+\RequirePackage{graphicx} % Use to include figures
+\RequirePackage{eso-pic} % Used for transparent images
+\RequirePackage{anyfontsize} % Provides arbitrary font sizes
+\RequirePackage{scrextend} % Used with anyfontsize
+\RequirePackage{multirow,multicol} % Join cells in tabular
+\RequirePackage{nicefrac} % nice slanted fractions using \nicefrac
+\RequirePackage{xcolor} % Change text color using \color{} within group or env.
+\RequirePackage{gensymb} % Provides the degree symbol with \degree
+\RequirePackage{booktabs} % Nice table line \toprule
+\RequirePackage{tabularx} % Used for auto-width tables
+\RequirePackage{calc} % Provides \widthof for wrapping around numbers in \step{}.
+\RequirePackage{picture} % Used for absolute dimensions with put{}
+%----Adds parskip between minipage environments------------------------------%
+\RequirePackage{parskip}
+\setlength{\parskip}{\medskipamount}
+\newcommand{\@minipagerestore}{\setlength{\parskip}{\medskipamount}}
+%----Define fonts and font sizes---------------------------------------------%
+\RequirePackage{tgtermes}
+\RequirePackage[T1]{fontenc}
+\renewcommand{\rmdefault}{qtm}
+\newlength{\basefontsize}
+\setlength{\basefontsize}{13pt}
+\newlength{\basefontskipsize}
+\setlength{\basefontskipsize}{14pt}
+\newlength{\recipetitlefontsize}
+\setlength{\recipetitlefontsize}{22pt}
+\newlength{\instrnumsize}
+\setlength{\instrnumsize}{22pt}
+\newlength{\recipeheadfontsize}
+\setlength{\recipeheadfontsize}{17pt}
+\changefontsizes[\basefontskipsize]{\basefontsize} % Default font skip/size
+
+%----Shrink and grow environments to scale text------------------------------%
+\NewDocumentEnvironment{shrink}{O{1pt}}{
+ \addtolength{\basefontsize}{-#1}
+ \addtolength{\basefontskipsize}{-#1}
+ \addtolength{\instrnumsize}{-#1 * 2}
+ \addtolength{\recipeheadfontsize}{-#1}
+ \changefontsizes[\basefontskipsize]{\basefontsize}
+}{
+ \addtolength{\basefontsize}{#1}
+ \addtolength{\basefontskipsize}{#1}
+ \addtolength{\instrnumsize}{#1 * 2}
+ \addtolength{\recipeheadfontsize}{#1}
+ \changefontsizes[\basefontskipsize]{\basefontsize}
+}
+
+\NewDocumentEnvironment{grow}{O{1pt}}{
+ \addtolength{\basefontsize}{#1}
+ \addtolength{\basefontskipsize}{#1}
+ \addtolength{\instrnumsize}{#1 * 2}
+ \addtolength{\recipeheadfontsize}{#1}
+ \changefontsizes[\basefontskipsize]{\basefontsize}
+}{
+ \addtolength{\basefontsize}{-#1}
+ \addtolength{\basefontskipsize}{-#1}
+ \addtolength{\instrnumsize}{-#1 * 2}
+ \addtolength{\recipeheadfontsize}{-#1}
+ \changefontsizes[\basefontskipsize]{\basefontsize}
+}
+
+%----Some page formatting lengths--------------------------------------------%
+\setlength\parindent{0pt} % Don't indent new paragraphs
+\setlength\parskip{4pt} % Set space between paragraphs
+\setlength{\columnsep}{12pt} % Sets margin between columns
+
+%----Headers and footers-----------------------------------------------------%
+\RequirePackage{datetime} % Provides compile date on title page
+\mmddyyyydate % Reformat \today to MM/DD/YYYY
+\RequirePackage{fancyhdr} % Provide header and footer \lhead \rfoot, etc.
+\fancypagestyle{recipe}{
+ \fancyhead{}
+ \fancyfoot{}
+ \fancyfoot[R]{\hyperlink{contents}{\arabic{page}}}
+ \renewcommand{\headrulewidth}{0pt} % Remove line from header
+ \renewcommand{\footrulewidth}{0pt}
+}
+\fancypagestyle{titlestyle}{
+ \fancyhead{}
+ \fancyfoot{}
+ \renewcommand{\headrulewidth}{0pt} % Remove line from header
+ \renewcommand{\footrulewidth}{0pt}
+}
+\fancypagestyle{tocstyle}{
+ \fancyhead{}
+ \fancyfoot{}
+ \fancyfoot[C]{\today}
+ \renewcommand{\headrulewidth}{0pt} % Remove line from header
+ \renewcommand{\footrulewidth}{0pt}
+}
+
+\raggedbottom % Don't stretch blocks vertically to fit page
+\RequirePackage{tikz}
+\usetikzlibrary{calc, fadings}
+
+%----Commands for working with the ToC--------------------------------------=%
+% Use tocloft to remove numbers from the table of contents (ToC)
+\RequirePackage{tocloft}
+% Use hyperref to create links in the ToC (has to be loaded last, usually)
+\RequirePackage[colorlinks]{hyperref}
+\hypersetup{linkcolor=blue}
+% Set page geometry (should be loaded after hyperref}
+\RequirePackage[top=0.4in,inner=0.25in,outer=0.25in,bottom=0.65in,
+ paperheight=8.5in, paperwidth=5.5in,
+ headheight=16pt]{geometry}
+
+\cftsetindents{subsection}{8pt}{0pt}
+\cftsetindents{section}{0pt}{0pt}
+\renewcommand\thesection{}
+\renewcommand\thesubsection{}
+\renewcommand\cftdot{}
+\renewcommand{\cftsecfont}{
+ \bfseries \fontsize{\recipeheadfontsize}{\recipeheadfontsize}\selectfont
+}
+\newcommand \makecontents {\tableofcontents \thispagestyle{tocstyle}}
+
+%----\titlepage for generating title page------------------------------------%
+\DeclareDocumentCommand{\titlepage}{O{Recipes} m m m}{
+ \thispagestyle{titlestyle}
+ \AddToShipoutPicture*{
+ \put(0.20in,0){
+ \parbox[b][\paperheight]{\linewidth}{%
+ \vspace*{2.40in}
+ \begin{tikzpicture}
+ \node[anchor=north east, inner sep=0] (image) at (0,0) {%
+ \includegraphics[width=1.05\linewidth]{#2}};
+ \end{tikzpicture}
+ \vfill
+ }
+ }
+ }
+ \AddToShipoutPicture*{
+ \put(0.25\paperwidth,0){
+ \parbox[b][\paperheight]{\linewidth}{%
+ \vspace*{3.90in}
+ \begin{tikzpicture}
+ \node[anchor=north east, inner sep=0] (image) at (0,0) {%
+ \includegraphics[width=1.05\linewidth]{#3}};
+ \end{tikzpicture}
+ \vfill
+ }
+ }
+ }
+ \AddToShipoutPicture*{
+ \put(0.5\paperwidth,0){
+ \parbox[b][\paperheight]{\linewidth}{%
+ \vspace*{5.40in}
+ \begin{tikzpicture}
+ \node[anchor=north east, inner sep=0] (image) at (0,0) {%
+ \includegraphics[width=1.05\linewidth]{#4}};
+ \end{tikzpicture}
+ \vfill
+ }
+ }
+ }
+ \AddToShipoutPicture*{
+ \parbox[b][\paperheight]{\paperwidth}{
+ \vspace*{0.9in}
+ \centering \color{black!50}
+ \fontsize{46pt}{40pt}\selectfont #1
+ \vfill
+ }
+ }
+ $\quad$
+ \clearpage \newpage
+}
+
+%----section and subsection commands-----------------------------------------%
+\RenewDocumentCommand{\section}{m}{
+ \newpage
+ \phantomsection
+ \cftaddtitleline{toc}{section}{#1}{}
+}
+
+\RenewDocumentCommand{\subsection}{m}{
+ \clearpage\newpage
+ \phantomsection
+ \addcontentsline{toc}{subsection}{#1}
+}
+
+%----Make page numbers hyperlinks to the ToC (along with fancyhdr, above)----%
+\renewcommand{\contentsname}{\hypertarget{contents}{
+ \bfseries \fontsize{\recipetitlefontsize}{\recipetitlefontsize}\selectfont
+ Recipes}
+}
+
+%----Image commands----------------------------------------------------------%
+\setlength{\@fptop}{0pt} % Position image at the top by setting fill to 0pt
+
+\tikzfading[name=fade l,left color=transparent!100,right color=transparent!0]
+\tikzfading[name=fade r,right color=transparent!100,left color=transparent!0]
+\tikzfading[name=fade d,bottom color=transparent!100,top color=transparent!0]
+\tikzfading[name=fade u,top color=transparent!100,bottom color=transparent!0]
+
+% this "frames" a rectangle node
+\newcommand\framenode[2][10pt]{
+ \fill[white, opacity=1, path fading=fade u] (#2.south west) rectangle ($(#2.south east)+(0, #1)$);
+ \fill[white, opacity=1, path fading=fade d] (#2.north west) rectangle ($(#2.north east)+(0,-#1)$);
+ \fill[white, opacity=1, path fading=fade l] (#2.south east) rectangle ($(#2.north east)+(-#1,0)$);
+ \fill[white, opacity=1, path fading=fade r] (#2.south west) rectangle ($(#2.north west)+( #1,0)$);
+}
+
+\newlength{\pagetop} \setlength{\pagetop}{32.5pt}
+\DeclareDocumentCommand \leftbgpic {O{32.5pt} O{0.4} m} {
+ \AddToShipoutPicture*{
+ \put(0.20in,0.15in){
+ \parbox[b][\paperheight]{\linewidth}{%
+ \vspace*{#1}
+ \begin{tikzpicture}[opacity=#2]
+ \node[anchor=north east, inner sep=0] (image) at (0,0) {%
+ \includegraphics[width=1.05\linewidth]{#3}};
+ \framenode[25pt]{image} % opt. arg. is fade radius;
+ % mand. arg. is node name to frame
+ \end{tikzpicture}
+ \vfill
+ }
+ }
+ }
+}
+
+\newlength{\pagebottom} \setlength{\pagebottom}{6.15in}
+\DeclareDocumentCommand \rightbgpic {O{\pagebottom} O{0.4} m} {
+ \AddToShipoutPicture*{
+ \put(.49\paperwidth,0.15in){
+ \parbox[b][\paperheight]{\linewidth}{%
+ \vspace*{#1}
+ \begin{tikzpicture}[opacity=#2]
+ \node[anchor=north east, inner sep=0] (image) at (0,0) {%
+ \includegraphics[width=1.05\linewidth]{#3}};
+ \framenode[30pt]{image} % opt. arg. is fade radius;
+ % mand. arg. is node name to frame
+ \end{tikzpicture}
+ \vfill
+ }
+ }
+ }
+}
+
+% % \pic command for float image
+% \DeclareDocumentCommand{\pic}{O{t} m}{
+% \begin{figure}[#1]
+% \centering \includegraphics[width=0.45\textwidth]{#2} \\
+% \end{figure}
+% }
+
+% \pic command for float image
+\DeclareDocumentCommand{\pic}{O{t} m}{
+ \begin{figure}[#1]
+ \begin{tikzpicture}
+ \node[anchor=north east, inner sep=0] (image) at (0,0) {%
+ \centering \includegraphics[width=.92\linewidth]{#2}
+ };
+ \framenode[4pt]{image}
+ \end{tikzpicture}
+ \end{figure}
+}
+
+%----Title and subtitle commands---------------------------------------------%
+\RenewDocumentCommand{\title}{O{\recipetitlefontsize} m}{
+ \begingroup \fontsize{#1}{#1}\selectfont \bf #2 \endgroup
+}
+
+\DeclareDocumentCommand{\subtitle}{O{18pt} m}{
+ \begingroup
+ \fontsize{#1}{#1}\selectfont \textcolor{black!50} {#2}
+ \endgroup
+}
+
+%----RecipeSection command---------------------------------------------------%
+\DeclareDocumentCommand{\recipesection}{O{\recipeheadfontsize} m}{
+ \begingroup \fontsize{#1}{#1}\selectfont \color{blue!60}\bf\emph{#2} \endgroup
+}{}
+
+%----Author footnote---------------------------------------------------------%
+\RenewDocumentCommand{\author}{O{Author: } m}{
+ \lfoot{\textcolor{black!20}{#1#2}}
+}
+
+%----Info environment--------------------------------------------------------%
+\newenvironment{info}{
+ \vspace*{\parskip}
+ \tabular{ll}
+}{
+ \endtabular
+ \vspace*{\parskip}
+}
+
+%----Info* environment for more compact spacing------------------------------%
+\newenvironment{info*}{
+ \tabular{ll}
+}{
+ \endtabular
+}
+
+%----Ingredients section-----------------------------------------------------%
+\NewDocumentEnvironment{ingredients}{}{
+ \renewcommand{\arraystretch}{1.08}
+ \setlength{\tabcolsep}{4pt}
+ \tabularx{\linewidth}{@{}lX@{}}
+}{
+ \endtabularx
+}
+
+\DeclareDocumentCommand{\item}{O{$\square$} m}{#1 & #2 \\}
+
+% Starred version of ingredients environment for a shaded background
+% with faded edges.
+\RequirePackage{environ}
+\RequirePackage{tcolorbox}
+\NewEnviron{ingredients*}{%
+ \renewcommand{\arraystretch}{1.08}
+ \setlength{\tabcolsep}{4pt}
+ \setlength\fboxsep{0pt}
+ \begin{tcolorbox}[colback=black!4,colframe=black!2,boxrule=2pt,
+ arc=7pt,boxsep=0pt,left=1pt,right=1pt,top=-5pt,
+ bottom=1pt]
+ \begin{tcolorbox}[colback=black!8,colframe=black!6,boxrule=2pt,
+ arc=6pt,boxsep=0pt,left=0pt,right=0pt,top=-5pt,
+ bottom=0pt]
+ \begin{tabularx}{\linewidth}{@{}lX@{}}
+ \BODY
+ \end{tabularx}
+ \end{tcolorbox}
+ \end{tcolorbox}
+}
+
+\newcommand{\group}[1]{
+ \multicolumn{2}{l}{
+ \color{black!80} \emph{#1}} \\[-2pt] \toprule
+ }
+
+%----Instructions section----------------------------------------------------%
+\DeclareDocumentCommand{\step}{m m}{
+ \begin{minipage}{\linewidth}
+ \setlength{\intextsep}{4pt}
+ \setlength{\columnsep}{6pt}
+ \begin{wraptable}{L}{
+ \widthof{\fontsize{\instrnumsize}{\instrnumsize}\selectfont 1 }}
+ \begin{tabularx}{\textwidth}{@{}l@{}}
+ \fontsize{\instrnumsize}{\instrnumsize}\selectfont \color{black!60} #1
+ \end{tabularx}
+ \end{wraptable}
+ #2
+ \end{minipage}
+
+}
+
+\DeclareDocumentCommand{\hlgroup}{O{black} m}{
+ \begin{tcolorbox}[colback=black!7,colframe=black!3,boxrule=2pt,
+ arc=5pt,boxsep=0pt,left=1pt,right=1pt,top=-7pt,
+ bottom=-1pt]
+ \begin{tcolorbox}[colback=black!12,colframe=black!10,boxrule=2pt,
+ arc=4pt,boxsep=0pt,left=0pt,right=0pt,top=-7pt,
+ bottom=-3pt]
+ \begin{tabular}{@{}m{\linewidth}@{}}
+ \emph{$\:$#2}
+ \end{tabular}
+ \end{tcolorbox}
+ \end{tcolorbox}
+}
+
+\newcommand{\num}[1]{
+ \multirow{2}{*}{
+ \begingroup \fontsize{\instrnumsize}{\instrnumsize}\selectfont
+ \textcolor{black!80} #1 \endgroup
+ }
+}
+