Compare commits

...

278 Commits

Author SHA1 Message Date
505cdf92ca
run jobs sequentially
All checks were successful
Build LaTeX packages / build (push) Successful in 42s
Build LaTeX packages / pages (push) Successful in 59s
2023-10-19 13:13:23 +02:00
bc3a076cd6
ci-test
All checks were successful
Build LaTeX packages / build (push) Successful in 57s
Build LaTeX packages / pages (push) Successful in 1m7s
2023-10-19 13:09:28 +02:00
92dc505b06
use caches to speed up compilation
All checks were successful
Build LaTeX packages / build (push) Successful in 1m45s
Build LaTeX packages / pages (push) Successful in 6m20s
2023-10-19 12:56:19 +02:00
9225c03547
remove unneded script 2023-10-19 10:55:10 +02:00
b1925a752f
fix TEXINPUTS
All checks were successful
Build LaTeX packages / build (push) Successful in 4m41s
2023-10-19 10:42:01 +02:00
e7f4d10438
further try
Some checks failed
Build LaTeX packages / build (push) Failing after 54s
2023-10-19 10:25:55 +02:00
6ae8238e15
next try
Some checks failed
Build LaTeX packages / build (push) Failing after 55s
2023-10-19 10:08:20 +02:00
8bed099045
further attempt to compile correctly
All checks were successful
Build LaTeX packages / build (push) Successful in 1m41s
2023-10-19 09:55:20 +02:00
13bbc42e4e
fix ci file
All checks were successful
Build LaTeX packages / build (push) Successful in 1m43s
2023-10-19 02:56:31 +02:00
7be9e1046b
fix compilation 2023-10-19 02:55:29 +02:00
eaf0763583
correctly compile in pipeline
All checks were successful
Build LaTeX packages / build (push) Successful in 1m55s
2023-10-19 02:50:36 +02:00
72cc9d78b0
set -e for compilation script
All checks were successful
Build LaTeX packages / build (push) Successful in 1m50s
2023-10-19 02:49:26 +02:00
34f0a41699
change job name
All checks were successful
Build LaTeX packages / build (push) Successful in 1m44s
2023-10-19 02:47:45 +02:00
c07e84d91b
generate documentation on master
All checks were successful
Build LaTeX packages / build (push) Successful in 1m42s
2023-10-19 02:23:39 +02:00
8798571831
fix path
Some checks failed
Build LaTeX packages / build (push) Failing after 36s
2023-10-19 02:21:55 +02:00
823c5097ce
adjust ci to new build style
Some checks failed
Build LaTeX packages / build (push) Failing after 23s
2023-10-19 02:21:13 +02:00
6d8a131865
Rework building of documentation files
Instead of an ugly Makefile structure, we now use a single compile
script that collects all the files in build/doc.
2023-10-19 01:34:46 +02:00
b587beb806
use single job
All checks were successful
Build LaTeX packages / build (push) Successful in 4m43s
2023-10-18 18:46:34 +02:00
ed6ee5ec64
remove unneeded ssh step 2023-10-18 16:35:40 +02:00
2cd113166d
update readme
Some checks failed
Build LaTeX packages / build (push) Successful in 4m34s
Build LaTeX packages / deploy-pages (push) Failing after 7s
2023-10-18 16:28:52 +02:00
6263366b56
adapt commit message in build repo
Some checks failed
Build LaTeX packages / build (push) Successful in 4m34s
Build LaTeX packages / deploy-pages (push) Failing after 7s
2023-10-18 16:25:41 +02:00
0156ddca43
fix origin url
Some checks failed
Build LaTeX packages / build (push) Successful in 4m37s
Build LaTeX packages / deploy-pages (push) Failing after 7s
2023-10-18 16:21:37 +02:00
476b57d2ba
fix permissions on ssh key
Some checks failed
Build LaTeX packages / build (push) Failing after 28s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 16:03:51 +02:00
3858718041
change setting up git: don't use agent, directly write to ~/.ssh
Some checks failed
Build LaTeX packages / build (push) Failing after 30s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 16:01:37 +02:00
e8fedd07a0
configure git directly before building
Some checks failed
Build LaTeX packages / build (push) Failing after 28s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 15:51:43 +02:00
65c801c212
rename deploy key secret
Some checks failed
Build LaTeX packages / build (push) Failing after 31s
Build LaTeX packages / deploy-pages (push) Failing after 7s
2023-10-18 11:31:12 +02:00
f941a10fe6
correct domain for host key
Some checks failed
Build LaTeX packages / build (push) Failing after 29s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:27:37 +02:00
5a0ec99d86
enter remote host key
Some checks failed
Build LaTeX packages / build (push) Failing after 29s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:25:56 +02:00
3c8f825e3f
fix push
Some checks failed
Build LaTeX packages / build (push) Failing after 30s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:24:21 +02:00
7e76546afd
fix pushing to build repo
Some checks failed
Build LaTeX packages / build (push) Failing after 29s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:19:33 +02:00
d5af0e7ad1
fix ssh url
Some checks failed
Build LaTeX packages / build (push) Failing after 47s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:16:37 +02:00
4719ba2d52
explicitly use ssh to clone
Some checks failed
Build LaTeX packages / build (push) Failing after 20s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:15:23 +02:00
e0b9b7ad44
fix ref name
Some checks failed
Build LaTeX packages / build (push) Failing after 32s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:13:58 +02:00
7c3775828e
clone history as well
Some checks failed
Build LaTeX packages / build (push) Failing after 30s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:12:09 +02:00
546a7007cc
fetch tags
Some checks failed
Build LaTeX packages / build (push) Failing after 27s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:11:01 +02:00
4008cb355f
clone submodules
Some checks failed
Build LaTeX packages / build (push) Failing after 25s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:06:35 +02:00
298e515a51
fix environment variable
Some checks failed
Build LaTeX packages / build (push) Failing after 24s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 11:04:38 +02:00
896956f6fa
fix ref name context variable
Some checks failed
Build LaTeX packages / build (push) Failing after 25s
Build LaTeX packages / deploy-pages (push) Failing after 6s
2023-10-18 10:26:11 +02:00
77140598bf
fix repo url
Some checks failed
Build LaTeX packages / build (push) Failing after 21s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 10:21:00 +02:00
27a592b9f1
specify branch to checkout
Some checks failed
Build LaTeX packages / build (push) Failing after 43s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 10:11:47 +02:00
1de88c00b8
rename deploy key variable
Some checks failed
Build LaTeX packages / build (push) Failing after 50s
Build LaTeX packages / deploy-pages (push) Failing after 7s
2023-10-18 09:56:35 +02:00
0aece45a9c
move ci file to corect location
Some checks failed
Build LaTeX packages / build (push) Failing after 14s
Build LaTeX packages / deploy-pages (push) Has been skipped
2023-10-18 09:52:14 +02:00
6aa92357e0
ajust ci 2023-10-18 09:51:02 +02:00
3483a24dca
disable indexing with beamer clas 2023-06-18 21:15:50 +02:00
51afbd7188
add category of presheaves 2022-10-17 18:34:37 +02:00
521ce5c804
fix whitespace around \vocab 2022-08-18 16:09:02 +02:00
b6a13cfa40
add green background style 2022-08-18 11:32:37 +02:00
2d16a2d72a make todo commands accept optional arguments 2022-06-27 17:33:08 +02:00
8c5b9ad7a4 load missing decorations library for tikz-cd 2022-06-27 17:10:15 +02:00
e9f75cd220 fix error in category declaration 2022-06-27 16:46:26 +02:00
80377fc784 fix error in csv: use quotechar | correctly 2022-06-27 16:31:41 +02:00
aaa93783b2 fix error in csv dictionary: use proper quotechar | 2022-06-27 16:21:30 +02:00
bd9d19bcfb Merge branch 'master' into bachelor-thesis 2022-06-27 16:16:03 +02:00
d96c0bdb38 refproof: fix optional argument of oldproof environment 2022-06-27 16:15:41 +02:00
45a0b480cb Merge branch 'master' into bachelor-thesis 2022-06-27 16:02:11 +02:00
b7ba678943 add fix for equal arrows in tikz-cd 2022-06-27 16:02:01 +02:00
3a734d9f1b add CGHaus and SimplicialSet categories 2022-06-27 15:56:21 +02:00
cf7b02f41f Merge branch 'master' into bachelor-thesis 2022-06-27 15:33:49 +02:00
c939483b42 fix @counteralias usage of thmtools 2022-06-27 15:32:53 +02:00
5f2a38ae45 fix bug 2022-06-12 17:43:00 +02:00
6545412baf add nobraces option to fancythm 2022-06-12 17:20:57 +02:00
004413d674 make categories always upright, also in italic text 2022-06-07 21:16:09 +02:00
8583c50c59 add set 2022-04-24 21:19:28 +02:00
0b631683d7 add quiver.sty package 2022-02-28 16:01:53 +01:00
e8be9fcb16 add \ord operator for group orders 2022-02-16 17:16:26 +01:00
6db316f4a0 fix more if bugs 2022-02-16 01:59:40 +01:00
efa4817c51 fix if bug 2022-02-16 01:48:11 +01:00
d7e3d2a9f0 fix thmstyle spacing with parskip 2022-02-14 00:39:40 +01:00
08fa626f54 add test 2022-02-10 01:29:05 +01:00
0a902cc0ec improve code package: deactivate | symbol in tables. make | and code usable inside other macros by rescanning the token list 2022-02-10 01:26:33 +01:00
371ce76a81 add code macro usable inside other environments 2022-02-10 01:13:34 +01:00
394ecc310c make pip an option 2022-02-10 00:40:13 +01:00
78e06ed17d quick fix for tables 2022-02-10 00:27:01 +01:00
778f5297d1 add (really bad) code package 2022-02-10 00:06:34 +01:00
02c2acd330 remove default benchmarking in groupthm 2022-02-03 15:45:52 +01:00
123299b87d update fanycthm caching test 2022-02-03 15:44:53 +01:00
9e214ef6cc implement caching options and pass them to groupthm 2022-02-03 15:44:39 +01:00
f3f8254c3b fix missing cache_slow:n macro in non-caching case 2022-02-03 15:43:49 +01:00
b15dedb366 add makefile in cache tests 2022-02-03 15:05:45 +01:00
3c2e68f574 testfiles: done 2022-02-03 15:04:57 +01:00
f80bd84852 integrate benchmarking properly 2022-02-03 15:02:50 +01:00
7fe4092d8e groupthm: speedup caching
replacing # in cached expressions only
    when necessary speeds up usage
2022-02-03 14:26:14 +01:00
0981e3f2d7 adjust first test to also define theorems directly 2022-02-03 14:04:12 +01:00
7a35a13f87 update test2 to match test2 2022-02-03 13:49:52 +01:00
c4d46e5dce fix testfile 2022-02-03 13:48:47 +01:00
7dca64fa36 modify tests slightly 2022-02-03 13:11:13 +01:00
c38fd317ae start two test files with different benchmarks 2022-02-03 12:59:21 +01:00
9b64e53a98 expand test and add benchmarkin 2022-02-03 12:32:37 +01:00
85d91e7b17 better compile makefile 2022-02-03 12:32:07 +01:00
0f07a69b15 update testfile to show auxfile tl 2022-02-03 12:31:49 +01:00
eafd4336d6 declare hook rule for compatibily 2022-02-03 12:31:10 +01:00
a68ac2fdaa make everythin lazy to integrate with fancythm 2022-02-03 12:30:47 +01:00
0070d2aa66 fix some bugs: missing macro variants and wrong names, 2022-02-02 22:53:31 +01:00
3cc1440fb5 do not use ExplSyntax at places that are passed to groupthm 2022-02-02 22:51:41 +01:00
f1dacf4a5d implement caching in groupthm 2022-02-02 22:34:39 +01:00
64fbca35dd rework aux file writing 2022-02-02 21:45:55 +01:00
bbfdb29cec Merge branch 'cache' into fast-groupthm 2022-02-02 19:34:53 +01:00
27fb2c2cf1 move test file into cache directory 2022-02-02 18:10:57 +01:00
01254fc415 add comment in cache package 2022-02-02 17:42:38 +01:00
47e40def17 add test file showing usage of cache package 2022-02-02 17:41:02 +01:00
0fd205df16 fix wrong usage of old hooks 2022-02-02 17:32:21 +01:00
1bbcb12525 correct header 2022-02-02 17:28:06 +01:00
ddbdc19d2f start experimental cache package 2022-02-02 17:24:06 +01:00
11d13efe62 don't write anything to aux file when not in cache mode 2022-02-01 11:59:17 +01:00
a3211f8a8f groupthm: handle theorem family options cache
also use an aux file hook to collect definitions
    from aux file
2022-01-31 22:17:58 +01:00
5b7e93e76a also provide families lazily 2022-01-31 21:26:41 +01:00
48651b4919 activate caching for all Document Commands 2022-01-31 21:02:48 +01:00
bea7380166 ensure correct hook order 2022-01-31 20:36:29 +01:00
fc67ef99ef groupthm: correct incremental building
ignore definitions from aux file in case of version change
2022-01-31 20:25:37 +01:00
c637fe051c set aux version bool globally (fixes error) 2022-01-31 20:15:25 +01:00
d59ef01933 write groupthm version of theorem declaration to aux file 2022-01-31 20:11:37 +01:00
adc9c32514 write cache version of aux file into aux file 2022-01-31 19:59:52 +01:00
f878e66cdf write all definitions of theorems to aux file at end of document 2022-01-31 19:55:03 +01:00
32daab8d20 implement lazy declaration at begin of documentation when caching is active 2022-01-31 19:26:38 +01:00
b041d8c990 implement option interface for groupthm. 2022-01-31 19:17:58 +01:00
4bda829518 update submodule 2022-01-31 00:46:41 +01:00
b88c57409a remove old thmstyle file 2022-01-31 00:45:20 +01:00
d33ea4f9b3 update test file 2022-01-31 00:44:56 +01:00
d7791cdcb5 fix bugs 2022-01-31 00:44:40 +01:00
abd2308b82 use new thmstyle package 2022-01-31 00:35:57 +01:00
97a2df27b5 integrate documentation of thmstyle into dtx file 2022-01-31 00:26:23 +01:00
5437b8606c rework thmstyle package into LaTeX3 syntax and proper expansion 2022-01-31 00:20:03 +01:00
ceb43f1672 update readme 2022-01-30 22:29:19 +01:00
ff6f4f6dc4 fix error in Makefile 2022-01-30 22:15:36 +01:00
e2d4d57eb0 update ci build script to have built packages available when generating documentation 2022-01-30 21:56:06 +01:00
9993ac4fc9 make doc building a phony target 2022-01-30 21:52:13 +01:00
1d5c14c688 remove redundant dependency 2022-01-30 21:51:50 +01:00
cb9d6110da update submodule 2022-01-30 21:45:59 +01:00
736662b005 fix mistake in ci script 2022-01-30 21:40:13 +01:00
457a8d3cf3 make build error if script errors 2022-01-30 21:36:18 +01:00
69423e3a50 update ci 2022-01-30 21:33:32 +01:00
0ca188057a update CI script 2022-01-30 21:30:44 +01:00
38260b0a1e add central documentation target in Makefile 2022-01-30 21:18:54 +01:00
379793d982 update makefiles for documentation 2022-01-30 21:17:01 +01:00
9908fa858a rework Makefiles and .latexmkrc 2022-01-30 20:55:56 +01:00
ed99f9fe0b document math package 2022-01-30 19:52:34 +01:00
8dd153995a add todo documentation 2022-01-30 19:46:28 +01:00
41a071a327 add incfig documentation 2022-01-30 19:39:25 +01:00
f3dda43639 add proper SetItemNumber macro 2022-01-30 19:35:02 +01:00
0f6a9d112e document enumerate package 2022-01-30 19:34:46 +01:00
89dc3e4614 document hypersetup package 2022-01-30 19:22:48 +01:00
30565a139d document vocab package 2022-01-30 19:13:26 +01:00
9f5af1d669 add PrintVocabIndex macro 2022-01-30 19:13:16 +01:00
fab3fa1f8c add symbindex package documentation 2022-01-30 19:03:28 +01:00
b9d4a571de document mathfig package 2022-01-30 18:40:44 +01:00
0d5730b11e document mathop package 2022-01-30 18:32:12 +01:00
275bc70bfb add testfile 2022-01-30 18:08:25 +01:00
f4e1f01f39 add documentation 2022-01-30 18:07:51 +01:00
97eb9f034c add MakeCategoryIndex macro 2022-01-30 18:06:41 +01:00
2a9ad90a62 draf of documentation of categories. not fixed 2022-01-30 17:44:29 +01:00
3e416a68ae document mathsymb package 2022-01-30 17:16:28 +01:00
aef9318118 document mathalias package 2022-01-30 17:04:59 +01:00
91db761097 update package with proper naming conventions 2022-01-30 17:04:49 +01:00
52438fd0a3 move unicodechar package into wrappers folder 2022-01-30 16:44:24 +01:00
0be5a5503d document unicodechar package 2022-01-30 16:43:42 +01:00
105314726a document mathfixes package 2022-01-30 16:38:07 +01:00
5a90610c9d docmuent mathfont packgae 2022-01-30 16:18:42 +01:00
07d60b499a add faktor package documentation 2022-01-30 16:00:44 +01:00
98a225b5a0 fix bug in faktor package 2022-01-30 16:00:32 +01:00
8e94f452fe add documentation for thmstyle 2022-01-30 15:43:42 +01:00
2dbf8f9723 document refproof package 2022-01-30 15:25:27 +01:00
8aa2e4139c consistent naming 2022-01-30 14:38:30 +01:00
e32519ee95 update PyTeX 2022-01-30 14:36:43 +01:00
fae19125e0 add internal driver for style file 2022-01-30 14:20:51 +01:00
38c59525e7 move package sources into own folders 2022-01-30 14:16:50 +01:00
57c4a01e8e add groupthm documentation driver file 2022-01-30 13:59:53 +01:00
d767892eb9 add index in fancythm file 2022-01-30 13:57:55 +01:00
8e853295a0 add doc driver file 2022-01-30 13:57:45 +01:00
b70ff474f3 proper .latexmkcr and makefile. remove aux files from repo 2022-01-30 13:50:05 +01:00
fab158f45f proper makefile 2022-01-30 13:43:53 +01:00
cd044ac0c4 include proper latexmkrc file. remove aux files from repo 2022-01-30 13:35:12 +01:00
0bc05e8129 add suchthat macro 2022-01-28 16:01:58 +01:00
640d447995 symbindex: call symbol lastly to allow for argument catching 2022-01-28 15:48:12 +01:00
698e0290ee add ordinal number category 2022-01-28 15:16:52 +01:00
eb8996c192 add benchmark file 2022-01-25 21:10:51 +01:00
1d4817822e remove old fancythm version 2022-01-24 01:23:03 +01:00
68407011c7 update fancythm test 2022-01-24 01:18:25 +01:00
55b3513578 fix gitignore 2022-01-24 01:17:04 +01:00
81bf2a9588 move groupthm and fancythm into src folder 2022-01-24 01:15:42 +01:00
6849b1e36c integrate pytex for docstrip 2022-01-24 01:05:49 +01:00
cbcebe18bd integrate generation of sty file in .dtx file 2022-01-24 00:38:00 +01:00
33a2294692 provide lots of default theorems 2022-01-23 19:01:02 +01:00
f4887160ed add private wrappers to provide theorems with user pre-specified groups 2022-01-23 18:36:51 +01:00
5d103708c2 add providing macro variants 2022-01-23 17:56:53 +01:00
e5b3a7f432 integrate translations 2022-01-23 17:22:38 +01:00
ef97ef2e78 glue 'name=' key for thmtools differently to not expand name if it contains macros 2022-01-23 17:21:33 +01:00
13ae62e156 correct usage of mdframed. still buggy, but probably caused by thmstyle package 2022-01-23 17:00:40 +01:00
3b16c40e05 implement fancy theorem generation 2022-01-23 16:41:20 +01:00
82b6372e4c fix error message on wrong keys 2022-01-23 16:35:08 +01:00
d8ce6d2c04 add missing check for existence of group when flattening group hierarchy 2022-01-23 16:28:18 +01:00
84503aa5d5 handle translator 2022-01-23 15:30:53 +01:00
ed965bc461 fix option parsing bugs 2022-01-23 15:25:22 +01:00
beb4b7af0a implement counters and option parsing 2022-01-23 15:21:29 +01:00
02356e81d7 start fancythm package 2022-01-23 14:08:17 +01:00
ffff696fa3 update gitignore 2022-01-23 01:30:57 +01:00
5bf0c39cc7 better makefile 2022-01-23 01:27:53 +01:00
7d4303cc71 remove groupthm.tdo from repository 2022-01-23 01:27:45 +01:00
5019e9ae8e add groupthm test. remove old style file 2022-01-23 01:26:09 +01:00
a13b32c3f8 rearrange preamble 2022-01-23 01:24:32 +01:00
e363e68432 remove todos etc 2022-01-23 01:20:21 +01:00
0329d70521 fix bug 2022-01-23 01:10:36 +01:00
39b1aa88b3 fix many typos 2022-01-23 01:08:38 +01:00
7baf1a01a1 document latex3 interface 2022-01-23 00:47:39 +01:00
c21ebb9036 document public interface 2022-01-23 00:26:49 +01:00
4e64eecf0c implementation finished 2022-01-22 22:45:40 +01:00
ef930ed5fa implement default groups and appending to groups 2022-01-22 18:31:36 +01:00
7ab693a7cb implement options in document level 2022-01-22 17:46:32 +01:00
cc853a87e2 rework theorem family generation 2022-01-22 16:19:08 +01:00
d0939faa5b rework generation of grouped theorems 2022-01-22 15:08:39 +01:00
b1b8f59c1b rework keyval interface 2022-01-22 14:43:34 +01:00
83ba094203 redesign some interfaces 2022-01-22 14:09:40 +01:00
06bcb6cf10 fix some bugs regarding usage of \declarator 2022-01-21 15:32:23 +01:00
0e78a52b61 add macro to flatten inheritance relation 2022-01-21 14:37:26 +01:00
7f1132b898 add theorem group parent implemented 2022-01-21 14:12:06 +01:00
b934e14708 introduce clist to save parents for group 2022-01-21 14:05:29 +01:00
3d5abe9f79 fix triple backslashes. add ensure group exists macro 2022-01-21 14:00:33 +01:00
ce7436c3db rename use_group macro with additional underscore 2022-01-21 13:52:42 +01:00
10458e55ed use wrapper for grouped theorem generation 2022-01-21 13:39:06 +01:00
7996b7b537 renome some more functions for simplicity 2022-01-21 13:31:49 +01:00
d005bb4b33 generate document commands with helper function 2022-01-21 13:27:48 +01:00
47e633fefc wrap new group methods into key methods. fix some bugs 2022-01-21 13:03:34 +01:00
710915271e simplify some function names 2022-01-21 12:25:24 +01:00
05bc3d9c60 remove _aux from internal commands at some places 2022-01-20 21:43:03 +01:00
70ddae2307 higher abstraction for defining (re)new variants
new macro carries out all four definitions at once
    rename all groupthm_new_theorem_group... macros into
groupthm_new_group...
2022-01-20 21:39:49 +01:00
08323fdf48 implement new define aux command to better generate variants with new, declare, provide and renew 2022-01-20 15:25:31 +01:00
0dd60e3447 rename prename and postname to prefix and suffix 2022-01-20 12:08:36 +01:00
b514de5e09 better makefile 2022-01-20 12:07:35 +01:00
5c45b89b52 dump 2022-01-19 15:21:30 +01:00
a9e98e25d9 add theorem family options, improve error messages 2022-01-18 21:14:02 +01:00
61f955c4aa implement family options 2022-01-18 15:39:08 +01:00
082c075ebb document theorem family declarations 2022-01-18 14:45:36 +01:00
ddf4957b93 fix some more bugs 2022-01-18 13:23:44 +01:00
7a683c9d0e implement theorem family generation 2022-01-18 12:31:09 +01:00
9e00b49279 replace some old syntax with proper macros 2022-01-18 11:28:04 +01:00
1f3aa04bfe fix some more bugs 2022-01-18 03:54:34 +01:00
808b8c457f add grouped theorem user interface 2022-01-18 02:32:15 +01:00
396005cc44 document grouped theorem commands latex3 layer properly 2022-01-18 02:19:25 +01:00
df78bdd30d document more of the latex3 interface 2022-01-18 01:56:08 +01:00
880a30debf document large parts of grouped theorems 2022-01-18 01:47:57 +01:00
b3982c64b7 add sorting of group names 2022-01-18 00:24:04 +01:00
7b136e0a65 implement theorem group rules 2022-01-18 00:15:02 +01:00
d5372859c0 adjust header 2022-01-17 23:35:01 +01:00
fe528bb6bc fix more bugs 2022-01-17 23:33:09 +01:00
fa1f76ac52 better error messages 2022-01-17 23:27:00 +01:00
34888f7d4c fix missing spaces in messages. fix wrong cs comparison in new/declare/provide/renew theorem 2022-01-17 23:25:51 +01:00
a7f5aada19 fix further bugs 2022-01-17 23:19:28 +01:00
71f6b30bf3 fix some bugs 2022-01-17 22:59:42 +01:00
3caa51245a fix some bugs. add sorting macros 2022-01-17 22:34:53 +01:00
4bb40e16dd commit partial changes (package now broken for sure) 2022-01-17 21:57:47 +01:00
6976cec905 document and rework theorem groups 2022-01-17 21:52:22 +01:00
453471eb88 add makefile 2022-01-17 17:06:18 +01:00
0029010926 convert to (broken) .dtx file 2022-01-17 16:43:52 +01:00
c7aa9fc01c finish documentation 2022-01-17 14:44:29 +01:00
e0e420f3c1 add texnote 2022-01-17 12:15:32 +01:00
5bd70271e7 start writing documentation 2022-01-17 12:13:09 +01:00
77c8dc4717 add more test files 2022-01-17 10:27:22 +01:00
9768ba00ee regroup some stuff. outline future semantics in test document 2022-01-17 03:13:46 +01:00
d609b54aac fix bugs in thmtools option not being set properly 2022-01-17 00:20:14 +01:00
ed41616c4a fix missing bug of keys getting set wrongly 2022-01-17 00:02:49 +01:00
4fb0894674 reduce test 2022-01-16 23:58:52 +01:00
b663c78c91 add working test for groupthm 2022-01-16 23:56:03 +01:00
22b3e2352f some debugging 2022-01-16 23:55:29 +01:00
9d5a257aed add code for theorem variants generation in document 2022-01-16 23:28:43 +01:00
3d8b6f0fdc make proper macros for theorem variant parsers 2022-01-16 23:01:52 +01:00
9cb5f5ed2f add new theorem variant parser command 2022-01-16 22:41:36 +01:00
820ae92f28 mark some macros private 2022-01-16 22:34:05 +01:00
d8322bb5f1 refactor powerset macro into own package 2022-01-16 22:24:18 +01:00
3630c47b59 theorem variants generation
add iterating over powerset of clist function
  add sorting hack for theoremgroups
  add declare_theorem_variants macro
2022-01-16 21:38:19 +01:00
5e141841cb add default group rules 2022-01-16 18:42:53 +01:00
886e562574 implement hook rules for theorem groups 2022-01-16 18:35:07 +01:00
a8cca1cbc6 use expl3 interface of hooks instead 2022-01-16 18:03:43 +01:00
73d473b25d implement mapname 2022-01-16 17:59:40 +01:00
a19f905598 better error messages 2022-01-16 17:49:25 +01:00
e3d3d9ba0f fixed bugs, working version again 2022-01-16 17:39:02 +01:00
0e1a802995 clean up internal package names. not working anymore 2022-01-16 17:18:11 +01:00
386f07a6d6 prename, postname and thmtools keys for groups and grouped theorems working 2022-01-16 14:35:24 +01:00
e92f1da165 group generation and theorem generation working. not all keys implemented yet 2022-01-16 13:48:25 +01:00
274ce257d6 start development of groupthm package 2022-01-16 12:12:12 +01:00
111 changed files with 7492 additions and 576 deletions

View File

@ -1,12 +0,0 @@
cd .ci
export COMMIT_MSG=$(python3 print_deploy_message.py)
cd ..
make ci-build
cd build
zip -r LatexPackages.zip LatexPackagesBuild/ -x '*.git*'
tree -H '.' -I "index.html" -D --charset utf-8 -T "LatexPackages" > index.html
cd LatexPackagesBuild
git add .
git commit -m "${COMMIT_MSG}" || echo "Nothing new to commit"
git push --set-upstream origin ${CI_COMMIT_REF_NAME}-build

View File

@ -1,11 +1,17 @@
eval $(ssh-agent -s)
echo "$GITLAB_DEPLOY_KEY" | base64 -d | tr -d '\r' | ssh-add - > /dev/null
set -e
# Set up ssh private key
mkdir -p ~/.ssh
chmod 700 ~/.ssh
ssh-keyscan gitlab.com >> ~/.ssh/known_hosts
echo "$DEPLOY_SSH_KEY" > ~/.ssh/id_ed25519
chmod 600 ~/.ssh/id_ed25519
# Set up remote host key fingerprint
echo "git.abstractnonsen.se ssh-ed25519 AAAAC3NzaC1lZDI1NTE5AAAAIAufJTq206GOv0D8gHs2o3eDusLNWaB0U7JRhUYnux9B" >> ~/.ssh/known_hosts
chmod 644 ~/.ssh/known_hosts
git config --global user.email "git@maximilian-kessler.de"
git config --global user.name "Maximilian Keßler (via gitlab runner)"
echo "Successfully added ssh deploy keys"

View File

@ -14,6 +14,6 @@ def get_deploy_message(repo):
"\n" \
"Build branch {branch} ({hexsha}) from {repo_name}" \
.format(old_msg=old_msg,
branch=os.environ['CI_COMMIT_REF_NAME'],
branch=os.environ['REF_NAME'],
hexsha=get_latest_commit(repo).hexsha[0:7],
repo_name='kesslermaximilian/LatexPackages')
repo_name='latex/latex-packages')

14
.ci/deploy_to_build_repo.sh Executable file
View File

@ -0,0 +1,14 @@
set -e
# set up deploy message
cd .ci
export COMMIT_MSG=$(python3 print_deploy_message.py)
cd ..
# push pages to build repository
cd build/packages
git add .
git commit -m "${COMMIT_MSG}" || echo "Nothing new to commit"
git remote set-url origin --push git@git.abstractnonsen.se:latex/latex-packages-build
git push --set-upstream origin ${REF_NAME}-build
cd ../..

View File

@ -1,12 +1,13 @@
# ! /bin/sh
ssh git@gitlab.com
git clone git@gitlab.com:latexci/packages/LatexPackagesBuild.git build/LatexPackagesBuild
cd build/LatexPackagesBuild
REMOTE_BRANCH=$(git branch -a | sed -n '/remotes\/origin\/.*-build/p' | sed 's/remotes\/origin\///g' | sed 's/-build//g' | sed 's/[[:space:]]//g' | sed -n "/^${CI_COMMIT_REF_NAME}$/p")
set -e
cd build/packages
REMOTE_BRANCH=$(git branch -a | sed -n '/remotes\/origin\/.*-build/p' | sed 's/remotes\/origin\///g' | sed 's/-build//g' | sed 's/[[:space:]]//g' | sed -n "/^${REF_NAME}$/p")
echo ${REMOTE_BRANCH}
if [ "$REMOTE_BRANCH" = "" ];then
if [ "$REMOTE_BRANCH" = "" ]; then
echo "This is the first build on this branch, creating new branch in build repository to push to"
git checkout --orphan ${CI_COMMIT_REF_NAME}-build
ls -ra | sed '/^\.git$/d' | sed '/^\.\.$/d' | sed '/^\.$/d' | xargs -r git rm --cached

View File

@ -0,0 +1,81 @@
name: Build LaTeX packages
on: [push]
jobs:
build:
runs-on: latex-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
submodules: recursive
fetch-depth: 0 # We need all history to correctly parse tag names
fetch-tags: true
- name: Setup git credentials and committer
run: .ci/configure_git.sh
env:
DEPLOY_SSH_KEY: ${{ secrets.deploy_ssh_key }}
- name: Clone build repository
uses: actions/checkout@v4
with:
repository: latex/latex-packages-build
path: build/packages
ref: master
- name: Checkout correct branch in build repository
run: |
.ci/setup_build_repo_branch.sh
env:
REF_NAME: ${{ github.ref_name }}
- name: Build packages incrementally
run: make
- name: Push packages to build repo
run: |
.ci/deploy_to_build_repo.sh
env:
REF_NAME: ${{ github.ref_name }}
- name: Clean up git files from build repo
if: github.ref == 'refs/heads/master'
run: rm -rf build/packages/.git
- name: Save built packages to cache
if: github.ref == 'refs/heads/master'
uses: actions/cache/save@v3
with:
path: build/packages/
key: ${{ github.ref }}-packages
pages:
runs-on: latex-latest
needs: build
if: github.ref == 'refs/heads/master'
steps:
- name: Checkout repository
uses: actions/checkout@v4
- name: Load package cache
uses: actions/cache/restore@v3
with:
path: build/packages/
key: ${{ github.ref }}-packages
- name: Load compilation cache
uses: actions/cache/restore@v3
with:
path: .compile
key: ${{ github.ref }}-doc
- name: Compile documentation
run: make doc
env:
TEXINPUTS: '${{ github.workspace }}/build/packages//:'
- name: Prepage pages
run: |
cd build
rm -rf packages/.git # Don't deploy the git files
zip -r latex-packages.zip packages/ -x '*.git*'
zip -r latex-packages-doc.zip doc/
- name: Deploy to pages
uses: actions/pages@v1
with:
directory: build/
- name: Upload compilation cache
uses: actions/cache/save@v3
with:
path: .compile
key: ${{ github.ref }}-doc

15
.gitignore vendored
View File

@ -5,3 +5,18 @@ build/*
.idea/
*.synctex.gz
__pycache__
*.aux
*.fdb_latexmk
*.fls
*.log
*.pdf
wip/proof/.skip
*.out
*.idx
*.ilg
*.ind
*.cnt
*.glo
*.hd
*.toc
*.sty

View File

@ -1,44 +0,0 @@
stages:
- get
- build
- pages
get-build-repo:
stage: get
before_script:
- source .ci/configure_git.sh
script:
- echo "Getting old Build repo..."
- .ci/get_build_repo_from_origin.sh
artifacts:
paths:
- build/
tags:
- latex
build-packages:
stage: build
before_script:
- source .ci/configure_git.sh
script:
- echo "Building packages incrementally..."
- sh .ci/ci_build.sh
variables:
GIT_SUBMODULE_STRATEGY: recursive
artifacts:
paths:
- build/
tags:
- latex
pages:
stage: pages
artifacts:
paths:
- public/
script:
- mv build/ public/
tags:
- latex
only:
- master

View File

@ -1,13 +1,30 @@
.PHONY: build
# Makefile for latex-packages
BUILD_DIR=build
DOC_SUBDIR=doc
PACKAGES_SUBDIR=packages
COMPILE_SUBDIR=.compile
BUILD_FLAGS=--recursive --git-version --pytex-version --license --author "Maximilian Keßler" --pytex-info-text --extra-header ".build/header_info.txt" --name "prepend-author" --clean-old-files
BUILD_DIRS= --source-dir src --build-dir build
ROOT=$(shell pwd)
BUILD_ROOT=${ROOT}/${BUILD_DIR}
# Build packages
build: .initsubmodulelock
@python3 build.py ${BUILD_DIRS} ${BUILD_FLAGS}
python3 build.py --source-dir src --build-dir ${BUILD_ROOT}/${PACKAGES_SUBDIR} ${BUILD_FLAGS}
# Build packages and allow repo to be dirty (use with caution and only when developing)
dirty: .initsubmodulelock
@python3 build.py ${BUILD_DIRS} ${BUILD_FLAGS} --allow-dirty
python3 build.py --source-dir src --build-dir ${BUILD_ROOT}/${PACKAGES_SUBDIR} ${BUILD_FLAGS} --allow-dirty
# generate documentation files from /doc
doc:
@scripts/compile_doc.sh
@mkdir -p ${BUILD_ROOT}/${DOC_SUBDIR}
@cp .compile/*.pdf ${BUILD_ROOT}/${DOC_SUBDIR}
@echo Documentation files written to ${BUILD_ROOT}/${DOC_SUBDIR}
init: .initsubmodulelock .gitconfiglock
config: .gitconfiglock
@ -28,6 +45,9 @@ all: clean build
clean:
@-rm -r build/
@-rm -r .compile/
.PHONY: build doc
#!/bin/bash
# Compiles all correspondence letters in repository
ci-build:
@python3 build.py --source-dir src --build-dir build/LatexPackagesBuild ${BUILD_FLAGS}

2
PyTeX

@ -1 +1 @@
Subproject commit 6277050e22b395eef5f554f3106aacd76562b3d2
Subproject commit c9bb0e87c91beae3e17a829603e4459cf804ec51

View File

@ -1,7 +1,5 @@
# Latex Packages
#### Rework in progress
This is a collection of some packages I regularly use. Feel free to use them as well, if you want to.
However, some of them (especially `mkessler-math`) might be heavily customized for myself and do not form a real package in the Unix philosophy sense and are more of my preamble, that everyone gets to copy around that I bundled up in a central place. Some others (especially `mkessler-fancythm`) follow (or at least try to) this philosophy, so they should be designed to work with your documents and online provide specific functionality.
@ -12,6 +10,13 @@ Mostly, they are available as a repository so that
- I like sharing things that could help others, as I profit from others way too often
- This motivates me to keep things organized
## Usage
If you want to use these, just clone [latex-packages-build][lp-build] into your `~/texmf/tex/latex` directory, and you are ready to go.
The builds are also available as single files or as zip at the [pages][pages].
## Documentation
See the `documentation` folder (or zip file) at [pages][pages] for documentation to most of the packages.
## Bugs
As already mentioned, not all of these are intended for generic use. If you however feel like this should be the case, feel free to point out bugs or troubles when using these here at GitHub or to me directly.
@ -22,3 +27,9 @@ Feel free to send pull requests if you have suggestions for improvements.
This is free software.
Prior to version 2.6 this has been MIT-licensed. Starting with version 1.6 this is licensed under the LPPL and/or the GPLv3.
See `LICENSE.md` for further details.
The `quiver.sty` package here is taken from [varkor/quiver][quiver] and licensed under the MIT License. It is redistributed unchanged for dependency reasons of my projects.
[pages]: https://latex.users.abstractnonsen.se/latex-packages
[lp-build]: https://git.abstractnonsen.se/latex/latex-packages-build
[quiver]: https://github.com/varkor/quiver

14
doc/LATEXMKRC Normal file
View File

@ -0,0 +1,14 @@
# This is the .latexmkrc file that needs to be used for compiling the documentation
# Note that the makeindex command is non-standard and follows the LaTeX3 architecture
# Without this, generating the indexes properly will not work and leads to compiling
# errors.
# When adding new packages, this should be symlinked to in each new directory,
# so that a call to latexmk will automatically use these options
$makeindex = 'makeindex -s gind.ist %O -o %D %S';
$clean_ext .= ' glo';
$clean_ext .= ' hd';
$clean_ext .= ' ins';
$pdf_mode = 1;
$print='pdf';
$pdflatex = 'pdflatex --shell-escape %O %S';

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,5 @@
\documentclass[full]{l3doc}
\usepackage{mkessler-todo}
\begin{document}
\DocInput{../../../src/environments/fancythm/fancythm.dtx}
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,5 @@
\documentclass[full]{l3doc}
\usepackage{mkessler-todo}
\begin{document}
\DocInput{../../../src/environments/groupthm/groupthm.dtx}
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,165 @@
\documentclass[full]{l3doc}
\title{The \pkg{refproof} package}
\author{Maximilian Keßler}
\begin{document}
\maketitle
\begin{abstract}
This package aims to at consistently numbering claims within proofs.
For this purpose, take a valid \meta{label} when starting a proof,
associating it with a theorem/lemma etc.~and enabling us to subnumber
claims within this proof.
We also provide some customizations for proofs.
\end{abstract}
\tableofcontents
\begin{documentation}
\section{Proofs}
\subsection{Old proofs}
\begin{environment}{oldproof}
Behaves like \env{proof} from \pkg{amsmath}.
\end{environment}
\begin{environment}{oldsubproof}
Behaves like \env{subproof} from \pkg{mkessler-subproof}.
That is, behaves like the \pkg{amsmath} proof environment except that
the shown keyword is \enquote{subproof} and we end the proof
with a black instead of a white square.
\end{environment}
It is not recommended to use \env{oldproof} or \env{oldsubproof},
since these have no support for the \texttt{claim} management this
package provides.
They only exist for legacy reasons.
\subsection{Basic proofs}
Both of these have \texttt{claim} support,
which is explained later in \autoref{sec:claim-support}.
\begin{environment}{proof}
\begin{syntax}
\cs{begin}\{proof\}*\oarg{description}
\end{syntax}
The old \env{proof} environment has been modified slightly.
We still accept a \meta{description}, but this will be given
in parantheses after the usual \enquote{proof} keyword.
Additionally, we accept an optional \enquote{star}, that will be visually
displayed behind the \enquote{proof} keyword.
When nested, that is, when inside a \env{proof} or \env{subproof} environment,
the name will automatically change to \enquote{subproof}.
Nesting works to an arbitrary depth.
\end{environment}
\begin{environment}{subproof}
\begin{syntax}
\cs{begin}\{subproof\}*\oarg{description}
\end{syntax}
Works like the \env{proof} environment, but will always be named
\enquote{subproof} and finish with a black square.
You will probably rarely need this.
\end{environment}
\subsection{Refproofs}
\begin{environment}{refproof}
\begin{syntax}
\cs{begin}\{refproof\}*\marg{label}\oarg{description}
\end{syntax}
For the optional \enquote{*} or the \meta{description}
see the \env{proof} environment.
The \meta{label} has to be a valid \LaTeX-known label that \cs{ref} would
accept.
This \env{refproof} is then associated with the corresponding
theorem that \meta{label} refers to.
It will state \enquote{Proof of \meta{reference}} at the beginning of
the environment to indicate that this proof is associated with some
specific environment.
When the \pkg{hyperref} package is loaded, this is automatically
detected and an \cs{autoref} command is used to also indicate
the environment name in the reference.
When \env{refproof} has been called with the same label before,
the name will be adjusted to
\enquote{Continuation of proof of \meta{reference}}
automatically.
Claim support is explained in \autoref{sec:claim-support}.
\end{environment}
\section{Claim support}
\label{sec:claim-support}
\begin{environment}{claim}
\begin{environment}{claim*}
\begin{syntax}
\cs{begin}\{claim*\}
\end{syntax}
The star in the environment name makes the claim not to be numbered.
\end{environment}
\end{environment}
The \env{proof}, \env{subproof} and \env{refproof} environment alter the
behavior of the claim numbering as follows:
\begin{itemize}
\item The \env{proof} and \env{subproof} environment will reset the
\texttt{claim} counter at their beginning.
Claims will appear as \enquote{Claim 1}, \enquote{Claim 2},\ldots
At the end of the environment, the previous counter is restored.
\item The \env{refproof} environment will number claims within the
proof and \emph{all of its continuations}.
Additionally, claims will be numbered as
\enquote{\meta{reference}.C1}, \enquote{\meta{reference}.C2}
where \meta{reference} is the numbering style of the \meta{label}
that this proof is associated to.
At the end of the environment, the previous counter is restored.
\end{itemize}
\section{Language support}
This package makes use of the \pkg{translator} package to provide
\pkg{babel}-sensitive translations dynamically throughout the document.
You need the
\texttt{%
translator\allowbreak-proof\allowbreak-dictionary%
\allowbreak-\meta{language}.dict
}
dictionary somewhere where \LaTeX can find it.
It should have shipped with this documentation and the package source.
Currently, only German and English are supported.
\end{documentation}
\section{\pkg{groupthm} integration}
This has not been implemented yet, but future features include:
\begin{itemize}
\item Integrate the claim environment into the \texttt{star} and \texttt{starred}
groups of \pkg{groupthm}.
\item Integrate the optional stars of the \env{proof} etc into \pkg{groupthm},
i.e.~let them behave like \texttt{star} environments to toggle
these in a unified way.
\end{itemize}
\PrintIndex
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,5 @@
\documentclass[full]{l3doc}
\usepackage{mkessler-todo}
\begin{document}
\DocInput{../../../src/environments/thmstyle/thmstyle.dtx}
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,105 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-symbindex} package}
\author{Maximilian Keßler}
\usepackage{mkessler-symbindex}
\begin{document}
\maketitle
\begin{abstract}
This package aims at indexing mathematical symbols properly.
It provides a key-value interface for declaring such symbols
and indexes them automatically when used.
\end{abstract}
\begin{documentation}
We base our index on the \pkg{imakeidx} package.
We will also only index each symbol only for its first appearance in the
document, not congesting the index unnecessarily.
\begin{function}{\DeclareSymbol}
\begin{syntax}
\cs{DeclareSymbol}\oarg{key=value list}\marg{symbol name}
\end{syntax}
This declares the command \cs{\meta{symbol name}}.
The behavior is controlled by the key-value list,
which accepts the following keys:
\begin{description}
\item[group = \meta{index name}]
Declares that this symbol will appear
in the \meta{index name} given.
If not present, the default index of the document will be used.
The index is assumed to exist.
\item[formula = \meta{formula}]
Controls to what formula the control sequence expands in the document
when called.
This can be any valid macro that is callable in math mode.
It is allowed that this macro captures additional arguments following
the command invocation, this will not interfere with indexing.
When not given, the \meta{formula} will just be the \meta{symbol name}
itself.
\item[ordered = \meta{word}]
Denotes that the symbol will be ordered alphabetically like \meta{word}
in the index.
When not given, the \meta{symbol name} will be used.
\item[description = \meta{text}]
Sets the description that appears in the index behind the symbol.
If not given, no description is present.
\item[operator = \meta{function}]
When \cs{\meta{symbol name}} is called,
this expands to the control sequence
\enquote{\meta{function}\{\meta{formula}\}}
so that the \meta{function} receives the \meta{formula}
as its first argument.
This can e.g.~be set to \cs{operatorname}, \cs{textbf}
or similar, adjusting the spacing or layouting of
the formula, while not influencing the ordering in the index.
When \meta{ordered = } is given yet, this is equivalent to
not using the \meta{operator = } and just putting this in the
\meta{formula = } key together.
When no \meta{operator} is given, \cs{use:n} is inserted,
which strips the braces around \meta{formula} and just
leaves formula in the input stream,
resulting in no effect.
\item[defaultargs = \meta{token list}]
This sets a list of tokens that will be inserted directly
after the invocation of \cs{\meta{symbol name}} when listing
the symbol in the index.
This makes it possible e.g.~to define \cs{Mod} as a formula
that stands for \enquote{$R$-modules} and is used as
\enquote{\texttt{\cs{Mod}\_R}} in the document
(or any other symbol that \texttt{R}, of course)
and list it as $\text{Mod}_R$ in the index,
by setting \enquote{defaultargs = \_R}.
\end{description}
\end{function}
\end{documentation}
\PrintIndex
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,55 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-vocab} package}
\author{Maximilian Keßler}
\usepackage{mkessler-vocab}
\begin{document}
\maketitle
\begin{abstract}
When defining lots of new notions in a document,
it is useful to index these at the point of their definition,
to let users easily look up the spots where notions are
introduced in a document.
Also, one often wants to highlight these when defining a new notion.
We combined both approaches.
\end{abstract}
\begin{documentation}
\section{Macros}
\begin{function}{\vocab}
\begin{syntax}
\cs{vocab}\oarg{index entry}\marg{vocab}
\end{syntax}
Highlights \meta{vocab} in the text (bold blue).
Also indexes this under \oarg{index entry}.
If \oarg{index entry} is empty, \meta{vocab} itself will appear in the index.
\end{function}
\begin{function}{\printvocabindex, \PrintVocabIndex}
Prints the index of vocabs.
The \cs{printvocabindex} is deprecated,
use the better named \cs{PrintVocabIndex}.
\end{function}
\section{Package options}
You can specify the two options \texttt{index} and \texttt{noindex}.
The default is \texttt{noindex}.
Index entries are only generated if \texttt{index} has been specified.
Of course, \cs{PrintVocabIndex} results in an error if the package
has been loaded with \texttt{noindex}.
\end{documentation}
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,119 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-categories} package}
\author{Maximilian Ke\ss ler}
\usepackage{mkessler-categories}
\NewDocumentCommand{\ShowCategory}{m}
{
\cs{#1} & $\csname #1\endcsname$ \\
}
\begin{document}
\maketitle
\begin{abstract}
This is a ready-to-use package providing symbols of mathematical
categories with automatic indexing.
It is certainly plausible that you prefer to name your categories slightly
differently that the author.
\end{abstract}
\begin{documentation}
\section{General notice}
This package is based on the \pkg{mkessler-symbindex} package.
We thus use \pkg{imakeindex} to generate the index file.
\section{Functionality}
\begin{function}{\category}
\begin{syntax}
\cs{category}\marg{category}
\end{syntax}
Makes the given argument \meta{category} behave like a math operator
and prints its name in bold.
This is just to ensure a unified style for printing categories,
if you don't like it, redefine this macro.
\end{function}
\begin{function}{\DeclareCategory}
\begin{syntax}
\cs{DeclareCategory}\oarg{key=value list}\marg{category}
\end{syntax}
Has the same syntax as \cs{DeclareSymbol} from the \pkg{mkessler-symbindex} package,
but adds the key \texttt{group = categories}.
\end{function}
\begin{function}{\DeclareSimpleCategory}
\begin{syntax}
\cs{DeclareSimpleCategory}\oarg{key=value list}\marg{category}\oarg{description}
\end{syntax}
Declares a \enquote{simple} category, i.e.~the category \cs{\meta{category}}
is declared and will expand to \enquote{\cs{category}\marg{category}}
when expanded.
The optional \meta{description} is shown in the index when present.
\end{function}
\begin{function}{\MakeCategoryIndex}
Prints the index of categories.
\end{function}
\section{Language integration}
This package uses \pkg{translator} to translate the package descriptions.
Currently, only English and German are supported.
\section{Default categories}
The package also provides default categories.
These are shown in \autoref{tab:provided-categories}.
You can view their appearance in the index and their descriptions in the
index of this documentation.
Unfortunately, the index is not (yet) compatible with the \texttt{l3doc} class
which is used for this documentation, so ignore everything before the
\enquote{@} characters.
\begin{table}[htpb]
\centering
\begin{tabular}{c | c}
Macro & Result \\
\hline
\ShowCategory{Top}
\ShowCategory{hTop}
\ShowCategory{Set}
\ShowCategory{CHaus}
\ShowCategory{Grp}
\ShowCategory{Ab}
\ShowCategory{CRing}
\ShowCategory{Ring}
\ShowCategory{Vect}
\ShowCategory{Cat}
\ShowCategory{Mod}
\ShowCategory{Alg}
\ShowCategory{Field}
\ShowCategory{AffVar}
\ShowCategory{Sch}
\ShowCategory{GrAb}
\ShowCategory{OrdCat}
\end{tabular}
\caption{caption}
\label{tab:provided-categories}
\end{table}
\end{documentation}
\PrintIndex
\end{document}

1
doc/math/faktor/.latexmkrc Symbolic link
View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,59 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-faktor} package}
\author{Maximilian Keßler}
\usepackage{mkessler-faktor}
\begin{document}
\maketitle
\begin{abstract}
The \pkg{faktor} package provides a mechanism to produce fractions
for mathematical factors.
Its mechanism is, however, quite limited.
Inspired by the
\href{https://tex.stackexchange.com/}{Tex StackExchange}
answer of user
\href{https://tex.stackexchange.com/users/5764/werner}{Werner},
that was given on
\href{https://tex.stackexchange.com/questions/27591/extending-the-faktor-package}
{https://tex.stackexchange.com/\allowbreak questions/\allowbreak 27591/extending-the-faktor-package}
we provide a simple package that wraps (and slightly modifies)
the given answer into a more general \cs{faktor} command.
\end{abstract}
\begin{function}{\faktor}
\begin{function}{\faktor*}
\begin{syntax}
\cs{faktor}*\oarg{shift enumerator}\marg{enumerator}\oarg{shift denominator}\marg{denominator}
\end{syntax}
Produces a fraction with tilted \enquote{$\diagup$} symbol and the corresponding
\meta{enumerator} and \meta{denominator}.
The \enquote{$\diagup$} symbol is automatically scaled.
The \meta{shift} parameters can be controlled to fine tune the vertical
placement of \meta{enumerator} and \meta{denominator}.
Their default values when not given are \texttt{0.5} and \texttt{-0.5},
respectively.
The \enquote{*} can be optionally given. This will make the \cs{faktor}
behave like the old \cs{faktor} command from the \cs{faktor} package,
that is, the \enquote{$\diagup$} won't scale.
\end{function}
\end{function}
\begin{function}{\cofaktor}
\begin{function}{\cofaktor*}
\begin{syntax}
\cs{faktor}*\oarg{shift denominator}\marg{denominator}\oarg{shift enumerator}\marg{enumerator}
\end{syntax}
Behaves the same as \cs{faktor}, but produces a \cs{cofaktor}.
\end{function}
\end{function}
\PrintIndex
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,102 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-mathalias} package}
\author{Maximilian Keßler}
\usepackage{mkessler-mathalias}
\begin{document}
\maketitle
\begin{abstract}
Lazy people prefer to write stuff like \cs{Z}, \cs{Q} to get the integers
$\mathbb{Z}$ and rationals $\mathbb{Q}$.
They also often use shortcuts like \cs{bA} for \cs{mathbb}\{A\} to get $\mathbb{A}$.
While the author does not encourage such usage,
this package provide a general syntax to generate such aliases.
\end{abstract}
\begin{documentation}
\section{(Don't) be lazy}
You actually should \emph{not} use this package.
This is poor \LaTeX style.
In case you don't care, or you must, because your co-workers do so,
this package is for you.
The author personally uses
\href{https://www.vim.org/}{Vim}
and the
\href{https://github.com/sirver/UltiSnips}{UltiSnips}
plugin to facilitate \LaTeX writing whilst producing a clean document
without those poor shortcut styles.
So in fact, \emph{be} lazy, but do it the proper way.
If you are, however, lazy, then put
\begin{verbatim}
\usepackage[extended]{mkessler-mathalias}
\end{verbatim}
in your preamble.
\section{Aliases}
\begin{function}{\MakeAliasesForWith}
\begin{syntax}
\cs{MakeAliasesForwith}\marg{macro}\marg{shortcut}\marg{token list}
\end{syntax}
For each \meta{token} in the \meta{token list},
this declares
\enquote{\cs{shortcut\meta{token}}}
as an abbreviation for
\enquote{\meta{macro}\marg{token}}.
\begin{texnote}
In \LaTeX3 syntax, this function would have signature \texttt{Nnn},
so give the \meta{macro} as a single token directly.
\end{texnote}
\begin{texnote}
Technically, the \meta{token list} can contain any tokens that
are fully expandable and thus accepted by \cs{csname} \ldots \cs{endcsname}.
However, as you want \emph{shortcuts}, you would typically invoke this
with tokens of category code 12.
\end{texnote}
\end{function}
As an example,
\begin{verbatim}
\MakeAliasesForWith\mathcal{c}{ABC}
\end{verbatim}
would define the three macros \cs{cA}, \cs{cB} and \cs{cC} to expand to
\cs{mathcal}\{A\},
\cs{mathcal}\{B\}
and
\cs{mathcal}\{c\},
respectively.
\section{Options for default aliases}
There are two options:
\begin{description}
\item[basic]
This declares \cs{C}, \cs{F}, \cs{K}, \cs{N}, \cs{Q}, \cs{R} and \cs{Z}
to expand to the \cs{mathbb} variants of these letters.
\item[extended]
Implies option \textbf{basic}.
Also defines shortcuts for \cs{mathbb}, \cs{mathfrak} and \cs{mathcal}
for each capital arabic letter with the prefixes \enquote{b},
\enquote{f} and \enquote{c}, respectively.
\end{description}
\end{documentation}
\PrintIndex
\end{document}

1
doc/math/mathfig/.latexmkrc Symbolic link
View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,70 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-mathfig} package}
\author{Maximilian Ke\ss ler}
\usepackage{mkessler-mathfig}
\begin{document}
\maketitle
\begin{abstract}
This is just some small wrapper package for drawing mathematical figures.
\end{abstract}
\begin{documentation}
\section{Loaded packages}
We load \pkg{pgfplots}, \pkg{tikz}, \pkg{tikz-cd} and \pkg{xy}.
\section{Additional macros}
\begin{function}{\pushoutsymbol}
Denotes a pushoutsymbol used in category theory diagrams.
\end{function}
\begin{function}{\pullbacksymbol}
Denotes a pullbacksymbol used in category theory diagrams.
\end{function}
\begin{function}{\pushout}
\begin{syntax}
\cs{pushout}\oarg{path to bottom right corner}
\end{syntax}
Invoked inside a \env{tikzcd} environment.
This assumes being called in the top left corner of some
commutative square and marks this square as a pushout.
The \meta{path} consists of symbols \texttt{d}, \texttt{u}, \texttt{r}
and \texttt{l}, as in \pkg{tikz-cd}.
By default, it is \texttt{dr}, being usable for default squares.
A phantom arrow is drawn in the given direction that
gets a \cs{pushoutsymbol}.
\end{function}
\begin{function}{\pullback}
\begin{syntax}
\cs{pullback}\oarg{path to bottom right corner}
\end{syntax}
Invoked inside a \env{tikzcd} environment.
This assumes being called in the top left corner of some
commutative square and marks this square as a pullback.
The \meta{path} consists of symbols \texttt{d}, \texttt{u}, \texttt{r}
and \texttt{l}, as in \pkg{tikz-cd}.
By default, it is \texttt{dr}, being usable for default squares.
A phantom arrow is drawn in the given direction that
gets a \cs{pullbacksymbol}.
\end{function}
\end{documentation}
\PrintIndex
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,93 @@
\documentclass[full]{l3doc}
\usepackage{mkessler-mathfixes}
\title{The \pkg{mkessler-mathfixes} package}
\author{Maximilian Ke\ss ler}
\NewDocumentCommand{\ShowMacro}{m}
{
\cs{#1} & $ \csname #1\endcsname $
\\
}
\begin{document}
\maketitle
\begin{documentation}
\begin{abstract}
This package includes some hacky \LaTeX (re)-definitions to fix common
misbehavior of built-in macros.
For sure, this is personal view-dependent.
If you don't like these definitions, don't use this package.
\end{abstract}
\section{Provided macros}
\autoref{tab:label} shows the behavior of macros with the
\pkg{mkessler-mathfixes} behavior.
\begin{function}{\degree}
Prints a visual degree symbol, as in $37\degree$.
\end{function}
\begin{function}{\oldlim}
Behaves like the built-in \cs{lim} from \LaTeX.
\end{function}
\begin{function}{\lim}
Defined as \cs{oldlim}\cs{limits}, always puts the limits below the symbol,
also in inline math mode.
\end{function}
\begin{function}{\subset, \supset}
Redefined to \cs{subseteq} and \cs{supseteq} to avoid ambiguities.
\end{function}
\begin{function}{\oldphi, \uglyphi, \goldenratio}
Synonyms for the built-in \cs{phi} symbol.
\end{function}
\begin{function}{\phi, \varphi}
Synonyms for the built-in \cs{varphi} symbol.
\end{function}
\begin{function}{\oldespilon, \uglyepsilon}
Synonyms for the built-in \cs{epsilon} symbol.
\end{function}
\begin{function}{\epsilon, \varepsilon}
Synonyms for the built-in \cs{varepsilon} symbol.
\end{function}
\begin{table}[htpb]
\centering
\begin{tabular}{c | c}
Command & Shown by \LaTeX \\
\ShowMacro{degree}
\ShowMacro{subset}
\ShowMacro{supset}
\ShowMacro{oldphi}
\ShowMacro{uglyphi}
\ShowMacro{goldenratio}
\ShowMacro{phi}
\ShowMacro{varphi}
\ShowMacro{oldepsilon}
\ShowMacro{uglyepsilon}
\ShowMacro{epsilon}
\ShowMacro{varepsilon}
\texttt{\$\cs{oldlim}\_\{n \cs{to} \cs{infty}\}\$} & $\oldlim_{n \to \infty}$ \\
\texttt{\$\cs{lim}\_\{n \cs{to} \cs{infty}\}\$} & $\lim_{n \to \infty}$ \\
\end{tabular}
\caption{Symbols when loaded with the \pkg{mkessler-mathfixes} package.}
\label{tab:label}
\end{table}
\end{documentation}
\PrintIndex
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,60 @@
\documentclass[full]{l3doc}
\usepackage{mkessler-mathfont}
\title{The \pkg{mkessler-mathfont} package}
\author{Maximilian Ke\ss ler}
\begin{document}
\maketitle
\begin{abstract}
There are various math alphabets available by different packages.
We load several of these and make these available in a consistent way.
\end{abstract}
\section{Usage}
Load this package before \pkg{eucal}, \pkg{amsfonts} and \pkg{mathrsfs}
to ensure proper font loading.
\section{Loaded alphabets}
\begin{function}{\mathcal,\mathfrak,\mathscr,\mathcat,\mathcalo}
\autoref{tab:provided-fonts} shows the fonts loaded from different packages.
\autoref{tab:font-samples} shows samples of these fonts when the
\pkg{mkessler-mathfont} packages has been loaded.
\end{function}
\begin{table}[htpb]
\centering
\caption{Fonts provided}
\label{tab:provided-fonts}
\begin{tabular}{c | c | c }
Command & Font \\
\hline
\cs{mathcal} & default \cs{mathcal} \\
\cs{mathfrak} & \cs{mathfrak} from \pkg{amsfonts} \\
\cs{mathscr} & \cs{mathscr} from \pkg{mathrsfs} \\
\cs{mathcat} & \cs{mathscr} from \pkg{mathrsfs} \\
\cs{mathcalo} & \cs{mathscr} from \pkg{eucal} with \texttt{mathscr} option \\
\end{tabular}
\end{table}
\begin{table}[htpb]
\centering
\caption{Font samples}
\label{tab:font-samples}
\begin{tabular}{c | c }
Command & sample \\
\hline
\cs{mathcal} & $\mathcal{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \\
\cs{mathfrak} & $\mathfrak{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \\
\cs{mathscr} & $\mathscr{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \\
\cs{mathcalo} & $\mathcalo{ABCDEFGHIJKLMNOPQRSTUVWXYZ}$ \\
\end{tabular}
\end{table}
\end{document}

1
doc/math/mathop/.latexmkrc Symbolic link
View File

@ -0,0 +1 @@
../../LATEXMKRC

140
doc/math/mathop/mathop.tex Normal file
View File

@ -0,0 +1,140 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-mathop} package}
\author{Maximilian Keßler}
\usepackage{mkessler-mathop}
\begin{document}
\maketitle
\begin{abstract}
This package provides common math operators.
It is certainly based on the authors opinion and use cases and might not
fulfill your personal needs.
It is, however, still aimed to be reasonably general to a broader userbase.
\end{abstract}
\begin{documentation}
\section{General macros}
\begin{function}{\DeclareSimpleMathOperator}
\begin{syntax}
\cs{DeclareSimpleMathOperator}\marg{operator}
\end{syntax}
This is similar to the \cs{DeclareMathOperator} macro of \pkg{mathtools},
but only accepts one argument.
The operator expansion is the operator name itself.
\end{function}
\begin{function}{\DeclareDistribution}
Currently same as \cs{DeclareSimpleMathOperator},
existent for semantical reasons and possible future change of
layouting of stochastical distributions.
\end{function}
\section{Special symbols}
In this section we describe all math operators that are not of textual nature.
\begin{function}{\tensor}
Alias for \cs{otimes}.
\end{function}
\begin{function}{\twedge, \tsmash}
The \enquote{t} stands for \enquote{topological}.
These are to avoid confusion between the standard latex \cs{wedge},
which gives $\wedge$,
although in topology,
the symbol $\twedge$ is called a \enquote{wedge}
and $\tsmash$ denotes the \enquote{smash product}.
\end{function}
\begin{function}{\cfun, \One}
Characteristic function symbol.
Comes from \pkg{bbm} and denotes \enquote{\cs{mathbbm}\{1\}}.
\end{function}
\begin{function}{\suchthat}
gives a scaling \enquote{$\left.\suchthat\right.$} symbol used in set-definitions.
Has to be in a \enquote{\cs{left} \ldots\cs{right}} block to
scale properly.
\end{function}
\begin{function}{\ceil, \floor}
\begin{syntax}
\cs{ceil}\marg{args}
\end{syntax}
Denotes the standard mathematical ceil and floor functions.
\end{function}
\begin{function}{\abs, \abs*}
\begin{syntax}
\cs{abs}*\marg{args}
\end{syntax}
Denotes the absolute value of an expression.
The bars scale by default, the starred variant does not scale.
\end{function}
\begin{function}{\norm}
\begin{syntax}
\cs{norm}*\marg{args}
\end{syntax}
Norm of an expression. The starred variant does not scale.
\end{function}
\begin{function}{\amalgprod}
Denotes an amalgamatic product.
\end{function}
\begin{function}{\ab, \op}
Give a textual representation of themselves.
\end{function}
\begin{function}{\opposite}
\begin{syntax}
\meta{structure}\cs{opposite}
\end{syntax}
Denotes the opposite of some mathematical object.
\end{function}
\begin{function}{\abelianization}
Denotes the abelianization of a group object.
\end{function}
\begin{function}{\directlimit, \inverselimit}
Semantical synonyms for \cs{varinjlim} and \cs{varprojlim}.
\end{function}
\begin{function}{\frestriction}
\begin{syntax}
\cs{frestriction}\marg{function}\marg{domain}
\end{syntax}
Properly denotes function restriction with adequate spacing.
\end{function}
\section{Simple operators}
The vast majority of this package is simple operators such as \cs{id},
which expands to $\id$.
These are for now not documented, search the source code for
\cs{DeclareSimpleMath\allowbreak Operator} if you need to know.
\section{TODO}
proper language support with \pkg{translator}
\end{documentation}
\PrintIndex
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,76 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-mathsymb} package}
\author{Maximilian Keßler}
\usepackage{mkessler-mathsymb}
\begin{document}
\maketitle
\begin{abstract}
Provides some selected symbols related to mathematics.
This is certainly a very specific, non-generic package,
heavily based on the authors use-cases.
Feel free to use this as well if you like the symbols.
\end{abstract}
\begin{documentation}
\begin{function}{\noloc}
An inverse \cs{colon} with the correct spacing.
The implementation is by user
\href{https://tex.stackexchange.com/users/4427/egreg}
on
\href{https://tex.stackexchange.com/}{Tex StackExchange}
question
\href{https://tex.stackexchange.com/questions/546713/spacing-in-colon}
{https://\allowbreak tex\allowbreak .stack\allowbreak exchange\allowbreak .com/\allowbreak questions/546713/spacing-in-colon}
\end{function}
\begin{function}{\contra}
Prints a contradiction symbol
\end{function}
\begin{function}{\Warning}
Prints a warning symbol
\end{function}
\begin{function}{\circled}
\begin{syntax}
\cs{circled}\marg{stuff}
\end{syntax}
Dynamically circles the \meta{stuff}.
The circle is adjusted in size.
\end{function}
\begin{function}{\chainbullet}
Synonym for \cs{bullet}.
Only existent for semantic reasons.
\end{function}
\begin{table}[htpb]
\centering
\caption{Symbol table}
\label{tab:symbols}
\begin{tabular}{c | c}
Macro & Result \\
\texttt{Y \cs{leftarrow} X \cs{noloc} f} & $Y \leftarrow X \noloc f$ \\
\cs{contra} & \contra \\
\cs{Warning} & \Warning \\
\cs{circled}\{1\} & \circled{1} \\
\cs{chainbullet} & $\chainbullet$
\end{tabular}
\end{table}
\end{documentation}
\PrintIndex
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,69 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-enumerate} package}
\author{Maximilian Ke\ss ler}
\begin{document}
\maketitle
\begin{documentation}
\begin{abstract}
This is some small wrapper around the package \pkg{enumerate}
that provides some additional tweaks.
\end{abstract}
We load \pkg{enumitem} with the \texttt{shortlabels} option.
\begin{function}{\setItemnumber, \SetItemNumber}
\begin{syntax}
\cs{SetItemNumber}\marg{numeric expression}
\end{syntax}
Sets the item number in the current enumeration.
The \cs{setItemnumber} is deprecated, use \cs{SetItemNumber}
instead if you can.
\end{function}
We now provide for standard variants for enumerations:
\begin{function}{circled, propery, equivalent, holds}
\begin{description}
\item[circled]
This circles the (arabic) item numbers
\item[property]
This numbers as \enquote{(\cs{roman}*)},
i.e.~\enquote{i)}, \enquote{ii)},\ldots
\item[equivalent]
This numbers as \enquote{(\cs{arabic}*)},
i.e.~\enquote{(1)},\enquote{(2)},\ldots
\item[holds]
This numbers as \enquote{\cs{arabic}*)}.,
i.e.~\enquote{1)},\enquote{2)},\ldots
\end{description}
\end{function}
All of these are available as
\begin{description}
\item[ShortLabel]
Specify \texttt{c}, \texttt{p}, \texttt{e} or \texttt{h}
as the first option to \env{enumerate}.
\item[Label Value]
Specify \texttt{label = circled } and similar.
\item[Key]
Just specify \texttt{circled} as an option directly and similar.
\end{description}
\end{documentation}
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,52 @@
\documentclass[full]{l3doc}
\usepackage{mkessler-hypersetup}
\title{The \pkg{mkessler-hypersetup} package}
\author{Maximilian Ke\ss ler}
\begin{document}
\maketitle
\begin{abstract}
This is just a quick wrapper around the \pkg{hyperref} package
and - optionally - the cleveref package.
\end{abstract}
\begin{documentation}
\section{Usage}
The package provides one option: \texttt{cleveref}.
When given, \pkg{cleveref} is also loaded.
The package loads \pkg{hyperref} at the end of the preamble,
and (optionally), \pkg{cleveref} afterwards.
This ensures proper loading order of these packages.
Additionally, we provide some default settings
that are shown in \autoref{tab:hyperref-values}.
\begin{table}[htpb]
\centering
\begin{tabular}{c | c}
Key & Value \\
\hline
colorlinks & none \\
citecolor & violet \\
urlcolor & blue!80!black \\
linkcolor & red!50!black \\
pdftitle & \cs{@course} if defined, else \cs{@title} \\
pdfauthor & \cs{@author}
\end{tabular}
\caption{Hyperref values set by \pkg{mkessler-hypersetup}}
\label{tab:hyperref-values}
\end{table}
\end{documentation}
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,31 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-incfig} package}
\author{Maximilian Ke\ss ler}
\begin{document}
\maketitle
\begin{documentation}
\begin{abstract}
This is some small wrapper around incfigures,
based on
\href{https://castel.dev/post/lecture-notes-2/}
{https://castel.dev/\allowbreak post/\allowbreak lecture-notes-2/}
\end{abstract}
\begin{function}{\incfig}
\begin{syntax}
\cs{incfig}{filename}
\end{syntax}
Inserts an incfigure.
The figures is assumed to be in the \texttt{figures/} folder.
The extension \texttt{pdf_tex} has \emph{not} to be given.
\end{function}
\end{documentation}
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,46 @@
\documentclass[full]{l3doc}
\title{The \pkg{mkessler-math} package}
\author{Maximilian Ke\ss ler}
\begin{document}
\maketitle
\begin{documentation}
\begin{abstract}
A ready-to-use math package that just glues lots of other packages together.
\end{abstract}
\section{Usage}
\begin{verbatim}
\usepackage{mkessler-math}
\end{verbatim}
\section{Loaded packages}
We load the following:
\pkg{IEEEtrantools},
\pkg{algorithm2e},
\pkg{amsmath},
\pkg{amssymb},
\pkg{amsthm},
\pkg{esint},
\pkg{latexsym},
\pkg{mathabx},
\pkg{mathtools},
\pkg{mkessler-categories},
\pkg{mkessler-faktor},
\pkg{mkessler-mathalias},
\pkg{mkessler-mathfig},
\pkg{mkessler-mathfixes}
\pkg{mkessler-mathfont},
\pkg{mkessler-mathop},
\pkg{mkessler-mathsymb},
\pkg{mkessler-unicodechar},
\end{documentation}
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,54 @@
\documentclass[full]{l3doc}
\usepackage{mkessler-todo}
\title{The \pkg{mkessler-todo} package}
\author{Maximilian Ke\ss ler}
\begin{document}
\maketitle
\begin{documentation}
\begin{abstract}
A simple wrapper around the \pkg{todonotes} package
with some shortcut todos that the author uses often.
\end{abstract}
\section{Usage}
We load the \pkg{todonotes} package and the \pkg{marginnote} package.
By redefining \cs{marginpar} to \cs{marginnote} we ensure
that the \cs{todo} macro will also be usable inside minipages properly.
\begin{function}{\todoref}
Marks a missing reference.
Does \emph{not} require additional arguments.
\todoref
\end{function}
\begin{function}{\todoquestion}
Used for questions that arise during lectures.
Same syntax as \cs{todo}.
\todoquestion{Is this useful?}
\end{function}
\begin{function}{\todotex}
Used for marking tex-related todos.
Same syntax as \cs{todo}.
\todotex{Fix spacing}
\end{function}
\begin{function}{\todotypo}
Used for marking (possible) typos of the lecturer for later inspection.
Same syntax as \cs{todo}.
\todotypo{Was this misspelled?}
\end{function}
\end{documentation}
\end{document}

View File

@ -0,0 +1 @@
../../LATEXMKRC

View File

@ -0,0 +1,48 @@
\documentclass[full]{l3doc}
\usepackage{mkessler-unicodechar}
\title{The \pkg{mkessler-unicodechar} package}
\author{Maximilian Ke\ss ler}
\begin{document}
\maketitle
\begin{abstract}
This is just a quick wrapper around the \pkg{unicodechar} package
that defines the Unicode symbols for greek letters to be available
in \LaTeX directly.
\end{abstract}
\section{Provided symbols}
We just provide the greek (lowercase) alphabet:
\[
α
β
γ
δ
ε
ζ
η
θ
ι
κ
λ
μ
ν
ξ
ο
π
ρ
σ
τ
υ
φ
χ
ψ
ω
\]
\end{document}

8
scripts/compile_doc.sh Executable file
View File

@ -0,0 +1,8 @@
#! /bin/bash
# Compiles all documentation files in repository
set -e
BUILD_COMMAND="latexmk -output-directory=$(pwd)/.compile $1"
find doc -type f -name "*.tex" -execdir sh -c "$BUILD_COMMAND" -- {} \;

View File

@ -1,265 +0,0 @@
__HEADER__(Theorem-Environment Package)
%Provides fancy theorem-like-environments used in the write-ups of my lecture notes
\RequirePackage{xkeyval}
__NEW_IF__(showstars,true)
__NEW_IF__(showdaggers,true)
__NEW_IF__(includestars,true)
__NEW_IF__(includeoral,true)
__NEW_IF__(markoral,true)
__NEW_IF__(lecturenumbers,true)
__NEW_IF__(numbersmallenvironmentswiththeorem,false)
__NEW_IF__(numbersmallenvironments,false)
__NEW_IF__(defaulttheorems,true)
\define@choicekey*{__PACKAGE_NAME__}{__PACKAGE_PREFIX__numbersmallenvironments}[\val\nr]{no,section,theorem}{%
\ifcase\nr\relax
__SET_IF__(numbersmallenvironments,false)
\or
__SET_IF__(numbersmallenvironments,true)
%numbering small environments within sections is forbidden whilst using lecturenumbes
__IF__(lecturenumbers)
__SET_IF__(numbersmallenvironmentswiththeorem,true)
\else
__SET_IF__(numbersmallenvironmentswiththeorem,false)
\fi
\or
__SET_IF__(numbersmallenvironments,true)
__SET_IF__(numbersmallenvironmentswiththeorem,true)
\fi
}
\define@choicekey*{__PACKAGE_NAME__}{__PACKAGE_PREFIX__lecturenumbers}[\val\nr]{true,false}{%
\ifcase\nr\relax
__SET_IF__(lecturenumbers,true)
\else
__SET_IF__(lecturenumbers,false)
\fi
}
\define@choicekey*{__PACKAGE_NAME__}{__PACKAGE_PREFIX__defaulttheorems}[\val\nr]{true,false}{%
\ifcase\nr\relax
__SET_IF__(defaulttheorems,true)
\else
__SET_IF__(defaulttheorems,false)
\fi
}
\define@choicekey*{__PACKAGE_NAME__}{__PACKAGE_PREFIX__showdaggers}[\val\nr]{true,false}{%
\ifcase\nr\relax
__SET_IF__(showdaggers,true)
\else
__SET_IF__(showdaggers,false)
\fi
}
\define@choicekey*{__PACKAGE_NAME__}{ownenvironments}[\val\nr]{on, natural, off}{%
\ifcase\nr\relax
__SET_IF__(includestars,true)
__SET_IF__(showstars,true)
\or
__SET_IF__(includestars,true)
__SET_IF__(showstars,false)
\or
__SET_IF__(includestars,false)
__SET_IF__(showstars,false)
\fi
}
\define@choicekey*{__PACKAGE_NAME__}{oralremarks}[\val\nr]{on,natural,off}{%
\ifcase\nr\relax
__SET_IF__(includeoral,true)
__SET_IF__(markoral,true)
\or
__SET_IF__(includeoral,true)
__SET_IF__(markoral,true)
\or
__SET_IF__(includeoral,false)
\fi
}
%%%%% Option section
__LANGUAGE_OPTIONS_X__
\DeclareOptionX{showdaggers}{\setkeys{__PACKAGE_NAME__}{__PACKAGE_PREFIX__showdaggers=#1}}
\DeclareOptionX{ownenvironments}{\setkeys{__PACKAGE_NAME__}{ownenvironments=#1}}
\DeclareOptionX{oralremarks}{\setkeys{__PACKAGE_NAME__}{oralremarks=#1}}
\DeclareOptionX{lecturenumbers}{\setkeys{__PACKAGE_NAME__}{__PACKAGE_PREFIX__lecturenumbers=#1}}
\DeclareOptionX{numbersmallenvironments}{\setkeys{__PACKAGE_NAME__}{__PACKAGE_PREFIX__numbersmallenvironments=#1}}
\DeclareOptionX{defaulttheorems}{\setkeys{__PACKAGE_NAME__}{__PACKAGE_PREFIX__defaulttheorems=#1}}
__END_OPTIONS_X__
%%%%%%%% Implementation section
%Required Packages and setup
\RequirePackage{amsmath}
\RequirePackage{amsthm}
\RequirePackage{mdframed}
\RequirePackage{thmtools}
\RequirePackage[skins]{tcolorbox}
\RequirePackage{mfirstuc}
\RequirePackage{xifthen}
\RequirePackage{xparse}
\tcbuselibrary{breakable}
% Dummy counters
\declaretheorem[numberwithin=section]{__PACKAGE_PREFIX__dummy}
\declaretheorem[numberwithin=__PACKAGE_PREFIX__dummy]{__PACKAGE_PREFIX__smalldummy}
%%%%% Main part, i.e. providing macros for defining new theorems
%%Environments that are numbered by default have 3 versions:
% - the standard one, for numbering
% - one asterisk, to exclude them from numbering (because they were not numbered in the lecture) -> they will be numbered if 'truenmubers' option is set
% - two asterisks, for marking them as self-added, so they will not be numbered, but will receive a visual asterisk. -> They will be numbered if 'truenumbers' option is set
\NewDocumentCommand{\declarebigtheorem}{O{} O{} m m O{}}{
%First, store the name of the theorem in \theoremname
__IF__(english)
\ifthenelse{\isempty{#2}}{\def\theoremname{#4}}{\def\theoremname{#2}}
\else
\ifthenelse{\isempty{#1}}{\def\theoremname{#4}}{\def\theoremname{#1}}
\fi
%Define the mane version of the theorem
\ifthenelse{\isempty{#5}}{\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling = __PACKAGE_PREFIX__dummy]{#4}}{}
%Define the versions theorem*, theorem**, dtheorem
__IF__(lecturenumbers)
__IF__(numbersmallenvironments)
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling=__PACKAGE_PREFIX__smalldummy]{#4*}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, sibling=__PACKAGE_PREFIX__smalldummy]{#4**}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, sibling=__PACKAGE_PREFIX__smalldummy]{d#4}
\else
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, numbered=no]{#4*}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, numbered = no]{#4**}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, numbered = no]{d#4}
\fi
\else
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling=__PACKAGE_PREFIX__dummy]{#4*}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, sibling=__PACKAGE_PREFIX__dummy]{#4**}
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, sibling=__PACKAGE_PREFIX__dummy]{d#4}
\fi
__IF__(includestars)\else\renewenvironment{#4**}{\comment}{\endcomment}\fi
}
\NewDocumentCommand{\declaresmalltheorem}{O{} O{} m m}{
%Get the name of the theorem and store it in \theoremname
__IF__(english)
\ifthenelse{\isempty{#2}}{\def\theoremname{#4}}{\def\theoremname{#2}}
\else
\ifthenelse{\isempty{#1}}{\def\theoremname{#4}}{\def\theoremname{#1}}
\fi
__IF__(numbersmallenvironments)
__IF__(numbersmallenvironmentswiththeorem)
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling = __PACKAGE_PREFIX__smalldummy]{#4}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, sibling=__PACKAGE_PREFIX__smalldummy]{#4*}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, sibling=__PACKAGE_PREFIX__smalldummy]{d#4}
\else
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling=__PACKAGE_PREFIX__dummy]{#4}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, sibling=__PACKAGE_PREFIX__dummy]{#4*}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, sibling=__PACKAGE_PREFIX__dummy]{d#4}
\fi
\else
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, numbered = no]{#4}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, numbered = no]{#4*}
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, numbered = no]{d#4}
\fi
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling=__PACKAGE_PREFIX__dummy]{n#4}
__IF__(includestars)\else\renewenvironment{#4*}{\comment}{\endcomment}\fi
}
%%%% If requested, now define some default theoremstyles
__IF__(defaulttheorems)
\RequirePackage[default styles]{mkessler-thmstyle} % Easy setup of mdframed styles
\declarebigtheorem[Satz][Theorem]{thmredmarginandfill}{theorem} __IF__(english)\else\AtBeginDocument{\def\theoremautorefname{Satz}}\fi
\declarebigtheorem{thmredmarginandfill}{proposition}
\declarebigtheorem[Korollar]{thmredmarginandfill}{corollary}
\declarebigtheorem{thmorangemarginandfill}{lemma}
\declarebigtheorem[Lemma und Definition][Lemma and Definition]{thmorangemarginbluefill}{lemmadef}
\declarebigtheorem{thmbluemarginandfill}{definition}
\declarebigtheorem[Satz und Definition][Theorem and Definition]{thmredmarginbluefill}{theoremdef}
\declarebigtheorem[Proposition und Definition][Proposition and Definition]{thmredmarginbluefill}{propositiondef}
\declarebigtheorem{thmvioletmarginandfill}{notation}
\declarebigtheorem[zuSatz][Addition to Theorem]{thmredmarginandfill}{additiontheorem}
%%%Environments that are not numbered by default (notation, question, example, remark etc) have two forms:
% - normal form: won't be numbered unless '__PACKAGE_PREFIX__numbersmallenvironments' is set
% - having an asterisk: will be displayed with an asterisk, will be numbered if 'numbersmallenvironments' is set
%Notation
\declaresmalltheorem[Notationsmissbrauch][Abuse of Notation]{thmvioletmargin}{abuse}
\declaresmalltheorem[Beispiel]{thmgreenmargin}{example}
\declaresmalltheorem[Bemerkung]{thmyellowmargin}{remark}
\declaresmalltheorem[Lob]{thmgoldmargin}{praise}
\declaresmalltheorem[Trivial Nonsense][Trivial Nonsense]{thmyellowmargin}{trivial}
\declaresmalltheorem[Frage]{thmblackmarginandfill}{question}
\declaresmalltheorem[Organisatorisches][Organisational stuff]{thmblackmargin}{orga}
\declaresmalltheorem[Fakt]{thmredmargin}{fact}
%%%% Specially treated stuff
\declaresmalltheorem[__IF__(markoral) Mündliche Anmerkung\else Bemerkung\fi][__IF__(markoral) Oral remark\else remark\fi]{thmyellowmargin}{oral}
% Option to remove oral remarks when needed
__IF__(includeoral)\else
\renewenvironment{oral}{\comment}{\endcomment}
\renewenvironment{oral*}{\comment}{\endcomment}
\renewenvironment{doral}{\comment}{\endcomment}
\fi
%%%%%%%% Other mdframed style boxes
\newtcolorbox{recap}{before skip = 0.5cm, after skip = 0.5cm, enhanced, sharp corners = all, colback = white, colframe = gray, toprule=0pt, bottomrule=0pt, leftrule=0pt,rightrule=0pt, overlay = {
\draw[gray, line width = 2pt] (frame.north west) -- ++(0.5cm, 0pt);
\draw[gray, line width=2pt] (frame.south east) -- ++(-0.5cm, 0pt);
\draw[gray, line width=2pt] (frame.north west) -- ++ (0pt, -0.5cm);
\draw[gray, line width=2pt] (frame.south east) -- ++(0pt, 0.5cm);
}}
\newenvironment{moral}{%
\begin{mdframed}[linecolor=green!70!black]%
\bfseries\color{green!50!black}}%
{\end{mdframed}}
\newenvironment{antimoral}{%
\begin{mdframed}[linecolor=red!70!black]%
\bfseries\color{red!50!black}}%
{\end{mdframed}}
%%%%%%%%%%%% Non-mdframed theorems
\theoremstyle{plain}
\newtheorem{variant}{__IF__(english) Variant\else Variante\fi}
\newtheorem{assumption}{__IF__(english) Assumption\else Annahme\fi}
\theoremstyle{definition}
\newtheorem*{note}{__IF__(english) Note\else Anmerkung\fi}
\newtheorem*{warning}{\color{red}__IF__(english) Warning \else Warnung\fi}
\newtheorem*{goal}{__IF__(english) Goal \else Ziel\fi}
\newtheorem*{strategy}{__IF__(english) Proof Strategy \else Beweisstrategie\fi}
\newtheorem*{goal*}{__IF__(english) Goal* \else Ziel*\fi}
\newtheorem*{problem}{Problem}
\newtheorem*{info}{Information}
\newtheorem*{answer}{__IF__(english) Answer\else Antwort\fi}
\newtheorem{observe}[theorem]{__IF__(english) Observe\else Beobachte\fi}
\newtheorem*{property}{__IF__(english) Property\else Eigenschaft\fi}
\newtheorem*{intuition}{Intuition}
\newtheorem*{recall}{__IF__(english) Recall\else Erinnerung\fi}
\newtheorem*{idea}{__IF__(english) Idea\else Idee\fi}
\newtheorem{exercise}{__IF__(english) Exercise\else Aufgabe\fi}[section]
\newtheorem{reminder}{__IF__(english) Reminder\else Erinnerung\fi}
\fi % end of default theorems

View File

@ -0,0 +1,7 @@
@default_files = ("fancythm.dtx");
$makeindex = "makeindex -s gind.ist %O -o %D %S";
$clean_ext .= ' glo';
$clean_ext .= ' hd';
$clean_ext .= ' ins';
$clean_full_ext .= ' sty';
$emulate_aux = 1;

View File

@ -0,0 +1,922 @@
% \iffalse meta-comment
%<*internal>
\begingroup
\input docstrip.tex
\keepsilent
\usedir{tex/latex/mkessler/fancythm}
\askforoverwritefalse
\generate{\file{fancythm.sty}{\from{fancythm.dtx}{package}}}
\def\tmpa{plain}
\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
\endgroup
%</internal>
%% File: fancytm.dtx
%
% Copyright (C) 2022 Maximilian Keßler
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
% license or (at your option) any later version. The latest version
% of this license is in the file
%
% https://www.latex-project.org/lppl.txt
%
% -----------------------------------------------------------------------
%<package>\ProvidesExplPackage{fancythm}{2022/01/30}{0.0.2}{Grouped theorems.}
%
%<*driver>
\documentclass[full,kernel]{l3doc}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
% \title{^^A
% The \pkg{fancythm} package^^A
% }
%
% \author{^^A
% Maximilian Keßler
% }
%
% \date{Released 2022-01-12}
%
% \maketitle
%
% \begin{documentation}
% \end{documentation}
%
%
% \begin{implementation}
%
% \section{\pkg{fancythm} implementation}
%
% \begin{macrocode}
%<*package>
% \end{macrocode}
%
% \begin{macrocode}
%<@@=fancythm>
% \end{macrocode}
%
%
% \subsection{Dependencies}
% \begin{macrocode}
\RequirePackage{l3keys2e}
\RequirePackage[default styles]{thmstyle}
% \end{macrocode}
%
% \subsection{Counter management}
%
%
% Wrappers for \LaTeX2e counter manipulation
%
%
% \begin{macro}{\arabic:n, \counter_new:n, \counter_within:nn,\counter_new:nn}
%
% Obvious meanings.
%
% \begin{macrocode}
\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 }
}
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}
% {
% \counter_if_exist_p:n,
% \counter_if_exist:nT,
% \counter_if_exist:F,
% \counter_if_exist:nTF,
% }
%
%
%
% \begin{macrocode}
\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 }
}
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\counter_undefined_error:n}
%
% Standard counter error message.
%
% \begin{macrocode}
\cs_set_eq:Nc \counter_undefined_error:n { @nocounterr }
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{\counter_ensure_exist:n}
%
%
%
% \begin{macrocode}
\cs_new:Npn \counter_ensure_exist:n #1
{
\counter_if_exist:nF { #1 }
{
\counter_undefined_error:n { #1 }
}
}
% \end{macrocode}
% \end{macro}
%
%
%
%
%
% \begin{macro}{\counter_the:n, \counter_set_the:nn}
%
%
% \begin{macrocode}
\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 }
}
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{\counter_sub:nn}
% \begin{syntax}
% \cs{counter_sub:nn}\marg{counter_1}\marg{counter_2}
% \end{syntax}
%
%
%
% \begin{macrocode}
\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 }
}
}
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\counter_new_sub:nn #1 #2}
%
%
%
% \begin{macrocode}
\cs_new:Npn \counter_new_sub:nn #1 #2
{
\counter_new:n { #1 }
\counter_sub:nn { #1 } { #2 }
}
% \end{macrocode}
% \end{macro}
%
% \subsection{Counter management}
%
%
%
% \begin{macro}{\@@_counter_sub_if_exist:n}
%
%
%
% \begin{macrocode}
\cs_new:Npn \@@_counter_sub_if_exist:n #1
{
\counter_if_exist:nT { #1 }
{
\counter_new_sub:nn { in #1 } { #1 }
}
}
% \end{macrocode}
% \end{macro}
%
%
%
%
%
%
% \begin{macro}{\counter_alias:nn, \counter_alias:nx}
% \begin{syntax}
% \cs{counter_alias:nn}\marg{counter_1}\marg{counter_2}
% \end{syntax}
%
% Note that since 2022-06-02, the implementation of \cs{@counteralias}
% in \pkg{thmtools} has changed.
% Before, aliasing an already existing counter did not throw an error,
% which is considered a bug now
% (\href{https://github.com/muzimuzhi/thmtools/issues/28}{https://github.com/muzimuzhi/thmtools/issues/28}).
% Since \pkg{!!} relies on the old functionality,
% we adapt this here by undefining \cs{c@\meta{countername}} before calling
% \cs{@counteralias}.
%
% \begin{macrocode}
\cs_new:Npn \counter_alias:nn #1 % trailing #2
{
\cs_undefine:c { c@ #1 }
\use:c { @counteralias } { #1 } % implicit #2
}
\cs_generate_variant:Nn \counter_alias:nn { n x }
% \end{macrocode}
% \end{macro}
%
%
%
%
%
%
% \subsection{Initialization}
%
%
%
% \begin{variable}{indocument, insection, insubsection, inchapter, inpart}
%
%
%
% \begin{macrocode}
\counter_new:n { indocument }
\@@_counter_sub_if_exist:n { section }
\@@_counter_sub_if_exist:n { subsection }
\@@_counter_sub_if_exist:n { chapter }
\@@_counter_sub_if_exist:n { part }
% \end{macrocode}
% \end{variable}
%
% \begin{variable}{toplevel, sublevel, subsublevel, subsubsublevel}
%
% Note that the \texttt{toplevel} counter will be potentially redefined
% by the given package options.
%
% \begin{macrocode}
\counter_alias:nn { toplevel } { indocument }
\counter_new_sub:nn { sublevel } { toplevel }
\counter_new_sub:nn { subsublevel } { sublevel }
\counter_new_sub:nn { subsubsublevel } { subsublevel }
% \end{macrocode}
% \end{variable}
%
%
% \begin{variable}{\g_@@_style_str}
%
% This will hold the style information of the package.
%
% \begin{macrocode}
\str_new:N \g_@@_style_str
% \end{macrocode}
% \end{variable}
%
% \begin{variable}{\g_@@_translator_bool}
%
%
%
% \begin{macrocode}
\bool_new:N \g_@@_translator_bool
% \end{macrocode}
% \end{variable}
%
%
% \begin{variable}{\g_@@_generate_defaults_bool}
%
%
%
% \begin{macrocode}
\bool_new:N \g_@@_generate_defaults_bool
% \end{macrocode}
% \end{variable}
%
%
%
%
% \begin{variable}
% {
% \l_@@_key_name_tl,
% \l_@@_key_mdframed_tl,
% \l_@@_key_style_tl,
% \l_@@_key_group_clist,
% \l_@@_key_thmtools_clist,
% }
%
%
% \begin{macrocode}
\tl_new:N \l_@@_key_name_tl
\tl_new:N \l_@@_key_mdframed_tl
\tl_new:N \l_@@_key_style_tl
\clist_new:N \l_@@_key_group_clist
\clist_new:N \l_@@_key_thmtools_clist
% \end{macrocode}
% \end{variable}
%
%
%
% \begin{variable}
% {
% \l_@@_name_tl,
% \l_@@_thmtools_clist,
% \l_@@_group_clist,
% }
%
%
% \begin{macrocode}
\tl_new:N \l_@@_name_tl
\clist_new:N \l_@@_thmtools_clist
\clist_new:N \l_@@_group_clist
% \end{macrocode}
% \end{variable}
%
%
%
% \begin{variable}{\g_@@_groupthm_option_clist}
%
%
%
% \begin{macrocode}
\clist_new:N \g_@@_groupthm_option_clist
% \end{macrocode}
% \end{variable}
%
%
%
%
%
%
% \subsection{Key interface}
%
% \begin{texnote}
% Note that unfortunately, none of the keynames really containes a space.
% \LaTeX2e strips spaces before loading a package, so introducing them here
% would make them inaccessible.
% Here they are ignored by \LaTeX3 and are present for readability.
% \end{texnote}
%
%
% \begin{macrocode}
\keys_define:nn { fancythm }
{
translator .bool_set:N = \g_@@_translator_bool ,
translator .default:n = { true } ,
generate defaults .bool_set:N = \g_@@_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_@@_style_str { \tl_use:N \l_keys_choice_tl }
} ,
style .default:n = { fancy } ,
cache .code:n =
{
\clist_put_right:Nn \g_@@_groupthm_option_clist { cache = #1 }
} ,
cache .default:n = { true } ,
cache version .code:n =
{
\clist_put_right:Nn \g_@@_groupthm_option_clist { cache version = #1 }
} ,
cache version .default:n = { 0 } ,
}
% \end{macrocode}
%
%
%
%
% \begin{macrocode}
\keys_define:nn { fancythm / fancytheorem }
{
name .tl_set:N = \l_@@_key_name_tl ,
name .default:n = \c_novalue_tl ,
mdframed .tl_set:N = \l_@@_key_mdframed_tl ,
mdframed .default:n = \c_novalue_tl ,
style .tl_set:N = \l_@@_key_style_tl ,
style .default:n = \c_novalue_tl ,
group .clist_set:N = \l_@@_key_group_clist ,
group .default:n = {} ,
thmtools .clist_set:N = \l_@@_key_thmtools_clist ,
thmtools .default:n = {} ,
}
% \end{macrocode}
%
%
% Process the given keys:
%
% \begin{macrocode}
\keys_set:nn { fancythm } { translator, generate defaults, number in, style }
\ProcessKeysOptions{ fancythm }
% \end{macrocode}
%
% \begin{macro}{\@@_require_package:nn}
%
%
% \begin{macrocode}
\cs_new:Npn \@@_require_package:nn #1
{
\RequirePackage [ #1 ]
}
\cs_generate_variant:Nn \@@_require_package:nn { V n }
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macrocode}
\@@_require_package:Vn \g_@@_groupthm_option_clist { groupthm }
% \end{macrocode}
%
%
%
% This sets up translation if requested.
% Throughout implementation, we can just use \cs{@@_translate:n}
% and will (or not) have translation according to the specified options.
%
% \begin{macrocode}
\bool_if:NTF \g_@@_translator_bool
{
\RequirePackage{translator}
\usedictionary{translator-environment-names}
\cs_set_eq:NN \@@_translate:n \translate
}
{
\cs_set_eq:NN \@@_translate:n \use:n
}
% \end{macrocode}
%
%
%
%
% \begin{macro}{\@@_set_normalized_keys:nn}
%
% \begin{syntax}
% \cs{@@_set_normalized_keys:nn}\marg{keys}\marg{fallback name}
% \end{syntax}
%
%
% \begin{macrocode}
\cs_new:Npn \@@_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_@@_group_clist \l_@@_key_group_clist
\clist_set_eq:NN \l_@@_thmtools_clist \l_@@_key_thmtools_clist
\tl_if_eq:NnF \l_@@_key_mdframed_tl { \c_novalue_tl }
{
\clist_put_right:Nx \l_@@_thmtools_clist
{
mdframed = { style = \tl_use:N \l_@@_key_mdframed_tl }
}
}
\tl_if_eq:NnF \l_@@_key_style_tl { \c_novalue_tl }
{
\clist_put_right:Nx \l_@@_thmtools_clist
{
style = \tl_use:N \l_@@_key_style_tl
}
}
\tl_if_eq:NnTF \l_@@_key_name_tl { \c_novalue_tl }
{
\tl_set:Nx \l_@@_name_tl
{
\text_titlecase_first:n { \tl_trim_spaces:n { #2 } }
}
}
{
\tl_set_eq:NN \l_@@_name_tl \l_@@_key_name_tl
}
\tl_set:Nx \l_@@_name_tl
{
\exp_not:N \csname @@_translate:n \exp_not:N \endcsname { \tl_use:N \l_@@_name_tl }
}
}
% \end{macrocode}
% \end{macro}
%
%
%
%
%
% \subsection{Fancy theorems}
%
%
%
% \begin{macro}{\@@_wrap_multiple:nnn}
% \begin{syntax}
% \cs{@@_wrap_multiple:nnn}\marg{declarator list}\marg{function name}\marg{code}
% \end{syntax}
%
% Defines \meta{function name}, which is assumed to contain \cs{declarator}
% by \meta{code} for each declarator in \meta{declarator list}.
%
% \begin{macrocode}
\cs_new:Npn \@@_wrap_multiple:nnn #1 #2 #3
{
\cs_set:Npn \@@_map_aux:n ##1
{
\cs_new:cn { #2 }
{
#3
}
}
\clist_map_function:nN { #1 } \@@_map_aux:n
}
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\fancythm_new_theorem:nnnn, \fancythm_provide_theorem:nnnn}
% \begin{syntax}
% \cs{fancythm_new_theorem:nnnn}\marg{fancy theorem}\marg{groups}
% \marg{name}\marg{thmtools keys}
% \end{syntax}
%
%
%
% \begin{macrocode}
\@@_wrap_multiple:nnn
{ new, provide }
{ fancythm_#1_theorem:nnnn }
{
\use:c { groupthm_#1_family:nnnnn } { ##1 } { dagger, star, nobraces } { ##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 }
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\fancythm_new_theorem:nn}
% \begin{syntax}
% \cs{fanythm_new_theorem:nn}\marg{key=value list}\marg{fancy theorem}
% \end{syntax}
%
%
%
% \begin{macrocode}
\@@_wrap_multiple:nnn
{ new, provide }
{ fancythm_#1_theorem:nn }
{
\@@_set_normalized_keys:nn { ##1 } { ##2 }
\use:c { fancythm_#1_theorem:nVVV }
{ ##2 }
\l_@@_group_clist
\l_@@_name_tl
\l_@@_thmtools_clist
}
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@@_new_document_command:Nnn, \@@_new_document_command:cnn}
%
% Private wrappers around \cs{NewDocumentCommand}.
%
% \begin{macrocode}
\cs_new:Npn \@@_new_document_command:Nnn #1 #2 #3
{
\NewDocumentCommand { #1 } { #2 } { #3 }
}
\cs_generate_variant:Nn \@@_new_document_command:Nnn { c n n }
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\@@_wrap_multiple_document:nnnn}
% \begin{syntax}
% \cs{@@_wrap_multiple_document:nnnn}\marg{declarator list}\marg{function name}\marg{arg spec}\marg{code}
% \end{syntax}
%
% This is very similar to \cs{@@_wrap_multiple:nnn}, except that it produces document commands.
% For this reason, \cs{declarator} and \cs{Declarator} are available to refer to the lower
% and upper-case versions of the current declarator.
%
% \begin{macrocode}
\cs_new:Npn \@@_wrap_multiple_document:nnnn #1 #2 #3 #4
{
\cs_set:Npn \@@_map_aux:n ##1
{
\cs_set:Nn \@@_Declarator: { \text_titlecase_first:n { ##1 } }
\@@_new_document_command:cnn { #2 } { #3 } { #4 }
}
\clist_map_function:nN { #1 } \@@_map_aux:n
}
% \end{macrocode}
% \end{macro}
%
%
%
%
%
%
% \begin{macro}{\NewFancyTheorem, \ProvideFancyTheorem}
% \begin{syntax}
% \cs{NewFancyTheorem}\marg{key=value list}\marg{fancy theorem}
% \end{syntax}
%
%
%
% \begin{macrocode}
\@@_wrap_multiple_document:nnnn
{ new, provide }
{ \@@_Declarator: FancyTheorem }
{ O{} m }
{
\use:c { fancythm_#1_theorem:nn } { ##1 } { ##2 }
}
% \end{macrocode}
% \end{macro}
%
%
%
% \subsection{Provided resources}
%
%
%
%
% We introduce various new 0theorem groups that help us to organize the document
% in a flexible way.
%
% \begin{variable}{star, dagger, big, small, tiny, custom}
%
%
% \begin{macrocode}
\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 }
% \end{macrocode}
% \end{variable}
%
%
% \begin{macrocode}
\groupthm_add_parent:nn { star } { custom }
\groupthm_add_parent:nn { dagger } { custom }
% \end{macrocode}
% \begin{macrocode}
\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 }
% \end{macrocode}
%
%
% It remains to provide a list of theorems at the beginning of the document.
%
%
% \begin{macro}{\fancythm_add_provided_theorem_to_group:nn}
%
% \begin{macrocode}
\cs_new:Npn \fancythm_add_provided_theorem_to_group:nn #1 #2
{
\cs_if_exist:cF { @@_provided_theorem__#1__group_clist }
{
\clist_new:c { @@_provided_theorem__#1__group_clist }
}
\clist_put_left:cn { @@_provided_theorem__#1__group_clist } { #2 }
}
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\AddProvidedFancyTheoremToGroup}
%
%
%
% \begin{macrocode}
\NewDocumentCommand { \AddProvidedFancyTheoremToGroup } { m m }
{
\fancythm_add_provided_theorem_to_group:nn { #1 } { #2 }
}
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\@@_provide_package_theorem:nnn}
% \begin{syntax}
% \cs{@@_provide_package_theorem:nnn}\marg{key=value list}\marg{fancy theorem}
% \marg{group}
% \end{syntax}
%
% Group can be one of \texttt{big}, \texttt{small}, \texttt{tiny},
% and the provided theorem will have this group, unless it conflicts
% with a user-provided group, in which case this is ignored.
%
%
% \begin{macrocode}
\cs_new:Npn \@@_provide_package_theorem:nnn #1 #2 #3
{
\@@_set_normalized_keys:nn { #1 } { #2 }
\cs_if_exist:cT { @@_provided_theorem__#2__group_clist }
{
\clist_concat:ccc
{ l_@@_group_clist }
{ @@_provided_theorem__#2__group_clist }
{ l_@@_group_clist }
}
\clist_if_in:NnF \l_@@_group_clist { big }
{
\clist_if_in:NnF \l_@@_group_clist { small }
{
\clist_if_in:NnF \l_@@_group_clist { tiny }
{
\clist_put_right:Nn \l_@@_group_clist { #3 }
}
}
}
\fancythm_provide_theorem:nVVV
{ #2 }
\l_@@_group_clist
\l_@@_name_tl
\l_@@_thmtools_clist
}
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\fancythm_provide_big_theorem:nn}
% \begin{macrocode}
\cs_new:Npn \fancythm_provide_big_theorem:nn #1 #2
{
\@@_provide_package_theorem:nnn { #1 } { #2 } { big }
}
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\fancythm_provide_small_theorem:nn}
% \begin{macrocode}
\cs_new:Npn \fancythm_provide_small_theorem:nn #1 #2
{
\@@_provide_package_theorem:nnn { #1 } { #2 } { small }
}
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\fancythm_provide_tiny_theorem:nn}
% \begin{macrocode}
\cs_new:Npn \fancythm_provide_tiny_theorem:nn #1 #2
{
\@@_provide_package_theorem:nnn { #1 } { #2 } { tiny }
}
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macrocode}
\bool_if:NT \g_@@_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 }
% \end{macrocode}
% \begin{macrocode}
\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 }
% \end{macrocode}
% \begin{macrocode}
\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 }
% \end{macrocode}
%
%
%
% \begin{macrocode}
%</package>
% \end{macrocode}
%
% \end{implementation}
%
%
%
% \newpage
% \PrintIndex

View File

@ -0,0 +1,6 @@
@default_files = ("groupthm.dtx");
$makeindex = "makeindex -s gind.ist %O -o %D %S";
$clean_ext .= ' glo';
$clean_ext .= ' hd';
$clean_full_ext .= ' sty';
$emulate_aux = 1;

File diff suppressed because it is too large Load Diff

View File

@ -46,33 +46,27 @@ __HEADER__(Automatic references to theorems in proofs. Claim counters within pro
%%%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 }
{
__PACKAGE_MACRO__(saved_proof:w) { #1 }
}
{
__PACKAGE_MACRO__(saved_proof:w)
}
}
{
__PACKAGE_MACRO__(saved_endproof:)
}
\NewDocumentEnvironment{oldproof} { }
{
__PACKAGE_MACRO__(saved_proof:w)
}
{
__PACKAGE_MACRO__(saved_endproof:)
}
\NewDocumentEnvironment{oldsubproof}{ o }
{
\IfValueTF { #1 }
{
__PACKAGE_MACRO__(saved_subproof:n) { #1 }
}
{
__PACKAGE_MACRO__(saved_subproof:n) { \translate { Subproof } }
}
}
{
__PACKAGE_MACRO__(saved_endsubproof:)
}
\NewDocumentEnvironment{oldsubproof} { o }
{
\IfValueTF { #1 }
{
__PACKAGE_MACRO__(saved_subproof:n) { #1 }
}
{
__PACKAGE_MACRO__(saved_subproof:n) { \translate { Subproof } }
}
}
{
__PACKAGE_MACRO__(saved_endsubproof:)
}
%%% Main implementation

View File

@ -1,92 +0,0 @@
__HEADER__(Mdframed Styles used for fancythm package)
%%%%% This provides easy-to-use styles, especially for use with the
\RequirePackage{xkeyval}
% A simple option wether to define some default styles
__NEW_IF__(defaultstyles,false)
\DeclareOptionX{defaultstyles}{__SET_IF__(defaultstyles,true)}
__END_OPTIONS_X__
\RequirePackage{amsthm}
\RequirePackage{thmtools}
\RequirePackage{mdframed}
\RequirePackage{xcolor}
\RequirePackage{xparse}
\definecolor{gold}{RGB}{218,165,32}
\mdfsetup{skipabove=8pt,skipbelow=\topskip}
\NewDocumentCommand{\declarefancymdfstyle}{O{} m O{} }{
\if\relax\detokenize{#1}\relax
\mdfdefinestyle{\if\relax\detokenize{#3}\relax md#2margin\else #3\fi}{%
linecolor=#2,
linewidth = 2pt,
leftmargin = 0cm,
rightmargin=0cm,
rightline=false,
topline=false,
bottomline=false
}
\else
\mdfdefinestyle{\if\relax\detokenize{#3}\relax md#2marginand#1fill\else #3\fi}{%
linecolor=#2,
linewidth = 2pt,
leftmargin = 0cm,
rightmargin=0cm,
backgroundcolor=#1,
rightline=false,
topline=false,
bottomline=false
}
\fi
}
\NewDocumentCommand{\declarefancythmstyle}{O{} m O{} }{
\declarefancymdfstyle[#1]{#2}
\if\relax\detokenize{#3}\relax
\if\relax\detokenize{#1}\relax
\declaretheoremstyle[
mdframed={style=
\if\relax\detokenize{#1}\relax md#2margin\else md#2marginand#1fill\fi
},
postheadspace={0.3em},
notefont=\mdseries
]{thm#2margin}
\else
\declaretheoremstyle[
mdframed={style=
\if\relax\detokenize{#1}\relax md#2margin\else md#2marginand#1fill\fi
},
postheadspace={0.3em},
notefont=\mdseries
]{thm#2marginand#1fill}
\fi
\else
\declaretheoremstyle[
mdframed={style=
\if\relax\detokenize{#1}\relax md#2margin\else md#2marginand#1fill\fi
},
postheadspace={0.3em},
notefont=\mdseries
]{#3}
\fi
}
__IF__(defaultstyles)
\declarefancythmstyle[red!8]{red}[thmredmarginandfill]
\declarefancythmstyle[orange!10]{orange}[thmorangemarginandfill]
\declarefancythmstyle[blue!7]{blue}[thmbluemarginandfill]
\declarefancythmstyle{green!70!black}[thmgreenmargin]
\declarefancythmstyle{gold}[thmgoldmargin]
\declarefancythmstyle{yellow!80!orange}[thmyellowmargin]
\declarefancythmstyle{gray}[thmgraymargin]
\declarefancythmstyle[violet!7]{violet}[thmvioletmarginandfill]
\declarefancythmstyle{violet}[thmvioletmargin]
\declarefancythmstyle[blue!7]{red}[thmredmarginbluefill]
\declarefancythmstyle{red}[thmredmargin]
\declarefancythmstyle[blue!7]{orange}[thmorangemarginbluefill]
\declarefancythmstyle[violet!20!gray!20]{black}[thmblackmarginandfill]
\declarefancythmstyle{black}[thmblackmargin]
\fi

View File

@ -0,0 +1,6 @@
@default_files = ("thmstyle.dtx");
$makeindex = "makeindex -s gind.ist %O -o %D %S";
$clean_ext .= ' glo';
$clean_ext .= ' hd';
$clean_full_ext .= ' sty';
$emulate_aux = 1;

View File

@ -0,0 +1,412 @@
% \iffalse meta-comment
%<*internal>
\begingroup
\input docstrip.tex
\keepsilent
\usedir{tex/latex/mkessler/thmstyle}
\askforoverwritefalse
\generate{\file{thmstyle.sty}{\from{thmstyle.dtx}{package}}}
\def\tmpa{plain}
\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
\endgroup
%</internal>
%
%% File: thmstyle.dtx
%
% Copyright (C) 2022 Maximilian Keßler
%
% It may be distributed and/or modified under the conditions of the
% LaTeX Project Public License (LPPL), either version 1.3c of this
% license or (at your option) any later version. The latest version
% of this license is in the file
%
% https://www.latex-project.org/lppl.txt
%
% -----------------------------------------------------------------------
%<package>\ProvidesExplPackage{thmstyle}{2022/01/17}{0.0.1}{Styles for thmtools theorems.}
%
%<*driver>
\documentclass[full,kernel]{l3doc}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
%</driver>
% \fi
%
% \title{^^A
% The \pkg{thmstyle} package^^A
% }
%
% \author{^^A
% Maximilian Ke\ss ler
% }
%
% \date{Released 2022-01-12}
%
% \maketitle
%
% \begin{documentation}
%
% \begin{abstract}
% Just a convenience package that provides easy-to-use interface
% for creating \pkg{mdframed} and \pkg{thmtools} styles.
% Also provides some defaults.
% \end{abstract}
%
% \section{User macros}
%
% \begin{function}{\DeclareFancyMdfStyle}
% \begin{syntax}
% \cs{DeclareFancyMdfStyle}\oarg{background color}\marg{left margin color}\oarg{name}
% \end{syntax}
% Makes \meta{name} a \pkg{mdframed} style with given background and
% left margin color.
%
% If \meta{name} is not given, it is defaulted to
% \enquote{md\meta{left margin color}margin}
% or
% \enquote{md\meta{left margin color}and\meta{background color}fill}
% corresponding to whether the \meta{background color} has been given.
% \end{function}
%
% \begin{function}{\DeclareFancyThmStyle}
% \begin{syntax}
% \cs{DeclareFancyThmStyle}\oarg{background color}\marg{left margin color}\oarg{name}
% \end{syntax}
%
% Same as \cs{DeclareFancyMdfStyle}, but directly declares a
% style for \pkg{thmtools}.
% The naming behaves the same except \texttt{md} is replaced with \texttt{thm}
% \end{function}
%
% \section{Default styles}
%
%
% The package has the option to provide some default styles.
% These can be loaded with the |default styles| (the space is optional)
% option, when loading the package.
%
%
% \subsection{colors}
%
% \begin{variable}{gold}
%
% Golden color.
%
%
% \end{variable}
%
% We use the \pkg{xcolor package}.
%
% You can load this package with the \texttt{default styles} option.
% This will make the \pkg{thmtools} styles available given in
% \autoref{tab:default-styles}.
%
% \begin{table}[htpb]
% \centering
% \begin{tabular}{c | c | c}
% Name & Left margin color & Background color \\
% \hline
% thmredmarginandfill & red & red!8 \\
% thmorangemarginandfill & orange & orange!10 \\
% thmbluemarginandfill & blue & blue!7 \\
% thmgreenmargin & green!70!black & none \\
% thmgoldmargin & gold & none \\
% thmyellowmargin & yellow!80!orange & none \\
% thmgraymargin & gray & none \\
% thmvioletmarginandfill & violet & violet!7 \\
% thmvioletmargin & violet & none \\
% thmredmarginandbuliefill & red & blue!7 \\
% thmredmargin & red & none \\
% thmorangemarginbluefill & orange & blue!7 \\
% thmblackmargindandfill & black & violet!20!gray!20 \\
% thmblackmargin & black & none \\
% \end{tabular}
% \caption{Default styles provided by \pkg{thmstyle}}
% \label{tab:default-styles}
% \end{table}
%
% \end{documentation}
%
%
%
%
% \begin{implementation}
%
% \section{\pkg{thmstyle} implementation}
%
%
% \begin{macrocode}
%<*package>
% \end{macrocode}
%
% \begin{macrocode}
%<@@=thmstyle>
% \end{macrocode}
%
%
%
%
%
%
%
%
%
%
% \subsection{Dependencies}
%
%
%
% \begin{macrocode}
\RequirePackage{amsthm}
\RequirePackage{thmtools}
\RequirePackage{mdframed}
\RequirePackage{xcolor}
\RequirePackage{l3keys2e}
% \end{macrocode}
%
%
% \subsection{Initialization}
% \begin{variable}{\g_@@_default_styles_bool}
%
% Indicates whether the package will provide default styles.
%
% \begin{macrocode}
\bool_new:N \g_@@_default_styles_bool
% \end{macrocode}
% \end{variable}
%
%
%
%
% \begin{variable}{gold}
% New color
% \begin{macrocode}
\definecolor{gold}{RGB}{218,165,32}
% \end{macrocode}
% \end{variable}
%
%
%
%
%
%
%
% \subsection{Package options}
%
%
%
% \begin{macrocode}
\keys_define:nn { thmstyle }
{
default styles .bool_set:N = \g_@@_default_styles_bool,
default styles .default:n = { true },
}
% \end{macrocode}
%
%
% \begin{macrocode}
\ProcessKeysOptions { thmstyle }
% \end{macrocode}
%
%
%
%
% \subsection{Private Wrappers}
%
%
% \begin{macro}{\@@_mdframed_define_style:nn, \@@_mdframed_define_style:nx}
% \begin{syntax}
% \cs{@@_mdframed_define_style:nn}\marg{key=value list}\marg{style}
% \end{syntax}
%
%
%
% \begin{macrocode}
\cs_new:Npn \@@_mdframed_define_style:nn #1 #2
{
\mdfdefinestyle{#2}{#1}
}
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@@_thmtools_declare_style:nn, \@@_thmtools_declare_style:xx}
% \begin{syntax}
% \cs{@@_thmtools_declare_style:nn}\marg{key=value list}\marg{style}
% \end{syntax}
%
%
%
% \begin{macrocode}
\cs_new:Npn \@@_thmtools_declare_style:nn #1 #2
{
\declaretheoremstyle[#1]{#2}
}
\cs_generate_variant:Nn \@@_thmtools_declare_style:nn { x x }
% \end{macrocode}
% \end{macro}
%
%
% \subsection{Generation of styles}
%
% \begin{macro}{\thmstyle_declare_mdf_style:nnn}
% \begin{syntax}
% \cs{thmstyle_declare_mdf_style:nnn}\marg{style}\marg{margin color}\marg{background color}
% \end{syntax}
%
%
% \begin{macrocode}
\cs_new:Npn \thmstyle_declare_mdf_style:nnn #1 #2 #3
{
\@@_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 }
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{\DeclareFancyMdfStyle}
% \begin{syntax}
% \cs{DeclareFancyMdfStyle}\oarg{background color}\marg{line color}\oarg{style}
% \end{syntax}
%
%
%
% \begin{macrocode}
\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
}
}
}
% \end{macrocode}
% \end{macro}
%
%
%
%
%
%
%
%
%
% \begin{macro}{\DeclareFancyThmStyle}
% \begin{syntax}
% \cs{DeclareFancyThmStyle}\oarg{background color}\marg{line color}\oarg{style}
% \end{syntax}
%
%
%
% \begin{macrocode}
\NewDocumentCommand { \DeclareFancyThmStyle } { o m o }
{
\DeclareFancyMdfStyle [ #1 ] { #2 }
\@@_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
}
}
}
}
% \end{macrocode}
% \end{macro}
%
%
% \subsection{Default styles}
%
%
% Here, we provide the default styles:
%
%
% \begin{macrocode}
\bool_if:NT \g_@@_default_styles_bool
{
\DeclareFancyThmStyle[red!8]{red}[thmredmarginandfill]
\DeclareFancyThmStyle[orange!10]{orange}[thmorangemarginandfill]
\DeclareFancyThmStyle[blue!7]{blue}[thmbluemarginandfill]
\DeclareFancyThmStyle{green!70!black}[thmgreenmargin]
\DeclareFancyThmStyle[green!10]{green!70!black}[thmgreenmarginandfill]
\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]
}
% \end{macrocode}
%
%
%
%
%
% \begin{macrocode}
%</package>
% \end{macrocode}
%
% \end{implementation}
%
%
%
% \newpage
% \PrintIndex

View File

@ -1,6 +1,8 @@
__HEADER__(Declaring of math symbols with automatic indexing)
\RequirePackage{imakeidx}
\@ifclassloaded{beamer}{}{
\RequirePackage{imakeidx}
}
\RequirePackage{xparse}
% Keys used for declaring symbols
@ -33,18 +35,20 @@ __HEADER__(Declaring of math symbols with automatic indexing)
\bool_new:c { used_#2 }
\cs_new_protected:cn { symbol_#2: }
{
#4{#5}
\bool_if:cF { used_#2 }
{
\index[#1]
{
#7
@
$#4{#5}#6$
#3
}
\@ifclassloaded{beamer}{}{
\index[#1]
{
#7
@
$#4{#5}#6$
#3
}
}
\bool_gset_true:c { used_#2 }
}
#4{#5}
}
\expandafter\protected\expandafter\gdef\csname#2\endcsname
{

View File

@ -21,21 +21,25 @@ __IF__(index)
%Emphasize \vocabulary
\RequirePackage{expl3}
\ExplSyntaxOn
\NewDocumentCommand{\vocab}{O{} m}{
\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
\else%
\index[vocabindex]{#1} % false branch: #1 was supplied
\fi
\fi%
}
\ExplSyntaxOff
\newcommand\printvocabindex{
\printindex[vocabindex]
\newcommand\printvocabindex{%
\printindex[vocabindex]%
}
\NewDocumentCommand{\PrintVocabIndex}{ }
{%
\printindex[vocabindex]%
}
\else
\NewDocumentCommand{\vocab}{O{} m }{
\textbf{\color{blue} #2}
}
\NewDocumentCommand{\vocab}{O{} m }{%
\textbf{\color{blue} #2}%
}%
\fi

View File

@ -8,7 +8,7 @@ __HEADER__(Definitions of categories with automatic indexing)%% Wrapper commands
\NewDocumentCommand{\category}{ m }
{
\operatorname{\textbf{#1}}
\operatorname{\textup{\textbf{#1}}}
}
@ -41,6 +41,12 @@ __HEADER__(Definitions of categories with automatic indexing)%% Wrapper commands
}
}
\NewDocumentCommand{\MakeCategoryIndex}{ }
{
\printindex[categories]
}
\makeindex
[
name = categories,
@ -142,3 +148,24 @@ __HEADER__(Definitions of categories with automatic indexing)%% Wrapper commands
[
\translate{GrAb~(Category~description)}
]
\DeclareSimpleCategory
{ CGHaus }
[
\translate{CGHaus~(Category~description)}
]
\DeclareSimpleCategory
[
formula = S
]
{ SimplicialSet }
[
\translate{SimplicialSet~(Category~description)}
]
\DeclareCategory
[
operator = \operatorname,
formula = \Delta,
ordered = Ordinal,
description = \translate{Ordinal ~ number ~ category ~ (Category ~ description)}
]
{OrdCat}

View File

@ -16,3 +16,6 @@ Field (Category description),Fields and field extensions,Körper und Körpererwe
AffVar (Category description),Affine Varieties over $k$,Affine Varietäten über $k$
Sch (Category description),Schemes and homomorphisms,Schemata und Homomorphismen
GrAb (Category description),Graded abelian groups and homomorphisms,Graduierte Gruppen und Homomorphismen
Ordinal number category (Category description),Finite ordinal numbers and order-preserving maps,Endliche Ordinalzahlen und ordnungserhaltende Abbildungen
CGHaus (Category description), Compactly generated Hausdorff spaces and continuous maps, Kompakt erzeugte Hausdorffräume und stetige Abbildungen
SimplicialSet (Category description),|Functor category $[\OrdCat, \Set]$|,|Funktorkategorie $[\OrdCat, \Set]$|

View File

@ -30,7 +30,7 @@ __HEADER__(Faktor package that also handles cofaktors)
\raisebox{#4\ht2}{\usebox2}% Denominator
}
\DeclareDocumentCommand{\cofaktor}{s m O{-0.5} m O{0.5}}{% \newfaktor[*][#2]{#3}[#4]{#5} -> #2\#4
\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

View File

@ -10,16 +10,17 @@ __NEW_IF__(extended,false)
__END_OPTIONS_X__
%Usage: \makealiasesforwith\<mathcommand>{<prefix>}{<Set of letters>}
%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
% E.g. \MakeAliasesForwith\mathcal{c}{ABC} will declare
% \cA \cB \cC \cD as \mathcal{A}, \mathcal{B}, \mathcal{C}
% This is also ensuring math context, so that
% \cA will be valid even in normal text.
\def\makealiasesforwith#1#2#3{
\NewDocumentCommand{\MakeAliasesForwith}{m m m}
{
\def__PACKAGE_MACRO__(makealias)##1{
\expandafter\def\csname #2##1\endcsname{\ensuremath{#1{##1}}}
}
@ -34,11 +35,11 @@ __END_OPTIONS_X__
__IF__(basic)
\RequirePackage{amsfonts}
\makealiasesforwith\mathbb{}{CFKNQRZ}
\MakeAliasesForwith\mathbb{}{CFKNQRZ}
\fi
__IF__(extended)
\expandafter\makealiasesforwith\expandafter\mathcal\expandafter{\expandafter c\expandafter}\expandafter{__PACKAGE_MACRO__(all)}
\expandafter\makealiasesforwith\expandafter\mathfrak\expandafter{\expandafter f\expandafter}\expandafter{__PACKAGE_MACRO__(all)}
\expandafter\makealiasesforwith\expandafter\mathbb\expandafter{\expandafter b\expandafter}\expandafter{__PACKAGE_MACRO__(all)}
\expandafter\MakeAliasesForwith\expandafter\mathcal\expandafter{\expandafter c\expandafter}\expandafter{__PACKAGE_MACRO__(all)}
\expandafter\MakeAliasesForwith\expandafter\mathfrak\expandafter{\expandafter f\expandafter}\expandafter{__PACKAGE_MACRO__(all)}
\expandafter\MakeAliasesForwith\expandafter\mathbb\expandafter{\expandafter b\expandafter}\expandafter{__PACKAGE_MACRO__(all)}
\fi

View File

@ -8,7 +8,7 @@ __HEADER__(Math figures with TikZ / pgfplots / xy)
\pgfplotsset{compat=1.7}
\RequirePackage{tikz} % Plots / drawings
\usetikzlibrary{calc, intersections, through, quotes, angles, babel, positioning, snakes}
\usetikzlibrary{calc, intersections, through, quotes, angles, babel, positioning, snakes, decorations.markings}
\RequirePackage{tikz-cd} %Commutative diagrams
\RequirePackage{xparse}
@ -42,3 +42,31 @@ __HEADER__(Math figures with TikZ / pgfplots / xy)
\NewDocumentCommand\pullback{ O{dr} }{
\arrow[phantom, pos=0.45]{#1}{\pullbacksymbol}
}
%% Fix for equal arrows in tikz, see
% https://tex.stackexchange.com/questions/443017/equal-arrows-without-transparent-ends-possible-in-tikzcd
\tikzset {
double line with arrow/.style args =
{#1,#2}%
{
decorate, decoration =
{
markings,
mark = at position 0 with
{
\coordinate (ta-base-1) at (0,1pt);
\coordinate (ta-base-2) at (0,-1pt);
}
,
mark = at position 1 with
{
\draw[#1] (ta-base-1) -- (0,1pt);
\draw[#2] (ta-base-2) -- (0,-1pt);
}
}
}
}
\tikzset{Equal/.style={-,double line with arrow={-,-}}}

View File

@ -43,19 +43,19 @@ __END_OPTIONS_X__
% The starred versions of the four commands will ignore the language option and print their
% exact names (without the *, of course)
\DeclareMathOperator{\@__PACKAGE_PREFIX__ggT}{ggT}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__ggT}{\if@__PACKAGE_PREFIX__english gcd\else ggT\fi}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__ggT}{__IF__(english) gcd\else ggT\fi}
\def\ggT{\@ifstar\@__PACKAGE_PREFIX__ggT\@@__PACKAGE_PREFIX__ggT}
\DeclareMathOperator{\@__PACKAGE_PREFIX__gcd}{gcd}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__gcd}{\if@__PACKAGE_PREFIX__english gcd\else ggT\fi}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__gcd}{__IF__(english) gcd\else ggT\fi}
\def\gcd{\@ifstar\@__PACKAGE_PREFIX__gcd\@@__PACKAGE_PREFIX__gcd}
\DeclareMathOperator{\@__PACKAGE_PREFIX__kgV}{kgV}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__kgV}{\if@__PACKAGE_PREFIX__english lcm\else kgV\fi}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__kgV}{__IF__(english) lcm\else kgV\fi}
\def\kgV{\@ifstar\@__PACKAGE_PREFIX__kgV\@@__PACKAGE_PREFIX__kgV}
\DeclareMathOperator{\@__PACKAGE_PREFIX__lcm}{lcm}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__lcm}{\if@__PACKAGE_PREFIX__english lcm\else kgV\fi}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__lcm}{__IF__(english) lcm\else kgV\fi}
\def\lcm{\@ifstar\@__PACKAGE_PREFIX__lcm\@@__PACKAGE_PREFIX__lcm}
%Complex numbers
@ -87,9 +87,11 @@ __END_OPTIONS_X__
\DeclareSimpleMathOperator{Tor}
\DeclareSimpleMathOperator{MaxSpec}
\DeclareSimpleMathOperator{Sh}
\DeclareSimpleMathOperator{PSh}
\DeclareSimpleMathOperator{Proj}
\DeclareSimpleMathOperator{QCoh}
\DeclareSimpleMathOperator{Fun}
\DeclareSimpleMathOperator{ord}
\DeclareMathOperator{\Nil}{\mathcal{N}il}
\DeclareMathOperator{\Ouv}{\mathcal{O}uv}
\DeclareMathOperator{\PreSh}{Pre-Sh}
@ -163,6 +165,10 @@ __END_OPTIONS_X__
\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}
@ -187,6 +193,11 @@ __END_OPTIONS_X__
\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

View File

@ -42,6 +42,4 @@ __HEADER__(Some extra math-related symbols.)
% When dealing with chain complexes, one often uses a bullet as placeholder for the index to mean the whole chain:
\newcommand\chainbullet{\bullet}
\newcommand{\blank}{\text{--}}

62
src/quiver/quiver.pysty Normal file
View File

@ -0,0 +1,62 @@
%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,62 @@
__HEADER__(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

@ -1,26 +0,0 @@
__HEADER__(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.}
}

148
src/wip/cache/cache.pysty3 vendored Normal file
View File

@ -0,0 +1,148 @@
__HEADER__(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}
}
}

34
src/wip/code/code.pysty Normal file
View File

@ -0,0 +1,34 @@
__HEADER__(Hacky code setup for verbatim code)
__NEW_IF__(pipe,false)
\DeclareOption{pipe}{__SET_IF__(pipe,true)}
\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
__IF__(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

@ -4,6 +4,10 @@ __HEADER__(Simple enumeration package wrapper. Handles custom number setting and
\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__PACKAGE_MACRO__(drawcircle)#1{
\tikz[baseline=(char.base)]{

View File

@ -0,0 +1,26 @@
__HEADER__(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}
\NewDocumentCommand\todoref{O{}}{
\todo[color=red!40, #1]{Add reference.}
}
\NewDocumentCommand\todoquestion{O{}}{
\todo[color=black!10, size=\tiny, #1]
}
\NewDocumentCommand\todotex{O{}}{
\todo[color=green!75!black, #1]
}
\NewDocumentCommand\todotypo{O{}}{
\todo[color=blue!40, size=\tiny, #1]{Typo corrected, double check this.}
}

View File

@ -1,3 +1,11 @@
once:
pdflatex test.tex
clean:
latexmk -C test.tex
test:
latexmk -dvi- -pdf -gg -Werror -latexoption=-interaction=nonstopmode test.tex
latexmk -c test.tex
.PHONY: once clean test

View File

@ -1,65 +1,194 @@
\documentclass[a4paper, german]{article}
\documentclass[12pt]{minimal}
\usepackage{l3benchmark}
\usepackage[cache]{groupthm}
\usepackage[generate defaults = false]{fancythm}
\ExplSyntaxOn
\iow_new:N \l_my_iow
\iow_open:Nn \l_my_iow { dump.txt }
\DeclareHookRule { begindocument } { before } { before } { groupthm }
%\cs_set_eq:NN \groupthm_cache:n \__groupthm_cache_auxfile:V
%\cs_set_eq:NN \__groupthm_cache:n \use_none:n
\AddToHook { begindocument } [ before ]
{
\tl_gset:Nn \g__groupthm_lazy_auxfile_tl
{
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Assumption}}{__assumption__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Exercise}}{__exercise__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Goal}}{__goal__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Idea}}{__idea__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Info}}{__info__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Intuition}}{__intuition__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Note}}{__note__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Observe}}{__observe__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Problem}}{__problem__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Property}}{__property__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Recall}}{__recall__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Reminder}}{__reminder__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Strategy}}{__strategy__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Variant}}{__variant__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Warning}}{__warning__groups_tiny}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Abuse of Notation},style=thmvioletmargin}{__abuse__groups_small}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Fact},style=thmredmargin}{__fact__groups_small}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Notation},style=thmvioletmargin}{__notation__groups_small}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Oral remark},style=thmyellowmargin}{__oral__groups_small}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Orga},style=thmblackmargin}{__orga__groups_small}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Praise},style=thmgoldmargin}{__praise__groups_small}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Question},style=thmblackmarginandfill}{__question__groups_small}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Remark},style=thmyellowmargin}{__remark__groups_small}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Trivial Nonsense},style=thmyellowmargin}{__trivial__groups_small}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Assumption}$^{\dagger }$}{__assumption__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Assumption}*$^{\dagger }$}{__assumption__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Assumption}*}{__assumption__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Exercise}$^{\dagger }$}{__exercise__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Exercise}*$^{\dagger }$}{__exercise__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Exercise}*}{__exercise__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Goal}$^{\dagger }$}{__goal__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Goal}*$^{\dagger }$}{__goal__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Goal}*}{__goal__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Idea}$^{\dagger }$}{__idea__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Idea}*$^{\dagger }$}{__idea__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Idea}*}{__idea__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Info}$^{\dagger }$}{__info__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Info}*$^{\dagger }$}{__info__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Info}*}{__info__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Intuition}$^{\dagger }$}{__intuition__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Intuition}*$^{\dagger }$}{__intuition__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Intuition}*}{__intuition__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Note}$^{\dagger }$}{__note__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Note}*$^{\dagger }$}{__note__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Note}*}{__note__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Observe}$^{\dagger }$}{__observe__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Observe}*$^{\dagger }$}{__observe__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Observe}*}{__observe__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Problem}$^{\dagger }$}{__problem__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Problem}*$^{\dagger }$}{__problem__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Problem}*}{__problem__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Property}$^{\dagger }$}{__property__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Property}*$^{\dagger }$}{__property__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Property}*}{__property__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Recall}$^{\dagger }$}{__recall__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Recall}*$^{\dagger }$}{__recall__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Recall}*}{__recall__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Reminder}$^{\dagger }$}{__reminder__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Reminder}*$^{\dagger }$}{__reminder__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Reminder}*}{__reminder__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Strategy}$^{\dagger }$}{__strategy__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Strategy}*$^{\dagger }$}{__strategy__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Strategy}*}{__strategy__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Variant}$^{\dagger }$}{__variant__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Variant}*$^{\dagger }$}{__variant__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Variant}*}{__variant__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Warning}$^{\dagger }$}{__warning__groups_tiny_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Warning}*$^{\dagger }$}{__warning__groups_tiny_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Warning}*}{__warning__groups_tiny_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Abuse of Notation}$^{\dagger }$,style=thmvioletmargin}{__abuse__groups_small_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Abuse of Notation}*$^{\dagger }$,style=thmvioletmargin}{__abuse__groups_small_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Abuse of Notation}*,style=thmvioletmargin}{__abuse__groups_small_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Fact}$^{\dagger }$,style=thmredmargin}{__fact__groups_small_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Fact}*$^{\dagger }$,style=thmredmargin}{__fact__groups_small_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Fact}*,style=thmredmargin}{__fact__groups_small_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Notation}$^{\dagger }$,style=thmvioletmargin}{__notation__groups_small_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Notation}*$^{\dagger }$,style=thmvioletmargin}{__notation__groups_small_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Notation}*,style=thmvioletmargin}{__notation__groups_small_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Oral remark}$^{\dagger }$,style=thmyellowmargin}{__oral__groups_small_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Oral remark}*$^{\dagger }$,style=thmyellowmargin}{__oral__groups_small_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Oral remark}*,style=thmyellowmargin}{__oral__groups_small_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Orga}$^{\dagger }$,style=thmblackmargin}{__orga__groups_small_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Orga}*$^{\dagger }$,style=thmblackmargin}{__orga__groups_small_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Orga}*,style=thmblackmargin}{__orga__groups_small_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Praise}$^{\dagger }$,style=thmgoldmargin}{__praise__groups_small_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Praise}*$^{\dagger }$,style=thmgoldmargin}{__praise__groups_small_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Praise}*,style=thmgoldmargin}{__praise__groups_small_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Question}$^{\dagger }$,style=thmblackmarginandfill}{__question__groups_small_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Question}*$^{\dagger }$,style=thmblackmarginandfill}{__question__groups_small_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Question}*,style=thmblackmarginandfill}{__question__groups_small_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Remark}$^{\dagger }$,style=thmyellowmargin}{__remark__groups_small_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Remark}*$^{\dagger }$,style=thmyellowmargin}{__remark__groups_small_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Remark}*,style=thmyellowmargin}{__remark__groups_small_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Trivial Nonsense}$^{\dagger }$,style=thmyellowmargin}{__trivial__groups_small_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Trivial Nonsense}*$^{\dagger }$,style=thmyellowmargin}{__trivial__groups_small_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Trivial Nonsense}*,style=thmyellowmargin}{__trivial__groups_small_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Corollary},style=thmredmarginandfill}{__corollary__groups_big}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Definition},style=thmbluemarginandfill}{__definition__groups_big}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Example},style=thmgreenmargin}{__example__groups_big}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Lemma},style=thmorangemarginandfill}{__lemma__groups_big}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Proposition and Definition},style=thmredmarginbluefill}{__propositiondef__groups_big}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Proposition},style=thmredmarginandfill}{__proposition__groups_big}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Theorem and Definition},style=thmredmarginbluefill}{__theoremdef__groups_big}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Theorem},style=thmredmarginandfill}{__theorem__groups_big}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Corollary}$^{\dagger }$,style=thmredmarginandfill}{__corollary__groups_big_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Corollary}*$^{\dagger }$,style=thmredmarginandfill}{__corollary__groups_big_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Corollary}*,style=thmredmarginandfill}{__corollary__groups_big_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Definition}$^{\dagger }$,style=thmbluemarginandfill}{__definition__groups_big_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Definition}*$^{\dagger }$,style=thmbluemarginandfill}{__definition__groups_big_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Definition}*,style=thmbluemarginandfill}{__definition__groups_big_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Example}$^{\dagger }$,style=thmgreenmargin}{__example__groups_big_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Example}*$^{\dagger }$,style=thmgreenmargin}{__example__groups_big_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Example}*,style=thmgreenmargin}{__example__groups_big_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Lemma}$^{\dagger }$,style=thmorangemarginandfill}{__lemma__groups_big_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Lemma}*$^{\dagger }$,style=thmorangemarginandfill}{__lemma__groups_big_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Lemma}*,style=thmorangemarginandfill}{__lemma__groups_big_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition and Definition}$^{\dagger }$,style=thmredmarginbluefill}{__propositiondef__groups_big_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition and Definition}*$^{\dagger }$,style=thmredmarginbluefill}{__propositiondef__groups_big_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition and Definition}*,style=thmredmarginbluefill}{__propositiondef__groups_big_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition}$^{\dagger }$,style=thmredmarginandfill}{__proposition__groups_big_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition}*$^{\dagger }$,style=thmredmarginandfill}{__proposition__groups_big_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition}*,style=thmredmarginandfill}{__proposition__groups_big_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem and Definition}$^{\dagger }$,style=thmredmarginbluefill}{__theoremdef__groups_big_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem and Definition}*$^{\dagger }$,style=thmredmarginbluefill}{__theoremdef__groups_big_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem and Definition}*,style=thmredmarginbluefill}{__theoremdef__groups_big_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem}$^{\dagger }$,style=thmredmarginandfill}{__theorem__groups_big_dagger}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem}*$^{\dagger }$,style=thmredmarginandfill}{__theorem__groups_big_dagger_star}
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem}*,style=thmredmarginandfill}{__theorem__groups_big_star}
\csname __groupthm_define_family_options:nnnn\endcsname {abuse}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
\csname __groupthm_define_family_options:nnnn\endcsname {assumption}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {corollary}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
\csname __groupthm_define_family_options:nnnn\endcsname {definition}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
\csname __groupthm_define_family_options:nnnn\endcsname {example}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
\csname __groupthm_define_family_options:nnnn\endcsname {exercise}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {fact}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
\csname __groupthm_define_family_options:nnnn\endcsname {goal}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {idea}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {info}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {intuition}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {lemma}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
\csname __groupthm_define_family_options:nnnn\endcsname {notation}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
\csname __groupthm_define_family_options:nnnn\endcsname {note}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {observe}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {oral}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
\csname __groupthm_define_family_options:nnnn\endcsname {orga}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
\csname __groupthm_define_family_options:nnnn\endcsname {praise}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
\csname __groupthm_define_family_options:nnnn\endcsname {problem}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {property}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {propositiondef}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
\csname __groupthm_define_family_options:nnnn\endcsname {proposition}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
\csname __groupthm_define_family_options:nnnn\endcsname {question}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
\csname __groupthm_define_family_options:nnnn\endcsname {recall}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {remark}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
\csname __groupthm_define_family_options:nnnn\endcsname {reminder}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {strategy}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {theoremdef}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
\csname __groupthm_define_family_options:nnnn\endcsname {theorem}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
\csname __groupthm_define_family_options:nnnn\endcsname {trivial}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
\csname __groupthm_define_family_options:nnnn\endcsname {variant}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
\csname __groupthm_define_family_options:nnnn\endcsname {warning}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
}
}
\ExplSyntaxOff
\usepackage[lecture numbers = false, number all, number small environments = section]{mkessler-fancythm}
\begin{document}
\begin{theorem}[Name]\label{test}
test
\end{theorem}
\begin{definition**}
test
\end{definition**}
\ref{test}
\begin{theorem}
test
\end{theorem}
\mdfsetup{skipabove=8pt,skipbelow=\topskip, bottomline=true}
\begin{lemma}
\end{lemma}
\begin{example}
\end{example}
\begin{praise}
test
\end{praise}
\begin{remark}
test
\end{remark}
\begin{notation}
test
\end{notation}
\begin{abuse}
test
\end{abuse}
\begin{theoremdef}
\end{theoremdef}
\begin{fact}
test
\end{fact}
\begin{orga}
\end{orga}
\begin{question}
\end{question}
\begin{oral}
test
\end{oral}
\begin{abuse}
\end{abuse}
nothing
\end{document}

Some files were not shown because too many files have changed in this diff Show More