add nobraces option to fancythm

Build branch bachelor-thesis (6545412) from kesslermaximilian/LatexPackages
This commit is contained in:
Maximilian Keßler 2022-06-12 15:22:29 +00:00
commit 1f09904ed7
42 changed files with 6094 additions and 0 deletions

466
build_info.json Normal file
View file

@ -0,0 +1,466 @@
{
"build_time": "",
"source files": {
"version": "v2.9-14-g6545412",
"commit": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"dirty": false
},
"pytex": {
"version": "v1.2.0-31-gc9bb0e8",
"commit": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"dirty": false
},
"tex_sources": [
{
"name": "math/faktor/mkessler-faktor.sty",
"source file": "math/faktor/faktor.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "618fa0a7a27b148f11ce06d43d5e0170",
"dirty": false
},
{
"name": "math/mathfont/mkessler-mathfont.sty",
"source file": "math/mathfont/mathfont.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "788546ecf5b583122f2088467f39021e",
"dirty": false
},
{
"name": "math/mathop/mkessler-mathop.sty",
"source file": "math/mathop/mathop.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "fa41a1c28ed039fdf647aedf72c1a7d5",
"dirty": false
},
{
"name": "math/mathfixes/mkessler-mathfixes.sty",
"source file": "math/mathfixes/mathfixes.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "ddbad7b601312828f19f9812c30247ba",
"dirty": false
},
{
"name": "math/mathsymb/mkessler-mathsymb.sty",
"source file": "math/mathsymb/mathsymb.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "0c4ea707d09d03d5f2bca85fe8642b83",
"dirty": false
},
{
"name": "math/mathalias/mkessler-mathalias.sty",
"source file": "math/mathalias/mathalias.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "710f8e96ac17316c338489e9042d7e27",
"dirty": false
},
{
"name": "math/mathfig/mkessler-mathfig.sty",
"source file": "math/mathfig/mathfig.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "5da205ae0028a75490be0bec79687383",
"dirty": false
},
{
"name": "wrappers/todo/mkessler-todo.sty",
"source file": "wrappers/todo/todo.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "39e1d5629001a8953942fda0cbed1eb6",
"dirty": false
},
{
"name": "wrappers/math/mkessler-math.sty",
"source file": "wrappers/math/math.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "f90a3672b511eb8b37264b7a286d46cf",
"dirty": false
},
{
"name": "wrappers/hypersetup/mkessler-hypersetup.sty",
"source file": "wrappers/hypersetup/hypersetup.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "3143151d3e987e479a9f6ef242156814",
"dirty": false
},
{
"name": "wrappers/enumerate/mkessler-enumerate.sty",
"source file": "wrappers/enumerate/enumerate.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "a2a3eab71093fac3709925890a7df306",
"dirty": false
},
{
"name": "wrappers/unicodechar/mkessler-unicodechar.sty",
"source file": "wrappers/unicodechar/unicodechar.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "5ed2b996d495d8d1f32524a93184f96b",
"dirty": false
},
{
"name": "wrappers/incfig/mkessler-incfig.sty",
"source file": "wrappers/incfig/incfig.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "7c4be513b46c172683e075d5206f07d6",
"dirty": false
},
{
"name": "utils/findpackage/mkessler-findpackage.sty",
"source file": "utils/findpackage/findpackage.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "a755107a340cc79c3121f067b2e33ba7",
"dirty": false
},
{
"name": "utils/counters/mkessler-counters.sty",
"source file": "utils/counters/counters.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "b6c586ab3f307ff7a9b8b3594ec1b5c9",
"dirty": false
},
{
"name": "indexing/vocab/mkessler-vocab.sty",
"source file": "indexing/vocab/vocab.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "c69b7350ab57b062ec42c408cf30ecbb",
"dirty": false
},
{
"name": "lecture-notes/lectures/mkessler-lectures.sty",
"source file": "lecture-notes/lectures/lectures.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "12de756cdaf55cb9510085084a6c0be6",
"dirty": false
},
{
"name": "wip/removed/mkessler-removed.sty",
"source file": "wip/removed/removed.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "bdc4b470c0f4f3ddc21c2ebbf80501be",
"dirty": false
},
{
"name": "wip/code/mkessler-code.sty",
"source file": "wip/code/code.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "ccd43b8b097192d79e6dee3a9904a272",
"dirty": false
},
{
"name": "wip/lang-input/mkessler-lang-input.sty",
"source file": "wip/lang-input/lang-input.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "b0593c4e5620465557ae10ad7c050dea",
"dirty": false
},
{
"name": "wip/restate/mkessler-restate.sty",
"source file": "wip/restate/restate.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "f1f3070209a9a0775262ac8c14007b6e",
"dirty": false
},
{
"name": "wip/bibliography/mkessler-bibliography.sty",
"source file": "wip/bibliography/bibliography.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "298338a3ecffa320d4d19b6885737f13",
"dirty": false
},
{
"name": "wip/gag/mkessler-gag.sty",
"source file": "wip/gag/gag.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "b50afc5a5bfabfce6be3e1d802d9d852",
"dirty": false
},
{
"name": "wip/subproof/mkessler-subproof.sty",
"source file": "wip/subproof/subproof.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "4bd597101342feff72c63e34fd142236",
"dirty": false
},
{
"name": "wip/figures/mkessler-figures.sty",
"source file": "wip/figures/figures.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "5a8399b3bc7b6208ab8188a340fb2c53",
"dirty": false
},
{
"name": "wip/exsheet/mkessler-exsheet.sty",
"source file": "wip/exsheet/exsheet.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "21757fc9c7ed670b5f9296ff0828edd2",
"dirty": false
},
{
"name": "quiver/mkessler-quiver.sty",
"source file": "quiver/quiver.pysty",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "55dda8b2de907a11bef1b698352b50ea",
"dirty": false
},
{
"name": "lecture-notes/script/mkessler-script.cls",
"source file": "lecture-notes/script/script.pycls",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "669a15fc94e1222274a7625133e3ab62",
"dirty": false
},
{
"name": "exercises/sheet/mkessler-sheet.cls",
"source file": "exercises/sheet/sheet.pycls",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "e3d249089d21d99c24f817712c686357",
"dirty": false
},
{
"name": "math/categories/translator-mathematical-categories-dictionary-English.dict",
"source file": "math/categories/mathematical-categories.pydict",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "d4bf9c941f10addc282158f26283498b",
"dirty": false
},
{
"name": "math/categories/translator-mathematical-categories-dictionary-German.dict",
"source file": "math/categories/mathematical-categories.pydict",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "2e896a3cb32816eb4c56417d5acde4ba",
"dirty": false
},
{
"name": "environments/refproof/translator-proof-dictionary-English.dict",
"source file": "environments/refproof/proof.pydict",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "7d7e8be901315313da48f658980ab691",
"dirty": false
},
{
"name": "environments/refproof/translator-proof-dictionary-German.dict",
"source file": "environments/refproof/proof.pydict",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "5473401c146887c2e17d2f2aab06317f",
"dirty": false
},
{
"name": "math/categories/mkessler-categories.sty",
"source file": "math/categories/categories.pysty3",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "63c29654d7ea3810c5bdc0f058f9ef54",
"dirty": false
},
{
"name": "utils/powerset/mkessler-powerset.sty",
"source file": "utils/powerset/powerset.pysty3",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "b565662b5c3a69790ab793f3f627d37f",
"dirty": false
},
{
"name": "indexing/symbindex/mkessler-symbindex.sty",
"source file": "indexing/symbindex/symbindex.pysty3",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "c632ef34aebf5c5d781674f4f7d00b65",
"dirty": false
},
{
"name": "environments/refproof/mkessler-refproof.sty",
"source file": "environments/refproof/refproof.pysty3",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "cc9c90c8fd3c88f086fd5faf0a4914e9",
"dirty": false
},
{
"name": "wip/cache/mkessler-cache.sty",
"source file": "wip/cache/cache.pysty3",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "8750b59f5a8f6f9597d7f3554d337780",
"dirty": false
},
{
"name": "environments/fancythm/fancythm.sty",
"source file": "environments/fancythm/fancythm.dtx",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "b7ce196a7deb243443a063bf9191435f",
"dirty": false
},
{
"name": "environments/thmstyle/thmstyle.sty",
"source file": "environments/thmstyle/thmstyle.dtx",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "25887354cf8b134a804f11e8c8e05746",
"dirty": false
},
{
"name": "environments/groupthm/groupthm.sty",
"source file": "environments/groupthm/groupthm.dtx",
"build time": "2022/06/12 15:21",
"source version": "v2.9-14-g6545412",
"source commit hash": "6545412baf11aa044aabf606c7d44b3941c9fb20",
"pytex version": "v1.2.0-31-gc9bb0e8",
"pytex commit hash": "c9bb0e87c91beae3e17a829603e4459cf804ec51",
"md5sum": "72edca95f60949839b50cb9a5fb0b012",
"dirty": false
}
]
}

View file

@ -0,0 +1,408 @@
%%
%% This is file `fancythm.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% fancythm.dtx (with options: `package')
%%
%% IMPORTANT NOTICE:
%%
%% For the copyright see the source file.
%%
%% Any modified versions of this file must be renamed
%% with new filenames distinct from fancythm.sty.
%%
%% For distribution of the original source see the terms
%% for copying and modification in the file fancythm.dtx.
%%
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% File: fancytm.dtx
\ProvidesExplPackage{fancythm}{2022/01/30}{0.0.2}{Grouped theorems.}
\RequirePackage{l3keys2e}
\RequirePackage[default styles]{thmstyle}
\cs_set_eq:NN \arabic:n \arabic
\cs_set_eq:NN \counter_new:n \newcounter
\cs_set_eq:NN \counter_within:nn \counterwithin
\cs_new:Npn \counter_new:nn #1 #2
{
\counter_new:n { #1 }
\counter_within:nn { #1 } { #2 }
}
\cs_new:Npn \counter_if_exist_p:n #1
{
\cs_if_exist_p:c { c@ #1 }
}
\cs_new:Npn \counter_if_exist:nT #1
{
\cs_if_exist:cT { c@ #1 }
}
\cs_new:Npn \counter_if_exist:nF #1
{
\cs_if_exist:cF { c@ #1 }
}
\cs_new:Npn \counter_if_exist:nTF #1
{
\cs_if_exist:cTF { c@ #1 }
}
\cs_set_eq:Nc \counter_undefined_error:n { @nocounterr }
\cs_new:Npn \counter_ensure_exist:n #1
{
\counter_if_exist:nF { #1 }
{
\counter_undefined_error:n { #1 }
}
}
\cs_new:Npn \counter_the:n #1
{
\use:c { the #1 }
}
\cs_new:Npn \counter_set_the:nn #1 #2
{
\counter_ensure_exist:n { #1 }
\exp_args:Nc \renewcommand { the #1 } { #2 }
}
\cs_new:Npn \counter_sub:nn #1 #2
{
\counter_within:nn { #1 } { #2 }
\counter_set_the:nn { #1 }
{
\counter_the:n { #2 } . \arabic:n { #1 }
}
}
\cs_new:Npn \counter_new_sub:nn #1 #2
{
\counter_new:n { #1 }
\counter_sub:nn { #1 } { #2 }
}
\cs_new:Npn \__fancythm_counter_sub_if_exist:n #1
{
\counter_if_exist:nT { #1 }
{
\counter_new_sub:nn { in #1 } { #1 }
}
}
\cs_set_eq:Nc \counter_alias:nn { @counteralias }
\cs_generate_variant:Nn \counter_alias:nn { n x }
\counter_new:n { indocument }
\__fancythm_counter_sub_if_exist:n { section }
\__fancythm_counter_sub_if_exist:n { subsection }
\__fancythm_counter_sub_if_exist:n { chapter }
\__fancythm_counter_sub_if_exist:n { part }
\counter_alias:nn { toplevel } { indocument }
\counter_new_sub:nn { sublevel } { toplevel }
\counter_new_sub:nn { subsublevel } { sublevel }
\counter_new_sub:nn { subsubsublevel } { subsublevel }
\str_new:N \g__fancythm_style_str
\bool_new:N \g__fancythm_translator_bool
\bool_new:N \g__fancythm_generate_defaults_bool
\tl_new:N \l__fancythm_key_name_tl
\tl_new:N \l__fancythm_key_mdframed_tl
\tl_new:N \l__fancythm_key_style_tl
\clist_new:N \l__fancythm_key_group_clist
\clist_new:N \l__fancythm_key_thmtools_clist
\tl_new:N \l__fancythm_name_tl
\clist_new:N \l__fancythm_thmtools_clist
\clist_new:N \l__fancythm_group_clist
\clist_new:N \g__fancythm_groupthm_option_clist
\keys_define:nn { fancythm }
{
translator .bool_set:N = \g__fancythm_translator_bool ,
translator .default:n = { true } ,
generate defaults .bool_set:N = \g__fancythm_generate_defaults_bool ,
generate defaults .default:n = { true } ,
number in .choices:nn =
{ document, section, subsection, chapter, part }
{
\counter_alias:nx { toplevel } { in \tl_use:N \l_keys_choice_tl }
} ,
number in .default:n = { document } ,
style .choices:nn =
{ fancy, plain, classic }
{
\str_set:Nn \g__fancythm_style_str { \tl_use:N \l_keys_choice_tl }
} ,
style .default:n = { fancy } ,
cache .code:n =
{
\clist_put_right:Nn \g__fancythm_groupthm_option_clist { cache = #1 }
} ,
cache .default:n = { true } ,
cache version .code:n =
{
\clist_put_right:Nn \g__fancythm_groupthm_option_clist { cache version = #1 }
} ,
cache version .default:n = { 0 } ,
}
\keys_define:nn { fancythm / fancytheorem }
{
name .tl_set:N = \l__fancythm_key_name_tl ,
name .default:n = \c_novalue_tl ,
mdframed .tl_set:N = \l__fancythm_key_mdframed_tl ,
mdframed .default:n = \c_novalue_tl ,
style .tl_set:N = \l__fancythm_key_style_tl ,
style .default:n = \c_novalue_tl ,
group .clist_set:N = \l__fancythm_key_group_clist ,
group .default:n = {} ,
thmtools .clist_set:N = \l__fancythm_key_thmtools_clist ,
thmtools .default:n = {} ,
}
\keys_set:nn { fancythm } { translator, generate defaults, number in, style }
\ProcessKeysOptions{ fancythm }
\cs_new:Npn \__fancythm_require_package:nn #1
{
\RequirePackage [ #1 ]
}
\cs_generate_variant:Nn \__fancythm_require_package:nn { V n }
\__fancythm_require_package:Vn \g__fancythm_groupthm_option_clist { groupthm }
\bool_if:NTF \g__fancythm_translator_bool
{
\RequirePackage{translator}
\usedictionary{translator-environment-names}
\cs_set_eq:NN \__fancythm_translate:n \translate
}
{
\cs_set_eq:NN \__fancythm_translate:n \use:n
}
\cs_new:Npn \__fancythm_set_normalized_keys:nn #1 #2
{
\keys_set:nn { fancythm / fancytheorem } { name, mdframed, style, group, thmtools }
\keys_set:nn { fancythm / fancytheorem } { #1 }
\clist_set_eq:NN \l__fancythm_group_clist \l__fancythm_key_group_clist
\clist_set_eq:NN \l__fancythm_thmtools_clist \l__fancythm_key_thmtools_clist
\tl_if_eq:NnF \l__fancythm_key_mdframed_tl { \c_novalue_tl }
{
\clist_put_right:Nx \l__fancythm_thmtools_clist
{
mdframed = { style = \tl_use:N \l__fancythm_key_mdframed_tl }
}
}
\tl_if_eq:NnF \l__fancythm_key_style_tl { \c_novalue_tl }
{
\clist_put_right:Nx \l__fancythm_thmtools_clist
{
style = \tl_use:N \l__fancythm_key_style_tl
}
}
\tl_if_eq:NnTF \l__fancythm_key_name_tl { \c_novalue_tl }
{
\tl_set:Nx \l__fancythm_name_tl
{
\text_titlecase_first:n { \tl_trim_spaces:n { #2 } }
}
}
{
\tl_set_eq:NN \l__fancythm_name_tl \l__fancythm_key_name_tl
}
\tl_set:Nx \l__fancythm_name_tl
{
\exp_not:N \csname __fancythm_translate:n \exp_not:N \endcsname { \tl_use:N \l__fancythm_name_tl }
}
}
\cs_new:Npn \__fancythm_wrap_multiple:nnn #1 #2 #3
{
\cs_set:Npn \__fancythm_map_aux:n ##1
{
\cs_new:cn { #2 }
{
#3
}
}
\clist_map_function:nN { #1 } \__fancythm_map_aux:n
}
\__fancythm_wrap_multiple:nnn
{ new, provide }
{ fancythm_#1_theorem:nnnn }
{
\use:c { groupthm_#1_family:nnnnn } { ##1 } { dagger, star } { ##3 } { ##4 } { ##2 }
\use:c { groupthm_#1_family_options:nnnn }
{ ##1 }
{ !s !t+ !t-}
{
\IfBooleanT { ####1 }
{
\AddTheoremToGroup { star }
}
\IfBooleanT { ####2 }
{
\AddTheoremToGroup { dagger }
}
\IfBooleanT { ####3 }
{
\AddTheoremToGroup { nobraces }
}
}
{ ##2 }
}
\cs_generate_variant:Nn \fancythm_new_theorem:nnnn { n V V V }
\cs_generate_variant:Nn \fancythm_provide_theorem:nnnn { n V V V }
\__fancythm_wrap_multiple:nnn
{ new, provide }
{ fancythm_#1_theorem:nn }
{
\__fancythm_set_normalized_keys:nn { ##1 } { ##2 }
\use:c { fancythm_#1_theorem:nVVV }
{ ##2 }
\l__fancythm_group_clist
\l__fancythm_name_tl
\l__fancythm_thmtools_clist
}
\cs_new:Npn \__fancythm_new_document_command:Nnn #1 #2 #3
{
\NewDocumentCommand { #1 } { #2 } { #3 }
}
\cs_generate_variant:Nn \__fancythm_new_document_command:Nnn { c n n }
\cs_new:Npn \__fancythm_wrap_multiple_document:nnnn #1 #2 #3 #4
{
\cs_set:Npn \__fancythm_map_aux:n ##1
{
\cs_set:Nn \__fancythm_Declarator: { \text_titlecase_first:n { ##1 } }
\__fancythm_new_document_command:cnn { #2 } { #3 } { #4 }
}
\clist_map_function:nN { #1 } \__fancythm_map_aux:n
}
\__fancythm_wrap_multiple_document:nnnn
{ new, provide }
{ \__fancythm_Declarator: FancyTheorem }
{ O{} m }
{
\use:c { fancythm_#1_theorem:nn } { ##1 } { ##2 }
}
\declaretheoremstyle[notebraces={{}{}}]{nobraces}
\groupthm_new_group:nnnnn { star } { } { * } { } { }
\groupthm_new_group:nnnnn { dagger } { } { $^{\dagger}$ } { } { }
\groupthm_new_group:nnnnn { big } { } { } { } { sibling = toplevel }
\groupthm_new_group:nnnnn { small } { } { } { } { sibling = sublevel }
\groupthm_new_group:nnnnn { tiny } { } { } { } { numbered = no }
\groupthm_new_group:nnnnn { custom } { } { } { } { sibling = sublevel }
\groupthm_new_group:nnnnn { nobraces } { } { } { } { style = nobraces }
\groupthm_add_parent:nn { star } { custom }
\groupthm_add_parent:nn { dagger } { custom }
\DeclareTheoremGroupRule [ suffix ] { dagger } { higher } { star }
\DeclareTheoremGroupRule { tiny } { higher } { small }
\DeclareTheoremGroupRule { tiny } { higher } { big }
\DeclareTheoremGroupRule { tiny } { higher } { custom }
\DeclareTheoremGroupRule { small } { higher } { big }
\DeclareTheoremGroupRule { custom } { higher } { big }
\cs_new:Npn \fancythm_add_provided_theorem_to_group:nn #1 #2
{
\cs_if_exist:cF { __fancythm_provided_theorem__#1__group_clist }
{
\clist_new:c { __fancythm_provided_theorem__#1__group_clist }
}
\clist_put_left:cn { __fancythm_provided_theorem__#1__group_clist } { #2 }
}
\NewDocumentCommand { \AddProvidedFancyTheoremToGroup } { m m }
{
\fancythm_add_provided_theorem_to_group:nn { #1 } { #2 }
}
\cs_new:Npn \__fancythm_provide_package_theorem:nnn #1 #2 #3
{
\__fancythm_set_normalized_keys:nn { #1 } { #2 }
\cs_if_exist:cT { __fancythm_provided_theorem__#2__group_clist }
{
\clist_concat:ccc
{ l__fancythm_group_clist }
{ __fancythm_provided_theorem__#2__group_clist }
{ l__fancythm_group_clist }
}
\clist_if_in:NnF \l__fancythm_group_clist { big }
{
\clist_if_in:NnF \l__fancythm_group_clist { small }
{
\clist_if_in:NnF \l__fancythm_group_clist { tiny }
{
\clist_put_right:Nn \l__fancythm_group_clist { #3 }
}
}
}
\fancythm_provide_theorem:nVVV
{ #2 }
\l__fancythm_group_clist
\l__fancythm_name_tl
\l__fancythm_thmtools_clist
}
\cs_new:Npn \fancythm_provide_big_theorem:nn #1 #2
{
\__fancythm_provide_package_theorem:nnn { #1 } { #2 } { big }
}
\cs_new:Npn \fancythm_provide_small_theorem:nn #1 #2
{
\__fancythm_provide_package_theorem:nnn { #1 } { #2 } { small }
}
\cs_new:Npn \fancythm_provide_tiny_theorem:nn #1 #2
{
\__fancythm_provide_package_theorem:nnn { #1 } { #2 } { tiny }
}
\bool_if:NT \g__fancythm_generate_defaults_bool
{
\AddToHook { begindocument / before } [ fancythm ]
{
\fancythm_provide_big_theorem:nn { style = thmredmarginandfill } { theorem }
\fancythm_provide_big_theorem:nn { style = thmredmarginandfill } { proposition }
\fancythm_provide_big_theorem:nn { style = thmredmarginandfill } { corollary }
\fancythm_provide_big_theorem:nn { style = thmbluemarginandfill } { definition }
\fancythm_provide_big_theorem:nn { style = thmorangemarginandfill} { lemma }
\fancythm_provide_big_theorem:nn { style = thmgreenmargin } { example }
\fancythm_provide_big_theorem:nn
{
style = thmredmarginbluefill,
name = Theorem ~ and ~ Definition
} { theoremdef }
\fancythm_provide_big_theorem:nn
{
style = thmredmarginbluefill,
name = Proposition ~ and ~ Definition
} { propositiondef }
\fancythm_provide_big_theorem:nn
{
style = thmorangemarginbluefill,
name = Lemma ~ and ~ Definition
} { propositiondef }
\fancythm_provide_small_theorem:nn { style = thmvioletmargin } { notation }
\fancythm_provide_small_theorem:nn { style = thmyellowmargin } { remark }
\fancythm_provide_small_theorem:nn { style = thmgoldmargin } { praise }
\fancythm_provide_small_theorem:nn { style = thmblackmarginandfill } { question }
\fancythm_provide_small_theorem:nn { style = thmblackmargin } { orga }
\fancythm_provide_small_theorem:nn { style = thmredmargin } { fact }
\fancythm_provide_small_theorem:nn
{
style = thmyellowmargin,
name = Trivial ~ Nonsense
} { trivial }
\fancythm_provide_small_theorem:nn
{
style = thmvioletmargin,
name = Abuse ~ of ~ Notation
} { abuse }
\fancythm_provide_small_theorem:nn
{
style = thmyellowmargin,
name = Oral ~ remark
} { oral }
\fancythm_provide_tiny_theorem:nn { } { variant }
\fancythm_provide_tiny_theorem:nn { } { assumption }
\fancythm_provide_tiny_theorem:nn { } { note }
\fancythm_provide_tiny_theorem:nn { } { warning }
\fancythm_provide_tiny_theorem:nn { } { goal }
\fancythm_provide_tiny_theorem:nn { } { strategy }
\fancythm_provide_tiny_theorem:nn { } { problem }
\fancythm_provide_tiny_theorem:nn { } { info }
\fancythm_provide_tiny_theorem:nn { } { observe }
\fancythm_provide_tiny_theorem:nn { } { property }
\fancythm_provide_tiny_theorem:nn { } { intuition }
\fancythm_provide_tiny_theorem:nn { } { recall }
\fancythm_provide_tiny_theorem:nn { } { idea }
\fancythm_provide_tiny_theorem:nn { } { exercise }
\fancythm_provide_tiny_theorem:nn { } { reminder }
}
}
\DeclareHookRule { begindocument / before } { groupthm } { after } { fancythm }
\endinput
%%
%% End of file `fancythm.sty'.

View file

@ -0,0 +1,887 @@
%%
%% This is file `groupthm.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% groupthm.dtx (with options: `package')
%%
%% IMPORTANT NOTICE:
%%
%% For the copyright see the source file.
%%
%% Any modified versions of this file must be renamed
%% with new filenames distinct from groupthm.sty.
%%
%% For distribution of the original source see the terms
%% for copying and modification in the file groupthm.dtx.
%%
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% File: groupthm.dtx
\ProvidesExplPackage{groupthm}{2022/02/02}{0.0.2}{Grouped theorems.}
\RequirePackage{amsthm}
\RequirePackage{thmtools}
\RequirePackage{l3keys2e}
\cs_new:Npn \__groupthm_thmtools_declare_theorem:nn #1 #2
{
\tl_log:n { Declaring ~ thmtools ~ theorem ~ #2 }
\declaretheorem [ #1 ] { #2 }
\__groupthm_cache:n
{
\csname __groupthm_thmtools_declare_theorem:nn \endcsname { #1 } { #2 }
}
}
\cs_generate_variant:Nn \__groupthm_thmtools_declare_theorem:nn { V n }
\cs_new:Npn \__groupthm_hook_gset_rule_foreach:nNnn #1 #2 #3 #4
{
\cs_set:Npn \__groupthm_map_aux:n ##1
{
\hook_gset_rule:nnnn { #1 } { ##1 } { #3 } { #4 }
}
\clist_map_function:NN #2 \__groupthm_map_aux:n
}
\msg_new:nnn { groupthm } { unknown ~ group }
{
Unknown ~ group ~ '#1' ~ supplied ~ \msg_line_context:
}
\msg_new:nnn { groupthm } { unknown ~ key }
{
Unknown ~ key ~ '#1' ~ supplied ~ \msg_line_context:
}
\msg_new:nnn { groupthm } { wrong ~ definition }
{
Bad ~ definition ~ of ~ #1 ~ '#2' ~ \msg_line_context:, ~ #1 ~ is ~ #3 ~ defined.
}
\msg_new:nnn { groupthm } { misuse ~ add ~ theorem ~ to ~ group }
{
Bad ~ usage ~ of ~ 'AddTheoremToGroup' ~ macro ~ outside ~ theorem ~
family ~ options ~ \msg_line_context:
}
\msg_new:nnnn { groupthm } { undefined ~ theorem ~ variant }
{
Bad ~ call ~ of ~ theorem ~ variant ~ of ~ '#1' ~ \msg_line_context:
}
{
You ~ wanted ~ to ~ call ~ the ~ variant ~ with ~ group(s) ~
'#2' ~ of ~ theorem ~ family ~ '#1', ~ but ~ it ~ has ~ not ~ been ~
generated ~ yet. ~
Probably ~ you ~ forgot ~ this. ~
\msg_see_documentation_text:n { groupthm }
}
\hook_new:n { __groupthm/prefix }
\hook_new:n { __groupthm/suffix }
\hook_new:n { __groupthm/mapname }
\hook_new:n { __groupthm/thmtools }
\hook_new:n { __groupthm/groupsort }
\cs_generate_variant:Nn \hook_gset_rule:nnnn { n n V n }
\bool_new:N \l__groupthm_key_starred_version_bool
\tl_new:N \l__groupthm_key_prefix_tl
\tl_new:N \l__groupthm_key_name_tl
\tl_new:N \l__groupthm_key_suffix_tl
\clist_new:N \l__groupthm_key_group_clist
\clist_new:N \l__groupthm_key_mapname_clist
\clist_new:N \l__groupthm_key_thmtools_clist
\tl_new:N \l__groupthm_prefix_tl
\tl_new:N \l__groupthm_name_tl
\tl_new:N \l__groupthm_suffix_tl
\clist_new:N \l__groupthm_mapname_clist
\clist_new:N \l__groupthm_thmtools_clist
\clist_new:N \l__groupthm_group_clist
\clist_new:N \g__groupthm_defined_groups_clist
\bool_new:N \l__groupthm_in_family_options_environment_bool
\int_new:N \g__groupthm_append_groups_int
\bool_new:N \g__groupthm_cache_bool
\int_new:N \g__groupthm_cache_version_aux_int
\int_new:N \g__groupthm_cache_version_document_int
\int_set:Nn \g__groupthm_cache_version_aux_int { -1 }
\tl_new:N \g__groupthm_lazy_document_tl
\tl_new:N \g__groupthm_lazy_auxfile_tl
\clist_new:N \g__groupthm_dump_auxfile_clist
\clist_new:N \g__groupthm_dump_cache_clist
\keys_define:nn { groupthm }
{
cache .bool_set:N = \g__groupthm_cache_bool,
cache .default:n = { true },
__cache version__ .int_set:N = \g__groupthm_cache_version_document_int,
cache version .meta:nn = { groupthm } { cache = true, __cache version__ = #1 },
cache version .default:n = { 0 },
}
\keys_define:nn { groupthm / theorem ~ group }
{
prefix .tl_set:N = \l__groupthm_key_prefix_tl,
prefix .default:n = \c_empty_tl,
suffix .tl_set:N = \l__groupthm_key_suffix_tl,
suffix .default:n = \c_empty_tl,
suffix .groups:n = { theoremgroup },
map ~ name .clist_set:N = \l__groupthm_mapname_clist,
map ~ name .default:n = {},
map ~ name .groups:n = { theoremgroup },
thmtools .clist_set:N = \l__groupthm_key_thmtools_clist,
thmtools .default:n = {},
unknown .code:n =
\msg_error:nnx { groupthm } { unknown ~ key } { \str_use:N \l_keys_key_str }
}
\keys_define:nn { groupthm / grouped ~ theorem }
{
name .tl_set:N = \l__groupthm_key_name_tl,
name .default:n = \c_novalue_tl,
group .clist_set:N = \l__groupthm_key_group_clist,
group .default:n = {},
thmtools .clist_set:N = \l__groupthm_key_thmtools_clist,
thmtools .default:n = {},
starred ~ version .bool_set:N = \l__groupthm_key_starred_version_bool,
starred ~ version .default:n = { true },
unknown .code:n =
\msg_error:nnx { groupthm } { unknown ~ key } { \str_use:N \l_keys_key_str }
}
\keys_define:nn { groupthm / theorem ~ family }
{
name .tl_set:N = \l__groupthm_key_name_tl,
name .default:n = \c_novalue_tl,
group .clist_set:N = \l__groupthm_key_group_clist,
group .default:n = {},
thmtools .clist_set:N = \l__groupthm_key_thmtools_clist,
thmtools .default:n = {},
starred ~ version .bool_set:N = \l__groupthm_key_starred_version_bool,
starred ~ version .default:n = { true },
unknown .code:n =
\msg_error:nnx { groupthm } { unknown ~ key } { \str_use:N \l_keys_key_str }
}
\keys_define:nn { groupthm / theorem ~ family ~ options }
{
starred ~ version .bool_set:N = \l__groupthm_key_starred_version_bool,
starred ~ version .default:n = { true },
unknown .code:n =
\msg_error:nnx { groupthm } { unknown ~ key } { \str_use:N \l_keys_key_str }
}
\ProcessKeysOptions { groupthm }
\cs_new:Npn \__groupthm_set_normalized_keys:nnn #1 #2 #3
{
\keys_set:nn { groupthm / theorem ~ group }
{ prefix, suffix, thmtools, map ~ name }
\keys_set:nn { groupthm / grouped ~ theorem }
{ name, group, thmtools, starred ~ version }
\keys_set:nn { groupthm / theorem ~ family }
{ name, group, thmtools, starred ~ version }
\keys_set:nn { groupthm / #2 } { #1 }
\tl_if_eq:NnTF \l__groupthm_key_name_tl { \c_novalue_tl }
{
\tl_set:Nx \l__groupthm_name_tl
{
\text_titlecase_first:n {#3}
}
}
{
\tl_set_eq:NN \l__groupthm_name_tl \l__groupthm_key_name_tl
}
\bool_set_eq:NN \l__groupthm_starred_version_bool \l__groupthm_key_starred_version_bool
\tl_set_eq:NN \l__groupthm_prefix_tl \l__groupthm_key_prefix_tl
\tl_set_eq:NN \l__groupthm_suffix_tl \l__groupthm_key_suffix_tl
\clist_set_eq:NN \l__groupthm_group_clist \l__groupthm_key_group_clist
\clist_set_eq:NN \l__groupthm_mapname_clist \l__groupthm_key_mapname_clist
\clist_set_eq:NN \l__groupthm_thmtools_clist \l__groupthm_key_thmtools_clist
}
\cs_new:Npn \__groupthm_add_to_group_ordering:n #1
{
\__groupthm_hook_gset_rule_foreach:nNnn
{ __groupthm/groupsort }
\g__groupthm_defined_groups_clist
{ before }
{ #1 }
}
\cs_new:Npn \__groupthm_remove_from_group_ordering:n #1
{
\__groupthm_hook_gset_rule_foreach:nNnn
{ __groupthm/groupsort }
\g__groupthm_defined_groups_clist
{ unrelated }
{ #1 }
}
\cs_new:Npn \__groupthm_add_to_sort_hook:n #1
{
\hook_gput_code:nnn { __groupthm/groupsort }
{ #1 }
{
\clist_put_left:Nn \l__groupthm_group_clist { #1 }
}
}
\cs_new:Npn \__groupthm_sort_group_names:
{
\hook_gremove_code:nn { __groupthm/groupsort }{*}
\clist_map_function:NN \l__groupthm_group_clist \__groupthm_add_to_sort_hook:n
\clist_clear:N \l__groupthm_group_clist
\hook_use:n { __groupthm/groupsort }
}
\cs_new:Npn \__groupthm_define_group:nnnnn #1#2#3#4#5
{
\cs_new:cpn { __groupthm_use_group__#1: }
{
\hook_gput_code:nnn { __groupthm/prefix } { #1 }
{
\tl_put_left:Nx \l__groupthm_prefix_tl { #2 }
}
\hook_gput_code:nnn { __groupthm/suffix } { #1 }
{
\tl_put_right:Nx \l__groupthm_suffix_tl { #3 }
}
\hook_gput_code:nnn { __groupthm/mapname } { #1 }
{
\clist_put_right:Nn \l__groupthm_mapname_clist { #4 }
}
\hook_gput_code:nnn { __groupthm/thmtools } { #1 }
{
\clist_put_right:Nn \l__groupthm_thmtools_clist { #5 }
}
}
\__groupthm_add_to_group_ordering:n { #1 }
\clist_new:c { g__groupthm_parents_group__#1__clist }
\hook_gset_rule:nnnn { ?? } { all } { before } { #1 }
\hook_gset_rule:nnnn { ?? } { unnumbered } { after } { #1 }
\hook_gset_rule:nnnn { ?? } { starred } { after } { #1 }
\clist_gput_left:Nn \g__groupthm_defined_groups_clist { #1 }
}
\cs_new:Npn \__groupthm_undefine_group:n #1
{
\tl_log:n { Undefining ~ theorem ~ group ~ '#1' }
\cs_undefine:c { __groupthm_use_group__#1: }
\hook_gremove_code:nn { __groupthm/prefix } { #1 }
\hook_gremove_code:nn { __groupthm/suffix } { #1 }
\hook_gremove_code:nn { __groupthm/mapname } { #1 }
\hook_gremove_code:nn { __groupthm/thmtools } { #1 }
\clist_gremove_all:Nn \g__groupthm_defined_groups_clist { #1 }
\cs_undefine:c { g__groupthm_parents_group__#1__clist }
\__groupthm_hook_gset_rule_foreach:nNnn
{ ?? }
\g__groupthm_defined_groups_clist
{ unrelated }
{ #1 }
\__groupthm_hook_gset_rule_foreach:nNnn
{ __groupthm/prefix }
\g__groupthm_defined_groups_clist
{ unrelated }
{ #1 }
\__groupthm_hook_gset_rule_foreach:nNnn
{ __groupthm/suffix }
\g__groupthm_defined_groups_clist
{ unrelated }
{ #1 }
\__groupthm_hook_gset_rule_foreach:nNnn
{ __groupthm/mapname }
\g__groupthm_defined_groups_clist
{ unrelated }
{ #1 }
\__groupthm_hook_gset_rule_foreach:nNnn
{ __groupthm/thmtools }
\g__groupthm_defined_groups_clist
{ unrelated }
{ #1 }
\__groupthm_remove_from_group_ordering:n { #1 }
}
\cs_new:Npn \__groupthm_define:nnnNNNn #1 #2 #3 #4 #5 #6 #7
{
\bool_if:nT
{
\str_if_eq_p:nn { #1 } { new }
&&
\cs_if_exist_p:N #4
}
{
\tl_log:n { Wrong ~ 'new' ~ definition ~ of ~ #2 ~ '#3' ~ detected. }
\msg_error:nnnnn { groupthm } { wrong ~ definition }
{ #2 } { #3 } { already }
}
\bool_if:nT
{
\str_if_eq_p:nn { #1 } { renew }
&&
! \cs_if_exist_p:N #4
}
{
\tl_log:n { Wrong ~ 'renew' ~ definition ~ of ~ #2 ~ '#3' ~ detected. }
\msg_error:nnnnn { groupthm } { wrong ~ definition }
{ #2 } { #3 } { not }
}
\bool_if:nT
{
(
\str_if_eq_p:nn { #1 } { declare } ||
\str_if_eq_p:nn { #1 } { renew }
) &&
\cs_if_exist_p:N #4
}
{
\tl_log:n { Removing ~ definition ~ of ~ #2 ~ '#3'. }
\tl_log:n { Declarator ~ was ~ #1. }
#5 { #3 }
}
\bool_if:nTF
{
\cs_if_exist_p:N #4
&&
\str_if_eq_p:nn { #1 } { provide }
}
{
\tl_log:n { Providing ~ #2 ~ '#3' ~ skipped: ~ '#3' ~ already ~ defined. }
}
{
\tl_log:n { Defining ~ #2 ~ '#3'. }
#6 #7
}
}
\cs_generate_variant:Nn \__groupthm_define:nnnNNNn { n n n c N N n }
\cs_new:Npn \__groupthm_define_multiple:nnnNNnn #1 #2 #3 #4 #5 #6 #7
{
\cs_set:Npn \__groupthm_map_aux:n ##1
{
\cs_new:cn { #6 }
{
\__groupthm_lazy:n
{
\__groupthm_define:nnncNNn
{ ##1 }
{ #2 }
{ ####1 }
{ #3 }
#4
#5
{ #7 }
}
}
}
\clist_map_function:nN { #1 } \__groupthm_map_aux:n
}
\__groupthm_define_multiple:nnnNNnn
{ new, renew, provide, declare }
{ theorem group }
{ __groupthm_use_group__##1: }
\__groupthm_undefine_group:n
\__groupthm_define_group:nnnnn
{ groupthm_#1_group:nnnnn }
{ { ##1 } { ##2 } { ##3 } { ##4 } { ##5 } }
\cs_generate_variant:Nn \groupthm_new_group:nnnnn { n V V V V }
\cs_generate_variant:Nn \groupthm_renew_group:nnnnn { n V V V V }
\cs_generate_variant:Nn \groupthm_provide_group:nnnnn { n V V V V }
\cs_generate_variant:Nn \groupthm_declare_group:nnnnn { n V V V V }
\cs_new:Npn \__groupthm_wrap_multiple:nnn #1 #2 #3
{
\cs_set:Npn \__groupthm_map_aux:n ##1
{
\cs_new:cn { #2 }
{
#3
}
}
\clist_map_function:nN { #1 } \__groupthm_map_aux:n
}
\__groupthm_wrap_multiple:nnn
{ new, renew, provide, declare }
{ groupthm_#1_group:nn }
{
\__groupthm_set_normalized_keys:nnn { ##1 } { theorem ~ group } { ##2 }
\use:c { groupthm_#1_group:nVVVV }
{ ##2 }
\l__groupthm_prefix_tl
\l__groupthm_suffix_tl
\l__groupthm_mapname_clist
\l__groupthm_thmtools_clist
}
\cs_generate_variant:Nn \groupthm_new_group:nn { n x }
\cs_new:Npn \__groupthm_new_document_command:Nnn #1 #2 #3
{
\NewDocumentCommand { #1 } { #2 } { #3 }
}
\cs_generate_variant:Nn \__groupthm_new_document_command:Nnn { c n n }
\cs_new:Npn \__groupthm_wrap_multiple_document:nnnn #1 #2 #3 #4
{
\cs_set:Npn \__groupthm_map_aux:n ##1
{
\cs_set:Nn \__groupthm_Declarator: { \text_titlecase_first:n { ##1 } }
\__groupthm_new_document_command:cnn { #2 } { #3 } { #4 }
}
\clist_map_function:nN { #1 } \__groupthm_map_aux:n
}
\__groupthm_wrap_multiple_document:nnnn
{ new, renew, provide, declare }
{ \__groupthm_Declarator: TheoremGroup }
{ O{} m }
{
\__groupthm_lazy:n
{
\use:c { groupthm_#1 _group:nn } { ##1 } { ##2 }
}
}
\cs_new:Npn \groupthm_declare_group_rule:nnnn #1 #2 #3 #4
{
\__groupthm_lazy:n
{
\str_set:Nx \l_tmpa_str { \tl_trim_spaces:n { #3 } }
\str_if_eq:VnT \l_tmpa_str { higher }
{
\str_set:Nn \l_tmpa_str { after }
}
\str_if_eq:VnT \l_tmpa_str { lower }
{
\str_set:Nn \l_tmpa_str { before }
}
\str_if_eq:nnTF { #1 } { ?? }
{
\hook_gset_rule:nnVn {??} {#2} \l_tmpa_str {#4}
}
{
\hook_gset_rule:nnVn { __groupthm / #1 } {#2} \l_tmpa_str {#4}
}
}
}
\cs_generate_variant:Nn \groupthm_declare_group_rule:nnnn { n n n x }
\NewDocumentCommand { \DeclareTheoremGroupRule } { O{??} m m m }
{
\__groupthm_lazy:n
{
\groupthm_declare_group_rule:nnnn {#1} {#2} {#3} {#4}
}
}
\cs_new:Npn \groupthm_add_parent:nn #1 #2
{
\__groupthm_lazy:n
{
\__groupthm_ensure_group_exists:n { #1 }
\__groupthm_ensure_group_exists:n { #2 }
\clist_gput_left:cn { g__groupthm_parents_group__#1__clist } { #2 }
}
}
\cs_generate_variant:Nn \groupthm_add_parent:nn { n x }
\NewDocumentCommand { \AddTheoremGroupParent } { m m }
{
\__groupthmlazy:n
{
\groupthm_add_parent:nn { #1 } { #2 }
}
}
\cs_new:Npn \__groupthm_push_tmpa_seq:n #1
{
\seq_push:Nn \l_tmpa_seq { #1 }
}
\cs_new:Npn \__groupthm_flatten_groups_hierarchy:nN #1 #2
{
\clist_clear:N #2
\seq_set_from_clist:Nn \l_tmpa_seq { #1 }
\bool_until_do:nn
{
\seq_if_empty_p:N \l_tmpa_seq
}
{
\seq_pop:NN \l_tmpa_seq \l_tmpa_tl
\__groupthm_ensure_group_exists:V \l_tmpa_tl
\clist_if_in:NVF #2 \l_tmpa_tl
{
\clist_put_left:NV #2 \l_tmpa_tl
\clist_map_function:cN
{ g__groupthm_parents_group__ \l_tmpa_tl __clist }
\__groupthm_push_tmpa_seq:n
}
}
}
\cs_new:Npn \groupthm_append_to_group:nn #1 #2
{
\__groupthm_lazy:n
{
\groupthm_new_group:nx { #1 } { __append__ \int_use:N \g__groupthm_append_groups_int }
\groupthm_add_parent:nx { #2 } { __append__ \int_use:N \g__groupthm_append_groups_int }
\groupthm_declare_group_rule:nnnx
{ ?? } { #2 } { before } { __append__ \int_use:N \g__groupthm_append_groups_int }
\int_gincr:N \g__groupthm_append_groups_int
}
}
\NewDocumentCommand { \AppendToTheoremGroup } { O{} m }
{
\__groupthmlazy:n
{
\groupthm_append_to_group:nn { #1 } { #2 }
}
}
\clist_new:N \l__powerset_copied_clist
\seq_new:N \l__powerset_saved_seq
\cs_generate_variant:Nn \clist_remove_all:Nn { N V }
\cs_new:Npn \__powerset_clist_foreach_aux:Nn #1 #2
{
\clist_if_empty:NTF \l__powerset_copied_clist
{
#2
}
{
\clist_get:NN \l__powerset_copied_clist \l_tmpa_tl
\seq_push:NV \l__powerset_saved_seq \l_tmpa_tl
\clist_pop:NN \l__powerset_copied_clist { \l_tmpa_tl }
\__powerset_clist_foreach_aux:Nn #1 {#2}
\seq_get:NN \l__powerset_saved_seq \l_tmpa_tl
\clist_put_left:NV #1 \l_tmpa_tl
\__powerset_clist_foreach_aux:Nn #1 {#2}
\seq_get:NN \l__powerset_saved_seq \l_tmpa_tl
\clist_remove_all:NV #1 \l_tmpa_tl
\clist_push:NV \l__powerset_copied_clist \l_tmpa_tl
\seq_pop:NN \l__powerset_saved_seq \l_tmpa_tl
}
}
\cs_new:Npn \powerset_clist_foreach:Nn #1 #2
{
\clist_set_eq:NN \l__powerset_copied_clist #1
\clist_clear:N #1
\clist_remove_duplicates:N \l__powerset_copied_clist
\__powerset_clist_foreach_aux:Nn #1 {#2}
\clist_set_eq:NN #1 \l__powerset_copied_clist
}
\cs_new:Npn \__groupthm_ensure_group_exists:n #1
{
\cs_if_exist:cF { __groupthm_use_group__#1: }
{
\msg_error:nnn { groupthm } { unknown ~ group } { #1 }
}
}
\cs_generate_variant:Nn \__groupthm_ensure_group_exists:n { V }
\cs_new:Npn \__groupthm_use_group:n #1
{
\__groupthm_ensure_group_exists:n { #1 }
\use:c { __groupthm_use_group__#1: }
}
\cs_new:Npn \__groupthm_use_function_on_name:n #1
{
\tl_set:Nx \l__groupthm_name_tl
{
#1 { \tl_use:N \l__groupthm_name_tl }
}
}
\cs_new:Npn \__groupthm_define_theorem:nnnn #1 #2 #3 #4
{
\tl_clear:N \l__groupthm_prefix_tl
\tl_set:Nn \l__groupthm_name_tl { #3 }
\tl_clear:N \l__groupthm_suffix_tl
\clist_clear:N \l__groupthm_mapname_clist
\clist_clear:N \l__groupthm_thmtools_clist
\hook_gremove_code:nn { __groupthm/prefix }{*}
\hook_gremove_code:nn { __groupthm/suffix }{*}
\hook_gremove_code:nn { __groupthm/mapname }{*}
\hook_gremove_code:nn { __groupthm/thmtools }{*}
\__groupthm_flatten_groups_hierarchy:nN { #2, all } \l__groupthm_group_clist
\clist_map_function:NN \l__groupthm_group_clist \__groupthm_use_group:n
\tl_log:x { Flattened ~ groups ~ '#2' ~ to ~ '\clist_use:Nn \l__groupthm_group_clist {,}' ~ when ~
defining ~ theorem ~ '#1' }
\hook_use:n { __groupthm/prefix }
\hook_use:n { __groupthm/suffix }
\hook_use:n { __groupthm/mapname }
\hook_use:n { __groupthm/thmtools }
\clist_map_function:NN \l__groupthm_mapname_clist \map_use_on_name:n
\tl_set:Nn \l_tmpa_tl { name = }
\tl_put_right:NV \l_tmpa_tl \l__groupthm_prefix_tl
\tl_put_right:NV \l_tmpa_tl \l__groupthm_name_tl
\tl_put_right:NV \l_tmpa_tl \l__groupthm_suffix_tl
\clist_put_right:NV \l__groupthm_thmtools_clist \l_tmpa_tl
\clist_put_right:Nn \l__groupthm_thmtools_clist { #4 }
\__groupthm_thmtools_declare_theorem:Vn
\l__groupthm_thmtools_clist
{ #1 }
}
\__groupthm_define_multiple:nnnNNnn
{ new, provide }
{ grouped ~ theorem }
{ ##1 }
\__groupthm_error:
\__groupthm_define_theorem:nnnn
{ groupthm_#1_theorem:nnnn }
{ { ##1 } { ##2 } { ##3 } { ##4 } }
\cs_generate_variant:Nn \groupthm_new_theorem:nnnn { n V V V }
\cs_generate_variant:Nn \groupthm_provide_theorem:nnnn { n V V V }
\cs_generate_variant:Nn \groupthm_new_theorem:nnnn { x V n n }
\cs_generate_variant:Nn \groupthm_provide_theorem:nnnn { x V n n }
\__groupthm_wrap_multiple:nnn
{ new, provide }
{ groupthm_#1_theorem:nnn }
{
\__groupthm_lazy:n
{
\__groupthm_set_normalized_keys:nnn { ##1 } { grouped ~ theorem } { ##2 }
\bool_if:nT { ##3 }
{
\clist_put_left:Nn \l__groupthm_group_clist { unnumbered }
}
\use:c { groupthm_#1_theorem:nVVV }
{ ##2 }
\l__groupthm_group_clist
\l__groupthm_name_tl
\l__groupthm_thmtools_clist
\bool_if:NT \l__groupthm_starred_version_bool
{
\clist_put_left:Nn \l__groupthm_group_clist { starred }
\use:c { groupthm_#1_theorem:nVVV }
{ ##2* }
\l__groupthm_group_clist
\l__groupthm_name_tl
\l__groupthm_thmtools_clist
}
}
}
\__groupthm_wrap_multiple_document:nnnn
{ new, provide }
{ \__groupthm_Declarator: GroupedTheorem }
{ s O{} m }
{
\__groupthm_lazy:n
{
\use:c { groupthm_#1_theorem:nnn }
{ ##2 }
{ ##3 }
{ ##1 }
}
}
\cs_new:Npn \__groupthm_define_family:nnnnn #1 #2 #3 #4 #5
{
\clist_set:Nn \l_tmpa_clist { #2 }
\powerset_clist_foreach:Nn \l_tmpa_clist
{
\clist_set_eq:NN \l__groupthm_group_clist \l_tmpa_clist
\clist_put_right:Nn \l__groupthm_group_clist { #5 }
\__groupthm_sort_group_names:
\use:c{groupthm_new_theorem:xVnn}
{__#1__groups_\clist_use:Nn \l__groupthm_group_clist {_}}
\l__groupthm_group_clist
{ #3 }
{ #4 }
}
\clist_new:c { __groupthm_family__#1__group_clist }
\clist_set_eq:cN {__groupthm_family__#1__group_clist } \l_tmpa_clist
\clist_new:c { __groupthm_family__#1__always_group_clist }
\clist_set:cn {__groupthm_family__#1__always_group_clist } { #5 }
}
\__groupthm_define_multiple:nnnNNnn
{ new, provide }
{ theorem ~ family }
{ __groupthm_family__##1__group_clist }
\__groupthm_error:
\__groupthm_define_family:nnnnn
{ groupthm_#1_family:nnnnn }
{ { ##1 } { ##2 } { ##3 } { ##4 } { ##5 }}
\cs_generate_variant:Nn \groupthm_new_family:nnnnn { n V V V V }
\cs_generate_variant:Nn \groupthm_provide_family:nnnnn { n V V V V }
\__groupthm_wrap_multiple:nnn
{ new, provide }
{ groupthm_#1_family:nnn }
{
\__groupthm_lazy:n
{
\__groupthm_set_normalized_keys:nnn { ##1 } { theorem ~ family } { ##2 }
\bool_if:nTF { ##3}
{
\clist_set:Nn \l_tmpa_clist { unnumbered }
}
{
\clist_clear:N \l_tmpa_clist
}
\bool_if:NT \l__groupthm_starred_version_bool
{
\clist_put_left:Nn \l__groupthm_group_clist { starred }
}
\use:c { groupthm_#1_family:nVVVV }
{ ##2 }
\l__groupthm_group_clist
\l__groupthm_name_tl
\l__groupthm_thmtools_clist
\l_tmpa_clist
}
}
\__groupthm_wrap_multiple_document:nnnn
{ new, provide }
{ \__groupthm_Declarator: GroupedTheoremFamily }
{ s O{} m }
{
\__groupthm_lazy:n
{
\use:c { groupthm_#1_family:nnn }
{ ##2 }
{ ##3 }
{ ##1 }
}
}
\cs_new:Npn \groupthm_add_theorem_to_group:n #1
{
\__groupthm_lazy:n
{
\bool_if:NTF \l__groupthm_in_family_options_environment_bool
{
\clist_put_left:Nn \l__groupthm_group_clist { #1 }
}
{
\msg_error:nn { groupthm } { misuse ~ add ~ theorem ~ to ~ group }
}
}
}
\NewDocumentCommand { \AddTheoremToGroup } { m }
{
\groupthm_add_theorem_to_group:n { #1 }
}
\cs_new:Npn \__groupthm_define_family_options:nnnn #1 #2 #3 #4
{
\DeclareDocumentEnvironment
{ #1 }
{ #2 }
{
\clist_clear:N \l__groupthm_group_clist
\bool_set_true:N \l__groupthm_in_family_options_environment_bool
#3
\bool_set_false:N \l__groupthm_in_family_options_environment_bool
\clist_put_right:Nn \l__groupthm_group_clist { #4 }
\__groupthm_sort_group_names:
\cs_if_exist:cTF { __#1__groups_ \clist_use:Nn \l__groupthm_group_clist { _ } }
{
\begin { __#1__groups_ \clist_use:Nn \l__groupthm_group_clist { _ } }
}
{
\msg_error:nnxx { groupthm } { undefined ~ theorem ~ variant }
{ #1 }
{ \clist_use:Nnnn \l__groupthm_group_clist { ~ and ~ } {, ~} { , ~ and ~ } }
}
}
{
\clist_clear:N \l__groupthm_group_clist
\bool_set_true:N \l__groupthm_in_family_options_environment_bool
#3
\bool_set_false:N \l__groupthm_in_family_options_environment_bool
\clist_put_right:Nn \l__groupthm_group_clist { #4 }
\__groupthm_sort_group_names:
\end { __#1__groups_ \clist_use:Nn \l__groupthm_group_clist { _ } }
}
\__groupthm_cache_slow:n
{
\csname __groupthm_define_family_options:nnnn \endcsname { #1 } { #2 } { #3 } { #4 }
}
}
\__groupthm_define_multiple:nnnNNnn
{ new, renew, provide, declare }
{ theorem ~ family ~ options }
{ ##1 }
\use_none:n
\__groupthm_define_family_options:nnnn
{ groupthm_#1_family_options:nnnn }
{ { ##1 } { ##2 } { ##3 } { ##4 } }
\cs_generate_variant:Nn \groupthm_new_family_options:nnnn { n n n V }
\cs_generate_variant:Nn \groupthm_renew_family_options:nnnn { n n n V }
\cs_generate_variant:Nn \groupthm_provide_family_options:nnnn { n n n V }
\cs_generate_variant:Nn \groupthm_declare_family_options:nnnn { n n n V }
\__groupthm_wrap_multiple_document:nnnn
{ new, renew, provide, declare }
{ \__groupthm_Declarator: GroupedTheoremFamilyOptions }
{ s O{} m m m }
{
\__groupthm_lazy:n
{
\keys_set:nn { groupthm / theorem ~ family ~ options } { starred ~ version }
\keys_set:nn { groupthm / theorem ~ family ~ options } { ##2 }
\bool_if:nTF { ##1 }
{
\clist_set:Nn \l_tmpa_clist { unnumbered }
}
{
\clist_clear:N \l_tmpa_clist
}
\use:c { groupthm_#1_family_options:nnnV }
{ ##3 }
{ ##4 }
{ ##5 }
\l_tmpa_clist
\bool_if:NT \l__groupthm_starred_version_bool
{
\use:c { groupthm_#1_family_options:nnnV }
{ ##3* }
{ ##4 }
{
##5
\groupthm_add_theorem_to_group:n { starred }
}
\l_tmpa_clist
}
}
}
\bool_if:NTF \g__groupthm_cache_bool
{
\cs_new:Npn \__groupthm_write_auxout:n
{
\iow_now:cn { @auxout }
}
\cs_generate_variant:Nn \__groupthm_write_auxout:n { x }
\cs_new:Npn \__groupthm_dump_auxfile:n
{
\clist_gput_right:Nn \g__groupthm_dump_auxfile_clist
}
\cs_generate_variant:Nn \__groupthm_dump_auxfile:n { x }
\cs_new:Npn \__groupthm_cache_auxfile:n
{
\clist_gput_right:Nn \g__groupthm_dump_cache_clist
}
\cs_generate_variant:Nn \__groupthm_cache_auxfile:n { V }
\hook_gput_code:nnn { enddocument } { groupthm }
{
\clist_map_function:NN \g__groupthm_dump_auxfile_clist
\__groupthm_write_auxout:n
\__groupthm_write_auxout:n
{
\csname tl_gput_right:cn \endcsname
{
g__groupthm_lazy_auxfile_tl
}
}
\__groupthm_write_auxout:x { \str_use:N \c_left_brace_str }
\clist_map_function:NN \g__groupthm_dump_cache_clist
\__groupthm_write_auxout:n
\__groupthm_write_auxout:x { \str_use:N \c_right_brace_str }
}
\__groupthm_dump_auxfile:x
{
\ExplSyntaxOn
\int_gset:Nn \exp_not:N \g__groupthm_cache_version_aux_int
{
\int_use:N \g__groupthm_cache_version_document_int
}
\ExplSyntaxOff
}
\cs_new:Npn \__groupthm_lazy:n
{
\tl_gput_right:Nn \g__groupthm_lazy_document_tl
}
\cs_set_eq:NN \__groupthm_cache:n \__groupthm_cache_auxfile:n
\cs_new:Npn \__groupthm_cache_slow:n #1
{
\tl_set:Nn \l_tmpa_tl
{
{ #1 }
}
\regex_replace_all:nnN { \cP\# } { \cO\# } \l_tmpa_tl
\__groupthm_cache_auxfile:V \l_tmpa_tl
}
\hook_gput_code:nnn { begindocument } { groupthm }
{
\cs_set_eq:NN \__groupthm_lazy:n \use:n
\int_compare:nNnTF
\g__groupthm_cache_version_aux_int < \g__groupthm_cache_version_document_int
{
\tl_use:N \g__groupthm_lazy_document_tl
}
{
\tl_use:N \g__groupthm_lazy_auxfile_tl
}
}
}
{
\cs_set_eq:NN \__groupthm_cache:n \use_none:n
\cs_set_eq:NN \__groupthm_cache_slow:n \use_none:n
\cs_set_eq:NN \__groupthm_lazy:n \use:n
}
\groupthm_new_group:nnnnn { all } { } { } { } { }
\groupthm_new_group:nnnnn { starred } { } { } { } { numbered = no }
\groupthm_new_group:nnnnn { unnumbered } { } { } { } { numbered = no }
\endinput
%%
%% End of file `groupthm.sty'.

View file

@ -0,0 +1,296 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'refproof.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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesExplPackage{mkessler-refproof}{2022/06/12}{2.9-14-g6545412}{Automatic references to theorems in proofs. Claim counters within proofs}
\ExplSyntaxOn
\RequirePackage{amssymb}
\RequirePackage{amsthm}
\RequirePackage{xparse}
\RequirePackage{refcount}
\RequirePackage{translator}
\RequirePackage{mkessler-subproof} % TODO: let PyTeX format the mkessler- prefix
%%%% Hook management
\cs_new:Npn\__mkessler_refproof_autoref:n
{
\ref
}
\AddToHook{package/hyperref/after}
{
\cs_set:Npn\__mkessler_refproof_autoref:n
{
\autoref
}
}
%%% Saving old definitions
\cs_new_eq:NN \__mkessler_refproof_saved_proof:w \proof
\cs_new_eq:NN \__mkessler_refproof_saved_endproof: \endproof
\cs_new_eq:NN \__mkessler_refproof_saved_subproof:n \rawsubproof
\cs_new_eq:NN \__mkessler_refproof_saved_endsubproof: \rawendsubproof
%%% Internal variables
\int_new:N \__mkessler_refproof_proofdepth_int
\seq_new:N \__mkessler_refproof_nested_claim_counter_values_seq
\prop_new:N \__mkessler_refproof_refproof_claim_counters_prop
\cs_generate_variant:Nn \seq_push:Nn { N x }
%%% Language translations
\usedictionary{translator-proof-dictionary}
%%%Now, we internally got a proof and a subproof environment
%%%Make them available as 'old' variants, with their defautl behaviour
\NewDocumentEnvironment{oldproof}{ o }
{
\IfValueTF { #1 }
{
\__mkessler_refproof_saved_proof:w { #1 }
}
{
\__mkessler_refproof_saved_proof:w
}
}
{
\__mkessler_refproof_saved_endproof:
}
\NewDocumentEnvironment{oldsubproof}{ o }
{
\IfValueTF { #1 }
{
\__mkessler_refproof_saved_subproof:n { #1 }
}
{
\__mkessler_refproof_saved_subproof:n { \translate { Subproof } }
}
}
{
\__mkessler_refproof_saved_endsubproof:
}
%%% Main implementation
%Introduce claim environment
\newtheorem{claim}{\translate{Claim}}
\newtheorem*{claim*}{\translate{Claim}}
\AtBeginDocument{\def\claimautorefname{\translate{Claim}}}
\cs_new:Nn \__mkessler_refproof_enter_proof:
{
\int_gincr:N \__mkessler_refproof_proofdepth_int
\seq_gpush:Nx \__mkessler_refproof_nested_claim_counter_values_seq
{
\arabic { claim }
}
\group_begin:
}
\cs_new:Nn \__mkessler_refproof_leave_proof:
{
\group_end:
\seq_gpop:NN \__mkessler_refproof_nested_claim_counter_values_seq \l_tmpa_tl
\setcounter { claim } { \tl_use:N \l_tmpa_tl }
\int_gdecr:N \__mkessler_refproof_proofdepth_int
}
% Usage:
% #1 = \BooleanTrue or \BooleanFalse indicating presence of star
% #2 = star version of translation
% #3 = nonstar version of translation
\cs_new:Nn \__mkessler_refproof_set_proof_prefix:nnn
{
\IfBooleanTF { #1 }
{
\cs_set:Nn \__mkessler_refproof_proof_prefix:
{
\translate { #2 }
}
}
{
\cs_set:Nn \__mkessler_refproof_proof_prefix:
{
\translate { #3 }
}
}
}
\cs_new:Nn \__mkessler_refproof_proof_comment:n
{
\IfValueT { #1 }
{
\c_space_tl ( #1 )
}
}
\NewDocumentEnvironment{refproof}{s m !o}
{
\__mkessler_refproof_enter_proof:
\prop_get:NnN
\__mkessler_refproof_refproof_claim_counters_prop
{ #2 }
\l_tmpa_tl
\quark_if_no_value:NTF \l_tmpa_tl
{
\setcounter { claim } { 0 }
\__mkessler_refproof_set_proof_prefix:nnn { #1 }
{ Proof* ~ of }
{ Proof ~ of }
}
{
\setcounter { claim } { \tl_use:N \l_tmpa_tl }
\__mkessler_refproof_set_proof_prefix:nnn { #1 }
{ Continuation ~ of ~ proof* ~ of }
{ Continuation ~ of ~ proof ~ of }
}
% Set up counter number printing as subindexed by numbering of the reference
\renewcommand \theclaim
{
\getrefnumber { #2 } . \arabic { claim }
}
\__mkessler_refproof_saved_proof:w
[
\__mkessler_refproof_proof_prefix:
\c_space_tl
\__mkessler_refproof_autoref:n { #2 }
\__mkessler_refproof_proof_comment:n { #3 }
]
}
{
\__mkessler_refproof_saved_endproof:
\prop_gput:Nnx \__mkessler_refproof_refproof_claim_counters_prop
{ #2 }
{
\value{claim}
}
\__mkessler_refproof_leave_proof:
}
%%% A 'smart' proof environment
\AtBeginDocument{
\RenewDocumentEnvironment{proof}{!s !o}
{
\__mkessler_refproof_enter_proof:
\setcounter{claim}{0}
\renewcommand \theclaim
{
\arabic { claim }
}
\int_compare:nNnTF \__mkessler_refproof_proofdepth_int > 1
{
\__mkessler_refproof_set_proof_prefix:nnn { #1 }
{ Subproof* }
{ Subproof }
\__mkessler_refproof_saved_subproof:n
{
\__mkessler_refproof_proof_prefix:
\__mkessler_refproof_proof_comment:n { #2 }
}
}
{
\__mkessler_refproof_set_proof_prefix:nnn { #1 }
{ Proof* }
{ Proof }
\__mkessler_refproof_saved_proof:w
[
\__mkessler_refproof_proof_prefix:
\__mkessler_refproof_proof_comment:n { #2 }
]
}
}
{
\__mkessler_refproof_saved_endproof:
\__mkessler_refproof_leave_proof:
}
}
\RenewDocumentEnvironment{subproof}{!s !o}
{
\__mkessler_refproof_enter_proof:
\setcounter { claim } { 0 }
\renewcommand \theclaim
{
\arabic { claim }
}
\__mkessler_refproof_set_proof_prefix:nnn { #1 }
{ Subproof* }
{ Subproof }
\__mkessler_refproof_saved_subproof:n
{
\__mkessler_refproof_proof_prefix:
\__mkessler_refproof_proof_comment:n { #2 }
}
}
{
\__mkessler_refproof_saved_endsubproof:
\__mkessler_refproof_leave_proof:
}
\DeclareDocumentCommand { \proofdepth } { }
{
\int_to_arabic:n \__mkessler_refproof_proofdepth_int
}

View file

@ -0,0 +1,74 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX dictionary is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the dictionary sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesDictionary{translator-proof-dictionary}{English}
\providetranslation{Claim}{Claim}
\providetranslation{claim}{claim}
\providetranslation{Claim*}{Claim*}
\providetranslation{claim*}{claim*}
\providetranslation{Proof}{Proof}
\providetranslation{proof}{proof}
\providetranslation{Proof*}{Proof*}
\providetranslation{proof*}{proof*}
\providetranslation{Proof of}{Proof of}
\providetranslation{proof of}{proof of}
\providetranslation{Proof* of}{Proof* of}
\providetranslation{proof* of}{proof* of}
\providetranslation{Continuation of proof}{Continuation of proof}
\providetranslation{continuation of proof}{continuation of proof}
\providetranslation{Continuation of proof of}{Continuation of proof of}
\providetranslation{continuation of proof of}{continuation of proof of}
\providetranslation{Continuation of proof*}{Continuation of proof*}
\providetranslation{continuation of proof*}{continuation of proof*}
\providetranslation{Continuation of proof* of}{Continuation of proof* of}
\providetranslation{continuation of proof* of}{continuation of proof* of}
\providetranslation{Subproof}{Subproof}
\providetranslation{subproof}{subproof}
\providetranslation{Subproof*}{Subproof*}
\providetranslation{subproof*}{subproof*}

View file

@ -0,0 +1,74 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX dictionary is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the dictionary sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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*}

View file

@ -0,0 +1,141 @@
%%
%% This is file `thmstyle.sty',
%% generated with the docstrip utility.
%%
%% The original source files were:
%%
%% thmstyle.dtx (with options: `package')
%%
%% IMPORTANT NOTICE:
%%
%% For the copyright see the source file.
%%
%% Any modified versions of this file must be renamed
%% with new filenames distinct from thmstyle.sty.
%%
%% For distribution of the original source see the terms
%% for copying and modification in the file thmstyle.dtx.
%%
%% This generated file may be distributed as long as the
%% original source files, as listed above, are part of the
%% same distribution. (The sources need not necessarily be
%% in the same archive or directory.)
%% File: thmstyle.dtx
\ProvidesExplPackage{thmstyle}{2022/01/17}{0.0.1}{Styles for thmtools theorems.}
\RequirePackage{amsthm}
\RequirePackage{thmtools}
\RequirePackage{mdframed}
\RequirePackage{xcolor}
\RequirePackage{l3keys2e}
\bool_new:N \g__thmstyle_default_styles_bool
\definecolor{gold}{RGB}{218,165,32}
\keys_define:nn { thmstyle }
{
default styles .bool_set:N = \g__thmstyle_default_styles_bool,
default styles .default:n = { true },
}
\ProcessKeysOptions { thmstyle }
\cs_new:Npn \__thmstyle_mdframed_define_style:nn #1 #2
{
\mdfdefinestyle{#2}{#1}
}
\cs_new:Npn \__thmstyle_thmtools_declare_style:nn #1 #2
{
\declaretheoremstyle[#1]{#2}
}
\cs_generate_variant:Nn \__thmstyle_thmtools_declare_style:nn { x x }
\cs_new:Npn \thmstyle_declare_mdf_style:nnn #1 #2 #3
{
\__thmstyle_mdframed_define_style:nn
{
linecolor = #2,
linewidth = 2pt,
leftmargin = 0pt,
rightmargin = 0pt,
rightline = false,
topline = false,
bottomline = false,
backgroundcolor = #3,
skipabove = 0.7\baselineskip,
skipbelow = 0pt,
innerrightmargin = 10pt,
innerbottommargin = 5pt
}
{
#1
}
}
\cs_generate_variant:Nn \thmstyle_declare_mdf_style:nnn { x n x }
\NewDocumentCommand { \DeclareFancyMdfStyle } { o m o }
{
\thmstyle_declare_mdf_style:xnx
{
\IfValueTF { #3 }
{
#3
}
{
md #2 margin
\IfValueT { #1 }
{
and #1 fill
}
}
}
{
#2
}
{
\IfValueTF { #1 }
{
#1
}
{
white
}
}
}
\NewDocumentCommand { \DeclareFancyThmStyle } { o m o }
{
\DeclareFancyMdfStyle [ #1 ] { #2 }
\__thmstyle_thmtools_declare_style:xx
{
mdframed =
{
style = md #2 margin \IfValueT { #1 } { and #1 fill }
},
postheadspace = { 0.3em },
notefont = \noexpand\mdseries,
}
{
\IfValueTF { #3 }
{ #3 }
{
thm #2 margin
\IfBooleanT { #1 }
{
and #1 fill
}
}
}
}
\bool_if:NT \g__thmstyle_default_styles_bool
{
\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]
}
\endinput
%%
%% End of file `thmstyle.sty'.

View file

@ -0,0 +1,131 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX class is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the class sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Write up university exercise sheets]
% This is meant as a layouting class for easily writing up exercise sheets.
% Use \course \sheetnumber and \author to set metadata of the document
% Use option [largename] if the author(s) is/are too long and collide in the fancy header
% Use option [german|ngerman|english] to control language appearance
\RequirePackage{scrbase}
\newif\ifmkessler@sheet@english\mkessler@sheet@englishtrue
\DeclareOption{german}{\mkessler@sheet@englishfalse}
\DeclareOption{ngerman}{\mkessler@sheet@englishfalse}
\DeclareOption{english}{\mkessler@sheet@englishtrue}
\newif\ifmkessler@sheet@largename\mkessler@sheet@largenamefalse
\DeclareOption{large-name}{\mkessler@sheet@largenametrue}
\DeclareOption*{\PassOptionsToClass{\CurrentOption}{scrartcl}}
\ProcessOptions\relax
\LoadClass{scrartcl}
\KOMAoption{fontsize}{12pt}
\KOMAoption{parskip}{half-}
\KOMAoption{DIV}{12}
\KOMAoption{headings}{normal}
\RequirePackage{scrlayer-scrpage}
\KOMAoption{headsepline}{:}
\def\@course{\ClassError{mkessler-sheet}{No \noexpand\course given}{Use \noexpand\course{<coursename>} to set the course.}}%
\DeclareRobustCommand*{\course}[1]{\gdef\@course{#1}}
\def\@sheetnumber{\ClassError{mkessler-sheet}{No \noexpand\sheetnumber given}{Use \noexpand\sheetnumber{<num>} to set the current sheetnumber.}}%
\DeclareRobustCommand*{\sheetnumber}[1]{\gdef\@sheetnumber{\ifmkessler@sheet@english Sheet #1 \else Übungsblatt #1\fi}}
\renewcommand*{\@date}{\today}
\renewcommand*{\maketitle}{
\thispagestyle{plain}
{\makebox[0pt][l]{\usekomafont{myauthor}\@author}\hfill\makebox[0pt][r]{\usekomafont{date}\@date}\par}
\vspace{0.5em}
{\centering\usekomafont{title}\@course\par}
{\centering\usekomafont{subtitle}\@sheetnumber \par}
\vspace{2em}
\hrule
\addvspace{2em}
}
\setkomafont{title}{\LARGE\bfseries}
\setkomafont{subtitle}{}
\newkomafont{myauthor}{}
\setkomafont{date}{}
\newkomafont{headtitle}{\itshape}
\setkomafont{pageheadfoot}{\footnotesize}
\setkomafont{descriptionlabel}{\bfseries}
\setkomafont{pagenumber}{\normalsize}
\pagestyle{scrheadings}
\ihead[]{\ifmkessler@sheet@largename \usekomafont{myauthor}\@author \\ \@course\;- \@sheetnumber\else \usekomafont{myauthor}\@author\fi }
\chead[]{\ifmkessler@sheet@largename \else \usekomafont{subtitle}\@course\;- \@sheetnumber\fi}
\ohead[]{\usekomafont{date}\@date}
% Page layout
\setlength{\parindent}{0pt}
\RequirePackage[a4paper, left=2cm, right=2cm, top=3cm, bottom=3cm, head=15.0pt, headsep=10pt]{geometry}
\setlength{\skip\footins}{15pt}
\setlength{\abovecaptionskip}{0cm}
\setlength{\belowcaptionskip}{0cm}
%Für Zeilenabstand 1,5
\RequirePackage[onehalfspacing]{setspace}
\RequirePackage[super]{nth}
\newcommand\nr[1]{
\section*{\ifmkessler@sheet@english\nth{#1} exercise\else #1. Aufgabe\fi}
\setcounter{equation}{0}
}

View file

@ -0,0 +1,149 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesExplPackage{mkessler-symbindex}{2022/06/12}{2.9-14-g6545412}{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: }
{
\bool_if:cF { used_#2 }
{
\index[#1]
{
#7
@
$#4{#5}#6$
#3
}
\bool_gset_true:c { used_#2 }
}
#4{#5}
}
\expandafter\protected\expandafter\gdef\csname#2\endcsname
{
\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
}

View file

@ -0,0 +1,101 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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]
}
\NewDocumentCommand{\PrintVocabIndex}{ }
{
\printindex[vocabindex]
}
\else
\NewDocumentCommand{\vocab}{O{} m }{
\textbf{\color{blue} #2}
}
\fi

View file

@ -0,0 +1,162 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Package for managing different lectures within a document]
% The core of the lecture command this package provides has been taken from the preamble in
% https://github.com/gillescastel/university-setup
% which is licensed under
%MIT License
%Copyright (c) 2019 Gilles Castel
%Permission is hereby granted, free of charge, to any person obtaining a copy
%of this software and associated documentation files (the "Software"), to deal
%in the Software without restriction, including without limitation the rights
%to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
%copies of the Software, and to permit persons to whom the Software is
%furnished to do so, subject to the following conditions:
%
%The above copyright notice and this permission notice shall be included in all
%copies or substantial portions of the Software.
%
%THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
%IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
%FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
%AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
%LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
%OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
%SOFTWARE.
% This package extends the lecture command to make a summary of lectures at the beginning of a document, and has thus modified this command.
\RequirePackage{xkeyval}
\newif\ifmkessler@lectures@english\mkessler@lectures@englishtrue
\DeclareOptionX{german}{\mkessler@lectures@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@lectures@englishfalse}
\DeclareOptionX{english}{\mkessler@lectures@englishtrue}
\newif\ifmkessler@lectures@fancyhead\mkessler@lectures@fancyheadfalse
\DeclareOptionX{fancyhead}{\mkessler@lectures@fancyheadtrue}
\DeclareOptionX*{\PackageWarning{mkessler-lectures}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%Tocloft package for making a list of lectures
\RequirePackage{tocloft}
%Store name of the summary in a command to use it multiple times
\newcommand\mkessler@lectures@listlecturename{\ifmkessler@lectures@english Summary of lectures\else Übersicht der Vorlesungen\fi}
\newlistof{lecture}{lec}{\mkessler@lectures@listlecturename} % Declare new list of lectures
%Settings how to print the summary
\renewcommand{\cftdot}{}
\renewcommand\cftlecturefont{\normalfont\bfseries}
\renewcommand\cftlecturepagefont{\normalfont\bfseries}
\renewcommand\cftlectitlefont{\Large\bfseries}
\renewcommand\cftbeforelectureskip{1em}
%Command to parse the date
\RequirePackage{xifthen}
\def\testdateparts#1{\dateparts#1\relax}
\def\dateparts#1 #2 #3 #4 #5\relax{
\marginpar{\small\textsf{\mbox{#1 #2 #3 #5}}}
}
%Define the main lecture command to start a new lecture
\def\mkessler@lectures@lectureprefix{\ifmkessler@lectures@english Lecture\else Vorlesung\fi}
\def\@lecture{}%
\RequirePackage{xparse}
% \lecture[keywords]{date}[number]{title}[margin note]
\NewDocumentCommand{\lecture}{ O{} m O{} m O{}}{
\ifthenelse{\isempty{#3}}{\refstepcounter{lecture}}{\setcounter{lecture}{#3}}
%Store lecture name in the macro \@lecture
\ifthenelse{\isempty{#4}}{%
\def\@lecture{\mkessler@lectures@lectureprefix\, \thelecture}%
}{%
\def\@lecture{\mkessler@lectures@lectureprefix\, \thelecture: #4}%
}%
\marginpar{\small\textsf{\parbox{10em}{\mkessler@lectures@lectureprefix\, \thelecture \\#2}}}
%Add lecture as an entry to the lectures file
\addcontentsline{lec}{lecture}{\mkessler@lectures@lectureprefix\,\thelecture\,(#2)}
%If key words are provided, add the key words of the lecture below the entry
\ifthenelse{\isempty{#1}}{}{\addtocontents{lec}{\smallskip\hspace{1.5em}\protect\parbox{\dimexpr\textwidth-\@pnumwidth - 2em}{#1}}}
}
%Provide a command to show the summary of lectures
\DeclareRobustCommand*{\summaryoflectures}{
\phantomsection
\addcontentsline{toc}{section}{\mkessler@lectures@listlecturename}
\thispagestyle{plain}
\listoflecture
}
\ifmkessler@lectures@fancyhead
\RequirePackage{fancyhdr}
\pagestyle{fancy}
% LE: left even
% RO: right odd
% CE, CO: center even, center odd
\fancyhead[RO,LE]{\@lecture} % Right odd, Left even
\fancyhead[RE,LO]{} % Right even, Left odd
%%No fancy headers in the appendix (as there is no lecture)
\let\mkessler@lectures@stored@appendix\appendix
\renewcommand\appendix{
\mkessler@lectures@stored@appendix
\fancyhead[RO,LE]{}
\renewcommand{\headrulewidth}{0pt}
}
\fi

View file

@ -0,0 +1,219 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX class is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the class sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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}

View file

@ -0,0 +1,208 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesExplPackage{mkessler-categories}{2022/06/12}{2.9-14-g6545412}{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{\textup{\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}
}
}
}
\NewDocumentCommand{\MakeCategoryIndex}{ }
{
\printindex[categories]
}
\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)}
]
\DeclareSimpleCategory
{ GrAb }
[
\translate{GrAb~(Category~description)}
]
\DeclareCategory
[
operator = \operatorname,
formula = \Delta,
ordered = Ordinal,
description = \translate{Ordinal ~ number ~ category ~ (Category ~ description)}
]
{OrdCat}

View file

@ -0,0 +1,68 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX dictionary is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the dictionary sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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}
\providetranslation{GrAb (Category description)}{Graded abelian groups and homomorphisms}
\providetranslation{Ordinal number category (Category description)}{Finite ordinal numbers and order-preserving maps}

View file

@ -0,0 +1,68 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX dictionary is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the dictionary sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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}
\providetranslation{GrAb (Category description)}{Graduierte Gruppen und Homomorphismen}
\providetranslation{Ordinal number category (Category description)}{Endliche Ordinalzahlen und ordnungserhaltende Abbildungen}

View file

@ -0,0 +1,94 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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 O{-0.5} m O{0.5} m}{% \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
}

View file

@ -0,0 +1,98 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Easy aliasing for math style commands]
\RequirePackage{xkeyval}
\newif\ifmkessler@mathalias@basic\mkessler@mathalias@basicfalse
\newif\ifmkessler@mathalias@extended\mkessler@mathalias@extendedfalse
\DeclareOptionX{basic}{\mkessler@mathalias@basictrue}
\DeclareOptionX{extended}{\mkessler@mathalias@extendedtrue\mkessler@mathalias@basictrue}
\DeclareOptionX*{\PackageWarning{mkessler-mathalias}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
%Usage: \MakeAliasesForwith\<mathcommand>{<prefix>}{<Set of letters>}
% to declare commands of form \<prefix><Letter> as \<mathcommand>{<Letter>} for each
% of the specfied letters
%
% E.g. \MakeAliasesForwith\mathcal{c}{ABC} will declare
% \cA \cB \cC \cD as \mathcal{A}, \mathcal{B}, \mathcal{C}
% This is also ensuring math context, so that
% \cA will be valid even in normal text.
\NewDocumentCommand{\MakeAliasesForwith}{m m m}
{
\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

View file

@ -0,0 +1,95 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Math figures with TikZ / pgfplots / xy]
% This is just a collection of the packages I use to typeset mathematical figures
% most commonly plots, commutative diagrams or geometry
\RequirePackage{pgfplots} % Plots
\pgfplotsset{compat=1.7}
\RequirePackage{tikz} % Plots / drawings
\usetikzlibrary{calc, intersections, through, quotes, angles, babel, positioning, snakes}
\RequirePackage{tikz-cd} %Commutative diagrams
\RequirePackage{xparse}
%%for small diagrams, similar to tikz-cd
\RequirePackage[all]{xy} % for small diagrams, e.g. arrows
%%% In older versions, you found
% \RequirePackage{xy}
% \xyoption{all}
% here, but this messes with the catcode of the @ sign (which no package should do!)
% so that further parts in this package would get broken
\newcommand\pushoutsymbol{\tikz[baseline=0.5,scale=0.2]{
\draw[-] (0,0) --(0,1) -- (1,1);
\draw (1,0) circle (1.5pt);}
}
\newcommand\pullbacksymbol{\tikz[baseline=0.5,scale=0.2]{
\draw[-] (0,0) --(1,0) -- (1,1);
\draw (0,1) circle (1.5pt);}
}
% This is used in a tikzcd
\NewDocumentCommand\pushout{ O{dr} }{
\arrow[phantom, pos=0.45]{#1}{\pushoutsymbol}
}
% This is used in a tikzcd
\NewDocumentCommand\pullback{ O{dr} }{
\arrow[phantom, pos=0.45]{#1}{\pullbacksymbol}
}

View file

@ -0,0 +1,90 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Hacky math packages for some (custom) fixes]
% This just brings together some (possibly ugly) hacks that I use when writing math. Likely, you do not want to use this except when building around this package (like I did), or already have similar shortcuts
%Proper Degree command
\def\mkessler@mathfixes@degree{\ensuremath{^\circ}}
\AtBeginDocument{\let\degree\mkessler@mathfixes@degree}
% Always put limits under \limit
\let\oldlim\lim\def\lim{\oldlim\limits}
% Print equal sign under subset by default to not confuse people
% (I still write \subset, because this enables me remove this renewcommand and have the default \subset command evaluated instead
\let\mkessler@mathfixes@subseteq\subseteq
\let\mkessler@mathfixes@supseteq\supseteq
\AtBeginDocument{
\let\subset\mkessler@mathfixes@subseteq
\let\supset\mkessler@mathfixes@supseteq
}
%%Renew phi and epsilon to their proper versions, make the old ones available as
% uglyphi and uglyepsilon
\let\mkessler@mathfixes@stored@phi\phi
\let\mkessler@mathfixes@stored@varphi\varphi
\AtBeginDocument{
\let\phi\mkessler@mathfixes@stored@varphi
\let\varphi\mkessler@mathfixes@stored@varphi
\let\uglyphi\mkessler@mathfixes@stored@phi
\let\oldphi\mkessler@mathfixes@stored@phi
\let\goldenratio\mkessler@mathfixes@stored@phi
}
\let\mkessler@mathfixes@stored@epsilon\epsilon
\let\mkessler@mathfixes@stored@varepsilon\varepsilon
\AtBeginDocument{
\let\epsilon\mkessler@mathfixes@stored@varepsilon
\let\uglyepsilon\mkessler@mathfixes@stored@epsilon
\let\oldepsilon\mkessler@mathfixes@stored@epsilon
}

View file

@ -0,0 +1,75 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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}

View file

@ -0,0 +1,270 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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}{\ifmkessler@mathop@english gcd\else ggT\fi}
\def\ggT{\@ifstar\@mkessler@mathop@ggT\@@mkessler@mathop@ggT}
\DeclareMathOperator{\@mkessler@mathop@gcd}{gcd}
\DeclareMathOperator{\@@mkessler@mathop@gcd}{\ifmkessler@mathop@english gcd\else ggT\fi}
\def\gcd{\@ifstar\@mkessler@mathop@gcd\@@mkessler@mathop@gcd}
\DeclareMathOperator{\@mkessler@mathop@kgV}{kgV}
\DeclareMathOperator{\@@mkessler@mathop@kgV}{\ifmkessler@mathop@english lcm\else kgV\fi}
\def\kgV{\@ifstar\@mkessler@mathop@kgV\@@mkessler@mathop@kgV}
\DeclareMathOperator{\@mkessler@mathop@lcm}{lcm}
\DeclareMathOperator{\@@mkessler@mathop@lcm}{\ifmkessler@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}
\DeclareSimpleMathOperator{ord}
\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}
%% such that in set declarations
\newcommand{\suchthat}{\;\middle|\;}
%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}}
\NewDocumentCommand\set{m}
{
\left\{ #1 \right\}
}
%Taken from user egreg on
% https://tex.stackexchange.com/a/22255
\newcommand\frestriction[2]{{% we make the whole thing an ordinary symbol
\left.\kern-\nulldelimiterspace % automatically resize the bar with \right
#1 % the function
\vphantom{\big|} % pretend it's a little taller at normal size
\right|_{#2} % this is the delimiter
}}
\newcommand\directlimit{\varinjlim}
\newcommand\inverselimit{\varprojlim}
\DeclareMathOperator*{\freeproduct}{\raisebox{-0.5ex}{\scalebox{2}{$\ast$}}}

View file

@ -0,0 +1,98 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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}

110
quiver/mkessler-quiver.sty Normal file
View file

@ -0,0 +1,110 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'quiver.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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
%MIT License
%
% Copyright (c) 2018 varkor
%
% 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. *** quiver ***
%
%
% A package for drawing commutative diagrams exported from https://q.uiver.app.
%
% This package is currently a wrapper around the `tikz-cd` package, importing necessary TikZ
% libraries, and defining a new TikZ style for curves of a fixed height.
%
% Version: 1.2.1
% Authors:
% - varkor (https://github.com/varkor)
% - AndréC (https://tex.stackexchange.com/users/138900/andr%C3%A9c)
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{quiver}[2021/01/11 quiver]
% `tikz-cd` is necessary to draw commutative diagrams.
\RequirePackage{tikz-cd}
% `amssymb` is necessary for `\lrcorner` and `\ulcorner`.
\RequirePackage{amssymb}
% `calc` is necessary to draw curved arrows.
\usetikzlibrary{calc}
% `pathmorphing` is necessary to draw squiggly arrows.
\usetikzlibrary{decorations.pathmorphing}
% A TikZ style for curved arrows of a fixed height, due to AndréC.
\tikzset{curve/.style={settings={#1},to path={(\tikztostart)
.. controls ($(\tikztostart)!\pv{pos}!(\tikztotarget)!\pv{height}!270:(\tikztotarget)$)
and ($(\tikztostart)!1-\pv{pos}!(\tikztotarget)!\pv{height}!270:(\tikztotarget)$)
.. (\tikztotarget)\tikztonodes}},
settings/.code={\tikzset{quiver/.cd,#1}
\def\pv##1{\pgfkeysvalueof{/tikz/quiver/##1}}},
quiver/.cd,pos/.initial=0.35,height/.initial=0}
% TikZ arrowhead/tail styles.
\tikzset{tail reversed/.code={\pgfsetarrowsstart{tikzcd to}}}
\tikzset{2tail/.code={\pgfsetarrowsstart{Implies[reversed]}}}
\tikzset{2tail reversed/.code={\pgfsetarrowsstart{Implies}}}
% TikZ arrow styles.
\tikzset{no body/.style={/tikz/dash pattern=on 0 off 1mm}}
\endinput

View file

@ -0,0 +1,64 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Write LaTeX counters to auxiliary file]
\RequirePackage{etoolbox}
\newwrite\mkessler@counters@out
\immediate\openout\mkessler@counters@out\jobname.cnt\relax
\AtBeginDocument{
\let\mkessler@counters@saved@stepcounter\stepcounter
\def\stepcounter#1{
\mkessler@counters@saved@stepcounter{#1}
\immediate\write\mkessler@counters@out{#1: \csname the#1\endcsname}}
}

View file

@ -0,0 +1,95 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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
}

View file

@ -0,0 +1,112 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'powerset.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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesExplPackage{mkessler-powerset}{2022/06/12}{2.9-14-g6545412}{Iterate over powerset of clist}
\ExplSyntaxOn
%%% Iterate over powerset of claist
\clist_new:N \l_powerset_copied_clist
\seq_new:N \l_powerset_saved_seq
\cs_generate_variant:Nn \clist_remove_all:Nn { N V }
% Pseudocode of this macro
% remove left -> push on stack
% call recursive
% add left to 'extra'
% call recursive
% remove left from 'extra'
% add from stack to left
\cs_new:Npn \__powerset_clist_foreach_aux:Nn #1 #2
{
\clist_if_empty:NTF \l_powerset_copied_clist
{
#2
}
{
\clist_get:NN \l_powerset_copied_clist \l_tmpa_tl
\seq_push:NV \l_powerset_saved_seq \l_tmpa_tl
\clist_pop:NN \l_powerset_copied_clist { \l_tmpa_tl }
\__powerset_clist_foreach_aux:Nn #1 {#2}
\seq_get:NN \l_powerset_saved_seq \l_tmpa_tl
\clist_put_left:NV #1 \l_tmpa_tl
\__powerset_clist_foreach_aux:Nn #1 {#2}
\seq_get:NN \l_powerset_saved_seq \l_tmpa_tl
\clist_remove_all:NV #1 \l_tmpa_tl
\clist_push:NV \l_powerset_copied_clist \l_tmpa_tl
\seq_pop:NN \l_powerset_saved_seq \l_tmpa_tl
}
}
% Usage:
% \clist_use_powerset:Nn {clist variable name}{code for each subset}
% This will execute #2 for each subset of the listname given as #1
% In #2, the name given as #1 can be used for the current subset
% After execution, the value of #1 is restored
\cs_new:Npn \powerset_clist_foreach:Nn #1 #2
{
\clist_set_eq:NN \l_powerset_copied_clist #1
\clist_clear:N #1
\clist_remove_duplicates:N \l_powerset_copied_clist
\__powerset_clist_foreach_aux:Nn #1 {#2}
\clist_set_eq:NN #1 \l_powerset_copied_clist
}

View file

@ -0,0 +1,88 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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]
}

198
wip/cache/mkessler-cache.sty vendored Normal file
View file

@ -0,0 +1,198 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'cache.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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\ProvidesExplPackage{mkessler-cache}{2022/06/12}{2.9-14-g6545412}{Cache definitions of previous LaTeX runs to avoid computations}
%%%% This is just a proof of concept package,
%%%% there is possibly more room for clean-up
%%%% and / or speed-up etc.
%%% Also, the provided
%%% \DeclareCachedDocumentCommand
%%% is of course not really
%%% useful and just for demonstration
%%% purposes
\bool_new:N \g__cache_cache_bool
\int_new:N \g__cache_cache_version_document_int
\int_new:N \g__cache_cache_version_aux_int
\int_gset:Nn \g__cache_cache_version_aux_int { -1 }
\clist_new:N \g__cache_dump_auxfile_clist %% usual dump
\clist_new:N \g__cache_dump_cache_clist %% will be dumped such that it is restored as \g__cache_lazy_auxfile_tl on next run.
\tl_new:N \g__cache_lazy_document_tl
\tl_new:N \g__cache_lazy_auxfile_tl
\keys_define:nn { cache }
{
cache .bool_set:N = \g__cache_cache_bool,
cache .default:n = { true },
__cache version__ .int_set:N = \g__cache_cache_version_document_int,
cache version .meta:nn = { cache } { cache = true, __cache version__ = #1 },
cache version .default:n = { 0 },
}
\RequirePackage{l3keys2e}
\ProcessKeysOptions{cache}
% Setting up lazy execution and
% selecting of executing after reading of aux file
% if cache option has been used
\bool_if:NTF \g__cache_cache_bool
{
%% Writing things (at one go) to aux file at end of document:
\cs_new:Npn \__cache_dump_auxfile:n
{
\clist_gput_right:Nn \g__cache_dump_auxfile_clist
}
\cs_generate_variant:Nn \__cache_dump_auxfile:n { x }
\cs_new:Npn \__cache_dump_cache:n
{
\clist_gput_right:Nn \g__cache_dump_cache_clist
}
\cs_generate_variant:Nn \__cache_dump_cache:n { V }
\cs_new:Npn \__cache_write_auxout:n
{
\iow_now:cn { @auxout }
}
\cs_generate_variant:Nn \__cache_write_auxout:n { x }
%%% Handles dumping data to aux file at end of document
\hook_gput_code:nnn { enddocument } { cache }
{
\clist_map_function:NN \g__cache_dump_auxfile_clist
\__cache_write_auxout:n
\__cache_write_auxout:n
{
\csname tl_gput_right:cn \endcsname
{
g__cache_lazy_auxfile_tl
}
}
\__cache_write_auxout:x { \str_use:N \c_left_brace_str }
\clist_map_function:NN \g__cache_dump_cache_clist
\__cache_write_auxout:n
\__cache_write_auxout:x { \str_use:N \c_right_brace_str }
}
%%% Writes the current cache version into aux file
\__cache_dump_auxfile:x
{
\ExplSyntaxOn
\int_gset:Nn \exp_not:N \g__cache_cache_version_aux_int
{
\int_use:N \g__cache_cache_version_document_int
}
\ExplSyntaxOff
}
%%% Executing something lazily at beginning of document
%%% Lazy code only gets executed if auxfile version is older than document
\cs_new:Npn \__cache_lazy:n
{
\tl_gput_right:Nn \g__cache_lazy_document_tl
}
%%% Caching things. Handles writing and reading to aux file
%%% and makes code available in the next run of LaTeX
\cs_new:Npn \__cache_cache:n #1
{
\tl_set:Nn \l_tmpa_tl
{
{ #1 }
}
\regex_replace_all:nnN { \cP\# } { \cO\# } \l_tmpa_tl
\__cache_dump_cache:V \l_tmpa_tl
}
%%% This handles loading either the cached definitions
%%% from last run or executing the lazy definitions from the current run
%%% after loading the aux file
\hook_gput_code:nnn { begindocument } { cache }
{
\int_compare:nNnTF
\g__cache_cache_version_aux_int < \g__cache_cache_version_document_int
{
\tl_use:N \g__cache_lazy_document_tl
}
{
\tl_use:N \g__cache_lazy_auxfile_tl
}
}
}
{
\cs_set_eq:NN \__cache_lazy:n \use:n
\cs_set_eq:NN \__cache_cache:n \use_none:n
}
\cs_new:Npn \__cached_new_document_command:nnn #1 #2 #3
{
\NewDocumentCommand{#1}{#2}{#3}
\__cache_cache:n
{
\csname __cached_new_document_command:nnn \endcsname { #1 } { #2 } { #3 }
}
}
\NewDocumentCommand{\DeclareCachedDocumentCommand}{mmm}
{
\__cache_lazy:n
{
\__cached_new_document_command:nnn{#1}{#2}{#3}
}
}

View file

@ -0,0 +1,85 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'code.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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-code}[2022/06/12 - Hacky code setup for verbatim code]
\newif\ifmkessler@code@pipe\mkessler@code@pipefalse
\DeclareOption{pipe}{\mkessler@code@pipetrue}
\ProcessOptions
% This is needed in general: when _ is active, we want it to expand to
% an actual _ character
\catcode`_=13
\let_\_
\catcode`_=8
\ExplSyntaxOn
\NewDocumentCommand{\code}{m}
{
\tl_set_rescan:Nnn \l_tmpa_tl
{
\char_set_catcode_active:N _
}
{ #1 }
\texttt{ \tl_use:N \l_tmpa_tl }
}
\ExplSyntaxOff
\ifmkessler@code@pipe
\catcode`|=\active
\def|#1|{
\code{#1}
}
% Do not make | active inside tables
\AddToHook{env/tabular/before}[code]{\catcode`|=12}
\AddToHook{env/tabular/after}[code]{\catcode`|=13}
\fi

View file

@ -0,0 +1,89 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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}
}

View file

@ -0,0 +1,56 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Packages related to inclusion of figures.]
\RequirePackage{caption}
\RequirePackage{subcaption}
\RequirePackage{float}

67
wip/gag/mkessler-gag.sty Normal file
View file

@ -0,0 +1,67 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Numbering of environments with a fractional environment number]
% For the stack exchange source, see
% https://tex.stackexchange.com/questions/598076/how-to-have-a-fractional-environment-number/598080?noredirect=1#comment1499689_598080
% However, for a reason i don't understand the posted answer does not work for me, but i had to replace theorem with definition in the definition of the gag environment (so apparently, i have to do this for each environment separately). It seems that the definitions of this document do use \thedefinition and not \thetheorem, although by default this is not the case.
\newcounter{gag}
\makeatletter
\newenvironment{gag}[1]{%
\let\savedthedefinition\thedefinition
\thm@headfont{\bfseries\boldmath}%
\stepcounter{gag}%
\renewcommand{\thedefinition}{\savedthedefinition#1}%
\renewcommand{\theHdefinition}{gag\thegag}%
\addtocounter{definition}{-1}\ignorespaces
}{\ignorespacesafterend}
\makeatother

View file

@ -0,0 +1,73 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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

View file

@ -0,0 +1,69 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - (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}

View file

@ -0,0 +1,90 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Replacement package]
\RequirePackage{xkeyval}
\RequirePackage{todonotes}
\RequirePackage{xparse}
\RequirePackage{etoolbox}
\newif\ifmkessler@restate@english\mkessler@restate@englishtrue
\DeclareOptionX{english}{\mkessler@restate@englishtrue}
\DeclareOptionX{german}{\mkessler@restate@englishfalse}
\DeclareOptionX{ngerman}{\mkessler@restate@englishfalse}
\define@boolkey+{mkessler-restate.sty}[mkessler@restate@]{strict}[true]{
\ifmkessler@restate@strict
\PackageInfo{mkessler-restate}{Strict mode enabled. Undefined restates will throw errors.}%
\else
\PackageInfo{mkessler-restate}{Strict mode disabled. Undefined restates will now print placeholder boxes}%
\fi
}{
\PackageWarning{mkessler-restate}{Erroneous input to key 'strict' ignored. Provide =true or =false.}
}
\DeclareOptionX*{\PackageWarning{mkessler-restate}{Unknown '\CurrentOption'}}
\ProcessOptionsX*\relax
\newcommand\restatesetup[1]{\setkeys{mkessler-restate.sty}{#1}}
\NewDocumentCommand{\restatetheorem}{s m}{
\ifcsdef{#2}{
\ifx#1\BooleanTrue\csname#2\endcsname*\else\csname#2\endcsname\fi
}{
\ifmkessler@restate@strict
\PackageError{mkessler-restate}{Strict mode enabled but restate command not defined}{The theorem you tried to restate is not defined. Either make sure it is so that it can be printed or disable the strict mode with \noexpand\restatesetup{strict=false} to print a placeholder instead}
\else
\missingfigure{\ifmkessler@restate@english Here theorem \textbf{#2} is missing, since it is not part of this document.\else Hier fehlt die Wiederholung von Satz \textbf{#2}, der nicht Teil dieses Dokumentes ist.\fi}
\fi
}
}

View file

@ -0,0 +1,102 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% This package has been generated by PyTeX, available at
% https://github.com/kesslermaximilian/PyTeX
% and built from source file 'subproof.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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls above.
% Reportings of bugs, suggestions and improvements are welcome, see the README
% at the Git repository for further information.
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{mkessler-subproof}[2022/06/12 - Subproof environment with black square at end of proof.]
\RequirePackage{amssymb}
\RequirePackage{amsthm}
\RequirePackage{xparse}
\RequirePackage{refcount}
\RequirePackage{translator}
\usedictionary{translator-proof-dictionary}
\DeclareRobustCommand{\blackqed}{%
\ifmmode \mathqed
\else
\leavevmode\unskip\penalty9999 \hbox{}\nobreak\hfill
\quad\hbox{$\blacksquare$}%
\fi
}
\newcommand\rawsubproof[1]
{
\pushQED
{
\blackqed
}%
\normalfont \topsep6\p@\@plus6\p@\relax
\trivlist
\item[\hskip\labelsep
\itshape
#1\@addpunct{.}]\ignorespaces
}
\newcommand\rawendsubproof
{
\popQED\endtrivlist\@endpefalse
}
%%subproof environment - essentially copied proof environment from amsthm and modified its name + symbol
\DeclareDocumentEnvironment{subproof}{ o }
{
\IfValueTF{#1}
{
\rawsubproof{#1}
}
{
\rawsubproof{\translate{Subproof}}
}
}
{
\rawendsubproof
}

View file

@ -0,0 +1,96 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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}}
\NewDocumentCommand{\SetItemNumber}{m}
{
\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}
}

View file

@ -0,0 +1,77 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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
}

View file

@ -0,0 +1,97 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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}
}

View file

@ -0,0 +1,96 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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

View file

@ -0,0 +1,77 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - Easy standards for the todonotes package]
\RequirePackage[colorinlistoftodos]{todonotes}
\RequirePackage{xparse}
% Make \todo{} available inside minipages
\usepackage{marginnote}
\let\marginpar\marginnote
\setuptodonotes{tickmarkheight=0.1cm, size=\small}
\newcommand\todoref{
\todo[color=red!40]{Add reference.}
}
\newcommand\todoquestion{
\todo[color=black!10, size=\tiny]
}
\newcommand\todotex{
\todo[color=green!75!black]
}
\newcommand\todotypo{
\todo[color=blue!40, size=\tiny]{Typo corrected, double check this.}
}

View file

@ -0,0 +1,81 @@
%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
% Copyright © 2022 Maximilian Keßler
%
% This work may be distributed and/or modified
%
% 1. under the LaTeX Project Public License and/or
% 2. under the GNU General Public License
%
% Distribution under conditions of the LaTeX Project Public License,
% requires either version 1.3 of this license or (at your option)
% any later version.
% The latest version of this license is in
% http://www.latex-project.org/lppl.txt
% and version 1.3 or later is part of all distributions of LaTeX
% version 2005/12/01 or later.
%
% This work has the LPPL maintenance status \`maintained'.
%
% The Current Maintainer of this work is Maximilian Keßler.
%
%
% Distribution under the GNU General Public License requires either
% version 3 or (at your opinion) any later version.
%
% 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-31-gc9bb0e8 (commit c9bb0e8)
% Source code version: v2.9-14-g6545412 (commit 6545412)
%
% This LaTeX package is free software and is dual-licensed
% under the LPPLv1.3c and the GPLv3 licenses.
% You may use it freely for your purposes.
% The latest version of the package sources can be obtained
% via GitLab under
% https://gitlab.com/latexci/packages/LatexPackages
% The latest version of the built packages can be obtained via GitLab under
% https://gitlab.com/latexci/packages/LatexPackagesBuild
% For further information see the urls 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/06/12 - 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}