|
- \ProvidesClass{lecture}
- \LoadClass[a4paper]{book}
-
- \RequirePackage{faktor}
- \RequirePackage{xparse}
- \RequirePackage{stmaryrd}
- \RequirePackage[utf8]{inputenc}
- \RequirePackage[T1]{fontenc}
- \RequirePackage{textcomp}
- \RequirePackage{babel}
- \RequirePackage{amsmath, amssymb, amsthm}
- \RequirePackage{mdframed}
- \RequirePackage{tikz-cd}
- \RequirePackage{geometry}
- \RequirePackage{import}
- \RequirePackage{pdfpages}
- \RequirePackage{transparent}
- \RequirePackage{xcolor}
- \RequirePackage{array}
- \RequirePackage[shortlabels]{enumitem}
- \RequirePackage{tikz}
- \RequirePackage{pgfplots}
- \RequirePackage[pagestyles, nobottomtitles]{titlesec}
- \RequirePackage{listings}
- \RequirePackage{mathtools}
- \RequirePackage{forloop}
- \RequirePackage{totcount}
- \RequirePackage[hidelinks, unicode]{hyperref} %[unicode, hidelinks]{hyperref}
- \RequirePackage{bookmark}
- \RequirePackage{wasysym}
- \RequirePackage{environ}
- \RequirePackage{stackrel}
- \RequirePackage{subcaption}
-
- \usetikzlibrary{quotes, angles, math}
- \pgfplotsset{
- compat=1.15,
- axis lines = middle,
- ticks = none,
- %default 2d plot/.style={%
- % ticks=none,
- % axis lines = middle,
- % 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}
- }
-
- \newcounter{curve}
-
- \NewDocumentCommand{\algebraiccurve}{ O{} O{$#5 = 0$} O{-4:4} O{-4:4} m }{
- \addplot[id=curve\arabic{curve}, raw gnuplot, smooth, #1] function{%
- f(x,y) = #5;
- set xrange [#3];
- set yrange [#4];
- set view 0,0;
- set isosample 1000,1000;
- set size square;
- set cont base;
- set cntrparam levels incre 0,0.1,0;
- unset surface;
- splot f(x,y)
- };
- \addlegendentry{#2}
- \stepcounter{curve}
- }%
- %\newcommand{\algebraiccurve}[3][][hi]{%
- % %\addlegendentry{#2}
- % \stepcounter{curve}
- %}%
-
- \geometry{
- bottom=35mm
- }
-
- %\DeclareOption*{\PassOptionsToClass{\CurrentOption}{article}}
- \DeclareOption{uebung}{
- \makeatletter
- \lhead{\@title}
- \rhead{\@author}
- \makeatother
- }
- \ProcessOptions\relax
-
- % PARAGRAPH no indent but skip
- %\setlength{\parskip}{3mm}
- %\setlength{\parindent}{0mm}
-
- \newtheorem{satz}{Proposition}[chapter]
- \newtheorem{theorem}[satz]{Theorem}
- \newtheorem{lemma}[satz]{Lemma}
- \newtheorem{korollar}[satz]{Corollary}
- \theoremstyle{definition}
- \newtheorem{definition}[satz]{Definition}
-
- \newtheorem{bsp}[satz]{Example}
- \newtheorem{bem}[satz]{Remark}
- \newtheorem{aufgabe}[satz]{Exercise}
-
- \counterwithin{figure}{chapter}
-
- % enable aufgaben counting
- %\regtotcounter{aufgabe}
-
- \newcommand{\N}{\mathbb{N}}
- \newcommand{\R}{\mathbb{R}}
- \newcommand{\Z}{\mathbb{Z}}
- \newcommand{\Q}{\mathbb{Q}}
- \newcommand{\C}{\mathbb{C}}
-
- % I(V(I))
-
- \newcommand{\ivkr}{\mathcal{I}_k(\mathcal{V}_{(k^{(r)})^n}(I))}
-
- % HEADERS
-
- %\newpagestyle{main}[\small]{
- % \setheadrule{.55pt}%
- % \sethead[\thepage]% even-left
- % []% even-center
- % [\thechapter~\chaptertitle]% even-right
- % {\thesection~\sectiontitle}% odd-left
- % {}% odd-center
- % {\thepage}% odd-right
- %}
- %\pagestyle{main}
-
- \newcommand{\incfig}[1]{%
- \def\svgwidth{\columnwidth}
- \import{./figures/}{#1.pdf_tex}
- }
- \pdfsuppresswarningpagegroup=1
-
- % horizontal rule
- \newcommand\hr{
- \noindent\rule[0.5ex]{\linewidth}{0.5pt}
- }
-
- % 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}[3][]{%
- \oldstackrel[\mathclap{#1}]{\mathclap{#2}}{#3}
- }%
-
- % integral d sign
- \makeatletter \renewcommand\d[2][]{\ensuremath{%
- \,\mathrm{d}^{#1}#2\@ifnextchar^{}{\@ifnextchar\d{}{\,}}}}
- \makeatother
-
- % remove page before chapters
- \let\cleardoublepage=\clearpage
-
- %josua
- \newcommand{\norm}[1]{\left\Vert#1\right\Vert}
-
- % contradiction
- \newcommand{\contr}{\text{\Large\lightning}}
-
- % people seem to prefer varepsilon over epsilon
- \renewcommand{\epsilon}{\varepsilon}
-
- \newcommand{\Spec}{\operatorname{Spec}}
-
- \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_c
- \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}
- \hbox_set:Nn \l_tmp_box {$\seq_item:Nn \l_lec_stackrels_seq { \l_idx_int + 2 }$}
- \dim_set:Nn \l_tmp_dim_c {\box_wd:N \l_tmp_box}
- \dim_set:Nn \l_tmp_dim_a {\dim_max:nn{ \l_tmp_dim_c} {\l_tmp_dim_a}}
- % calculate width of relation symbol
- \hbox_set:Nn \l_tmp_box {$\seq_item:Nn \l_lec_stackrels_seq { \l_idx_int + 3 }$}
- \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 } } }
- { }
- % 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
- \int_incr:N \l_idx_int
- }
- % replace all relations with align characters (&) and add the needed padding
- \regex_replace_all:nnN
- { (\c{simeq}&|&\c{simeq}|\c{leq}&|&\c{leq}|\c{geq}&|&\c{geq}|\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 }
-
- \NewEnviron{leftright}
- {
- \lec_replace_parens:V \BODY
- }
-
- % function to replace parens with left right
- \cs_new_protected:Nn \lec_replace_parens:n
- {
- \tl_set:Nn \l__lec_text_tl { #1 }
- % replace all parantheses with \left( \right)
- \regex_replace_all:nnN { \( } { \c{left}( } \l__lec_text_tl
- \regex_replace_all:nnN { \) } { \c{right}) } \l__lec_text_tl
- \regex_replace_all:nnN { \[ } { \c{left}[ } \l__lec_text_tl
- \regex_replace_all:nnN { \] } { \c{right}] } \l__lec_text_tl
- \l__lec_text_tl
- }
- \cs_generate_variant:Nn \lec_replace_parens:n { V }
-
- \ExplSyntaxOff
-
- % add one equation tag to the current line to otherwise unnumbered environment
- \newcommand{\tageq}{\stepcounter{equation}\tag{\theequation}}
|