From c7be525ebbc4a6775f4c43aa1eb2cdf1bd9fd668 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Maximilian=20Ke=C3=9Fler=20=28via=20gitlab=20runner=29?= Date: Tue, 11 Jan 2022 20:39:11 +0000 Subject: [PATCH] remove category specific stuff from mathop package, integrate categories package into math package Build branch v2.5.1 (50e2c7c) from kesslermaximilian/LatexPackages --- build_info.json | 345 ++++++++++++++++++ environments/mkessler-fancythm.sty | 313 ++++++++++++++++ environments/mkessler-thmstyle.sty | 137 +++++++ exercises/mkessler-sheet.cls | 123 +++++++ lecture-notes/mkessler-lectures.sty | 154 ++++++++ lecture-notes/mkessler-script.cls | 211 +++++++++++ math/mkessler-categories.sty | 181 +++++++++ math/mkessler-faktor.sty | 86 +++++ math/mkessler-math.sty | 88 +++++ math/mkessler-mathalias.sty | 89 +++++ math/mkessler-mathfig.sty | 87 +++++ math/mkessler-mathfixes.sty | 82 +++++ math/mkessler-mathfont.sty | 67 ++++ math/mkessler-mathop.sty | 252 +++++++++++++ math/mkessler-mathsymb.sty | 90 +++++ math/mkessler-unicodechar.sty | 73 ++++ ...matical-categories-dictionary-English.dict | 58 +++ ...ematical-categories-dictionary-German.dict | 58 +++ misc/mkessler-hypersetup.sty | 69 ++++ misc/mkessler-incfig.sty | 89 +++++ misc/mkessler-vocab.sty | 89 +++++ utils/mkessler-counters.sty | 56 +++ utils/mkessler-findpackage.sty | 87 +++++ utils/mkessler-symbindex.sty | 141 +++++++ utils/mkessler-todo.sty | 69 ++++ wip/mkessler-bibliography.sty | 80 ++++ wip/mkessler-enumerate.sty | 84 +++++ wip/mkessler-exsheet.sty | 81 ++++ wip/mkessler-figures.sty | 48 +++ wip/mkessler-gag.sty | 59 +++ wip/mkessler-lang-input.sty | 65 ++++ wip/mkessler-refproof.sty | 236 ++++++++++++ wip/mkessler-removed.sty | 61 ++++ wip/mkessler-restate.sty | 82 +++++ wip/translator-proof-dictionary-English.dict | 66 ++++ wip/translator-proof-dictionary-German.dict | 66 ++++ 36 files changed, 4022 insertions(+) create mode 100644 build_info.json create mode 100644 environments/mkessler-fancythm.sty create mode 100644 environments/mkessler-thmstyle.sty create mode 100644 exercises/mkessler-sheet.cls create mode 100644 lecture-notes/mkessler-lectures.sty create mode 100644 lecture-notes/mkessler-script.cls create mode 100644 math/mkessler-categories.sty create mode 100644 math/mkessler-faktor.sty create mode 100644 math/mkessler-math.sty create mode 100644 math/mkessler-mathalias.sty create mode 100644 math/mkessler-mathfig.sty create mode 100644 math/mkessler-mathfixes.sty create mode 100644 math/mkessler-mathfont.sty create mode 100644 math/mkessler-mathop.sty create mode 100644 math/mkessler-mathsymb.sty create mode 100644 math/mkessler-unicodechar.sty create mode 100644 math/translator-mathematical-categories-dictionary-English.dict create mode 100644 math/translator-mathematical-categories-dictionary-German.dict create mode 100644 misc/mkessler-hypersetup.sty create mode 100644 misc/mkessler-incfig.sty create mode 100644 misc/mkessler-vocab.sty create mode 100644 utils/mkessler-counters.sty create mode 100644 utils/mkessler-findpackage.sty create mode 100644 utils/mkessler-symbindex.sty create mode 100644 utils/mkessler-todo.sty create mode 100644 wip/mkessler-bibliography.sty create mode 100644 wip/mkessler-enumerate.sty create mode 100644 wip/mkessler-exsheet.sty create mode 100644 wip/mkessler-figures.sty create mode 100644 wip/mkessler-gag.sty create mode 100644 wip/mkessler-lang-input.sty create mode 100644 wip/mkessler-refproof.sty create mode 100644 wip/mkessler-removed.sty create mode 100644 wip/mkessler-restate.sty create mode 100644 wip/translator-proof-dictionary-English.dict create mode 100644 wip/translator-proof-dictionary-German.dict diff --git a/build_info.json b/build_info.json new file mode 100644 index 0000000..a755f76 --- /dev/null +++ b/build_info.json @@ -0,0 +1,345 @@ +{ + "build_time": "", + "source files": { + "version": "v2.5.1", + "commit": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "dirty": false + }, + "pytex": { + "version": "v1.2.0-12-g75a2b13", + "commit": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + "tex_sources": [ + { + "name": "mkessler-restate.sty", + "source file": "restate.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-enumerate.sty", + "source file": "enumerate.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-removed.sty", + "source file": "removed.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-refproof.sty", + "source file": "refproof.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-bibliography.sty", + "source file": "bibliography.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-gag.sty", + "source file": "gag.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-figures.sty", + "source file": "figures.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-exsheet.sty", + "source file": "exsheet.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-lang-input.sty", + "source file": "lang-input.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-lectures.sty", + "source file": "lectures.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-mathalias.sty", + "source file": "mathalias.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-mathfixes.sty", + "source file": "mathfixes.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-unicodechar.sty", + "source file": "unicodechar.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-mathop.sty", + "source file": "mathop.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-mathfig.sty", + "source file": "mathfig.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-mathsymb.sty", + "source file": "mathsymb.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-faktor.sty", + "source file": "faktor.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-mathfont.sty", + "source file": "mathfont.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-math.sty", + "source file": "math.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-todo.sty", + "source file": "todo.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-counters.sty", + "source file": "counters.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-findpackage.sty", + "source file": "findpackage.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-thmstyle.sty", + "source file": "thmstyle.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-fancythm.sty", + "source file": "fancythm.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-incfig.sty", + "source file": "incfig.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-hypersetup.sty", + "source file": "hypersetup.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-vocab.sty", + "source file": "vocab.pysty", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-script.cls", + "source file": "script.pycls", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-sheet.cls", + "source file": "sheet.pycls", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "translator-proof-dictionary-{language}.dict", + "source file": "proof.pydict", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "translator-mathematical-categories-dictionary-{language}.dict", + "source file": "mathematical-categories.pydict", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-categories.sty", + "source file": "categories.pysty3", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "dirty": false + }, + { + "name": "mkessler-symbindex.sty", + "source file": "symbindex.pysty3", + "build time": "2022/01/11 20:39", + "source version": "v2.5.1", + "source commit hash": "50e2c7c956a83ccea4ad88202467f787bc722cf7", + "pytex version": "v1.2.0-12-g75a2b13", + "pytex commit hash": "75a2b137ec3acdd611593b82802fcb14c73e3090", + "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..ed94333 --- /dev/null +++ b/environments/mkessler-fancythm.sty @@ -0,0 +1,313 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'fancythm.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-fancythm}[2022/01/11 - Theorem-Environment Package] + + +%Provides fancy theorem-like-environments used in the write-ups of my lecture notes + +\RequirePackage{xkeyval} + +\newif\ifmkessler@fancythm@showstars\mkessler@fancythm@showstarstrue +\newif\ifmkessler@fancythm@showdaggers\mkessler@fancythm@showdaggerstrue +\newif\ifmkessler@fancythm@includestars\mkessler@fancythm@includestarstrue +\newif\ifmkessler@fancythm@includeoral\mkessler@fancythm@includeoraltrue +\newif\ifmkessler@fancythm@markoral\mkessler@fancythm@markoraltrue + +\newif\ifmkessler@fancythm@lecturenumbers\mkessler@fancythm@lecturenumberstrue +\newif\ifmkessler@fancythm@numbersmallenvironmentswiththeorem\mkessler@fancythm@numbersmallenvironmentswiththeoremfalse +\newif\ifmkessler@fancythm@numbersmallenvironments\mkessler@fancythm@numbersmallenvironmentsfalse +\newif\ifmkessler@fancythm@defaulttheorems\mkessler@fancythm@defaulttheoremstrue + +\define@choicekey*{mkessler-fancythm}{mkessler@fancythm@numbersmallenvironments}[\val\nr]{no,section,theorem}{% + \ifcase\nr\relax + \mkessler@fancythm@numbersmallenvironmentsfalse + \or + \mkessler@fancythm@numbersmallenvironmentstrue + %numbering small environments within sections is forbidden whilst using lecturenumbes + \ifmkessler@fancythm@lecturenumbers + \mkessler@fancythm@numbersmallenvironmentswiththeoremtrue + \else + \mkessler@fancythm@numbersmallenvironmentswiththeoremfalse + \fi + \or + \mkessler@fancythm@numbersmallenvironmentstrue + \mkessler@fancythm@numbersmallenvironmentswiththeoremtrue + \fi +} + +\define@choicekey*{mkessler-fancythm}{mkessler@fancythm@lecturenumbers}[\val\nr]{true,false}{% + \ifcase\nr\relax + \mkessler@fancythm@lecturenumberstrue + \else + \mkessler@fancythm@lecturenumbersfalse + \fi +} + +\define@choicekey*{mkessler-fancythm}{mkessler@fancythm@defaulttheorems}[\val\nr]{true,false}{% + \ifcase\nr\relax + \mkessler@fancythm@defaulttheoremstrue + \else + \mkessler@fancythm@defaulttheoremsfalse + \fi +} + +\define@choicekey*{mkessler-fancythm}{mkessler@fancythm@showdaggers}[\val\nr]{true,false}{% + \ifcase\nr\relax + \mkessler@fancythm@showdaggerstrue + \else + \mkessler@fancythm@showdaggersfalse + \fi +} + +\define@choicekey*{mkessler-fancythm}{ownenvironments}[\val\nr]{on, natural, off}{% + \ifcase\nr\relax + \mkessler@fancythm@includestarstrue + \mkessler@fancythm@showstarstrue + \or + \mkessler@fancythm@includestarstrue + \mkessler@fancythm@showstarsfalse + \or + \mkessler@fancythm@includestarsfalse + \mkessler@fancythm@showstarsfalse + \fi +} + +\define@choicekey*{mkessler-fancythm}{oralremarks}[\val\nr]{on,natural,off}{% + \ifcase\nr\relax + \mkessler@fancythm@includeoraltrue + \mkessler@fancythm@markoraltrue + \or + \mkessler@fancythm@includeoraltrue + \mkessler@fancythm@markoraltrue + \or + \mkessler@fancythm@includeoralfalse + \fi +} + +%%%%% Option section +\newif\ifmkessler@fancythm@english\mkessler@fancythm@englishtrue +\DeclareOptionX{german}{\mkessler@fancythm@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@fancythm@englishfalse} +\DeclareOptionX{english}{\mkessler@fancythm@englishtrue} + +\DeclareOptionX{showdaggers}{\setkeys{mkessler-fancythm}{mkessler@fancythm@showdaggers=#1}} +\DeclareOptionX{ownenvironments}{\setkeys{mkessler-fancythm}{ownenvironments=#1}} +\DeclareOptionX{oralremarks}{\setkeys{mkessler-fancythm}{oralremarks=#1}} + +\DeclareOptionX{lecturenumbers}{\setkeys{mkessler-fancythm}{mkessler@fancythm@lecturenumbers=#1}} +\DeclareOptionX{numbersmallenvironments}{\setkeys{mkessler-fancythm}{mkessler@fancythm@numbersmallenvironments=#1}} + +\DeclareOptionX{defaulttheorems}{\setkeys{mkessler-fancythm}{mkessler@fancythm@defaulttheorems=#1}} + +\DeclareOptionX*{\PackageWarning{mkessler-fancythm}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +%%%%%%%% Implementation section + +%Required Packages and setup +\RequirePackage{amsmath} +\RequirePackage{amsthm} +\RequirePackage{mdframed} +\RequirePackage{thmtools} +\RequirePackage[skins]{tcolorbox} +\RequirePackage{mfirstuc} +\RequirePackage{xifthen} +\RequirePackage{xparse} +\tcbuselibrary{breakable} + +% Dummy counters +\declaretheorem[numberwithin=section]{mkessler@fancythm@dummy} +\declaretheorem[numberwithin=mkessler@fancythm@dummy]{mkessler@fancythm@smalldummy} + +%%%%% Main part, i.e. providing macros for defining new theorems + +%%Environments that are numbered by default have 3 versions: +% - the standard one, for numbering +% - one asterisk, to exclude them from numbering (because they were not numbered in the lecture) -> they will be numbered if 'truenmubers' option is set +% - two asterisks, for marking them as self-added, so they will not be numbered, but will receive a visual asterisk. -> They will be numbered if 'truenumbers' option is set + + + +\NewDocumentCommand{\declarebigtheorem}{O{} O{} m m O{}}{ + %First, store the name of the theorem in \theoremname + \ifmkessler@fancythm@english + \ifthenelse{\isempty{#2}}{\def\theoremname{#4}}{\def\theoremname{#2}} + \else + \ifthenelse{\isempty{#1}}{\def\theoremname{#4}}{\def\theoremname{#1}} + \fi + + %Define the mane version of the theorem + \ifthenelse{\isempty{#5}}{\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling = mkessler@fancythm@dummy]{#4}}{} + + %Define the versions theorem*, theorem**, dtheorem +\ifmkessler@fancythm@lecturenumbers + \ifmkessler@fancythm@numbersmallenvironments + \declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling=mkessler@fancythm@smalldummy]{#4*} + \declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, sibling=mkessler@fancythm@smalldummy]{#4**} + \declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, sibling=mkessler@fancythm@smalldummy]{d#4} + \else + \declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, numbered=no]{#4*} + \declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, numbered = no]{#4**} + \declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, numbered = no]{d#4} + \fi + \else + \declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling=mkessler@fancythm@dummy]{#4*} + \declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, sibling=mkessler@fancythm@dummy]{#4**} + \declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, sibling=mkessler@fancythm@dummy]{d#4} + \fi + \ifmkessler@fancythm@includestars\else\renewenvironment{#4**}{\comment}{\endcomment}\fi +} + +\NewDocumentCommand{\declaresmalltheorem}{O{} O{} m m}{ + %Get the name of the theorem and store it in \theoremname + \ifmkessler@fancythm@english + \ifthenelse{\isempty{#2}}{\def\theoremname{#4}}{\def\theoremname{#2}} + \else + \ifthenelse{\isempty{#1}}{\def\theoremname{#4}}{\def\theoremname{#1}} + \fi + \ifmkessler@fancythm@numbersmallenvironments + \ifmkessler@fancythm@numbersmallenvironmentswiththeorem + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling = mkessler@fancythm@smalldummy]{#4} + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, sibling=mkessler@fancythm@smalldummy]{#4*} + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, sibling=mkessler@fancythm@smalldummy]{d#4} + \else + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling=mkessler@fancythm@dummy]{#4} + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, sibling=mkessler@fancythm@dummy]{#4*} + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, sibling=mkessler@fancythm@dummy]{d#4} + \fi + \else + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, numbered = no]{#4} + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showstars *\else\fi, numbered = no]{#4*} + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}\ifmkessler@fancythm@showdaggers $^{\dagger}$\else\fi, numbered = no]{d#4} + \fi + \declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling=mkessler@fancythm@dummy]{n#4} + \ifmkessler@fancythm@includestars\else\renewenvironment{#4*}{\comment}{\endcomment}\fi +} + + +%%%% If requested, now define some default theoremstyles +\ifmkessler@fancythm@defaulttheorems + \RequirePackage[default styles]{mkessler-thmstyle} % Easy setup of mdframed styles + + \declarebigtheorem[Satz][Theorem]{thmredmarginandfill}{theorem} \ifmkessler@fancythm@english\else\AtBeginDocument{\def\theoremautorefname{Satz}}\fi + \declarebigtheorem{thmredmarginandfill}{proposition} + \declarebigtheorem[Korollar]{thmredmarginandfill}{corollary} + \declarebigtheorem{thmorangemarginandfill}{lemma} + \declarebigtheorem[Lemma und Definition][Lemma and Definition]{thmorangemarginbluefill}{lemmadef} + \declarebigtheorem{thmbluemarginandfill}{definition} + \declarebigtheorem[Satz und Definition][Theorem and Definition]{thmredmarginbluefill}{theoremdef} + \declarebigtheorem[Proposition und Definition][Proposition and Definition]{thmredmarginbluefill}{propositiondef} + \declarebigtheorem{thmvioletmarginandfill}{notation} + \declarebigtheorem[zuSatz][Addition to Theorem]{thmredmarginandfill}{additiontheorem} + + %%%Environments that are not numbered by default (notation, question, example, remark etc) have two forms: + % - normal form: won't be numbered unless 'mkessler@fancythm@numbersmallenvironments' is set + % - having an asterisk: will be displayed with an asterisk, will be numbered if 'numbersmallenvironments' is set + %Notation + + \declaresmalltheorem[Notationsmissbrauch][Abuse of Notation]{thmvioletmargin}{abuse} + \declaresmalltheorem[Beispiel]{thmgreenmargin}{example} + \declaresmalltheorem[Bemerkung]{thmyellowmargin}{remark} + \declaresmalltheorem[Lob]{thmgoldmargin}{praise} + \declaresmalltheorem[Trivial Nonsense][Trivial Nonsense]{thmyellowmargin}{trivial} + \declaresmalltheorem[Frage]{thmblackmarginandfill}{question} + \declaresmalltheorem[Organisatorisches][Organisational stuff]{thmblackmargin}{orga} + \declaresmalltheorem[Fakt]{thmredmargin}{fact} + + %%%% Specially treated stuff + + \declaresmalltheorem[\ifmkessler@fancythm@markoral Mündliche Anmerkung\else Bemerkung\fi][\ifmkessler@fancythm@markoral Oral remark\else remark\fi]{thmyellowmargin}{oral} + % Option to remove oral remarks when needed + \ifmkessler@fancythm@includeoral\else + \renewenvironment{oral}{\comment}{\endcomment} + \renewenvironment{oral*}{\comment}{\endcomment} + \renewenvironment{doral}{\comment}{\endcomment} + \fi + + + %%%%%%%% Other mdframed style boxes + + \newtcolorbox{recap}{before skip = 0.5cm, after skip = 0.5cm, enhanced, sharp corners = all, colback = white, colframe = gray, toprule=0pt, bottomrule=0pt, leftrule=0pt,rightrule=0pt, overlay = { + \draw[gray, line width = 2pt] (frame.north west) -- ++(0.5cm, 0pt); + \draw[gray, line width=2pt] (frame.south east) -- ++(-0.5cm, 0pt); + \draw[gray, line width=2pt] (frame.north west) -- ++ (0pt, -0.5cm); + \draw[gray, line width=2pt] (frame.south east) -- ++(0pt, 0.5cm); + }} + + \newenvironment{moral}{% + \begin{mdframed}[linecolor=green!70!black]% + \bfseries\color{green!50!black}}% + {\end{mdframed}} + + \newenvironment{antimoral}{% + \begin{mdframed}[linecolor=red!70!black]% + \bfseries\color{red!50!black}}% + {\end{mdframed}} + + + %%%%%%%%%%%% Non-mdframed theorems + + \theoremstyle{plain} + \newtheorem{variant}{\ifmkessler@fancythm@english Variant\else Variante\fi} + \newtheorem{assumption}{\ifmkessler@fancythm@english Assumption\else Annahme\fi} + + \theoremstyle{definition} + \newtheorem*{note}{\ifmkessler@fancythm@english Note\else Anmerkung\fi} + \newtheorem*{warning}{\color{red}\ifmkessler@fancythm@english Warning \else Warnung\fi} + \newtheorem*{goal}{\ifmkessler@fancythm@english Goal \else Ziel\fi} + \newtheorem*{strategy}{\ifmkessler@fancythm@english Proof Strategy \else Beweisstrategie\fi} + \newtheorem*{goal*}{\ifmkessler@fancythm@english Goal* \else Ziel*\fi} + \newtheorem*{problem}{Problem} + \newtheorem*{info}{Information} + + + \newtheorem*{answer}{\ifmkessler@fancythm@english Answer\else Antwort\fi} + \newtheorem{observe}[theorem]{\ifmkessler@fancythm@english Observe\else Beobachte\fi} + \newtheorem*{property}{\ifmkessler@fancythm@english Property\else Eigenschaft\fi} + \newtheorem*{intuition}{Intuition} + \newtheorem*{recall}{\ifmkessler@fancythm@english Recall\else Erinnerung\fi} + \newtheorem*{idea}{\ifmkessler@fancythm@english Idea\else Idee\fi} + \newtheorem{exercise}{\ifmkessler@fancythm@english Exercise\else Aufgabe\fi}[section] + \newtheorem{reminder}{\ifmkessler@fancythm@english Reminder\else Erinnerung\fi} + +\fi % end of default theorems diff --git a/environments/mkessler-thmstyle.sty b/environments/mkessler-thmstyle.sty new file mode 100644 index 0000000..c11b81e --- /dev/null +++ b/environments/mkessler-thmstyle.sty @@ -0,0 +1,137 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'thmstyle.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-thmstyle}[2022/01/11 - Mdframed Styles used for fancythm package] + + +%%%%% This provides easy-to-use styles, especially for use with the + +\RequirePackage{xkeyval} + +% A simple option wether to define some default styles +\newif\ifmkessler@thmstyle@defaultstyles\mkessler@thmstyle@defaultstylesfalse +\DeclareOptionX{defaultstyles}{\mkessler@thmstyle@defaultstylestrue} + +\DeclareOptionX*{\PackageWarning{mkessler-thmstyle}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +\RequirePackage{amsthm} +\RequirePackage{thmtools} +\RequirePackage{mdframed} +\RequirePackage{xcolor} +\RequirePackage{xparse} +\definecolor{gold}{RGB}{218,165,32} + +\mdfsetup{skipabove=8pt,skipbelow=\topskip} + +\NewDocumentCommand{\declarefancymdfstyle}{O{} m O{} }{ + \if\relax\detokenize{#1}\relax + \mdfdefinestyle{\if\relax\detokenize{#3}\relax md#2margin\else #3\fi}{% + linecolor=#2, + linewidth = 2pt, + leftmargin = 0cm, + rightmargin=0cm, + rightline=false, + topline=false, + bottomline=false + } + \else + \mdfdefinestyle{\if\relax\detokenize{#3}\relax md#2marginand#1fill\else #3\fi}{% + linecolor=#2, + linewidth = 2pt, + leftmargin = 0cm, + rightmargin=0cm, + backgroundcolor=#1, + rightline=false, + topline=false, + bottomline=false + } + \fi +} + +\NewDocumentCommand{\declarefancythmstyle}{O{} m O{} }{ + \declarefancymdfstyle[#1]{#2} + \if\relax\detokenize{#3}\relax + \if\relax\detokenize{#1}\relax + \declaretheoremstyle[ + mdframed={style= + \if\relax\detokenize{#1}\relax md#2margin\else md#2marginand#1fill\fi + }, + postheadspace={0.3em}, + notefont=\mdseries + ]{thm#2margin} + \else + \declaretheoremstyle[ + mdframed={style= + \if\relax\detokenize{#1}\relax md#2margin\else md#2marginand#1fill\fi + }, + postheadspace={0.3em}, + notefont=\mdseries + ]{thm#2marginand#1fill} + \fi + \else + \declaretheoremstyle[ + mdframed={style= + \if\relax\detokenize{#1}\relax md#2margin\else md#2marginand#1fill\fi + }, + postheadspace={0.3em}, + notefont=\mdseries + ]{#3} + \fi +} + +\ifmkessler@thmstyle@defaultstyles + \declarefancythmstyle[red!8]{red}[thmredmarginandfill] + \declarefancythmstyle[orange!10]{orange}[thmorangemarginandfill] + \declarefancythmstyle[blue!7]{blue}[thmbluemarginandfill] + \declarefancythmstyle{green!70!black}[thmgreenmargin] + \declarefancythmstyle{gold}[thmgoldmargin] + \declarefancythmstyle{yellow!80!orange}[thmyellowmargin] + \declarefancythmstyle{gray}[thmgraymargin] + \declarefancythmstyle[violet!7]{violet}[thmvioletmarginandfill] + \declarefancythmstyle{violet}[thmvioletmargin] + \declarefancythmstyle[blue!7]{red}[thmredmarginbluefill] + \declarefancythmstyle{red}[thmredmargin] + \declarefancythmstyle[blue!7]{orange}[thmorangemarginbluefill] + \declarefancythmstyle[violet!20!gray!20]{black}[thmblackmarginandfill] + \declarefancythmstyle{black}[thmblackmargin] +\fi diff --git a/exercises/mkessler-sheet.cls b/exercises/mkessler-sheet.cls new file mode 100644 index 0000000..ef3b3c7 --- /dev/null +++ b/exercises/mkessler-sheet.cls @@ -0,0 +1,123 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This class has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'sheet.pycls'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the class again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX class is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the class can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{mkessler-sheet}[2022/01/11 - Write up university exercise sheets] + + + +% This is meant as a layouting class for easily writing up exercise sheets. +% Use \course \sheetnumber and \author to set metadata of the document +% Use option [largename] if the author(s) is/are too long and collide in the fancy header +% Use option [german|ngerman|english] to control language appearance + +\RequirePackage{scrbase} + +\newif\ifmkessler@sheet@english\mkessler@sheet@englishtrue +\DeclareOption{german}{\mkessler@sheet@englishfalse} +\DeclareOption{ngerman}{\mkessler@sheet@englishfalse} +\DeclareOption{english}{\mkessler@sheet@englishtrue} + +\newif\ifmkessler@sheet@largename\mkessler@sheet@largenamefalse +\DeclareOption{large-name}{\mkessler@sheet@largenametrue} + +\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}} +\ProcessOptions\relax + +\LoadClass{scrartcl} + +\KOMAoption{fontsize}{12pt} +\KOMAoption{parskip}{half-} +\KOMAoption{DIV}{12} +\KOMAoption{headings}{normal} + +\RequirePackage{scrlayer-scrpage} +\KOMAoption{headsepline}{:} + +\def\@course{\ClassError{mkessler-sheet}{No \noexpand\course given}{Use \noexpand\course{} 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..91db347 --- /dev/null +++ b/lecture-notes/mkessler-lectures.sty @@ -0,0 +1,154 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'lectures.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-lectures}[2022/01/11 - Package for managing different lectures within a document] + + +% The core of the lecture command this package provides has been taken from the preamble in +% https://github.com/gillescastel/university-setup +% which is licensed under + +%MIT License + +%Copyright (c) 2019 Gilles Castel + +%Permission is hereby granted, free of charge, to any person obtaining a copy +%of this software and associated documentation files (the "Software"), to deal +%in the Software without restriction, including without limitation the rights +%to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%copies of the Software, and to permit persons to whom the Software is +%furnished to do so, subject to the following conditions: +% +%The above copyright notice and this permission notice shall be included in all +%copies or substantial portions of the Software. +% +%THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%SOFTWARE. +% This package extends the lecture command to make a summary of lectures at the beginning of a document, and has thus modified this command. + +\RequirePackage{xkeyval} + +\newif\ifmkessler@lectures@english\mkessler@lectures@englishtrue +\DeclareOptionX{german}{\mkessler@lectures@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@lectures@englishfalse} +\DeclareOptionX{english}{\mkessler@lectures@englishtrue} + +\newif\ifmkessler@lectures@fancyhead\mkessler@lectures@fancyheadfalse +\DeclareOptionX{fancyhead}{\mkessler@lectures@fancyheadtrue} + +\DeclareOptionX*{\PackageWarning{mkessler-lectures}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +%Tocloft package for making a list of lectures +\RequirePackage{tocloft} +%Store name of the summary in a command to use it multiple times +\newcommand\mkessler@lectures@listlecturename{\ifmkessler@lectures@english Summary of lectures\else Übersicht der Vorlesungen\fi} +\newlistof{lecture}{lec}{\mkessler@lectures@listlecturename} % Declare new list of lectures +%Settings how to print the summary +\renewcommand{\cftdot}{} +\renewcommand\cftlecturefont{\normalfont\bfseries} +\renewcommand\cftlecturepagefont{\normalfont\bfseries} +\renewcommand\cftlectitlefont{\Large\bfseries} +\renewcommand\cftbeforelectureskip{1em} + +%Command to parse the date +\RequirePackage{xifthen} +\def\testdateparts#1{\dateparts#1\relax} +\def\dateparts#1 #2 #3 #4 #5\relax{ + \marginpar{\small\textsf{\mbox{#1 #2 #3 #5}}} +} + +%Define the main lecture command to start a new lecture +\def\mkessler@lectures@lectureprefix{\ifmkessler@lectures@english Lecture\else Vorlesung\fi} +\def\@lecture{}% + +\RequirePackage{xparse} + +% \lecture[keywords]{date}[number]{title}[margin note] +\NewDocumentCommand{\lecture}{ O{} m O{} m O{}}{ + \ifthenelse{\isempty{#3}}{\refstepcounter{lecture}}{\setcounter{lecture}{#3}} + %Store lecture name in the macro \@lecture + \ifthenelse{\isempty{#4}}{% + \def\@lecture{\mkessler@lectures@lectureprefix\, \thelecture}% + }{% + \def\@lecture{\mkessler@lectures@lectureprefix\, \thelecture: #4}% + }% + \marginpar{\small\textsf{\parbox{10em}{\mkessler@lectures@lectureprefix\, \thelecture \\#2}}} + %Add lecture as an entry to the lectures file + \addcontentsline{lec}{lecture}{\mkessler@lectures@lectureprefix\,\thelecture\,(#2)} + %If key words are provided, add the key words of the lecture below the entry + \ifthenelse{\isempty{#1}}{}{\addtocontents{lec}{\smallskip\hspace{1.5em}\protect\parbox{\dimexpr\textwidth-\@pnumwidth - 2em}{#1}}} +} + +%Provide a command to show the summary of lectures +\DeclareRobustCommand*{\summaryoflectures}{ + \phantomsection + \addcontentsline{toc}{section}{\mkessler@lectures@listlecturename} + \thispagestyle{plain} + \listoflecture +} + + +\ifmkessler@lectures@fancyhead + \RequirePackage{fancyhdr} + \pagestyle{fancy} + + % LE: left even + % RO: right odd + % CE, CO: center even, center odd + + \fancyhead[RO,LE]{\@lecture} % Right odd, Left even + \fancyhead[RE,LO]{} % Right even, Left odd + + %%No fancy headers in the appendix (as there is no lecture) + \let\mkessler@lectures@stored@appendix\appendix + \renewcommand\appendix{ + \mkessler@lectures@stored@appendix + \fancyhead[RO,LE]{} + \renewcommand{\headrulewidth}{0pt} + } +\fi diff --git a/lecture-notes/mkessler-script.cls b/lecture-notes/mkessler-script.cls new file mode 100644 index 0000000..d6e85d7 --- /dev/null +++ b/lecture-notes/mkessler-script.cls @@ -0,0 +1,211 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This class has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'script.pycls'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the class again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX class is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the class can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesClass{mkessler-script}[2022/01/11 - Write up lecture notes as script] + + + +\RequirePackage{xkeyval} + +\newif\ifmkessler@script@english\mkessler@script@englishtrue +\DeclareOptionX{german}{\mkessler@script@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@script@englishfalse} +\DeclareOptionX{english}{\mkessler@script@englishtrue} + +\newif\ifmkessler@script@showversion\mkessler@script@showversiontrue +\DeclareOptionX{show version}{\mkessler@script@showversiontrue} +\DeclareOptionX{hideversion}{\mkessler@script@showversionfalse} + +\newif\ifmkessler@script@fancyfoot\mkessler@script@fancyfootfalse +\DeclareOptionX{fancyfoot}{\mkessler@script@fancyfoottrue} + + +\newif\ifmkessler@script@gitversion\mkessler@script@gitversionfalse +\DeclareOptionX{git}{\mkessler@script@gitversiontrue} + +\DeclareOptionX*{\ClassWarning{mkessler-script}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +\RequirePackage{xifthen} + +%%%%Define command to set metainformation of document +%Set the course +\def\@course{\ClassError{mkessler-script}{No \noexpand\course given}{See documentation for details}}% +\DeclareRobustCommand*{\course}[1]{\gdef\@course{#1}} + +\def\@lecturer{\ClassError{mkessler-script}{No \noexpand\lecturer given}{See documentation for details}}% +\def\@lecturertitle{} +\DeclareRobustCommand*{\lecturer}[2][]{ + \gdef\@lecturer{#2} + \gdef\@lecturertitle{\ifmkessler@script@english Lecturer\else\ifthenelse{\isempty{#1}}{Dozent}{Dozentin}\fi}{} +} + +%Set the assistant +\newif\ifmkessler@script@printassistant\mkessler@script@printassistantfalse +\def\@assistant{}% +\def\@assistantitle{} +\DeclareRobustCommand*{\assistant}[2][]{ + \mkessler@script@printassistanttrue + \gdef\@assistant{#2} + \gdef\@assistanttitle{\ifmkessler@script@english Assistant\else\ifthenelse{\isempty{#1}}{Assistent}{Assistentin}\fi} +} + +%%%%Load base class article +\LoadClass{article} + +\ifmkessler@script@showversion + \ifmkessler@script@gitversion + \RequirePackage[dirty={ (local changes have been made!)}]{gitinfo2} + \fi +\fi + + +%%%%Title +%Define layout of title using course, lecturer, assistant and author, and optionally the current time +\RequirePackage{xparse} +\RequirePackage{datetime} +\renewcommand\@maketitle{% + \newpage + \null + \vskip 2em% + \begin{center}% + \let \footnote \thanks + {\LARGE \@course \par}% + \vskip 1.5em% + {\large + \lineskip .5em% + \begin{tabular}[t]{c}% + \@lecturertitle \\ + {\sc \@lecturer} \\ + \end{tabular}\par + \ifmkessler@script@printassistant + \vskip 1em% + \begin{tabular}[t]{c}% + \@assistanttitle \\ + {\sc \@assistant} \\ + \end{tabular}\par + \fi + \vskip 1em% + \begin{tabular}[t]{c}% + \ifmkessler@script@english Notes\else Mitschrift\fi \\ + {\sc \@author} \\ + \end{tabular} + \par}% + \ifmkessler@script@showversion + \vskip 3em% + \begin{tabular}[t]{c}% + {\small Version} \\ + \ifmkessler@script@gitversion + git: \gitFirstTagDescribe\\ + \ifmkessler@script@english compiled\else kompiliert\fi: + \fi\today\,\currenttime \\ + \end{tabular}\par + \fi + \vskip 4em% + \end{center}% + \par + \vskip 1.5em +} + + +%%%The following is based on the repository +% https://github.com/gillescastel/university-setup +% but has been modified for own purposes. The original content is distributed under the following license: + +%MIT License + +%Copyright (c) 2019 Gilles Castel + +%Permission is hereby granted, free of charge, to any person obtaining a copy +%of this software and associated documentation files (the "Software"), to deal +%in the Software without restriction, including without limitation the rights +%to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%copies of the Software, and to permit persons to whom the Software is +%furnished to do so, subject to the following conditions: +% +%The above copyright notice and this permission notice shall be included in all +%copies or substantial portions of the Software. +% +%THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%SOFTWARE. + +%%%% These are the fancy headers + +\ifmkessler@script@fancyfoot + \RequirePackage{fancyhdr} + \pagestyle{fancy} + + % LE: left even + % RO: right odd + % CE, CO: center even, center odd + + \fancyhead[RO,LE]{} % Right odd, Left even + \fancyhead[RE,LO]{} % Right even, Left odd + + \fancyfoot[RO,LE]{\thepage} % Right odd, Left even + \fancyfoot[RE,LO]{} % Right even, Left odd + \fancyfoot[C]{\leftmark} % Center + + \makeatother + +\fi + +% Fix some stuff +% %http://tex.stackexchange.com/questions/76273/multiple-pdfs-with-page-group-included-in-a-single-page-warning +\pdfsuppresswarningpagegroup=1 + +% Fix some spacing +% http://tex.stackexchange.com/questions/22119/how-can-i-change-the-spacing-before-theorems-with-amsthm +\def\thm@space@setup{% + \thm@preskip=\parskip \thm@postskip=0pt +} + +% Don't indent paragraphs, leave some space between them +\RequirePackage{parskip} + +% Hide page number when page is empty +\RequirePackage{emptypage} diff --git a/math/mkessler-categories.sty b/math/mkessler-categories.sty new file mode 100644 index 0000000..c6426a9 --- /dev/null +++ b/math/mkessler-categories.sty @@ -0,0 +1,181 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'categories.pysty3'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ProvidesExplPackage{mkessler-categories}{2022/01/11}{v2.5.1}{Definitions of categories with automatic indexing} + +%% Wrapper commands specific for defining categories + +\RequirePackage{mkessler-symbindex} +\RequirePackage{translator} +\RequirePackage{amsmath} + +\usedictionary{translator-mathematical-categories-dictionary} + +\NewDocumentCommand{\category}{ m } + { + \operatorname{\textbf{#1}} + } + + +\NewDocumentCommand{\DeclareCategory}{ O{} m } + { + \DeclareSymbol[group = categories, #1]{#2} + } + + +\NewDocumentCommand{\DeclareSimpleCategory}{ o m o} + { + \IfValueTF{#1} + { + \IfValueTF{#3} + { + \DeclareCategory[operator = \category, description = #3, #1]{#2} + } + { + \DeclareCategory[operator = \category, #1]{#2} + } + } + { + \IfValueTF{#3} + { + \DeclareCategory[operator = \category, description = #3]{#2} + } + { + \DeclareCategory[operator = \category]{#2} + } + } + } + +\makeindex + [ + name = categories, + title = \translate{Index~of~categories} + ] + + +%%%% Categories +\DeclareSimpleCategory + { Top } + [ + \translate{Top~(Category~description)} + ] +\DeclareSimpleCategory + { hTop } + [ + \translate{hTop~(Category~description)} + ] +\DeclareSimpleCategory + { Set } + [ + \translate{Set~(Category~description)} + ] +\DeclareSimpleCategory + { CHaus } + [ + \translate{CHaus~(Category~description)} + ] +\DeclareSimpleCategory + { Grp } + [ + \translate{Grp~(Category~description)} + ] +\DeclareSimpleCategory + { Ab } + [ + \translate{Ab~(Category~description)} + ] +\DeclareSimpleCategory + { CRing } + [ + \translate{CRing~(Category~description)} + ] +\DeclareSimpleCategory + { Ring } + [ + \translate{Ring~(Category~description)} + ] +\DeclareSimpleCategory + [ + defaultargs = _k + ] + { Vect } + [ + \translate{Vect~(Category~description)} + ] +\DeclareSimpleCategory + { Cat } + [ + \translate{Cat~(Category~description)} + ] +\DeclareSimpleCategory + [ + defaultargs = _R + ] + { Mod } + [ + \translate{Mod~(Category~description)} + ] +\DeclareSimpleCategory + [ + defaultargs = _k + ] + { Alg } + [ + \translate{Alg~(Category~description)} + ] +\DeclareSimpleCategory + { Field } + [ + \translate{Field~(Category~description)} + ] +\DeclareSimpleCategory + [ + defaultargs = _k + ] + { AffVar } + [ + \translate{AffVar~(Category~description)} + ] + +\DeclareSimpleCategory + { Sch } + [ + \translate{Sch~(Category~description)} + ] diff --git a/math/mkessler-faktor.sty b/math/mkessler-faktor.sty new file mode 100644 index 0000000..4fb7659 --- /dev/null +++ b/math/mkessler-faktor.sty @@ -0,0 +1,86 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'faktor.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-faktor}[2022/01/11 - Faktor package that also handles cofaktors] + + + +% Extension the faktor package for +% - cofaktor command that provides A \ B notation +% - scaling the / in the middle +% - fine positioning of enumerator / denominator + +% This is essentially taken from the stackexchange question found at +% https://tex.stackexchange.com/questions/27591/extending-the-faktor-package +% and answered by 'Werner' (https://tex.stackexchange.com/users/5764/werner) +% +% This package only packages the corresponding answer and provides an analoguous way of a \cofactor command + +%Dependencies +\RequirePackage{xparse} +\RequirePackage{amssymb} % provides \diagup and \diagdown +\RequirePackage{ifthen} % ifthenelse syntax +\RequirePackage{mathtools} + + +\DeclareDocumentCommand{\faktor}{s O{0.5} m O{-0.5} m}{% \newfaktor[*][#2]{#3}[#4]{#5} -> #3/#5 + \setbox0=\hbox{\ensuremath{#3}}% Store numerator + \setbox1=\hbox{\ensuremath{\diagup}}% Store slash / + \setbox2=\hbox{\ensuremath{#5}}% Store denominator + \raisebox{#2\ht1}{\usebox0}% Numerator + \mkern-5mu\ifthenelse{\equal{#1}{\BooleanTrue}}% Slash / + {\diagup}% regular \faktor slash + {\rotatebox{-44}{\rule[#4\ht2]{0.4pt}{-#4\ht2+#2\ht0+\ht0}}}% tilted rule as a slash + \mkern-4mu% + \raisebox{#4\ht2}{\usebox2}% Denominator +} + +\DeclareDocumentCommand{\cofaktor}{s m O{-0.5} m O{0.5}}{% \newfaktor[*][#2]{#3}[#4]{#5} -> #2\#4 + \setbox0=\hbox{\ensuremath{#3}}% Store numerator + \setbox1=\hbox{\ensuremath{\diagdown}}% Store slash / + \setbox2=\hbox{\ensuremath{#5}}% Store denominator + \raisebox{#2\ht1}{\usebox0}% Numerator + \mkern-5mu\ifthenelse{\equal{#1}{\BooleanTrue}}% Slash / + {\diagdown}% regular \faktor slash + {\rotatebox{44}{\rule[-#4\ht2]{0.4pt}{#4\ht2-#2\ht0+\ht0}}}% tilted rule as a slash + \mkern-4mu% + \raisebox{#4\ht2}{\usebox2}% Denominator +} diff --git a/math/mkessler-math.sty b/math/mkessler-math.sty new file mode 100644 index 0000000..a4dd474 --- /dev/null +++ b/math/mkessler-math.sty @@ -0,0 +1,88 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'math.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-math}[2022/01/11 - Main math package.] + + +% Collects the basic math packages used for my lecture-note write-ups +% This just imports all the packages I use for writing up mathematics +% Probably, you will just want to load them separately for more +% customization + +\RequirePackage{xkeyval} + +\newif\ifmkessler@math@english\mkessler@math@englishtrue +\DeclareOptionX{german}{\mkessler@math@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@math@englishfalse} +\DeclareOptionX{english}{\mkessler@math@englishtrue} + +\DeclareOptionX*{\PackageWarning{mkessler-math}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +%%%% Import the other custom math packages +\RequirePackage{mkessler-mathfont} % Load this first to ensure untouched fonts + +\RequirePackage{amsmath} +\RequirePackage{mathtools} +\RequirePackage{amsthm} +\RequirePackage{amssymb} + +\RequirePackage{latexsym} + +% Für Formeln +\RequirePackage{mathabx} +\RequirePackage{esint} + +\RequirePackage{IEEEtrantools} +\RequirePackage[ngerman,ruled,vlined]{algorithm2e} + + +%%% Importing other custom packages +\RequirePackage{mkessler-faktor} +\RequirePackage{mkessler-mathsymb} +\RequirePackage[basic]{mkessler-mathalias} +% mkessler-mathfont has already been imported +\RequirePackage[\ifmkessler@math@english english\else german\fi]{mkessler-mathop} +\RequirePackage{mkessler-categories} +\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..584cd21 --- /dev/null +++ b/math/mkessler-mathalias.sty @@ -0,0 +1,89 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'mathalias.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-mathalias}[2022/01/11 - Easy aliasing for math style commands] + + + +\RequirePackage{xkeyval} + +\newif\ifmkessler@mathalias@basic\mkessler@mathalias@basicfalse +\newif\ifmkessler@mathalias@extended\mkessler@mathalias@extendedfalse + +\DeclareOptionX{basic}{\mkessler@mathalias@basictrue} +\DeclareOptionX{extended}{\mkessler@mathalias@extendedtrue\mkessler@mathalias@basictrue} + +\DeclareOptionX*{\PackageWarning{mkessler-mathalias}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +%Usage: \makealiasesforwith\{}{} +% 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} + \expandafter\makealiasesforwith\expandafter\mathbb\expandafter{\expandafter b\expandafter}\expandafter{\mkessler@mathalias@all} +\fi diff --git a/math/mkessler-mathfig.sty b/math/mkessler-mathfig.sty new file mode 100644 index 0000000..4be9d25 --- /dev/null +++ b/math/mkessler-mathfig.sty @@ -0,0 +1,87 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'mathfig.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-mathfig}[2022/01/11 - Math figures with TikZ / pgfplots / xy] + + +% This is just a collection of the packages I use to typeset mathematical figures +% most commonly plots, commutative diagrams or geometry + + + +\RequirePackage{pgfplots} % Plots +\pgfplotsset{compat=1.7} + +\RequirePackage{tikz} % Plots / drawings +\usetikzlibrary{calc, intersections, through, quotes, angles, babel, positioning, snakes} + +\RequirePackage{tikz-cd} %Commutative diagrams +\RequirePackage{xparse} + + +%%for small diagrams, similar to tikz-cd +\RequirePackage[all]{xy} % for small diagrams, e.g. arrows +%%% In older versions, you found +% \RequirePackage{xy} +% \xyoption{all} +% here, but this messes with the catcode of the @ sign (which no package should do!) +% so that further parts in this package would get broken + + +\newcommand\pushoutsymbol{\tikz[baseline=0.5,scale=0.2]{ + \draw[-] (0,0) --(0,1) -- (1,1); + \draw (1,0) circle (1.5pt);} +} + +\newcommand\pullbacksymbol{\tikz[baseline=0.5,scale=0.2]{ + \draw[-] (0,0) --(1,0) -- (1,1); + \draw (0,1) circle (1.5pt);} +} + +% This is used in a tikzcd +\NewDocumentCommand\pushout{ O{dr} }{ + \arrow[phantom, pos=0.45]{#1}{\pushoutsymbol} +} + +% This is used in a tikzcd +\NewDocumentCommand\pullback{ O{dr} }{ + \arrow[phantom, pos=0.45]{#1}{\pullbacksymbol} +} diff --git a/math/mkessler-mathfixes.sty b/math/mkessler-mathfixes.sty new file mode 100644 index 0000000..40a1563 --- /dev/null +++ b/math/mkessler-mathfixes.sty @@ -0,0 +1,82 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'mathfixes.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-mathfixes}[2022/01/11 - Hacky math packages for some (custom) fixes] + + +% This just brings together some (possibly ugly) hacks that I use when writing math. Likely, you do not want to use this except when building around this package (like I did), or already have similar shortcuts + +%Proper Degree command +\def\mkessler@mathfixes@degree{\ensuremath{^\circ}} +\AtBeginDocument{\let\degree\mkessler@mathfixes@degree} + +% Always put limits under \limit +\let\oldlim\lim\def\lim{\oldlim\limits} + +% Print equal sign under subset by default to not confuse people +% (I still write \subset, because this enables me remove this renewcommand and have the default \subset command evaluated instead +\let\mkessler@mathfixes@subseteq\subseteq +\let\mkessler@mathfixes@supseteq\supseteq +\AtBeginDocument{ + \let\subset\mkessler@mathfixes@subseteq + \let\supset\mkessler@mathfixes@supseteq +} + +%%Renew phi and epsilon to their proper versions, make the old ones available as +% uglyphi and uglyepsilon + +\let\mkessler@mathfixes@stored@phi\phi +\let\mkessler@mathfixes@stored@varphi\varphi +\AtBeginDocument{ + \let\phi\mkessler@mathfixes@stored@varphi + \let\varphi\mkessler@mathfixes@stored@varphi + \let\uglyphi\mkessler@mathfixes@stored@phi + \let\oldphi\mkessler@mathfixes@stored@phi + \let\goldenratio\mkessler@mathfixes@stored@phi +} + +\let\mkessler@mathfixes@stored@epsilon\epsilon +\let\mkessler@mathfixes@stored@varepsilon\varepsilon +\AtBeginDocument{ + \let\epsilon\mkessler@mathfixes@stored@varepsilon + \let\uglyepsilon\mkessler@mathfixes@stored@epsilon + \let\oldepsilon\mkessler@mathfixes@stored@epsilon +} diff --git a/math/mkessler-mathfont.sty b/math/mkessler-mathfont.sty new file mode 100644 index 0000000..5176c75 --- /dev/null +++ b/math/mkessler-mathfont.sty @@ -0,0 +1,67 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'mathfont.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-mathfont}[2022/01/11 - Collects several math fonts together] + + +%%% Store away the several (partially conflicting) fonts in internal macros + +\let\mkessler@mathfont@none@mathcal\mathcal + +\RequirePackage{mathrsfs} +\let\mkessler@mathfont@mathrsfs@mathscr\mathscr + +\RequirePackage[mathscr]{eucal} +\let\mkessler@mathfont@eucal@optionmathscr@mathscr\mathscr + +\RequirePackage{amsfonts} +\let\mkessler@mathfont@amsfonts@mathfrak\mathfrak + +%%% Provide user commands to internally stored macros +\def\mkessler@mathfont@restorefonts{ + \let\mathcal\mkessler@mathfont@none@mathcal % Set \mathcal to default calligrapic + \let\mathfrak\mkessler@mathfont@amsfonts@mathfrak % Set \mathfrak to mathfrak from amsfonts + \let\mathscr\mkessler@mathfont@mathrsfs@mathscr % Set \mathscr to mathscript from mathrsfs package + \let\mathcat\mkessler@mathfont@mathrsfs@mathscr % Set \mathcat to mathscript from mathrsfs package + \let\mathcalo\mkessler@mathfont@eucal@optionmathscr@mathscr % Set \mathcalo (for old calligraphic) to \mathscr from [mathscr]{eucal} package +} + +\AtBeginDocument{\mkessler@mathfont@restorefonts} diff --git a/math/mkessler-mathop.sty b/math/mkessler-mathop.sty new file mode 100644 index 0000000..da21bf2 --- /dev/null +++ b/math/mkessler-mathop.sty @@ -0,0 +1,252 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'mathop.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-mathop}[2022/01/11 - Math Operator Package] + + +%Provides some commonly used Operators used in the write-ups of my lecture notes + +\RequirePackage{xkeyval} + +\newif\ifmkessler@mathop@english\mkessler@mathop@englishtrue +\DeclareOptionX{german}{\mkessler@mathop@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@mathop@englishfalse} +\DeclareOptionX{english}{\mkessler@mathop@englishtrue} + +\DeclareOptionX*{\PackageWarning{mkessler-mathop}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +%%%%%Package dependencies +\RequirePackage{amsmath} +\RequirePackage{bbm} +\RequirePackage{mathtools} + +%%%%Different types of operator wrappers: + +% For simple math operators that are just to be printed as their name +\newcommand\DeclareSimpleMathOperator[1]{ + \expandafter\providecommand\csname #1\endcsname{\operatorname{#1}} +} + +%%%For distributions +%Introduce synonym for \operatorname +\newcommand\mkessler@mathop@distribution[1]{\operatorname{#1}} +%Easily declare new distributions +\newcommand\DeclareDistribution[1]{\expandafter\def\csname #1\endcsname{\mkessler@mathop@distribution{#1}}} + +%%%%%%%%%%% Operators +%Basic commands +\DeclareSimpleMathOperator{id} +\DeclareSimpleMathOperator{im} +\DeclareSimpleMathOperator{Bild} +\DeclareSimpleMathOperator{dom} +\DeclareSimpleMathOperator{Span} +\DeclareSimpleMathOperator{Aut} +\DeclareMathOperator{\rhs}{RHS} %Right hand side of equation +\DeclareMathOperator{\lhs}{LHS} %Left hand side of equation + +%%Provide \ggT \gcd \kgV \lcm for 'greatest common denominator' and 'least common multiple' +% \ggT und \gcd, as well as \kgV and \lcm are synonyms and language-aware, so that +% e.g. when the german language option is loaded, even +% \lcm would print 'kgV' +% The starred versions of the four commands will ignore the language option and print their +% exact names (without the *, of course) +\DeclareMathOperator{\@mkessler@mathop@ggT}{ggT} +\DeclareMathOperator{\@@mkessler@mathop@ggT}{\if@mkessler@mathop@english gcd\else ggT\fi} +\def\ggT{\@ifstar\@mkessler@mathop@ggT\@@mkessler@mathop@ggT} + +\DeclareMathOperator{\@mkessler@mathop@gcd}{gcd} +\DeclareMathOperator{\@@mkessler@mathop@gcd}{\if@mkessler@mathop@english gcd\else ggT\fi} +\def\gcd{\@ifstar\@mkessler@mathop@gcd\@@mkessler@mathop@gcd} + +\DeclareMathOperator{\@mkessler@mathop@kgV}{kgV} +\DeclareMathOperator{\@@mkessler@mathop@kgV}{\if@mkessler@mathop@english lcm\else kgV\fi} +\def\kgV{\@ifstar\@mkessler@mathop@kgV\@@mkessler@mathop@kgV} + +\DeclareMathOperator{\@mkessler@mathop@lcm}{lcm} +\DeclareMathOperator{\@@mkessler@mathop@lcm}{\if@mkessler@mathop@english lcm\else kgV\fi} +\def\lcm{\@ifstar\@mkessler@mathop@lcm\@@mkessler@mathop@lcm} + +%Complex numbers +\DeclareMathOperator{\mkessler@mathop@impart}{Im} +\renewcommand\Im\mkessler@mathop@impart +\DeclareMathOperator{\mkessler@mathop@repart}{Re} +\renewcommand\Re\mkessler@mathop@repart + +%Linear Algebra +\DeclareSimpleMathOperator{Sym} +\DeclareSimpleMathOperator{supp} +\DeclareSimpleMathOperator{sgn} +\DeclareSimpleMathOperator{coker} +\DeclareSimpleMathOperator{rank} +\DeclareSimpleMathOperator{rk} +\DeclareSimpleMathOperator{Mat} +\DeclareSimpleMathOperator{ev} +\DeclareSimpleMathOperator{tr} +\DeclareSimpleMathOperator{GL} +\DeclareSimpleMathOperator{PGL} + +%Algebra +\DeclareSimpleMathOperator{Quot} +\DeclareSimpleMathOperator{rad} +\DeclareSimpleMathOperator{Spec} +\DeclareSimpleMathOperator{Frac} +\DeclareSimpleMathOperator{Gal} +\DeclareSimpleMathOperator{Ext} +\DeclareSimpleMathOperator{Tor} +\DeclareSimpleMathOperator{MaxSpec} +\DeclareSimpleMathOperator{Sh} +\DeclareSimpleMathOperator{Proj} +\DeclareSimpleMathOperator{QCoh} +\DeclareSimpleMathOperator{Fun} +\DeclareMathOperator{\Nil}{\mathcal{N}il} +\DeclareMathOperator{\Ouv}{\mathcal{O}uv} +\DeclareMathOperator{\PreSh}{Pre-Sh} +\newcommand{\tensor}{\otimes} %Synonym for tensoring + +%Analysis +\DeclareSimpleMathOperator{dx} +\DeclareSimpleMathOperator{dy} +\DeclareSimpleMathOperator{dz} +\DeclareSimpleMathOperator{dt} + +%Sets +\DeclareSimpleMathOperator{conv} +\DeclareSimpleMathOperator{dist} +\DeclareSimpleMathOperator{diam} + +%%Stochastic (Algorithmische Mathematik II) +\DeclareDistribution{Bin} +\DeclareDistribution{Ber} +\DeclareDistribution{Geo} +\DeclareDistribution{Poi} +\DeclareDistribution{Unif} +\DeclareDistribution{Var} +\DeclareDistribution{Cov} + +%Topology +\DeclareSimpleMathOperator{pr} +\def\twedge{\vee} % Semantically correct macros for wedge product +\def\tsmash{\wedge} % Semantically correct macro for smash product +\DeclareSimpleMathOperator{sing} +\DeclareSimpleMathOperator{cell} + +%Category Theory +\DeclareSimpleMathOperator{Ob} +\DeclareSimpleMathOperator{Hom} +\DeclareSimpleMathOperator{Mor} +\DeclareSimpleMathOperator{End} +\DeclareSimpleMathOperator{colim} + +%Set theory +\DeclareSimpleMathOperator{card} +\DeclareSimpleMathOperator{Cd} +\DeclareSimpleMathOperator{Ord} +\DeclareSimpleMathOperator{otp} +\DeclareSimpleMathOperator{Card} + +%%Galoiskohomologie +\DeclareSimpleMathOperator{Br} +\DeclareSimpleMathOperator{EXT} +\DeclareSimpleMathOperator{Ind} +\DeclareSimpleMathOperator{Char} +\DeclareSimpleMathOperator{res} +\DeclareSimpleMathOperator{inf} +\DeclareSimpleMathOperator{cov} +\newcommand{\del}{\partial} % Semantically correct operator for boundary maps + +%% Algebraic geometry +\DeclareSimpleMathOperator{eq} +\DeclareSimpleMathOperator{Idem} +\DeclareSimpleMathOperator{Supp} +\DeclareSimpleMathOperator{Ann} +\DeclareSimpleMathOperator{OC} +\DeclareSimpleMathOperator{red} +\DeclareSimpleMathOperator{can} +\DeclareSimpleMathOperator{Pic} + +\newcommand\leftadjoint\vdash +\newcommand\rightadjoint\dashv + +% Characteristic function +\newcommand*{\cfun}{\ensuremath{\mathbbm{1}}} +\newcommand*{\One}{\cfun} + +%Paired Delimiters +\DeclarePairedDelimiter\ceil{\lceil}{\rceil} +\DeclarePairedDelimiter\floor{\lfloor}{\rfloor} + +%Norm and absolute value +%Make them scaling by default and have \abs*{} as the non-scaling version of the command +\DeclarePairedDelimiter\abs{\lvert}{\rvert} +\let\oldabs\abs +\def\abs{\@ifstar{\oldabs}{\oldabs*}} + +\DeclarePairedDelimiter\norm{\lVert}{\rVert} +\let\oldnorm\norm +\def\norm{\@ifstar{\oldnorm}{\oldnorm*}} + +\DeclareMathOperator{\amalgprod}{\star} + + +\newcommand\op{\text{op}} +\newcommand\opposite{^{\op}} + +\newcommand\ab{\text{ab}} +\newcommand\abelianization{^{\ab}} + + +%Taken from user egreg on +% https://tex.stackexchange.com/a/22255 +\newcommand\frestriction[2]{{% we make the whole thing an ordinary symbol + \left.\kern-\nulldelimiterspace % automatically resize the bar with \right + #1 % the function + \vphantom{\big|} % pretend it's a little taller at normal size + \right|_{#2} % this is the delimiter +}} + + +\newcommand\directlimit{\varinjlim} +\newcommand\inverselimit{\varprojlim} + +\DeclareMathOperator*{\freeproduct}{\raisebox{-0.5ex}{\scalebox{2}{$\ast$}}} + diff --git a/math/mkessler-mathsymb.sty b/math/mkessler-mathsymb.sty new file mode 100644 index 0000000..a023315 --- /dev/null +++ b/math/mkessler-mathsymb.sty @@ -0,0 +1,90 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'mathsymb.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-mathsymb}[2022/01/11 - Some extra math-related symbols.] + + +% A collection of math-related symbols / tools I often use, mainly collected together from Stack Overflow or hacked together myself + +%Dependencies +\RequirePackage{tikz} + +% noloc command by +% user 'egreg' (https://tex.stackexchange.com/users/4427/egreg) +% posted on +% https://tex.stackexchange.com/questions/546713/spacing-in-colon (Spacing in \colon) +% Prints a mirrored \colon correctly +\RequirePackage{amsmath} +\newcommand\noloc{% + \nobreak + \mspace{6mu plus 1mu} + {:} + \nonscript\mkern-\thinmuskip + \mathpunct{} + \mspace{2mu} +} + +% \contra command from Gilles Castel, taken from +% https://github.com/gillescastel/university-setup/blob/master/preamble.tex +% (retrieved 2021-09-08) +% The preamble linked above is MIT-licensed by Gilles Castel +\RequirePackage{stmaryrd} % for \lightning +\RequirePackage{graphicx} +\newcommand\contra{\scalebox{1.5}{$\lightning$}} + +%Print a warning sign +\RequirePackage{pgf} +\newcommand\Warning{% + \makebox[1.4em][c]{% + \makebox[0pt][c]{\raisebox{.1em}{\small!}}% + \makebox[0pt][c]{\color{red}\Large$\bigtriangleup$}}}% + +%Make circled symbols +\newcommand*\circled[1]{\tikz[baseline=(char.base)]{ + \node[shape=circle,draw,inner sep=2pt] (char) {#1};} +} + +% When dealing with chain complexes, one often uses a bullet as placeholder for the index to mean the whole chain: +\newcommand\chainbullet{\bullet} + + + + diff --git a/math/mkessler-unicodechar.sty b/math/mkessler-unicodechar.sty new file mode 100644 index 0000000..056c8d1 --- /dev/null +++ b/math/mkessler-unicodechar.sty @@ -0,0 +1,73 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'unicodechar.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-unicodechar}[2022/01/11 - Wrapper for the newunicodechare package with some defined unicode symbols.] + + +% This is just a simple package loading the newunicodechar package and defining the common unicode symbols i regularly use for typesetting mathematics + +\RequirePackage{newunicodechar} + +\newunicodechar{α}{\ensuremath\alpha} +\newunicodechar{β}{\ensuremath\beta} +\newunicodechar{γ}{\ensuremath\gamma} +\newunicodechar{δ}{\ensuremath\delta} +\newunicodechar{ε}{\ensuremath\epsilon} +\newunicodechar{ζ}{\ensuremath\zeta} +\newunicodechar{η}{\ensuremath\eta} +\newunicodechar{θ}{\ensuremath\theta} +\newunicodechar{ι}{\ensuremath\iota} +\newunicodechar{κ}{\ensuremath\kappa} +\newunicodechar{λ}{\ensuremath\lambda} +\newunicodechar{μ}{\ensuremath\mu} +\newunicodechar{ν}{\ensuremath\nu} +\newunicodechar{ξ}{\ensuremath\xi} +\newcommand\omicron{o}\newunicodechar{ο}{\ensuremath\omicron} % For semantical use +\newunicodechar{π}{\ensuremath\pi} +\newunicodechar{ρ}{\ensuremath\rho} +\newunicodechar{σ}{\ensuremath\sigma} +\newunicodechar{τ}{\ensuremath\tau} +\newunicodechar{υ}{\ensuremath\upsilon} +\newunicodechar{φ}{\ensuremath\phi} +\newunicodechar{χ}{\ensuremath\chi} +\newunicodechar{ψ}{\ensuremath\psi} +\newunicodechar{ω}{\ensuremath\omega} + diff --git a/math/translator-mathematical-categories-dictionary-English.dict b/math/translator-mathematical-categories-dictionary-English.dict new file mode 100644 index 0000000..2e1e0f3 --- /dev/null +++ b/math/translator-mathematical-categories-dictionary-English.dict @@ -0,0 +1,58 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This dictionary has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'mathematical-categories.pydict'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the dictionary again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX dictionary is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the dictionary can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ProvidesDictionary{translator-mathematical-categories-dictionary}{English} + +\providetranslation{Index of categories}{Index of categories} +\providetranslation{Top (Category description)}{spaces and continuous maps} +\providetranslation{Set (Category description)}{Sets and functions} +\providetranslation{hTop (Category description)}{Spaces and homotopy classes of continuous maps} +\providetranslation{CHaus (Category description)}{Compact hausdorff spaces and continuous maps} +\providetranslation{Grp (Category description)}{Groups and homomorphisms} +\providetranslation{Ab (Category description)}{Abelian groups and homomorphisms} +\providetranslation{CRing (Category description)}{Commutative rings and homomorphisms} +\providetranslation{Ring (Category description)}{Rings and homomorphisms} +\providetranslation{Vect (Category description)}{$k$-vector spaces and linear maps} +\providetranslation{Cat (Category description)}{Small categories and functors} +\providetranslation{Mod (Category description)}{Left $R$-modules and homomorphisms} +\providetranslation{Alg (Category description)}{$k$-algebras and homomorphisms} +\providetranslation{Field (Category description)}{Fields and field extensions} +\providetranslation{AffVar (Category description)}{Affine Varieties over $k$} +\providetranslation{Sch (Category description)}{Schemes and homomorphisms} diff --git a/math/translator-mathematical-categories-dictionary-German.dict b/math/translator-mathematical-categories-dictionary-German.dict new file mode 100644 index 0000000..a5b3866 --- /dev/null +++ b/math/translator-mathematical-categories-dictionary-German.dict @@ -0,0 +1,58 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This dictionary has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'mathematical-categories.pydict'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the dictionary again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX dictionary is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the dictionary can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ProvidesDictionary{translator-mathematical-categories-dictionary}{German} + +\providetranslation{Index of categories}{Kategorienverzeichnis} +\providetranslation{Top (Category description)}{Räume und stetige Abbildungen} +\providetranslation{Set (Category description)}{Mengen und Funktionen} +\providetranslation{hTop (Category description)}{Räume und Homotopieklassen von stetigen Abbildungen} +\providetranslation{CHaus (Category description)}{Kompakte Hausdorffräume und stetige Abbildungen} +\providetranslation{Grp (Category description)}{Gruppen und Homomorphismen} +\providetranslation{Ab (Category description)}{Abelsche Gruppen und Homomoorphismen} +\providetranslation{CRing (Category description)}{Kommutative Ringe und Homomorphismen} +\providetranslation{Ring (Category description)}{Ringe und Homomorphismen} +\providetranslation{Vect (Category description)}{Vektorräume und lineare Abbildungen} +\providetranslation{Cat (Category description)}{Kleine Kategorien und Funktoren} +\providetranslation{Mod (Category description)}{$R$-Linksmodule und Homomorphismen} +\providetranslation{Alg (Category description)}{$k$-Algebren und Homomorphismen} +\providetranslation{Field (Category description)}{Körper und Körpererweiterungen} +\providetranslation{AffVar (Category description)}{Affine Varietäten über $k$} +\providetranslation{Sch (Category description)}{Schemata und Homomorphismen} diff --git a/misc/mkessler-hypersetup.sty b/misc/mkessler-hypersetup.sty new file mode 100644 index 0000000..8331cdd --- /dev/null +++ b/misc/mkessler-hypersetup.sty @@ -0,0 +1,69 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'hypersetup.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-hypersetup}[2022/01/11 - Package for setting up hyperref, cleveref and some default hyperref colors] + + + +\RequirePackage{xkeyval} + +\newif\ifmkessler@hypersetup@cleveref\mkessler@hypersetup@clevereffalse +\DeclareOptionX{cleveref}{\mkessler@hypersetup@clevereftrue} + +\DeclareOptionX*{\PackageWarning{mkessler-hypersetup}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +%%%Hyperref and setup +\RequirePackage{xcolor} % To compute the colors below +\RequirePackage{etoolbox} % Checking for defined commands + +\def\mkessler@hypersetup@exec{ + \RequirePackage{hyperref} % Hyperlinks + \ifmkessler@hypersetup@cleveref + \RequirePackage{cleveref} % Better referencing + \fi + \hypersetup{colorlinks, citecolor=violet, urlcolor=blue!80!black, linkcolor=red!50!black, pdfauthor=\@author, pdftitle=\ifdef{\@course}{\@course}{\@title}} +} + +\AtEndPreamble{ + \mkessler@hypersetup@exec +} diff --git a/misc/mkessler-incfig.sty b/misc/mkessler-incfig.sty new file mode 100644 index 0000000..9717ea5 --- /dev/null +++ b/misc/mkessler-incfig.sty @@ -0,0 +1,89 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'incfig.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-incfig}[2022/01/11 - Figure support for inkscape figures by Gilles Castell] + + + +%%%%%%%% +% This is just a small package bundling the figure support for the inkscape figures by Gilles Castel. The setup can be originally found in the preamble +% https://github.com/gillescastel/university-setup +% and is specifically designed to work with the inkscape figures explained at +% https://castel.dev/post/lecture-notes-2/ + +% These are licensed under + +%MIT License + +%Copyright (c) 2019 Gilles Castel + +%Permission is hereby granted, free of charge, to any person obtaining a copy +%of this software and associated documentation files (the "Software"), to deal +%in the Software without restriction, including without limitation the rights +%to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +%copies of the Software, and to permit persons to whom the Software is +%furnished to do so, subject to the following conditions: +% +%The above copyright notice and this permission notice shall be included in all +%copies or substantial portions of the Software. +% +%THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +%IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +%FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +%AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +%LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +%OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +%SOFTWARE. +% This package extends the lecture command to make a summary of lectures at the beginning of a document, and has thus modified this command. + + +% Note that this package is NOT associated to Gilles Castel in any official way + + +% Figure support as explained in my blog post. +\RequirePackage{import} +\RequirePackage{xifthen} +\RequirePackage{pdfpages} +\RequirePackage{transparent} +\newcommand{\incfig}[1]{% + \def\svgwidth{\columnwidth} + \import{figures/}{#1.pdf_tex} +} diff --git a/misc/mkessler-vocab.sty b/misc/mkessler-vocab.sty new file mode 100644 index 0000000..892bff1 --- /dev/null +++ b/misc/mkessler-vocab.sty @@ -0,0 +1,89 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'vocab.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-vocab}[2022/01/11 - Package for emphasizing vocabulary] + + +%%Provides a \vocab<[name in index]>{vocabulary} command to print vocabulary in bold blue and automatically index it. + +\RequirePackage{xkeyval} + +\newif\ifmkessler@vocab@english\mkessler@vocab@englishtrue +\DeclareOptionX{german}{\mkessler@vocab@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@vocab@englishfalse} +\DeclareOptionX{english}{\mkessler@vocab@englishtrue} +\newif\ifmkessler@vocab@index\mkessler@vocab@indexfalse + +\DeclareOptionX{index}{\mkessler@vocab@indextrue} +\DeclareOptionX{noindex}{\mkessler@vocab@indexfalse} + +\DeclareOptionX*{\PackageWarning{mkessler-vocab}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +%%%%Management of vocabulary and corresponding index +\RequirePackage{xparse} +\RequirePackage{xcolor} +\ifmkessler@vocab@index + \RequirePackage{imakeidx} + \makeindex[name=vocabindex, columns=2, title=\ifmkessler@vocab@english Index\else Stichwortverzeichnis\fi, intoc] + + %Emphasize \vocabulary + \RequirePackage{expl3} + \ExplSyntaxOn + \NewDocumentCommand{\vocab}{O{} m}{ + \textbf{\color{blue} #2}% + \if\relax\detokenize{#1}\relax% + \index[vocabindex]{\text_titlecase_first:n{#2}} % true branch: #1 was empty + \else + \index[vocabindex]{#1} % false branch: #1 was supplied + \fi + } + \ExplSyntaxOff + \newcommand\printvocabindex{ + \printindex[vocabindex] + } +\else + \NewDocumentCommand{\vocab}{O{} m }{ + \textbf{\color{blue} #2} + } +\fi + diff --git a/utils/mkessler-counters.sty b/utils/mkessler-counters.sty new file mode 100644 index 0000000..08b4dc3 --- /dev/null +++ b/utils/mkessler-counters.sty @@ -0,0 +1,56 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'counters.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-counters}[2022/01/11 - Write LaTeX counters to auxiliary file] + + + +\RequirePackage{etoolbox} + +\newwrite\mkessler@counters@out +\immediate\openout\mkessler@counters@out\jobname.cnt\relax +\AtBeginDocument{ + \let\mkessler@counters@saved@stepcounter\stepcounter + \def\stepcounter#1{ + \mkessler@counters@saved@stepcounter{#1} + \immediate\write\mkessler@counters@out{#1: \csname the#1\endcsname}} +} + diff --git a/utils/mkessler-findpackage.sty b/utils/mkessler-findpackage.sty new file mode 100644 index 0000000..cdc8897 --- /dev/null +++ b/utils/mkessler-findpackage.sty @@ -0,0 +1,87 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'findpackage.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-findpackage}[2022/01/11 - Find a package that provides some command] + + +% This is just a quick packaging of the post by +% 'Martin Nyolt' (https://tex.stackexchange.com/users/78783/martin-nyolt) +% found at +% https://tex.stackexchange.com/users/78783/martin-nyolt +% Note that SO answers are by default CC BY-SA 3.0 licensed, see +% https://creativecommons.org/licenses/by-sa/3.0/ + +\def\find@load#1[#2]#3[#4]{% + % load the package + \find@fileswith@pti@ns{#1}[#2]{#3}[#4]% + % check if commands exists now + \ifcsname\find@command\endcsname + \typeout{Package #3 introduces command \find@command.}% + % command has been found, revert to original version without checks + \let\@fileswith@pti@ns\find@fileswith@pti@ns + \else + % somehow, \@fileswith@pti@ns is restored after loading a package + % thus, patch it again + \let\@fileswith@pti@ns\find@load + \fi +}% + +\newcommand*{\findpackagebycommand}[1]{% + % using this multiple times - esp. when the package has not been found yet - + % will break things. Thus, check first that \find@command has never been defined before + \ifx\find@command\undefined + \def\find@command{#1}% + % first, check if this command is already defined + \ifcsname\find@command\endcsname + % in this case, just issue a warning and do nothing + \@latex@warning@no@line{Command \find@command \space is already defined}% + \else + % overwrite the internal \@fileswith@pti@ns command, which does the actual loading + % \@fileswith@pti@ns is used internally by \usepackage and \RequirePackage + \let\find@fileswith@pti@ns\@fileswith@pti@ns + \let\@fileswith@pti@ns\find@load + \fi + \else + % used multiple times - prevent and give a warning + \@latex@warning@no@line{You can use \protect\findpackagebycommand \space only once}% + \errmessage{Invalid use of command findpackagebycommand.}% + \fi +} diff --git a/utils/mkessler-symbindex.sty b/utils/mkessler-symbindex.sty new file mode 100644 index 0000000..8ebbc35 --- /dev/null +++ b/utils/mkessler-symbindex.sty @@ -0,0 +1,141 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'symbindex.pysty3'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ProvidesExplPackage{mkessler-symbindex}{2022/01/11}{v2.5.1}{Declaring of math symbols with automatic indexing} + + + +\RequirePackage{imakeidx} +\RequirePackage{xparse} + +% Keys used for declaring symbols +\keys_define:nn { symbol } + { + operator .tl_set:N = \l_symbol_operator_tl, + operator .default:n = \use:n, + formula .tl_set:N = \l_symbol_formula_tl, + formula .default:n = \c_novalue_tl, + ordered .tl_set:N = \l_symbol_ordered_tl, + ordered .default:n = \c_novalue_tl, + description .tl_set:N = \l_symbol_description_tl, + description .default:n = \c_novalue_tl, + group .tl_set:N = \l_symbol_group_tl, + group .default:n = \c_novalue_tl, + defaultargs .tl_set:N = \l_symbol_defaultargs_tl, + defaultargs .default:n = \c_novalue_tl + } + +% Core macro not to be used publicly directly. Usage: + % #1 = indexname / group + % #2 = symbolname, + % #3 = description + % #4 = operator to apply (one argument) - can be \use:n for identity + % #5 = substitution when called + % #6 = default appendices to macro in index (e.g. _R) + % #7 = ordering in index +\cs_new_protected:Nn\symbol_define:nnnnnnn + { + \bool_new:c { used_#2 } + \cs_new_protected:cn { symbol_#2: } + { + #4{#5} + \bool_if:cF { used_#2 } + { + \index[#1] + { + #7 + @ + $#4{#5}#6$ + #3 + } + \bool_gset_true:c { used_#2 } + } + } + \exp_args:Nc\gdef{#2} + { + \use:c { symbol_#2: } + } + } +\cs_generate_variant:Nn\symbol_define:nnnnnnn { V n V V V V V} + + +% Main package interface +\NewDocumentCommand{\DeclareSymbol}{ O{} m} + { + \keys_set:nn{ symbol } + { + operator, + formula, + ordered, + description, + group, + defaultargs + } + \keys_set:nn{ symbol }{#1} + \tl_if_eq:NnTF\l_symbol_description_tl{\c_novalue_tl} + { + \tl_set:Nn\l_symbol_description_tl { \c_empty_tl } + } + { + \tl_put_left:Nn\l_symbol_description_tl { ,\c_space_tl } + } + \tl_if_eq:NnT\l_symbol_formula_tl{\c_novalue_tl} + { + \tl_set:Nn\l_symbol_formula_tl {#2} + } + \tl_if_eq:NnT\l_symbol_ordered_tl{\c_novalue_tl} + { + \tl_set:Nn\l_symbol_ordered_tl {#2} + } + \tl_if_eq:NnT\l_symbol_defaultargs_tl{\c_novalue_tl} + { + \tl_clear:N\l_symbol_defaultargs_tl + } + \symbol_define:VnVVVVV + \l_symbol_group_tl + { + #2 + } + \l_symbol_description_tl + \l_symbol_operator_tl + \l_symbol_formula_tl + \l_symbol_defaultargs_tl + \l_symbol_ordered_tl + } diff --git a/utils/mkessler-todo.sty b/utils/mkessler-todo.sty new file mode 100644 index 0000000..76deeb3 --- /dev/null +++ b/utils/mkessler-todo.sty @@ -0,0 +1,69 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'todo.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-todo}[2022/01/11 - Easy standards for the todonotes package] + + + +\RequirePackage[colorinlistoftodos]{todonotes} +\RequirePackage{xparse} + +% Make \todo{} available inside minipages +\usepackage{marginnote} +\let\marginpar\marginnote + +\setuptodonotes{tickmarkheight=0.1cm, size=\small} + +\newcommand\todoref{ + \todo[color=red!40]{Add reference.} +} + +\newcommand\todoquestion{ + \todo[color=black!10, size=\tiny] +} + +\newcommand\todotex{ + \todo[color=green!75!black] +} + +\newcommand\todotypo{ + \todo[color=blue!40, size=\tiny]{Typo corrected, double check this.} +} diff --git a/wip/mkessler-bibliography.sty b/wip/mkessler-bibliography.sty new file mode 100644 index 0000000..d7a004b --- /dev/null +++ b/wip/mkessler-bibliography.sty @@ -0,0 +1,80 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'bibliography.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-bibliography}[2022/01/11 - Package to easily print bibliography and image attributions in document] + + +\RequirePackage{xkeyval} + +\newif\ifmkessler@bibliography@english\mkessler@bibliography@englishtrue +\DeclareOptionX{german}{\mkessler@bibliography@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@bibliography@englishfalse} +\DeclareOptionX{english}{\mkessler@bibliography@englishtrue} + +\def\mkessler@bibliography@bibfile{bibliography.bib} +\def\mkessler@bibliography@imagefile{images.bib} +\DeclareOptionX{bibfile}[bibliography.bib]{\def\mkessler@bibliography@bibfile{#1}} +\DeclareOptionX{imagefile}[images.bib]{\def\mkessler@bibliography@imagefile{#1}} + +\DeclareOptionX*{\PackageWarning{mkessler-bibliography}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +%%%%Bibliography management +\RequirePackage[backend=biber,style=alphabetic]{biblatex} +\addbibresource{\mkessler@bibliography@bibfile} +\addbibresource{\mkessler@bibliography@imagefile} + +%Provide simpler commands to properly print image attributions and literature +\DeclareRobustCommand*{\printimageattributions}{ + \def\imageattributionstitle{\ifmkessler@bibliography@english Image attributions \else Bildquellen\fi} + \phantomsection + \addcontentsline{toc}{section}{\imageattributionstitle} + \printbibliography[title={\imageattributionstitle}, type=image] +} + +\DeclareRobustCommand*{\printliterature}{ + \def\literaturetitle{\ifmkessler@bibliography@english Literature\else Literatur\fi} + \phantomsection + \addcontentsline{toc}{section}{\literaturetitle} + \printbibliography[title={\literaturetitle}, nottype=image] + +} diff --git a/wip/mkessler-enumerate.sty b/wip/mkessler-enumerate.sty new file mode 100644 index 0000000..7d1f7d1 --- /dev/null +++ b/wip/mkessler-enumerate.sty @@ -0,0 +1,84 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'enumerate.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-enumerate}[2022/01/11 - Simple enumeration package wrapper. Handles custom number setting and beamer class.] + + + +\@ifclassloaded{beamer}{}{ + \RequirePackage[shortlabels]{enumitem} + \RequirePackage{tikz} + \newcommand\setItemnumber[1]{\setcounter{enum\romannumeral\@enumdepth}{\numexpr#1-1\relax}} + + \def\mkessler@enumerate@drawcircle#1{ + \tikz[baseline=(char.base)]{ + \node[shape=circle,draw,inner sep=2pt] (char) {#1}; + } + } + + \def\mkessler@enumerate@circled{ + \protect\mkessler@enumerate@drawcircle{\arabic*} + } + \def\mkessler@enumerate@property{ + (\roman*) + } + \def\mkessler@enumerate@equivalent{ + (\arabic*) + } + \def\mkessler@enumerate@holds{ + \arabic*) + } + + \SetEnumerateShortLabel{c}{\mkessler@enumerate@circled} + \SetEnumerateShortLabel{p}{\mkessler@enumerate@property} + \SetEnumerateShortLabel{e}{\mkessler@enumerate@equivalent} + \SetEnumerateShortLabel{h}{\mkessler@enumerate@holds} + + \SetEnumitemValue{label}{circled}{\mkessler@enumerate@circled} + \SetEnumitemValue{label}{property}{\mkessler@enumerate@property} + \SetEnumitemValue{label}{equivalent}{\mkessler@enumerate@equivalent} + \SetEnumitemValue{label}{holds}{\mkessler@enumerate@holds} + + \SetEnumitemKey{property}{label=property} + \SetEnumitemKey{equivalent}{label=equivalent} + \SetEnumitemKey{holds}{label=holds} + \SetEnumitemKey{circled}{label=circled} +} diff --git a/wip/mkessler-exsheet.sty b/wip/mkessler-exsheet.sty new file mode 100644 index 0000000..fa7f321 --- /dev/null +++ b/wip/mkessler-exsheet.sty @@ -0,0 +1,81 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'exsheet.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-exsheet}[2022/01/11 - Include exercise sheets into lecture notes easily.] + + + +\RequirePackage{xkeyval} +\newif\ifmkessler@exsheet@english\mkessler@exsheet@englishtrue +\DeclareOptionX{german}{\mkessler@exsheet@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@exsheet@englishfalse} +\DeclareOptionX{english}{\mkessler@exsheet@englishtrue} + +\DeclareOptionX*{\PackageWarning{mkessler-exsheet}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +\RequirePackage{mkessler-fancythm} + + +\def\mkessler@exsheet@sheet{ + \ifmkessler@exsheet@english Exercise Sheet\else Übungsblatt\fi +} + +\newcounter{mkessler@exsheet@sheet} + +\declaretheorem[style=thmgreenmargin, numberwithin=mkessler@exsheet@sheet, name=\ifmkessler@exsheet@english Exercise\else Aufgabe\fi]{mkessler@exsheet@sheetexercise} + +\usepackage{xkeyval} + +\NewDocumentEnvironment{sheetexercise}{O{}}{ +\begin{mkessler@exsheet@sheetexercise\expandafter}\if\relax\detokenize{#1}\relax\else[#1]\fi\label{exercise-\themkessler@exsheet@sheetexercise} +}{ + \end{mkessler@exsheet@sheetexercise\expandafter}\relax +} + +\newcommand\exercisesheet{ + \refstepcounter{mkessler@exsheet@sheet} + \subsection*{\themkessler@exsheet@sheet. \mkessler@exsheet@sheet} + \addcontentsline{toc}{subsection}{\themkessler@exsheet@sheet. \mkessler@exsheet@sheet} +} + + diff --git a/wip/mkessler-figures.sty b/wip/mkessler-figures.sty new file mode 100644 index 0000000..bc15278 --- /dev/null +++ b/wip/mkessler-figures.sty @@ -0,0 +1,48 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'figures.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-figures}[2022/01/11 - Packages related to inclusion of figures.] + + + +\RequirePackage{caption} +\RequirePackage{subcaption} +\RequirePackage{float} diff --git a/wip/mkessler-gag.sty b/wip/mkessler-gag.sty new file mode 100644 index 0000000..d81ca4a --- /dev/null +++ b/wip/mkessler-gag.sty @@ -0,0 +1,59 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'gag.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-gag}[2022/01/11 - Numbering of environments with a fractional environment number] + + +% For the stack exchange source, see +% https://tex.stackexchange.com/questions/598076/how-to-have-a-fractional-environment-number/598080?noredirect=1#comment1499689_598080 +% However, for a reason i don't understand the posted answer does not work for me, but i had to replace theorem with definition in the definition of the gag environment (so apparently, i have to do this for each environment separately). It seems that the definitions of this document do use \thedefinition and not \thetheorem, although by default this is not the case. + +\newcounter{gag} +\makeatletter +\newenvironment{gag}[1]{% + \let\savedthedefinition\thedefinition + \thm@headfont{\bfseries\boldmath}% + \stepcounter{gag}% + \renewcommand{\thedefinition}{\savedthedefinition#1}% + \renewcommand{\theHdefinition}{gag\thegag}% + \addtocounter{definition}{-1}\ignorespaces +}{\ignorespacesafterend} +\makeatother diff --git a/wip/mkessler-lang-input.sty b/wip/mkessler-lang-input.sty new file mode 100644 index 0000000..77bb8c0 --- /dev/null +++ b/wip/mkessler-lang-input.sty @@ -0,0 +1,65 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'lang-input.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-lang-input}[2022/01/11 - Packages related to language input. Still work in progress, not intended for use.] + + +\RequirePackage[\ifutf utf8\else utf8x\fi]{inputenc} +\RequirePackage[T1]{fontenc} + +% Font +\RequirePackage{lmodern} % Use latin modern font +\RequirePackage{anyfontsize} % Provides \fontsize{...}{...}\selectfont +\RequirePackage{soul} % Hyphenation, crossing \ldots +\RequirePackage{microtype} % Hyphenation, character protrusion, font expansion + +% Layout +\RequirePackage{parskip} % Leave blank line instead of indenting paragraphs +\RequirePackage{onehalfspacing} +\RequirePackage{changepage} % Change page layout in middle of document + +\RequirePackage{tabto} % Tabulators + +% Language support +\RequirePackage[\ifenglish english \else ngerman\fi]{babel} + +%Referencation +\RequirePackage{lastpage} %\pageref{LastPage} for reference on the last page diff --git a/wip/mkessler-refproof.sty b/wip/mkessler-refproof.sty new file mode 100644 index 0000000..a778ba4 --- /dev/null +++ b/wip/mkessler-refproof.sty @@ -0,0 +1,236 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'refproof.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-refproof}[2022/01/11 - Automatic references to theorems in proofs. Claim counters within proofs] + + + +\RequirePackage{xkeyval} + +\newif\ifmkessler@refproof@english\mkessler@refproof@englishtrue +\DeclareOptionX{german}{\mkessler@refproof@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@refproof@englishfalse} +\DeclareOptionX{english}{\mkessler@refproof@englishtrue} + +\DeclareOptionX*{\PackageWarning{mkessler-refproof}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +\RequirePackage{amssymb} +\RequirePackage{amsthm} +\RequirePackage{etoolbox} +\RequirePackage{xparse} +\RequirePackage{refcount} +\RequirePackage{translator} +\RequirePackage{fifo-stack} + +\usedictionary{translator-proof-dictionary} + +%%Give claim an own counter and let it reset at each proof +%See also at: +%https://tex.stackexchange.com/questions/283502/reset-counter-at-beginning-of-proof +\newtheorem{claim}{\translate{Claim}} +\newtheorem*{claim*}{\translate{Claim}} +\AtBeginDocument{\def\claimautorefname{\translate{Claim}}} + +\AtBeginDocument{ + \@ifpackageloaded{hyperref}{ + \let\mkessler@refproof@autoref\autoref + }{ + \let\mkessler@refproof@autoref\ref + } +} + +\newcounter{mkessler@refproof@proofdepth} +\setcounter{mkessler@refproof@proofdepth}{0} + +\let\mkessler@refproof@saved@proof\proof +\let\mkessler@refproof@saved@endproof\endproof + +\FSCreate{mkessler@refproof@save@claim}{-1} + +%%subproof environment - essentially copied proof environment from amsthm and modified its name + symbol +\DeclareRobustCommand{\blackqed}{% + \ifmmode \mathqed + \else + \leavevmode\unskip\penalty9999 \hbox{}\nobreak\hfill + \quad\hbox{$\blacksquare$}% + \fi +} + +\newenvironment{mkessler@refproof@saved@subproof}[1][\translate{Subproof}]{\par + \pushQED{\blackqed}% + \normalfont \topsep6\p@\@plus6\p@\relax + \trivlist + \item[\hskip\labelsep + \itshape + #1\@addpunct{.}]\ignorespaces +}{% + \popQED\endtrivlist\@endpefalse +} + +%%%Now, we internally got a proof and a subproof environment +%%%Make them available as 'old' variants, with their defautl behaviour +\NewDocumentEnvironment{oldproof}{} +{ + \mkessler@refproof@saved@proof +} +{ + \mkessler@refproof@saved@endproof +} +\NewDocumentEnvironment{oldsubproof}{} +{ + \mkessler@refproof@saved@subproof +} + \endmkessler@refproof@saved@subproof +{ + +\NewDocumentEnvironment{refproof}{s m !o} +{ + \stepcounter{mkessler@refproof@proofdepth} + %Save the current claim counter + \protected@edef\mkessler@refproof@dummy@expand{\arabic{claim}} + \FSPush{mkessler@refproof@save@claim}{\mkessler@refproof@dummy@expand} + % Restore correct counter for claims in this refproof + \ifcsdef{themkessler@refproof@#2@save@claim}{ + \setcounter{claim}{\value{mkessler@refproof@#2@save@claim}} + \def\mkessler@refproof@proofprefix{ + \IfBooleanTF{#1}{% + \translate{Continuation of proof* of}% + }{% + \translate{Continuation of proof of}% + } + } + }{ + \newcounter{mkessler@refproof@#2@save@claim} + \setcounter{claim}{0} + \def\mkessler@refproof@proofprefix{% + \IfBooleanTF{#1}{% + \translate{Proof* of}% + }{% + \translate{Proof of}% + } + } + } + % Set up counter number printing as subindexed by numbering of the reference + \let\mkessler@refproof@saved@theclaim\theclaim + \def\theclaim{\getrefnumber{#2}.\arabic{claim}} + % Now, start the actual proof + \mkessler@refproof@saved@proof[% + \mkessler@refproof@proofprefix\space\mkessler@refproof@autoref{#2}% + \IfValueT{#3}{\space(#3)}% + ] +} +{ + \mkessler@refproof@saved@endproof % End proof + % Save current claim counter for later restoration + \setcounter{mkessler@refproof@#2@save@claim}{\value{claim}} + %Restore previous claim counter + \setcounter{claim}{\FSTop{mkessler@refproof@save@claim}} + \FSPop{mkessler@refproof@save@claim} + \addtocounter{mkessler@refproof@proofdepth}{-1} + \let\theclaim\mkessler@refproof@saved@theclaim +} + +%%% A 'smart' proof environment +\AtBeginDocument{ + \RenewDocumentEnvironment{proof}{!s !o} + { + \stepcounter{mkessler@refproof@proofdepth} + %Save the current claim counter + \protected@edef\mkessler@refproof@dummy@expand{\arabic{claim}} + \FSPush{mkessler@refproof@save@claim}{\mkessler@refproof@dummy@expand} + \setcounter{claim}{0} + \def\theclaim{\arabic{claim}} + \ifnum\value{mkessler@refproof@proofdepth}>1% + \mkessler@refproof@saved@subproof[% + \IfBooleanTF{#1}{% + \translate{Subproof*}% + }{% + \translate{Subproof}% + }% + \IfValueT{#2}{\space(#2)}% + ] + \else% + \mkessler@refproof@saved@proof[% + \IfBooleanTF{#1}{% + \translate{Proof*}% + }{% + \translate{Proof}% + }% + \IfValueT{#2}{\space(#2)}% + ] + \fi + } + { + \mkessler@refproof@saved@endproof + %Restore previous claim counter + \setcounter{claim}{\FSTop{mkessler@refproof@save@claim}} + \FSPop{mkessler@refproof@save@claim} + } +} + +\NewDocumentEnvironment{subproof}{!s !o} +{ + \stepcounter{mkessler@refproof@proofdepth} + %Save the current claim counter + \protected@edef\mkessler@refproof@dummy@expand{\arabic{claim}} + \FSPush{mkessler@refproof@save@claim}{\mkessler@refproof@dummy@expand} + \setcounter{claim}{0} + \def\theclaim{\arabic{claim}} + \mkessler@refproof@saved@subproof[% + \IfBooleanTF{#1}{% + \translate{Subproof*}% + }{% + \translate{Subproof}% + }% + \IfValueT{#2}{\space(#2)}% + ] +} +{ + \mkessler@refproof@saved@endproof + %Restore previous claim counter + \setcounter{claim}{\FSTop{mkessler@refproof@save@claim}} + \FSPop{mkessler@refproof@save@claim} + \addtocounter{mkessler@refproof@proofdepth}{-1} +} + +\newcommand\proofdepth{\arabic{mkessler@refproof@proofdepth}} diff --git a/wip/mkessler-removed.sty b/wip/mkessler-removed.sty new file mode 100644 index 0000000..49e855f --- /dev/null +++ b/wip/mkessler-removed.sty @@ -0,0 +1,61 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'removed.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-removed}[2022/01/11 - (For now) removed parts of other packages. Not intended for use right now.] + +% Quotations +\RequirePackage{csquotes} % quotations + +%%%% Utilities +\RequirePackage{commnt} %comments +\RequirePackage{todonotes} % todo notes +\RequirePackage{blindtext} % \blindtext filling + +\RequirePackage[export]{adjustbox} % +\RequirePackage{pdfpages} % Include external PDF files easily + +\newcommand{\emphasize}[1]{{\color{red} #1}} + +\RequirePackage{wrapfig} % Wrap text around figures + + +% Math-related +\RequirePackage[export]{adjustbox} diff --git a/wip/mkessler-restate.sty b/wip/mkessler-restate.sty new file mode 100644 index 0000000..30ebce5 --- /dev/null +++ b/wip/mkessler-restate.sty @@ -0,0 +1,82 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This package has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'restate.pysty'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the package again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX package is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the package can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\NeedsTeXFormat{LaTeX2e} +\ProvidesPackage{mkessler-restate}[2022/01/11 - Replacement package] + + +\RequirePackage{xkeyval} +\RequirePackage{todonotes} +\RequirePackage{xparse} +\RequirePackage{etoolbox} + +\newif\ifmkessler@restate@english\mkessler@restate@englishtrue +\DeclareOptionX{english}{\mkessler@restate@englishtrue} +\DeclareOptionX{german}{\mkessler@restate@englishfalse} +\DeclareOptionX{ngerman}{\mkessler@restate@englishfalse} + +\define@boolkey+{mkessler-restate.sty}[mkessler@restate@]{strict}[true]{ + \ifmkessler@restate@strict + \PackageInfo{mkessler-restate}{Strict mode enabled. Undefined restates will throw errors.}% + \else + \PackageInfo{mkessler-restate}{Strict mode disabled. Undefined restates will now print placeholder boxes}% + \fi +}{ + \PackageWarning{mkessler-restate}{Erroneous input to key 'strict' ignored. Provide =true or =false.} +} + +\DeclareOptionX*{\PackageWarning{mkessler-restate}{Unknown '\CurrentOption'}} +\ProcessOptionsX*\relax + + +\newcommand\restatesetup[1]{\setkeys{mkessler-restate.sty}{#1}} + + +\NewDocumentCommand{\restatetheorem}{s m}{ + \ifcsdef{#2}{ + \ifx#1\BooleanTrue\csname#2\endcsname*\else\csname#2\endcsname\fi + }{ + \ifmkessler@restate@strict + \PackageError{mkessler-restate}{Strict mode enabled but restate command not defined}{The theorem you tried to restate is not defined. Either make sure it is so that it can be printed or disable the strict mode with \noexpand\restatesetup{strict=false} to print a placeholder instead} + \else + \missingfigure{\ifmkessler@restate@english Here theorem \textbf{#2} is missing, since it is not part of this document.\else Hier fehlt die Wiederholung von Satz \textbf{#2}, der nicht Teil dieses Dokumentes ist.\fi} + \fi + } +} diff --git a/wip/translator-proof-dictionary-English.dict b/wip/translator-proof-dictionary-English.dict new file mode 100644 index 0000000..7a7824c --- /dev/null +++ b/wip/translator-proof-dictionary-English.dict @@ -0,0 +1,66 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This dictionary has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'proof.pydict'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the dictionary again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX dictionary is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the dictionary can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ProvidesDictionary{translator-proof-dictionary}{English} + +\providetranslation{Claim}{Claim} +\providetranslation{claim}{claim} +\providetranslation{Claim*}{Claim*} +\providetranslation{claim*}{claim*} +\providetranslation{Proof}{Proof} +\providetranslation{proof}{proof} +\providetranslation{Proof*}{Proof*} +\providetranslation{proof*}{proof*} +\providetranslation{Proof of}{Proof of} +\providetranslation{proof of}{proof of} +\providetranslation{Proof* of}{Proof* of} +\providetranslation{proof* of}{proof* of} +\providetranslation{Continuation of proof}{Continuation of proof} +\providetranslation{continuation of proof}{continuation of proof} +\providetranslation{Continuation of proof of}{Continuation of proof of} +\providetranslation{continuation of proof of}{continuation of proof of} +\providetranslation{Continuation of proof*}{Continuation of proof*} +\providetranslation{continuation of proof*}{continuation of proof*} +\providetranslation{Continuation of proof* of}{Continuation of proof* of} +\providetranslation{continuation of proof* of}{continuation of proof* of} +\providetranslation{Subproof}{Subproof} +\providetranslation{subproof}{subproof} +\providetranslation{Subproof*}{Subproof*} +\providetranslation{subproof*}{subproof*} diff --git a/wip/translator-proof-dictionary-German.dict b/wip/translator-proof-dictionary-German.dict new file mode 100644 index 0000000..ccaca1f --- /dev/null +++ b/wip/translator-proof-dictionary-German.dict @@ -0,0 +1,66 @@ +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% +% Copyright © 2022 Maximilian Keßler +% +% Permission is hereby granted, free of charge, to any person obtaining a copy +% of this software and associated documentation files (the “Software”), to deal +% in the Software without restriction, including without limitation the rights +% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell +% copies of the Software, and to permit persons to whom the Software is +% furnished to do so, subject to the following conditions: +% The above copyright notice and this permission notice shall be included in all +% copies or substantial portions of the Software. +% +% THE SOFTWARE IS PROVIDED “AS IS”, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR +% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, +% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE +% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER +% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, +% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE +% SOFTWARE. +% +% This dictionary has been generated by PyTeX, available at +% https://github.com/kesslermaximilian/PyTeX +% and built from source file 'proof.pydict'. +% It is STRONGLY DISCOURAGED to edit this source file directly, since local +% changes will not be versioned by Git and overwritten by the next build. Always +% edit the source file and build the dictionary again. +% +% Build details: +% PyTeX version: v1.2.0-12-g75a2b13 (commit 75a2b13) +% Source code version: v2.5.1 (commit 50e2c7c) +% +% This LaTeX dictionary is free software and distributed under the MIT License. You +% may use it freely for your purposes. The latest version of the dictionary can be +% obtained via GitHub under +% https://github.com/kesslermaximilian/LatexPackages +% For further information see the url above. +% Reportings of bugs, suggestions and improvements are welcome, see the README +% at the Git repository for further information. +%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%% + +\ProvidesDictionary{translator-proof-dictionary}{German} + +\providetranslation{Claim}{Behauptung} +\providetranslation{claim}{Behauptung} +\providetranslation{Claim*}{Behauptung*} +\providetranslation{claim*}{Behauptung*} +\providetranslation{Proof}{Beweis} +\providetranslation{proof}{Beweis} +\providetranslation{Proof*}{Beweis*} +\providetranslation{proof*}{Beweis*} +\providetranslation{Proof of}{Beweis von} +\providetranslation{proof of}{Beweis von} +\providetranslation{Proof* of}{Beweis* von} +\providetranslation{proof* of}{Beweis* von} +\providetranslation{Continuation of proof}{Fortsetzung des Beweises} +\providetranslation{continuation of proof}{Fortsetzung des Beweises} +\providetranslation{Continuation of proof of}{Fortsetzung des Beweises zu} +\providetranslation{continuation of proof of}{Fortsetzung des Beweises zu} +\providetranslation{Continuation of proof*}{Fortsetzung des Beweises*} +\providetranslation{continuation of proof*}{Fortsetzung des Beweises*} +\providetranslation{Continuation of proof* of}{Fortsetzung des Beweises* zu} +\providetranslation{continuation of proof* of}{Fortsetzung des Beweises* zu} +\providetranslation{Subproof}{Unterbeweis} +\providetranslation{subproof}{Unterbeweis} +\providetranslation{Subproof*}{Unterbeweis*} +\providetranslation{subproof*}{Unterbeweis*}