\ProvidesClass{notes} \LoadClass[a4paper]{amsart} \RequirePackage[utf8]{inputenc} \RequirePackage[T1]{fontenc} \RequirePackage{textcomp} \RequirePackage[german, english]{babel} \RequirePackage{amsmath, amssymb, amsthm} \RequirePackage{mdframed} \RequirePackage{tikz-cd} \RequirePackage{fancyhdr} \RequirePackage{geometry} \RequirePackage{import} \RequirePackage{pdfpages} %\RequirePackage{transparent} \RequirePackage{xcolor} \RequirePackage{array} \RequirePackage[shortlabels]{enumitem} \RequirePackage{tikz} \RequirePackage{pgfplots} \RequirePackage{listings} \RequirePackage{mathtools} \RequirePackage{forloop} \RequirePackage{totcount} \RequirePackage{calc} \RequirePackage{wasysym} \RequirePackage{environ} \RequirePackage{hyperref} \RequirePackage{graphicx} \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} }, } % PAGE GEOMETRY \geometry{ top=1.2in,bottom=1.4in,left=1.3in,right=1.3in, bottom=35mm } % PARAGRAPH no indent but skip %\setlength{\parskip}{3mm} %\setlength{\parindent}{0mm} \newtheorem{satz}{Proposition}[section] \newtheorem{theorem}[satz]{Theorem} \newtheorem{lemma}[satz]{Lemma} \newtheorem{korollar}[satz]{Corollary} \theoremstyle{definition} \newtheorem{definition}[satz]{Definition} \newtheorem*{definition*}{Definition} %\theoremstyle{definition} %\newmdtheoremenv{satz}{Satz}[section] %\newmdtheoremenv{lemma}[satz]{Lemma} %\newmdtheoremenv{korollar}[satz]{Korollar} %\newmdtheoremenv{definition}[satz]{Definition} \newtheorem{bsp}[satz]{Example} \newtheorem{bem}[satz]{Remark} \newtheorem{aufgabe}{Exercise} % 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{headings} \newcommand{\incfig}[1]{% \def\svgwidth{\columnwidth} \import{./figures/}{#1.pdf_tex} } \pdfsuppresswarningpagegroup=1 % 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{simeq}&|&\c{simeq}) } { \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