add mathsymbindex package

Used to define math operators with automatic indexing
    Still in development, but fully working by now

Build branch v2.5.0 (296afc0) from kesslermaximilian/LatexPackages
This commit is contained in:
Maximilian Keßler 2022-01-11 19:16:17 +00:00
commit a12b342fa0
33 changed files with 3750 additions and 0 deletions

325
build_info.json Normal file
View File

@ -0,0 +1,325 @@
{
"build_time": "",
"source files": {
"version": "v2.5.0",
"commit": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"dirty": false
},
"pytex": {
"version": "v1.2.0-11-gc8deda5",
"commit": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
"tex_sources": [
{
"name": "mkessler-restate.sty",
"source file": "restate.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-enumerate.sty",
"source file": "enumerate.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-removed.sty",
"source file": "removed.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-refproof.sty",
"source file": "refproof.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-bibliography.sty",
"source file": "bibliography.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-gag.sty",
"source file": "gag.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-figures.sty",
"source file": "figures.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-exsheet.sty",
"source file": "exsheet.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-lang-input.sty",
"source file": "lang-input.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-lectures.sty",
"source file": "lectures.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-mathalias.sty",
"source file": "mathalias.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-mathfixes.sty",
"source file": "mathfixes.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-unicodechar.sty",
"source file": "unicodechar.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-mathop.sty",
"source file": "mathop.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-mathfig.sty",
"source file": "mathfig.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-mathsymb.sty",
"source file": "mathsymb.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-faktor.sty",
"source file": "faktor.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-mathfont.sty",
"source file": "mathfont.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-math.sty",
"source file": "math.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-todo.sty",
"source file": "todo.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-counters.sty",
"source file": "counters.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-findpackage.sty",
"source file": "findpackage.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-thmstyle.sty",
"source file": "thmstyle.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-fancythm.sty",
"source file": "fancythm.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-incfig.sty",
"source file": "incfig.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-hypersetup.sty",
"source file": "hypersetup.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-vocab.sty",
"source file": "vocab.pysty",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-script.cls",
"source file": "script.pycls",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-sheet.cls",
"source file": "sheet.pycls",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "translator-proof-dictionary-{language}.dict",
"source file": "proof.pydict",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
},
{
"name": "mkessler-mathsymbindex.sty",
"source file": "mathsymbindex.pysty3",
"build time": "2022/01/11 19:16",
"source version": "v2.5.0",
"source commit hash": "296afc067b98951d55dbff91c1b2fad0b53d8416",
"pytex version": "v1.2.0-11-gc8deda5",
"pytex commit hash": "c8deda5af851b3072a9e235fc5fe317e70cf50e3",
"dirty": false
}
]
}

View File

@ -0,0 +1,313 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'fancythm.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-fancythm}[2022/01/11 - Theorem-Environment Package]
%Provides fancy theorem-like-environments used in the write-ups of my lecture notes
\RequirePackage{xkeyval}
\newif\ifmkessler@fancythm@showstars\mkessler@fancythm@showstarstrue
\newif\ifmkessler@fancythm@showdaggers\mkessler@fancythm@showdaggerstrue
\newif\ifmkessler@fancythm@includestars\mkessler@fancythm@includestarstrue
\newif\ifmkessler@fancythm@includeoral\mkessler@fancythm@includeoraltrue
\newif\ifmkessler@fancythm@markoral\mkessler@fancythm@markoraltrue
\newif\ifmkessler@fancythm@lecturenumbers\mkessler@fancythm@lecturenumberstrue
\newif\ifmkessler@fancythm@numbersmallenvironmentswiththeorem\mkessler@fancythm@numbersmallenvironmentswiththeoremfalse
\newif\ifmkessler@fancythm@numbersmallenvironments\mkessler@fancythm@numbersmallenvironmentsfalse
\newif\ifmkessler@fancythm@defaulttheorems\mkessler@fancythm@defaulttheoremstrue
\define@choicekey*{mkessler-fancythm}{mkessler@fancythm@numbersmallenvironments}[\val\nr]{no,section,theorem}{%
\ifcase\nr\relax
\mkessler@fancythm@numbersmallenvironmentsfalse
\or
\mkessler@fancythm@numbersmallenvironmentstrue
%numbering small environments within sections is forbidden whilst using lecturenumbes
\ifmkessler@fancythm@lecturenumbers
\mkessler@fancythm@numbersmallenvironmentswiththeoremtrue
\else
\mkessler@fancythm@numbersmallenvironmentswiththeoremfalse
\fi
\or
\mkessler@fancythm@numbersmallenvironmentstrue
\mkessler@fancythm@numbersmallenvironmentswiththeoremtrue
\fi
}
\define@choicekey*{mkessler-fancythm}{mkessler@fancythm@lecturenumbers}[\val\nr]{true,false}{%
\ifcase\nr\relax
\mkessler@fancythm@lecturenumberstrue
\else
\mkessler@fancythm@lecturenumbersfalse
\fi
}
\define@choicekey*{mkessler-fancythm}{mkessler@fancythm@defaulttheorems}[\val\nr]{true,false}{%
\ifcase\nr\relax
\mkessler@fancythm@defaulttheoremstrue
\else
\mkessler@fancythm@defaulttheoremsfalse
\fi
}
\define@choicekey*{mkessler-fancythm}{mkessler@fancythm@showdaggers}[\val\nr]{true,false}{%
\ifcase\nr\relax
\mkessler@fancythm@showdaggerstrue
\else
\mkessler@fancythm@showdaggersfalse
\fi
}
\define@choicekey*{mkessler-fancythm}{ownenvironments}[\val\nr]{on, natural, off}{%
\ifcase\nr\relax
\mkessler@fancythm@includestarstrue
\mkessler@fancythm@showstarstrue
\or
\mkessler@fancythm@includestarstrue
\mkessler@fancythm@showstarsfalse
\or
\mkessler@fancythm@includestarsfalse
\mkessler@fancythm@showstarsfalse
\fi
}
\define@choicekey*{mkessler-fancythm}{oralremarks}[\val\nr]{on,natural,off}{%
\ifcase\nr\relax
\mkessler@fancythm@includeoraltrue
\mkessler@fancythm@markoraltrue
\or
\mkessler@fancythm@includeoraltrue
\mkessler@fancythm@markoraltrue
\or
\mkessler@fancythm@includeoralfalse
\fi
}
%%%%% Option section
\newif\ifmkessler@fancythm@english\mkessler@fancythm@englishtrue
\DeclareOptionX{german}{\mkessler@fancythm@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@fancythm@englishfalse}
\DeclareOptionX{english}{\mkessler@fancythm@englishtrue}
\DeclareOptionX{showdaggers}{\setkeys{mkessler-fancythm}{mkessler@fancythm@showdaggers=#1}}
\DeclareOptionX{ownenvironments}{\setkeys{mkessler-fancythm}{ownenvironments=#1}}
\DeclareOptionX{oralremarks}{\setkeys{mkessler-fancythm}{oralremarks=#1}}
\DeclareOptionX{lecturenumbers}{\setkeys{mkessler-fancythm}{mkessler@fancythm@lecturenumbers=#1}}
\DeclareOptionX{numbersmallenvironments}{\setkeys{mkessler-fancythm}{mkessler@fancythm@numbersmallenvironments=#1}}
\DeclareOptionX{defaulttheorems}{\setkeys{mkessler-fancythm}{mkessler@fancythm@defaulttheorems=#1}}
\DeclareOptionX*{\PackageWarning{mkessler-fancythm}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%%%%%%%% Implementation section
%Required Packages and setup
\RequirePackage{amsmath}
\RequirePackage{amsthm}
\RequirePackage{mdframed}
\RequirePackage{thmtools}
\RequirePackage[skins]{tcolorbox}
\RequirePackage{mfirstuc}
\RequirePackage{xifthen}
\RequirePackage{xparse}
\tcbuselibrary{breakable}
% Dummy counters
\declaretheorem[numberwithin=section]{mkessler@fancythm@dummy}
\declaretheorem[numberwithin=mkessler@fancythm@dummy]{mkessler@fancythm@smalldummy}
%%%%% Main part, i.e. providing macros for defining new theorems
%%Environments that are numbered by default have 3 versions:
% - the standard one, for numbering
% - one asterisk, to exclude them from numbering (because they were not numbered in the lecture) -> they will be numbered if 'truenmubers' option is set
% - two asterisks, for marking them as self-added, so they will not be numbered, but will receive a visual asterisk. -> They will be numbered if 'truenumbers' option is set
\NewDocumentCommand{\declarebigtheorem}{O{} O{} m m O{}}{
%First, store the name of the theorem in \theoremname
\ifmkessler@fancythm@english
\ifthenelse{\isempty{#2}}{\def\theoremname{#4}}{\def\theoremname{#2}}
\else
\ifthenelse{\isempty{#1}}{\def\theoremname{#4}}{\def\theoremname{#1}}
\fi
%Define the mane version of the theorem
\ifthenelse{\isempty{#5}}{\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling = mkessler@fancythm@dummy]{#4}}{}
%Define the versions theorem*, theorem**, dtheorem
\ifmkessler@fancythm@lecturenumbers
\ifmkessler@fancythm@numbersmallenvironments
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling=mkessler@fancythm@smalldummy]{#4*}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, sibling=mkessler@fancythm@smalldummy]{#4**}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, sibling=mkessler@fancythm@smalldummy]{d#4}
\else
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, numbered=no]{#4*}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, numbered = no]{#4**}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, numbered = no]{d#4}
\fi
\else
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling=mkessler@fancythm@dummy]{#4*}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, sibling=mkessler@fancythm@dummy]{#4**}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, sibling=mkessler@fancythm@dummy]{d#4}
\fi
\ifmkessler@fancythm@includestars\else\renewenvironment{#4**}{\comment}{\endcomment}\fi
}
\NewDocumentCommand{\declaresmalltheorem}{O{} O{} m m}{
%Get the name of the theorem and store it in \theoremname
\ifmkessler@fancythm@english
\ifthenelse{\isempty{#2}}{\def\theoremname{#4}}{\def\theoremname{#2}}
\else
\ifthenelse{\isempty{#1}}{\def\theoremname{#4}}{\def\theoremname{#1}}
\fi
\ifmkessler@fancythm@numbersmallenvironments
\ifmkessler@fancythm@numbersmallenvironmentswiththeorem
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling = mkessler@fancythm@smalldummy]{#4}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, sibling=mkessler@fancythm@smalldummy]{#4*}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, sibling=mkessler@fancythm@smalldummy]{d#4}
\else
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling=mkessler@fancythm@dummy]{#4}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, sibling=mkessler@fancythm@dummy]{#4*}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, sibling=mkessler@fancythm@dummy]{d#4}
\fi
\else
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, numbered = no]{#4}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, numbered = no]{#4*}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, numbered = no]{d#4}
\fi
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling=mkessler@fancythm@dummy]{n#4}
\ifmkessler@fancythm@includestars\else\renewenvironment{#4*}{\comment}{\endcomment}\fi
}
%%%% If requested, now define some default theoremstyles
\ifmkessler@fancythm@defaulttheorems
\RequirePackage[default styles]{mkessler-thmstyle} % Easy setup of mdframed styles
\declarebigtheorem[Satz][Theorem]{thmredmarginandfill}{theorem} \ifmkessler@fancythm@english\else\AtBeginDocument{\def\theoremautorefname{Satz}}\fi
\declarebigtheorem{thmredmarginandfill}{proposition}
\declarebigtheorem[Korollar]{thmredmarginandfill}{corollary}
\declarebigtheorem{thmorangemarginandfill}{lemma}
\declarebigtheorem[Lemma und Definition][Lemma and Definition]{thmorangemarginbluefill}{lemmadef}
\declarebigtheorem{thmbluemarginandfill}{definition}
\declarebigtheorem[Satz und Definition][Theorem and Definition]{thmredmarginbluefill}{theoremdef}
\declarebigtheorem[Proposition und Definition][Proposition and Definition]{thmredmarginbluefill}{propositiondef}
\declarebigtheorem{thmvioletmarginandfill}{notation}
\declarebigtheorem[zuSatz][Addition to Theorem]{thmredmarginandfill}{additiontheorem}
%%%Environments that are not numbered by default (notation, question, example, remark etc) have two forms:
% - normal form: won't be numbered unless 'mkessler@fancythm@numbersmallenvironments' is set
% - having an asterisk: will be displayed with an asterisk, will be numbered if 'numbersmallenvironments' is set
%Notation
\declaresmalltheorem[Notationsmissbrauch][Abuse of Notation]{thmvioletmargin}{abuse}
\declaresmalltheorem[Beispiel]{thmgreenmargin}{example}
\declaresmalltheorem[Bemerkung]{thmyellowmargin}{remark}
\declaresmalltheorem[Lob]{thmgoldmargin}{praise}
\declaresmalltheorem[Trivial Nonsense][Trivial Nonsense]{thmyellowmargin}{trivial}
\declaresmalltheorem[Frage]{thmblackmarginandfill}{question}
\declaresmalltheorem[Organisatorisches][Organisational stuff]{thmblackmargin}{orga}
\declaresmalltheorem[Fakt]{thmredmargin}{fact}
%%%% Specially treated stuff
\declaresmalltheorem[\ifmkessler@fancythm@markoral Mündliche Anmerkung\else Bemerkung\fi][\ifmkessler@fancythm@markoral Oral remark\else remark\fi]{thmyellowmargin}{oral}
% Option to remove oral remarks when needed
\ifmkessler@fancythm@includeoral\else
\renewenvironment{oral}{\comment}{\endcomment}
\renewenvironment{oral*}{\comment}{\endcomment}
\renewenvironment{doral}{\comment}{\endcomment}
\fi
%%%%%%%% Other mdframed style boxes
\newtcolorbox{recap}{before skip = 0.5cm, after skip = 0.5cm, enhanced, sharp corners = all, colback = white, colframe = gray, toprule=0pt, bottomrule=0pt, leftrule=0pt,rightrule=0pt, overlay = {
\draw[gray, line width = 2pt] (frame.north west) -- ++(0.5cm, 0pt);
\draw[gray, line width=2pt] (frame.south east) -- ++(-0.5cm, 0pt);
\draw[gray, line width=2pt] (frame.north west) -- ++ (0pt, -0.5cm);
\draw[gray, line width=2pt] (frame.south east) -- ++(0pt, 0.5cm);
}}
\newenvironment{moral}{%
\begin{mdframed}[linecolor=green!70!black]%
\bfseries\color{green!50!black}}%
{\end{mdframed}}
\newenvironment{antimoral}{%
\begin{mdframed}[linecolor=red!70!black]%
\bfseries\color{red!50!black}}%
{\end{mdframed}}
%%%%%%%%%%%% Non-mdframed theorems
\theoremstyle{plain}
\newtheorem{variant}{\ifmkessler@fancythm@english Variant\else Variante\fi}
\newtheorem{assumption}{\ifmkessler@fancythm@english Assumption\else Annahme\fi}
\theoremstyle{definition}
\newtheorem*{note}{\ifmkessler@fancythm@english Note\else Anmerkung\fi}
\newtheorem*{warning}{\color{red}\ifmkessler@fancythm@english Warning \else Warnung\fi}
\newtheorem*{goal}{\ifmkessler@fancythm@english Goal \else Ziel\fi}
\newtheorem*{strategy}{\ifmkessler@fancythm@english Proof Strategy \else Beweisstrategie\fi}
\newtheorem*{goal*}{\ifmkessler@fancythm@english Goal* \else Ziel*\fi}
\newtheorem*{problem}{Problem}
\newtheorem*{info}{Information}
\newtheorem*{answer}{\ifmkessler@fancythm@english Answer\else Antwort\fi}
\newtheorem{observe}[theorem]{\ifmkessler@fancythm@english Observe\else Beobachte\fi}
\newtheorem*{property}{\ifmkessler@fancythm@english Property\else Eigenschaft\fi}
\newtheorem*{intuition}{Intuition}
\newtheorem*{recall}{\ifmkessler@fancythm@english Recall\else Erinnerung\fi}
\newtheorem*{idea}{\ifmkessler@fancythm@english Idea\else Idee\fi}
\newtheorem{exercise}{\ifmkessler@fancythm@english Exercise\else Aufgabe\fi}[section]
\newtheorem{reminder}{\ifmkessler@fancythm@english Reminder\else Erinnerung\fi}
\fi % end of default theorems

View File

@ -0,0 +1,137 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'thmstyle.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-thmstyle}[2022/01/11 - Mdframed Styles used for fancythm package]
%%%%% This provides easy-to-use styles, especially for use with the
\RequirePackage{xkeyval}
% A simple option wether to define some default styles
\newif\ifmkessler@thmstyle@defaultstyles\mkessler@thmstyle@defaultstylesfalse
\DeclareOptionX{defaultstyles}{\mkessler@thmstyle@defaultstylestrue}
\DeclareOptionX*{\PackageWarning{mkessler-thmstyle}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
\RequirePackage{amsthm}
\RequirePackage{thmtools}
\RequirePackage{mdframed}
\RequirePackage{xcolor}
\RequirePackage{xparse}
\definecolor{gold}{RGB}{218,165,32}
\mdfsetup{skipabove=8pt,skipbelow=\topskip}
\NewDocumentCommand{\declarefancymdfstyle}{O{} m O{} }{
\if\relax\detokenize{#1}\relax
\mdfdefinestyle{\if\relax\detokenize{#3}\relax md#2margin\else #3\fi}{%
linecolor=#2,
linewidth = 2pt,
leftmargin = 0cm,
rightmargin=0cm,
rightline=false,
topline=false,
bottomline=false
}
\else
\mdfdefinestyle{\if\relax\detokenize{#3}\relax md#2marginand#1fill\else #3\fi}{%
linecolor=#2,
linewidth = 2pt,
leftmargin = 0cm,
rightmargin=0cm,
backgroundcolor=#1,
rightline=false,
topline=false,
bottomline=false
}
\fi
}
\NewDocumentCommand{\declarefancythmstyle}{O{} m O{} }{
\declarefancymdfstyle[#1]{#2}
\if\relax\detokenize{#3}\relax
\if\relax\detokenize{#1}\relax
\declaretheoremstyle[
mdframed={style=
\if\relax\detokenize{#1}\relax md#2margin\else md#2marginand#1fill\fi
},
postheadspace={0.3em},
notefont=\mdseries
]{thm#2margin}
\else
\declaretheoremstyle[
mdframed={style=
\if\relax\detokenize{#1}\relax md#2margin\else md#2marginand#1fill\fi
},
postheadspace={0.3em},
notefont=\mdseries
]{thm#2marginand#1fill}
\fi
\else
\declaretheoremstyle[
mdframed={style=
\if\relax\detokenize{#1}\relax md#2margin\else md#2marginand#1fill\fi
},
postheadspace={0.3em},
notefont=\mdseries
]{#3}
\fi
}
\ifmkessler@thmstyle@defaultstyles
\declarefancythmstyle[red!8]{red}[thmredmarginandfill]
\declarefancythmstyle[orange!10]{orange}[thmorangemarginandfill]
\declarefancythmstyle[blue!7]{blue}[thmbluemarginandfill]
\declarefancythmstyle{green!70!black}[thmgreenmargin]
\declarefancythmstyle{gold}[thmgoldmargin]
\declarefancythmstyle{yellow!80!orange}[thmyellowmargin]
\declarefancythmstyle{gray}[thmgraymargin]
\declarefancythmstyle[violet!7]{violet}[thmvioletmarginandfill]
\declarefancythmstyle{violet}[thmvioletmargin]
\declarefancythmstyle[blue!7]{red}[thmredmarginbluefill]
\declarefancythmstyle{red}[thmredmargin]
\declarefancythmstyle[blue!7]{orange}[thmorangemarginbluefill]
\declarefancythmstyle[violet!20!gray!20]{black}[thmblackmarginandfill]
\declarefancythmstyle{black}[thmblackmargin]
\fi

View File

@ -0,0 +1,123 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the Software), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This class has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'sheet.pycls'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the class again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX class is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the class can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mkessler-sheet}[2022/01/11 - Write up university exercise sheets]
% This is meant as a layouting class for easily writing up exercise sheets.
% Use \course \sheetnumber and \author to set metadata of the document
% Use option [largename] if the author(s) is/are too long and collide in the fancy header
% Use option [german|ngerman|english] to control language appearance
\RequirePackage{scrbase}
\newif\ifmkessler@sheet@english\mkessler@sheet@englishtrue
\DeclareOption{german}{\mkessler@sheet@englishfalse}
\DeclareOption{ngerman}{\mkessler@sheet@englishfalse}
\DeclareOption{english}{\mkessler@sheet@englishtrue}
\newif\ifmkessler@sheet@largename\mkessler@sheet@largenamefalse
\DeclareOption{large-name}{\mkessler@sheet@largenametrue}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
\ProcessOptions\relax
\LoadClass{scrartcl}
\KOMAoption{fontsize}{12pt}
\KOMAoption{parskip}{half-}
\KOMAoption{DIV}{12}
\KOMAoption{headings}{normal}
\RequirePackage{scrlayer-scrpage}
\KOMAoption{headsepline}{:}
\def\@course{\ClassError{mkessler-sheet}{No \noexpand\course given}{Use \noexpand\course{<coursename>} to set the course.}}%
\DeclareRobustCommand*{\course}[1]{\gdef\@course{#1}}
\def\@sheetnumber{\ClassError{mkessler-sheet}{No \noexpand\sheetnumber given}{Use \noexpand\sheetnumber{<num>} to set the current sheetnumber.}}%
\DeclareRobustCommand*{\sheetnumber}[1]{\gdef\@sheetnumber{\ifmkessler@sheet@english Sheet #1 \else Übungsblatt #1\fi}}
\renewcommand*{\@date}{\today}
\renewcommand*{\maketitle}{
\thispagestyle{plain}
{\makebox[0pt][l]{\usekomafont{myauthor}\@author}\hfill\makebox[0pt][r]{\usekomafont{date}\@date}\par}
\vspace{0.5em}
{\centering\usekomafont{title}\@course\par}
{\centering\usekomafont{subtitle}\@sheetnumber \par}
\vspace{2em}
\hrule
\addvspace{2em}
}
\setkomafont{title}{\LARGE\bfseries}
\setkomafont{subtitle}{}
\newkomafont{myauthor}{}
\setkomafont{date}{}
\newkomafont{headtitle}{\itshape}
\setkomafont{pageheadfoot}{\footnotesize}
\setkomafont{descriptionlabel}{\bfseries}
\setkomafont{pagenumber}{\normalsize}
\pagestyle{scrheadings}
\ihead[]{\ifmkessler@sheet@largename \usekomafont{myauthor}\@author \\ \@course\;- \@sheetnumber\else \usekomafont{myauthor}\@author\fi }
\chead[]{\ifmkessler@sheet@largename \else \usekomafont{subtitle}\@course\;- \@sheetnumber\fi}
\ohead[]{\usekomafont{date}\@date}
% Page layout
\setlength{\parindent}{0pt}
\RequirePackage[a4paper, left=2cm, right=2cm, top=3cm, bottom=3cm, head=15.0pt, headsep=10pt]{geometry}
\setlength{\skip\footins}{15pt}
\setlength{\abovecaptionskip}{0cm}
\setlength{\belowcaptionskip}{0cm}
%Für Zeilenabstand 1,5
\RequirePackage[onehalfspacing]{setspace}
\RequirePackage[super]{nth}
\newcommand\nr[1]{
\section*{\ifmkessler@sheet@english\nth{#1} exercise\else #1. Aufgabe\fi}
\setcounter{equation}{0}
}

View File

@ -0,0 +1,154 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'lectures.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-lectures}[2022/01/11 - Package for managing different lectures within a document]
% The core of the lecture command this package provides has been taken from the preamble in
% https://github.com/gillescastel/university-setup
% which is licensed under
%MIT License
%Copyright (c) 2019 Gilles Castel
%Permission is hereby granted, free of charge, to any person obtaining a copy
%of this software and associated documentation files (the "Software"), to deal
%in the Software without restriction, including without limitation the rights
%to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
%copies of the Software, and to permit persons to whom the Software is
%furnished to do so, subject to the following conditions:
%
%The above copyright notice and this permission notice shall be included in all
%copies or substantial portions of the Software.
%
%THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
%IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
%FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
%AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
%LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
%OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
%SOFTWARE.
% This package extends the lecture command to make a summary of lectures at the beginning of a document, and has thus modified this command.
\RequirePackage{xkeyval}
\newif\ifmkessler@lectures@english\mkessler@lectures@englishtrue
\DeclareOptionX{german}{\mkessler@lectures@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@lectures@englishfalse}
\DeclareOptionX{english}{\mkessler@lectures@englishtrue}
\newif\ifmkessler@lectures@fancyhead\mkessler@lectures@fancyheadfalse
\DeclareOptionX{fancyhead}{\mkessler@lectures@fancyheadtrue}
\DeclareOptionX*{\PackageWarning{mkessler-lectures}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%Tocloft package for making a list of lectures
\RequirePackage{tocloft}
%Store name of the summary in a command to use it multiple times
\newcommand\mkessler@lectures@listlecturename{\ifmkessler@lectures@english Summary of lectures\else Übersicht der Vorlesungen\fi}
\newlistof{lecture}{lec}{\mkessler@lectures@listlecturename} % Declare new list of lectures
%Settings how to print the summary
\renewcommand{\cftdot}{}
\renewcommand\cftlecturefont{\normalfont\bfseries}
\renewcommand\cftlecturepagefont{\normalfont\bfseries}
\renewcommand\cftlectitlefont{\Large\bfseries}
\renewcommand\cftbeforelectureskip{1em}
%Command to parse the date
\RequirePackage{xifthen}
\def\testdateparts#1{\dateparts#1\relax}
\def\dateparts#1 #2 #3 #4 #5\relax{
\marginpar{\small\textsf{\mbox{#1 #2 #3 #5}}}
}
%Define the main lecture command to start a new lecture
\def\mkessler@lectures@lectureprefix{\ifmkessler@lectures@english Lecture\else Vorlesung\fi}
\def\@lecture{}%
\RequirePackage{xparse}
% \lecture[keywords]{date}[number]{title}[margin note]
\NewDocumentCommand{\lecture}{ O{} m O{} m O{}}{
\ifthenelse{\isempty{#3}}{\refstepcounter{lecture}}{\setcounter{lecture}{#3}}
%Store lecture name in the macro \@lecture
\ifthenelse{\isempty{#4}}{%
\def\@lecture{\mkessler@lectures@lectureprefix\, \thelecture}%
}{%
\def\@lecture{\mkessler@lectures@lectureprefix\, \thelecture: #4}%
}%
\marginpar{\small\textsf{\parbox{10em}{\mkessler@lectures@lectureprefix\, \thelecture \\#2}}}
%Add lecture as an entry to the lectures file
\addcontentsline{lec}{lecture}{\mkessler@lectures@lectureprefix\,\thelecture\,(#2)}
%If key words are provided, add the key words of the lecture below the entry
\ifthenelse{\isempty{#1}}{}{\addtocontents{lec}{\smallskip\hspace{1.5em}\protect\parbox{\dimexpr\textwidth-\@pnumwidth - 2em}{#1}}}
}
%Provide a command to show the summary of lectures
\DeclareRobustCommand*{\summaryoflectures}{
\phantomsection
\addcontentsline{toc}{section}{\mkessler@lectures@listlecturename}
\thispagestyle{plain}
\listoflecture
}
\ifmkessler@lectures@fancyhead
\RequirePackage{fancyhdr}
\pagestyle{fancy}
% LE: left even
% RO: right odd
% CE, CO: center even, center odd
\fancyhead[RO,LE]{\@lecture} % Right odd, Left even
\fancyhead[RE,LO]{} % Right even, Left odd
%%No fancy headers in the appendix (as there is no lecture)
\let\mkessler@lectures@stored@appendix\appendix
\renewcommand\appendix{
\mkessler@lectures@stored@appendix
\fancyhead[RO,LE]{}
\renewcommand{\headrulewidth}{0pt}
}
\fi

View File

@ -0,0 +1,211 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the Software), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED AS IS, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This class has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'script.pycls'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the class again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX class is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the class can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesClass{mkessler-script}[2022/01/11 - Write up lecture notes as script]
\RequirePackage{xkeyval}
\newif\ifmkessler@script@english\mkessler@script@englishtrue
\DeclareOptionX{german}{\mkessler@script@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@script@englishfalse}
\DeclareOptionX{english}{\mkessler@script@englishtrue}
\newif\ifmkessler@script@showversion\mkessler@script@showversiontrue
\DeclareOptionX{show version}{\mkessler@script@showversiontrue}
\DeclareOptionX{hideversion}{\mkessler@script@showversionfalse}
\newif\ifmkessler@script@fancyfoot\mkessler@script@fancyfootfalse
\DeclareOptionX{fancyfoot}{\mkessler@script@fancyfoottrue}
\newif\ifmkessler@script@gitversion\mkessler@script@gitversionfalse
\DeclareOptionX{git}{\mkessler@script@gitversiontrue}
\DeclareOptionX*{\ClassWarning{mkessler-script}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
\RequirePackage{xifthen}
%%%%Define command to set metainformation of document
%Set the course
\def\@course{\ClassError{mkessler-script}{No \noexpand\course given}{See documentation for details}}%
\DeclareRobustCommand*{\course}[1]{\gdef\@course{#1}}
\def\@lecturer{\ClassError{mkessler-script}{No \noexpand\lecturer given}{See documentation for details}}%
\def\@lecturertitle{}
\DeclareRobustCommand*{\lecturer}[2][]{
\gdef\@lecturer{#2}
\gdef\@lecturertitle{\ifmkessler@script@english Lecturer\else\ifthenelse{\isempty{#1}}{Dozent}{Dozentin}\fi}{}
}
%Set the assistant
\newif\ifmkessler@script@printassistant\mkessler@script@printassistantfalse
\def\@assistant{}%
\def\@assistantitle{}
\DeclareRobustCommand*{\assistant}[2][]{
\mkessler@script@printassistanttrue
\gdef\@assistant{#2}
\gdef\@assistanttitle{\ifmkessler@script@english Assistant\else\ifthenelse{\isempty{#1}}{Assistent}{Assistentin}\fi}
}
%%%%Load base class article
\LoadClass{article}
\ifmkessler@script@showversion
\ifmkessler@script@gitversion
\RequirePackage[dirty={ (local changes have been made!)}]{gitinfo2}
\fi
\fi
%%%%Title
%Define layout of title using course, lecturer, assistant and author, and optionally the current time
\RequirePackage{xparse}
\RequirePackage{datetime}
\renewcommand\@maketitle{%
\newpage
\null
\vskip 2em%
\begin{center}%
\let \footnote \thanks
{\LARGE \@course \par}%
\vskip 1.5em%
{\large
\lineskip .5em%
\begin{tabular}[t]{c}%
\@lecturertitle \\
{\sc \@lecturer} \\
\end{tabular}\par
\ifmkessler@script@printassistant
\vskip 1em%
\begin{tabular}[t]{c}%
\@assistanttitle \\
{\sc \@assistant} \\
\end{tabular}\par
\fi
\vskip 1em%
\begin{tabular}[t]{c}%
\ifmkessler@script@english Notes\else Mitschrift\fi \\
{\sc \@author} \\
\end{tabular}
\par}%
\ifmkessler@script@showversion
\vskip 3em%
\begin{tabular}[t]{c}%
{\small Version} \\
\ifmkessler@script@gitversion
git: \gitFirstTagDescribe\\
\ifmkessler@script@english compiled\else kompiliert\fi:
\fi\today\,\currenttime \\
\end{tabular}\par
\fi
\vskip 4em%
\end{center}%
\par
\vskip 1.5em
}
%%%The following is based on the repository
% https://github.com/gillescastel/university-setup
% but has been modified for own purposes. The original content is distributed under the following license:
%MIT License
%Copyright (c) 2019 Gilles Castel
%Permission is hereby granted, free of charge, to any person obtaining a copy
%of this software and associated documentation files (the "Software"), to deal
%in the Software without restriction, including without limitation the rights
%to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
%copies of the Software, and to permit persons to whom the Software is
%furnished to do so, subject to the following conditions:
%
%The above copyright notice and this permission notice shall be included in all
%copies or substantial portions of the Software.
%
%THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
%IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
%FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
%AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
%LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
%OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
%SOFTWARE.
%%%% These are the fancy headers
\ifmkessler@script@fancyfoot
\RequirePackage{fancyhdr}
\pagestyle{fancy}
% LE: left even
% RO: right odd
% CE, CO: center even, center odd
\fancyhead[RO,LE]{} % Right odd, Left even
\fancyhead[RE,LO]{} % Right even, Left odd
\fancyfoot[RO,LE]{\thepage} % Right odd, Left even
\fancyfoot[RE,LO]{} % Right even, Left odd
\fancyfoot[C]{\leftmark} % Center
\makeatother
\fi
% Fix some stuff
% %http://tex.stackexchange.com/questions/76273/multiple-pdfs-with-page-group-included-in-a-single-page-warning
\pdfsuppresswarningpagegroup=1
% Fix some spacing
% http://tex.stackexchange.com/questions/22119/how-can-i-change-the-spacing-before-theorems-with-amsthm
\def\thm@space@setup{%
\thm@preskip=\parskip \thm@postskip=0pt
}
% Don't indent paragraphs, leave some space between them
\RequirePackage{parskip}
% Hide page number when page is empty
\RequirePackage{emptypage}

86
math/mkessler-faktor.sty Normal file
View File

@ -0,0 +1,86 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'faktor.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-faktor}[2022/01/11 - Faktor package that also handles cofaktors]
% Extension the faktor package for
% - cofaktor command that provides A \ B notation
% - scaling the / in the middle
% - fine positioning of enumerator / denominator
% This is essentially taken from the stackexchange question found at
% https://tex.stackexchange.com/questions/27591/extending-the-faktor-package
% and answered by 'Werner' (https://tex.stackexchange.com/users/5764/werner)
%
% This package only packages the corresponding answer and provides an analoguous way of a \cofactor command
%Dependencies
\RequirePackage{xparse}
\RequirePackage{amssymb} % provides \diagup and \diagdown
\RequirePackage{ifthen} % ifthenelse syntax
\RequirePackage{mathtools}
\DeclareDocumentCommand{\faktor}{s O{0.5} m O{-0.5} m}{% \newfaktor[*][#2]{#3}[#4]{#5} -> #3/#5
\setbox0=\hbox{\ensuremath{#3}}% Store numerator
\setbox1=\hbox{\ensuremath{\diagup}}% Store slash /
\setbox2=\hbox{\ensuremath{#5}}% Store denominator
\raisebox{#2\ht1}{\usebox0}% Numerator
\mkern-5mu\ifthenelse{\equal{#1}{\BooleanTrue}}% Slash /
{\diagup}% regular \faktor slash
{\rotatebox{-44}{\rule[#4\ht2]{0.4pt}{-#4\ht2+#2\ht0+\ht0}}}% tilted rule as a slash
\mkern-4mu%
\raisebox{#4\ht2}{\usebox2}% Denominator
}
\DeclareDocumentCommand{\cofaktor}{s m O{-0.5} m O{0.5}}{% \newfaktor[*][#2]{#3}[#4]{#5} -> #2\#4
\setbox0=\hbox{\ensuremath{#3}}% Store numerator
\setbox1=\hbox{\ensuremath{\diagdown}}% Store slash /
\setbox2=\hbox{\ensuremath{#5}}% Store denominator
\raisebox{#2\ht1}{\usebox0}% Numerator
\mkern-5mu\ifthenelse{\equal{#1}{\BooleanTrue}}% Slash /
{\diagdown}% regular \faktor slash
{\rotatebox{44}{\rule[-#4\ht2]{0.4pt}{#4\ht2-#2\ht0+\ht0}}}% tilted rule as a slash
\mkern-4mu%
\raisebox{#4\ht2}{\usebox2}% Denominator
}

87
math/mkessler-math.sty Normal file
View File

@ -0,0 +1,87 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'math.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-math}[2022/01/11 - Main math package.]
% Collects the basic math packages used for my lecture-note write-ups
% This just imports all the packages I use for writing up mathematics
% Probably, you will just want to load them separately for more
% customization
\RequirePackage{xkeyval}
\newif\ifmkessler@math@english\mkessler@math@englishtrue
\DeclareOptionX{german}{\mkessler@math@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@math@englishfalse}
\DeclareOptionX{english}{\mkessler@math@englishtrue}
\DeclareOptionX*{\PackageWarning{mkessler-math}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%%%% Import the other custom math packages
\RequirePackage{mkessler-mathfont} % Load this first to ensure untouched fonts
\RequirePackage{amsmath}
\RequirePackage{mathtools}
\RequirePackage{amsthm}
\RequirePackage{amssymb}
\RequirePackage{latexsym}
% Für Formeln
\RequirePackage{mathabx}
\RequirePackage{esint}
\RequirePackage{IEEEtrantools}
\RequirePackage[ngerman,ruled,vlined]{algorithm2e}
%%% Importing other custom packages
\RequirePackage{mkessler-faktor}
\RequirePackage{mkessler-mathsymb}
\RequirePackage[basic]{mkessler-mathalias}
% mkessler-mathfont has already been imported
\RequirePackage[\ifmkessler@math@english english\else german\fi]{mkessler-mathop}
\RequirePackage{mkessler-mathfig}
\RequirePackage{mkessler-unicodechar}
\RequirePackage{mkessler-mathfixes} % Load this last since it renews behaviour

View File

@ -0,0 +1,89 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'mathalias.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-mathalias}[2022/01/11 - Easy aliasing for math style commands]
\RequirePackage{xkeyval}
\newif\ifmkessler@mathalias@basic\mkessler@mathalias@basicfalse
\newif\ifmkessler@mathalias@extended\mkessler@mathalias@extendedfalse
\DeclareOptionX{basic}{\mkessler@mathalias@basictrue}
\DeclareOptionX{extended}{\mkessler@mathalias@extendedtrue\mkessler@mathalias@basictrue}
\DeclareOptionX*{\PackageWarning{mkessler-mathalias}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%Usage: \makealiasesforwith\<mathcommand>{<prefix>}{<Set of letters>}
% to declare commands of form \<prefix><Letter> as \<mathcommand>{<Letter>} for each
% of the specfied letters
%
% E.g. \makealiasesforwith\mathcal{c}{ABC} will declare
% \cA \cB \cC \cD as \mathcal{A}, \mathcal{B}, \mathcal{C}
% This is also ensuring math context, so that
% \cA will be valid even in normal text.
\def\makealiasesforwith#1#2#3{
\def\mkessler@mathalias@makealias##1{
\expandafter\def\csname #2##1\endcsname{\ensuremath{#1{##1}}}
}
\def\mkessler@mathalias@recurse##1{
\ifx##1\mkessler@mathalias@dummy\else
\mkessler@mathalias@makealias{##1}\expandafter\mkessler@mathalias@recurse\fi
}
\mkessler@mathalias@recurse #3\mkessler@mathalias@dummy
}
\def\mkessler@mathalias@all{ABCDEFGHIJKLMNOPQRSTUVWXYZ}
\ifmkessler@mathalias@basic
\RequirePackage{amsfonts}
\makealiasesforwith\mathbb{}{CFKNQRZ}
\fi
\ifmkessler@mathalias@extended
\expandafter\makealiasesforwith\expandafter\mathcal\expandafter{\expandafter c\expandafter}\expandafter{\mkessler@mathalias@all}
\expandafter\makealiasesforwith\expandafter\mathfrak\expandafter{\expandafter f\expandafter}\expandafter{\mkessler@mathalias@all}
\expandafter\makealiasesforwith\expandafter\mathbb\expandafter{\expandafter b\expandafter}\expandafter{\mkessler@mathalias@all}
\fi

87
math/mkessler-mathfig.sty Normal file
View File

@ -0,0 +1,87 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'mathfig.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-mathfig}[2022/01/11 - Math figures with TikZ / pgfplots / xy]
% This is just a collection of the packages I use to typeset mathematical figures
% most commonly plots, commutative diagrams or geometry
\RequirePackage{pgfplots} % Plots
\pgfplotsset{compat=1.7}
\RequirePackage{tikz} % Plots / drawings
\usetikzlibrary{calc, intersections, through, quotes, angles, babel, positioning, snakes}
\RequirePackage{tikz-cd} %Commutative diagrams
\RequirePackage{xparse}
%%for small diagrams, similar to tikz-cd
\RequirePackage[all]{xy} % for small diagrams, e.g. arrows
%%% In older versions, you found
% \RequirePackage{xy}
% \xyoption{all}
% here, but this messes with the catcode of the @ sign (which no package should do!)
% so that further parts in this package would get broken
\newcommand\pushoutsymbol{\tikz[baseline=0.5,scale=0.2]{
\draw[-] (0,0) --(0,1) -- (1,1);
\draw (1,0) circle (1.5pt);}
}
\newcommand\pullbacksymbol{\tikz[baseline=0.5,scale=0.2]{
\draw[-] (0,0) --(1,0) -- (1,1);
\draw (0,1) circle (1.5pt);}
}
% This is used in a tikzcd
\NewDocumentCommand\pushout{ O{dr} }{
\arrow[phantom, pos=0.45]{#1}{\pushoutsymbol}
}
% This is used in a tikzcd
\NewDocumentCommand\pullback{ O{dr} }{
\arrow[phantom, pos=0.45]{#1}{\pullbacksymbol}
}

View File

@ -0,0 +1,82 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'mathfixes.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-mathfixes}[2022/01/11 - Hacky math packages for some (custom) fixes]
% This just brings together some (possibly ugly) hacks that I use when writing math. Likely, you do not want to use this except when building around this package (like I did), or already have similar shortcuts
%Proper Degree command
\def\mkessler@mathfixes@degree{\ensuremath{^\circ}}
\AtBeginDocument{\let\degree\mkessler@mathfixes@degree}
% Always put limits under \limit
\let\oldlim\lim\def\lim{\oldlim\limits}
% Print equal sign under subset by default to not confuse people
% (I still write \subset, because this enables me remove this renewcommand and have the default \subset command evaluated instead
\let\mkessler@mathfixes@subseteq\subseteq
\let\mkessler@mathfixes@supseteq\supseteq
\AtBeginDocument{
\let\subset\mkessler@mathfixes@subseteq
\let\supset\mkessler@mathfixes@supseteq
}
%%Renew phi and epsilon to their proper versions, make the old ones available as
% uglyphi and uglyepsilon
\let\mkessler@mathfixes@stored@phi\phi
\let\mkessler@mathfixes@stored@varphi\varphi
\AtBeginDocument{
\let\phi\mkessler@mathfixes@stored@varphi
\let\varphi\mkessler@mathfixes@stored@varphi
\let\uglyphi\mkessler@mathfixes@stored@phi
\let\oldphi\mkessler@mathfixes@stored@phi
\let\goldenratio\mkessler@mathfixes@stored@phi
}
\let\mkessler@mathfixes@stored@epsilon\epsilon
\let\mkessler@mathfixes@stored@varepsilon\varepsilon
\AtBeginDocument{
\let\epsilon\mkessler@mathfixes@stored@varepsilon
\let\uglyepsilon\mkessler@mathfixes@stored@epsilon
\let\oldepsilon\mkessler@mathfixes@stored@epsilon
}

View File

@ -0,0 +1,67 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'mathfont.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-mathfont}[2022/01/11 - Collects several math fonts together]
%%% Store away the several (partially conflicting) fonts in internal macros
\let\mkessler@mathfont@none@mathcal\mathcal
\RequirePackage{mathrsfs}
\let\mkessler@mathfont@mathrsfs@mathscr\mathscr
\RequirePackage[mathscr]{eucal}
\let\mkessler@mathfont@eucal@optionmathscr@mathscr\mathscr
\RequirePackage{amsfonts}
\let\mkessler@mathfont@amsfonts@mathfrak\mathfrak
%%% Provide user commands to internally stored macros
\def\mkessler@mathfont@restorefonts{
\let\mathcal\mkessler@mathfont@none@mathcal % Set \mathcal to default calligrapic
\let\mathfrak\mkessler@mathfont@amsfonts@mathfrak % Set \mathfrak to mathfrak from amsfonts
\let\mathscr\mkessler@mathfont@mathrsfs@mathscr % Set \mathscr to mathscript from mathrsfs package
\let\mathcat\mkessler@mathfont@mathrsfs@mathscr % Set \mathcat to mathscript from mathrsfs package
\let\mathcalo\mkessler@mathfont@eucal@optionmathscr@mathscr % Set \mathcalo (for old calligraphic) to \mathscr from [mathscr]{eucal} package
}
\AtBeginDocument{\mkessler@mathfont@restorefonts}

279
math/mkessler-mathop.sty Normal file
View File

@ -0,0 +1,279 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'mathop.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-mathop}[2022/01/11 - Math Operator Package]
%Provides some commonly used Operators used in the write-ups of my lecture notes
\RequirePackage{xkeyval}
\newif\ifmkessler@mathop@english\mkessler@mathop@englishtrue
\DeclareOptionX{german}{\mkessler@mathop@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@mathop@englishfalse}
\DeclareOptionX{english}{\mkessler@mathop@englishtrue}
\DeclareOptionX*{\PackageWarning{mkessler-mathop}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%%%%%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\mkessler@mathop@distribution[1]{\operatorname{#1}}
%Easily declare new distributions
\newcommand\DeclareDistribution[1]{\expandafter\def\csname #1\endcsname{\mkessler@mathop@distribution{#1}}}
%%%For categories
%Introduce synonym for \operatorname
\newcommand\mkessler@mathop@category[1]{\operatorname{\textbf{#1}}}
%Easily declare new categories
\newcommand\DeclareCategory[1]{\expandafter\def\csname #1\endcsname{\mkessler@mathop@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{\@mkessler@mathop@ggT}{ggT}
\DeclareMathOperator{\@@mkessler@mathop@ggT}{\if@mkessler@mathop@english gcd\else ggT\fi}
\def\ggT{\@ifstar\@mkessler@mathop@ggT\@@mkessler@mathop@ggT}
\DeclareMathOperator{\@mkessler@mathop@gcd}{gcd}
\DeclareMathOperator{\@@mkessler@mathop@gcd}{\if@mkessler@mathop@english gcd\else ggT\fi}
\def\gcd{\@ifstar\@mkessler@mathop@gcd\@@mkessler@mathop@gcd}
\DeclareMathOperator{\@mkessler@mathop@kgV}{kgV}
\DeclareMathOperator{\@@mkessler@mathop@kgV}{\if@mkessler@mathop@english lcm\else kgV\fi}
\def\kgV{\@ifstar\@mkessler@mathop@kgV\@@mkessler@mathop@kgV}
\DeclareMathOperator{\@mkessler@mathop@lcm}{lcm}
\DeclareMathOperator{\@@mkessler@mathop@lcm}{\if@mkessler@mathop@english lcm\else kgV\fi}
\def\lcm{\@ifstar\@mkessler@mathop@lcm\@@mkessler@mathop@lcm}
%Complex numbers
\DeclareMathOperator{\mkessler@mathop@impart}{Im}
\renewcommand\Im\mkessler@mathop@impart
\DeclareMathOperator{\mkessler@mathop@repart}{Re}
\renewcommand\Re\mkessler@mathop@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}
\DeclareSimpleMathOperator{cell}
%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{GrAb}
\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$}}}

View File

@ -0,0 +1,90 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'mathsymb.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-mathsymb}[2022/01/11 - Some extra math-related symbols.]
% A collection of math-related symbols / tools I often use, mainly collected together from Stack Overflow or hacked together myself
%Dependencies
\RequirePackage{tikz}
% noloc command by
% user 'egreg' (https://tex.stackexchange.com/users/4427/egreg)
% posted on
% https://tex.stackexchange.com/questions/546713/spacing-in-colon (Spacing in \colon)
% Prints a mirrored \colon correctly
\RequirePackage{amsmath}
\newcommand\noloc{%
\nobreak
\mspace{6mu plus 1mu}
{:}
\nonscript\mkern-\thinmuskip
\mathpunct{}
\mspace{2mu}
}
% \contra command from Gilles Castel, taken from
% https://github.com/gillescastel/university-setup/blob/master/preamble.tex
% (retrieved 2021-09-08)
% The preamble linked above is MIT-licensed by Gilles Castel
\RequirePackage{stmaryrd} % for \lightning
\RequirePackage{graphicx}
\newcommand\contra{\scalebox{1.5}{$\lightning$}}
%Print a warning sign
\RequirePackage{pgf}
\newcommand\Warning{%
\makebox[1.4em][c]{%
\makebox[0pt][c]{\raisebox{.1em}{\small!}}%
\makebox[0pt][c]{\color{red}\Large$\bigtriangleup$}}}%
%Make circled symbols
\newcommand*\circled[1]{\tikz[baseline=(char.base)]{
\node[shape=circle,draw,inner sep=2pt] (char) {#1};}
}
% When dealing with chain complexes, one often uses a bullet as placeholder for the index to mean the whole chain:
\newcommand\chainbullet{\bullet}

View File

@ -0,0 +1,160 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'mathsymbindex.pysty3'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesExplPackage{mkessler-mathsymbindex}{2022/01/11}{v2.5.0}{Declaring of math symbols with automatic indexing}
\RequirePackage{imakeidx}
\RequirePackage{amsmath}
\RequirePackage{xparse}
% Keys used for declaring symbols
\keys_define:nn { symbol }
{
operator .tl_set:N = \l_symbol_operator_tl,
operator .default:n = \use:n,
formula .tl_set:N = \l_symbol_formula_tl,
formula .default:n = \c_novalue_tl,
ordered .tl_set:N = \l_symbol_ordered_tl,
ordered .default:n = \c_novalue_tl,
description .tl_set:N = \l_symbol_description_tl,
description .default:n = \c_novalue_tl,
group .tl_set:N = \l_symbol_group_tl,
group .default:n = \c_novalue_tl
}
% Core macro not be used publicly directly. Usage:
% #1 = indexname / group
% #2 = symbolname,
% #3 = description
% #4 = operator to apply (one argument) - can be \use:n for identity
% #5 = substitution when called
% #6 = ordering in index
\cs_new_protected:Nn\symbol_define:nnnnnn
{
\bool_new:c { used_#2 }
\cs_new_protected:cn { symbol_#2: }
{
#4{#5}
\bool_if:cF { used_#2 }
{
\index[#1]
{
#6
@
$#4{#5}$
#3
}
\bool_gset_true:c { used_#2 }
}
}
\exp_args:Nc\gdef{#2}
{
\use:c { symbol_#2: }
}
}
\cs_generate_variant:Nn\symbol_define:nnnnnn { V n V V V V }
% Main package interface
\NewDocumentCommand{\DeclareSymbol}{ O{} m}
{
\keys_set:nn{ symbol }
{
operator,
formula,
ordered,
description,
group
}
\keys_set:nn{ symbol }{#1}
\tl_if_eq:NnTF\l_symbol_description_tl{\c_novalue_tl}
{
\tl_set:Nn\l_symbol_description_tl { \c_empty_tl }
}
{
\tl_put_left:Nn\l_symbol_description_tl { ,\c_space_tl }
}
\tl_if_eq:NnT\l_symbol_formula_tl{\c_novalue_tl}
{
\tl_set:Nn\l_symbol_formula_tl {#2}
}
\tl_if_eq:NnT\l_symbol_ordered_tl{\c_novalue_tl}
{
\tl_set:Nn\l_symbol_ordered_tl {#2}
}
\symbol_define:VnVVVV
\l_symbol_group_tl
{
#2
}
\l_symbol_description_tl
\l_symbol_operator_tl
\l_symbol_formula_tl
\l_symbol_ordered_tl
}
%% Wrapper commands specific for defining categories
\NewDocumentCommand{\category}{ m }
{
\operatorname{\textbf{#1}}
}
\NewDocumentCommand{\DeclareCategory}{ O{} m }
{
\DeclareSymbol[group = categories, #1]{#2}
}
\NewDocumentCommand{\DeclareSimpleCategory}{ o m }
{
\IfValueTF{#1}
{
\DeclareCategory[operator = \category, description = #1]{#2}
}
{
\DeclareCategory[operator = \category]{#2}
}
}

View File

@ -0,0 +1,73 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'unicodechar.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-unicodechar}[2022/01/11 - Wrapper for the newunicodechare package with some defined unicode symbols.]
% This is just a simple package loading the newunicodechar package and defining the common unicode symbols i regularly use for typesetting mathematics
\RequirePackage{newunicodechar}
\newunicodechar{α}{\ensuremath\alpha}
\newunicodechar{β}{\ensuremath\beta}
\newunicodechar{γ}{\ensuremath\gamma}
\newunicodechar{δ}{\ensuremath\delta}
\newunicodechar{ε}{\ensuremath\epsilon}
\newunicodechar{ζ}{\ensuremath\zeta}
\newunicodechar{η}{\ensuremath\eta}
\newunicodechar{θ}{\ensuremath\theta}
\newunicodechar{ι}{\ensuremath\iota}
\newunicodechar{κ}{\ensuremath\kappa}
\newunicodechar{λ}{\ensuremath\lambda}
\newunicodechar{μ}{\ensuremath\mu}
\newunicodechar{ν}{\ensuremath\nu}
\newunicodechar{ξ}{\ensuremath\xi}
\newcommand\omicron{o}\newunicodechar{ο}{\ensuremath\omicron} % For semantical use
\newunicodechar{π}{\ensuremath\pi}
\newunicodechar{ρ}{\ensuremath\rho}
\newunicodechar{σ}{\ensuremath\sigma}
\newunicodechar{τ}{\ensuremath\tau}
\newunicodechar{υ}{\ensuremath\upsilon}
\newunicodechar{φ}{\ensuremath\phi}
\newunicodechar{χ}{\ensuremath\chi}
\newunicodechar{ψ}{\ensuremath\psi}
\newunicodechar{ω}{\ensuremath\omega}

View File

@ -0,0 +1,69 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'hypersetup.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-hypersetup}[2022/01/11 - Package for setting up hyperref, cleveref and some default hyperref colors]
\RequirePackage{xkeyval}
\newif\ifmkessler@hypersetup@cleveref\mkessler@hypersetup@clevereffalse
\DeclareOptionX{cleveref}{\mkessler@hypersetup@clevereftrue}
\DeclareOptionX*{\PackageWarning{mkessler-hypersetup}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%%%Hyperref and setup
\RequirePackage{xcolor} % To compute the colors below
\RequirePackage{etoolbox} % Checking for defined commands
\def\mkessler@hypersetup@exec{
\RequirePackage{hyperref} % Hyperlinks
\ifmkessler@hypersetup@cleveref
\RequirePackage{cleveref} % Better referencing
\fi
\hypersetup{colorlinks, citecolor=violet, urlcolor=blue!80!black, linkcolor=red!50!black, pdfauthor=\@author, pdftitle=\ifdef{\@course}{\@course}{\@title}}
}
\AtEndPreamble{
\mkessler@hypersetup@exec
}

89
misc/mkessler-incfig.sty Normal file
View File

@ -0,0 +1,89 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'incfig.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-incfig}[2022/01/11 - Figure support for inkscape figures by Gilles Castell]
%%%%%%%%
% This is just a small package bundling the figure support for the inkscape figures by Gilles Castel. The setup can be originally found in the preamble
% https://github.com/gillescastel/university-setup
% and is specifically designed to work with the inkscape figures explained at
% https://castel.dev/post/lecture-notes-2/
% These are licensed under
%MIT License
%Copyright (c) 2019 Gilles Castel
%Permission is hereby granted, free of charge, to any person obtaining a copy
%of this software and associated documentation files (the "Software"), to deal
%in the Software without restriction, including without limitation the rights
%to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
%copies of the Software, and to permit persons to whom the Software is
%furnished to do so, subject to the following conditions:
%
%The above copyright notice and this permission notice shall be included in all
%copies or substantial portions of the Software.
%
%THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
%IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
%FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
%AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
%LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
%OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
%SOFTWARE.
% This package extends the lecture command to make a summary of lectures at the beginning of a document, and has thus modified this command.
% Note that this package is NOT associated to Gilles Castel in any official way
% Figure support as explained in my blog post.
\RequirePackage{import}
\RequirePackage{xifthen}
\RequirePackage{pdfpages}
\RequirePackage{transparent}
\newcommand{\incfig}[1]{%
\def\svgwidth{\columnwidth}
\import{figures/}{#1.pdf_tex}
}

89
misc/mkessler-vocab.sty Normal file
View File

@ -0,0 +1,89 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'vocab.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-vocab}[2022/01/11 - Package for emphasizing vocabulary]
%%Provides a \vocab<[name in index]>{vocabulary} command to print vocabulary in bold blue and automatically index it.
\RequirePackage{xkeyval}
\newif\ifmkessler@vocab@english\mkessler@vocab@englishtrue
\DeclareOptionX{german}{\mkessler@vocab@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@vocab@englishfalse}
\DeclareOptionX{english}{\mkessler@vocab@englishtrue}
\newif\ifmkessler@vocab@index\mkessler@vocab@indexfalse
\DeclareOptionX{index}{\mkessler@vocab@indextrue}
\DeclareOptionX{noindex}{\mkessler@vocab@indexfalse}
\DeclareOptionX*{\PackageWarning{mkessler-vocab}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%%%%Management of vocabulary and corresponding index
\RequirePackage{xparse}
\RequirePackage{xcolor}
\ifmkessler@vocab@index
\RequirePackage{imakeidx}
\makeindex[name=vocabindex, columns=2, title=\ifmkessler@vocab@english Index\else Stichwortverzeichnis\fi, intoc]
%Emphasize \vocabulary
\RequirePackage{expl3}
\ExplSyntaxOn
\NewDocumentCommand{\vocab}{O{} m}{
\textbf{\color{blue} #2}%
\if\relax\detokenize{#1}\relax%
\index[vocabindex]{\text_titlecase_first:n{#2}} % true branch: #1 was empty
\else
\index[vocabindex]{#1} % false branch: #1 was supplied
\fi
}
\ExplSyntaxOff
\newcommand\printvocabindex{
\printindex[vocabindex]
}
\else
\NewDocumentCommand{\vocab}{O{} m }{
\textbf{\color{blue} #2}
}
\fi

View File

@ -0,0 +1,56 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'counters.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-counters}[2022/01/11 - Write LaTeX counters to auxiliary file]
\RequirePackage{etoolbox}
\newwrite\mkessler@counters@out
\immediate\openout\mkessler@counters@out\jobname.cnt\relax
\AtBeginDocument{
\let\mkessler@counters@saved@stepcounter\stepcounter
\def\stepcounter#1{
\mkessler@counters@saved@stepcounter{#1}
\immediate\write\mkessler@counters@out{#1: \csname the#1\endcsname}}
}

View File

@ -0,0 +1,87 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'findpackage.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-findpackage}[2022/01/11 - Find a package that provides some command]
% This is just a quick packaging of the post by
% 'Martin Nyolt' (https://tex.stackexchange.com/users/78783/martin-nyolt)
% found at
% https://tex.stackexchange.com/users/78783/martin-nyolt
% Note that SO answers are by default CC BY-SA 3.0 licensed, see
% https://creativecommons.org/licenses/by-sa/3.0/
\def\find@load#1[#2]#3[#4]{%
% load the package
\find@fileswith@pti@ns{#1}[#2]{#3}[#4]%
% check if commands exists now
\ifcsname\find@command\endcsname
\typeout{Package #3 introduces command \find@command.}%
% command has been found, revert to original version without checks
\let\@fileswith@pti@ns\find@fileswith@pti@ns
\else
% somehow, \@fileswith@pti@ns is restored after loading a package
% thus, patch it again
\let\@fileswith@pti@ns\find@load
\fi
}%
\newcommand*{\findpackagebycommand}[1]{%
% using this multiple times - esp. when the package has not been found yet -
% will break things. Thus, check first that \find@command has never been defined before
\ifx\find@command\undefined
\def\find@command{#1}%
% first, check if this command is already defined
\ifcsname\find@command\endcsname
% in this case, just issue a warning and do nothing
\@latex@warning@no@line{Command \find@command \space is already defined}%
\else
% overwrite the internal \@fileswith@pti@ns command, which does the actual loading
% \@fileswith@pti@ns is used internally by \usepackage and \RequirePackage
\let\find@fileswith@pti@ns\@fileswith@pti@ns
\let\@fileswith@pti@ns\find@load
\fi
\else
% used multiple times - prevent and give a warning
\@latex@warning@no@line{You can use \protect\findpackagebycommand \space only once}%
\errmessage{Invalid use of command findpackagebycommand.}%
\fi
}

69
utils/mkessler-todo.sty Normal file
View File

@ -0,0 +1,69 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'todo.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-todo}[2022/01/11 - Easy standards for the todonotes package]
\RequirePackage[colorinlistoftodos]{todonotes}
\RequirePackage{xparse}
% Make \todo{} available inside minipages
\usepackage{marginnote}
\let\marginpar\marginnote
\setuptodonotes{tickmarkheight=0.1cm, size=\small}
\newcommand\todoref{
\todo[color=red!40]{Add reference.}
}
\newcommand\todoquestion{
\todo[color=black!10, size=\tiny]
}
\newcommand\todotex{
\todo[color=green!75!black]
}
\newcommand\todotypo{
\todo[color=blue!40, size=\tiny]{Typo corrected, double check this.}
}

View File

@ -0,0 +1,80 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'bibliography.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-bibliography}[2022/01/11 - Package to easily print bibliography and image attributions in document]
\RequirePackage{xkeyval}
\newif\ifmkessler@bibliography@english\mkessler@bibliography@englishtrue
\DeclareOptionX{german}{\mkessler@bibliography@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@bibliography@englishfalse}
\DeclareOptionX{english}{\mkessler@bibliography@englishtrue}
\def\mkessler@bibliography@bibfile{bibliography.bib}
\def\mkessler@bibliography@imagefile{images.bib}
\DeclareOptionX{bibfile}[bibliography.bib]{\def\mkessler@bibliography@bibfile{#1}}
\DeclareOptionX{imagefile}[images.bib]{\def\mkessler@bibliography@imagefile{#1}}
\DeclareOptionX*{\PackageWarning{mkessler-bibliography}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%%%%Bibliography management
\RequirePackage[backend=biber,style=alphabetic]{biblatex}
\addbibresource{\mkessler@bibliography@bibfile}
\addbibresource{\mkessler@bibliography@imagefile}
%Provide simpler commands to properly print image attributions and literature
\DeclareRobustCommand*{\printimageattributions}{
\def\imageattributionstitle{\ifmkessler@bibliography@english Image attributions \else Bildquellen\fi}
\phantomsection
\addcontentsline{toc}{section}{\imageattributionstitle}
\printbibliography[title={\imageattributionstitle}, type=image]
}
\DeclareRobustCommand*{\printliterature}{
\def\literaturetitle{\ifmkessler@bibliography@english Literature\else Literatur\fi}
\phantomsection
\addcontentsline{toc}{section}{\literaturetitle}
\printbibliography[title={\literaturetitle}, nottype=image]
}

View File

@ -0,0 +1,84 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'enumerate.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-enumerate}[2022/01/11 - Simple enumeration package wrapper. Handles custom number setting and beamer class.]
\@ifclassloaded{beamer}{}{
\RequirePackage[shortlabels]{enumitem}
\RequirePackage{tikz}
\newcommand\setItemnumber[1]{\setcounter{enum\romannumeral\@enumdepth}{\numexpr#1-1\relax}}
\def\mkessler@enumerate@drawcircle#1{
\tikz[baseline=(char.base)]{
\node[shape=circle,draw,inner sep=2pt] (char) {#1};
}
}
\def\mkessler@enumerate@circled{
\protect\mkessler@enumerate@drawcircle{\arabic*}
}
\def\mkessler@enumerate@property{
(\roman*)
}
\def\mkessler@enumerate@equivalent{
(\arabic*)
}
\def\mkessler@enumerate@holds{
\arabic*)
}
\SetEnumerateShortLabel{c}{\mkessler@enumerate@circled}
\SetEnumerateShortLabel{p}{\mkessler@enumerate@property}
\SetEnumerateShortLabel{e}{\mkessler@enumerate@equivalent}
\SetEnumerateShortLabel{h}{\mkessler@enumerate@holds}
\SetEnumitemValue{label}{circled}{\mkessler@enumerate@circled}
\SetEnumitemValue{label}{property}{\mkessler@enumerate@property}
\SetEnumitemValue{label}{equivalent}{\mkessler@enumerate@equivalent}
\SetEnumitemValue{label}{holds}{\mkessler@enumerate@holds}
\SetEnumitemKey{property}{label=property}
\SetEnumitemKey{equivalent}{label=equivalent}
\SetEnumitemKey{holds}{label=holds}
\SetEnumitemKey{circled}{label=circled}
}

81
wip/mkessler-exsheet.sty Normal file
View File

@ -0,0 +1,81 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'exsheet.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-exsheet}[2022/01/11 - Include exercise sheets into lecture notes easily.]
\RequirePackage{xkeyval}
\newif\ifmkessler@exsheet@english\mkessler@exsheet@englishtrue
\DeclareOptionX{german}{\mkessler@exsheet@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@exsheet@englishfalse}
\DeclareOptionX{english}{\mkessler@exsheet@englishtrue}
\DeclareOptionX*{\PackageWarning{mkessler-exsheet}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
\RequirePackage{mkessler-fancythm}
\def\mkessler@exsheet@sheet{
\ifmkessler@exsheet@english Exercise Sheet\else Übungsblatt\fi
}
\newcounter{mkessler@exsheet@sheet}
\declaretheorem[style=thmgreenmargin, numberwithin=mkessler@exsheet@sheet, name=\ifmkessler@exsheet@english Exercise\else Aufgabe\fi]{mkessler@exsheet@sheetexercise}
\usepackage{xkeyval}
\NewDocumentEnvironment{sheetexercise}{O{}}{
\begin{mkessler@exsheet@sheetexercise\expandafter}\if\relax\detokenize{#1}\relax\else[#1]\fi\label{exercise-\themkessler@exsheet@sheetexercise}
}{
\end{mkessler@exsheet@sheetexercise\expandafter}\relax
}
\newcommand\exercisesheet{
\refstepcounter{mkessler@exsheet@sheet}
\subsection*{\themkessler@exsheet@sheet. \mkessler@exsheet@sheet}
\addcontentsline{toc}{subsection}{\themkessler@exsheet@sheet. \mkessler@exsheet@sheet}
}

48
wip/mkessler-figures.sty Normal file
View File

@ -0,0 +1,48 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'figures.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-figures}[2022/01/11 - Packages related to inclusion of figures.]
\RequirePackage{caption}
\RequirePackage{subcaption}
\RequirePackage{float}

59
wip/mkessler-gag.sty Normal file
View File

@ -0,0 +1,59 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'gag.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-gag}[2022/01/11 - Numbering of environments with a fractional environment number]
% For the stack exchange source, see
% https://tex.stackexchange.com/questions/598076/how-to-have-a-fractional-environment-number/598080?noredirect=1#comment1499689_598080
% However, for a reason i don't understand the posted answer does not work for me, but i had to replace theorem with definition in the definition of the gag environment (so apparently, i have to do this for each environment separately). It seems that the definitions of this document do use \thedefinition and not \thetheorem, although by default this is not the case.
\newcounter{gag}
\makeatletter
\newenvironment{gag}[1]{%
\let\savedthedefinition\thedefinition
\thm@headfont{\bfseries\boldmath}%
\stepcounter{gag}%
\renewcommand{\thedefinition}{\savedthedefinition#1}%
\renewcommand{\theHdefinition}{gag\thegag}%
\addtocounter{definition}{-1}\ignorespaces
}{\ignorespacesafterend}
\makeatother

View File

@ -0,0 +1,65 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'lang-input.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-lang-input}[2022/01/11 - Packages related to language input. Still work in progress, not intended for use.]
\RequirePackage[\ifutf utf8\else utf8x\fi]{inputenc}
\RequirePackage[T1]{fontenc}
% Font
\RequirePackage{lmodern} % Use latin modern font
\RequirePackage{anyfontsize} % Provides \fontsize{...}{...}\selectfont
\RequirePackage{soul} % Hyphenation, crossing \ldots
\RequirePackage{microtype} % Hyphenation, character protrusion, font expansion
% Layout
\RequirePackage{parskip} % Leave blank line instead of indenting paragraphs
\RequirePackage{onehalfspacing}
\RequirePackage{changepage} % Change page layout in middle of document
\RequirePackage{tabto} % Tabulators
% Language support
\RequirePackage[\ifenglish english \else ngerman\fi]{babel}
%Referencation
\RequirePackage{lastpage} %\pageref{LastPage} for reference on the last page

236
wip/mkessler-refproof.sty Normal file
View File

@ -0,0 +1,236 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'refproof.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-refproof}[2022/01/11 - Automatic references to theorems in proofs. Claim counters within proofs]
\RequirePackage{xkeyval}
\newif\ifmkessler@refproof@english\mkessler@refproof@englishtrue
\DeclareOptionX{german}{\mkessler@refproof@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@refproof@englishfalse}
\DeclareOptionX{english}{\mkessler@refproof@englishtrue}
\DeclareOptionX*{\PackageWarning{mkessler-refproof}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
\RequirePackage{amssymb}
\RequirePackage{amsthm}
\RequirePackage{etoolbox}
\RequirePackage{xparse}
\RequirePackage{refcount}
\RequirePackage{translator}
\RequirePackage{fifo-stack}
\usedictionary{translator-proof-dictionary}
%%Give claim an own counter and let it reset at each proof
%See also at:
%https://tex.stackexchange.com/questions/283502/reset-counter-at-beginning-of-proof
\newtheorem{claim}{\translate{Claim}}
\newtheorem*{claim*}{\translate{Claim}}
\AtBeginDocument{\def\claimautorefname{\translate{Claim}}}
\AtBeginDocument{
\@ifpackageloaded{hyperref}{
\let\mkessler@refproof@autoref\autoref
}{
\let\mkessler@refproof@autoref\ref
}
}
\newcounter{mkessler@refproof@proofdepth}
\setcounter{mkessler@refproof@proofdepth}{0}
\let\mkessler@refproof@saved@proof\proof
\let\mkessler@refproof@saved@endproof\endproof
\FSCreate{mkessler@refproof@save@claim}{-1}
%%subproof environment - essentially copied proof environment from amsthm and modified its name + symbol
\DeclareRobustCommand{\blackqed}{%
\ifmmode \mathqed
\else
\leavevmode\unskip\penalty9999 \hbox{}\nobreak\hfill
\quad\hbox{$\blacksquare$}%
\fi
}
\newenvironment{mkessler@refproof@saved@subproof}[1][\translate{Subproof}]{\par
\pushQED{\blackqed}%
\normalfont \topsep6\p@\@plus6\p@\relax
\trivlist
\item[\hskip\labelsep
\itshape
#1\@addpunct{.}]\ignorespaces
}{%
\popQED\endtrivlist\@endpefalse
}
%%%Now, we internally got a proof and a subproof environment
%%%Make them available as 'old' variants, with their defautl behaviour
\NewDocumentEnvironment{oldproof}{}
{
\mkessler@refproof@saved@proof
}
{
\mkessler@refproof@saved@endproof
}
\NewDocumentEnvironment{oldsubproof}{}
{
\mkessler@refproof@saved@subproof
}
\endmkessler@refproof@saved@subproof
{
\NewDocumentEnvironment{refproof}{s m !o}
{
\stepcounter{mkessler@refproof@proofdepth}
%Save the current claim counter
\protected@edef\mkessler@refproof@dummy@expand{\arabic{claim}}
\FSPush{mkessler@refproof@save@claim}{\mkessler@refproof@dummy@expand}
% Restore correct counter for claims in this refproof
\ifcsdef{themkessler@refproof@#2@save@claim}{
\setcounter{claim}{\value{mkessler@refproof@#2@save@claim}}
\def\mkessler@refproof@proofprefix{
\IfBooleanTF{#1}{%
\translate{Continuation of proof* of}%
}{%
\translate{Continuation of proof of}%
}
}
}{
\newcounter{mkessler@refproof@#2@save@claim}
\setcounter{claim}{0}
\def\mkessler@refproof@proofprefix{%
\IfBooleanTF{#1}{%
\translate{Proof* of}%
}{%
\translate{Proof of}%
}
}
}
% Set up counter number printing as subindexed by numbering of the reference
\let\mkessler@refproof@saved@theclaim\theclaim
\def\theclaim{\getrefnumber{#2}.\arabic{claim}}
% Now, start the actual proof
\mkessler@refproof@saved@proof[%
\mkessler@refproof@proofprefix\space\mkessler@refproof@autoref{#2}%
\IfValueT{#3}{\space(#3)}%
]
}
{
\mkessler@refproof@saved@endproof % End proof
% Save current claim counter for later restoration
\setcounter{mkessler@refproof@#2@save@claim}{\value{claim}}
%Restore previous claim counter
\setcounter{claim}{\FSTop{mkessler@refproof@save@claim}}
\FSPop{mkessler@refproof@save@claim}
\addtocounter{mkessler@refproof@proofdepth}{-1}
\let\theclaim\mkessler@refproof@saved@theclaim
}
%%% A 'smart' proof environment
\AtBeginDocument{
\RenewDocumentEnvironment{proof}{!s !o}
{
\stepcounter{mkessler@refproof@proofdepth}
%Save the current claim counter
\protected@edef\mkessler@refproof@dummy@expand{\arabic{claim}}
\FSPush{mkessler@refproof@save@claim}{\mkessler@refproof@dummy@expand}
\setcounter{claim}{0}
\def\theclaim{\arabic{claim}}
\ifnum\value{mkessler@refproof@proofdepth}>1%
\mkessler@refproof@saved@subproof[%
\IfBooleanTF{#1}{%
\translate{Subproof*}%
}{%
\translate{Subproof}%
}%
\IfValueT{#2}{\space(#2)}%
]
\else%
\mkessler@refproof@saved@proof[%
\IfBooleanTF{#1}{%
\translate{Proof*}%
}{%
\translate{Proof}%
}%
\IfValueT{#2}{\space(#2)}%
]
\fi
}
{
\mkessler@refproof@saved@endproof
%Restore previous claim counter
\setcounter{claim}{\FSTop{mkessler@refproof@save@claim}}
\FSPop{mkessler@refproof@save@claim}
}
}
\NewDocumentEnvironment{subproof}{!s !o}
{
\stepcounter{mkessler@refproof@proofdepth}
%Save the current claim counter
\protected@edef\mkessler@refproof@dummy@expand{\arabic{claim}}
\FSPush{mkessler@refproof@save@claim}{\mkessler@refproof@dummy@expand}
\setcounter{claim}{0}
\def\theclaim{\arabic{claim}}
\mkessler@refproof@saved@subproof[%
\IfBooleanTF{#1}{%
\translate{Subproof*}%
}{%
\translate{Subproof}%
}%
\IfValueT{#2}{\space(#2)}%
]
}
{
\mkessler@refproof@saved@endproof
%Restore previous claim counter
\setcounter{claim}{\FSTop{mkessler@refproof@save@claim}}
\FSPop{mkessler@refproof@save@claim}
\addtocounter{mkessler@refproof@proofdepth}{-1}
}
\newcommand\proofdepth{\arabic{mkessler@refproof@proofdepth}}

61
wip/mkessler-removed.sty Normal file
View File

@ -0,0 +1,61 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'removed.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-removed}[2022/01/11 - (For now) removed parts of other packages. Not intended for use right now.]
% Quotations
\RequirePackage{csquotes} % quotations
%%%% Utilities
\RequirePackage{commnt} %comments
\RequirePackage{todonotes} % todo notes
\RequirePackage{blindtext} % \blindtext filling
\RequirePackage[export]{adjustbox} %
\RequirePackage{pdfpages} % Include external PDF files easily
\newcommand{\emphasize}[1]{{\color{red} #1}}
\RequirePackage{wrapfig} % Wrap text around figures
% Math-related
\RequirePackage[export]{adjustbox}

82
wip/mkessler-restate.sty Normal file
View File

@ -0,0 +1,82 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'restate.pysty'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the package again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX package is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the package can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-restate}[2022/01/11 - Replacement package]
\RequirePackage{xkeyval}
\RequirePackage{todonotes}
\RequirePackage{xparse}
\RequirePackage{etoolbox}
\newif\ifmkessler@restate@english\mkessler@restate@englishtrue
\DeclareOptionX{english}{\mkessler@restate@englishtrue}
\DeclareOptionX{german}{\mkessler@restate@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@restate@englishfalse}
\define@boolkey+{mkessler-restate.sty}[mkessler@restate@]{strict}[true]{
\ifmkessler@restate@strict
\PackageInfo{mkessler-restate}{Strict mode enabled. Undefined restates will throw errors.}%
\else
\PackageInfo{mkessler-restate}{Strict mode disabled. Undefined restates will now print placeholder boxes}%
\fi
}{
\PackageWarning{mkessler-restate}{Erroneous input to key 'strict' ignored. Provide =true or =false.}
}
\DeclareOptionX*{\PackageWarning{mkessler-restate}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
\newcommand\restatesetup[1]{\setkeys{mkessler-restate.sty}{#1}}
\NewDocumentCommand{\restatetheorem}{s m}{
\ifcsdef{#2}{
\ifx#1\BooleanTrue\csname#2\endcsname*\else\csname#2\endcsname\fi
}{
\ifmkessler@restate@strict
\PackageError{mkessler-restate}{Strict mode enabled but restate command not defined}{The theorem you tried to restate is not defined. Either make sure it is so that it can be printed or disable the strict mode with \noexpand\restatesetup{strict=false} to print a placeholder instead}
\else
\missingfigure{\ifmkessler@restate@english Here theorem \textbf{#2} is missing, since it is not part of this document.\else Hier fehlt die Wiederholung von Satz \textbf{#2}, der nicht Teil dieses Dokumentes ist.\fi}
\fi
}
}

View File

@ -0,0 +1,66 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This dictionary has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'proof.pydict'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the dictionary again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX dictionary is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the dictionary can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesDictionary{translator-proof-dictionary}{English}
\providetranslation{Claim}{Claim}
\providetranslation{claim}{claim}
\providetranslation{Claim*}{Claim*}
\providetranslation{claim*}{claim*}
\providetranslation{Proof}{Proof}
\providetranslation{proof}{proof}
\providetranslation{Proof*}{Proof*}
\providetranslation{proof*}{proof*}
\providetranslation{Proof of}{Proof of}
\providetranslation{proof of}{proof of}
\providetranslation{Proof* of}{Proof* of}
\providetranslation{proof* of}{proof* of}
\providetranslation{Continuation of proof}{Continuation of proof}
\providetranslation{continuation of proof}{continuation of proof}
\providetranslation{Continuation of proof of}{Continuation of proof of}
\providetranslation{continuation of proof of}{continuation of proof of}
\providetranslation{Continuation of proof*}{Continuation of proof*}
\providetranslation{continuation of proof*}{continuation of proof*}
\providetranslation{Continuation of proof* of}{Continuation of proof* of}
\providetranslation{continuation of proof* of}{continuation of proof* of}
\providetranslation{Subproof}{Subproof}
\providetranslation{subproof}{subproof}
\providetranslation{Subproof*}{Subproof*}
\providetranslation{subproof*}{subproof*}

View File

@ -0,0 +1,66 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the “Software”), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE.
%
% This dictionary has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'proof.pydict'.
% It is STRONGLY DISCOURAGED to edit this source file directly, since local
% changes will not be versioned by Git and overwritten by the next build. Always
% edit the source file and build the dictionary again.
%
% Build details:
% PyTeX version: v1.2.0-11-gc8deda5 (commit c8deda5)
% Source code version: v2.5.0 (commit 296afc0)
%
% This LaTeX dictionary is free software and distributed under the MIT License. You
% may use it freely for your purposes. The latest version of the dictionary can be
% obtained via GitHub under
% https://github.com/kesslermaximilian/LatexPackages
% For further information see the url above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesDictionary{translator-proof-dictionary}{German}
\providetranslation{Claim}{Behauptung}
\providetranslation{claim}{Behauptung}
\providetranslation{Claim*}{Behauptung*}
\providetranslation{claim*}{Behauptung*}
\providetranslation{Proof}{Beweis}
\providetranslation{proof}{Beweis}
\providetranslation{Proof*}{Beweis*}
\providetranslation{proof*}{Beweis*}
\providetranslation{Proof of}{Beweis von}
\providetranslation{proof of}{Beweis von}
\providetranslation{Proof* of}{Beweis* von}
\providetranslation{proof* of}{Beweis* von}
\providetranslation{Continuation of proof}{Fortsetzung des Beweises}
\providetranslation{continuation of proof}{Fortsetzung des Beweises}
\providetranslation{Continuation of proof of}{Fortsetzung des Beweises zu}
\providetranslation{continuation of proof of}{Fortsetzung des Beweises zu}
\providetranslation{Continuation of proof*}{Fortsetzung des Beweises*}
\providetranslation{continuation of proof*}{Fortsetzung des Beweises*}
\providetranslation{Continuation of proof* of}{Fortsetzung des Beweises* zu}
\providetranslation{continuation of proof* of}{Fortsetzung des Beweises* zu}
\providetranslation{Subproof}{Unterbeweis}
\providetranslation{subproof}{Unterbeweis}
\providetranslation{Subproof*}{Unterbeweis*}
\providetranslation{subproof*}{Unterbeweis*}