\def\filedate{23 February 2021}
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Document class for lecture handout document.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%
% Version History
% v1.0 Initial version, rebuilt from deprecated lecturehandout class.
%
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}[2001/06/01]
\ProvidesClass{lecturehandout}%
[2021/02/23 INFO lecture handout document style, v.1.0]
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{lectureslides}}
\ProcessOptions
\LoadClass{lectureslides}
% Load required packages.
\RequirePackage{array}
\RequirePackage{background}
\RequirePackage{pgfpages}
\if@chapters
\SetClassType{Chapter}
\fi
% hyperref setup. We have to use a slightly convoluted method, because the
% macros referenced here haven't been set yet. Define the hyperref setup
% as a new macro, and call this AFTER initialising the paper and chapter
% variables.
\renewcommand{\inithyperref}{%
\hypersetup{%
pdftitle={\PaperCode\ \ClassType\ \thechapter\ Lecture Material},%
pdfsubject={\ShortClassTitle},%
colorlinks=false%
}%
}
% Set up notes 6-up page layout using pgfpages.
% This only looks good in landscape, but then it's not intended for
% any other layout anyway...
%
% If there aren't enough frames to fill the final page, any missing ones
% will appear as empty boxes. Meh.
\pgfpagesdeclarelayout{handout 6up}{%
\def\pgfpageoptionborder{0pt}%
}{%
\pgfpagesphysicalpageoptions{%
logical pages=6,%
physical height=\pgfpageoptionheight,%
physical width=\pgfpageoptionwidth,%
}%
\pgfpageslogicalpageoptions{1}
{%
border code=\pgfsetlinewidth{0.6pt}\pgfstroke,%
border shrink=\pgfpageoptionborder,%
resized width=.3\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.183\pgfphysicalwidth}{.67\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{2}
{%
border code=\pgfsetlinewidth{0.6pt}\pgfstroke,%
border shrink=\pgfpageoptionborder,%
resized width=.3\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.5\pgfphysicalwidth}{.67\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{3}
{%
border code=\pgfsetlinewidth{0.6pt}\pgfstroke,%
border shrink=\pgfpageoptionborder,%
resized width=.3\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.817\pgfphysicalwidth}{.67\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{4}
{%
border code=\pgfsetlinewidth{0.6pt}\pgfstroke,%
border shrink=\pgfpageoptionborder,%
resized width=.3\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.183\pgfphysicalwidth}{.33\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{5}
{%
border code=\pgfsetlinewidth{0.6pt}\pgfstroke,%
border shrink=\pgfpageoptionborder,%
resized width=.3\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.5\pgfphysicalwidth}{.33\pgfphysicalheight}%
}%
\pgfpageslogicalpageoptions{6}
{%
border code=\pgfsetlinewidth{0.6pt}\pgfstroke,%
border shrink=\pgfpageoptionborder,%
resized width=.3\pgfphysicalwidth,%
resized height=.5\pgfphysicalheight,%
center=\pgfpoint{.817\pgfphysicalwidth}{.33\pgfphysicalheight}%
}%
}
\pgfpagesuselayout{handout 6up}[a4paper, landscape]
% Set transparent slide background colour.
\setbeamercolor{background canvas}{bg=}
% Set up "headers" and "footers". Because pgfpages converts the original
% pages to logical pages, we can't use normal techniques like fancyhdr,
% because that will get applied to the logical pages, not the physical
% ones. We therefore use a slightly bizarre hack with the background
% package and a tabular to dangle the "header" and "footer" off the
% first logical page.
% (Adapted from <https://tex.stackexchange.com/a/83270>.)
\newcolumntype{L}[1]{>{\raggedright\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{C}[1]{>{\centering\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newcolumntype{R}[1]{>{\raggedleft\let\newline\\\arraybackslash\hspace{0pt}}m{#1}}
\newlength{\headerwidth}
% Three slides @ 0.3\pgfphysicalwidth plus two 5mm gaps.
\setlength{\headerwidth}{0.9\pgfphysicalwidth+1cm}
\SetBgAngle{0}
% Scale factor looks about right, and seems logical.
\SetBgScale{1.414}
\SetBgColor{black}
\SetBgOpacity{1}
\SetBgPosition{current page.north}
% Offsets from current page.north determined empirically.
\SetBgVshift{-0.35\pgfphysicalheight}
\SetBgHshift{0.317\pgfphysicalwidth+1.5mm}
\SetBgContents{}
\makeatletter
\AddEverypageHook{%
% Index off the first logical page, because it's the only one
% we can guarantee to exist on any given page.
\ifnum\pgf@currentshipout=1%
\SetBgContents{%
\sffamily\bfseries\large%
\begin{tabular*}{\headerwidth}{@{}L{\headerwidth/3}@{}C{\headerwidth/3}@{}R{\headerwidth/3}@{}}%
\multicolumn{3}{@{}C{\headerwidth}@{}}{\Huge\PaperCode, \PaperTitle, \TeachingPeriod\ \YearOffered} \\[0.85\pgfphysicalheight]%
% A skip of 0.85\pgfphysicalheight looks about right.
\ClassType\ \thechapter: \ShortClassTitle & Lecture Slides & \the\numexpr\thepage/7+1 \\%
\end{tabular*}%
}%
\fi%
\bg@material%
}
\makeatother
\endinput