| @@ -41,6 +41,41 @@ | |||||
| }, | }, | ||||
| } | } | ||||
| \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} | |||||
| }% | |||||
| % PAGE GEOMETRY | % PAGE GEOMETRY | ||||
| \geometry{ | \geometry{ | ||||
| top=1.2in,bottom=1.4in,left=1.3in,right=1.3in, | top=1.2in,bottom=1.4in,left=1.3in,right=1.3in, | ||||
| @@ -1 +1 @@ | |||||
| Subproject commit 868e4cab60566f5d8dfaeb565c65f4041751c40a | |||||
| Subproject commit 40409ed872ac4db0567ba9fac20e2dd955744e27 | |||||
| @@ -0,0 +1,24 @@ | |||||
| \documentclass{lecture} | |||||
| \usepackage{standalone} | |||||
| \usepackage{tikz} | |||||
| \usepackage{subcaption} | |||||
| \title{Groupschemes} | |||||
| \author{Christian Dahlhausen\\[5mm] | |||||
| Transcript of\\[1mm] | |||||
| Christian Merten (\href{mailto:cmerten@mathi.uni-heidelberg.de}{cmerten@mathi.uni-heidelberg.de})\\ | |||||
| } | |||||
| \date{WiSe 2023} | |||||
| \begin{document} | |||||
| \newgeometry{right=15mm, left=15mm} | |||||
| \maketitle | |||||
| \restoregeometry | |||||
| \tableofcontents | |||||
| \input{lec01} | |||||
| \end{document} | |||||
| @@ -0,0 +1,226 @@ | |||||
| \documentclass{lecture} | |||||
| \title{Groupschemes} | |||||
| \begin{document} | |||||
| \chapter{Introduction} | |||||
| Literature: Görtz-Wedhorn: Algebraic Geometry I and II | |||||
| The goal of this lecture is a brief introduction to the theory of group schemes. | |||||
| \begin{definition}[Group object] | |||||
| Let $\mathcal{C}$ be a category with finite products. A \emph{group object in $\mathcal{C}$} is the | |||||
| data $(G, m, e, i)$ where | |||||
| \begin{itemize} | |||||
| \item $G$ is an object of $\mathcal{C}$ | |||||
| \item $m\colon G \times G \to G$ is the multiplication map | |||||
| \item $e\colon 1 \to G$ is the unit | |||||
| \item $i\colon G \to G$ is the inversion map | |||||
| \end{itemize} | |||||
| such that the following diagrams commute | |||||
| \[ | |||||
| \begin{tikzcd} | |||||
| G \times G \times G \arrow{r}{m \times \text{id}} \arrow{d}{\text{id} \times m} & | |||||
| G \times G \arrow{d}{m} \\ | |||||
| G \times G \arrow{r}{m} & G | |||||
| \end{tikzcd}, \quad | |||||
| \begin{tikzcd} | |||||
| G \times G \arrow{r}{m} & G \arrow{dl} \\ | |||||
| G \times 1 \arrow{u}{\text{id} \times e} | |||||
| \end{tikzcd} | |||||
| \text{ and } | |||||
| \begin{tikzcd} | |||||
| G \arrow{r}{\text{id} \times i} \arrow{d} & G \times G \arrow{d}{m} \\ | |||||
| 1 \arrow{r}{e} & G | |||||
| \end{tikzcd} | |||||
| .\] $G$ is called \emph{commutative}, if additionally the diagram | |||||
| \[ | |||||
| \begin{tikzcd} | |||||
| G \times G \arrow{d}{m} \arrow{r}{\text{swap}} & G \times G \arrow{dl}{m} \\ | |||||
| G & | |||||
| \end{tikzcd} | |||||
| \] commutes. | |||||
| A \emph{morphism of group objects} $(G, m, e, i) \to (G', m', e', i')$ | |||||
| is a morphism $f\colon G \to G'$ in $\mathcal{C}$ such that the diagrams | |||||
| \[ | |||||
| \begin{tikzcd} | |||||
| G \times G \arrow{r}{f \times f} \arrow{d}{m} & G' \times G' \arrow{d}{m'} \\ | |||||
| G \arrow{r}{f} & G' | |||||
| \end{tikzcd} | |||||
| , \quad | |||||
| \begin{tikzcd} | |||||
| G \arrow{r}{f} & G' \\ | |||||
| 1 \arrow{u}{e} \arrow[swap]{ur}{e'} | |||||
| \end{tikzcd} | |||||
| \text{ and } | |||||
| \begin{tikzcd} | |||||
| G \arrow{d}{i} \arrow{r}{f} & G' \arrow{d}{i'} \\ | |||||
| G \arrow{r}{f} & G' | |||||
| \end{tikzcd} | |||||
| .\] | |||||
| This defines the category $\operatorname{Grp}(\mathcal{C})$ of group objects in $\mathcal{C}$. | |||||
| \end{definition} | |||||
| \begin{bsp}[] | |||||
| \begin{itemize} | |||||
| \item $\operatorname{Grp}(\text{Set}) \simeq \mathrm{Grp}$ | |||||
| \item $\operatorname{Grp}(\text{Grp}) \simeq \mathrm{Ab}$ | |||||
| \item $\operatorname{Grp}(\text{Ab}) \simeq ?$ | |||||
| \item $\operatorname{Grp}(Top) \simeq \text{topological Groups}$ | |||||
| \item $\operatorname{Grp}(Mfd_{\infty}) \simeq \text{Lie Groups}$ | |||||
| \end{itemize} | |||||
| \end{bsp} | |||||
| \begin{definition}[group scheme] | |||||
| Let $S$ be a scheme. | |||||
| An \emph{S-group scheme} or an \emph{S-group} is a group object in the category of schemes over $S$. | |||||
| \end{definition} | |||||
| \begin{bem} | |||||
| Let $S$ be a scheme. The structure of a group scheme over $S$ on a $S$-scheme $G$ is equivalent to a | |||||
| factorisation of the functor of points | |||||
| \[ | |||||
| \begin{tikzcd} | |||||
| \mathrm{Sch}_S \arrow{r} \arrow[dashed]{d} & \mathrm{Set} \\ | |||||
| \mathrm{Grp} \arrow{ur} | |||||
| \end{tikzcd} | |||||
| \] via the forgetful functor from groups to sets. | |||||
| \end{bem} | |||||
| \begin{bsp} | |||||
| Let $S$ be a scheme. | |||||
| \begin{enumerate}[(i)] | |||||
| \item Let $\Gamma$ be a group. Then $G = \Gamma_S$ where | |||||
| $G(T) \coloneqq \{ \text{ locally constant maps $T \to \Gamma$ }\} $ | |||||
| \item (additive group) $\mathbb{G}_{a, S}$ where $\mathbb{G}_{a,S}(T) = \mathcal{O}_T(T)$. We have | |||||
| $\mathbb{G}_{a, S} \simeq \mathbb{A}^{1}_S$. | |||||
| \item (multiplicative group) $\mathbb{G}_{m, S}$ where | |||||
| $\mathbb{G}_{m, S}(T) \coloneqq \mathcal{O}_{T}(T)^{\times}$. | |||||
| \item (roots of unity) $\mu_{n, S}$ ($n \ge 1$) where | |||||
| $\mu_{n,S}(T) = \{ x \in \mathcal{O}_T(T)^{\times } \mid x^{n} = 1\}$. | |||||
| \item $S = \mathrm{Spec}(R)$. $\mathrm{GL}_{n,R} = \mathrm{Spec}(A)$ where | |||||
| $A = R[T_{ij} \mid 1 \le i, j \le n][\mathrm{det}^{-1}]$ where | |||||
| $\mathrm{det} = \sum_{\sigma \in S_n} \mathrm{sgn}(\sigma) T_{1 \sigma(1)} \cdots T_{n \sigma(n)}$. | |||||
| We obtain $\mathrm{GL}_{n,S}$ by base changing $\mathrm{GL}_{n, \Z}$. | |||||
| \end{enumerate} | |||||
| \end{bsp} | |||||
| \begin{lemma} | |||||
| Let $G$ be a $S$-group. Then | |||||
| $G \to S$ is separated if and only if $S \xrightarrow{e} G$ is a closed immersion. | |||||
| \end{lemma} | |||||
| \begin{definition}[] | |||||
| Let $R$ be a ring. A \emph{(commutative) Hopf-Algebra} over $R$ is a group object | |||||
| in $\mathrm{Alg}_R^{\text{op}}$, where $\mathrm{Alg}_R = \mathrm{CRing}_R$. | |||||
| \end{definition} | |||||
| \begin{bem} | |||||
| For a $R$-Hopf-Algebra $A$, we denote the canonical maps by | |||||
| \begin{itemize} | |||||
| \item $\mu \colon A \to A \otimes_R A $ (Comultiplication) | |||||
| \item $\epsilon \colon A \to R$ (Counit) | |||||
| \item $\iota\colon A \to A$ (Antipode) | |||||
| \end{itemize} | |||||
| A Hopf-Algebra is called \emph{cocommutative}, if the associated group object in $\mathrm{Alg}_R^{\text{op}}$ | |||||
| kommutativ ist. | |||||
| \end{bem} | |||||
| \begin{bem} | |||||
| For a ring $R$, by construction we have an equivalence of categories between | |||||
| the category of affine $R$-group schemes and the opposite category of $R$-Hopf-Algebras. | |||||
| \end{bem} | |||||
| \begin{bsp}[] | |||||
| The additive group $\mathbb{G}_{a,R} = \mathrm{Spec}(R[t])$ | |||||
| has | |||||
| \begin{itemize} | |||||
| \item comultiplication $\mu\colon R[t] \to R[t] \otimes_R R[t], t \mapsto t \otimes 1 - 1 \otimes t$. | |||||
| \item counit $\epsilon\colon R[t] \to R, t \mapsto 0$ | |||||
| \item antipode $\iota\colon R[t] \to R[t], t \mapsto -t$ | |||||
| \end{itemize} | |||||
| \end{bsp} | |||||
| \begin{proof} | |||||
| For any $R$-algebra $A$ we have $\mathbb{G}_{a,R}(A) = A$ and the diagram | |||||
| \[ | |||||
| \begin{tikzcd} | |||||
| \mathbb{G}_{a, R}(A) \times \mathbb{G}_{a, R}(A) \arrow{r}{m} \arrow{d}{\simeq} | |||||
| & \mathbb{G}_{a,R}(A) \arrow{d}{\simeq} \\ | |||||
| \mathrm{Hom}_R(R[s_1, s_2], A) \arrow{r}{\mu^{*}} & \mathrm{Hom}_{R}(R[t], A) | |||||
| \end{tikzcd} | |||||
| .\] | |||||
| \end{proof} | |||||
| \begin{definition} | |||||
| Let $G$ be a $S$-group. A \emph{subgroupscheme} of $G$ is a subscheme $H \subseteq G$ such that | |||||
| \begin{enumerate}[1)] | |||||
| \item for all $T \in \mathrm{Sch}_S$, we have $H(T) \subseteq G(T)$ a subgroup, | |||||
| \item We have commutative diagrams | |||||
| \[ | |||||
| \begin{tikzcd} | |||||
| H \times_S H \arrow{r} \arrow[dashed]{d} & G \times_S G \arrow{r}{m} & G \\ | |||||
| H \arrow{urr} | |||||
| \end{tikzcd} | |||||
| \text{ and } | |||||
| \begin{tikzcd} | |||||
| S \arrow{r}{e} \arrow[dashed]{d} & G \\ | |||||
| H \arrow{ur} | |||||
| \end{tikzcd} | |||||
| \] | |||||
| \end{enumerate} | |||||
| A subgroup scheme $H \subseteq G $ is \emph{normal} if $H(T)$ is a normal subgroup of $G(T)$ for all | |||||
| $T \in \mathrm{Sch}_S$. | |||||
| For a morphism $f\colon G \to G'$ of $S$-groups and a subgroup $H' \subseteq G'$, let | |||||
| $f^{-1}(H')$ be $G \times_G' H$. For $H' = {1} \xrightarrow{e} G'$, we obtain the | |||||
| \emph{kernel of $f$} and the cartesian square | |||||
| \[ | |||||
| \begin{tikzcd} | |||||
| \operatorname{Ker}(f) \arrow{r} \arrow{d} & G \arrow{d}{f} \\ | |||||
| S \arrow{r}{e} & G' | |||||
| \end{tikzcd} | |||||
| .\] | |||||
| \end{definition} | |||||
| \begin{bem}[] | |||||
| The kernel of a homomorphism $f$ of $S$-groups is for any $S$-scheme $T$ given by | |||||
| \[ | |||||
| \text{Ker}(f)(T) = \text{ker}\left(f(T)\right) | |||||
| .\] In particular, the $\text{Ker}(f)$ is normal. | |||||
| \end{bem} | |||||
| \begin{definition} | |||||
| Let $G$ be a $S$-group, $T$ a $S$-scheme and $g \in G(T) = \mathrm{Hom}_S(T, G)$. Define | |||||
| the \emph{lefttranslation by $g$} as | |||||
| \[ | |||||
| \begin{tikzcd} | |||||
| G_T \arrow[dashed]{d}{t_g} & \arrow[swap]{l}{=} T \times_T G_T \arrow{d}{g \times \text{id}} \\ | |||||
| G_T & \arrow{l}{m} G_T \times_T G_T | |||||
| \end{tikzcd} | |||||
| .\] | |||||
| \label{def:left-translation} | |||||
| \end{definition} | |||||
| \begin{bem} | |||||
| In the situation of \ref{def:left-translation}, for every $T' \xrightarrow{f} T$, the map | |||||
| \[ | |||||
| t_g(T')\colon G_T(T') = G(T') \longrightarrow G(T') = G_T(T') | |||||
| \] is the lefttranslation by the element $f^{*}(g) \in G(T')$. | |||||
| \end{bem} | |||||
| \begin{bem} | |||||
| Consider | |||||
| \[ | |||||
| \begin{tikzcd} | |||||
| G \times_S G \arrow{d}{m} \arrow{r}{(g, h) \mapsto (gh, h)} & G \times_S G \arrow{dl}{\mathrm{pr}_1} \\ | |||||
| G | |||||
| \end{tikzcd} | |||||
| .\] Let $\mathcal{P}$ be a property of morphisms stable under base change and composition with | |||||
| isomorphisms. Then whenever $G \to S$ satisfies $\mathcal{P}$, then $m$ satisfies $\mathcal{P}$. | |||||
| \end{bem} | |||||
| \end{document} | |||||
| @@ -0,0 +1,280 @@ | |||||
| \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} | |||||
| \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}} | |||||