From d05051b6ffaa8c436d55fa9daf77730472604d21 Mon Sep 17 00:00:00 2001 From: Nao Pross Date: Sat, 14 Aug 2021 16:09:41 +0200 Subject: Initial commit --- tex/hsrstud.sty | 286 +++++++++++++++++++++++++++++++++++++++++++++++++++++ tex/hsrzf.cls | 298 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++ 2 files changed, 584 insertions(+) create mode 100644 tex/hsrstud.sty create mode 100644 tex/hsrzf.cls (limited to 'tex') diff --git a/tex/hsrstud.sty b/tex/hsrstud.sty new file mode 100644 index 0000000..5c1ddfc --- /dev/null +++ b/tex/hsrstud.sty @@ -0,0 +1,286 @@ +%% +%% This is file `hsrstud.sty', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% hsrstud.dtx (with options: `package') +%% 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} +\ProvidesPackage{hsrstud}[2021/08/04 v0.2 HSR-Stud Macros] + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + + +%% Dependencies (( +\RequirePackage{amsmath} +\RequirePackage{amssymb} +\RequirePackage{bm} + +\RequirePackage{esint} +\PassOptionsToPackage{b}{esvect} +\RequirePackage{esvect} + +\RequirePackage{xcolor} +\RequirePackage{hyperref} +\RequirePackage{listings} + +\RequirePackage{iftex} +\RequirePackage{kvoptions} +%% )) + +\SetupKeyvalOptions{ + family=hsr, + prefix=hsr@ +} + +%% Do not renew LaTeX Macros +\DeclareBoolOption[false]{dontrenew} + +%% Vector style +\DeclareBoolOption[false]{arrowvec} +\DeclareComplementaryOption{boldvec}{arrowvec} + +%% Vector derivative style +\DeclareBoolOption[false]{textvecdiff} +\DeclareComplementaryOption{delvecdiff}{textvecdiff} + +%% Process options +\ProcessLocalKeyvalOptions* + +%% TODO: change letters in german +\newcommand{\bookref}[1]{\texttt{\textcolor{hsr-mauve}{P.#1}}} +\newcommand{\notesref}[1]{\texttt{\textcolor{hsr-blue}{S.#1}}} +\newcommand{\lectureref}[1]{\texttt{\textcolor{hsr-lakegreen}{L.#1}}} + +%% Theming for hyperref and listings (( +\hypersetup{ + colorlinks=true, + linkcolor=hsr-black, + citecolor=hsr-mauve, + filecolor=hsr-black, + urlcolor=hsr-blue, +} + +%% Common listings settings +\lstdefinestyle{hsr-base}{ + belowcaptionskip=\baselineskip, + breaklines=true, + frame=none, + inputencoding=utf8, + % margin + xleftmargin=\parindent, + % numbers + numbers=left, + numbersep=5pt, + numberstyle=\ttfamily\footnotesize\color{hsr-black40}, + % background + backgroundcolor=\color{white}, + showstringspaces=false, + % default language + language=[LaTeX]TeX, + % break long lines, and show an arrow where the line was broken + breaklines=true, + postbreak=\mbox{\textcolor{hsr-blue}{$\hookrightarrow$}\space}, + % font + basicstyle=\ttfamily\small, + identifierstyle=\color{hsr-black}, + keywordstyle=\color{hsr-blue}, + commentstyle=\color{hsr-black40}, + stringstyle=\color{hsr-mauve80}, +} + +%% Define missing languages / aliases +\lstdefinelanguage{LaTeX}{ + language=[LaTeX]Tex +} + +%% Set style +\lstset{style=hsr-base, escapechar=`} +%%)) + +%% Vector (( +\newcommand{\hsrvecbold}[1]{\mathbf{\bm{#1}}} +\newcommand{\hsrvecarrow}[1]{\vv{\mathrm{#1}}} % from esvect + +\newcommand{\@hsrvecf}[1]{\hsrvecbold{#1}} +\ifhsr@arrowvec + \renewcommand{\@hsrvecf}[1]{\hsrvecarrow{#1}} +\fi + +\newcommand{\vc}{\@hsrvecf} +\ifhsr@dontrenew\else + % save previous command + \newcommand{\vaccent}{\v} + \newcommand{\oldvec}{\vec} + % redefine + \renewcommand{\v}[1]{\@hsrvecf{#1}} + \renewcommand{\vec}[1]{\@hsrvecf{#1}} +\fi +%%)) + +%% Unit vector (( +\newcommand{\hsruvecbold}[1]{\vec{\hat{#1}}} +\newcommand{\hsruvecarrow}[1]{\hat{\mathrm{#1}}} +\newcommand{\@hsruvecf}[1]{\hsruvecbold{#1}} +\ifhsr@arrowvec + \renewcommand{\@hsruvecf}[1]{\hsruvecarrow{#1}} +\fi + +\newcommand{\uv}[1]{\@hsruvecf{#1}} +\newcommand{\uvec}[1]{\@hsruvecf{#1}} +%%)) + +%% Products (( +\newcommand{\dotp}{\boldsymbol\cdot} +\newcommand{\crossp}{\boldsymbol\times} +%%)) + +\newcommand{\mx}[1]{\bm{\mathrm{#1}}} + +\newcommand{\heq}{\stackrel{\hat{\texttt{H}}}{=}} + +\newcommand{\dd}[2][]{\mathrm{d}^{#1} #2} +\newcommand{\di}[2][]{\,\dd[#1]{#2}} + +\newcommand{\deriv}[3][]{\frac{\dd[#1]{#2}}{\dd[]{#3^{#1}}}} +\newcommand{\pderiv}[3][]{\frac{\partial^{#1} #2}{\partial #3^{#1}}} + +%% Gradient (( +\ifhsr@textvecdiff + \DeclareMathOperator{\grad}{grad} +\else +\newcommand{\grad}{\vec{\nabla}} +\fi +%% )) + +%% Divergence (( +\ifhsr@textvecdiff + \newcommand{\@hsrdivf}{div} +\else +\newcommand{\@hsrdivf}{\vec{\nabla}\dotp} +\fi + +\DeclareMathOperator{\divg}{\@hsrdivf} +\ifhsr@dontrenew\else + \let\divsymb=\div + \renewcommand{\div}{\operatorname{\@hsrdivf}} +\fi +%% )) + +%% Curl (( +\ifhsr@textvecdiff + \DeclareMathOperator{\curl}{curl} +\else +\DeclareMathOperator{\curl}{\vec{\nabla}\crossp} +\fi +%% )) + +%% laplacian (( +\ifhsr@textvecdiff + \DeclareMathOperator{\laplacian}{div grad} +\else + \DeclareMathOperator{\laplacian}{\nabla^2} +\fi + +\ifhsr@textvecdiff + \DeclareMathOperator{\vlaplacian}{div grad} +\else +\DeclareMathOperator{\vlaplacian}{\vec{\nabla}^2} +\fi +%% )) + +\definecolor{hsr-blue}{HTML}{0065A3} +\definecolor{hsr-blue80}{HTML}{3384B5} +\definecolor{hsr-blue60}{HTML}{66A3C8} +\definecolor{hsr-blue40}{HTML}{99C1DA} +\definecolor{hsr-blue20}{HTML}{CCE0ED} + +\definecolor{hsr-mauve}{HTML}{6E1C50} +\definecolor{hsr-mauve80}{HTML}{8B4973} +\definecolor{hsr-mauve60}{HTML}{A87796} +\definecolor{hsr-mauve40}{HTML}{C5A4B9} +\definecolor{hsr-mauve20}{HTML}{E2D2DC} + +\definecolor{hsr-lakegreen}{HTML}{548C86} +\definecolor{hsr-lakegreen80}{HTML}{76A39E} +\definecolor{hsr-lakegreen60}{HTML}{98BAB6} +\definecolor{hsr-lakegreen40}{HTML}{BBD1CF} +\definecolor{hsr-lakegreen20}{HTML}{DDE8E7} + +\definecolor{hsr-reed}{HTML}{7B6951} +\definecolor{hsr-reed80}{HTML}{958774} +\definecolor{hsr-reed60}{HTML}{B0A597} +\definecolor{hsr-reed40}{HTML}{CAC3B9} +\definecolor{hsr-reed20}{HTML}{E5E1DC} + +\definecolor{hsr-petrol}{HTML}{00738D} +\definecolor{hsr-petrol80}{HTML}{338FA4} +\definecolor{hsr-petrol60}{HTML}{66ABBB} +\definecolor{hsr-petrol40}{HTML}{99C7D1} +\definecolor{hsr-petrol20}{HTML}{CCE3E8} + +\definecolor{hsr-basswood}{HTML}{BABD5D} +\definecolor{hsr-basswood80}{HTML}{C8CA7D} +\definecolor{hsr-basswood60}{HTML}{D6D79E} +\definecolor{hsr-basswood40}{HTML}{E3E5BE} +\definecolor{hsr-basswood20}{HTML}{F1F2DF} + +\definecolor{hsr-lightgrey}{HTML}{C6C7C8} +\definecolor{hsr-lightgrey80}{HTML}{D1D2D3} +\definecolor{hsr-lightgrey60}{HTML}{DDDDDE} +\definecolor{hsr-lightgrey40}{HTML}{E8E8E9} +\definecolor{hsr-lightgrey20}{HTML}{F4F4F4} + +\definecolor{hsr-black}{HTML}{1A171B} +\definecolor{hsr-black80}{HTML}{484549} +\definecolor{hsr-black60}{HTML}{767476} +\definecolor{hsr-black40}{HTML}{A4A2A4} +\definecolor{hsr-black20}{HTML}{D1D1D1} + +\endinput +%% +%% End of file `hsrstud.sty'. diff --git a/tex/hsrzf.cls b/tex/hsrzf.cls new file mode 100644 index 0000000..3717e27 --- /dev/null +++ b/tex/hsrzf.cls @@ -0,0 +1,298 @@ +%% +%% 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} + +%% Default font +\RequirePackage{lmodern} + +%% Class options +\SetupKeyvalOptions{ + family=hsr, + prefix=hsr@ +} + +%% Use header and footer +\DeclareBoolOption[false]{header} +\DeclareComplementaryOption{noheader}{header} + +%% Use a sans-serif slab-serif or concrete 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{hsr} + +%% 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{totpages} +\RequirePackage{array} + +%% Insert metadata in the pdf +\PassOptionsToPackage{plainpages=false, pdfpagelabels, pdfusetitle}{hyperref} +\RequirePackage{hyperref} + + +%% Configure Sans-Serif font +\ifhsr@sans + \ifhsr@slab + \PackageError{hsrzf}{% + sans ans slab options cannot be used at the same time + } + \fi + \ifhsr@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 +\ifhsr@slab + \ifhsr@sans + \PackageError{hsrzf}{% + slab and sans options cannot be used at the same time + } + \fi + \ifhsr@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 +\ifhsr@concrete + \ifhsr@sans{hsrzf}{% + concrete and sans options cannot be used at the same time + } + \fi + \ifhsr@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\hsr@margin\@empty + \setlength\hsr@hmarginwidth{30mm} + \setlength\hsr@vmarginheight{30mm} +\else + \expandafter\ifstrequal\expandafter{\hsr@margin}{huge}{ + \setlength\hsr@hmarginwidth{45mm} + \setlength\hsr@vmarginheight{40mm}}{} +%% + \expandafter\ifstrequal\expandafter{\hsr@margin}{large}{ + \setlength\hsr@hmarginwidth{35mm} + \setlength\hsr@vmarginheight{35mm}}{} +%% + \expandafter\ifstrequal\expandafter{\hsr@margin}{big}{ + \setlength\hsr@hmarginwidth{30mm} + \setlength\hsr@vmarginheight{30mm}}{} +%% + \expandafter\ifstrequal\expandafter{\hsr@margin}{normal}{ + \setlength\hsr@hmarginwidth{25mm} + \setlength\hsr@vmarginheight{30mm}}{} +%% + \expandafter\ifstrequal\expandafter{\hsr@margin}{small}{ + \setlength\hsr@hmarginwidth{20mm} + \setlength\hsr@vmarginheight{20mm}}{} +%% + \expandafter\ifstrequal\expandafter{\hsr@margin}{tiny}{ + \setlength\hsr@hmarginwidth{10mm} + \setlength\hsr@vmarginheight{20mm}}{} +%% + \expandafter\ifstrequal\expandafter{\hsr@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[L]{\leftmark} + \fancyhead[C]{\themodule} + \fancyhead[R]{\@date} + + \fancyfoot[L]{\href{https://github.com/HSR-Stud/}{\texttt{HSR-Stud}}} + \fancyfoot[C]{\texttt{CC BY-NC-SA}} + \fancyfoot[R]{\thepage ~/ \pageref{TotPages}} + + \renewcommand{\headrulewidth}{.5pt} + \renewcommand{\footrulewidth}{.5pt} +} + +\fancypagestyle{hsrzf-norulers}{% + \fancyhf{} % clear + \fancyhead[L]{\leftmark} + \fancyhead[C]{\themodule} + \fancyhead[R]{\@date} + + \fancyfoot[L]{\href{https://github.com/HSR-Stud/}{\texttt{HSR-Stud}}} + \fancyfoot[C]{\texttt{CC BY-NC-SA}} + \fancyfoot[R]{\thepage ~/ \pageref{TotPages}} + + \renewcommand{\headrulewidth}{0pt} + \renewcommand{\footrulewidth}{0pt} +} + +\ifhsr@header +\pagestyle{hsrzf} +\fi + +\endinput +%% +%% End of file `hsrzf.cls'. -- cgit v1.2.1