__HEADER__(Math Operator Package) %Provides some commonly used Operators used in the write-ups of my lecture notes \RequirePackage{xkeyval} __LANGUAGE_OPTIONS_X__ __END_OPTIONS_X__ %%%%%Package dependencies \RequirePackage{amsmath} \RequirePackage{bbm} \RequirePackage{mathtools} %%%%Different types of operator wrappers: % For simple math operators that are just to be printed as their name \newcommand\DeclareSimpleMathOperator[1]{ \expandafter\providecommand\csname #1\endcsname{\operatorname{#1}} } %%%For distributions %Introduce synonym for \operatorname \newcommand__PACKAGE_MACRO__(distribution)[1]{\operatorname{#1}} %Easily declare new distributions \newcommand\DeclareDistribution[1]{\expandafter\def\csname #1\endcsname{__PACKAGE_MACRO__(distribution){#1}}} %%%For categories %Introduce synonym for \operatorname \newcommand__PACKAGE_MACRO__(category)[1]{\operatorname{\textbf{#1}}} %Easily declare new categories \newcommand\DeclareCategory[1]{\expandafter\def\csname #1\endcsname{__PACKAGE_MACRO__(category){#1}}} %%%%%%%%%%% Operators %Basic commands \DeclareSimpleMathOperator{id} \DeclareSimpleMathOperator{im} \DeclareSimpleMathOperator{Bild} \DeclareSimpleMathOperator{dom} \DeclareSimpleMathOperator{Span} \DeclareSimpleMathOperator{Aut} \DeclareMathOperator{\rhs}{RHS} %Right hand side of equation \DeclareMathOperator{\lhs}{LHS} %Left hand side of equation %%Provide \ggT \gcd \kgV \lcm for 'greatest common denominator' and 'least common multiple' % \ggT und \gcd, as well as \kgV and \lcm are synonyms and language-aware, so that % e.g. when the german language option is loaded, even % \lcm would print 'kgV' % The starred versions of the four commands will ignore the language option and print their % exact names (without the *, of course) \DeclareMathOperator{\@__PACKAGE_PREFIX__ggT}{ggT} \DeclareMathOperator{\@@__PACKAGE_PREFIX__ggT}{\if@__PACKAGE_PREFIX__english gcd\else ggT\fi} \def\ggT{\@ifstar\@__PACKAGE_PREFIX__ggT\@@__PACKAGE_PREFIX__ggT} \DeclareMathOperator{\@__PACKAGE_PREFIX__gcd}{gcd} \DeclareMathOperator{\@@__PACKAGE_PREFIX__gcd}{\if@__PACKAGE_PREFIX__english gcd\else ggT\fi} \def\gcd{\@ifstar\@__PACKAGE_PREFIX__gcd\@@__PACKAGE_PREFIX__gcd} \DeclareMathOperator{\@__PACKAGE_PREFIX__kgV}{kgV} \DeclareMathOperator{\@@__PACKAGE_PREFIX__kgV}{\if@__PACKAGE_PREFIX__english lcm\else kgV\fi} \def\kgV{\@ifstar\@__PACKAGE_PREFIX__kgV\@@__PACKAGE_PREFIX__kgV} \DeclareMathOperator{\@__PACKAGE_PREFIX__lcm}{lcm} \DeclareMathOperator{\@@__PACKAGE_PREFIX__lcm}{\if@__PACKAGE_PREFIX__english lcm\else kgV\fi} \def\lcm{\@ifstar\@__PACKAGE_PREFIX__lcm\@@__PACKAGE_PREFIX__lcm} %Complex numbers \DeclareMathOperator{__PACKAGE_MACRO__(impart)}{Im} \renewcommand\Im__PACKAGE_MACRO__(impart) \DeclareMathOperator{__PACKAGE_MACRO__(repart)}{Re} \renewcommand\Re__PACKAGE_MACRO__(repart) %Linear Algebra \DeclareSimpleMathOperator{Sym} \DeclareSimpleMathOperator{supp} \DeclareSimpleMathOperator{sgn} \DeclareSimpleMathOperator{coker} \DeclareSimpleMathOperator{rank} \DeclareSimpleMathOperator{rk} \DeclareSimpleMathOperator{Mat} \DeclareSimpleMathOperator{ev} \DeclareSimpleMathOperator{tr} \DeclareSimpleMathOperator{GL} \DeclareSimpleMathOperator{PGL} %Algebra \DeclareSimpleMathOperator{Quot} \DeclareSimpleMathOperator{rad} \DeclareSimpleMathOperator{Spec} \DeclareSimpleMathOperator{Frac} \DeclareSimpleMathOperator{Gal} \DeclareSimpleMathOperator{Ext} \DeclareSimpleMathOperator{Tor} \DeclareSimpleMathOperator{MaxSpec} \DeclareSimpleMathOperator{Sh} \DeclareSimpleMathOperator{Proj} \DeclareSimpleMathOperator{QCoh} \DeclareSimpleMathOperator{Fun} \DeclareMathOperator{\Nil}{\mathcal{N}il} \DeclareMathOperator{\Ouv}{\mathcal{O}uv} \DeclareMathOperator{\PreSh}{Pre-Sh} \newcommand{\tensor}{\otimes} %Synonym for tensoring %Analysis \DeclareSimpleMathOperator{dx} \DeclareSimpleMathOperator{dy} \DeclareSimpleMathOperator{dz} \DeclareSimpleMathOperator{dt} %Sets \DeclareSimpleMathOperator{conv} \DeclareSimpleMathOperator{dist} \DeclareSimpleMathOperator{diam} %%Stochastic (Algorithmische Mathematik II) \DeclareDistribution{Bin} \DeclareDistribution{Ber} \DeclareDistribution{Geo} \DeclareDistribution{Poi} \DeclareDistribution{Unif} \DeclareDistribution{Var} \DeclareDistribution{Cov} %Topology \DeclareSimpleMathOperator{pr} \def\twedge{\vee} % Semantically correct macros for wedge product \def\tsmash{\wedge} % Semantically correct macro for smash product \DeclareSimpleMathOperator{sing} %Category Theory \DeclareSimpleMathOperator{Ob} \DeclareSimpleMathOperator{Hom} \DeclareSimpleMathOperator{Mor} \DeclareSimpleMathOperator{End} \DeclareSimpleMathOperator{colim} %Categories \DeclareCategory{Top} \DeclareCategory{hTop} \DeclareCategory{Set} \DeclareCategory{CHaus} \DeclareCategory{Grp} \DeclareCategory{Ab} \DeclareCategory{CRing} \DeclareCategory{Ring} \DeclareCategory{Vect} \DeclareCategory{Fin} \DeclareCategory{Ab} \DeclareCategory{Cat} \DeclareCategory{Mod} \DeclareCategory{AffVar} \DeclareCategory{Alg} \DeclareCategory{Field} \DeclareCategory{Sch} %Set theory \DeclareSimpleMathOperator{card} \DeclareSimpleMathOperator{Cd} \DeclareSimpleMathOperator{Ord} \DeclareSimpleMathOperator{otp} \DeclareSimpleMathOperator{Card} %%Galoiskohomologie \DeclareSimpleMathOperator{Br} \DeclareSimpleMathOperator{EXT} \DeclareSimpleMathOperator{Ind} \DeclareSimpleMathOperator{Char} \DeclareSimpleMathOperator{res} \DeclareSimpleMathOperator{inf} \DeclareSimpleMathOperator{cov} \newcommand{\del}{\partial} % Semantically correct operator for boundary maps %% Algebraic geometry \DeclareSimpleMathOperator{eq} \DeclareSimpleMathOperator{Idem} \DeclareSimpleMathOperator{Supp} \DeclareSimpleMathOperator{Ann} \DeclareSimpleMathOperator{OC} \DeclareSimpleMathOperator{red} \DeclareSimpleMathOperator{can} \DeclareSimpleMathOperator{Pic} \newcommand\leftadjoint\vdash \newcommand\rightadjoint\dashv % Characteristic function \newcommand*{\cfun}{\ensuremath{\mathbbm{1}}} \newcommand*{\One}{\cfun} %Paired Delimiters \DeclarePairedDelimiter\ceil{\lceil}{\rceil} \DeclarePairedDelimiter\floor{\lfloor}{\rfloor} %Norm and absolute value %Make them scaling by default and have \abs*{} as the non-scaling version of the command \DeclarePairedDelimiter\abs{\lvert}{\rvert} \let\oldabs\abs \def\abs{\@ifstar{\oldabs}{\oldabs*}} \DeclarePairedDelimiter\norm{\lVert}{\rVert} \let\oldnorm\norm \def\norm{\@ifstar{\oldnorm}{\oldnorm*}} \DeclareMathOperator{\amalgprod}{\star} \newcommand\op{\text{op}} \newcommand\opposite{^{\op}} \newcommand\ab{\text{ab}} \newcommand\abelianization{^{\ab}} %Taken from user egreg on % https://tex.stackexchange.com/a/22255 \newcommand\frestriction[2]{{% we make the whole thing an ordinary symbol \left.\kern-\nulldelimiterspace % automatically resize the bar with \right #1 % the function \vphantom{\big|} % pretend it's a little taller at normal size \right|_{#2} % this is the delimiter }} \newcommand\directlimit{\varinjlim} \newcommand\inverselimit{\varprojlim} \DeclareMathOperator*{\freeproduct}{\raisebox{-0.5ex}{\scalebox{2}{$\ast$}}}