Compare commits

..

109 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
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
63 changed files with 1472 additions and 415 deletions

View file

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

View file

@ -1,12 +1,17 @@
set -e
eval $(ssh-agent -s)
echo "$GITLAB_DEPLOY_KEY" | base64 -d | tr -d '\r' | ssh-add - > /dev/null
# 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,13 +1,13 @@
# ! /bin/sh
set -e
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")
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

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,12 +1,30 @@
# 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
@ -27,12 +45,9 @@ all: clean build
clean:
@-rm -r build/
ci-build:
@python3 build.py --source-dir src --build-dir build/LatexPackagesBuild ${BUILD_FLAGS}
doc:
@-rm -r build/documentation
$(MAKE) -C doc central-doc
@-rm -r .compile/
.PHONY: build doc
#!/bin/bash
# Compiles all correspondence letters in repository

View file

@ -11,11 +11,11 @@ Mostly, they are available as a repository so that
- This motivates me to keep things organized
## Usage
If you want to use these, just clone [LatexPackagesBuild](https://gitlab.com/latexci/packages/LatexPackagesBuild) into your `~/texmf/tex/latex` directory, and you are ready to go.
The builds are also available as single files or as zip at [GitLab pages](https://latexci.gitlab.io/packages/LatexPackages).
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 [GitLab pages](https://latexci.gitlab.io/packages/LatexPackages) for documentation to most of the packages.
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.
@ -27,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

View file

@ -1,12 +0,0 @@
TOPTARGETS := all clean doc full central-doc
SUBDIRS := $(wildcard */.)
$(TOPTARGETS): $(SUBDIRS)
$(SUBDIRS):
$(MAKE) -C $@ $(MAKECMDGOALS)
central-doc: $(SUBDIRS)
mv *.pdf ..
.PHONY: $(TOPTARGETS) $(SUBDIRS)

View file

@ -1,11 +0,0 @@
doc:
latexmk
full:
latexmk -gg
clean:
latexmk -C
central-doc: full
mv *.pdf ..

View file

@ -1,3 +1,10 @@
# 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';

View file

@ -1,13 +0,0 @@
TOPTARGETS := all clean doc full central-doc
SUBDIRS := $(wildcard */.)
$(TOPTARGETS): $(SUBDIRS)
$(SUBDIRS):
$(MAKE) -C $@ $(MAKECMDGOALS)
central-doc: $(SUBDIRS)
mkdir -p ../build/documentation
mv *.pdf ../build/documentation
.PHONY: $(TOPTARGETS) $(SUBDIRS)

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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,10 +0,0 @@
pdf:
latexmk
full:
latexmk -gg
clean:
latexmk -C
.PHONY: clean

View file

@ -64,7 +64,6 @@
% \subsection{Dependencies}
% \begin{macrocode}
\RequirePackage{l3keys2e}
\RequirePackage{groupthm}
\RequirePackage[default styles]{thmstyle}
% \end{macrocode}
%
@ -238,10 +237,21 @@
% \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_set_eq:Nc \counter_alias:nn { @counteralias }
\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}
@ -348,6 +358,22 @@
\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}
%
@ -362,22 +388,32 @@
% \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 } ,
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 } ,
} ,
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 } ,
} ,
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}
%
@ -408,6 +444,26 @@
\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}
%
%
%
@ -470,7 +526,7 @@
}
\tl_set:Nx \l_@@_name_tl
{
\exp_not:N \@@_translate:n { \tl_use:N \l_@@_name_tl }
\exp_not:N \csname @@_translate:n \exp_not:N \endcsname { \tl_use:N \l_@@_name_tl }
}
}
% \end{macrocode}
@ -521,18 +577,22 @@
{ new, provide }
{ fancythm_#1_theorem:nnnn }
{
\use:c { groupthm_#1_family:nnnnn } { ##1 } { dagger, star } { ##3 } { ##4 } { ##2 }
\use:c { groupthm_#1_family:nnnnn } { ##1 } { dagger, star, nobraces } { ##3 } { ##4 } { ##2 }
\use:c { groupthm_#1_family_options:nnnn }
{ ##1 }
{ !s !t+ }
{ !s !t+ !t-}
{
\IfBooleanT { ####1 }
{
\groupthm_add_theorem_to_group:n { star }
\AddTheoremToGroup { star }
}
\IfBooleanT { ####2 }
{
\groupthm_add_theorem_to_group:n { dagger }
\AddTheoremToGroup { dagger }
}
\IfBooleanT { ####3 }
{
\AddTheoremToGroup { nobraces }
}
}
{ ##2 }
@ -641,12 +701,14 @@
%
%
% \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}
%
@ -843,6 +905,7 @@
\fancythm_provide_tiny_theorem:nn { } { reminder }
}
}
\DeclareHookRule { begindocument / before } { groupthm } { after } { fancythm }
% \end{macrocode}
%
%

View file

@ -1,10 +0,0 @@
pdf:
latexmk
full:
latexmk -gg
clean:
latexmk -C
.PHONY: clean

View file

@ -23,7 +23,7 @@
% https://www.latex-project.org/lppl.txt
%
% -----------------------------------------------------------------------
%<package>\ProvidesExplPackage{groupthm}{2022/01/17}{0.0.1}{Grouped theorems.}
%<package>\ProvidesExplPackage{groupthm}{2022/02/02}{0.0.2}{Grouped theorems.}
%
%<*driver>
\documentclass[full,kernel]{l3doc}
@ -836,6 +836,10 @@
% \begin{macrocode}
\RequirePackage{amsthm}
\RequirePackage{thmtools}
%<*benchmark>
\RequirePackage{l3benchmark}
%</benchmark>
\RequirePackage{l3keys2e}
% \end{macrocode}
%
% \begin{macro}{\@@_thmtools_declare_theorem:nn, \@@_thmtools_declare_theorem:Vn}
@ -844,12 +848,18 @@
% \end{syntax}
%
% This is just a private wrapper around \cs{declaretheorem} of the \pkg{thmtools} package.
%
% We additionally cache
%
% \begin{macrocode}
\cs_new:Npn \@@_thmtools_declare_theorem:nn #1 #2
{
\tl_log:n { Declaring ~ thmtools ~ theorem ~ #2 }
\declaretheorem [ #1 ] { #2 }
\@@_cache:n
{
\csname @@_thmtools_declare_theorem:nn \endcsname { #1 } { #2 }
}
}
\cs_generate_variant:Nn \@@_thmtools_declare_theorem:nn { V n }
% \end{macrocode}
@ -857,6 +867,7 @@
%
%
%
%
% It also comes in handy to have a stronger version of the
% hook role setting mechanism:
% \begin{macro}{\@@_hook_gset_rule_foreach:nNnn}
@ -1047,6 +1058,10 @@
\bool_new:N \l_@@_in_family_options_environment_bool
% \end{macrocode}
% \end{variable}
%
%
%
%
% \begin{variable}{\g_@@_append_groups_int}
%
% This counts the number of times we appended to a group.
@ -1055,6 +1070,63 @@
\int_new:N \g_@@_append_groups_int
% \end{macrocode}
% \end{variable}
%
%
%
%
% \begin{variable}{\g_@@_cache_bool}
%
% This stores whether we cache definitions in the aux file.
%
% \begin{macrocode}
\bool_new:N \g_@@_cache_bool
% \end{macrocode}
% \end{variable}
%
%
%
% \begin{variable}{\g_@@_cache_version_aux_int, \g_@@_cache_version_document_int}
%
% The version of the cached theorems in the aux file
% and the version the package has been loaded with.
%
% \begin{macrocode}
\int_new:N \g_@@_cache_version_aux_int
\int_new:N \g_@@_cache_version_document_int
\int_set:Nn \g_@@_cache_version_aux_int { -1 }
% \end{macrocode}
% \end{variable}
%
%
%
% \begin{variable}{\g_@@_lazy_document_tl, \g_@@_lazy_auxfile_tl}
%
% During the preamble, if in caching mode, we will collect definitions for
% theorems in these token lists. At the beginning of the document, we select the
% proper one.
%
% \begin{macrocode}
\tl_new:N \g_@@_lazy_document_tl
\tl_new:N \g_@@_lazy_auxfile_tl
% \end{macrocode}
% \end{variable}
%
%
%
% \begin{variable}{\g_@@_dump_auxfile_clist, \g_@@_dump_cache_clist}
%
% With these, we collect stuff written to the aux file at the end of the document
%
% The \cs{g_@@_dump_cache_clist} will be treated specially:
% We will dump such that in a re-run of \LaTeX, the contents will
% be available for execution in the \cs{g_@@_lazy_auxfile_tl}
% \begin{macrocode}
\clist_new:N \g_@@_dump_auxfile_clist
\clist_new:N \g_@@_dump_cache_clist
% \end{macrocode}
% \end{variable}
%
%
%
%
% \subsection{Key interface}
@ -1068,6 +1140,14 @@
%
%
% \begin{macrocode}
\keys_define:nn { groupthm }
{
cache .bool_set:N = \g_@@_cache_bool,
cache .default:n = { true },
__cache version__ .int_set:N = \g_@@_cache_version_document_int,
cache version .meta:nn = { groupthm } { cache = true, __cache version__ = #1 },
cache version .default:n = { 0 },
}
\keys_define:nn { groupthm / theorem ~ group }
{
prefix .tl_set:N = \l_@@_key_prefix_tl,
@ -1118,6 +1198,13 @@
}
% \end{macrocode}
%
%
%
% Process package options:
% \begin{macrocode}
\ProcessKeysOptions { groupthm }
% \end{macrocode}
%
%
% The only key whose default requires such handling is the \enquote{\texttt{name}} key,
% which will be set to a capitalized version of the environment name
@ -1573,14 +1660,17 @@
{
\cs_new:cn { #6 }
{
\@@_define:nnncNNn
{ ##1 }
{ #2 }
{ ####1 }
{ #3 }
#4
#5
{ #7 }
\@@_lazy:n
{
\@@_define:nnncNNn
{ ##1 }
{ #2 }
{ ####1 }
{ #3 }
#4
#5
{ #7 }
}
}
}
\clist_map_function:nN { #1 } \@@_map_aux:n
@ -1732,7 +1822,10 @@
{ \@@_Declarator: TheoremGroup }
{ O{} m }
{
\use:c { groupthm_#1 _group:nn } { ##1 } { ##2 }
\@@_lazy:n
{
\use:c { groupthm_#1 _group:nn } { ##1 } { ##2 }
}
}
% \end{macrocode}
% \end{macro}
@ -1755,21 +1848,24 @@
% \begin{macrocode}
\cs_new:Npn \groupthm_declare_group_rule:nnnn #1 #2 #3 #4
{
\str_set:Nx \l_tmpa_str { \tl_trim_spaces:n { #3 } }
\str_if_eq:VnT \l_tmpa_str { higher }
\@@_lazy:n
{
\str_set:Nn \l_tmpa_str { after }
}
\str_if_eq:VnT \l_tmpa_str { lower }
{
\str_set:Nn \l_tmpa_str { before }
}
\str_if_eq:nnTF { #1 } { ?? }
{
\hook_gset_rule:nnVn {??} {#2} \l_tmpa_str {#4}
}
{
\hook_gset_rule:nnVn { @@ / #1 } {#2} \l_tmpa_str {#4}
\str_set:Nx \l_tmpa_str { \tl_trim_spaces:n { #3 } }
\str_if_eq:VnT \l_tmpa_str { higher }
{
\str_set:Nn \l_tmpa_str { after }
}
\str_if_eq:VnT \l_tmpa_str { lower }
{
\str_set:Nn \l_tmpa_str { before }
}
\str_if_eq:nnTF { #1 } { ?? }
{
\hook_gset_rule:nnVn {??} {#2} \l_tmpa_str {#4}
}
{
\hook_gset_rule:nnVn { @@ / #1 } {#2} \l_tmpa_str {#4}
}
}
}
\cs_generate_variant:Nn \groupthm_declare_group_rule:nnnn { n n n x }
@ -1787,7 +1883,10 @@
% \begin{macrocode}
\NewDocumentCommand { \DeclareTheoremGroupRule } { O{??} m m m }
{
\groupthm_declare_group_rule:nnnn {#1} {#2} {#3} {#4}
\@@_lazy:n
{
\groupthm_declare_group_rule:nnnn {#1} {#2} {#3} {#4}
}
}
% \end{macrocode}
% \end{macro}
@ -1804,9 +1903,12 @@
% \begin{macrocode}
\cs_new:Npn \groupthm_add_parent:nn #1 #2
{
\@@_ensure_group_exists:n { #1 }
\@@_ensure_group_exists:n { #2 }
\clist_gput_left:cn { g_@@_parents_group__#1__clist } { #2 }
\@@_lazy:n
{
\@@_ensure_group_exists:n { #1 }
\@@_ensure_group_exists:n { #2 }
\clist_gput_left:cn { g_@@_parents_group__#1__clist } { #2 }
}
}
\cs_generate_variant:Nn \groupthm_add_parent:nn { n x }
% \end{macrocode}
@ -1823,7 +1925,10 @@
% \begin{macrocode}
\NewDocumentCommand { \AddTheoremGroupParent } { m m }
{
\groupthm_add_parent:nn { #1 } { #2 }
\@@lazy:n
{
\groupthm_add_parent:nn { #1 } { #2 }
}
}
% \end{macrocode}
% \end{macro}
@ -1889,11 +1994,14 @@
% \begin{macrocode}
\cs_new:Npn \groupthm_append_to_group:nn #1 #2
{
\groupthm_new_group:nx { #1 } { __append__ \int_use:N \g_@@_append_groups_int }
\groupthm_add_parent:nx { #2 } { __append__ \int_use:N \g_@@_append_groups_int }
\groupthm_declare_group_rule:nnnx
{ ?? } { #2 } { before } { __append__ \int_use:N \g_@@_append_groups_int }
\int_gincr:N \g_@@_append_groups_int
\@@_lazy:n
{
\groupthm_new_group:nx { #1 } { __append__ \int_use:N \g_@@_append_groups_int }
\groupthm_add_parent:nx { #2 } { __append__ \int_use:N \g_@@_append_groups_int }
\groupthm_declare_group_rule:nnnx
{ ?? } { #2 } { before } { __append__ \int_use:N \g_@@_append_groups_int }
\int_gincr:N \g_@@_append_groups_int
}
}
% \end{macrocodel}
% \end{macro}
@ -1910,19 +2018,15 @@
% \begin{macrocode}
\NewDocumentCommand { \AppendToTheoremGroup } { O{} m }
{
\groupthm_append_to_group:nn { #1 } { #2 }
\@@lazy:n
{
\groupthm_append_to_group:nn { #1 } { #2 }
}
}
% \end{macrocode}
% \end{macro}
%
%
% We also provide the three default groups:
%
% \begin{macrocode}
\groupthm_new_group:nnnnn { all } { } { } { } { }
\groupthm_new_group:nnnnn { starred } { } { } { } { numbered = no }
\groupthm_new_group:nnnnn { unnumbered } { } { } { } { numbered = no }
% \end{macrocode}
%
% \subsection{Iterating over powersets}
% For generating the different variants of a theorem family,
@ -2178,24 +2282,27 @@
{ new, provide }
{ groupthm_#1_theorem:nnn }
{
\@@_set_normalized_keys:nnn { ##1 } { grouped ~ theorem } { ##2 }
\bool_if:nT { ##3 }
\@@_lazy:n
{
\clist_put_left:Nn \l_@@_group_clist { unnumbered }
}
\use:c { groupthm_#1_theorem:nVVV }
{ ##2 }
\l_@@_group_clist
\l_@@_name_tl
\l_@@_thmtools_clist
\bool_if:NT \l_@@_starred_version_bool
{
\clist_put_left:Nn \l_@@_group_clist { starred }
\@@_set_normalized_keys:nnn { ##1 } { grouped ~ theorem } { ##2 }
\bool_if:nT { ##3 }
{
\clist_put_left:Nn \l_@@_group_clist { unnumbered }
}
\use:c { groupthm_#1_theorem:nVVV }
{ ##2* }
{ ##2 }
\l_@@_group_clist
\l_@@_name_tl
\l_@@_thmtools_clist
\bool_if:NT \l_@@_starred_version_bool
{
\clist_put_left:Nn \l_@@_group_clist { starred }
\use:c { groupthm_#1_theorem:nVVV }
{ ##2* }
\l_@@_group_clist
\l_@@_name_tl
\l_@@_thmtools_clist
}
}
}
% \end{macrocode}
@ -2224,10 +2331,13 @@
{ \@@_Declarator: GroupedTheorem }
{ s O{} m }
{
\use:c { groupthm_#1_theorem:nnn }
{ ##2 }
{ ##3 }
{ ##1 }
\@@_lazy:n
{
\use:c { groupthm_#1_theorem:nnn }
{ ##2 }
{ ##3 }
{ ##1 }
}
}
% \end{macrocode}
% \end{macro}
@ -2332,24 +2442,27 @@
{ new, provide }
{ groupthm_#1_family:nnn }
{
\@@_set_normalized_keys:nnn { ##1 } { theorem ~ family } { ##2 }
\bool_if:nTF { ##3}
\@@_lazy:n
{
\clist_set:Nn \l_tmpa_clist { unnumbered }
\@@_set_normalized_keys:nnn { ##1 } { theorem ~ family } { ##2 }
\bool_if:nTF { ##3}
{
\clist_set:Nn \l_tmpa_clist { unnumbered }
}
{
\clist_clear:N \l_tmpa_clist
}
\bool_if:NT \l_@@_starred_version_bool
{
\clist_put_left:Nn \l_@@_group_clist { starred }
}
\use:c { groupthm_#1_family:nVVVV }
{ ##2 }
\l_@@_group_clist
\l_@@_name_tl
\l_@@_thmtools_clist
\l_tmpa_clist
}
{
\clist_clear:N \l_tmpa_clist
}
\bool_if:NT \l_@@_starred_version_bool
{
\clist_put_left:Nn \l_@@_group_clist { starred }
}
\use:c { groupthm_#1_family:nVVVV }
{ ##2 }
\l_@@_group_clist
\l_@@_name_tl
\l_@@_thmtools_clist
\l_tmpa_clist
}
% \end{macrocode}
% \end{macro}
@ -2374,10 +2487,13 @@
{ \@@_Declarator: GroupedTheoremFamily }
{ s O{} m }
{
\use:c { groupthm_#1_family:nnn }
{ ##2 }
{ ##3 }
{ ##1 }
\@@_lazy:n
{
\use:c { groupthm_#1_family:nnn }
{ ##2 }
{ ##3 }
{ ##1 }
}
}
% \end{macrocode}
% \end{macro}
@ -2402,12 +2518,15 @@
% executing a \meta{selection body} from some family options.
% If used outside, we emit an error message.
% \begin{macrocode}
\bool_if:NTF \l_@@_in_family_options_environment_bool
\@@_lazy:n
{
\clist_put_left:Nn \l_@@_group_clist { #1 }
}
{
\msg_error:nn { groupthm } { misuse ~ add ~ theorem ~ to ~ group }
\bool_if:NTF \l_@@_in_family_options_environment_bool
{
\clist_put_left:Nn \l_@@_group_clist { #1 }
}
{
\msg_error:nn { groupthm } { misuse ~ add ~ theorem ~ to ~ group }
}
}
}
% \end{macrocode}
@ -2423,9 +2542,9 @@
%
% \begin{macrocode}
\NewDocumentCommand { \AddTheoremToGroup } { m }
{
\groupthm_add_theorem_to_group:n { #1 }
}
{
\groupthm_add_theorem_to_group:n { #1 }
}
% \end{macrocode}
% \end{macro}
%
@ -2444,7 +2563,7 @@
% The \meta{extra groups} will be added regardless of the arguments given
% to the \meta{theorem family}
% The \meta{declaring backend} is one of \texttt{New}, \texttt{Renew}, \texttt{Provide}
% and \texttt{Declare} and is given to the \texttt{DocumentEnvironment} command from \pkg{xpars}.
% and \texttt{Declare} and is given to the \texttt{DocumentEnvironment} command from \pkg{xparse}.
%
% \begin{macrocode}
\cs_new:Npn \@@_define_family_options:nnnn #1 #2 #3 #4
@ -2495,6 +2614,15 @@
\@@_sort_group_names:
\end { __#1__groups_ \clist_use:Nn \l_@@_group_clist { _ } }
}
% \end{macrocode}
%
% Cache this definition for re-runs of \LaTeX.
%
% \begin{macrocode}
\@@_cache_slow:n
{
\csname @@_define_family_options:nnnn \endcsname { #1 } { #2 } { #3 } { #4 }
}
}
% \end{macrocode}
% \end{macro}
@ -2557,38 +2685,343 @@
{ \@@_Declarator: GroupedTheoremFamilyOptions }
{ s O{} m m m }
{
\keys_set:nn { groupthm / theorem ~ family ~ options } { starred ~ version }
\keys_set:nn { groupthm / theorem ~ family ~ options } { ##2 }
\bool_if:nTF { ##1 }
\@@_lazy:n
{
\clist_set:Nn \l_tmpa_clist { unnumbered }
}
{
\clist_clear:N \l_tmpa_clist
}
\use:c { groupthm_#1_family_options:nnnV }
{ ##3 }
{ ##4 }
{ ##5 }
\l_tmpa_clist
\bool_if:NT \l_@@_starred_version_bool
{
\keys_set:nn { groupthm / theorem ~ family ~ options } { starred ~ version }
\keys_set:nn { groupthm / theorem ~ family ~ options } { ##2 }
\bool_if:nTF { ##1 }
{
\clist_set:Nn \l_tmpa_clist { unnumbered }
}
{
\clist_clear:N \l_tmpa_clist
}
\use:c { groupthm_#1_family_options:nnnV }
{ ##3* }
{ ##3 }
{ ##4 }
{
##5
\groupthm_add_theorem_to_group:n { starred }
}
{ ##5 }
\l_tmpa_clist
\bool_if:NT \l_@@_starred_version_bool
{
\use:c { groupthm_#1_family_options:nnnV }
{ ##3* }
{ ##4 }
{
##5
\groupthm_add_theorem_to_group:n { starred }
}
\l_tmpa_clist
}
}
}
% \end{macrocode}
% \end{macro}
%
%
%
%
% \subsection{Caching}
%
%
%
% We differentiate between caching and non-caching mode here.
% First, we provide some wrappers for writing to the aux file:
%
%
%
% \begin{macrocode}
\bool_if:NTF \g_@@_cache_bool
{
% \end{macrocode}
%
%
% \begin{macro}{\@@_write_auxout:n, \@@_write_auxout:x}
%
% Immediate write to aux file.
%
% \begin{macrocode}
\cs_new:Npn \@@_write_auxout:n
{
\iow_now:cn { @auxout }
}
\cs_generate_variant:Nn \@@_write_auxout:n { x }
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@@_dump_auxfile:n, \@@_dump_auxfile:x}
%
% Dump to auxfile at end of document.
% This is used to dump to the aux file at any point of the document
% without messing with preamble / document treatment etc.
%
% \begin{macrocode}
\cs_new:Npn \@@_dump_auxfile:n
{
\clist_gput_right:Nn \g_@@_dump_auxfile_clist
}
\cs_generate_variant:Nn \@@_dump_auxfile:n { x }
% \end{macrocode}
% \end{macro}
% \begin{macro}{\@@_cache_auxfile:n, \@@_cache_auxfile:V}
%
%
% This also pipes data through the auxfile,
% but will cache it to make it available in the next run.
%
% \begin{macrocode}
\cs_new:Npn \@@_cache_auxfile:n
{
\clist_gput_right:Nn \g_@@_dump_cache_clist
}
\cs_generate_variant:Nn \@@_cache_auxfile:n { V }
% \end{macrocode}
% \end{macro}
% This handles the dumping to the auxfile at the end of the document:
% \begin{macrocode}
\hook_gput_code:nnn { enddocument } { groupthm }
{
%<*benchmark>
\@@_benchmark_once:nn
{
Benchmarking ~ writing ~ to ~ auxfile:
}
{
%</benchmark>
% \end{macrocode}
% First, perform the regular dump:
% \begin{macrocode}
\clist_map_function:NN \g_@@_dump_auxfile_clist
\_@@_write_auxout:n
% \end{macrocode}
% Now, we want to dump the cached clist, but wrap it into the
% the corresponding macro call for storing it in
% \cs{g_@@_lazy_auxfile_tl} on re-reading the auxfile.
% For this, we have to put two single braces into the auxfile
% separately
% \begin{macrocode}
\_@@_write_auxout:n
{
\csname tl_gput_right:cn \endcsname
{
g_@@_lazy_auxfile_tl
}
}
\_@@_write_auxout:x { \str_use:N \c_left_brace_str }
% \end{macrocode}
% Now, dump the list
% \begin{macrocode}
\clist_map_function:NN \g_@@_dump_cache_clist
\_@@_write_auxout:n
\_@@_write_auxout:x { \str_use:N \c_right_brace_str }
%<*benchmark>
}
%</benchmark>
}
% \end{macrocode}
% This makes sure that we restore the cache version
% on the next run of LaTeX
% \begin{macrocode}
\_@@_dump_auxfile:x
{
\ExplSyntaxOn
\int_gset:Nn \exp_not:N \g_@@_cache_version_aux_int
{
\int_use:N \g_@@_cache_version_document_int
}
\ExplSyntaxOff
}
% \end{macrocode}
%
%
% We can now provide the two main macros responsible for the caching feature.
%
% \begin{macro}{\@@_lazy:n}
% \begin{syntax}
% \cs{@@_lazy:n}\marg{code}
% \end{syntax}
%
% Lazy execution will just append to the corresponding token list
%
% \begin{macrocode}
\cs_new:Npn \@@_lazy:n
{
\tl_gput_right:Nn \g_@@_lazy_document_tl
}
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macro}{\@@_cache:n}
% \begin{syntax}
% \cs{@@_cache:n}\marg{code}
% \end{syntax}
%
% We have to replace parameter-tokens of category code 6
% with regular \enquote{\#} tokens of category code 12
% so that we don't double them when writing to the aux file.
% See
% \href
% {https://tex.stackexchange.com/questions/632294/writing-nested-argument-specifier-to-aux-file}
% {https://tex.stackexchange.com/questions/632294/writing-nested-argument-specifier-to-aux-file}
% for details.
%
% \begin{macrocode}
\cs_set_eq:NN \@@_cache:n \@@_cache_auxfile:n
% \end{macrocode}
% \end{macro}
%
%
%
% \begin{macro}{\@@_cache_slow:n}
%
%
%
% \begin{macrocode}
\cs_new:Npn \@@_cache_slow:n #1
{
\tl_set:Nn \l_tmpa_tl
{
{ #1 }
}
\regex_replace_all:nnN { \cP\# } { \cO\# } \l_tmpa_tl
\@@_cache_auxfile:V \l_tmpa_tl
}
% \end{macrocode}
% \end{macro}
%
%
%
% Finally, at the beginning of the document, call the correct code for execution
% \begin{macrocode}
\hook_gput_code:nnn { begindocument } { groupthm }
{
\cs_set_eq:NN \@@_lazy:n \use:n
\int_compare:nNnTF
\g_@@_cache_version_aux_int < \g_@@_cache_version_document_int
{
%<*benchmark>
\@@_benchmark_once:nn
{
Benchmarking ~ declarations ~ of ~ theorems ~ from ~ document:
}
{
%</benchmark>
\tl_use:N \g_@@_lazy_document_tl
%<*benchmark>
}
%</benchmark>
}
{
%<*benchmark>
\@@_benchmark_once:nn
{
Benchmarking ~ declarations ~ of ~ theorems ~ from ~ aux ~ file:
}
{
%</benchmark>
\tl_use:N \g_@@_lazy_auxfile_tl
%<*benchmark>
}
%</benchmark>
}
}
% \end{macrocode}
%
%
% It remains to handle the non-caching case, in which
% we only have to define \cs{@@_cache:n} and \cs{@@_lazy:n} to be simple
% wrappers.
%
% \begin{macrocode}
}
{
% \end{macrocode}
%
%
%
%
%
% \begin{macro}{\@@_cache:n}
%
%
% \begin{macrocode}
\cs_set_eq:NN \@@_cache:n \use_none:n
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@@_cache_slow:n}
%
%
% \begin{macrocode}
\cs_set_eq:NN \@@_cache_slow:n \use_none:n
% \end{macrocode}
% \end{macro}
%
%
% \begin{macro}{\@@_lazy:n}
%
%
%
% \begin{macrocode}
\cs_set_eq:NN \@@_lazy:n \use:n
% \end{macrocode}
% \end{macro}
%
%
% This ends the non-caching case.
%
% \begin{macrocode}
}
% \end{macrocode}
%
%
%
% We also provide the three default groups:
%
% \begin{variable}{all, starred, unnumbered}
% \begin{macrocode}
\groupthm_new_group:nnnnn { all } { } { } { } { }
\groupthm_new_group:nnnnn { starred } { } { } { } { numbered = no }
\groupthm_new_group:nnnnn { unnumbered } { } { } { } { numbered = no }
% \end{macrocode}
% \end{variable}
%
%
%
% \subsection{Benchmarking}
%
% Just some utility macro for benchmarking
% some parts of the package.
%
%
% \begin{macro}{\@@_benchmark:nn}
%
%
%
% \begin{macrocode}
%<*benchmark>
\cs_new:Npn \@@_benchmark_once:nn #1
{
\iow_term:n { [groupthm] ~ #1 }
\iow_log:n { [groupthm] ~ #1 }
\benchmark_once:n
}
%</benchmark>
% \end{macrocode}
% \end{macro}
%
%
%
%
% \begin{macrocode}
%</package>

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,10 +0,0 @@
pdf:
latexmk
full:
latexmk -gg
clean:
latexmk -C
.PHONY: clean

View file

@ -80,6 +80,13 @@
% \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}
@ -261,7 +268,11 @@
rightline = false,
topline = false,
bottomline = false,
backgroundcolor = #3
backgroundcolor = #3,
skipabove = 0.7\baselineskip,
skipbelow = 0pt,
innerrightmargin = 10pt,
innerbottommargin = 5pt
}
{
#1
@ -371,6 +382,7 @@
\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]

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
@ -35,13 +37,15 @@ __HEADER__(Declaring of math symbols with automatic indexing)
{
\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}

View file

@ -21,25 +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]
{%
\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}}}
}
@ -148,6 +148,19 @@ __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,

View file

@ -17,3 +17,5 @@ AffVar (Category description),Affine Varieties over $k$,Affine Varietäten über
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

@ -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}
@ -191,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

@ -17,7 +17,8 @@ __HEADER__(Cache definitions of previous LaTeX runs to avoid computations)
\int_new:N \g__cache_cache_version_aux_int
\int_gset:Nn \g__cache_cache_version_aux_int { -1 }
\tl_new:N \g__cache_dump_auxfile_tl
\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
@ -39,22 +40,48 @@ __HEADER__(Cache definitions of previous LaTeX runs to avoid computations)
\bool_if:NTF \g__cache_cache_bool
{
%% Writing things (at one go) to aux file at end of document:
\cs_new:Npn \__cache_put_aux:n #1
\cs_new:Npn \__cache_dump_auxfile:n
{
\tl_gput_right:Nn \g__cache_dump_auxfile_tl { #1 }
\clist_gput_right:Nn \g__cache_dump_auxfile_clist
}
\cs_generate_variant:Nn \__cache_put_aux:n { x, V }
\cs_generate_variant:Nn \__cache_dump_auxfile:n { x }
\cs_generate_variant:Nn \iow_now:Nn { c V }
\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 }
{
\iow_now:cV { @auxout } \g__cache_dump_auxfile_tl
\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_put_aux:x
\__cache_dump_auxfile:x
{
\ExplSyntaxOn
\int_gset:Nn \exp_not:N \g__cache_cache_version_aux_int
@ -77,10 +104,10 @@ __HEADER__(Cache definitions of previous LaTeX runs to avoid computations)
{
\tl_set:Nn \l_tmpa_tl
{
\csname tl_gput_right:cn \endcsname { g__cache_lazy_auxfile_tl } { #1 }
{ #1 }
}
\regex_replace_all:nnN { \cP\# } { \cO\# } \l_tmpa_tl
\__cache_put_aux:V \l_tmpa_tl
\__cache_dump_cache:V \l_tmpa_tl
}
%%% This handles loading either the cached definitions

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

@ -9,18 +9,18 @@ __HEADER__(Easy standards for the todonotes package)
\setuptodonotes{tickmarkheight=0.1cm, size=\small}
\newcommand\todoref{
\todo[color=red!40]{Add reference.}
\NewDocumentCommand\todoref{O{}}{
\todo[color=red!40, #1]{Add reference.}
}
\newcommand\todoquestion{
\todo[color=black!10, size=\tiny]
\NewDocumentCommand\todoquestion{O{}}{
\todo[color=black!10, size=\tiny, #1]
}
\newcommand\todotex{
\todo[color=green!75!black]
\NewDocumentCommand\todotex{O{}}{
\todo[color=green!75!black, #1]
}
\newcommand\todotypo{
\todo[color=blue!40, size=\tiny]{Typo corrected, double check this.}
\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,58 +1,194 @@
\documentclass[12pt]{article}
\documentclass[12pt]{minimal}
\usepackage{l3benchmark}
\usepackage[default styles]{thmstyle}
\usepackage[cache]{groupthm}
\usepackage[number in = section]{fancythm}
\usepackage[generate defaults = false]{fancythm}
\makeatletter
%\@counteralias{insection}{indocument}
\makeatother
\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
\AddProvidedFancyTheoremToGroup{lemma}{small}
\begin{document}
\section{test}
\stepcounter{toplevel}
\begin{example}
test
\end{example}
\begin{example}+
test
\end{example}
\begin{example}*
\begin{abuse}
\end{example}
\begin{lemma}
\end{lemma}
\begin{definition}
test
\end{definition}
\begin{definition}*
bla
\end{definition}
\begin{theoremdef}
test
\end{theoremdef}
\begin{goal}+
test
\end{goal}
\end{abuse}
nothing
\end{document}

View file

@ -0,0 +1,194 @@
\documentclass{minimal}
\usepackage{l3benchmark}
\usepackage[generate defaults = false]{fancythm}
\ExplSyntaxOn
\iow_new:N \l_my_iow
\iow_open:Nn \l_my_iow { dump2.txt }
\tl_put_right:Nn \l_tmpa_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}
}
\AddToHook { begindocument }
{
\exp_args:NNV \iow_now:Nn \l_my_iow \l_tmpa_tl
\benchmark_once:n
{
\tl_use:N \l_tmpa_tl
}
}
\ExplSyntaxOff
\begin{document}
\begin{theorem}
bla
\end{theorem}
\begin{trivial}+
bla
\end{trivial}
\end{document}

View file

@ -0,0 +1,16 @@
\documentclass{minimal}
\usepackage[cache version = 1]{fancythm}
\NewFancyTheorem{hello}
\begin{document}
\begin{abuse}
\end{abuse}
\begin{hello}
\end{hello}
\end{document}

9
tests/wip/cache/Makefile vendored Normal file
View file

@ -0,0 +1,9 @@
all: clean pdf
pdf:
pdflatex test.tex
clean:
rm -f test.aux
.PHONY: all pdf clean

View file

@ -32,6 +32,15 @@
\begin{document}
\section{test}
\ExplSyntaxOn
%\clist_show:N \g__cache_lazy_auxfile_tl
\ExplSyntaxOff
\foo { one }
\baz{ arg }

24
tests/wip/code/test.tex Normal file
View file

@ -0,0 +1,24 @@
\documentclass[12pt]{article}
\usepackage[pipe]{mkessler-code}
\usepackage{mkessler-vocab}
\begin{document}
\begin{table}[htpb]
\centering
\begin{tabular}{c| c | c}
test & bla & \code{test_}
\end{tabular}
\caption{caption}
\label{tab:label}
\end{table}
\code{test__}
\vocab{| this is a test_|}
%| test ___|
\end{document}