diff --git a/.gitignore b/.gitignore index 096943a..aebaece 100644 --- a/.gitignore +++ b/.gitignore @@ -5,5 +5,3 @@ *.synctex.* *.fls *.out -*.pdf -!analysisII.pdf diff --git a/lecture.cls b/lecture.cls new file mode 100644 index 0000000..904ada4 --- /dev/null +++ b/lecture.cls @@ -0,0 +1,249 @@ +\ProvidesClass{lecture} +\LoadClass[a4paper, titlepage]{article} + +\RequirePackage[utf8]{inputenc} +\RequirePackage[T1]{fontenc} +\RequirePackage{textcomp} +\RequirePackage[german]{babel} +\RequirePackage{amsmath, amssymb, amsthm} +\RequirePackage{mdframed} +\RequirePackage{fancyhdr} +\RequirePackage{geometry} +\RequirePackage{import} +\RequirePackage{pdfpages} +\RequirePackage{transparent} +\RequirePackage{xcolor} +\RequirePackage{array} +\RequirePackage[shortlabels]{enumitem} +\RequirePackage{tikz} +\RequirePackage{pgfplots} +\RequirePackage[nobottomtitles]{titlesec} +\RequirePackage{listings} +\RequirePackage{mathtools} +\RequirePackage{forloop} +\RequirePackage{totcount} +\RequirePackage{calc} +\RequirePackage{wasysym} +\RequirePackage{environ} + +\usetikzlibrary{quotes, angles} +\pgfplotsset{ + compat=1.15, + default 2d plot/.style={% + grid=both, + minor tick num=4, + grid style={line width=.1pt, draw=gray!10}, + major grid style={line width=.2pt,draw=gray!50}, + axis lines=middle, + enlargelimits={abs=0.2} + }, +} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}} +\DeclareOption{uebung}{ + \makeatletter + \lhead{\@title} + \rhead{\@author} + \makeatother +} +\ProcessOptions\relax + +% PAGE GEOMETRY +\geometry{ + left=15mm, + right=40mm, + top=20mm, + bottom=20mm +} + +% PARAGRAPH no indent but skip +\setlength{\parskip}{3mm} +\setlength{\parindent}{0mm} + +\theoremstyle{definition} +\newmdtheoremenv{satz}{Satz}[section] +\newmdtheoremenv{lemma}[satz]{Lemma} +\newmdtheoremenv{korrolar}[satz]{Korrolar} +\newmdtheoremenv{definition}[satz]{Definition} + +\newtheorem{bsp}[satz]{Beispiel} +\newtheorem{bem}[satz]{Bemerkung} +\newtheorem{aufgabe}{Aufgabe} + +% enable aufgaben counting +\regtotcounter{aufgabe} + +% temporary calculation counter +\newcounter{var} + +\newcommand{\N}{\mathbb{N}} +\newcommand{\R}{\mathbb{R}} +\newcommand{\Z}{\mathbb{Z}} +\newcommand{\Q}{\mathbb{Q}} +\newcommand{\C}{\mathbb{C}} + +% HEADERS + +\pagestyle{fancy} + +\newcommand{\incfig}[1]{% + \def\svgwidth{\columnwidth} + \import{./figures/}{#1.pdf_tex} +} +\pdfsuppresswarningpagegroup=1 + +% horizontal rule +\newcommand\hr{ + \noindent\rule[0.5ex]{\linewidth}{0.5pt} +} + +% punkte tabelle +\newcommand{\punkte}[1][1]{ + \newcounter{k} + \setcounter{k}{#1} + \@punkten{\value{k}}{\totvalue{aufgabe}} + \setcounter{k}{#1-1} + \setcounter{aufgabe}{\value{k}} + \vspace{5mm} +} + +\def\@punkten#1#2{ + \newcounter{n} + % create a temporary calculation counter + \setcounter{var}{#2-#1+1} + \begin{tabular}{|c|*{\value{var}}{m{1cm}|}m{1cm}|@{}m{0cm}@{}} + \hline + Aufgabe + \forloop{n}{#1}{\not{\value{n} > #2}}{ + & \centering A\then + } + & \centering $\sum$ & \\[5mm] \hline + Punkte + \forloop{n}{#1}{\not{\value{n} > #2}}{ + & + } + & & \\[5mm] \hline + \end{tabular} +} + +% code listings, define style +\lstdefinestyle{mystyle}{ + commentstyle=\color{gray}, + keywordstyle=\color{blue}, + numberstyle=\tiny\color{gray}, + stringstyle=\color{black}, + basicstyle=\ttfamily\footnotesize, + breakatwhitespace=false, + breaklines=true, + captionpos=b, + keepspaces=true, + numbers=left, + numbersep=5pt, + showspaces=false, + showstringspaces=false, + showtabs=false, + tabsize=2 +} + +% activate my colour style +\lstset{style=mystyle} + +% better stackrel +\let\oldstackrel\stackrel +\renewcommand{\stackrel}[2]{% + \oldstackrel{\mathclap{#1}}{#2} +}% + +% integral d sign +\makeatletter \renewcommand\d[2][]{\ensuremath{% + \,\mathrm{d}^{#1}#2\@ifnextchar^{}{\@ifnextchar\d{}{\,}}}} +\makeatother + +% contradiction +\newcommand{\contr}{\text{\Large\lightning}} + +% disjoint unions: provides cupdot and bigcupdot +\makeatletter +\def\moverlay{\mathpalette\mov@rlay} +\def\mov@rlay#1#2{\leavevmode\vtop{% + \baselineskip\z@skip \lineskiplimit-\maxdimen + \ialign{\hfil$\m@th#1##$\hfil\cr#2\crcr}}} +\newcommand{\charfusion}[3][\mathord]{ + #1{\ifx#1\mathop\vphantom{#2}\fi + \mathpalette\mov@rlay{#2\cr#3} + } + \ifx#1\mathop\expandafter\displaylimits\fi} +\makeatother + +\newcommand{\cupdot}{\charfusion[\mathbin]{\cup}{\cdot}} +\newcommand{\bigcupdot}{\charfusion[\mathop]{\bigcup}{\cdot}} + +\ExplSyntaxOn + +% S-tackrelcompatible ALIGN environment +% some might also call it the S-uper ALIGN environment +% uses regular expressions to calculate the widest stackrel +% to put additional padding on both sides of relation symbols +\NewEnviron{salign} +{ + \begin{align} + \lec_insert_padding:V \BODY + \end{align} +} +% starred version that does no equation numbering +\NewEnviron{salign*} +{ + \begin{align*} + \lec_insert_padding:V \BODY + \end{align*} +} + +% some helper variables +\tl_new:N \l__lec_text_tl +\seq_new:N \l_lec_stackrels_seq +\int_new:N \l_stackrel_count_int +\int_new:N \l_idx_int +\box_new:N \l_tmp_box +\dim_new:N \l_tmp_dim_a +\dim_new:N \l_tmp_dim_b +\dim_new:N \l_tmp_dim_needed + +% function to insert padding according to widest stackrel +\cs_new_protected:Nn \lec_insert_padding:n + { + \tl_set:Nn \l__lec_text_tl { #1 } + % get all stackrels in this align environment + \regex_extract_all:nnN { \c{stackrel}{(.*?)}{(.*?)} } { #1 } \l_lec_stackrels_seq + % get number of stackrels + \int_set:Nn \l_stackrel_count_int { \seq_count:N \l_lec_stackrels_seq } + \int_set:Nn \l_idx_int { 1 } + \dim_set:Nn \l_tmp_dim_needed { 0pt } + % iterate over stackrels + \int_while_do:nn { \l_idx_int <= \l_stackrel_count_int } + { + % calculate width of text + \hbox_set:Nn \l_tmp_box {$\seq_item:Nn \l_lec_stackrels_seq { \l_idx_int + 1 }$} + \dim_set:Nn \l_tmp_dim_a {\box_wd:N \l_tmp_box} + % calculate width of relation symbol + \hbox_set:Nn \l_tmp_box {$\seq_item:Nn \l_lec_stackrels_seq { \l_idx_int + 2 }$} + \dim_set:Nn \l_tmp_dim_b {\box_wd:N \l_tmp_box} + % check if 0.5*(a-b) > minimum padding, if yes updated minimum padding + \dim_compare:nNnTF + { 1pt * \dim_ratio:nn { \l_tmp_dim_a - \l_tmp_dim_b } { 2pt } } > { \l_tmp_dim_needed } + { \dim_set:Nn \l_tmp_dim_needed { 1pt * \dim_ratio:nn { \l_tmp_dim_a - \l_tmp_dim_b } { 2pt } } } + { } + \quad + % increment list index by three, as every stackrel produces three list entries + \int_incr:N \l_idx_int + \int_incr:N \l_idx_int + \int_incr:N \l_idx_int + } + % replace all relations with align characters (&) and add the needed padding + \regex_replace_all:nnN + { (\c{iff}&|&\c{iff}|\c{impliedby}&|&\c{impliedby}|\c{implies}&|&\c{implies}|\c{approx}&|&\c{approx}|\c{equiv}&|&\c{equiv}|=&|&=|\c{le}&|&\c{le}|\c{ge}&|&\c{ge}|&\c{stackrel}{.*?}{.*?}|\c{stackrel}{.*?}{.*?}&|&\c{neq}|\c{neq}&) } + { \c{kern} \u{l_tmp_dim_needed} \1 \c{kern} \u{l_tmp_dim_needed} } + \l__lec_text_tl + \l__lec_text_tl + } +\cs_generate_variant:Nn \lec_insert_padding:n { V } +\ExplSyntaxOff diff --git a/wtheo1.pdf b/wtheo1.pdf new file mode 100644 index 0000000..c5dbb29 Binary files /dev/null and b/wtheo1.pdf differ diff --git a/whteo1.tex b/wtheo1.tex similarity index 99% rename from whteo1.tex rename to wtheo1.tex index d789961..60ecbf4 100644 --- a/whteo1.tex +++ b/wtheo1.tex @@ -1,4 +1,4 @@ -\documentclass[uebung]{../../../lecture} +\documentclass[uebung]{lecture} \title{Wtheo 0: Übungsblatt 1} \author{Josua Kugler, Christian Merten} diff --git a/wtheo2.pdf b/wtheo2.pdf new file mode 100644 index 0000000..35c8be0 Binary files /dev/null and b/wtheo2.pdf differ diff --git a/wtheo2.tex b/wtheo2.tex index 1ea7f64..c1a991f 100644 --- a/wtheo2.tex +++ b/wtheo2.tex @@ -1,4 +1,4 @@ -\documentclass[uebung]{../../../lecture} +\documentclass[uebung]{lecture} \title{Wtheo 0: Übungsblatt 2} \author{Josua Kugler, Christian Merten} @@ -45,6 +45,8 @@ \end{enumerate} \end{aufgabe} +\stepcounter{aufgabe} + \begin{aufgabe}[] \begin{enumerate}[(a)] \item Beh.: $\sum_{\omega \in \Omega} \mathbbm{p}(\omega) = 1$