\usepackage[pdftex]{hyperref} % options added via hypersetup below \RequirePackage[l2tabu, orthodox]{nag} % checks for deprecated/dodgy syntax \usepackage{etex} % increase number of dimension registers, since we now load enough packages to full the default number \usepackage{fixseminar} \usepackage{soul} \usepackage{graphicx} \usepackage{paralist} \usepackage{multicol} \usepackage{tabularx} \usepackage{hhline} \usepackage{bbding} \usepackage{xargs} \usepackage{texpower} % options added via \PassOptionsToPackage in driver files \usepackage[T1]{fontenc} % needed for getting rid of smart quotes in code \usepackage[scaled]{beramono} % code font \usepackage{textcomp} % needed for getting rid of smart quotes in code \usepackage{microtype} \usepackage{listings} \usepackage{todonotes} \usepackage[default]{gillius} \usepackage{enumitem} % used for nest \usepackage{booktabs} % better rules for tables (use alone or with tabularx) \usepackage[sharp]{easylist} % simple nested lists %\usepackage{showframe} % for checking margins \definecolor{SectionColor}{rgb}{0.32,0.32,0.32} \usepackage[skins]{tcolorbox} % inline highlighting of code \newcommand{\hilightchar}[1]{\colorbox{yellow!75}{\makebox[0pt]{\strut{#1}}}} \newcommand{\hilight}[1]{\setlength{\fboxsep}{1pt}\colorbox{yellow!75}{#1}} % uses the same spacing as \hilight, but does no highlighting. Use on the % original code when using incremental highlighting. \newcommand{\nohilight}[1]{\setlength{\fboxsep}{1pt}\fboxrule0pt\fbox{#1}} \newcommand{\error}[1]{\colorbox{red!75}{#1}} \tcbset{enhanced,boxsep=0pt,top=6pt,bottom=6pt,left=8pt,right=0pt,drop fuzzy shadow} % % PDF tex graphics extensions {graphicx} \DeclareGraphicsExtensions{.jpg,.jpeg,.pdf,.png,.mps} % slidemargins {seminar,powersem} \renewcommand{\slidetopmargin}{15mm} \renewcommand{\slidebottommargin}{28mm} % 'correct' the bottom margin \renewcommand{\slideleftmargin}{15mm} \renewcommand{\sliderightmargin}{15mm} %%% source code highlighting %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % first param is font size, second is baselineskip \newcommand\codesize{\fontsize{9}{1.1em}\selectfont} \newcommand\smallcodesize{\fontsize{8}{1.1em}\selectfont} % define the colors for code highlighting (based on Eclipse colors) \definecolor{KeywordColor}{rgb}{0.5,0,0.33} % violet \definecolor{CommentColor}{rgb}{0.25,0.5,0.37} % green \definecolor{StringColor}{rgb}{0.16,0,1} % blue % define the colors for code highlighting (based on NetBeans colors) %\definecolor{KeywordColor}{rgb}{0.0,0,0.9} %\definecolor{CommentColor}{rgb}{0.45,0.45,0.45} % a bit darker than NetBeans %\definecolor{StringColor}{rgb}{0.81,0.48,0.0} % create the fonts for code highlighting \newcommand{\codefont}{\fontfamily{fvm}\selectfont} % beramono \newcommand{\commentfont}{\sffamily\itshape} % create a new environment for source code blocks \lstnewenvironment{codeblock}[1][] { \lstset{ language=Java, upquote=true, basicstyle=\color{black}\codefont\codesize, keywordstyle=\color{KeywordColor}\codefont\codesize, commentstyle=\color{CommentColor}\commentfont\codesize, stringstyle=\color{StringColor}\codefont\codesize, aboveskip=0pt, belowskip=0pt, lineskip=-5pt, showstringspaces=false, tabsize=3, showtabs=false, columns=fullflexible, flexiblecolumns=true, xleftmargin=0pt, breaklines=true }\lstset{#1}} {} % create a new environment for source code blocks \lstnewenvironment{smallcodeblock}[1][] {% set up source code highlighting environment {listings} \lstset{ language=Java, upquote=true, basicstyle=\color{black}\codefont\smallcodesize, keywordstyle=\color{KeywordColor}\codefont\smallcodesize, commentstyle=\color{CommentColor}\commentfont\codesize, stringstyle=\color{StringColor}\codefont\smallcodesize, aboveskip=0pt, belowskip=0pt, lineskip=-9pt, showstringspaces=false, tabsize=2, showtabs=false, columns=fullflexible, flexiblecolumns=true, xleftmargin=0pt, breaklines=true }\lstset{#1}} {} \lstdefinelanguage{JavaScript}{ keywords={typeof, new, true, false, catch, function, return, null, catch, switch, var, if, in, while, do, else, case, break, this}, sensitive=false, comment=[l]{//}, morecomment=[s]{/*}{*/}, morestring=[b]', morestring=[b]" } % command for typesetting inline code \renewcommand{\code}[2][language=java]{% \lstset{% language=Java, upquote=true, basicstyle=\color{black}\codefont\normalsize, keywordstyle=\color{KeywordColor}\codefont\normalsize, commentstyle=\color{CommentColor}\commentfont\normalsize, stringstyle=\color{StringColor}\codefont\normalsize, showstringspaces=false, showtabs=false }% \mbox{\lstinline[#1]!#2!}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % command for figures - first param is scale, second is file \newcommand{\fig}[2] { \begin{figure}[H] \centering{\includegraphics[scale=#1,draft=false]{#2}} \end{figure} \vspace{-0.75\baselineskip} } % command for figures rotated 90 degrees left - first param is scale. \newcommand{\rotatedfig}[2] { \begin{figure}[H] \centering{\includegraphics[scale=#1,draft=false, angle=90]{#2}} \end{figure} } % command for figures - first param is scale, second is file \newcommand{\capfig}[3] { \begin{figure}[H]% \centering{\includegraphics[scale=#1,draft=false]{#2}% \\ % {\footnotesize #3} % } \end{figure} % \vspace{-0.75\baselineskip} } % command for figures that fit the page width \newcommand{\fittedfig}[1] { \begin{figure}[H] \begin{center} \resizebox{\textwidth}{!}{\includegraphics[draft=false]{#1}} \vspace{-25pt} \end{center} \end{figure} } % suppress section numbers \setcounter{secnumdepth}{-2} % scale factors used by seminar/powersem package to make over/under full slides fit a bit better \renewcommand{\slideshrink}{1.0} \renewcommand{\slideskip}{0.25} \renewcommand{\slidestretch}{1.05} % increase paragraph spacing a little bit so slides don't look so crowded \renewcommand{\slideparskip}{1.5ex} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% sections %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \usepackage[sf,bf]{titlesec} \titlespacing{\section}{0pt}{0pt}{0pt} \titlespacing{\subsection}{0pt}{0pt}{0pt} \titlespacing{\subsubsection}{0pt}{0pt}{0pt} \titlespacing{\paragraph}{0pt}{0pt}{-0.5\parskip} \newcommand\mysectionstyle{\huge\sffamily} \newcommand\mysubsectionstyle{\LARGE\sffamily} \newcommand\mysubsubsectionstyle{\Large\sffamily} \newcommand\mysubsubsubsectionstyle{\sffamily\bfseries} \titleformat{\section}{\mysectionstyle\filcenter}{\theparagraph}{1em}{} \titleformat{\subsection}{\mysubsubsubsectionstyle}{\theparagraph}{1em}{} \titleformat{\subsubsection}{\mysubsubsectionstyle}{\theparagraph}{1em}{} \titleformat{\paragraph}{\mysubsubsubsectionstyle}{\theparagraph}{1em}{} % repurpose \paragraph as \subsubsubsection (which it sort of is already) \newcommand{\subsubsubsection}[1]{\paragraph{#1}} %%%% % shrinkable sections - shrink to \textwidth if too long %%%% %section \let\oldsection\section \newsavebox{\secbox} \newlength{\secboxlength} \renewcommand{\section}[1]{% \sbox{\secbox}{\mbox{\mysectionstyle#1}}\settowidth{\secboxlength}{\usebox{\secbox}}% \oldsection{\ifdim\secboxlength>\textwidth\protect\resizebox{\textwidth}{!}{\usebox{\secbox}}\else{\usebox{\secbox}}\fi}} %subsection \let\oldsubsection\subsection \newsavebox{\subsecbox} \newlength{\subsecboxlength} \renewcommand{\subsection}[1]{% \sbox{\subsecbox}{\mbox{\mysubsectionstyle#1}}\settowidth{\subsecboxlength}{\usebox{\subsecbox}}% \oldsubsection{\ifdim\subsecboxlength>\textwidth\protect\resizebox{\textwidth}{!}{\usebox{\subsecbox}}\else{\usebox{\subsecbox}}\fi}} %subsubsection \let\oldsubsubsection\subsubsection \newsavebox{\subsubsecbox} \newlength{\subsubsecboxlength} \renewcommand{\subsubsection}[1]{% \sbox{\subsubsecbox}{\mbox{\mysubsubsectionstyle#1}}\settowidth{\subsubsecboxlength}{\usebox{\subsubsecbox}}% \oldsubsubsection{\ifdim\subsubsecboxlength>\textwidth\protect\resizebox{\textwidth}{!}{\usebox{\subsubsecbox}}\else{\usebox{\subsubsecbox}}\fi}} %subsubsubsection \let\oldsubsubsubsection\subsubsubsection \newsavebox{\subsubsubsecbox} \newlength{\subsubsubsecboxlength} \renewcommand{\subsubsubsection}[1]{% \sbox{\subsubsubsecbox}{\mbox{\mysubsubsubsectionstyle#1}}\settowidth{\subsubsubsecboxlength}{\usebox{\subsubsubsecbox}}% \oldsubsubsubsection{\ifdim\subsubsubsecboxlength>\textwidth\protect\resizebox{\textwidth}{!}{\usebox{\subsubsubsecbox}}\else{\usebox{\subsubsubsecbox}}\fi}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% miscellaneous stuff %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % suppress built in slide centering (which buggers up incremental uncovering, % and makes things jump around a lot) \centerslidesfalse % options for hyperef \hypersetup{ final={true}, colorlinks={true}, urlcolor={blue}, filecolor={blue}, linkcolor={blue}, bookmarks={true}, bookmarksopen={true}, pdfpagemode={None} } % title/subject/author attributes are set in lecturedetails.tex % command for continuing slides - moves the content down a bit \newcommand{\continued}{\null\smallskip} \newcommand{\ra}[0]{$\rightarrow$~} \slidepagestyle{empty} \slideframe[\setlength{}{}]{none} % environment for generating first page content \newenvironment{lecturecontent}% {% \null\vfill\maketitle\vfill\vfill\null% \newslide \section{Topics covered}% \begin{itemize} }% {% \end{itemize}% } \newcommand{\point}[2]{\textbf{#1}\\#2} \renewcommand{\emph}[1]{\color{emcolor}\textit{#1}} \newcommand{\strong}[1]{\color{emcolor}\textbf{#1}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% lists %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % fix the extra spacing that itemize/enumerate has when you put have an blank % line prior to the environment (paralist). \setlength{\pltopsep}{0.2\baselineskip} \setlength{\plpartopsep}{-0.2\baselineskip} \setlength{\plitemsep}{0.2\baselineskip} \setlength{\plparsep}{0.2\baselineskip} % use paralist compact versions by default so that above tweaks are used %\renewenvironment{itemize}% % {\begin{compactitem}}% % {\end{compactitem}} % %\renewenvironment{enumerate}% % {\begin{compactenum}}% % {\end{compactenum}} % rationalise the bullet points \def\labelitemi{\footnotesize\raisebox{0.175em}{$\bullet$}\normalsize} \def\labelitemii{\footnotesize\raisebox{0.175em}{$\circ$}\normalsize} \def\labelitemiii{\footnotesize\raisebox{0.175em}{$\diamond$}\normalsize} \def\labelitemiv{\footnotesize\raisebox{0.175em}{$\triangleright$}\normalsize} \def\labelitemv{\footnotesize\raisebox{0.175em}{$\star$}\normalsize} % easylist configuration \ListProperties(% Hang=true, % hanging indent Space=0pt, % additional space between different nest levels Space*=0pt, % additional space between same levels Hide=1000, % hide all numbering Margin=1em, Align=move, Margin1=1em, Style1*=\labelitemi\hskip.5em, Space1*=0.2em, % level 1 Margin2=2em, Style2*=\labelitemii\hskip .5em, Space2*=0.1em, % level 2 Margin3=3em, Style3*=\labelitemiii\hskip .5em, % level 3 Margin4=4em, Style4*=\labelitemiv\hskip .5em, % level 4 Margin5=5em, Style5*=\labelitemv\hskip .5em % level 5 ) % my attempt at creating a configurable easylist environment for controlling % spacing \usepackage{calc} % allows more complex calculations \newenvironment{nest}[1][0pt]% {% \ListProperties(% Space=#1, % additional space between different nest levels Space*=#1, % additional space between same levels ) \begin{easylist}% }% {% \end{easylist} % reset easylist spacing \ListProperties(% Space=0pt, % additional space between different nest levels Space*=0pt, % additional space between same levels ) }% % my attempt at creating a flat nested list environment %\usepackage{calc} % allows more complex calculations %\newenvironment{nest}[1][1]% %{\setlength{\parskip}{#1\baselineskip*\real{0.4}}}% %{\setlength{\leftskip}{0pt}\vspace{-2pt}\setlength{\parskip}{\slideparskip}} % %\def\liUndent{-10pt} %\def\liVgap{-4pt} %\def\liSkip{20pt} %\def\liiSkip{35pt} %\def\liiiSkip{46pt} %\def\liiiiSkip{57pt} %\def\liiiiiSkip{68pt} % %\newcommand{\li}{\smallskip\hspace{\liUndent}\labelitemi\hspace{5pt}\setlength{\leftskip}{\liSkip}} %\newcommand{\lii}{\hspace{\liUndent}\labelitemii\hspace{5pt}\setlength{\leftskip}{\liiSkip}} %\newcommand{\liii}{\hspace{\liUndent}\labelitemiii\hspace{5pt}\setlength{\leftskip}{\liiiSkip}} %\newcommand{\liiii}{\hspace{\liUndent}\labelitemiv\hspace{5pt}\setlength{\leftskip}{\liiiiSkip}} %\newcommand{\liiiii}{\hspace{\liUndent}\labelitemv\hspace{5pt}\setlength{\leftskip}{\liiiiiSkip}} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% to-do notes %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% \newcommand{\fix}[1]{\todo[color=red!60,noline,size=\large,inline]{Fix: #1}} %\newcommand{\comment}[1]{\todo[color=yellow!60,inline,size=\large]{#1}} %\newcommand{\incomplete}{\todo[color=red!60,inline,size=\large]{Incomplete}} %\newcommand{\complete}{\todo[color=green!60,inline,size=\large]{Complete}} \newcommand{\complete}{{\color{green}\Checkmark}~} \newcommand{\incomplete}{{\color{red}\XSolidBrush}~} %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %% slide environment %% %%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % redefine texpower slide % new slide env that centers vertically % this is currently bustificated - haven't had time to look into it %\newenvironment{centredslide}% %{\slide\topskip0pt\minipage[c][\textheight][c]{\textwidth}}% %{\endminipage\endslide}