From 2236aa997752da2d5e58d66c85b42e6a0ad8a108 Mon Sep 17 00:00:00 2001 From: Karl Berry Date: Mon, 24 Apr 2017 21:27:23 +0000 Subject: uhhassignment (24apr17) git-svn-id: svn://tug.org/texlive/trunk@44026 c570f23f-e606-0410-a88d-b1316a301751 --- .../texmf-dist/doc/latex/uhhassignment/README.md | 18 + .../doc/latex/uhhassignment/uhhassignment.pdf | Bin 0 -> 380666 bytes .../source/latex/uhhassignment/uhhassignment.dtx | 749 +++++++++++++++++++++ .../source/latex/uhhassignment/uhhassignment.ins | 52 ++ .../tex/latex/uhhassignment/uhhassignment.cls | 374 ++++++++++ Master/tlpkg/bin/tlpkg-ctan-check | 2 +- Master/tlpkg/tlpsrc/collection-publishers.tlpsrc | 1 + Master/tlpkg/tlpsrc/uhhassignment.tlpsrc | 0 8 files changed, 1195 insertions(+), 1 deletion(-) create mode 100644 Master/texmf-dist/doc/latex/uhhassignment/README.md create mode 100644 Master/texmf-dist/doc/latex/uhhassignment/uhhassignment.pdf create mode 100644 Master/texmf-dist/source/latex/uhhassignment/uhhassignment.dtx create mode 100644 Master/texmf-dist/source/latex/uhhassignment/uhhassignment.ins create mode 100644 Master/texmf-dist/tex/latex/uhhassignment/uhhassignment.cls create mode 100644 Master/tlpkg/tlpsrc/uhhassignment.tlpsrc (limited to 'Master') diff --git a/Master/texmf-dist/doc/latex/uhhassignment/README.md b/Master/texmf-dist/doc/latex/uhhassignment/README.md new file mode 100644 index 00000000000..8c31e070bb7 --- /dev/null +++ b/Master/texmf-dist/doc/latex/uhhassignment/README.md @@ -0,0 +1,18 @@ +The uhhassignment document class +================================ + +This document class was created for typesetting solutions to homework assignments at the university of Hamburg (Universität Hamburg). For a full documentation of the provided features see the uhhassignment.pdf documentation. + + + +%% Copyright (C) 2017 by Kim Wittenburg +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. diff --git a/Master/texmf-dist/doc/latex/uhhassignment/uhhassignment.pdf b/Master/texmf-dist/doc/latex/uhhassignment/uhhassignment.pdf new file mode 100644 index 00000000000..99880642acf Binary files /dev/null and b/Master/texmf-dist/doc/latex/uhhassignment/uhhassignment.pdf differ diff --git a/Master/texmf-dist/source/latex/uhhassignment/uhhassignment.dtx b/Master/texmf-dist/source/latex/uhhassignment/uhhassignment.dtx new file mode 100644 index 00000000000..e6b66f40ef2 --- /dev/null +++ b/Master/texmf-dist/source/latex/uhhassignment/uhhassignment.dtx @@ -0,0 +1,749 @@ +% \iffalse meta-comment +% +% Copyright (C) 2017 by Kim Wittenburg +% +% This file may be distributed and/or modified under the +% conditions of the LaTeX Project Public License, either +% version 1.3 of this license or (at your option) any later +% version. The latest version of this license is in: +% +% http://www.latex-project.org/lppl.txt +% +% and version 1.3 or later is part of all distributions of +% LaTeX version 2005/12/01 or later. +% +% \fi + + +% \iffalse +%\ProvidesFile{uhhassignment.dtx} +% +%\NeedsTeXFormat{LaTeX2e}[2005/12/01] +%\ProvidesClass{uhhassignment}[2017/04/22 v1.0 The UHH-Assignment Class] +%<*driver> +\documentclass{ltxdoc} +\usepackage[utf8]{inputenc} +\usepackage[T1]{fontenc} +\usepackage[english]{babel} + +\usepackage{idxlayout} +\usepackage{hypdoc} +\usepackage{enumitem} + +\usepackage{lmodern} + +\CodelineIndex +\EnableCrossrefs +\RecordChanges +\begin{document} + \DocInput{uhhassignment.dtx} +\end{document} +% +% \fi + + +% \CheckSum{409} +% +% \CharacterTable +% {Upper-case \A\B\C\D\E\F\G\H\I\J\K\L\M\N\O\P\Q\R\S\T\U\V\W\X\Y\Z +% Lower-case \a\b\c\d\e\f\g\h\i\j\k\l\m\n\o\p\q\r\s\t\u\v\w\x\y\z +% Digits \0\1\2\3\4\5\6\7\8\9 +% Exclamation \! Double quote \" Hash (number) \# +% Dollar \$ Percent \% Ampersand \& +% Acute accent \' Left paren \( Right paren \) +% Asterisk \* Plus \+ Comma \, +% Minus \- Point \. Solidus \/ +% Colon \: Semicolon \; Less than \< +% Equals \= Greater than \> Question mark \? +% Commercial at \@ Left bracket \[ Backslash \\ +% Right bracket \] Circumflex \^ Underscore \_ +% Grave accent \` Left brace \{ Vertical bar \| +% Right brace \} Tilde \~} + + +% \changes{v1.0}{2017/04/12}{Initial version} +% +% \DoNotIndex{\#,\$,\%,\&,\@,\\,\{,\},\^,\_,\~,\ ,\relax} +% \DoNotIndex{\@ne,\newif,\fi,\gdef,\let,\newcommand,\renewcommand,\ifdefempty, +% \ifstrempty,\RequirePackage} +% \DoNotIndex{\LoadClassWithOptions,\ClassWarning,\DeclareOption, +% \ExecuteOptions,\ProcessOptions} +% \DoNotIndex{\advance,\begingroup,\catcode,\closein,\begin} +% \DoNotIndex{\end,\closeout,\day,\def,\edef,\else,\empty,\endgroup} +% \DoNotIndex{\newcounter,\arabic,\setcounter,\stepcounter} +% \DoNotIndex{\baselineskip,\headheight,\hfill,\par,\parskip,\setlength,\vspace, +% \widthof} +% \DoNotIndex{\bfseries,\Huge,\footnotesize,\LARGE,\Large,\large,\normalfont, +% \raggedright,\raggedleft,\RedeclareSectionCommands,\scriptsize, +% \setkomafont,\sffamily,\textbf,\textnormal,\textsc,\ttfamily, +% \usekomafont} +% \DoNotIndex{\ifoot,\ihead,\cfoot,\clearpairofpagestyles,\newpagestyle,\color, +% \colorbox,\marginpar,\ofoot,\ohead,\pagestyle,\thispagestyle} +% \DoNotIndex{\pagemark,\pageref} +% \DoNotIndex{\protect,\space} + +% \title{The \textsf{uhhassignment} document class} +% \author{Kim Wittenburg \\ \texttt{5wittenb@informatik.uni-hamburg.de}} +% +% \maketitle +% +% \begin{abstract} +% The \textsf{uhhassignment} document class is a document class designed to be +% used for assignments in university (or school). The class predominantly +% implements a custom layout for titles but also featues some helpful new +% commands. The class was originally designed to be used at the university of +% Hamburg. +% \end{abstract} +% +% \addcontentsline{toc}{section}{Change History} +% \PrintChanges +% +% \tableofcontents +% +% \section{Usage} +% +% \subsection{Class Options} +% +% Currently the \textsf{uhhassignment} class supports three (or rather six) +% options: +% +% \index{unnumberedsheets} +% By default the \textsf{uhhassignment} class expects the assignment sheets to +% be numbered and issues a warning if the |\sheetno| is missing. However if you +% do not want to specify a sheet number you can use the +% \texttt{unnumberedsheets} class option to suppress the warning. The package +% option also removes any text indicating the sheet number from the output. +% +% \index{numberedsheets} +% The opposite option \texttt{numberedsheets} is used by default. +% +% \index{repeatauthor} +% You can specify the \texttt{repeatauthor} class option to display a short +% version of the |\author| on each page in the footer (including the first +% page). The short version of the author is specified with the |\author| command +% as an optional first parameter. By default the normal |\author| is used as +% short author as well. By default the short author will not be displayed at +% all. +% +% \index{shorttitle}\index{longtitle} +% You can pass \texttt{shorttitle} class option to display the short university +% name and short course name in the title. You could also explicitly pass +% \texttt{longtitle} which is the default. +% +% \index{shortheader}\index{longheader} +% Similarly you cann pass \texttt{shortheader} or \texttt{longheader} to display +% the short or regular university and course name in the header on each +% subsequent page. +% +% \subsection{The Title} +% +% The main feature of the \textsf{uhhassignment} class is the custom title +% layout. The layout implements some new fields like the name of the university +% (or school), the name of the teacher or the number of the exercise sheet. The +% full list of supported fields is listed below. The actual title layout may be +% different depending on which of the following fields are actually specified. +% +% \begingroup +% \setlist[description]{ +% font={\normalfont} +% } +% +% \begin{description} +% \item[|\textbackslash university|\oarg{short uni}\marg{uni}] +% \DescribeMacro{\university} +% Lets you specify the name of the university (or school). The default +% value is \texttt{Universität Hamburg}. +% \item[|\textbackslash course|\oarg{short course} \marg{course}] +% \DescribeMacro{\course} +% Lets you specify the name of the course of the assignment. The +% course is sometimes referred to as a \emph{module}. +% \item[|\textbackslash teacher|\marg{teacher}] \DescribeMacro{\teacher} +% Lets you specify the name of the teacher or teachers of the course. +% If you want to specify multiple teachers it is recommended that you +% separate them with the |\\| command. +% \item[|\textbackslash group|\marg{group number}] \DescribeMacro{\group} +% The exercises for many university courses are divided into multiple +% exercise groups. Using this command you can specify the number of +% your group. +% \item[|\textbackslash sheetno|\marg{sheet number}] \DescribeMacro{\sheetno} +% Lets you specify the current exercise sheet. If no |\title| is +% provided the sheet number is used as title of the document. +% \end{description} +% \endgroup +% +% In addition to the above new commands you can also specify a |\title|, |\date| +% and one or more |\author|s. +% +% \DescribeMacro{\id} +% Sometimes you have to provide your student ID with your solutions to an +% exercise sheet. The \textsf{uhhassignment} class provides the |\id|\marg{id} +% command for this case. This command should be used when specifying the authors +% with the |\author| command. It might look like this: +% |\author{John Doe\id{1234567}}| +% +% \subsection{Tasks and Subtasks} +% +% The \textsf{uhhassignment} class is based on \textsf{srcarctl} from the KOMA +% packages so its main sectioning level are sections (not chapters). Sections +% and subsections however do not always accurately reflect the semantics of +% solutions to an assignment. Instead the \textsf{uhhassignment} class provides +% the following commands: +% +% \smallskip +% +% \DescribeMacro{\task}|\task|\oarg{task number}\marg{task name}\\ +% The |\task| command replaces the |\section| command. It incrementally numbers +% the tasks (starting at 1). If you want to skip a task you can use the optional +% \meta{task number} argument to set the task number to a specific value. +% Subsequent tasks are then incrementally numbered. +% +% \smallskip +% +% \DescribeMacro{\subtask}|\subtask|\oarg{task number}\marg{task name}\\ +% \DescribeMacro{\subsubtask}|\subsubtask|\oarg{task number}\marg{task name}\\ +% The |\subtask| and |\subsubtask| replace |\subsection| and |\subsubsection| +% respectively. They work analogous to |\task|. +% +% \smallskip +% +% The standard sectioning commands are not modified by the +% \textsf{uhhassignment} class so it is still possible to use them. In fact the +% |\task| commands do create sections and subsections internally. You should +% however be careful in using |\section|s yourself because it may be difficult +% to distinguish |\task|s from |\section|s. +% +% \subsection{Todos} +% +% The \textsf{uhhassignment} class offers rudimentary support for todo notes. +% Currently todo support is very limited and may not work in some cases. +% +% \smallskip +% +% \DescribeMacro{\todo}|\todo|\oarg{todo text}\\ +% The |\todo| command does two things: +% \begin{enumerate} +% \item It puts a todo marker in the text where the |\todo| command is +% specified. The todo marker is defined by the |\todomark| command. +% \DescribeMacro{\todomark} +% \item It puts a todo note at the page margin so that you can easily spot +% open todos in the PDF. The text of the todo note can be customized using +% the \meta{todo text} optional argument. +% \end{enumerate} +% +% \StopEventually{ +% \addcontentsline{toc}{section}{Index} +% \PrintIndex +% } +% +% \section{Implementation} +% +% In addition to the options provided by \textsf{scrartcl} the +% \textsf{uhhassignment} class supports the following options. +% \begin{macrocode} +\newif\ifuhhassignment@numberedsheets +\DeclareOption{unnumberedsheets}{ + \uhhassignment@numberedsheetsfalse +} + +\DeclareOption{numberedsheets}{ + \uhhassignment@numberedsheetstrue +} + +\newif\ifuhhassignment@repeatauthor +\uhhassignment@repeatauthorfalse +\DeclareOption{repeatauthor}{ + \uhhassignment@repeatauthortrue +} + +\newif\ifuhhassignment@shorttitle +\DeclareOption{shorttitle}{ + \uhhassignment@shorttitletrue +} + +\DeclareOption{longtitle}{ + \uhhassignment@shorttitlefalse +} + +\newif\ifuhhassignment@shortheader +\DeclareOption{shortheader}{ + \uhhassignment@shortheadertrue +} + +\DeclareOption{longheader}{ + \uhhassignment@shortheaderfalse +} + +\ExecuteOptions{longtitle,longheader,numberedsheets} + +\ProcessOptions\relax +% \end{macrocode} +% +% The \textsf{uhhassignment} class is based on \textsf{scrartcl}. +% \begin{macrocode} +\LoadClassWithOptions{scrartcl} +% \end{macrocode} + +% \iffalse %%%%%%%%%%%%%%%%%%% +%%%%%%%% Dependencies %%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + +% \subsection{Dependencies} +% +% \begin{macrocode} +\RequirePackage[utf8]{inputenc} % UTF-8 Encoding +\RequirePackage{cmap} % Special Characters +\RequirePackage[T1]{fontenc} % Font Encoding +\RequirePackage[ngerman]{babel} % German Language +\RequirePackage{etoolbox} % Programming +\RequirePackage{calc} % Calculations + +\RequirePackage[a4paper, + left=25mm, + right=25mm, + top=20mm, + bottom=50mm]{geometry} % Page Margins + +\RequirePackage[headsepline]{scrlayer-scrpage} % Header and Footer +\RequirePackage{lastpage} % Page Numbers + +\RequirePackage{amsmath} % Maths +\RequirePackage{amssymb} % Maths +\RequirePackage{amsthm} % Beweise +\RequirePackage{enumitem} % Customizable Enumerations + +\RequirePackage{xcolor} % Colors +\RequirePackage{framed} % Colored Boxes +\RequirePackage[colorlinks,linkcolor=black]{hyperref} % References +\RequirePackage{lmodern} % Better Font +% \end{macrocode} + +% \iffalse %%%%%%%%%%%%%%%%%%% +%%%%%%%%%% Constants %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + +% \subsection{Constants} + +% The following constants are used throughout the template. They can be +% overridden for customizations. +% \begin{macrocode} +\def\uhhassignment@sheetid{Aufgabenblatt} +\def\uhhassignment@groupid{Übungsgruppe} +% \end{macrocode} + +% \iffalse %%%%%%%%%%%%%%%%%%% +%%%%%%% Custom Commands %%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + +% \subsection{Definitions} +% +% \subsubsection{Title Elements} +% +% \begin{macro}{\university} +% The |\university| command stores the name of the university for later use. +% \begin{macrocode} +\newcommand{\university}[2][]{ + \ifstrempty{#1}{ + \gdef\@shortuniversity{#2} + }{ + \gdef\@shortuniversity{#1} + } + \gdef\@university{#2} +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\course} +% The |\course| command stores the name of the course for later use. +% \begin{macrocode} +\newcommand{\course}[2][]{ + \ifstrempty{#1}{ + \gdef\@shortcourse{#2} + }{ + \gdef\@shortcourse{#1} + } + \gdef\@course{#2} +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\teacher} +% The |\teacher| command stores the name of the teacher for later use. +% \begin{macrocode} +\newcommand{\teacher}[1]{ + \gdef\@teacher{#1} +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\group} +% The |\group| command stores the name of the group for later use. +% \begin{macrocode} +\newcommand{\group}[1]{ + \gdef\@group{#1} +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\sheetno} +% The |\sheetno| command stores the assignment sheet number for later use. +% \begin{macrocode} +\newcommand{\sheetno}[1]{ + \gdef\@sheetno{#1} +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\id} +% The |\id| macro prints the id of an author. The default implementation puts +% the id on a new line in parentheses. +% \begin{macrocode} +\newcommand{\id}[1]{\\\ttfamily\footnotesize(#1)} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\author} +% The |\author| command is overridden by this class to support a short author +% that may be printed at the bottom of each page. +% \begin{macrocode} +\renewcommand{\author}[2][]{ + \ifstrempty{#1}{ + \gdef\@shortauthor{#2} + }{ + \gdef\@shortauthor{#1} + } + \gdef\@author{#2} +} +% \end{macrocode} +% \end{macro} + +% The default values for most fields are empty. The default university is the +% university of Hamburg. +% \begin{macrocode} +\university[Uni Hamburg]{Universität Hamburg} +\def\@course{ + \ClassWarning{uhhassignment}{No \protect\course\space given} +} +\let\@shortcourse\@course +\group{} +\def\@teacher{ + \ClassWarning{uhhassignment}{No \protect\teacher\space given} +} +\let\@shortteacher\@teacher +\def\@sheetno{ + \ClassWarning{uhhassignment}{No \protect\sheetno\space given} +} +\def\@shortauthor{ + \ClassWarning{uhhassignment}{No short \protect\author\space given} +} +\title{} + +% \end{macrocode} + +% \subsubsection{Todos} + +% \begin{macro}{\todomark} +% The |\todomark| is placed in the text when the |\todo| command is used. The +% default implementation draws a purple box with the text "Todo" inside. +% \begin{macrocode} +\newcommand{\todomark}{% + \colorbox{purple}{% + \textnormal\ttfamily\bfseries\color{white}% + TODO% + }% +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\todo} +% The |\todo| macro places the |\todomark| and puts a todo text in a marginpar. +% \begin{macrocode} +\newcommand{\todo}[1][]{% + \ifstrempty{#1}{% + \def\todotext{Todo}% + }{% + \def\todotext{Todo: #1}% + }% + \todomark% + {% + \marginpar{% + \raggedright\normalfont\sffamily\scriptsize\todotext% + }% + }% +} +% \end{macrocode} +% \end{macro} + +% \subsubsection{Tasks} + +% The task mechanism of the \textsf{uhhassignment} class implements its own +% numbering mechanism. This is neccessary because the task numbers do not +% necessarily correlate with section numbers. +% \begin{macrocode} +\setcounter{secnumdepth}{0} +% \end{macrocode} + +% \begin{macro}{\task} +% The |\task| command is basically just a wrapper around a section with a +% semi-customizable section title. +% \begin{macrocode} +\newcounter{task} +\newcommand{\task}[2][]{% + \ifstrempty{#1}{% + \stepcounter{task}% + }{% + \setcounter{task}{#1}% + }% + \ifstrempty{#2}{% + \section{Aufgabe \arabic{task}}% + }{% + \section{Aufgabe \arabic{task}: #2}% + }% +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\subtask} +% The equivalent of |\subsection| for the \textsf{uhhassignment} class. +% |\subtask| essentially wraps |\subsection| with a semi-customizable title. +% \begin{macrocode} +\newcounter{subtask}[task] +\newcommand{\subtask}[2][]{% + \ifstrempty{#1}{% + \stepcounter{subtask}% + }{% + \setcounter{subtask}{#1}% + }% + \ifstrempty{#2}{% + \subsection{Teilaufgabe \arabic{task}.\arabic{subtask}}% + }{% + \subsection{\arabic{task}.\arabic{subtask}. #2}% + }% +} +% \end{macrocode} +% \end{macro} + +% \begin{macro}{\subsubtask} +% The equivalent of |\subsubsection| for the \textsf{uhhassignment} class. +% |\subsubtask| essentially wraps |\subsection| with a semi-customizable title. +% It probably is not neccessary to use this very often. +% \begin{macrocode} +\newcounter{subsubtask}[subtask] +\newcommand{\subsubtask}[2][]{% + \ifstrempty{#1}{% + \stepcounter{subsubtask}% + }{% + \setcounter{subsubtask}{#1}% + }% + \ifstrempty{#2}{% + \subsection{\arabic{task}.\arabic{subtask}.\arabic{subsubtask}} + }{% + \subsubsection{\arabic{task}.\arabic{subtask}.\arabic{subsubtask}. #2}% + }% +} +% \end{macrocode} +% \end{macro} + +% \iffalse %%%%%%%%%%%%%%%%%%% +%%%%%%%%% Page Setup %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + +% \subsection{Page Setup} + +% The \textsf{uhhassignment} class defines its own header and footer using +% \textsf{scrlayer-scrpage}. The default setup shows the course, sheet number, +% university and date on every page. +% \begin{macrocode} +\setlength{\headheight}{50pt} +\pagestyle{scrheadings} +\clearpairofpagestyles + +% Header +\ifuhhassignment@shortheader + \ifuhhassignment@numberedsheets + \ihead{\textbf{\@shortcourse}\\\uhhassignment@sheetid{} \@sheetno} + \else + \ihead{\textbf{\@shortcourse}} + \fi + \ohead{\textbf{\@shortuniversity}\\\@date} +\else + \ifuhhassignment@numberedsheets + \ihead{\textbf{\@course}\\\uhhassignment@sheetid{} \@sheetno} + \else + \ihead{\textbf{\@course}} + \fi + \ohead{\textbf{\@university}\\\@date} +\fi + +% Footer +\setkomafont{pagefoot}{\textnormal} +\ifuhhassignment@repeatauthor + \ifoot[\@shortauthor]{\@shortauthor} + \ofoot[Seite \pagemark{} von \pageref{LastPage}]{Seite \pagemark{} von \pageref{LastPage}} +\else + \cfoot[Seite \pagemark{} von \pageref{LastPage}]{Seite \pagemark{} von \pageref{LastPage}} +\fi + +\newpagestyle{firstpage}[]{% + \ihead{} + \cfoot{\pagemark{}} +} +% \end{macrocode} + +% \iffalse %%%%%%%%%%%%%%%%%%% +%%%%%%%%%%% Layout %%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + +% \subsection{Layout} + +% The \textsf{uhhassignment} class overrides some font settings and adjusts the +% paragraph spacing to create a more distinct layout. +% +% \begin{macrocode} +\setlength{\parskip}{5pt} + +\setkomafont{section}{\normalfont\bfseries\LARGE} +\setkomafont{subsection}{\normalfont\bfseries\Large} +\setkomafont{subsubsection}{\normalfont\bfseries\large} +\RedeclareSectionCommands[afterskip=.25\baselineskip]{section} +\RedeclareSectionCommands[ + beforeskip=0.5\baselineskip, + afterskip=.125\baselineskip]{subsection} +% \end{macrocode} + +% \begin{macro}{\maketitle} +% The \textsf{uhhassignment} class completely redefines the |\maketitle| macro. +% This implementation actually defines the layout of the final title depending +% on which information was specified by the user (group number, a title, \dots). +% +% We differentiate two \emph{states} of the title. If the user does not specify +% a title and does not specify a group the title will be rearranged to not +% display too much empty space. This is implemented via the |\ifextended| +% definition. +% \begin{macrocode} +\renewcommand*{\maketitle}{% + \thispagestyle{plain}% + + \newif\ifextended + \extendedtrue + + \ifuhhassignment@shorttitle + \let\university\@shortuniversity + \let\course\@shortcourse + \else + \let\university\@university + \let\course\@course + \fi +% \end{macrocode} + +% First we define the different layout parts. The title has six \emph{slots} +% each of which can hold a piece of text: +% \begin{description} +% \item[Top Left] On the top left the course name ist printed in a bold +% font. +% \item[Top Right] On the top right the name of the university is printed +% in a bold font. +% \item[Meta Left] Below the course name a piece of information is +% printed. The contents of this slot depend on the +% specified information and can be either the group +% number or the teacher. +% \item[Meta Right] Similar to meta left but below the university name. +% This slot typically holds the teacher or the date. +% \item[Title Left] Above the actual title there is a row of secondary +% titles. On the left of this row the sheet number is +% printed. +% \item[Title Right] Similarly to title left this slot may contain the +% date. +% \end{description} +% Below the header the actual document title and the author(s) are printed. +% If no |\title| is specified the sheet number becomes the title (|\title| +% however remains empfy). +% \begin{macrocode} + \ifdefempty{\@title}{% + \ifdefempty{\@group}{% + \def\metaleft{\@teacher}% + \def\metaright{\@date}% + \def\titleright{}% + \extendedfalse + }{% + \def\metaleft{\uhhassignment@sheetid{} \@group}% + \def\metaright{\@teacher}% + \def\titleright{\@date}% + }% + \def\titleleft{}% + \ifuhhassignment@numberedsheets + \def\title{\uhhassignment@sheetid{} \@sheetno}% + \else + % Title remains user-specified + \fi + }{% + \ifdefempty{\@group}{% + \def\metaleft{}% + \def\metaright{\@teacher}% + }{% + \def\metaleft{\uhhassignment@groupid{} \@group}% + \def\metaright{\@teacher}% + }% + \ifuhhassignment@numberedsheets + \def\titleleft{\uhhassignment@sheetid{} \@sheetno}% + \else + \def\titleleft{} + \fi + \def\titleright{\@date}% + \def\title{\@title}% + }% +% \end{macrocode} + +% The following code prints the title with the information specified above. +% Depending on the value of |\ifextended| the title will be longer or +% shorter. +% +% Each field (heading, secondary title, title, author) is put in a separate +% group to avoid interference. +% \begin{macrocode} + + \begingroup% Heading Group + \usekomafont{pageheadfoot}% + \usekomafont{pagehead}% + \setlength{\parskip}{0pt}% + + \textbf{\course} \hfill \textbf{\university}\par% + + \begin{minipage}[t]{\widthof{\metaleft}}% + \metaleft% + \end{minipage}% + \hfill% + \begin{minipage}[t]{\widthof{\metaright}}% + \raggedleft% + \metaright% + \end{minipage}% + \endgroup% + + \ifextended% + \vspace{\baselineskip}% + \fi% + + \begingroup% Secondary Title Groupt + \Large\bfseries\titleleft\hfill\titleright% + \endgroup% + + \begingroup% Title Group + \begin{center}% + \Huge\textsc{\title}% + \end{center}% + \endgroup% + + \begingroup% Author Group + \setlength{\baselineskip}{2.75\baselineskip}% + \vspace{-\baselineskip}% + \begin{center}% + \begin{tabular}[t]{c}% + \@author% + \end{tabular}% + \end{center}% + \endgroup% +} +% \end{macrocode} +% \end{macro} +% \Finale + +\endinput diff --git a/Master/texmf-dist/source/latex/uhhassignment/uhhassignment.ins b/Master/texmf-dist/source/latex/uhhassignment/uhhassignment.ins new file mode 100644 index 00000000000..193cfab780d --- /dev/null +++ b/Master/texmf-dist/source/latex/uhhassignment/uhhassignment.ins @@ -0,0 +1,52 @@ +%% +%% Copyright (C) 2017 by Kim Wittenburg +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. +%% + +\input docstrip.tex +\keepsilent + +\usedir{tex/latex/uhhassignment} + +\preamble + +Copyright (C) 2017 by Kim Wittenburg + +This file may be distributed and/or modified under the +conditions of the LaTeX Project Public License, either +version 1.3 of this license or (at your option) any later +version. The latest version of this license is in: + + http://www.latex-project.org/lppl.txt + +and version 1.3 or later is part of all distributions of +LaTeX version 2005/12/01 or later. +\endpreamble + +\generate{\file{uhhassignment.cls}{\from{uhhassignment.dtx}{class}}} + +\obeyspaces +\Msg{****************************************************} +\Msg{* *} +\Msg{* To finish the installation you have to move the *} +\Msg{* following file into a directory searched by TeX: *} +\Msg{* *} +\Msg{* uhhassignment.cls *} +\Msg{* *} +\Msg{* To produce the documentation run the file *} +\Msg{* uhhassignment.dtx through LaTeX. *} +\Msg{* *} +\Msg{* Happy TeXing! *} +\Msg{* *} +\Msg{****************************************************} + +\endbatchfile diff --git a/Master/texmf-dist/tex/latex/uhhassignment/uhhassignment.cls b/Master/texmf-dist/tex/latex/uhhassignment/uhhassignment.cls new file mode 100644 index 00000000000..09801e1d631 --- /dev/null +++ b/Master/texmf-dist/tex/latex/uhhassignment/uhhassignment.cls @@ -0,0 +1,374 @@ +%% +%% This is file `uhhassignment.cls', +%% generated with the docstrip utility. +%% +%% The original source files were: +%% +%% uhhassignment.dtx (with options: `class') +%% +%% Copyright (C) 2017 by Kim Wittenburg +%% +%% This file may be distributed and/or modified under the +%% conditions of the LaTeX Project Public License, either +%% version 1.3 of this license or (at your option) any later +%% version. The latest version of this license is in: +%% +%% http://www.latex-project.org/lppl.txt +%% +%% and version 1.3 or later is part of all distributions of +%% LaTeX version 2005/12/01 or later. + +\NeedsTeXFormat{LaTeX2e}[2005/12/01] +\ProvidesClass{uhhassignment}[2017/04/22 v1.0 The UHH-Assignment Class] + + + +\newif\ifuhhassignment@numberedsheets +\DeclareOption{unnumberedsheets}{ + \uhhassignment@numberedsheetsfalse +} + +\DeclareOption{numberedsheets}{ + \uhhassignment@numberedsheetstrue +} + +\newif\ifuhhassignment@repeatauthor +\uhhassignment@repeatauthorfalse +\DeclareOption{repeatauthor}{ + \uhhassignment@repeatauthortrue +} + +\newif\ifuhhassignment@shorttitle +\DeclareOption{shorttitle}{ + \uhhassignment@shorttitletrue +} + +\DeclareOption{longtitle}{ + \uhhassignment@shorttitlefalse +} + +\newif\ifuhhassignment@shortheader +\DeclareOption{shortheader}{ + \uhhassignment@shortheadertrue +} + +\DeclareOption{longheader}{ + \uhhassignment@shortheaderfalse +} + +\ExecuteOptions{longtitle,longheader,numberedsheets} + +\ProcessOptions\relax +\LoadClassWithOptions{scrartcl} + +%%%%%%%% Dependencies %%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + +\RequirePackage[utf8]{inputenc} % UTF-8 Encoding +\RequirePackage{cmap} % Special Characters +\RequirePackage[T1]{fontenc} % Font Encoding +\RequirePackage[ngerman]{babel} % German Language +\RequirePackage{etoolbox} % Programming +\RequirePackage{calc} % Calculations + +\RequirePackage[a4paper, + left=25mm, + right=25mm, + top=20mm, + bottom=50mm]{geometry} % Page Margins + +\RequirePackage[headsepline]{scrlayer-scrpage} % Header and Footer +\RequirePackage{lastpage} % Page Numbers + +\RequirePackage{amsmath} % Maths +\RequirePackage{amssymb} % Maths +\RequirePackage{amsthm} % Beweise +\RequirePackage{enumitem} % Customizable Enumerations + +\RequirePackage{xcolor} % Colors +\RequirePackage{framed} % Colored Boxes +\RequirePackage[colorlinks,linkcolor=black]{hyperref} % References +\RequirePackage{lmodern} % Better Font + +%%%%%%%%%% Constants %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + + +\def\uhhassignment@sheetid{Aufgabenblatt} +\def\uhhassignment@groupid{Übungsgruppe} + +%%%%%%% Custom Commands %%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + +\newcommand{\university}[2][]{ + \ifstrempty{#1}{ + \gdef\@shortuniversity{#2} + }{ + \gdef\@shortuniversity{#1} + } + \gdef\@university{#2} +} + +\newcommand{\course}[2][]{ + \ifstrempty{#1}{ + \gdef\@shortcourse{#2} + }{ + \gdef\@shortcourse{#1} + } + \gdef\@course{#2} +} + +\newcommand{\teacher}[1]{ + \gdef\@teacher{#1} +} + +\newcommand{\group}[1]{ + \gdef\@group{#1} +} + +\newcommand{\sheetno}[1]{ + \gdef\@sheetno{#1} +} + +\newcommand{\id}[1]{\\\ttfamily\footnotesize(#1)} + +\renewcommand{\author}[2][]{ + \ifstrempty{#1}{ + \gdef\@shortauthor{#2} + }{ + \gdef\@shortauthor{#1} + } + \gdef\@author{#2} +} + +\university[Uni Hamburg]{Universität Hamburg} +\def\@course{ + \ClassWarning{uhhassignment}{No \protect\course\space given} +} +\let\@shortcourse\@course +\group{} +\def\@teacher{ + \ClassWarning{uhhassignment}{No \protect\teacher\space given} +} +\let\@shortteacher\@teacher +\def\@sheetno{ + \ClassWarning{uhhassignment}{No \protect\sheetno\space given} +} +\def\@shortauthor{ + \ClassWarning{uhhassignment}{No short \protect\author\space given} +} +\title{} + + + +\newcommand{\todomark}{% + \colorbox{purple}{% + \textnormal\ttfamily\bfseries\color{white}% + TODO% + }% +} + +\newcommand{\todo}[1][]{% + \ifstrempty{#1}{% + \def\todotext{Todo}% + }{% + \def\todotext{Todo: #1}% + }% + \todomark% + {% + \marginpar{% + \raggedright\normalfont\sffamily\scriptsize\todotext% + }% + }% +} + + +\setcounter{secnumdepth}{0} + +\newcounter{task} +\newcommand{\task}[2][]{% + \ifstrempty{#1}{% + \stepcounter{task}% + }{% + \setcounter{task}{#1}% + }% + \ifstrempty{#2}{% + \section{Aufgabe \arabic{task}}% + }{% + \section{Aufgabe \arabic{task}: #2}% + }% +} + +\newcounter{subtask}[task] +\newcommand{\subtask}[2][]{% + \ifstrempty{#1}{% + \stepcounter{subtask}% + }{% + \setcounter{subtask}{#1}% + }% + \ifstrempty{#2}{% + \subsection{Teilaufgabe \arabic{task}.\arabic{subtask}}% + }{% + \subsection{\arabic{task}.\arabic{subtask}. #2}% + }% +} + +\newcounter{subsubtask}[subtask] +\newcommand{\subsubtask}[2][]{% + \ifstrempty{#1}{% + \stepcounter{subsubtask}% + }{% + \setcounter{subsubtask}{#1}% + }% + \ifstrempty{#2}{% + \subsection{\arabic{task}.\arabic{subtask}.\arabic{subsubtask}} + }{% + \subsubsection{\arabic{task}.\arabic{subtask}.\arabic{subsubtask}. #2}% + }% +} + +%%%%%%%%% Page Setup %%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + + +\setlength{\headheight}{50pt} +\pagestyle{scrheadings} +\clearpairofpagestyles + +\ifuhhassignment@shortheader + \ifuhhassignment@numberedsheets + \ihead{\textbf{\@shortcourse}\\\uhhassignment@sheetid{} \@sheetno} + \else + \ihead{\textbf{\@shortcourse}} + \fi + \ohead{\textbf{\@shortuniversity}\\\@date} +\else + \ifuhhassignment@numberedsheets + \ihead{\textbf{\@course}\\\uhhassignment@sheetid{} \@sheetno} + \else + \ihead{\textbf{\@course}} + \fi + \ohead{\textbf{\@university}\\\@date} +\fi + +\setkomafont{pagefoot}{\textnormal} +\ifuhhassignment@repeatauthor + \ifoot[\@shortauthor]{\@shortauthor} + \ofoot[Seite \pagemark{} von \pageref{LastPage}]{Seite \pagemark{} von \pageref{LastPage}} +\else + \cfoot[Seite \pagemark{} von \pageref{LastPage}]{Seite \pagemark{} von \pageref{LastPage}} +\fi + +\newpagestyle{firstpage}[]{% + \ihead{} + \cfoot{\pagemark{}} +} + +%%%%%%%%%%% Layout %%%%%%%%%%% +%%%%%%%%%%%%%%%%%%%%%%%%%%%\fi + + +\setlength{\parskip}{5pt} + +\setkomafont{section}{\normalfont\bfseries\LARGE} +\setkomafont{subsection}{\normalfont\bfseries\Large} +\setkomafont{subsubsection}{\normalfont\bfseries\large} +\RedeclareSectionCommands[afterskip=.25\baselineskip]{section} +\RedeclareSectionCommands[ + beforeskip=0.5\baselineskip, + afterskip=.125\baselineskip]{subsection} + +\renewcommand*{\maketitle}{% + \thispagestyle{plain}% + + \newif\ifextended + \extendedtrue + + \ifuhhassignment@shorttitle + \let\university\@shortuniversity + \let\course\@shortcourse + \else + \let\university\@university + \let\course\@course + \fi + + \ifdefempty{\@title}{% + \ifdefempty{\@group}{% + \def\metaleft{\@teacher}% + \def\metaright{\@date}% + \def\titleright{}% + \extendedfalse + }{% + \def\metaleft{\uhhassignment@sheetid{} \@group}% + \def\metaright{\@teacher}% + \def\titleright{\@date}% + }% + \def\titleleft{}% + \ifuhhassignment@numberedsheets + \def\title{\uhhassignment@sheetid{} \@sheetno}% + \else + % Title remains user-specified + \fi + }{% + \ifdefempty{\@group}{% + \def\metaleft{}% + \def\metaright{\@teacher}% + }{% + \def\metaleft{\uhhassignment@groupid{} \@group}% + \def\metaright{\@teacher}% + }% + \ifuhhassignment@numberedsheets + \def\titleleft{\uhhassignment@sheetid{} \@sheetno}% + \else + \def\titleleft{} + \fi + \def\titleright{\@date}% + \def\title{\@title}% + }% + + + \begingroup% Heading Group + \usekomafont{pageheadfoot}% + \usekomafont{pagehead}% + \setlength{\parskip}{0pt}% + + \textbf{\course} \hfill \textbf{\university}\par% + + \begin{minipage}[t]{\widthof{\metaleft}}% + \metaleft% + \end{minipage}% + \hfill% + \begin{minipage}[t]{\widthof{\metaright}}% + \raggedleft% + \metaright% + \end{minipage}% + \endgroup% + + \ifextended% + \vspace{\baselineskip}% + \fi% + + \begingroup% Secondary Title Groupt + \Large\bfseries\titleleft\hfill\titleright% + \endgroup% + + \begingroup% Title Group + \begin{center}% + \Huge\textsc{\title}% + \end{center}% + \endgroup% + + \begingroup% Author Group + \setlength{\baselineskip}{2.75\baselineskip}% + \vspace{-\baselineskip}% + \begin{center}% + \begin{tabular}[t]{c}% + \@author% + \end{tabular}% + \end{center}% + \endgroup% +} + +\endinput +%% +%% End of file `uhhassignment.cls'. diff --git a/Master/tlpkg/bin/tlpkg-ctan-check b/Master/tlpkg/bin/tlpkg-ctan-check index 36c8db893c7..b597304a375 100755 --- a/Master/tlpkg/bin/tlpkg-ctan-check +++ b/Master/tlpkg/bin/tlpkg-ctan-check @@ -630,7 +630,7 @@ my @TLP_working = qw( uaclasses uafthesis uantwerpendocs uassign ucharcat ucharclasses ucbthesis ucdavisthesis ucs ucthesis udesoftec uebungsblatt uestcthesis - uhrzeit uiucredborder uiucthesis + uhhassignment uhrzeit uiucredborder uiucthesis ukrhyph ulem ulqda ulthese umbclegislation umich-thesis uml umlaute umoline umthesis umtypewriter diff --git a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc index ec1bd5a2fb8..15e26255d33 100644 --- a/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc +++ b/Master/tlpkg/tlpsrc/collection-publishers.tlpsrc @@ -153,6 +153,7 @@ depend ucbthesis depend ucdavisthesis depend ucthesis depend uestcthesis +depend uhhassignment depend uiucredborder depend uiucthesis depend ulthese diff --git a/Master/tlpkg/tlpsrc/uhhassignment.tlpsrc b/Master/tlpkg/tlpsrc/uhhassignment.tlpsrc new file mode 100644 index 00000000000..e69de29bb2d -- cgit v1.2.3