aboutsummaryrefslogtreecommitdiffstats
path: root/hsrzf.cls
diff options
context:
space:
mode:
Diffstat (limited to 'hsrzf.cls')
-rw-r--r--hsrzf.cls236
1 files changed, 236 insertions, 0 deletions
diff --git a/hsrzf.cls b/hsrzf.cls
new file mode 100644
index 0000000..ad9417f
--- /dev/null
+++ b/hsrzf.cls
@@ -0,0 +1,236 @@
+%%
+%% This is file `hsrzf.cls',
+%% generated with the docstrip utility.
+%%
+%% The original source files were:
+%%
+%% hsrstud-classes.dtx (with options: `hsrzf')
+%% This document is part of the HSRStud LaTeX Package
+%%
+%% THE FOLLOWING WORK IS UNDER THE CC BY-SA 4.0 LICENSE
+%%
+%% You are free to
+%% ---------------
+%% * Share -- Copy and redistribute the material in any medium or format
+%% * Adapt -- Remix, transform, and build upon the material for any
+%% purpose, even commercially
+%%
+%% The licensor cannot revoke these freedoms as long as you follow the
+%% license terms.
+%%
+%% Under the following terms
+%% -------------------------
+%% * Attribution
+%% You must give appropriate credit, provide a link to the license, and
+%% indicate if changes were made. You may do so in any reasonable
+%% manner, but not in any way that suggests the licensor endorses you
+%% or your use.
+%%
+%% * ShareAlike
+%% If you remix, transform, or build upon the material you must
+%% distribute your contributions under the same license as the
+%% original.
+%%
+%% * No additional restrictions
+%% You may not apply legal terms or technological measures that
+%% legally restrict others from doing anything the license permits.
+%%
+%% Notice
+%% ------
+%% You do not have to comply with the license for elements of the material
+%% in the public domain or where your use is permitted by an applicable
+%% exception or limitation.
+%%
+%% No warranties are given. The license may not give you all of the
+%% permissions necessary for your intended use. For example, other rights
+%% such as publicity, privacy, or moral rights may limit how you use the
+%% material.
+
+
+\NeedsTeXFormat{LaTeX2e}
+\ProvidesClass{hsrzf}[2020/04/05 v0.1 HSRStud Summary class]
+
+
+
+%% Coding Packages (Dependencies)
+\RequirePackage{iftex}
+\RequirePackage{kvoptions}
+\RequirePackage{etoolbox}
+
+%% Class options
+\SetupKeyvalOptions{
+ family=hsrzf,
+ prefix=hsrzf@
+}
+
+%% Use header and footer
+\DeclareBoolOption[false]{header}
+\DeclareComplementaryOption{noheader}{header}
+
+%% Use a sans-serif font
+\DeclareBoolOption[false]{sans}
+\DeclareBoolOption[false]{concrete}
+
+%% Configures the geometry package
+%%
+%% Possible values:
+%% - huge (45mm, 40mm)
+%% - large (35mm, 35mm)
+%% - big (30mm, 30mm)
+%% - normal (25mm, 30mm)
+%% - small (20mm, 20mm)
+%% - tiny (10mm, 20mm)
+%% - minimal ( 5mm, 20mm)
+\DeclareStringOption{margin}[huge]
+
+%% Configures the polyglossia package
+
+%% Pass other options to the class
+\DeclareDefaultOption{%
+ \ifx\CurrentOptionValue\relax
+ \PackageWarningNoLine{\@currname}{%
+ Unknown option ``\CurrentOption''\MessageBreak
+ is passed to class ``article''%
+ }%
+ % Pass the option to package color.
+ % Again it is better to expand \CurrentOption.
+ \expandafter\PassOptionsToClass
+ \expandafter{\CurrentOption}{article}
+ \else
+ % Package color does not take options with values.
+ % We provide the standard LaTeX error.
+ \@unknownoptionerror
+ \fi
+}
+
+\ProcessKeyvalOptions{hsrzf}
+
+%% Create new metadata fields
+
+%% Required fields
+\newcommand\course[1]{\gdef\hsr@course{#1}}
+\newcommand\hsr@course{\ClassError{hsrzf}{no \noexpand\course given}{}}
+\newcommand\thecourse{\hsr@course}
+
+\newcommand\module[1]{\gdef\hsr@module{#1}}
+\newcommand\hsr@module{\ClassError{hsrzf}{no \noexpand\module given}{}}
+\newcommand\themodule{\hsr@module}
+
+\newcommand\semester[1]{\gdef\hsr@semester{#1}}
+\newcommand\hsr@semester{\ClassError{hsrzf}{no \noexpand\semester given}{}}
+\newcommand\thesemester{\hsr@semester}
+
+%% Optional fields
+\newcommand\institute[1]{\gdef\hsr@institute{#1}}
+\newcommand\hsr@institute{\ClassWarning{hsrzf}{no \noexpand\institute given}{}}
+\newcommand\theinstitute{\hsr@institute}
+
+\newcommand\authoremail[1]{\gdef\hsr@authoremail{#1}}
+\newcommand\hsr@authoremail{\ClassWarning{hsrzf}{no \noexpand\authoremail given}{}}
+\newcommand\theauthoremail{\hsr@authoremail}
+
+\newcommand\maintainer[1]{\gdef\hsr@maintainer{#1}}
+\newcommand\hsr@maintainer{\ClassWarning{hsrzf}{no \noexpand\maintainer given}{}}
+\newcommand\themaintainer{\hsr@maintainer}
+
+\newcommand\contributors[1]{\gdef\hsr@contributors{#1}}
+\newcommand\hsr@contributors{\ClassWarning{hsrzf}{no \noexpand\contributors given}{}}
+\newcommand\thecontributors{\hsr@contributors}
+
+\LoadClass[a4paper]{article}
+
+%% Style deps
+\RequirePackage{geometry}
+\RequirePackage{fancyhdr}
+\RequirePackage{titling}
+\RequirePackage{lastpage}
+\RequirePackage{array}
+
+%% Insert metadata in the pdf
+\PassOptionsToPackage{plainpages=false, pdfpagelabels, pdfusetitle}{hyperref}
+\RequirePackage{hyperref}
+
+
+%% Configure Sans-Serif font
+\ifhsrzf@sans
+\renewcommand{\familydefault}{\sfdefault}
+\fi
+
+%% Configure concrete font
+\ifhsrzf@concrete
+\PassOptionsToPackage{T1}{fontenc}
+\RequirePackage{fontenc}
+\PassOptionsToPackage{boldsans,amssymb}{concmath}
+\RequirePackage{concmath}
+\fi
+
+%% configure geometry
+%% defaults to big
+\newlength{\hsr@hmarginwidth}
+\newlength{\hsr@vmarginheight}
+
+\ifx\hsrzf@margin\@empty
+ \setlength\hsr@hmarginwidth{30mm}
+ \setlength\hsr@vmarginheight{30mm}
+\else
+ \expandafter\ifstrequal\expandafter{\hsrzf@margin}{huge}{
+ \setlength\hsr@hmarginwidth{45mm}
+ \setlength\hsr@vmarginheight{40mm}}{}
+ \expandafter\ifstrequal\expandafter{\hsrzf@margin}{large}{
+ \setlength\hsr@hmarginwidth{35mm}
+ \setlength\hsr@vmarginheight{35mm}}{}
+ \expandafter\ifstrequal\expandafter{\hsrzf@margin}{big}{
+ \setlength\hsr@hmarginwidth{30mm}
+ \setlength\hsr@vmarginheight{30mm}}{}
+ \expandafter\ifstrequal\expandafter{\hsrzf@margin}{normal}{
+ \setlength\hsr@hmarginwidth{25mm}
+ \setlength\hsr@vmarginheight{30mm}}{}
+ \expandafter\ifstrequal\expandafter{\hsrzf@margin}{small}{
+ \setlength\hsr@hmarginwidth{20mm}
+ \setlength\hsr@vmarginheight{20mm}}{}
+ \expandafter\ifstrequal\expandafter{\hsrzf@margin}{tiny}{
+ \setlength\hsr@hmarginwidth{10mm}
+ \setlength\hsr@vmarginheight{20mm}}{}
+ \expandafter\ifstrequal\expandafter{\hsrzf@margin}{minimal}{
+ \setlength\hsr@hmarginwidth{ 5mm}
+ \setlength\hsr@vmarginheight{20mm}}{}
+\fi
+
+
+%% TODO: change vmarginheight if header is on
+\newgeometry{
+ hmargin=\hsr@hmarginwidth,
+ vmargin=\hsr@vmarginheight,
+ marginparsep=0pt,
+ marginpar=0pt,
+}
+
+\fancypagestyle{hsrzf}{%
+ \fancyhf{} % clear
+ \fancyhead[C]{\thetitle}
+ \fancyhead[R]{\rightmark}
+ \fancyhead[L]{\leftmark}
+ \fancyfoot[R]{\@date}
+ \fancyfoot[L]{\theauthor}
+ \renewcommand{\headrulewidth}{.5pt}
+ \renewcommand{\footrulewidth}{.5pt}
+}
+
+\fancypagestyle{hsrzf-norulers}{%
+ \fancyhf{} % clear
+ \fancyhead[C]{\thetitle}
+ \fancyhead[R]{\rightmark}
+ \fancyhead[L]{\leftmark}
+ \fancyfoot[R]{\@date}
+ \fancyfoot[L]{\theauthor}
+ \renewcommand{\headrulewidth}{0pt}
+ \renewcommand{\footrulewidth}{0pt}
+}
+
+\ifhsrzf@header
+\pagestyle{hsrzf}
+\fi
+
+\endinput
+%%
+%% End of file `hsrzf.cls'.