%LaTeX package providing some shorthands and quick commands, tailored to certain unspecified fields of maths. %Not checked for conflicts with other packages. %Mostly for personal use. %Will not always be backwards compatible, although every effort will be made so that this is so. %Written by Adam Walsh %Version 1.0 (will not upgrade version numbers for minor command editions) \ProvidesPackage{fancycom}[2018/02/03 v1.0 Fancy maths common commands package] \RequirePackage{amsfonts} \RequirePackage{amsthm} \RequirePackage{amsmath} \RequirePackage{amssymb} \RequirePackage{mathtools} \RequirePackage{calc} \RequirePackage{textcomp} \RequirePackage[nointegrals]{wasysym} \RequirePackage{xparse} %\RequirePackage{mathrsfs} \RequirePackage[mathscr]{euscript} \RequirePackage{tikz-cd} %Textual shortcuts/aids \newcommand{\mbb}[1]{\mathbb{#1}} %Emblacken your symbols! \newcommand{\mbf}[1]{\mathbf{#1}} %Embolden your symbols! \newcommand{\mfk}[1]{\mathfrak{#1}} %Enfraken your symbols! \newcommand{\bsl}{\backslash} %Backslash \newcommand{\cndall}{\,\,\,\forall} %forall given as condition \newcommand{\st}{\,\mid\,} %Such that symbol. : is also used. \newcommand{\what}[1]{& \qquad &\begin{sloppy}\textit{\small\mbox{#1}\small}\end{sloppy}} %Little comment for an align block. Memento of 2007. %Basic symbol extensions \def\bA{\mathbb{A}} \def\bF{\mathbb{F}} \def\bN{\mathbb{N}} \def\bR{\mathbb{R}} \def\bZ{\mathbb{Z}} \def\bQ{\mathbb{Q}} \def\bC{\mathbb{C}} \def\bO{\mathbb{O}} \def\bP{\mathbb{P}} \def\bS{\mathbb{S}} \def\fR{\mathfrak{R}} \def\fZ{\mathfrak{Z}} \def\fQ{\mathfrak{Q}} \def\fC{\mathfrak{C}} \def\fO{\mathfrak{O}} \def\sC{\mathscr{C}} \def\sD{\mathscr{D}} \def\sP{\mathscr{P}} \def\sF{\mathscr{F}} \def\sH{\mathscr{H}} \def\sM{\mathscr{M}} \def\sT{\mathscr{T}} \def\cA{\mathcal{A}} \def\cB{\mathcal{B}} \def\cO{\mathcal{O}} \def\cF{\mathcal{F}} \def\cG{\mathcal{G}} \def\cC{\mathcal{C}} \def\cD{\mathcal{D}} \def\cT{\mathcal{T}} \def\cP{\mathcal{P}} \def\cS{\mathcal{S}} \def\bfz{\mathbf{0}} \def\fkp{\mathfrak{p}} \def\fkq{\mathfrak{q}} \def\fkm{\mathfrak{m}} %Symbol abbreviations \def\lm{\lambda} \def\eps{\epsilon} \def\veps{\varepsilon} \def\vphi{\varphi} \def\ot{\otimes} \def\ptl{\partial} \def\bdry{\partial} \def\nin{\not\in} \newcommand{\isom}{\cong} %Isomorphism \newcommand{\ceq}{\coloneqq} %Defined to be equal to \newcommand{\eqc}{\eqqcolon} %Equal to be defined to \newcommand{\ra}{\rangle} %Right angle bracket \newcommand{\la}{\langle} %Left angle bracket \newcommand{\wto}{\rightharpoonup} %Weak convergence, or just an arrow with the bottom half missing \renewcommand{\to}{\longrightarrow} %A long right arrow, for functions and such \newcommand{\lmto}{\longmapsto} %A right arrow with a vertical tail, for mapping definitions \newcommand{\llim}{\lim\limits} %limit set up so that it always writes the limits underneath %Function constructors \newcommand{\func}[3]{#1\colon#2\to #3} %Generic function definition without mapping \newcommand{\mfunc}[3]{#1\colon#2\mapsto #3} %Generic function definition with only mapping \newcommand{\afunc}[3]{#1\colon#2&\to #3} %Generic function with alignment on arrow \newcommand{\vfunc}[5]{\func{#1}{#2}{#3},\quad#4\longmapsto #5} %Generic function definition with mapping \newcommand{\vafunc}[5]{\afunc{#1}{#2}{#3}\\#4&\longmapsto #5} %Generic function over two lines aligned on arrow %More complex operator constructors \DeclareDocumentCommand\amod{ m g g } {% \IfNoValueTF{#2} {% \pmod{#1} }{% \IfNoValueTF{#3} {% {#1}\pmod{#2} }{% {#1} \,\equiv\, #2\pmod{#3} } } } \DeclareDocumentCommand\ppp{ m g } {% \IfNoValueTF{#2} {% \frac{\partial}{\partial #1} }{% \frac{\partial #1}{\partial #2} } } \newcommand{\pp}[1]{\frac{\partial}{\partial #1}} %For theorems and proofs \newtheorem{Theorem}{Theorem} \newtheorem{Proposition}{Proposition} \newtheorem{Conjecture}[Theorem]{Conjecture} \newtheorem{Lemma}[Theorem]{Lemma} \newtheorem{Corollary}[Theorem]{Corollary} \theoremstyle{remark} \newtheorem{Example}{Example} \newtheorem{Note}{Note} \newtheorem{Question}{Question} \newtheorem{Remark}{Remark} \theoremstyle{definition} \newtheorem{Result}[Theorem]{Result} \newtheorem{Definition}[Theorem]{Definition} %Shorthands \DeclareDocumentCommand\sdef{m}{\begin{Definition}#1\end{Definition}} \DeclareDocumentCommand\sex{m}{\begin{Example}#1\end{Example}} \DeclareDocumentCommand\snote{m}{\begin{Note}#1\end{Note}} \DeclareDocumentCommand\slem{m}{\begin{Lemma}#1\end{Lemma}} \DeclareDocumentCommand\sresult{m}{\begin{Result}#1\end{Result}} \DeclareDocumentCommand\sres{m}{\begin{Result}#1\end{Result}} \DeclareDocumentCommand\sques{m}{\begin{Question}#1\end{Question}} \DeclareDocumentCommand\srem{m}{\begin{Remark}#1\end{Remark}} %Mathematical Operators \DeclareMathOperator{\Ell}{Ell} %Elliptic genera \DeclareMathOperator{\id}{id} \DeclareMathOperator{\Id}{id} \DeclareMathOperator{\Set}{\mathscr{S}et} \DeclareMathOperator{\Hom}{\mathscr{H}om} \DeclareMathOperator{\Top}{\mathscr{T}op} \DeclareMathOperator{\Mod}{\mathbf{Mod}} \DeclareMathOperator{\Comm}{\mathbf{Comm}} \DeclareMathOperator{\Grp}{\mathbf{Grp}} \DeclareMathOperator{\GL}{GL} \DeclareMathOperator{\Obj}{Obj} \DeclareMathOperator{\Spec}{Spec} \DeclareMathOperator{\Specm}{Specm} \DeclareMathOperator{\Min}{min} \DeclareMathOperator{\Ker}{Ker} \DeclareMathOperator{\im}{Im} \DeclareMathOperator{\CoIm}{CoIm} \DeclareMathOperator{\CoKer}{CoKer} \DeclareMathOperator{\Der}{Der} \DeclareMathOperator{\End}{End} % Brackets and braces \DeclareDocumentCommand\braces{}{{\ifnum\z@=`}\fi\@braces} \DeclareDocumentCommand\@braces{ s t\big t\Big t\bigg t\Bigg m m m } { % General braces with automatic and manual sizing \IfBooleanTF{#1} {\left#6\smash{#8}\right#7\vphantom{#8}} { \IfBooleanTF{#2}{\bigl#6{#8}\bigr#7}{ \IfBooleanTF{#3}{\Bigl#6{#8}\Bigr#7}{ \IfBooleanTF{#4}{\biggl#6{#8}\biggr#7}{ \IfBooleanTF{#5}{\Biggl#6{#8}\Biggr#7}{\left#6{#8}\right#7} } } } } \ifnum\z@=`{\fi} } \DeclareDocumentCommand\quantity{}{{\ifnum\z@=`}\fi\@quantity} \DeclareDocumentCommand\@quantity{ t\big t\Big t\bigg t\Bigg g o d() d|| } { % Flexible automatic bracketing of an expression in () or [] or {} or || % Handles manual override of sizing \IfBooleanTF{#1}{\let\ltag\bigl \let\rtag\bigr}{ \IfBooleanTF{#2}{\let\ltag\Bigl \let\rtag\Bigr}{ \IfBooleanTF{#3}{\let\ltag\biggl \let\rtag\biggr}{ \IfBooleanTF{#4} {\let\ltag\Biggl \let\rtag\Biggr} {\let\ltag\left \let\rtag\right} } } } % Handles actual bracketing \IfNoValueTF{#5}{ \IfNoValueTF{#6}{ \IfNoValueTF{#7}{ \IfNoValueTF{#8} {()} {\ltag\lvert{#8}\rtag\rvert} } {\ltag(#7\rtag) \IfNoValueTF{#8}{}{|#8|}} } {\ltag[#6\rtag] \IfNoValueTF{#7}{}{(#7)} \IfNoValueTF{#8}{}{|#8|}} } {\ltag\lbrace#5\rtag\rbrace \IfNoValueTF{#6}{}{[#6]} \IfNoValueTF{#7}{}{(#7)} \IfNoValueTF{#8}{}{|#8|}} \ifnum\z@=`{\fi} } \DeclareDocumentCommand\qty{}{\quantity} % Shorthand for \quantity \DeclareDocumentCommand\pqty{ l m }{\braces#1{\lparen}{\rparen}{#2}} \DeclareDocumentCommand\bqty{ l m }{\braces#1{\lbrack}{\rbrack}{#2}} \DeclareDocumentCommand\Bqty{ l m }{\braces#1{\lbrace}{\rbrace}{#2}} \DeclareDocumentCommand\vqty{ l m }{\braces#1{\lvert}{\rvert}{#2}} %Matrix constructors \DeclareDocumentCommand\pmqty{m}{\begin{pmatrix}#1\end{pmatrix}} \DeclareDocumentCommand\Pmqty{m}{\left\lgroup\begin{matrix}#1\end{matrix}\right\rgroup} \DeclareDocumentCommand\bmqty{m}{\begin{bmatrix}#1\end{bmatrix}} \DeclareDocumentCommand\Bmqty{m}{\begin{Bmatrix}#1\end{Bmatrix}} \DeclareDocumentCommand\sbmqty{m}{\left[\begin{smallmatrix}#1\end{smallmatrix}\right]} \DeclareDocumentCommand\vmqty{m}{\begin{vmatrix}#1\end{vmatrix}} \DeclareDocumentCommand\matrixquantity{}{{\ifnum\z@=`}\fi\@matrixquantity} \DeclareDocumentCommand\@matrixquantity{ s g o d() d|| } { \mathord{ \IfNoValueTF{#2} { \IfNoValueTF{#3} { \IfNoValueTF{#4} { \IfNoValueTF{#5} {()} {\vmqty{#5}} } { \IfBooleanTF{#1} {\Pmqty{#4}} {\pmqty{#4}} \IfNoValueTF{#5}{}{|#5|} } } {\bmqty{#3} \IfNoValueTF{#4}{}{(#4)} \IfNoValueTF{#5}{}{|#5|}} } {\begin{matrix}#2\end{matrix} \IfNoValueTF{#3}{}{[#3]} \IfNoValueTF{#4}{}{(#4)} \IfNoValueTF{#5}{}{|#5|}} } \ifnum\z@=`{\fi} } \DeclareDocumentCommand\mqty{}{\matrixquantity} % Shorthand for \matrixquantity \DeclareDocumentCommand\matrixdeterminant{m}{\vmqty{#1}} % Matrix determinant \DeclareDocumentCommand\mdet{}{\matrixdeterminant} % Shorthand for matrix determinant % Quick quad text (math-mode text with \quad spacing) \DeclareDocumentCommand\qqtext{ s m }{\IfBooleanTF{#1}{}{\quad}\text{#2}\quad} \DeclareDocumentCommand\qq{}{\qqtext} \DeclareDocumentCommand\qcomma{}{,\quad} \DeclareDocumentCommand\qc{}{\qcomma} \DeclareDocumentCommand\qif{s}{\IfBooleanTF{#1}{}{\quad}\text{if}\quad} \DeclareDocumentCommand\qthen{s}{\IfBooleanTF{#1}{}{\quad}\text{then}\quad} \DeclareDocumentCommand\qelse{s}{\IfBooleanTF{#1}{}{\quad}\text{else}\quad} \DeclareDocumentCommand\qotherwise{s}{\IfBooleanTF{#1}{}{\quad}\text{otherwise}\quad} \DeclareDocumentCommand\qunless{s}{\IfBooleanTF{#1}{}{\quad}\text{unless}\quad} \DeclareDocumentCommand\qgiven{s}{\IfBooleanTF{#1}{}{\quad}\text{given}\quad} \DeclareDocumentCommand\qusing{s}{\IfBooleanTF{#1}{}{\quad}\text{using}\quad} \DeclareDocumentCommand\qassume{s}{\IfBooleanTF{#1}{}{\quad}\text{assume}\quad} \DeclareDocumentCommand\qsince{s}{\IfBooleanTF{#1}{}{\quad}\text{since}\quad} \DeclareDocumentCommand\qlet{s}{\IfBooleanTF{#1}{}{\quad}\text{let}\quad} \DeclareDocumentCommand\qfor{s}{\IfBooleanTF{#1}{}{\quad}\text{for}\quad} \DeclareDocumentCommand\qall{s}{\IfBooleanTF{#1}{}{\quad}\text{all}\quad} \DeclareDocumentCommand\qeven{s}{\IfBooleanTF{#1}{}{\quad}\text{even}\quad} \DeclareDocumentCommand\qodd{s}{\IfBooleanTF{#1}{}{\quad}\text{odd}\quad} \DeclareDocumentCommand\qinteger{s}{\IfBooleanTF{#1}{}{\quad}\text{integer}\quad} \DeclareDocumentCommand\qand{s}{\IfBooleanTF{#1}{}{\quad}\text{and}\quad} \DeclareDocumentCommand\qor{s}{\IfBooleanTF{#1}{}{\quad}\text{or}\quad} \DeclareDocumentCommand\qas{s}{\IfBooleanTF{#1}{}{\quad}\text{as}\quad} \DeclareDocumentCommand\qin{s}{\IfBooleanTF{#1}{}{\quad}\text{in}\quad} \DeclareDocumentCommand\qcc{s}{\IfBooleanTF{#1}{}{\quad}\text{c.c.}\quad}