commit bef4c0f5377dc14fe49de4e2ad15f60cd8650269 Author: Maximilian Keßler (via gitlab runner) Date: Sun Oct 24 08:55:11 2021 +0000 remove travis stuff Build branch topology-1 (1113e0d) from kesslermaximilian/LatexPackages diff --git a/build_info.json b/build_info.json new file mode 100644 index 0000000..72b5540 --- /dev/null +++ b/build_info.json @@ -0,0 +1,295 @@ +{ + "build_time": "", + "source files": { + "version": "v2.2.2-3", + "commit": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "dirty": false + }, + "pytex": { + "version": "v1.0.0-18", + "commit": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + "tex_sources": [ + { + "name": "mkessler-restate.sty", + "source file": "restate.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-enumerate.sty", + "source file": "enumerate.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-removed.sty", + "source file": "removed.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-bibliography.sty", + "source file": "bibliography.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-gag.sty", + "source file": "gag.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-figures.sty", + "source file": "figures.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-proof.sty", + "source file": "proof.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-exsheet.sty", + "source file": "exsheet.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-lang-input.sty", + "source file": "lang-input.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-lectures.sty", + "source file": "lectures.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-mathalias.sty", + "source file": "mathalias.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-mathfixes.sty", + "source file": "mathfixes.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-unicodechar.sty", + "source file": "unicodechar.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-mathop.sty", + "source file": "mathop.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-mathfig.sty", + "source file": "mathfig.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-mathsymb.sty", + "source file": "mathsymb.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-faktor.sty", + "source file": "faktor.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-mathfont.sty", + "source file": "mathfont.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-math.sty", + "source file": "math.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-counters.sty", + "source file": "counters.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-findpackage.sty", + "source file": "findpackage.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-thmstyle.sty", + "source file": "thmstyle.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-fancythm.sty", + "source file": "fancythm.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-incfig.sty", + "source file": "incfig.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-hypersetup.sty", + "source file": "hypersetup.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-vocab.sty", + "source file": "vocab.pysty", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-script.cls", + "source file": "script.pycls", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + }, + { + "name": "mkessler-sheet.cls", + "source file": "sheet.pycls", + "build time": "2021/10/24 08:55", + "source version": "v2.2.2-3", + "source commit hash": "1113e0ddd01036e5bad92b18c912e94bbc6f85c4", + "pytex version": "v1.0.0-18", + "pytex commit hash": "126d420b7a6ed2d4b2a42d534ab2e12344869643", + "dirty": false + } + ] +} \ No newline at end of file diff --git a/environments/mkessler-fancythm.sty b/environments/mkessler-fancythm.sty new file mode 100644 index 0000000..c2ba618 --- /dev/null +++ b/environments/mkessler-fancythm.sty @@ -0,0 +1,315 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 diff --git a/environments/mkessler-thmstyle.sty b/environments/mkessler-thmstyle.sty new file mode 100644 index 0000000..88a96c1 --- /dev/null +++ b/environments/mkessler-thmstyle.sty @@ -0,0 +1,137 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 diff --git a/exercises/mkessler-sheet.cls b/exercises/mkessler-sheet.cls new file mode 100644 index 0000000..fe9f675 --- /dev/null +++ b/exercises/mkessler-sheet.cls @@ -0,0 +1,123 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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{} to set the course.}}% +\DeclareRobustCommand*{\course}[1]{\gdef\@course{#1}} +\def\@sheetnumber{\ClassError{mkessler-sheet}{No \noexpand\sheetnumber given}{Use \noexpand\sheetnumber{} 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} +} diff --git a/lecture-notes/mkessler-lectures.sty b/lecture-notes/mkessler-lectures.sty new file mode 100644 index 0000000..465e796 --- /dev/null +++ b/lecture-notes/mkessler-lectures.sty @@ -0,0 +1,154 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 diff --git a/lecture-notes/mkessler-script.cls b/lecture-notes/mkessler-script.cls new file mode 100644 index 0000000..4a7d9ab --- /dev/null +++ b/lecture-notes/mkessler-script.cls @@ -0,0 +1,209 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - Write up lecture notes as script] + + + +\newif\ifmkessler@script@english\mkessler@script@englishtrue +\DeclareOption{german}{\mkessler@script@englishfalse} +\DeclareOption{ngerman}{\mkessler@script@englishfalse} +\DeclareOption{english}{\mkessler@script@englishtrue} + +\newif\ifmkessler@script@showversion\mkessler@script@showversiontrue +\DeclareOption{show version}{\mkessler@script@showversiontrue} +\DeclareOption{hideversion}{\mkessler@script@showversionfalse} + +\newif\ifmkessler@script@fancyfoot\mkessler@script@fancyfootfalse +\DeclareOption{fancyfoot}{\mkessler@script@fancyfoottrue} + + +\newif\ifmkessler@script@gitversion\mkessler@script@gitversionfalse +\DeclareOption{git}{\mkessler@script@gitversiontrue} + +\DeclareOption*{\ClassWarning{mkessler-script}{Unknown '\CurrentOption'}} +\ProcessOptions\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} diff --git a/math/mkessler-faktor.sty b/math/mkessler-faktor.sty new file mode 100644 index 0000000..707eca0 --- /dev/null +++ b/math/mkessler-faktor.sty @@ -0,0 +1,86 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 m O{0.5} m O{-0.5}}{% \newfaktor[*]{#2}[#3]{#4}[#5] -> #2/#4 + \setbox0=\hbox{\ensuremath{#2}}% Store numerator + \setbox1=\hbox{\ensuremath{\diagup}}% Store slash / + \setbox2=\hbox{\ensuremath{#4}}% Store denominator + \raisebox{#3\ht1}{\usebox0}% Numerator + \mkern-5mu\ifthenelse{\equal{#1}{\BooleanTrue}}% Slash / + {\diagup}% regular \faktor slash + {\rotatebox{-44}{\rule[#5\ht2]{0.4pt}{-#5\ht2+#3\ht0+\ht0}}}% tilted rule as a slash + \mkern-4mu% + \raisebox{#5\ht2}{\usebox2}% Denominator +} + +\DeclareDocumentCommand{\cofaktor}{s m O{-0.5} m O{0.5}}{% \newfaktor[*]{#2}[#3]{#4}[#5] -> #2/#4 + \setbox0=\hbox{\ensuremath{#2}}% Store numerator + \setbox1=\hbox{\ensuremath{\diagdown}}% Store slash / + \setbox2=\hbox{\ensuremath{#4}}% Store denominator + \raisebox{#3\ht1}{\usebox0}% Numerator + \mkern-5mu\ifthenelse{\equal{#1}{\BooleanTrue}}% Slash / + {\diagdown}% regular \faktor slash + {\rotatebox{44}{\rule[-#5\ht2]{0.4pt}{#5\ht2-#3\ht0+\ht0}}}% tilted rule as a slash + \mkern-4mu% + \raisebox{#5\ht2}{\usebox2}% Denominator +} diff --git a/math/mkessler-math.sty b/math/mkessler-math.sty new file mode 100644 index 0000000..c0a283b --- /dev/null +++ b/math/mkessler-math.sty @@ -0,0 +1,87 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 diff --git a/math/mkessler-mathalias.sty b/math/mkessler-mathalias.sty new file mode 100644 index 0000000..fd94183 --- /dev/null +++ b/math/mkessler-mathalias.sty @@ -0,0 +1,88 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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\{}{} +% to declare commands of form \ as \{} 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} +\fi diff --git a/math/mkessler-mathfig.sty b/math/mkessler-mathfig.sty new file mode 100644 index 0000000..a4728f2 --- /dev/null +++ b/math/mkessler-mathfig.sty @@ -0,0 +1,65 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 + + +%%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 diff --git a/math/mkessler-mathfixes.sty b/math/mkessler-mathfixes.sty new file mode 100644 index 0000000..4a38085 --- /dev/null +++ b/math/mkessler-mathfixes.sty @@ -0,0 +1,79 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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\uglyphi\mkessler@mathfixes@stored@phi + \let\oldphi\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 +} diff --git a/math/mkessler-mathfont.sty b/math/mkessler-mathfont.sty new file mode 100644 index 0000000..dbf655b --- /dev/null +++ b/math/mkessler-mathfont.sty @@ -0,0 +1,67 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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} diff --git a/math/mkessler-mathop.sty b/math/mkessler-mathop.sty new file mode 100644 index 0000000..ebf3a8c --- /dev/null +++ b/math/mkessler-mathop.sty @@ -0,0 +1,227 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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{Mat} +\DeclareSimpleMathOperator{ev} +\DeclareSimpleMathOperator{tr} + +%Algebra +\DeclareSimpleMathOperator{Quot} +\DeclareSimpleMathOperator{Gal} +\DeclareSimpleMathOperator{Ext} +\DeclareSimpleMathOperator{Tor} +\DeclareSimpleMathOperator{MaxSpec} +\DeclareSimpleMathOperator{Sh} +\DeclareSimpleMathOperator{Proj} +\DeclareSimpleMathOperator{QCoh} +\DeclareSimpleMathOperator{MaxSpec} +\DeclareSimpleMathOperator{Fun} +\DeclareMathOperator{\Nil}{\mathcal{N}il} +\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 + +%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{Vect} +\DeclareCategory{Fin} +\DeclareCategory{Ab} +\DeclareCategory{Cat} + +%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 + +% 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} diff --git a/math/mkessler-mathsymb.sty b/math/mkessler-mathsymb.sty new file mode 100644 index 0000000..7369ca5 --- /dev/null +++ b/math/mkessler-mathsymb.sty @@ -0,0 +1,90 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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} + + + + diff --git a/math/mkessler-unicodechar.sty b/math/mkessler-unicodechar.sty new file mode 100644 index 0000000..c7d5aa2 --- /dev/null +++ b/math/mkessler-unicodechar.sty @@ -0,0 +1,73 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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} + diff --git a/misc/mkessler-hypersetup.sty b/misc/mkessler-hypersetup.sty new file mode 100644 index 0000000..edad43d --- /dev/null +++ b/misc/mkessler-hypersetup.sty @@ -0,0 +1,69 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 +} diff --git a/misc/mkessler-incfig.sty b/misc/mkessler-incfig.sty new file mode 100644 index 0000000..3f77e53 --- /dev/null +++ b/misc/mkessler-incfig.sty @@ -0,0 +1,89 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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} +} diff --git a/misc/mkessler-vocab.sty b/misc/mkessler-vocab.sty new file mode 100644 index 0000000..430cbd0 --- /dev/null +++ b/misc/mkessler-vocab.sty @@ -0,0 +1,89 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 + diff --git a/utils/mkessler-counters.sty b/utils/mkessler-counters.sty new file mode 100644 index 0000000..2e84fdb --- /dev/null +++ b/utils/mkessler-counters.sty @@ -0,0 +1,56 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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}} +} + diff --git a/utils/mkessler-findpackage.sty b/utils/mkessler-findpackage.sty new file mode 100644 index 0000000..336466d --- /dev/null +++ b/utils/mkessler-findpackage.sty @@ -0,0 +1,87 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 +} diff --git a/wip/mkessler-bibliography.sty b/wip/mkessler-bibliography.sty new file mode 100644 index 0000000..ae3d025 --- /dev/null +++ b/wip/mkessler-bibliography.sty @@ -0,0 +1,80 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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] + +} diff --git a/wip/mkessler-enumerate.sty b/wip/mkessler-enumerate.sty new file mode 100644 index 0000000..a248a63 --- /dev/null +++ b/wip/mkessler-enumerate.sty @@ -0,0 +1,49 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - Simple enumeration package wrapper. Handles custom number setting and beamer class.] + + + +\@ifclassloaded{beamer}{}{ + \usepackage[shortlabels]{enumitem} + \newcommand\setItemnumber[1]{\setcounter{enum\romannumeral\@enumdepth}{\numexpr#1-1\relax}} +} diff --git a/wip/mkessler-exsheet.sty b/wip/mkessler-exsheet.sty new file mode 100644 index 0000000..afdac3e --- /dev/null +++ b/wip/mkessler-exsheet.sty @@ -0,0 +1,81 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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} +} + + diff --git a/wip/mkessler-figures.sty b/wip/mkessler-figures.sty new file mode 100644 index 0000000..5a51f41 --- /dev/null +++ b/wip/mkessler-figures.sty @@ -0,0 +1,48 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - Packages related to inclusion of figures.] + + + +\RequirePackage{caption} +\RequirePackage{subcaption} +\RequirePackage{float} diff --git a/wip/mkessler-gag.sty b/wip/mkessler-gag.sty new file mode 100644 index 0000000..48e49ba --- /dev/null +++ b/wip/mkessler-gag.sty @@ -0,0 +1,59 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 diff --git a/wip/mkessler-lang-input.sty b/wip/mkessler-lang-input.sty new file mode 100644 index 0000000..d62b82f --- /dev/null +++ b/wip/mkessler-lang-input.sty @@ -0,0 +1,65 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 diff --git a/wip/mkessler-proof.sty b/wip/mkessler-proof.sty new file mode 100644 index 0000000..9f79a39 --- /dev/null +++ b/wip/mkessler-proof.sty @@ -0,0 +1,144 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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 'proof.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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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-proof}[2021/10/24 - Automatic references to theorems in proofs. Claim counters within proofs] + + + +\RequirePackage{xkeyval} + +\newif\ifmkessler@proof@english\mkessler@proof@englishtrue +\DeclareOptionX{german}{\mkessler@proof@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@proof@englishfalse} +\DeclareOptionX{english}{\mkessler@proof@englishtrue} + +\DeclareOptionX*{\PackageWarning{mkessler-proof}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +\RequirePackage{amssymb} +\RequirePackage{amsthm} +\RequirePackage{etoolbox} +\RequirePackage{xparse} + +%%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}{\ifmkessler@proof@english Claim\else Behauptung\fi} +\newtheorem*{claim*}{\ifmkessler@proof@english Claim\else Behauptung\fi} +\AtBeginDocument{\def\claimautorefname{\ifmkessler@proof@english Claim\else Behauptung\fi}} + +\newif\ifmkessler@proof@hyperref\mkessler@proof@hyperreffalse +\AtBeginDocument{ + \@ifpackageloaded{hyperref}{ + \mkessler@proof@hyperreftrue + \def\grab#1{\expandafter\@firstoffive#1} + \def\mkessler@proof@blankref#1{\expandafter\grab\csname r@#1\endcsname} + \let\mkessler@proof@autoref\autoref + }{ + \mkessler@proof@hyperreftrue + \let\mkessler@proof@blankref\ref + \let\mkessler@proof@autoref\ref + } +} + +\NewDocumentEnvironment{rproof}{m O{}}{\def\mkessler@proof@aster{\relax}\begin{mkessler@proof@rproof@impl}{#1}[#2]}{\end{mkessler@proof@rproof@impl}} +\NewDocumentEnvironment{rproof*}{m O{}}{\def\mkessler@proof@aster{*}\begin{mkessler@proof@rproof@impl}{#1}[#2]}{\end{mkessler@proof@rproof@impl}} + +\NewDocumentEnvironment{mkessler@proof@rproof@impl}{m O{}} +{ + % Restore correct counter for claim + \ifcsdef{themkessler@proof@#1@save@claim}{ + \setcounter{claim}{\value{mkessler@proof@#1@save@claim}} + \def\mkessler@proof@proofprefix{\ifmkessler@proof@english Continuation of proof\mkessler@proof@aster\space of\else Fortsetzung des Beweises\mkessler@proof@aster\space zu\fi} + \edef\haha{\value{mkessler@proof@#1@part}} + }{ + \newcounter{mkessler@proof@#1@save@claim} + \setcounter{claim}{0} + \def\mkessler@proof@proofprefix{\ifmkessler@proof@english Proof\mkessler@proof@aster\space of\else Beweis\mkessler@proof@aster\space von\fi} + } + % Set up counter number printing as subindexed by numbering of the reference + \let\mkessler@proof@theoldclaim\theclaim + \def\theclaim{\mkessler@proof@blankref{#1}.\mkessler@proof@theoldclaim} + % Now, start the actual proof + \begin{proof}[\mkessler@proof@proofprefix\space\mkessler@proof@autoref{#1}\if\relax\detokenize{#2}\relax\else\space(#2)\fi] +} +{ + \end{proof} % End proof + % Save current claim counter for later restoration + \setcounter{mkessler@proof@#1@save@claim}{\value{claim}} +} + +% Proof (with asterisk) +\NewDocumentEnvironment{proof*}{O{}} +{ + \if\relax\detokenize{#1}\relax\begin{proof}[\ifmkessler@proof@english Proof\emph{*}\else Beweis\emph{*}\fi]\else\begin{proof}[#1\emph{*}]\fi +} +{ + \end{proof} +} + + +%%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{subproof}[1][\ifmkessler@proof@english Subproof\else Unterbeweis\fi]{\par + \pushQED{\blackqed}% + \normalfont \topsep6\p@\@plus6\p@\relax + \trivlist + \item[\hskip\labelsep + \itshape + #1\@addpunct{.}]\ignorespaces +}{% + \popQED\endtrivlist\@endpefalse +} + + +%%%% This might be dropped, but for now is collected here + +%%Solution (for exercises) +\newenvironment{solution}[1][]{\begin{proof}[\ifmkessler@proof@english{}Solution\else{}Lösung\fi{}#1]}{\end{proof}} diff --git a/wip/mkessler-removed.sty b/wip/mkessler-removed.sty new file mode 100644 index 0000000..07543a6 --- /dev/null +++ b/wip/mkessler-removed.sty @@ -0,0 +1,61 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - (For now] + + removed parts of other packages. Not intended for use right now.)% Quotations +\RequirePackage{csquotes} % quotations + +%%%% Utilities +\RequirePackage{comment} %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} diff --git a/wip/mkessler-restate.sty b/wip/mkessler-restate.sty new file mode 100644 index 0000000..6316ca1 --- /dev/null +++ b/wip/mkessler-restate.sty @@ -0,0 +1,82 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2021 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.0.0-18 (commit 126d420) +% Source code version: v2.2.2-3 (commit 1113e0d) +% +% 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}[2021/10/24 - 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 + } +}