%% %% 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]{slab} \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 \ifhsrzf@slab \PackageError{hsrzf}{% sans ans slab options cannot be used at the same time } \fi \ifhsrzf@concrete{hsrzf}{% sans and concrete options cannot be used at the same time } \fi \PassOptionsToPackage{T1}{fontenc} \RequirePackage{fontenc} \RequirePackage{cmbright} \RequirePackage{sfmath} \fi %% Configure Slab-Serif font \ifhsrzf@slab \ifhsrzf@sans \PackageError{hsrzf}{% slab and sans options cannot be used at the same time } \fi \ifhsrzf@concrete{hsrzf}{% slab and concrete options cannot be used at the same time } \fi \PassOptionsToPackage{T1}{fontenc} \RequirePackage{fontenc} \PassOptionsToPackage{rm,light}{roboto} \RequirePackage{roboto} \fi %% Configure (secret) concrete font \ifhsrzf@concrete \ifhsrzf@sans{hsrzf}{% concrete and sans options cannot be used at the same time } \fi \ifhsrzf@slab \PackageError{hsrzf}{% concrete ans slab options cannot be used at the same time } \fi \PassOptionsToPackage{boldsans,amssymb}{concmath} \RequirePackage{concmath} \PassOptionsToPackage{T1}{fontenc} \RequirePackage{fontenc} \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}}{} %% % TODO: fix this % \ClassError{hsrzf}{Invalid margin size} % \setlength\hsr@hmarginwidth{30mm} % \setlength\hsr@vmarginheight{30mm} \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'.