diff options
author | Karl Berry <karl@freefriends.org> | 2015-04-22 21:39:35 +0000 |
---|---|---|
committer | Karl Berry <karl@freefriends.org> | 2015-04-22 21:39:35 +0000 |
commit | d789ccfcda9a20e1367aded51735e2f23984c4f4 (patch) | |
tree | b178be3e0dcb96ebcda73231a73769991ee3568b /Master/texmf-dist/tex | |
parent | 3782006e5b8192d3e0e55dc792f9f52fd12286e3 (diff) |
recipebook (22apr15)
git-svn-id: svn://tug.org/texlive/trunk@37010 c570f23f-e606-0410-a88d-b1316a301751
Diffstat (limited to 'Master/texmf-dist/tex')
-rw-r--r-- | Master/texmf-dist/tex/latex/recipebook/RecipeBook.cls | 393 |
1 files changed, 393 insertions, 0 deletions
diff --git a/Master/texmf-dist/tex/latex/recipebook/RecipeBook.cls b/Master/texmf-dist/tex/latex/recipebook/RecipeBook.cls new file mode 100644 index 00000000000..2a13d424e54 --- /dev/null +++ b/Master/texmf-dist/tex/latex/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 + } +} + |