summaryrefslogtreecommitdiff
path: root/macros/latex/contrib/fancyhandout/fancyhandout.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/fancyhandout/fancyhandout.cls
Initial commit
Diffstat (limited to 'macros/latex/contrib/fancyhandout/fancyhandout.cls')
-rw-r--r--macros/latex/contrib/fancyhandout/fancyhandout.cls311
1 files changed, 311 insertions, 0 deletions
diff --git a/macros/latex/contrib/fancyhandout/fancyhandout.cls b/macros/latex/contrib/fancyhandout/fancyhandout.cls
new file mode 100644
index 0000000000..84f5156f22
--- /dev/null
+++ b/macros/latex/contrib/fancyhandout/fancyhandout.cls
@@ -0,0 +1,311 @@
+%% This is file 'fancyhandout.cls', Version 2018-01-22
+%% Copyright 2017-18 Sebastian Friedl <sfr682k@t-online.de>
+%%
+%% This work may be distributed and/or modified under the conditions of the LaTeX Project
+%% Public License, either version 1.3c of this license or (at your option) any later version.
+%% The latest version of this license is available at
+%% http://www.latex-project.org/lppl.txt
+%% and version 1.3c or later is part of all distributions of LaTeX version 2008-05-04 or later.
+%%
+%% This work has the LPPL maintenance status 'maintained'.
+%% Author: Sebastian Friedl
+%% Current maintainer of this work is Sebastian Friedl
+%%
+%% This work consists of the files fancyhandout.cls and fancyhandout-doc.tex
+%%
+%% ---------------------------------------------------------------------------------------------------------------------------------------------
+%%
+%% A LaTeX class for producing nice-looking handouts.
+%%
+%% ---------------------------------------------------------------------------------------------------------------------------------------------
+%%
+%% Please report bugs and other problems as well as suggestions for improvements to the following email address: sfr682k@t-online.de
+%%
+%% ---------------------------------------------------------------------------------------------------------------------------------------------
+
+
+\ProvidesClass{fancyhandout}[2018/01/22 fancyhandout: A LaTeX class for producing nice-looking handouts]
+\NeedsTeXFormat{LaTeX2e}
+\RequirePackage{etoolbox}
+
+
+
+% DEFINE OPTIONS ---------------------------------------------------------------------------------------------
+
+% Option for using letter paper
+\newif\if@letter
+\@letterfalse
+\DeclareOption{letter}{\@lettertrue}
+
+% Option for one-sided layout
+\newif\if@twoside
+\@twosidetrue
+\DeclareOption{oneside}{\@twosidefalse}
+
+% Option for 10pt or 12pt font size
+\newif\if@tenpt
+\newif\if@twelvept
+\@tenptfalse
+\@twelveptfalse
+\DeclareOption{10pt}{\@tenpttrue}
+\DeclareOption{12pt}{\@twelvepttrue}
+
+% Option for using the roman font as text font
+\newif\if@sffont
+\@sffonttrue
+\DeclareOption{rmfont}{\@sffontfalse}
+
+\ProcessOptions
+
+
+
+% LOAD "article" ---------------------------------------------------------------------------------------------
+
+% Pass font size to article
+\if@tenpt \PassOptionsToClass{10pt}{article}
+\else\if@twelvept \PassOptionsToClass{12pt}{article}
+\else \PassOptionsToClass{11pt}{article}
+\fi\fi
+
+% If not specified otherwise, use twoside layout
+\if@twoside \PassOptionsToClass{twoside}{article}
+\fi
+
+% All options specified. Load article.
+\LoadClass{article}
+
+% Set \parindent to zero
+\parindent 0pt
+
+
+
+% REQUIRE "geometry" -----------------------------------------------------------------------------------------
+
+% If not specified otherwise, use twoside layout
+\if@twoside \PassOptionsToPackage{twoside}{geometry}
+\fi
+
+% Page size
+\if@letter \PassOptionsToPackage{letterpaper}{geometry}
+\else \PassOptionsToPackage{a4paper}{geometry}
+\fi
+
+% Default page margins
+\PassOptionsToPackage{left=2.25cm, right=2.25cm, top=2.25cm, bottom=2.25cm, includehead, includefoot}{geometry}
+
+% All options specified. Load geometry.
+\RequirePackage{geometry}
+
+
+
+% REQUIRE OTHER PACKAGES -------------------------------------------------------------------------------------
+
+\AtEndPreamble{\RequirePackage{csquotes}}
+
+\RequirePackage{enumitem}
+ \setlist{itemsep=0ex,topsep=.75ex}
+
+\RequirePackage{fancyhdr}
+ \pagestyle{fancy}
+ \fancyhead{}
+ \fancyfoot{}
+ \if@twoside%
+ \fancyhead[ro,le]{%
+ \def\and{\unskip,~}%
+ \insertshortauthor%
+ \ifx\insertshorttitle\@empty\else\ifx\insertshortauthor\@empty\else :~\fi\fi%
+ \insertshorttitle}
+ \fancyfoot[ro,le]{\thepage}
+ \fancyfoot[re,lo]{\insertshortdate}
+ \else
+ \fancyhead[r]{%
+ \def\and{\unskip,~}
+ \insertshortauthor%
+ \ifx\insertshorttitle\@empty\else\ifx\insertshortauthor\@empty\else :~\fi\fi%
+ \insertshorttitle}
+ \fancyfoot[l]{\insertshortdate}
+ \fancyfoot[r]{\thepage}
+ \fi
+ \def\footrulewidth{0.4pt}
+ \headheight=14pt
+
+% Required when hyperref is not loaded by the user
+% This "fake command" gets redefined when hyperref is loaded
+\ifx\phantomsection\@undefined \let\phantomsection\@empty \fi
+% Also, write the document information to hyperref when loaded
+\AtBeginDocument{%
+ \ifx\hypersetup\@undefined\else%
+ \hypersetup{pdftitle=\inserttitle,pdfauthor=\insertauthor,pdfcreator={LaTeX with fancyhandout class}}%
+ \fi}
+
+
+
+% COLOR SETTINGS ---------------------------------------------------------------------------------------------
+
+\RequirePackage{xcolor}
+
+% Basic color
+\definecolor{fancyhandoutblue}{rgb}{0.2,0.2,0.7}
+
+% Initial definition of a primary and a secondary color
+\colorlet{fancyhandoutmaincolor}{fancyhandoutblue}
+\colorlet{fancyhandoutsecondarycolor}{fancyhandoutblue!85}
+
+% Line colors
+\colorlet{fancyhandoutsectlinecolor}{fancyhandoutmaincolor}
+\colorlet{fancyhandoutsubsectlinecolor}{fancyhandoutsecondarycolor}
+
+% Title box colors
+\colorlet{fancyhandouttboxlinecolor}{fancyhandoutmaincolor}
+\colorlet{fancyhandouttboxfillcolor}{fancyhandoutmaincolor!12.5}
+
+
+
+% FONT SETTINGS ----------------------------------------------------------------------------------------------
+
+% As long as not specified otherwise, use the sans-serif font by default
+\if@sffont \def\familydefault{\sfdefault}
+\fi
+
+
+
+% TITLE COMMANDS ---------------------------------------------------------------------------------------------
+
+% Redefine the provided commands and define beamer-like commands inserting their values
+\def\title{}
+\let\inserttitle\@empty
+\let\insertshorttitle\@empty
+%
+\def\subtitle{}
+\let\insertsubtitle\@empty
+\let\insertshortsubtitle\@empty
+%
+\def\author{}
+\let\insertauthor\@empty
+\let\insertshortauthor\@empty
+\let\and\@empty
+%
+\def\institute{}
+\let\insertinstitute\@empty
+\let\insertshortinstitute\@empty
+%
+\def\date{}
+\let\insertdate\today
+\let\insertshortdate\today
+
+% Set the according variable when a command is used
+\renewcommand{\title}[2][\inserttitle]{%
+ \def\inserttitle{#2}%
+ \def\insertshorttitle{#1}}
+\renewcommand{\subtitle}[2][\insertsubtitle]{%
+ \def\insertsubtitle{#2}%
+ \def\insertshortsubtitle{#1}}
+\renewcommand{\author}[2][\insertauthor]{%
+ \def\insertauthor{#2}%
+ \def\insertshortauthor{#1}}
+\renewcommand{\institute}[2][\insertinstitute]{%
+ \def\insertinstitute{#2}
+ \def\insertshortinstitute{#1}}
+\renewcommand{\date}[2][\insertdate]{%
+ \def\insertdate{#2}%
+ \def\insertshortdate{#1}}
+
+% Typesets a title box
+\def\maketitle{%
+ \def\and{\qquad}%
+ \thispagestyle{empty}
+ \begin{center}
+ \fcolorbox{fancyhandouttboxlinecolor}{fancyhandouttboxlinecolor}{%
+ \fcolorbox{fancyhandouttboxlinecolor}{fancyhandouttboxfillcolor}{%
+ \parbox{.95\textwidth}{\centering\vspace{\medskipamount}%
+ \ifx\inserttitle\@empty\else {\LARGE\bfseries\inserttitle} \\[\smallskipamount] \fi
+ \ifx\insertsubtitle\@empty\else {\large\insertsubtitle} \\ \fi
+ \vspace{\medskipamount}\small
+ \ifx\insertauthor\@empty\else \insertauthor \ifx\insertinstitute\@empty \\[\medskipamount] \else \\ \fi\fi
+ \ifx\insertinstitute\@empty\else \insertinstitute \\[\medskipamount] \fi
+ \insertdate
+ \vspace{\medskipamount}}}}%
+ \end{center}\smallskip}
+
+
+
+% SECTION COMMANDS -------------------------------------------------------------------------------------------
+
+% TOC (Pt. I): Add some space below
+\let\origtableofcontents\tableofcontents
+\def\tableofcontents{%
+ \origtableofcontents%
+ \vskip 1.5\bigskipamount}
+
+% TOC (Pt. II): No numbering of sections and subsections
+\renewcommand{\numberline}[1]{}
+
+% Own \section command
+\def\fancysection#1{%
+ \vskip 2\bigskipamount% \vskip, not \vspace; starts a new paragraph
+ \noindent%
+ \begin{minipage}{\textwidth}%
+ {\Large\bfseries%
+ #1}\vskip -1ex%
+ {\color{fancyhandoutsectlinecolor}\rule{\textwidth}{3pt}}
+ \end{minipage}
+ \vskip \bigskipamount%
+}
+
+% Own \subsection command
+\def\fancysubsection#1{%
+ \vskip 1.25\bigskipamount%
+ \noindent%
+ \begin{minipage}{\textwidth}%
+ {\large\bfseries%
+ #1}\vskip -1.25ex%
+ {\color{fancyhandoutsubsectlinecolor}\rule{\textwidth}{1.5pt}}
+ \end{minipage}
+ \vskip \medskipamount%
+}
+
+% Own \subsubsection command
+\def\fancysubsubsection#1{%
+ \vskip .75\bigskipamount% \vskip, not \vspace; starts a new paragraph
+ \noindent%
+ \begin{minipage}{\textwidth}%
+ {\bfseries%
+ #1}%
+ \end{minipage}
+ \vskip .75\smallskipamount%
+}
+
+% Redefine article's sectioning commands
+\def\section{\@ifstar\@@section\@section}
+\def\@section#1{%
+ \phantomsection%
+ \refstepcounter{section}%
+ \def\@currentlabel{\enquote{#1}}% Manipulate LaTeX's internal mechanisms to print the section name when using \ref >:)
+ \addcontentsline{toc}{section}{#1}%
+ \@@section{#1}}
+\def\@@section#1{\fancysection{#1}}
+
+\def\subsection{\@ifstar\@@subsection\@subsection}
+\def\@subsection#1{%
+ \phantomsection%
+ \refstepcounter{subsection}%
+ \def\@currentlabel{\enquote{#1}}%
+ \addcontentsline{toc}{subsection}{#1}%
+ \@@subsection{#1}}
+\def\@@subsection#1{\fancysubsection{#1}}
+
+\def\subsubsection{\@ifstar\@@subsubsection\@subsubsection}
+\def\@subsubsection#1{%
+ \phantomsection%
+ \refstepcounter{subsubsection}%
+ \def\@currentlabel{\enquote{#1}}%
+ \addcontentsline{toc}{subsubsection}{#1}%
+ \@@subsubsection{#1}}
+\def\@@subsubsection#1{\fancysubsubsection{#1}}
+
+
+
+% OTHER TODOS ------------------------------------------------------------------------------------------------
+
+
+% TODO: Beamer styled boxes!!