% \iffalse %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% % Documentation Builder %<*doc> \documentclass[a4paper]{ltxdoc} \usepackage{hsrstud} \usepackage[ type={CC}, modifier={by-sa}, version={4.0}, ]{doclicense} \usepackage[ margin=3.5cm, left=4cm ]{geometry} \usepackage{booktabs} \usepackage{enumitem} \CodelineIndex \EnableCrossrefs \RecordChanges %% Metadata \title{\textcolor{hsr-blue}{HSR}--Stud Document Classes} \author{Naoki Pross \texttt{}} \date{\today} \begin{document} \DocInput{\jobname.dtx} \end{document} % % \fi %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %^^A Classes Documentation % % \maketitle % \tableofcontents % % \section{Purpose of these document classes} % The following document classes were made by and for the HSR-Stud organization. % These classes are intended to be used to create beautiful summaries and cheat % sheets. Available classes are: % \begin{description}[align=right] % \item[|hsrzf|] For summaries (Zusammenfassung) % \item[|hsrbericht|] For reports (Bericht) % \end{description} % % % \section{Class Options} % \begin{description}[align=right] % \item[\tt sans] Use Sans-Serif fonts (|cmbright| and |hfbright|). % \item[\tt slab] Use Slab-Serif fonts (|bitter| and |eulervm|). % \item[\tt margin=] Sets up margins to reasonable size. % \item[\tt *] Any other given option is passed to the underlying class (article). % \end{description} % % \begin{table}\centering % \begin{tabular}{l r r l r r} % \toprule % Size & H & V & Size & H & V \\ % \midrule % huge & 45 & 40 & small & 20 & 20 \\ % large & 35 & 35 & tiny & 10 & 20 \\ % big & 30 & 30 & minimal & 5 & 20 \\ % normal & 25 & 30 \\ % \bottomrule % \end{tabular} % \caption{Sizes for the {\tt margin} option. All sizes are in millimeters} % \end{table} % % % \section{Extra Metadata} % Thanks to the {\tt titling} package, normal metadata informations are available % throug the following commands: \cs{theauthor}, \cs{thedate}, \cs{thetitle}. % Additionally, more metadata variables have been created for this class, to % conserve informations related to the university course. % \begin{description}[align=right] % \item[\cs{course}] The degree programme of the discussed subject. % Example: |Elektrotechnik| % \item[\cs{module}] Short name of the module according to the class % schedule. Example: |ComEng1| % \item[\cs{semester}] Semester during which the summarized subject was % taught. Example: |FS20| % \item[\cs{institute}] Internal institute in which the module was taught. % This field is optional. % \item[\cs{authoremail}] Email of the author. This field is optional. % \item[\cs{maintainer}] Name of the person maintaining the work. This % field is optional. % \item[\cs{contributors}] List of names of those who have contributed to % the document. This field is optional. % \end{description} % Like \cs{date}, \cs{title}, etc. these fields have too an accessor macro % \cs{the}. For example: \cs{thecourse}, \cs{themodule}, and so on. % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %^^A Zusammenfassung Class Documentation % \section{Zusammenfassung \texttt{hsrzf} class} % This class is intended to be used to write short summaries. % % \subsection{Class options} % \begin{description}[align=right] % \item[\tt header] Use the HSR--Stud standard header. The option % {\tt noheader} disables the header. % \end{description} % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %^^A Bericht Class Documentation % \section{Bericht \texttt{hsrbericht} class} % This class tries to conform to the indications given by the communication % department of the HSR. The specifications are found in the ``Werkzeugkastens % Technische Berichte''. % % \subsection{Metadata} % In addition to the metadata described in the previous section. This class % requires: % \begin{description}[align=right] % \item[\cs{subtitle}] Pretty self explanatory. % \item[\cs{category}] Category assigned to the project. % This field is optional. % \item[\cs{project}] Name or reference to your project. % \item[\cs{topic}] You chosen topic in the category. % \item[\cs{instructor}] Name of the instructor / academic that is % following or has assigned your work. % \item[\cs{startdate}] Date when you started the project. % \item[\cs{finishdate}] Date when you finished the project (can be set to % \cs{today} to keep automatically updated. % \item[\cs{address}] Address or place where your work is produced. % This field is optional. % \item[\cs{matriculationnr}] Your matriculation number. % \item[\cs{logo}] Code to insert your logo. % \item[\cs{clientlogo}] Code to insert the logo of the client / research % department / \dots . % \end{description} % % \section{Minimal working examples} % % ^^A TODO: fix this with `%' % \begin{lstlisting} % \documentclass[margin=normal]{hsrzf} % % % Packages % %% the HSRStud package % \usepackage{hsrstud} % % % Metadata % \course{Elektrotechnik} % \module{ModAbk} % \semester{Herbstsemester 2020} % % \authoremail{vname@hsr.ch} % \author{\textsl{Vorname Name} -- \texttt{\theauthoremail}} % % \title{\texttt{\themodule} Zusammenfassung} % \date{\thesemester} % % % document % \begin{document} % \maketitle % \tableofcontents % \section{Introduction} % \[ % i\hbar \partial_t \left| \psi(t) \right\rangle % = \hat{H} \left| \psi(t) \right\rangle % \] % % \end{document}\end{lstlisting} % % \section{License} % \doclicenseThis % % \PrintChanges % \PrintIndex % % \section{Implementation} % \begin{macrocode} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %^^A Class Headers %<*hsrzf> \NeedsTeXFormat{LaTeX2e} \ProvidesClass{hsrzf}[2020/04/05 v0.1 HSRStud Summary class] % %<*hsrbericht> \NeedsTeXFormat{LaTeX2e} \ProvidesClass{hsrbericht}[2020/05/05 v0.1 HSRStud Report class] % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %^^A Implementation % %<*hsrzf|hsrbericht> %% 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 % \DeclareStringOption[]{lang}[german] %% 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} % %<*hsrbericht> %% The report class has some extra metadata %% Extra title informations \newcommand\subtitle[1]{\gdef\hsr@subtitle{#1}} \newcommand\hsr@subtitle{\ClassError{hsrbericht}{no \noexpand\subtitle given}{}} \newcommand\thesubtitle{\hsr@subtitle} %% Project informations \newcommand\category[1]{\gdef\hsr@category{#1}} \newcommand\hsr@category{\ClassWarning{hsrbericht}{no \noexpand\category given}{}} \newcommand\thecategory{\hsr@category} \newcommand\project[1]{\gdef\hsr@project{#1}} \newcommand\hsr@project{\ClassError{hsrbericht}{no \noexpand\project given}{}} \newcommand\theproject{\hsr@project} \newcommand\topic[1]{\gdef\hsr@topic{#1}} \newcommand\hsr@topic{\ClassError{hsrbericht}{no \noexpand\topic given}{}} \newcommand\thetopic{\hsr@topic} \newcommand\version[1]{\gdef\hsr@version{#1}} \newcommand\hsr@version{\ClassError{hsrbericht}{no \noexpand\version given}{}} \newcommand\theversion{\hsr@version} \newcommand\instructor[1]{\gdef\hsr@instructor{#1}} \newcommand\hsr@instructor{\ClassError{hsrbericht}{no \noexpand\instructor given}{}} \newcommand\theinstructor{\hsr@instructor} \newcommand\startdate[1]{\gdef\hsr@startdate{#1}} \newcommand\hsr@startdate{\ClassError{hsrbericht}{no \noexpand\startdate given}{}} \newcommand\thestartdate{\hsr@startdate} \newcommand\finishdate[1]{\gdef\hsr@finishdate{#1}} \newcommand\hsr@finishdate{\ClassError{hsrbericht}{no \noexpand\finishdate given}{}} \newcommand\thefinishdate{\hsr@finishdate} %% Author informations \newcommand\address[1]{\gdef\hsr@address{#1}} \newcommand\hsr@address{\ClassWarning{hsrbericht}{no \noexpand\address given}{}} \newcommand\theaddress{\hsr@address} \newcommand\matriculationnr[1]{\gdef\hsr@matriculationnr{#1}} \newcommand\hsr@matriculationnr{\ClassError{hsrbericht}{no \noexpand\matriculationnr given}{}} \newcommand\thematriculationnr{\hsr@matriculationnr} %% Logos informations \newcommand\logo[1]{\gdef\hsr@logo{#1}} \newcommand\hsr@logo{\ClassWarning{hsrbericht}{no \noexpand\logo given}{}} \newcommand\thelogo{\hsr@logo} \newcommand\clientlogo[1]{\gdef\hsr@clientlogo{#1}} \newcommand\hsr@clientlogo{\ClassWarning{hsrbericht}{no \noexpand\clientlogo given}{}} \newcommand\theclientlogo{\hsr@clientlogo} % %<*hsrzf|hsrbericht> %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %^^A Setup base class \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} %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %^^A Setup Style % %% 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 % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %^^A HSR ZF specific %<*hsrzf> %% 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 % %^^A%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% %^^A HSR Bericht specific %<*hsrbericht> %% Redefine title and abstract \renewcommand\maketitle{% \begin{titlepage} \thispagestyle{hsrbericht} \begin{center} \vspace*{6cm} \textbf{\fontsize{48}{60}\selectfont \@title} \vspace{1.5cm} \\ \textbf{\fontsize{24}{48}\selectfont \hsr@subtitle} \vspace{1cm} \\ \textbf{\fontsize{22}{48}\selectfont \hsr@category} \vspace{0.5cm} \\ \begin{tabular}{rl} \textbf{Version:} & \hsr@version \\ \end{tabular} \vspace{4cm} \\ \begin{tabular}{rl p{1.5cm} rl} \textbf{Autor:} & \textbf{\@author} && Dozent: & \hsr@instructor \\ E-Mail: & \texttt{\hsr@authoremail} && Themengebiet: & \hsr@topic \\ Matrikelnummer: & \hsr@matriculationnr && Studiengang: & \hsr@course \\ Adresse: & \hsr@address && & \\ \end{tabular}{} \vspace{2cm} \\ \begin{tabular}{rl} \textbf{Erstellt am:} & \textbf{\hsr@startdate} \\ \textbf{Letze Ă„nderung am:} & \textbf{\hsr@finishdate} \\ \end{tabular} \end{center} \end{titlepage}} \renewenvironment{abstract}{% \section*{Abstract}% \newcommand\problem{\paragraph{Problem}} \newcommand\goal{\paragraph{Ziel}} \newcommand\method{\paragraph{Method / Vorgehen}} \newcommand\results{\paragraph{Wesentliche Ergebnisse}} \newcommand\suggestions{\paragraph{Empfehlungen}} \newcommand\keywords{\paragraph{Schl\"usselw\"orter}} }{} %% TODO: twoside / book support %% Debug: %% \RequirePackage{showframe} \newgeometry{ hmargin=\hsr@hmarginwidth, vmargin=\hsr@vmarginheight, marginparsep=0pt, marginpar=0pt, } %% Configure headers \fancypagestyle{hsrbericht}{% \fancyhf{} % clear \fancyhead[C]{\@title} \fancyhead[R]{\hsr@clientlogo} \fancyhead[L]{\hsr@logo} \fancyfoot[R]{\thepage / \pageref{TotPages} } \fancyfoot[L]{Dockument: \jobname \\ Druck: \finishdate} \renewcommand{\headrulewidth}{.5pt} \renewcommand{\footrulewidth}{.5pt} } \fancypagestyle{plain}{% \fancyhf{} % clear \fancyhead[C]{\@title} \fancyhead[R]{\hsr@clientlogo} \fancyhead[L]{\hsr@logo} \fancyfoot[R]{\thepage / \pageref{TotPages} } \fancyfoot[L]{Dockument: \jobname \\ Druck: \finishdate} \renewcommand{\headrulewidth}{.5pt} \renewcommand{\footrulewidth}{.5pt} } \pagestyle{hsrbericht} % % \end{macrocode} % % \Finale %^^A vim:set tw=80 sw=2 ts=2 et: