\def\classdate{12 December 2024} \def\classversion{1.0.3} \def\classshortdate{2024/12/12} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Document class for lecture handout document. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % % Version History % v1.0 Initial version, rebuilt from deprecated lecturehandout class. % v1.0.1 Tweaked header so it always fits. % v1.0.2 Corrected page number generation. % v1.0.3 Normalised package info messages. % %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \NeedsTeXFormat{LaTeX2e}[2001/06/01] \ProvidesClass{otagohandout}% [\classdate\space v\classversion\space Otago lecture handout] \DeclareOption*{\PassOptionsToClass{\CurrentOption}{otagoslides}} \ProcessOptions \LoadClass{otagoslides} % 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}@{}}{\resizebox*{\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-1)/6+1 \\% \end{tabular*}% }% \fi% \bg@material% } \makeatother \endinput