Compare commits

...

175 commits
v2.8 ... master

Author SHA1 Message Date
505cdf92ca
run jobs sequentially 2023-10-19 13:13:23 +02:00
bc3a076cd6
ci-test 2023-10-19 13:09:28 +02:00
92dc505b06
use caches to speed up compilation 2023-10-19 12:56:19 +02:00
9225c03547
remove unneded script 2023-10-19 10:55:10 +02:00
b1925a752f
fix TEXINPUTS 2023-10-19 10:42:01 +02:00
e7f4d10438
further try 2023-10-19 10:25:55 +02:00
6ae8238e15
next try 2023-10-19 10:08:20 +02:00
8bed099045
further attempt to compile correctly 2023-10-19 09:55:20 +02:00
13bbc42e4e
fix ci file 2023-10-19 02:56:31 +02:00
7be9e1046b
fix compilation 2023-10-19 02:55:29 +02:00
eaf0763583
correctly compile in pipeline 2023-10-19 02:50:36 +02:00
72cc9d78b0
set -e for compilation script 2023-10-19 02:49:26 +02:00
34f0a41699
change job name 2023-10-19 02:47:45 +02:00
c07e84d91b
generate documentation on master 2023-10-19 02:23:39 +02:00
8798571831
fix path 2023-10-19 02:21:55 +02:00
823c5097ce
adjust ci to new build style 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 2023-10-18 18:46:34 +02:00
ed6ee5ec64
remove unneeded ssh step 2023-10-18 16:35:40 +02:00
2cd113166d
update readme 2023-10-18 16:28:52 +02:00
6263366b56
adapt commit message in build repo 2023-10-18 16:25:41 +02:00
0156ddca43
fix origin url 2023-10-18 16:21:37 +02:00
476b57d2ba
fix permissions on ssh key 2023-10-18 16:03:51 +02:00
3858718041
change setting up git: don't use agent, directly write to ~/.ssh 2023-10-18 16:01:37 +02:00
e8fedd07a0
configure git directly before building 2023-10-18 15:51:43 +02:00
65c801c212
rename deploy key secret 2023-10-18 11:31:12 +02:00
f941a10fe6
correct domain for host key 2023-10-18 11:27:37 +02:00
5a0ec99d86
enter remote host key 2023-10-18 11:25:56 +02:00
3c8f825e3f
fix push 2023-10-18 11:24:21 +02:00
7e76546afd
fix pushing to build repo 2023-10-18 11:19:33 +02:00
d5af0e7ad1
fix ssh url 2023-10-18 11:16:37 +02:00
4719ba2d52
explicitly use ssh to clone 2023-10-18 11:15:23 +02:00
e0b9b7ad44
fix ref name 2023-10-18 11:13:58 +02:00
7c3775828e
clone history as well 2023-10-18 11:12:09 +02:00
546a7007cc
fetch tags 2023-10-18 11:11:01 +02:00
4008cb355f
clone submodules 2023-10-18 11:06:35 +02:00
298e515a51
fix environment variable 2023-10-18 11:04:38 +02:00
896956f6fa
fix ref name context variable 2023-10-18 10:26:11 +02:00
77140598bf
fix repo url 2023-10-18 10:21:00 +02:00
27a592b9f1
specify branch to checkout 2023-10-18 10:11:47 +02:00
1de88c00b8
rename deploy key variable 2023-10-18 09:56:35 +02:00
0aece45a9c
move ci file to corect location 2023-10-18 09:52:14 +02:00
6aa92357e0
ajust ci 2023-10-18 09:51:02 +02:00
3483a24dca
disable indexing with beamer clas 2023-06-18 21:15:50 +02:00
51afbd7188
add category of presheaves 2022-10-17 18:34:37 +02:00
521ce5c804
fix whitespace around \vocab 2022-08-18 16:09:02 +02:00
b6a13cfa40
add green background style 2022-08-18 11:32:37 +02:00
2d16a2d72a make todo commands accept optional arguments 2022-06-27 17:33:08 +02:00
8c5b9ad7a4 load missing decorations library for tikz-cd 2022-06-27 17:10:15 +02:00
e9f75cd220 fix error in category declaration 2022-06-27 16:46:26 +02:00
80377fc784 fix error in csv: use quotechar | correctly 2022-06-27 16:31:41 +02:00
aaa93783b2 fix error in csv dictionary: use proper quotechar | 2022-06-27 16:21:30 +02:00
bd9d19bcfb Merge branch 'master' into bachelor-thesis 2022-06-27 16:16:03 +02:00
d96c0bdb38 refproof: fix optional argument of oldproof environment 2022-06-27 16:15:41 +02:00
45a0b480cb Merge branch 'master' into bachelor-thesis 2022-06-27 16:02:11 +02:00
b7ba678943 add fix for equal arrows in tikz-cd 2022-06-27 16:02:01 +02:00
3a734d9f1b add CGHaus and SimplicialSet categories 2022-06-27 15:56:21 +02:00
cf7b02f41f Merge branch 'master' into bachelor-thesis 2022-06-27 15:33:49 +02:00
c939483b42 fix @counteralias usage of thmtools 2022-06-27 15:32:53 +02:00
5f2a38ae45 fix bug 2022-06-12 17:43:00 +02:00
6545412baf add nobraces option to fancythm 2022-06-12 17:20:57 +02:00
004413d674 make categories always upright, also in italic text 2022-06-07 21:16:09 +02:00
8583c50c59 add set 2022-04-24 21:19:28 +02:00
0b631683d7 add quiver.sty package 2022-02-28 16:01:53 +01:00
e8be9fcb16 add \ord operator for group orders 2022-02-16 17:16:26 +01:00
6db316f4a0 fix more if bugs 2022-02-16 01:59:40 +01:00
efa4817c51 fix if bug 2022-02-16 01:48:11 +01:00
d7e3d2a9f0 fix thmstyle spacing with parskip 2022-02-14 00:39:40 +01:00
08fa626f54 add test 2022-02-10 01:29:05 +01:00
0a902cc0ec improve code package: deactivate | symbol in tables. make | and code usable inside other macros by rescanning the token list 2022-02-10 01:26:33 +01:00
371ce76a81 add code macro usable inside other environments 2022-02-10 01:13:34 +01:00
394ecc310c make pip an option 2022-02-10 00:40:13 +01:00
78e06ed17d quick fix for tables 2022-02-10 00:27:01 +01:00
778f5297d1 add (really bad) code package 2022-02-10 00:06:34 +01:00
02c2acd330 remove default benchmarking in groupthm 2022-02-03 15:45:52 +01:00
123299b87d update fanycthm caching test 2022-02-03 15:44:53 +01:00
9e214ef6cc implement caching options and pass them to groupthm 2022-02-03 15:44:39 +01:00
f3f8254c3b fix missing cache_slow:n macro in non-caching case 2022-02-03 15:43:49 +01:00
b15dedb366 add makefile in cache tests 2022-02-03 15:05:45 +01:00
3c2e68f574 testfiles: done 2022-02-03 15:04:57 +01:00
f80bd84852 integrate benchmarking properly 2022-02-03 15:02:50 +01:00
7fe4092d8e groupthm: speedup caching
replacing # in cached expressions only
    when necessary speeds up usage
2022-02-03 14:26:14 +01:00
0981e3f2d7 adjust first test to also define theorems directly 2022-02-03 14:04:12 +01:00
7a35a13f87 update test2 to match test2 2022-02-03 13:49:52 +01:00
c4d46e5dce fix testfile 2022-02-03 13:48:47 +01:00
7dca64fa36 modify tests slightly 2022-02-03 13:11:13 +01:00
c38fd317ae start two test files with different benchmarks 2022-02-03 12:59:21 +01:00
9b64e53a98 expand test and add benchmarkin 2022-02-03 12:32:37 +01:00
85d91e7b17 better compile makefile 2022-02-03 12:32:07 +01:00
0f07a69b15 update testfile to show auxfile tl 2022-02-03 12:31:49 +01:00
eafd4336d6 declare hook rule for compatibily 2022-02-03 12:31:10 +01:00
a68ac2fdaa make everythin lazy to integrate with fancythm 2022-02-03 12:30:47 +01:00
0070d2aa66 fix some bugs: missing macro variants and wrong names, 2022-02-02 22:53:31 +01:00
3cc1440fb5 do not use ExplSyntax at places that are passed to groupthm 2022-02-02 22:51:41 +01:00
f1dacf4a5d implement caching in groupthm 2022-02-02 22:34:39 +01:00
64fbca35dd rework aux file writing 2022-02-02 21:45:55 +01:00
bbfdb29cec Merge branch 'cache' into fast-groupthm 2022-02-02 19:34:53 +01:00
27fb2c2cf1 move test file into cache directory 2022-02-02 18:10:57 +01:00
01254fc415 add comment in cache package 2022-02-02 17:42:38 +01:00
47e40def17 add test file showing usage of cache package 2022-02-02 17:41:02 +01:00
0fd205df16 fix wrong usage of old hooks 2022-02-02 17:32:21 +01:00
1bbcb12525 correct header 2022-02-02 17:28:06 +01:00
ddbdc19d2f start experimental cache package 2022-02-02 17:24:06 +01:00
11d13efe62 don't write anything to aux file when not in cache mode 2022-02-01 11:59:17 +01:00
a3211f8a8f groupthm: handle theorem family options cache
also use an aux file hook to collect definitions
    from aux file
2022-01-31 22:17:58 +01:00
5b7e93e76a also provide families lazily 2022-01-31 21:26:41 +01:00
48651b4919 activate caching for all Document Commands 2022-01-31 21:02:48 +01:00
bea7380166 ensure correct hook order 2022-01-31 20:36:29 +01:00
fc67ef99ef groupthm: correct incremental building
ignore definitions from aux file in case of version change
2022-01-31 20:25:37 +01:00
c637fe051c set aux version bool globally (fixes error) 2022-01-31 20:15:25 +01:00
d59ef01933 write groupthm version of theorem declaration to aux file 2022-01-31 20:11:37 +01:00
adc9c32514 write cache version of aux file into aux file 2022-01-31 19:59:52 +01:00
f878e66cdf write all definitions of theorems to aux file at end of document 2022-01-31 19:55:03 +01:00
32daab8d20 implement lazy declaration at begin of documentation when caching is active 2022-01-31 19:26:38 +01:00
b041d8c990 implement option interface for groupthm. 2022-01-31 19:17:58 +01:00
4bda829518 update submodule 2022-01-31 00:46:41 +01:00
b88c57409a remove old thmstyle file 2022-01-31 00:45:20 +01:00
d33ea4f9b3 update test file 2022-01-31 00:44:56 +01:00
d7791cdcb5 fix bugs 2022-01-31 00:44:40 +01:00
abd2308b82 use new thmstyle package 2022-01-31 00:35:57 +01:00
97a2df27b5 integrate documentation of thmstyle into dtx file 2022-01-31 00:26:23 +01:00
5437b8606c rework thmstyle package into LaTeX3 syntax and proper expansion 2022-01-31 00:20:03 +01:00
ceb43f1672 update readme 2022-01-30 22:29:19 +01:00
ff6f4f6dc4 fix error in Makefile 2022-01-30 22:15:36 +01:00
e2d4d57eb0 update ci build script to have built packages available when generating documentation 2022-01-30 21:56:06 +01:00
9993ac4fc9 make doc building a phony target 2022-01-30 21:52:13 +01:00
1d5c14c688 remove redundant dependency 2022-01-30 21:51:50 +01:00
cb9d6110da update submodule 2022-01-30 21:45:59 +01:00
736662b005 fix mistake in ci script 2022-01-30 21:40:13 +01:00
457a8d3cf3 make build error if script errors 2022-01-30 21:36:18 +01:00
69423e3a50 update ci 2022-01-30 21:33:32 +01:00
0ca188057a update CI script 2022-01-30 21:30:44 +01:00
38260b0a1e add central documentation target in Makefile 2022-01-30 21:18:54 +01:00
379793d982 update makefiles for documentation 2022-01-30 21:17:01 +01:00
9908fa858a rework Makefiles and .latexmkrc 2022-01-30 20:55:56 +01:00
ed99f9fe0b document math package 2022-01-30 19:52:34 +01:00
8dd153995a add todo documentation 2022-01-30 19:46:28 +01:00
41a071a327 add incfig documentation 2022-01-30 19:39:25 +01:00
f3dda43639 add proper SetItemNumber macro 2022-01-30 19:35:02 +01:00
0f6a9d112e document enumerate package 2022-01-30 19:34:46 +01:00
89dc3e4614 document hypersetup package 2022-01-30 19:22:48 +01:00
30565a139d document vocab package 2022-01-30 19:13:26 +01:00
9f5af1d669 add PrintVocabIndex macro 2022-01-30 19:13:16 +01:00
fab3fa1f8c add symbindex package documentation 2022-01-30 19:03:28 +01:00
b9d4a571de document mathfig package 2022-01-30 18:40:44 +01:00
0d5730b11e document mathop package 2022-01-30 18:32:12 +01:00
275bc70bfb add testfile 2022-01-30 18:08:25 +01:00
f4e1f01f39 add documentation 2022-01-30 18:07:51 +01:00
97eb9f034c add MakeCategoryIndex macro 2022-01-30 18:06:41 +01:00
2a9ad90a62 draf of documentation of categories. not fixed 2022-01-30 17:44:29 +01:00
3e416a68ae document mathsymb package 2022-01-30 17:16:28 +01:00
aef9318118 document mathalias package 2022-01-30 17:04:59 +01:00
91db761097 update package with proper naming conventions 2022-01-30 17:04:49 +01:00
52438fd0a3 move unicodechar package into wrappers folder 2022-01-30 16:44:24 +01:00
0be5a5503d document unicodechar package 2022-01-30 16:43:42 +01:00
105314726a document mathfixes package 2022-01-30 16:38:07 +01:00
5a90610c9d docmuent mathfont packgae 2022-01-30 16:18:42 +01:00
07d60b499a add faktor package documentation 2022-01-30 16:00:44 +01:00
98a225b5a0 fix bug in faktor package 2022-01-30 16:00:32 +01:00
8e94f452fe add documentation for thmstyle 2022-01-30 15:43:42 +01:00
2dbf8f9723 document refproof package 2022-01-30 15:25:27 +01:00
8aa2e4139c consistent naming 2022-01-30 14:38:30 +01:00
e32519ee95 update PyTeX 2022-01-30 14:36:43 +01:00
fae19125e0 add internal driver for style file 2022-01-30 14:20:51 +01:00
38c59525e7 move package sources into own folders 2022-01-30 14:16:50 +01:00
57c4a01e8e add groupthm documentation driver file 2022-01-30 13:59:53 +01:00
d767892eb9 add index in fancythm file 2022-01-30 13:57:55 +01:00
8e853295a0 add doc driver file 2022-01-30 13:57:45 +01:00
b70ff474f3 proper .latexmkcr and makefile. remove aux files from repo 2022-01-30 13:50:05 +01:00
fab158f45f proper makefile 2022-01-30 13:43:53 +01:00
cd044ac0c4 include proper latexmkrc file. remove aux files from repo 2022-01-30 13:35:12 +01:00
0bc05e8129 add suchthat macro 2022-01-28 16:01:58 +01:00
640d447995 symbindex: call symbol lastly to allow for argument catching 2022-01-28 15:48:12 +01:00
698e0290ee add ordinal number category 2022-01-28 15:16:52 +01:00
eb8996c192 add benchmark file 2022-01-25 21:10:51 +01:00
123 changed files with 3593 additions and 3353 deletions
.ci
.gitea/workflows
.gitlab-ci.ymlMakefilePyTeXREADME.md
doc
scripts
src

View file

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

View file

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

View file

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

14
.ci/deploy_to_build_repo.sh Executable file
View file

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

View file

@ -1,8 +1,9 @@
# ! /bin/sh
ssh git@gitlab.com
git clone git@gitlab.com:latexci/packages/LatexPackagesBuild.git build/LatexPackagesBuild
cd build/LatexPackagesBuild
REMOTE_BRANCH=$(git branch -a | sed -n '/remotes\/origin\/.*-build/p' | sed 's/remotes\/origin\///g' | sed 's/-build//g' | sed 's/[[:space:]]//g' | sed -n "/^${CI_COMMIT_REF_NAME}$/p")
set -e
cd build/packages
REMOTE_BRANCH=$(git branch -a | sed -n '/remotes\/origin\/.*-build/p' | sed 's/remotes\/origin\///g' | sed 's/-build//g' | sed 's/[[:space:]]//g' | sed -n "/^${REF_NAME}$/p")
echo ${REMOTE_BRANCH}

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

2
PyTeX

@ -1 +1 @@
Subproject commit e661ceee64bd5070c40b448bbbbc6981585df978
Subproject commit c9bb0e87c91beae3e17a829603e4459cf804ec51

View file

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

14
doc/LATEXMKRC Normal file
View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

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

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

View file

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

View file

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

View file

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

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

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

View file

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

View file

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

View file

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

View file

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

View file

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

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

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

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

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

View file

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

8
scripts/compile_doc.sh Executable file
View file

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

View file

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

View file

@ -1,21 +0,0 @@
sty: clean-sty
pdflatex fancythm.ins
all: clean pdf sty
pdf:
pdflatex fancythm.dtx
makeindex -s gind.ist fancythm.idx
pdflatex fancythm.dtx
clean: clean-sty
latexmk -c fancythm.dtx
rm -f fancythm.hd
rm -f fancythm.glo
rm -f fancythm.pdf
clean-sty:
rm -f fancythm.sty
rm -f fancythm.tdo
.PHONY: pdf clean

View file

@ -1,30 +0,0 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\catcode 95\active
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\@writefile{toc}{\contentsline {section}{\numberline {1}\pkg {fancythm} implementation}{1}{section.0.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Dependencies}{1}{subsection.0.1.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Counter management}{1}{subsection.0.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Counter management}{3}{subsection.0.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.4}Initialization}{3}{subsection.0.1.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.5}Key interface}{4}{subsection.0.1.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.6}Fancy theorems}{6}{subsection.0.1.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.7}Provided resources}{8}{subsection.0.1.7}\protected@file@percent }
\providecommand\HD@SetMacroIndent[1]{}
\HD@SetMacroIndent{360}
\gdef \@abspage@last{11}

View file

@ -1,5 +1,15 @@
% \iffalse meta-comment
%
%<*internal>
\begingroup
\input docstrip.tex
\keepsilent
\usedir{tex/latex/mkessler/fancythm}
\askforoverwritefalse
\generate{\file{fancythm.sty}{\from{fancythm.dtx}{package}}}
\def\tmpa{plain}
\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
\endgroup
%</internal>
%% File: fancytm.dtx
%
% Copyright (C) 2022 Maximilian Keßler
@ -12,11 +22,10 @@
% https://www.latex-project.org/lppl.txt
%
% -----------------------------------------------------------------------
%<package>\ProvidesExplPackage{fancythm}{2022/01/17}{0.0.1}{Grouped theorems.}
%<package>\ProvidesExplPackage{fancythm}{2022/01/30}{0.0.2}{Grouped theorems.}
%
%<*driver>
\documentclass[full,kernel]{l3doc}
\usepackage{mkessler-todo}
\begin{document}
\DocInput{\jobname.dtx}
\end{document}
@ -55,8 +64,7 @@
% \subsection{Dependencies}
% \begin{macrocode}
\RequirePackage{l3keys2e}
\RequirePackage{groupthm}
\RequirePackage[default styles]{mkessler-thmstyle}
\RequirePackage[default styles]{thmstyle}
% \end{macrocode}
%
% \subsection{Counter management}
@ -229,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}
@ -340,6 +359,22 @@
% \end{macrocode}
% \end{variable}
%
%
%
% \begin{variable}{\g_@@_groupthm_option_clist}
%
%
%
% \begin{macrocode}
\clist_new:N \g_@@_groupthm_option_clist
% \end{macrocode}
% \end{variable}
%
%
%
%
%
%
% \subsection{Key interface}
%
% \begin{texnote}
@ -369,6 +404,16 @@
\str_set:Nn \g_@@_style_str { \tl_use:N \l_keys_choice_tl }
} ,
style .default:n = { fancy } ,
cache .code:n =
{
\clist_put_right:Nn \g_@@_groupthm_option_clist { cache = #1 }
} ,
cache .default:n = { true } ,
cache version .code:n =
{
\clist_put_right:Nn \g_@@_groupthm_option_clist { cache version = #1 }
} ,
cache version .default:n = { 0 } ,
}
% \end{macrocode}
%
@ -399,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}
%
%
%
@ -461,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}
@ -512,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 }
@ -632,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}
%
@ -834,6 +905,7 @@
\fancythm_provide_tiny_theorem:nn { } { reminder }
}
}
\DeclareHookRule { begindocument / before } { groupthm } { after } { fancythm }
% \end{macrocode}
%
%
@ -847,3 +919,4 @@
%
%
% \newpage
% \PrintIndex

View file

@ -1,320 +0,0 @@
\indexentry{RequirePackage={\verbatim@font !\verb*&!\RequirePackage&}|hdclindex{3}{}}{3}
\indexentry{RequirePackage={\verbatim@font !\verb*&!\RequirePackage&}|hdclindex{4}{}}{4}
\indexentry{RequirePackage={\verbatim@font !\verb*&!\RequirePackage&}|hdclindex{5}{}}{5}
\indexentry{arabic commands:=\pkg{arabic} commands:>arabic:n={\verbatim@font !\verb*&!\arabic:n&}|hdclindex{6}{main}}{6}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&new:n&}|hdclindex{6}{main}}{6}
\indexentry{counter commands:=\pkg{counter} commands:>counter_within:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&within:nn&}|hdclindex{6}{main}}{6}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&new:nn&}|hdclindex{6}{main}}{6}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set_eq:NN={\verbatim@font !\verb*&!\cs&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{7}{}}{6}
\indexentry{arabic={\verbatim@font !\verb*&!\arabic&}|hdclindex{7}{}}{6}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set_eq:NN={\verbatim@font !\verb*&!\cs&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{8}{}}{7}
\indexentry{newcounter={\verbatim@font !\verb*&!\newcounter&}|hdclindex{8}{}}{7}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set_eq:NN={\verbatim@font !\verb*&!\cs&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{9}{}}{8}
\indexentry{counterwithin={\verbatim@font !\verb*&!\counterwithin&}|hdclindex{9}{}}{8}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{10}{}}{9}
\indexentry{counter commands:=\pkg{counter} commands:>counter_if_exist_p:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&if&!\_!\verb*&exist&!\_!\verb*&p:n&}|hdclindex{15}{main}}{14}
\indexentry{counter commands:=\pkg{counter} commands:>counter_if_exist:nTF={\verbatim@font !\verb*&!\counter&!\_!\verb*&if&!\_!\verb*&exist:nTF&}|hdclindex{15}{main}}{14}
\indexentry{counter commands:=\pkg{counter} commands:>counter_if_exist:TF={\verbatim@font !\verb*&!\counter&!\_!\verb*&if&!\_!\verb*&exist:TF&}|hdclindex{15}{main}}{14}
\indexentry{counter commands:=\pkg{counter} commands:>counter_if_exist:nTF={\verbatim@font !\verb*&!\counter&!\_!\verb*&if&!\_!\verb*&exist:nTF&}|hdclindex{15}{main}}{14}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{16}{}}{14}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist_p:N={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist&!\_!\verb*&p:N&}|hdclindex{18}{}}{16}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{20}{}}{18}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist:NTF={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist:NTF&}|hdclindex{22}{}}{20}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{24}{}}{22}
\indexentry{counter commands:=\pkg{counter} commands:>counter_if_exist:nTF={\verbatim@font !\verb*&!\counter&!\_!\verb*&if&!\_!\verb*&exist:nTF&}|hdclindex{24}{}}{22}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist:NTF={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist:NTF&}|hdclindex{26}{}}{24}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{28}{}}{26}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist:NTF={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist:NTF&}|hdclindex{30}{}}{28}
\indexentry{counter commands:=\pkg{counter} commands:>counter_undefined_error:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&undefined&!\_!\verb*&error:n&}|hdclindex{32}{main}}{30}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set_eq:NN={\verbatim@font !\verb*&!\cs&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{33}{}}{30}
\indexentry{counter commands:=\pkg{counter} commands:>counter_ensure_exist:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&ensure&!\_!\verb*&exist:n&}|hdclindex{34}{main}}{31}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{35}{}}{31}
\indexentry{counter commands:=\pkg{counter} commands:>counter_if_exist:nTF={\verbatim@font !\verb*&!\counter&!\_!\verb*&if&!\_!\verb*&exist:nTF&}|hdclindex{37}{}}{33}
\indexentry{counter commands:=\pkg{counter} commands:>counter_undefined_error:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&undefined&!\_!\verb*&error:n&}|hdclindex{39}{}}{35}
\indexentry{counter commands:=\pkg{counter} commands:>counter_the:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&the:n&}|hdclindex{42}{main}}{38}
\indexentry{counter commands:=\pkg{counter} commands:>counter_set_the:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&set&!\_!\verb*&the:nn&}|hdclindex{42}{main}}{38}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{43}{}}{38}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{45}{}}{40}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{47}{}}{42}
\indexentry{counter commands:=\pkg{counter} commands:>counter_ensure_exist:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&ensure&!\_!\verb*&exist:n&}|hdclindex{49}{}}{44}
\indexentry{exp commands:=\pkg{exp} commands:>exp_args:Nc={\verbatim@font !\verb*&!\exp&!\_!\verb*&args:Nc&}|hdclindex{50}{}}{45}
\indexentry{renewcommand={\verbatim@font !\verb*&!\renewcommand&}|hdclindex{50}{}}{45}
\indexentry{counter commands:=\pkg{counter} commands:>counter_sub:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&sub:nn&}|hdclindex{52}{main}}{47}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{53}{}}{47}
\indexentry{counter commands:=\pkg{counter} commands:>counter_within:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&within:nn&}|hdclindex{55}{}}{49}
\indexentry{counter commands:=\pkg{counter} commands:>counter_set_the:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&set&!\_!\verb*&the:nn&}|hdclindex{56}{}}{50}
\indexentry{counter commands:=\pkg{counter} commands:>counter_the:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&the:n&}|hdclindex{58}{}}{52}
\indexentry{arabic commands:=\pkg{arabic} commands:>arabic:n={\verbatim@font !\verb*&!\arabic:n&}|hdclindex{58}{}}{52}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new_sub:nn#1 #2={\verbatim@font !\verb*&!\counter&!\_!\verb*&new&!\_!\verb*&sub:nn#1 #2&}|hdclindex{61}{main}}{55}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{62}{}}{55}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new_sub:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&new&!\_!\verb*&sub:nn&}|hdclindex{62}{}}{55}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&new:n&}|hdclindex{64}{}}{57}
\indexentry{counter commands:=\pkg{counter} commands:>counter_sub:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&sub:nn&}|hdclindex{65}{}}{58}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_counter_sub_if_exist:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&counter&!\_!\verb*&sub&!\_!\verb*&if&!\_!\verb*&exist:n&}|hdclindex{68}{main}}{61}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{69}{}}{61}
\indexentry{counter commands:=\pkg{counter} commands:>counter_sub:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&sub:nn&}|hdclindex{52}{usage}}{2}
\indexentry{counter commands:=\pkg{counter} commands:>counter_if_exist:nTF={\verbatim@font !\verb*&!\counter&!\_!\verb*&if&!\_!\verb*&exist:nTF&}|hdclindex{71}{}}{63}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new_sub:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&new&!\_!\verb*&sub:nn&}|hdclindex{73}{}}{65}
\indexentry{counter commands:=\pkg{counter} commands:>counter_alias:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&alias:nn&}|hdclindex{76}{main}}{68}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set_eq:NN={\verbatim@font !\verb*&!\cs&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{77}{}}{68}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{78}{}}{69}
\indexentry{indocument={\verbatim@font !\verb*&indocument&}|hdclindex{79}{main}}{70}
\indexentry{insection={\verbatim@font !\verb*&insection&}|hdclindex{79}{main}}{70}
\indexentry{insubsection={\verbatim@font !\verb*&insubsection&}|hdclindex{79}{main}}{70}
\indexentry{inchapter={\verbatim@font !\verb*&inchapter&}|hdclindex{79}{main}}{70}
\indexentry{inpart={\verbatim@font !\verb*&inpart&}|hdclindex{79}{main}}{70}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new:n={\verbatim@font !\verb*&!\counter&!\_!\verb*&new:n&}|hdclindex{80}{}}{70}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_counter_sub_if_exist:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&counter&!\_!\verb*&sub&!\_!\verb*&if&!\_!\verb*&exist:n&}|hdclindex{81}{}}{71}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_counter_sub_if_exist:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&counter&!\_!\verb*&sub&!\_!\verb*&if&!\_!\verb*&exist:n&}|hdclindex{82}{}}{72}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_counter_sub_if_exist:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&counter&!\_!\verb*&sub&!\_!\verb*&if&!\_!\verb*&exist:n&}|hdclindex{83}{}}{73}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_counter_sub_if_exist:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&counter&!\_!\verb*&sub&!\_!\verb*&if&!\_!\verb*&exist:n&}|hdclindex{84}{}}{74}
\indexentry{toplevel={\verbatim@font !\verb*&toplevel&}|hdclindex{85}{main}}{75}
\indexentry{sublevel={\verbatim@font !\verb*&sublevel&}|hdclindex{85}{main}}{75}
\indexentry{subsublevel={\verbatim@font !\verb*&subsublevel&}|hdclindex{85}{main}}{75}
\indexentry{subsubsublevel={\verbatim@font !\verb*&subsubsublevel&}|hdclindex{85}{main}}{75}
\indexentry{counter commands:=\pkg{counter} commands:>counter_alias:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&alias:nn&}|hdclindex{86}{}}{75}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new_sub:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&new&!\_!\verb*&sub:nn&}|hdclindex{87}{}}{76}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new_sub:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&new&!\_!\verb*&sub:nn&}|hdclindex{88}{}}{77}
\indexentry{counter commands:=\pkg{counter} commands:>counter_new_sub:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&new&!\_!\verb*&sub:nn&}|hdclindex{89}{}}{78}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_style_str={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&fancythm&!\_!\verb*&style&!\_!\verb*&str&}|hdclindex{90}{main}}{79}
\indexentry{str commands:=\pkg{str} commands:>str_new:N={\verbatim@font !\verb*&!\str&!\_!\verb*&new:N&}|hdclindex{91}{}}{79}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_translator_bool={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&fancythm&!\_!\verb*&translator&!\_!\verb*&bool&}|hdclindex{92}{main}}{80}
\indexentry{bool commands:=\pkg{bool} commands:>bool_new:N={\verbatim@font !\verb*&!\bool&!\_!\verb*&new:N&}|hdclindex{93}{}}{80}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_generate_defaults_bool={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&fancythm&!\_!\verb*&generate&!\_!\verb*&defaults&!\_!\verb*&bool&}|hdclindex{94}{main}}{81}
\indexentry{bool commands:=\pkg{bool} commands:>bool_new:N={\verbatim@font !\verb*&!\bool&!\_!\verb*&new:N&}|hdclindex{95}{}}{81}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{96}{main}}{82}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_mdframed_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&mdframed&!\_!\verb*&tl&}|hdclindex{96}{main}}{82}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_style_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&style&!\_!\verb*&tl&}|hdclindex{96}{main}}{82}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{96}{main}}{82}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{96}{main}}{82}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{97}{}}{82}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{98}{}}{83}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{99}{}}{84}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{100}{}}{85}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{101}{}}{86}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{102}{main}}{87}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{102}{main}}{87}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{102}{main}}{87}
\indexentry{counter commands:=\pkg{counter} commands:>counter_alias:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&alias:nn&}|hdclindex{76}{usage}}{3}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{103}{}}{87}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{104}{}}{88}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{105}{}}{89}
\indexentry{keys commands:=\pkg{keys} commands:>keys_define:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&define:nn&}|hdclindex{106}{}}{90}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_translator_bool={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&fancythm&!\_!\verb*&translator&!\_!\verb*&bool&}|hdclindex{108}{}}{92}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_generate_defaults_bool={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&fancythm&!\_!\verb*&generate&!\_!\verb*&defaults&!\_!\verb*&bool&}|hdclindex{110}{}}{94}
\indexentry{counter commands:=\pkg{counter} commands:>counter_alias:nn={\verbatim@font !\verb*&!\counter&!\_!\verb*&alias:nn&}|hdclindex{115}{}}{99}
\indexentry{tl commands:=\pkg{tl} commands:>tl_use:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&use:N&}|hdclindex{115}{}}{99}
\indexentry{keys commands:=\pkg{keys} commands:>keys_choice_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&keys&!\_!\verb*&choice&!\_!\verb*&tl&}|hdclindex{115}{}}{99}
\indexentry{str commands:=\pkg{str} commands:>str_set:Nn={\verbatim@font !\verb*&!\str&!\_!\verb*&set:Nn&}|hdclindex{121}{}}{105}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_style_str={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&fancythm&!\_!\verb*&style&!\_!\verb*&str&}|hdclindex{121}{}}{105}
\indexentry{tl commands:=\pkg{tl} commands:>tl_use:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&use:N&}|hdclindex{121}{}}{105}
\indexentry{keys commands:=\pkg{keys} commands:>keys_choice_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&keys&!\_!\verb*&choice&!\_!\verb*&tl&}|hdclindex{121}{}}{105}
\indexentry{keys commands:=\pkg{keys} commands:>keys_define:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&define:nn&}|hdclindex{125}{}}{109}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{127}{}}{111}
\indexentry{tl commands:=\pkg{tl} commands:>novalue_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&novalue&!\_!\verb*&tl&}|hdclindex{128}{}}{112}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_mdframed_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&mdframed&!\_!\verb*&tl&}|hdclindex{129}{}}{113}
\indexentry{tl commands:=\pkg{tl} commands:>novalue_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&novalue&!\_!\verb*&tl&}|hdclindex{130}{}}{114}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_style_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&style&!\_!\verb*&tl&}|hdclindex{131}{}}{115}
\indexentry{tl commands:=\pkg{tl} commands:>novalue_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&novalue&!\_!\verb*&tl&}|hdclindex{132}{}}{116}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{133}{}}{117}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{135}{}}{119}
\indexentry{keys commands:=\pkg{keys} commands:>keys_set:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&set:nn&}|hdclindex{138}{}}{122}
\indexentry{ProcessKeysOptions={\verbatim@font !\verb*&!\ProcessKeysOptions&}|hdclindex{139}{}}{123}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:NTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:NTF&}|hdclindex{140}{}}{124}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_translator_bool={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&fancythm&!\_!\verb*&translator&!\_!\verb*&bool&}|hdclindex{140}{}}{124}
\indexentry{RequirePackage={\verbatim@font !\verb*&!\RequirePackage&}|hdclindex{142}{}}{126}
\indexentry{usedictionary={\verbatim@font !\verb*&!\usedictionary&}|hdclindex{143}{}}{127}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set_eq:NN={\verbatim@font !\verb*&!\cs&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{144}{}}{128}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_translate:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&translate:n&}|hdclindex{144}{}}{128}
\indexentry{translate={\verbatim@font !\verb*&!\translate&}|hdclindex{144}{}}{128}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set_eq:NN={\verbatim@font !\verb*&!\cs&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{147}{}}{131}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_translate:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&translate:n&}|hdclindex{147}{}}{131}
\indexentry{use commands:=\pkg{use} commands:>use:n={\verbatim@font !\verb*&!\use:n&}|hdclindex{147}{}}{131}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_set_normalized_keys:nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nn&}|hdclindex{149}{main}}{133}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{150}{}}{133}
\indexentry{keys commands:=\pkg{keys} commands:>keys_set:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&set:nn&}|hdclindex{152}{}}{135}
\indexentry{keys commands:=\pkg{keys} commands:>keys_set:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&set:nn&}|hdclindex{153}{}}{136}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set_eq:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{154}{}}{137}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{154}{}}{137}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{154}{}}{137}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set_eq:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{155}{}}{138}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{155}{}}{138}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{155}{}}{138}
\indexentry{tl commands:=\pkg{tl} commands:>tl_if_eq:NnTF={\verbatim@font !\verb*&!\tl&!\_!\verb*&if&!\_!\verb*&eq:NnTF&}|hdclindex{156}{}}{139}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_mdframed_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&mdframed&!\_!\verb*&tl&}|hdclindex{156}{}}{139}
\indexentry{tl commands:=\pkg{tl} commands:>novalue_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&novalue&!\_!\verb*&tl&}|hdclindex{156}{}}{139}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{158}{}}{141}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{158}{}}{141}
\indexentry{tl commands:=\pkg{tl} commands:>tl_use:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&use:N&}|hdclindex{160}{}}{143}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_mdframed_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&mdframed&!\_!\verb*&tl&}|hdclindex{160}{}}{143}
\indexentry{tl commands:=\pkg{tl} commands:>tl_if_eq:NnTF={\verbatim@font !\verb*&!\tl&!\_!\verb*&if&!\_!\verb*&eq:NnTF&}|hdclindex{163}{}}{146}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_style_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&style&!\_!\verb*&tl&}|hdclindex{163}{}}{146}
\indexentry{tl commands:=\pkg{tl} commands:>novalue_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&novalue&!\_!\verb*&tl&}|hdclindex{163}{}}{146}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{165}{}}{148}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{165}{}}{148}
\indexentry{tl commands:=\pkg{tl} commands:>tl_use:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&use:N&}|hdclindex{167}{}}{150}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_style_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&style&!\_!\verb*&tl&}|hdclindex{167}{}}{150}
\indexentry{tl commands:=\pkg{tl} commands:>tl_if_eq:NnTF={\verbatim@font !\verb*&!\tl&!\_!\verb*&if&!\_!\verb*&eq:NnTF&}|hdclindex{170}{}}{153}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{170}{}}{153}
\indexentry{tl commands:=\pkg{tl} commands:>novalue_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&novalue&!\_!\verb*&tl&}|hdclindex{170}{}}{153}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&set:Nn&}|hdclindex{172}{}}{155}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{172}{}}{155}
\indexentry{text commands:=\pkg{text} commands:>text_titlecase_first:n={\verbatim@font !\verb*&!\text&!\_!\verb*&titlecase&!\_!\verb*&first:n&}|hdclindex{174}{}}{157}
\indexentry{tl commands:=\pkg{tl} commands:>tl_trim_spaces:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&trim&!\_!\verb*&spaces:n&}|hdclindex{174}{}}{157}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set_eq:NN={\verbatim@font !\verb*&!\tl&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{178}{}}{161}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{178}{}}{161}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_key_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&key&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{178}{}}{161}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&set:Nn&}|hdclindex{180}{}}{163}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{180}{}}{163}
\indexentry{exp commands:=\pkg{exp} commands:>exp_not:N={\verbatim@font !\verb*&!\exp&!\_!\verb*&not:N&}|hdclindex{182}{}}{165}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_translate:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&translate:n&}|hdclindex{182}{}}{165}
\indexentry{tl commands:=\pkg{tl} commands:>tl_use:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&use:N&}|hdclindex{182}{}}{165}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{182}{}}{165}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_translate:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&translate:n&}|hdclindex{139}{usage}}{5}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_set_normalized_keys:nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nn&}|hdclindex{149}{usage}}{5}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{185}{main}}{168}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{186}{}}{168}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&set:Npn&}|hdclindex{188}{}}{170}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{188}{}}{170}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Nn&}|hdclindex{190}{}}{172}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:nN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:nN&}|hdclindex{195}{}}{177}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{195}{}}{177}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_new_theorem:nnnn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&new&!\_!\verb*&theorem:nnnn&}|hdclindex{197}{main}}{179}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_theorem:nnnn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&theorem:nnnn&}|hdclindex{197}{main}}{179}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{198}{}}{179}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{202}{}}{183}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{203}{}}{184}
\indexentry{IfBooleanT={\verbatim@font !\verb*&!\IfBooleanT&}|hdclindex{207}{}}{188}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_theorem_to_group:n={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:n&}|hdclindex{209}{}}{190}
\indexentry{IfBooleanT={\verbatim@font !\verb*&!\IfBooleanT&}|hdclindex{211}{}}{192}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_theorem_to_group:n={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:n&}|hdclindex{213}{}}{194}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{218}{}}{199}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{219}{}}{200}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_new_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&new&!\_!\verb*&theorem:nn&}|hdclindex{220}{main}}{201}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{221}{}}{201}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{185}{usage}}{6}
\indexentry{declarator={\verbatim@font !\verb*&!\declarator&}|hdclindex{185}{usage}}{6}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_new_theorem:nnnn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&new&!\_!\verb*&theorem:nnnn&}|hdclindex{197}{usage}}{6}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_set_normalized_keys:nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nn&}|hdclindex{225}{}}{205}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{226}{}}{206}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{228}{}}{208}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{229}{}}{209}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{230}{}}{210}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_new_document_command:Nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&new&!\_!\verb*&document&!\_!\verb*&command:Nnn&}|hdclindex{232}{main}}{212}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{233}{}}{212}
\indexentry{NewDocumentCommand={\verbatim@font !\verb*&!\NewDocumentCommand&}|hdclindex{235}{}}{214}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{237}{}}{216}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_wrap_multiple_document:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&wrap&!\_!\verb*&multiple&!\_!\verb*&document:nnnn&}|hdclindex{238}{main}}{217}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{239}{}}{217}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&set:Npn&}|hdclindex{241}{}}{219}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{241}{}}{219}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&set:Nn&}|hdclindex{243}{}}{221}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_Declarator:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&Declarator:&}|hdclindex{243}{}}{221}
\indexentry{text commands:=\pkg{text} commands:>text_titlecase_first:n={\verbatim@font !\verb*&!\text&!\_!\verb*&titlecase&!\_!\verb*&first:n&}|hdclindex{243}{}}{221}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_new_document_command:Nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&new&!\_!\verb*&document&!\_!\verb*&command:Nnn&}|hdclindex{244}{}}{222}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:nN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:nN&}|hdclindex{246}{}}{224}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{246}{}}{224}
\indexentry{NewFancyTheorem={\verbatim@font !\verb*&!\NewFancyTheorem&}|hdclindex{248}{main}}{226}
\indexentry{ProvideFancyTheorem={\verbatim@font !\verb*&!\ProvideFancyTheorem&}|hdclindex{248}{main}}{226}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_wrap_multiple_document:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&wrap&!\_!\verb*&multiple&!\_!\verb*&document:nnnn&}|hdclindex{249}{}}{226}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_Declarator:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&Declarator:&}|hdclindex{251}{}}{228}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{254}{}}{231}
\indexentry{star={\verbatim@font !\verb*&star&}|hdclindex{256}{main}}{233}
\indexentry{dagger={\verbatim@font !\verb*&dagger&}|hdclindex{256}{main}}{233}
\indexentry{big={\verbatim@font !\verb*&big&}|hdclindex{256}{main}}{233}
\indexentry{small={\verbatim@font !\verb*&small&}|hdclindex{256}{main}}{233}
\indexentry{tiny={\verbatim@font !\verb*&tiny&}|hdclindex{256}{main}}{233}
\indexentry{custom={\verbatim@font !\verb*&custom&}|hdclindex{256}{main}}{233}
\indexentry{fanythm commands:=\pkg{fanythm} commands:>fanythm_new_theorem:nn={\verbatim@font !\verb*&!\fanythm&!\_!\verb*&new&!\_!\verb*&theorem:nn&}|hdclindex{220}{usage}}{7}
\indexentry{NewDocumentCommand={\verbatim@font !\verb*&!\NewDocumentCommand&}|hdclindex{232}{usage}}{7}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_wrap_multiple_document:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&wrap&!\_!\verb*&multiple&!\_!\verb*&document:nnnn&}|hdclindex{238}{usage}}{7}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{238}{usage}}{7}
\indexentry{declarator={\verbatim@font !\verb*&!\declarator&}|hdclindex{238}{usage}}{7}
\indexentry{Declarator={\verbatim@font !\verb*&!\Declarator&}|hdclindex{238}{usage}}{7}
\indexentry{NewFancyTheorem={\verbatim@font !\verb*&!\NewFancyTheorem&}|hdclindex{248}{usage}}{7}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{257}{}}{233}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{258}{}}{234}
\indexentry{dagger={\verbatim@font !\verb*&!\dagger&}|hdclindex{258}{}}{234}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{259}{}}{235}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{260}{}}{236}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{261}{}}{237}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{262}{}}{238}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_parent:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&parent:nn&}|hdclindex{263}{}}{239}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_parent:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&parent:nn&}|hdclindex{264}{}}{240}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{265}{}}{241}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{266}{}}{242}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{267}{}}{243}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{268}{}}{244}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{269}{}}{245}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{270}{}}{246}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_add_provided_theorem_to_group:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&add&!\_!\verb*&provided&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:nn&}|hdclindex{271}{main}}{247}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{272}{}}{247}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist:NTF={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist:NTF&}|hdclindex{274}{}}{249}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{276}{}}{251}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&left:Nn&}|hdclindex{278}{}}{253}
\indexentry{AddProvidedFancyTheoremToGroup={\verbatim@font !\verb*&!\AddProvidedFancyTheoremToGroup&}|hdclindex{280}{main}}{255}
\indexentry{NewDocumentCommand={\verbatim@font !\verb*&!\NewDocumentCommand&}|hdclindex{281}{}}{255}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_add_provided_theorem_to_group:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&add&!\_!\verb*&provided&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:nn&}|hdclindex{283}{}}{257}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_provide_package_theorem:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&provide&!\_!\verb*&package&!\_!\verb*&theorem:nnn&}|hdclindex{285}{main}}{259}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{286}{}}{259}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_set_normalized_keys:nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nn&}|hdclindex{288}{}}{261}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist:NTF={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist:NTF&}|hdclindex{289}{}}{262}
\indexentry{clist commands:=\pkg{clist} commands:>clist_concat:NNN={\verbatim@font !\verb*&!\clist&!\_!\verb*&concat:NNN&}|hdclindex{291}{}}{264}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_provide_package_theorem:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&provide&!\_!\verb*&package&!\_!\verb*&theorem:nnn&}|hdclindex{285}{usage}}{8}
\indexentry{clist commands:=\pkg{clist} commands:>clist_if_in:NnTF={\verbatim@font !\verb*&!\clist&!\_!\verb*&if&!\_!\verb*&in:NnTF&}|hdclindex{296}{}}{269}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{296}{}}{269}
\indexentry{clist commands:=\pkg{clist} commands:>clist_if_in:NnTF={\verbatim@font !\verb*&!\clist&!\_!\verb*&if&!\_!\verb*&in:NnTF&}|hdclindex{298}{}}{271}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{298}{}}{271}
\indexentry{clist commands:=\pkg{clist} commands:>clist_if_in:NnTF={\verbatim@font !\verb*&!\clist&!\_!\verb*&if&!\_!\verb*&in:NnTF&}|hdclindex{300}{}}{273}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{300}{}}{273}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{302}{}}{275}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{302}{}}{275}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_theorem:nnnn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&theorem:nnnn&}|hdclindex{306}{}}{279}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{308}{}}{281}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{309}{}}{282}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&fancythm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{310}{}}{283}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{312}{main}}{285}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{313}{}}{285}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_provide_package_theorem:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&provide&!\_!\verb*&package&!\_!\verb*&theorem:nnn&}|hdclindex{315}{}}{287}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{317}{main}}{289}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{318}{}}{289}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_provide_package_theorem:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&provide&!\_!\verb*&package&!\_!\verb*&theorem:nnn&}|hdclindex{320}{}}{291}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{322}{main}}{293}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{323}{}}{293}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_provide_package_theorem:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&fancythm&!\_!\verb*&provide&!\_!\verb*&package&!\_!\verb*&theorem:nnn&}|hdclindex{325}{}}{295}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:NTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:NTF&}|hdclindex{327}{}}{297}
\indexentry{fancythm internal commands:=\pkg{fancythm} internal commands:>fancythm_generate_defaults_bool={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&fancythm&!\_!\verb*&generate&!\_!\verb*&defaults&!\_!\verb*&bool&}|hdclindex{327}{}}{297}
\indexentry{AddToHook={\verbatim@font !\verb*&!\AddToHook&}|hdclindex{329}{}}{299}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{331}{}}{301}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{332}{}}{302}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{333}{}}{303}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{334}{}}{304}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{335}{}}{305}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{336}{}}{306}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{337}{}}{307}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{342}{}}{312}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_big_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&big&!\_!\verb*&theorem:nn&}|hdclindex{347}{}}{317}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{352}{}}{322}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{353}{}}{323}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{354}{}}{324}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{355}{}}{325}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{356}{}}{326}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{357}{}}{327}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{358}{}}{328}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{363}{}}{333}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_small_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&small&!\_!\verb*&theorem:nn&}|hdclindex{368}{}}{338}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{373}{}}{343}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{374}{}}{344}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{375}{}}{345}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{376}{}}{346}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{377}{}}{347}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{378}{}}{348}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{379}{}}{349}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{380}{}}{350}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{381}{}}{351}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{382}{}}{352}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{383}{}}{353}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{384}{}}{354}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{385}{}}{355}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{386}{}}{356}
\indexentry{fancythm commands:=\pkg{fancythm} commands:>fancythm_provide_tiny_theorem:nn={\verbatim@font !\verb*&!\fancythm&!\_!\verb*&provide&!\_!\verb*&tiny&!\_!\verb*&theorem:nn&}|hdclindex{387}{}}{357}

View file

@ -1,14 +0,0 @@
This is makeindex, version 2.15 [TeX Live 2020] (kpathsea + Thai support).
Scanning style file /usr/share/texlive/texmf-dist/makeindex/latex/gind.ist..........
** Input style error (file = /usr/share/texlive/texmf-dist/makeindex/latex/gind.ist, line = 70):
-- Unknown specifier lethead_prefix.
** Input style error (file = /usr/share/texlive/texmf-dist/makeindex/latex/gind.ist, line = 71):
-- Unknown specifier lethead_suffix.
** Input style error (file = /usr/share/texlive/texmf-dist/makeindex/latex/gind.ist, line = 72):
-- Unknown specifier lethead_flag.
...done (13 attributes redefined, 3 ignored).
Scanning input file fancythm.idx....done (320 entries accepted, 0 rejected).
Sorting entries.....done (2753 comparisons).
Generating output file fancythm.ind....done (376 lines written, 0 warnings).
Output written in fancythm.ind.
Transcript written in fancythm.ilg.

View file

@ -1,376 +0,0 @@
\begin{theindex}
\makeatletter\scan@allowedfalse
{\bfseries\hfil A\hfil}\nopagebreak
\item {\verbatim@font \verb*&\AddProvidedFancyTheoremToGroup&}\pfill
\hdclindex{280}{main}{255}
\item {\verbatim@font \verb*&\AddToHook&}\pfill
\hdclindex{329}{}{299}
\item {\verbatim@font \verb*&\arabic&}\pfill \hdclindex{7}{}{6}
\item \pkg{arabic} commands:\efill
\subitem {\verbatim@font \verb*&\arabic:n&}\pfill
\hdclindex{6}{main}{6}, \hdclindex{58}{}{52}
\indexspace
{\bfseries\hfil B\hfil}\nopagebreak
\item {\verbatim@font \verb*&big&}\pfill \hdclindex{256}{main}{233}
\item \pkg{bool} commands:\efill
\subitem {\verbatim@font \verb*&\bool&\_\verb*&if:NTF&}\pfill
\hdclindex{140}{}{124}, \hdclindex{327}{}{297}
\subitem {\verbatim@font \verb*&\bool&\_\verb*&new:N&}\pfill
\hdclindex{93}{}{80}, \hdclindex{95}{}{81}
\indexspace
{\bfseries\hfil C\hfil}\nopagebreak
\item \pkg{clist} commands:\efill
\subitem {\verbatim@font \verb*&\clist&\_\verb*&concat:NNN&}\pfill
\hdclindex{291}{}{264}
\subitem {\verbatim@font \verb*&\clist&\_\verb*&if&\_\verb*&in:NnTF&}\pfill
\hdclindex{296}{}{269}, \hdclindex{298}{}{271},
\hdclindex{300}{}{273}
\subitem {\verbatim@font \verb*&\clist&\_\verb*&map&\_\verb*&function:nN&}\pfill
\hdclindex{195}{}{177}, \hdclindex{246}{}{224}
\subitem {\verbatim@font \verb*&\clist&\_\verb*&new:N&}\pfill
\hdclindex{100}{}{85}, \hdclindex{101}{}{86},
\hdclindex{104}{}{88}, \hdclindex{105}{}{89},
\hdclindex{276}{}{251}
\subitem {\verbatim@font \verb*&\clist&\_\verb*&put&\_\verb*&left:Nn&}\pfill
\hdclindex{278}{}{253}
\subitem {\verbatim@font \verb*&\clist&\_\verb*&put&\_\verb*&right:Nn&}\pfill
\hdclindex{158}{}{141}, \hdclindex{165}{}{148},
\hdclindex{302}{}{275}
\subitem {\verbatim@font \verb*&\clist&\_\verb*&set&\_\verb*&eq:NN&}\pfill
\hdclindex{154}{}{137}, \hdclindex{155}{}{138}
\item \pkg{counter} commands:\efill
\subitem {\verbatim@font \verb*&\counter&\_\verb*&alias:nn&}\pfill
\hdclindex{76}{usage}{3}, \hdclindex{76}{main}{68},
\hdclindex{86}{}{75}, \hdclindex{115}{}{99}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&ensure&\_\verb*&exist:n&}\pfill
\hdclindex{34}{main}{31}, \hdclindex{49}{}{44}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&if&\_\verb*&exist:nTF&}\pfill
\hdclindex{15}{main}{14}, \hdclindex{24}{}{22},
\hdclindex{37}{}{33}, \hdclindex{71}{}{63}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&if&\_\verb*&exist:TF&}\pfill
\hdclindex{15}{main}{14}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&if&\_\verb*&exist&\_\verb*&p:n&}\pfill
\hdclindex{15}{main}{14}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&new:n&}\pfill
\hdclindex{6}{main}{6}, \hdclindex{64}{}{57},
\hdclindex{80}{}{70}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&new:nn&}\pfill
\hdclindex{6}{main}{6}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&new&\_\verb*&sub:nn&}\pfill
\hdclindex{62}{}{55}, \hdclindex{73}{}{65},
\hdclindex{87}{}{76}, \hdclindex{88}{}{77},
\hdclindex{89}{}{78}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&new&\_\verb*&sub:nn#1 #2&}\pfill
\hdclindex{61}{main}{55}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&set&\_\verb*&the:nn&}\pfill
\hdclindex{42}{main}{38}, \hdclindex{56}{}{50}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&sub:nn&}\pfill
\hdclindex{52}{usage}{2}, \hdclindex{52}{main}{47},
\hdclindex{65}{}{58}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&the:n&}\pfill
\hdclindex{42}{main}{38}, \hdclindex{58}{}{52}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&undefined&\_\verb*&error:n&}\pfill
\hdclindex{32}{main}{30}, \hdclindex{39}{}{35}
\subitem {\verbatim@font \verb*&\counter&\_\verb*&within:nn&}\pfill
\hdclindex{6}{main}{6}, \hdclindex{55}{}{49}
\item {\verbatim@font \verb*&\counterwithin&}\pfill
\hdclindex{9}{}{8}
\item \pkg{cs} commands:\efill
\subitem {\verbatim@font \verb*&\cs&\_\verb*&generate&\_\verb*&variant:Nn&}\pfill
\hdclindex{78}{}{69}, \hdclindex{218}{}{199},
\hdclindex{219}{}{200}, \hdclindex{237}{}{216}
\subitem {\verbatim@font \verb*&\cs&\_\verb*&if&\_\verb*&exist:NTF&}\pfill
\hdclindex{22}{}{20}, \hdclindex{26}{}{24},
\hdclindex{30}{}{28}, \hdclindex{274}{}{249},
\hdclindex{289}{}{262}
\subitem {\verbatim@font \verb*&\cs&\_\verb*&if&\_\verb*&exist&\_\verb*&p:N&}\pfill
\hdclindex{18}{}{16}
\subitem {\verbatim@font \verb*&\cs&\_\verb*&new:Nn&}\pfill
\hdclindex{190}{}{172}
\subitem {\verbatim@font \verb*&\cs&\_\verb*&new:Npn&}\pfill
\hdclindex{10}{}{9}, \hdclindex{16}{}{14},
\hdclindex{20}{}{18}, \hdclindex{24}{}{22},
\hdclindex{28}{}{26}, \hdclindex{35}{}{31},
\hdclindex{43}{}{38}, \hdclindex{47}{}{42},
\hdclindex{53}{}{47}, \hdclindex{62}{}{55},
\hdclindex{69}{}{61}, \hdclindex{150}{}{133},
\hdclindex{186}{}{168}, \hdclindex{233}{}{212},
\hdclindex{239}{}{217}, \hdclindex{272}{}{247},
\hdclindex{286}{}{259}, \hdclindex{313}{}{285},
\hdclindex{318}{}{289}, \hdclindex{323}{}{293}
\subitem {\verbatim@font \verb*&\cs&\_\verb*&set:Nn&}\pfill
\hdclindex{243}{}{221}
\subitem {\verbatim@font \verb*&\cs&\_\verb*&set:Npn&}\pfill
\hdclindex{188}{}{170}, \hdclindex{241}{}{219}
\subitem {\verbatim@font \verb*&\cs&\_\verb*&set&\_\verb*&eq:NN&}\pfill
\hdclindex{7}{}{6}, \hdclindex{8}{}{7},
\hdclindex{9}{}{8}, \hdclindex{33}{}{30},
\hdclindex{77}{}{68}, \hdclindex{144}{}{128},
\hdclindex{147}{}{131}
\item {\verbatim@font \verb*&custom&}\pfill
\hdclindex{256}{main}{233}
\indexspace
{\bfseries\hfil D\hfil}\nopagebreak
\item {\verbatim@font \verb*&\dagger&}\pfill \hdclindex{258}{}{234}
\item {\verbatim@font \verb*&dagger&}\pfill
\hdclindex{256}{main}{233}
\item {\verbatim@font \verb*&\Declarator&}\pfill
\hdclindex{238}{usage}{7}
\item {\verbatim@font \verb*&\declarator&}\pfill
\hdclindex{185}{usage}{6}, \hdclindex{238}{usage}{7}
\item {\verbatim@font \verb*&\DeclareTheoremGroupRule&}\pfill
\hdclindex{265}{}{241}, \hdclindex{266}{}{242},
\hdclindex{267}{}{243}, \hdclindex{268}{}{244},
\hdclindex{269}{}{245}, \hdclindex{270}{}{246}
\indexspace
{\bfseries\hfil E\hfil}\nopagebreak
\item \pkg{exp} commands:\efill
\subitem {\verbatim@font \verb*&\exp&\_\verb*&args:Nc&}\pfill
\hdclindex{50}{}{45}
\subitem {\verbatim@font \verb*&\exp&\_\verb*&not:N&}\pfill
\hdclindex{182}{}{165}
\indexspace
{\bfseries\hfil F\hfil}\nopagebreak
\item \pkg{fancythm} commands:\efill
\subitem {\verbatim@font \verb*&\fancythm&\_\verb*&add&\_\verb*&provided&\_\verb*&theorem&\_\verb*&to&\_\verb*&group:nn&}\pfill
\hdclindex{271}{main}{247}, \hdclindex{283}{}{257}
\subitem {\verbatim@font \verb*&\fancythm&\_\verb*&new&\_\verb*&theorem:nn&}\pfill
\hdclindex{220}{main}{201}
\subitem {\verbatim@font \verb*&\fancythm&\_\verb*&new&\_\verb*&theorem:nnnn&}\pfill
\hdclindex{197}{usage}{6}, \hdclindex{197}{main}{179}
\subitem {\verbatim@font \verb*&\fancythm&\_\verb*&provide&\_\verb*&big&\_\verb*&theorem:nn&}\pfill
\hdclindex{312}{main}{285}, \hdclindex{331}{}{301},
\hdclindex{332}{}{302}, \hdclindex{333}{}{303},
\hdclindex{334}{}{304}, \hdclindex{335}{}{305},
\hdclindex{336}{}{306}, \hdclindex{337}{}{307},
\hdclindex{342}{}{312}, \hdclindex{347}{}{317}
\subitem {\verbatim@font \verb*&\fancythm&\_\verb*&provide&\_\verb*&small&\_\verb*&theorem:nn&}\pfill
\hdclindex{317}{main}{289}, \hdclindex{352}{}{322},
\hdclindex{353}{}{323}, \hdclindex{354}{}{324},
\hdclindex{355}{}{325}, \hdclindex{356}{}{326},
\hdclindex{357}{}{327}, \hdclindex{358}{}{328},
\hdclindex{363}{}{333}, \hdclindex{368}{}{338}
\subitem {\verbatim@font \verb*&\fancythm&\_\verb*&provide&\_\verb*&theorem:nnnn&}\pfill
\hdclindex{197}{main}{179}, \hdclindex{306}{}{279}
\subitem {\verbatim@font \verb*&\fancythm&\_\verb*&provide&\_\verb*&tiny&\_\verb*&theorem:nn&}\pfill
\hdclindex{322}{main}{293}, \hdclindex{373}{}{343},
\hdclindex{374}{}{344}, \hdclindex{375}{}{345},
\hdclindex{376}{}{346}, \hdclindex{377}{}{347},
\hdclindex{378}{}{348}, \hdclindex{379}{}{349},
\hdclindex{380}{}{350}, \hdclindex{381}{}{351},
\hdclindex{382}{}{352}, \hdclindex{383}{}{353},
\hdclindex{384}{}{354}, \hdclindex{385}{}{355},
\hdclindex{386}{}{356}, \hdclindex{387}{}{357}
\item \pkg{fancythm} internal commands:\efill
\subitem {\verbatim@font \verb*&\&\_\_\verb*&fancythm&\_\verb*&counter&\_\verb*&sub&\_\verb*&if&\_\verb*&exist:n&}\pfill
\hdclindex{68}{main}{61}, \hdclindex{81}{}{71},
\hdclindex{82}{}{72}, \hdclindex{83}{}{73},
\hdclindex{84}{}{74}
\subitem {\verbatim@font \verb*&\&\_\_\verb*&fancythm&\_\verb*&Declarator:&}\pfill
\hdclindex{243}{}{221}, \hdclindex{251}{}{228}
\subitem {\verbatim@font \verb*&\g&\_\_\verb*&fancythm&\_\verb*&generate&\_\verb*&defaults&\_\verb*&bool&}\pfill
\hdclindex{94}{main}{81}, \hdclindex{110}{}{94},
\hdclindex{327}{}{297}
\subitem {\verbatim@font \verb*&\l&\_\_\verb*&fancythm&\_\verb*&group&\_\verb*&clist&}\pfill
\hdclindex{102}{main}{87}, \hdclindex{154}{}{137},
\hdclindex{228}{}{208}, \hdclindex{296}{}{269},
\hdclindex{298}{}{271}, \hdclindex{300}{}{273},
\hdclindex{302}{}{275}, \hdclindex{308}{}{281}
\subitem {\verbatim@font \verb*&\l&\_\_\verb*&fancythm&\_\verb*&key&\_\verb*&group&\_\verb*&clist&}\pfill
\hdclindex{96}{main}{82}, \hdclindex{133}{}{117},
\hdclindex{154}{}{137}
\subitem {\verbatim@font \verb*&\l&\_\_\verb*&fancythm&\_\verb*&key&\_\verb*&mdframed&\_\verb*&tl&}\pfill
\hdclindex{96}{main}{82}, \hdclindex{129}{}{113},
\hdclindex{156}{}{139}, \hdclindex{160}{}{143}
\subitem {\verbatim@font \verb*&\l&\_\_\verb*&fancythm&\_\verb*&key&\_\verb*&name&\_\verb*&tl&}\pfill
\hdclindex{96}{main}{82}, \hdclindex{127}{}{111},
\hdclindex{170}{}{153}, \hdclindex{178}{}{161}
\subitem {\verbatim@font \verb*&\l&\_\_\verb*&fancythm&\_\verb*&key&\_\verb*&style&\_\verb*&tl&}\pfill
\hdclindex{96}{main}{82}, \hdclindex{131}{}{115},
\hdclindex{163}{}{146}, \hdclindex{167}{}{150}
\subitem {\verbatim@font \verb*&\l&\_\_\verb*&fancythm&\_\verb*&key&\_\verb*&thmtools&\_\verb*&clist&}\pfill
\hdclindex{96}{main}{82}, \hdclindex{135}{}{119},
\hdclindex{155}{}{138}
\subitem {\verbatim@font \verb*&\&\_\_\verb*&fancythm&\_\verb*&map&\_\verb*&aux:n&}\pfill
\hdclindex{188}{}{170}, \hdclindex{195}{}{177},
\hdclindex{241}{}{219}, \hdclindex{246}{}{224}
\subitem {\verbatim@font \verb*&\l&\_\_\verb*&fancythm&\_\verb*&name&\_\verb*&tl&}\pfill
\hdclindex{102}{main}{87}, \hdclindex{172}{}{155},
\hdclindex{178}{}{161}, \hdclindex{180}{}{163},
\hdclindex{182}{}{165}, \hdclindex{229}{}{209},
\hdclindex{309}{}{282}
\subitem {\verbatim@font \verb*&\&\_\_\verb*&fancythm&\_\verb*&new&\_\verb*&document&\_\verb*&command:Nnn&}\pfill
\hdclindex{232}{main}{212}, \hdclindex{244}{}{222}
\subitem {\verbatim@font \verb*&\&\_\_\verb*&fancythm&\_\verb*&provide&\_\verb*&package&\_\verb*&theorem:nnn&}\pfill
\hdclindex{285}{usage}{8}, \hdclindex{285}{main}{259},
\hdclindex{315}{}{287}, \hdclindex{320}{}{291},
\hdclindex{325}{}{295}
\subitem {\verbatim@font \verb*&\&\_\_\verb*&fancythm&\_\verb*&set&\_\verb*&normalized&\_\verb*&keys:nn&}\pfill
\hdclindex{149}{usage}{5}, \hdclindex{149}{main}{133},
\hdclindex{225}{}{205}, \hdclindex{288}{}{261}
\subitem {\verbatim@font \verb*&\g&\_\_\verb*&fancythm&\_\verb*&style&\_\verb*&str&}\pfill
\hdclindex{90}{main}{79}, \hdclindex{121}{}{105}
\subitem {\verbatim@font \verb*&\l&\_\_\verb*&fancythm&\_\verb*&thmtools&\_\verb*&clist&}\pfill
\hdclindex{102}{main}{87}, \hdclindex{155}{}{138},
\hdclindex{158}{}{141}, \hdclindex{165}{}{148},
\hdclindex{230}{}{210}, \hdclindex{310}{}{283}
\subitem {\verbatim@font \verb*&\&\_\_\verb*&fancythm&\_\verb*&translate:n&}\pfill
\hdclindex{139}{usage}{5}, \hdclindex{144}{}{128},
\hdclindex{147}{}{131}, \hdclindex{182}{}{165}
\subitem {\verbatim@font \verb*&\g&\_\_\verb*&fancythm&\_\verb*&translator&\_\verb*&bool&}\pfill
\hdclindex{92}{main}{80}, \hdclindex{108}{}{92},
\hdclindex{140}{}{124}
\subitem {\verbatim@font \verb*&\&\_\_\verb*&fancythm&\_\verb*&wrap&\_\verb*&multiple:nnn&}\pfill
\hdclindex{185}{usage}{6}, \hdclindex{238}{usage}{7},
\hdclindex{185}{main}{168}, \hdclindex{198}{}{179},
\hdclindex{221}{}{201}
\subitem {\verbatim@font \verb*&\&\_\_\verb*&fancythm&\_\verb*&wrap&\_\verb*&multiple&\_\verb*&document:nnnn&}\pfill
\hdclindex{238}{usage}{7}, \hdclindex{238}{main}{217},
\hdclindex{249}{}{226}
\item \pkg{fanythm} commands:\efill
\subitem {\verbatim@font \verb*&\fanythm&\_\verb*&new&\_\verb*&theorem:nn&}\pfill
\hdclindex{220}{usage}{7}
\indexspace
{\bfseries\hfil G\hfil}\nopagebreak
\item \pkg{groupthm} commands:\efill
\subitem {\verbatim@font \verb*&\groupthm&\_\verb*&add&\_\verb*&parent:nn&}\pfill
\hdclindex{263}{}{239}, \hdclindex{264}{}{240}
\subitem {\verbatim@font \verb*&\groupthm&\_\verb*&add&\_\verb*&theorem&\_\verb*&to&\_\verb*&group:n&}\pfill
\hdclindex{209}{}{190}, \hdclindex{213}{}{194}
\subitem {\verbatim@font \verb*&\groupthm&\_\verb*&new&\_\verb*&group:nnnnn&}\pfill
\hdclindex{257}{}{233}, \hdclindex{258}{}{234},
\hdclindex{259}{}{235}, \hdclindex{260}{}{236},
\hdclindex{261}{}{237}, \hdclindex{262}{}{238}
\indexspace
{\bfseries\hfil I\hfil}\nopagebreak
\item {\verbatim@font \verb*&\IfBooleanT&}\pfill
\hdclindex{207}{}{188}, \hdclindex{211}{}{192}
\item {\verbatim@font \verb*&inchapter&}\pfill
\hdclindex{79}{main}{70}
\item {\verbatim@font \verb*&indocument&}\pfill
\hdclindex{79}{main}{70}
\item {\verbatim@font \verb*&inpart&}\pfill \hdclindex{79}{main}{70}
\item {\verbatim@font \verb*&insection&}\pfill
\hdclindex{79}{main}{70}
\item {\verbatim@font \verb*&insubsection&}\pfill
\hdclindex{79}{main}{70}
\indexspace
{\bfseries\hfil K\hfil}\nopagebreak
\item \pkg{keys} commands:\efill
\subitem {\verbatim@font \verb*&\l&\_\verb*&keys&\_\verb*&choice&\_\verb*&tl&}\pfill
\hdclindex{115}{}{99}, \hdclindex{121}{}{105}
\subitem {\verbatim@font \verb*&\keys&\_\verb*&define:nn&}\pfill
\hdclindex{106}{}{90}, \hdclindex{125}{}{109}
\subitem {\verbatim@font \verb*&\keys&\_\verb*&set:nn&}\pfill
\hdclindex{138}{}{122}, \hdclindex{152}{}{135},
\hdclindex{153}{}{136}
\indexspace
{\bfseries\hfil N\hfil}\nopagebreak
\item {\verbatim@font \verb*&\newcounter&}\pfill \hdclindex{8}{}{7}
\item {\verbatim@font \verb*&\NewDocumentCommand&}\pfill
\hdclindex{232}{usage}{7}, \hdclindex{235}{}{214},
\hdclindex{281}{}{255}
\item {\verbatim@font \verb*&\NewFancyTheorem&}\pfill
\hdclindex{248}{usage}{7}, \hdclindex{248}{main}{226}
\indexspace
{\bfseries\hfil P\hfil}\nopagebreak
\item {\verbatim@font \verb*&\ProcessKeysOptions&}\pfill
\hdclindex{139}{}{123}
\item {\verbatim@font \verb*&\ProvideFancyTheorem&}\pfill
\hdclindex{248}{main}{226}
\indexspace
{\bfseries\hfil R\hfil}\nopagebreak
\item {\verbatim@font \verb*&\renewcommand&}\pfill
\hdclindex{50}{}{45}
\item {\verbatim@font \verb*&\RequirePackage&}\pfill
\hdclindex{3}{}{3}, \hdclindex{4}{}{4},
\hdclindex{5}{}{5}, \hdclindex{142}{}{126}
\indexspace
{\bfseries\hfil S\hfil}\nopagebreak
\item {\verbatim@font \verb*&small&}\pfill \hdclindex{256}{main}{233}
\item {\verbatim@font \verb*&star&}\pfill \hdclindex{256}{main}{233}
\item \pkg{str} commands:\efill
\subitem {\verbatim@font \verb*&\str&\_\verb*&new:N&}\pfill
\hdclindex{91}{}{79}
\subitem {\verbatim@font \verb*&\str&\_\verb*&set:Nn&}\pfill
\hdclindex{121}{}{105}
\item {\verbatim@font \verb*&sublevel&}\pfill
\hdclindex{85}{main}{75}
\item {\verbatim@font \verb*&subsublevel&}\pfill
\hdclindex{85}{main}{75}
\item {\verbatim@font \verb*&subsubsublevel&}\pfill
\hdclindex{85}{main}{75}
\indexspace
{\bfseries\hfil T\hfil}\nopagebreak
\item \pkg{text} commands:\efill
\subitem {\verbatim@font \verb*&\text&\_\verb*&titlecase&\_\verb*&first:n&}\pfill
\hdclindex{174}{}{157}, \hdclindex{243}{}{221}
\item {\verbatim@font \verb*&tiny&}\pfill \hdclindex{256}{main}{233}
\item \pkg{tl} commands:\efill
\subitem {\verbatim@font \verb*&\c&\_\verb*&novalue&\_\verb*&tl&}\pfill
\hdclindex{128}{}{112}, \hdclindex{130}{}{114},
\hdclindex{132}{}{116}, \hdclindex{156}{}{139},
\hdclindex{163}{}{146}, \hdclindex{170}{}{153}
\subitem {\verbatim@font \verb*&\tl&\_\verb*&if&\_\verb*&eq:NnTF&}\pfill
\hdclindex{156}{}{139}, \hdclindex{163}{}{146},
\hdclindex{170}{}{153}
\subitem {\verbatim@font \verb*&\tl&\_\verb*&new:N&}\pfill
\hdclindex{97}{}{82}, \hdclindex{98}{}{83},
\hdclindex{99}{}{84}, \hdclindex{103}{}{87}
\subitem {\verbatim@font \verb*&\tl&\_\verb*&set:Nn&}\pfill
\hdclindex{172}{}{155}, \hdclindex{180}{}{163}
\subitem {\verbatim@font \verb*&\tl&\_\verb*&set&\_\verb*&eq:NN&}\pfill
\hdclindex{178}{}{161}
\subitem {\verbatim@font \verb*&\tl&\_\verb*&trim&\_\verb*&spaces:n&}\pfill
\hdclindex{174}{}{157}
\subitem {\verbatim@font \verb*&\tl&\_\verb*&use:N&}\pfill
\hdclindex{115}{}{99}, \hdclindex{121}{}{105},
\hdclindex{160}{}{143}, \hdclindex{167}{}{150},
\hdclindex{182}{}{165}
\item {\verbatim@font \verb*&toplevel&}\pfill
\hdclindex{85}{main}{75}
\item {\verbatim@font \verb*&\translate&}\pfill
\hdclindex{144}{}{128}
\indexspace
{\bfseries\hfil U\hfil}\nopagebreak
\item \pkg{use} commands:\efill
\subitem {\verbatim@font \verb*&\use:N&}\pfill
\hdclindex{45}{}{40}, \hdclindex{202}{}{183},
\hdclindex{203}{}{184}, \hdclindex{226}{}{206},
\hdclindex{254}{}{231}
\subitem {\verbatim@font \verb*&\use:n&}\pfill
\hdclindex{147}{}{131}
\item {\verbatim@font \verb*&\usedictionary&}\pfill
\hdclindex{143}{}{127}
\end{theindex}

View file

@ -1,4 +0,0 @@
\input docstrip.tex
\keepsilent
\generate{\file{fancythm.sty}{\from{fancythm.dtx}{package}}}
\end

View file

@ -1,8 +0,0 @@
\BOOKMARK [1][-]{section.0.1}{1 fancythm implementation}{}% 1
\BOOKMARK [2][-]{subsection.0.1.1}{1.1 Dependencies}{section.0.1}% 2
\BOOKMARK [2][-]{subsection.0.1.2}{1.2 Counter management}{section.0.1}% 3
\BOOKMARK [2][-]{subsection.0.1.3}{1.3 Counter management}{section.0.1}% 4
\BOOKMARK [2][-]{subsection.0.1.4}{1.4 Initialization}{section.0.1}% 5
\BOOKMARK [2][-]{subsection.0.1.5}{1.5 Key interface}{section.0.1}% 6
\BOOKMARK [2][-]{subsection.0.1.6}{1.6 Fancy theorems}{section.0.1}% 7
\BOOKMARK [2][-]{subsection.0.1.7}{1.7 Provided resources}{section.0.1}% 8

View file

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

View file

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

View file

@ -1,18 +0,0 @@
all: clean pdf
pdf:
pdflatex groupthm.dtx
makeindex -s gind.ist groupthm.idx
pdflatex groupthm.dtx
clean: clean-sty
latexmk -c groupthm.dtx
rm -f groupthm.hd
rm -f groupthm.glo
rm -f groupthm.pdf
clean-sty:
rm -f groupthm.sty
rm -f groupthm.tdo
.PHONY: pdf clean

View file

@ -1,108 +0,0 @@
\relax
\providecommand\hyper@newdestlabel[2]{}
\catcode 95\active
\providecommand\HyperFirstAtBeginDocument{\AtBeginDocument}
\HyperFirstAtBeginDocument{\ifx\hyper@anchor\@undefined
\global\let\oldcontentsline\contentsline
\gdef\contentsline#1#2#3#4{\oldcontentsline{#1}{#2}{#3}}
\global\let\oldnewlabel\newlabel
\gdef\newlabel#1#2{\newlabelxx{#1}#2}
\gdef\newlabelxx#1#2#3#4#5#6{\oldnewlabel{#1}{{#2}{#3}}}
\AtEndDocument{\ifx\hyper@anchor\@undefined
\let\contentsline\oldcontentsline
\let\newlabel\oldnewlabel
\fi}
\fi}
\global\let\hyper@last\relax
\gdef\HyperFirstAtBeginDocument#1{#1}
\providecommand\HyField@AuxAddToFields[1]{}
\providecommand\HyField@AuxAddToCoFields[2]{}
\@writefile{toc}{\contentsline {section}{\numberline {1}Concepts}{3}{section.0.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.1}Theorem groups}{3}{subsection.0.1.1}\protected@file@percent }
\newlabel{sec:theorem-groups}{{1.1}{3}{Theorem groups}{subsection.0.1.1}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {1.2}Grouped theorems}{3}{subsection.0.1.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.3}Theorem families}{3}{subsection.0.1.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {1.4}General notions}{4}{subsection.0.1.4}\protected@file@percent }
\newlabel{doc/function//NewFoo}{{1.4}{4}{General notions}{HD.1}{}}
\newlabel{doc/function//RenewFoo}{{1.4}{4}{General notions}{HD.1}{}}
\newlabel{doc/function//ProvideFoo}{{1.4}{4}{General notions}{HD.1}{}}
\newlabel{doc/function//DeclareFoo}{{1.4}{4}{General notions}{HD.1}{}}
\@writefile{toc}{\contentsline {section}{\numberline {2}Theorem groups}{5}{section.0.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {2.1}Defining theorem groups}{5}{subsection.0.2.1}\protected@file@percent }
\newlabel{doc/function//NewTheoremGroup}{{2.1}{5}{Defining theorem groups}{HD.2}{}}
\newlabel{doc/function//RenewTheoremGroup}{{2.1}{5}{Defining theorem groups}{HD.2}{}}
\newlabel{doc/function//ProvideTheoremGroup}{{2.1}{5}{Defining theorem groups}{HD.2}{}}
\newlabel{doc/function//DeclareTheoremGroup}{{2.1}{5}{Defining theorem groups}{HD.2}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.2}Controlling theorem group precedence}{6}{subsection.0.2.2}\protected@file@percent }
\newlabel{subsec:theorem-group-precedence}{{2.2}{6}{Controlling theorem group precedence}{subsection.0.2.2}{}}
\newlabel{doc/function//DeclareTheoremGroupRule}{{2.2}{6}{Controlling theorem group precedence}{HD.3}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.3}Inheritance of theorem groups}{6}{subsection.0.2.3}\protected@file@percent }
\newlabel{doc/function//AddTheoremGroupParent}{{2.3}{6}{Inheritance of theorem groups}{HD.4}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.4}Appending to theorem groups}{7}{subsection.0.2.4}\protected@file@percent }
\newlabel{doc/function//AppendToTheoremGroup}{{2.4}{7}{Appending to theorem groups}{HD.5}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {2.5}Default theorem groups}{7}{subsection.0.2.5}\protected@file@percent }
\newlabel{subsec:default-theorem-groups}{{2.5}{7}{Default theorem groups}{subsection.0.2.5}{}}
\newlabel{doc/function//all}{{2.5}{7}{Default theorem groups}{HD.6}{}}
\newlabel{doc/function//starred}{{2.5}{7}{Default theorem groups}{HD.7}{}}
\newlabel{doc/function//unnumbered}{{2.5}{7}{Default theorem groups}{HD.8}{}}
\@writefile{toc}{\contentsline {section}{\numberline {3}Grouped Theorems}{8}{section.0.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {3.1}Defining grouped theorems}{8}{subsection.0.3.1}\protected@file@percent }
\newlabel{doc/function//NewGroupedTheorem}{{3.1}{8}{Defining grouped theorems}{HD.9}{}}
\newlabel{doc/function//ProvideGroupedTheorem}{{3.1}{8}{Defining grouped theorems}{HD.9}{}}
\newlabel{doc/function//NewGroupedTheorem*}{{3.1}{8}{Defining grouped theorems}{HD.10}{}}
\newlabel{doc/function//ProvideGroupedTheorem*}{{3.1}{8}{Defining grouped theorems}{HD.10}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {3.2}Defining families of grouped theorems}{9}{subsection.0.3.2}\protected@file@percent }
\newlabel{doc/function//NewGroupedTheoremFamily}{{3.2}{9}{Defining families of grouped theorems}{HD.11}{}}
\newlabel{doc/function//ProvideGroupedTheoremFamily}{{3.2}{9}{Defining families of grouped theorems}{HD.11}{}}
\newlabel{doc/function//NewGroupedTheoremFamily*}{{3.2}{9}{Defining families of grouped theorems}{HD.12}{}}
\newlabel{doc/function//ProvideGroupedTheoremFamily*}{{3.2}{9}{Defining families of grouped theorems}{HD.12}{}}
\newlabel{doc/function//AddTheoremToGroup}{{3.2}{9}{Defining families of grouped theorems}{HD.13}{}}
\newlabel{doc/function//NewGroupedTheoremFamilyOptions}{{3.2}{10}{Defining families of grouped theorems}{HD.14}{}}
\newlabel{doc/function//RenewGroupedTheoremFamilyOptions}{{3.2}{10}{Defining families of grouped theorems}{HD.14}{}}
\newlabel{doc/function//ProvideGroupedTheoremFamilyOptions}{{3.2}{10}{Defining families of grouped theorems}{HD.14}{}}
\newlabel{doc/function//DeclareGroupedTheoremFamilyOptions}{{3.2}{10}{Defining families of grouped theorems}{HD.14}{}}
\newlabel{doc/function//NewGroupedTheoremFamilyOptions*}{{3.2}{10}{Defining families of grouped theorems}{HD.15}{}}
\newlabel{doc/function//RenewGroupedTheoremFamilyOptions*}{{3.2}{10}{Defining families of grouped theorems}{HD.15}{}}
\newlabel{doc/function//ProvideGroupedTheoremFamilyOptions*}{{3.2}{10}{Defining families of grouped theorems}{HD.15}{}}
\newlabel{doc/function//DeclareGroupedTheoremFamilyOptions*}{{3.2}{10}{Defining families of grouped theorems}{HD.15}{}}
\@writefile{toc}{\contentsline {section}{\numberline {4}\LaTeX 3 interface}{10}{section.0.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {4.1}Theorem groups}{11}{subsection.0.4.1}\protected@file@percent }
\newlabel{doc/function//groupthm/new/group:nn}{{4.1}{11}{Theorem groups}{HD.16}{}}
\newlabel{doc/function//groupthm/renew/group:nn}{{4.1}{11}{Theorem groups}{HD.16}{}}
\newlabel{doc/function//groupthm/provide/group:nn}{{4.1}{11}{Theorem groups}{HD.16}{}}
\newlabel{doc/function//groupthm/declare/group:nn}{{4.1}{11}{Theorem groups}{HD.16}{}}
\newlabel{doc/function//groupthm/new/group:nnnnn}{{4.1}{11}{Theorem groups}{HD.17}{}}
\newlabel{doc/function//groupthm/renew/group:nnnnn}{{4.1}{11}{Theorem groups}{HD.17}{}}
\newlabel{doc/function//groupthm/provide/group:nnnnn}{{4.1}{11}{Theorem groups}{HD.17}{}}
\newlabel{doc/function//groupthm/declare/group:nnnnn}{{4.1}{11}{Theorem groups}{HD.17}{}}
\newlabel{doc/function//groupthm/declare/group/rule:nnnn}{{4.1}{11}{Theorem groups}{HD.18}{}}
\newlabel{doc/function//groupthm/add/parent:nn}{{4.1}{11}{Theorem groups}{HD.19}{}}
\newlabel{doc/function//groupthm/append/to/group:nn}{{4.1}{11}{Theorem groups}{HD.20}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.2}Grouped theorems}{11}{subsection.0.4.2}\protected@file@percent }
\newlabel{doc/function//groupthm/new/theorem:nnnn}{{4.2}{11}{Grouped theorems}{HD.21}{}}
\newlabel{doc/function//groupthm/provide/theorem:nnnn}{{4.2}{11}{Grouped theorems}{HD.21}{}}
\newlabel{doc/function//groupthm/new/theorem:nnn}{{4.2}{11}{Grouped theorems}{HD.22}{}}
\newlabel{doc/function//groupthm/provide/theorem:nnn}{{4.2}{11}{Grouped theorems}{HD.22}{}}
\@writefile{toc}{\contentsline {subsection}{\numberline {4.3}Theorem families}{12}{subsection.0.4.3}\protected@file@percent }
\newlabel{doc/function//groupthm/new/family:nnn}{{4.3}{12}{Theorem families}{HD.23}{}}
\newlabel{doc/function//groupthm/provide/family:nnn}{{4.3}{12}{Theorem families}{HD.23}{}}
\newlabel{doc/function//groupthm/new/family:nnnnn}{{4.3}{12}{Theorem families}{HD.24}{}}
\newlabel{doc/function//groupthm/provide/family:nnnnn}{{4.3}{12}{Theorem families}{HD.24}{}}
\newlabel{doc/function//groupthm/add/theorem/to/group:n}{{4.3}{12}{Theorem families}{HD.25}{}}
\newlabel{doc/function//groupthm/new/family/options:nnnn}{{}{12}{}{HD.26}{}}
\newlabel{doc/function//groupthm/renew/family/options:nnnn}{{}{12}{}{HD.26}{}}
\newlabel{doc/function//groupthm/provide/family/options:nnnn}{{}{12}{}{HD.26}{}}
\newlabel{doc/function//groupthm/declare/family/options:nnnn}{{}{12}{}{HD.26}{}}
\@writefile{toc}{\contentsline {section}{\numberline {5}\pkg {groupthm} implementation}{12}{section.0.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.1}Dependencies}{12}{subsection.0.5.1}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.2}Messages}{13}{subsection.0.5.2}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.3}Allocation and initialization}{14}{subsection.0.5.3}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.4}Key interface}{15}{subsection.0.5.4}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.5}Theorem groups}{17}{subsection.0.5.5}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.6}Iterating over powersets}{27}{subsection.0.5.6}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.7}Grouped Theorems}{28}{subsection.0.5.7}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.8}Theorem families}{31}{subsection.0.5.8}\protected@file@percent }
\@writefile{toc}{\contentsline {subsection}{\numberline {5.9}Theorem family options}{33}{subsection.0.5.9}\protected@file@percent }
\providecommand\HD@SetMacroIndent[1]{}
\HD@SetMacroIndent{742}
\gdef \@abspage@last{35}

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}
@ -845,11 +849,17 @@
%
% 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.
@ -1057,6 +1072,63 @@
% \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}
% As mentioned, all keys will set their corresponding local variables
% (containing \enquote{\texttt{_key_}} in their name) and store the
@ -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,
@ -1119,6 +1199,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
% when not specified.
@ -1572,6 +1659,8 @@
\cs_set:Npn \@@_map_aux:n ##1
{
\cs_new:cn { #6 }
{
\@@_lazy:n
{
\@@_define:nnncNNn
{ ##1 }
@ -1583,6 +1672,7 @@
{ #7 }
}
}
}
\clist_map_function:nN { #1 } \@@_map_aux:n
}
% \end{macrocode}
@ -1731,9 +1821,12 @@
{ new, renew, provide, declare }
{ \@@_Declarator: TheoremGroup }
{ O{} m }
{
\@@_lazy:n
{
\use:c { groupthm_#1 _group:nn } { ##1 } { ##2 }
}
}
% \end{macrocode}
% \end{macro}
%
@ -1754,6 +1847,8 @@
%
% \begin{macrocode}
\cs_new:Npn \groupthm_declare_group_rule:nnnn #1 #2 #3 #4
{
\@@_lazy:n
{
\str_set:Nx \l_tmpa_str { \tl_trim_spaces:n { #3 } }
\str_if_eq:VnT \l_tmpa_str { higher }
@ -1772,6 +1867,7 @@
\hook_gset_rule:nnVn { @@ / #1 } {#2} \l_tmpa_str {#4}
}
}
}
\cs_generate_variant:Nn \groupthm_declare_group_rule:nnnn { n n n x }
% \end{macrocode}
% \end{macro}
@ -1786,9 +1882,12 @@
%
% \begin{macrocode}
\NewDocumentCommand { \DeclareTheoremGroupRule } { O{??} m m m }
{
\@@_lazy:n
{
\groupthm_declare_group_rule:nnnn {#1} {#2} {#3} {#4}
}
}
% \end{macrocode}
% \end{macro}
%
@ -1803,11 +1902,14 @@
%
% \begin{macrocode}
\cs_new:Npn \groupthm_add_parent:nn #1 #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}
% \end{macro}
@ -1822,9 +1924,12 @@
%
% \begin{macrocode}
\NewDocumentCommand { \AddTheoremGroupParent } { m m }
{
\@@lazy:n
{
\groupthm_add_parent:nn { #1 } { #2 }
}
}
% \end{macrocode}
% \end{macro}
%
@ -1888,6 +1993,8 @@
%
% \begin{macrocode}
\cs_new:Npn \groupthm_append_to_group:nn #1 #2
{
\@@_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 }
@ -1895,6 +2002,7 @@
{ ?? } { #2 } { before } { __append__ \int_use:N \g_@@_append_groups_int }
\int_gincr:N \g_@@_append_groups_int
}
}
% \end{macrocodel}
% \end{macro}
%
@ -1909,20 +2017,16 @@
%
% \begin{macrocode}
\NewDocumentCommand { \AppendToTheoremGroup } { O{} m }
{
\@@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,
@ -2177,6 +2281,8 @@
\@@_wrap_multiple:nnn
{ new, provide }
{ groupthm_#1_theorem:nnn }
{
\@@_lazy:n
{
\@@_set_normalized_keys:nnn { ##1 } { grouped ~ theorem } { ##2 }
\bool_if:nT { ##3 }
@ -2198,6 +2304,7 @@
\l_@@_thmtools_clist
}
}
}
% \end{macrocode}
% \end{macro}
%
@ -2223,12 +2330,15 @@
{ new, provide }
{ \@@_Declarator: GroupedTheorem }
{ s O{} m }
{
\@@_lazy:n
{
\use:c { groupthm_#1_theorem:nnn }
{ ##2 }
{ ##3 }
{ ##1 }
}
}
% \end{macrocode}
% \end{macro}
%
@ -2331,6 +2441,8 @@
\@@_wrap_multiple:nnn
{ new, provide }
{ groupthm_#1_family:nnn }
{
\@@_lazy:n
{
\@@_set_normalized_keys:nnn { ##1 } { theorem ~ family } { ##2 }
\bool_if:nTF { ##3}
@ -2351,6 +2463,7 @@
\l_@@_thmtools_clist
\l_tmpa_clist
}
}
% \end{macrocode}
% \end{macro}
%
@ -2373,12 +2486,15 @@
{ new, provide }
{ \@@_Declarator: GroupedTheoremFamily }
{ s O{} m }
{
\@@_lazy:n
{
\use:c { groupthm_#1_family:nnn }
{ ##2 }
{ ##3 }
{ ##1 }
}
}
% \end{macrocode}
% \end{macro}
%
@ -2402,6 +2518,8 @@
% executing a \meta{selection body} from some family options.
% If used outside, we emit an error message.
% \begin{macrocode}
\@@_lazy:n
{
\bool_if:NTF \l_@@_in_family_options_environment_bool
{
\clist_put_left:Nn \l_@@_group_clist { #1 }
@ -2410,6 +2528,7 @@
\msg_error:nn { groupthm } { misuse ~ add ~ theorem ~ to ~ group }
}
}
}
% \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}
@ -2556,6 +2684,8 @@
{ new, renew, provide, declare }
{ \@@_Declarator: GroupedTheoremFamilyOptions }
{ s O{} m m m }
{
\@@_lazy:n
{
\keys_set:nn { groupthm / theorem ~ family ~ options } { starred ~ version }
\keys_set:nn { groupthm / theorem ~ family ~ options } { ##2 }
@ -2583,12 +2713,315 @@
\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

@ -1,844 +0,0 @@
\indexentry{Foo={\verbatim@font !\verb*&!\Foo&}|hdclindex{0}{usage}}{4}
\indexentry{NewFoo={\verbatim@font !\verb*&!\NewFoo&}|hdclindex{1}{usage}}{4}
\indexentry{RenewFoo={\verbatim@font !\verb*&!\RenewFoo&}|hdclindex{1}{usage}}{4}
\indexentry{ProvideFoo={\verbatim@font !\verb*&!\ProvideFoo&}|hdclindex{1}{usage}}{4}
\indexentry{DeclareFoo={\verbatim@font !\verb*&!\DeclareFoo&}|hdclindex{1}{usage}}{4}
\indexentry{NewFoo={\verbatim@font !\verb*&!\NewFoo&}|hdclindex{1}{usage}}{4}
\indexentry{RenewFoo={\verbatim@font !\verb*&!\RenewFoo&}|hdclindex{1}{usage}}{4}
\indexentry{ProvideFoo={\verbatim@font !\verb*&!\ProvideFoo&}|hdclindex{1}{usage}}{4}
\indexentry{DeclareFoo={\verbatim@font !\verb*&!\DeclareFoo&}|hdclindex{1}{usage}}{4}
\indexentry{declaretheorem={\verbatim@font !\verb*&!\declaretheorem&}|hdclindex{1}{usage}}{4}
\indexentry{newtheorem={\verbatim@font !\verb*&!\newtheorem&}|hdclindex{1}{usage}}{4}
\indexentry{newtheorem={\verbatim@font !\verb*&!\newtheorem&}|hdclindex{1}{usage}}{4}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{1}{usage}}{5}
\indexentry{declaretheorem={\verbatim@font !\verb*&!\declaretheorem&}|hdclindex{1}{usage}}{5}
\indexentry{NewTheoremGroup={\verbatim@font !\verb*&!\NewTheoremGroup&}|hdclindex{2}{usage}}{5}
\indexentry{fun commands:=\pkg{fun} commands:>fun:n={\verbatim@font !\verb*&!\fun:n&}|hdclindex{2}{usage}}{5}
\indexentry{NewTheoremGroup={\verbatim@font !\verb*&!\NewTheoremGroup&}|hdclindex{2}{usage}}{5}
\indexentry{RenewTheoremGroup={\verbatim@font !\verb*&!\RenewTheoremGroup&}|hdclindex{2}{usage}}{5}
\indexentry{ProvideTheoremGroup={\verbatim@font !\verb*&!\ProvideTheoremGroup&}|hdclindex{2}{usage}}{5}
\indexentry{DeclareTheoremGroup={\verbatim@font !\verb*&!\DeclareTheoremGroup&}|hdclindex{2}{usage}}{5}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{3}{usage}}{6}
\indexentry{DeclareHookRule={\verbatim@font !\verb*&!\DeclareHookRule&}|hdclindex{3}{usage}}{6}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{3}{usage}}{6}
\indexentry{AddTheoremGroupParent={\verbatim@font !\verb*&!\AddTheoremGroupParent&}|hdclindex{4}{usage}}{6}
\indexentry{AddTheoremGroupParent={\verbatim@font !\verb*&!\AddTheoremGroupParent&}|hdclindex{4}{usage}}{6}
\indexentry{AppendToTheoremGroup={\verbatim@font !\verb*&!\AppendToTheoremGroup&}|hdclindex{5}{usage}}{7}
\indexentry{NewTheoremGroup={\verbatim@font !\verb*&!\NewTheoremGroup&}|hdclindex{5}{usage}}{7}
\indexentry{AppendToTheoremGroup={\verbatim@font !\verb*&!\AppendToTheoremGroup&}|hdclindex{5}{usage}}{7}
\indexentry{all={\verbatim@font !\verb*&all&}|hdclindex{6}{usage}}{7}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{7}{usage}}{7}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{7}{usage}}{7}
\indexentry{NewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions&}|hdclindex{7}{usage}}{7}
\indexentry{starred={\verbatim@font !\verb*&starred&}|hdclindex{7}{usage}}{7}
\indexentry{starred={\verbatim@font !\verb*&!\starred&}|hdclindex{8}{usage}}{7}
\indexentry{unnumbered={\verbatim@font !\verb*&unnumbered&}|hdclindex{8}{usage}}{7}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{9}{usage}}{8}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{9}{usage}}{8}
\indexentry{ProvideGroupedTheorem={\verbatim@font !\verb*&!\ProvideGroupedTheorem&}|hdclindex{9}{usage}}{8}
\indexentry{NewGroupedTheorem*={\verbatim@font !\verb*&!\NewGroupedTheorem*&}|hdclindex{10}{usage}}{8}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{10}{usage}}{8}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{10}{usage}}{8}
\indexentry{NewGroupedTheorem*={\verbatim@font !\verb*&!\NewGroupedTheorem*&}|hdclindex{10}{usage}}{8}
\indexentry{ProvideGroupedTheorem*={\verbatim@font !\verb*&!\ProvideGroupedTheorem*&}|hdclindex{10}{usage}}{8}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{11}{usage}}{9}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{11}{usage}}{9}
\indexentry{ProvideGroupedTheoremFamily={\verbatim@font !\verb*&!\ProvideGroupedTheoremFamily&}|hdclindex{11}{usage}}{9}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{11}{usage}}{9}
\indexentry{NewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions&}|hdclindex{11}{usage}}{9}
\indexentry{NewGroupedTheoremFamily*={\verbatim@font !\verb*&!\NewGroupedTheoremFamily*&}|hdclindex{12}{usage}}{9}
\indexentry{ProvideGroupedTheoremFamily*={\verbatim@font !\verb*&!\ProvideGroupedTheoremFamily*&}|hdclindex{12}{usage}}{9}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{12}{usage}}{9}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{12}{usage}}{9}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{13}{usage}}{9}
\indexentry{NewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions&}|hdclindex{13}{usage}}{9}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{13}{usage}}{9}
\indexentry{NewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions&}|hdclindex{14}{usage}}{10}
\indexentry{NewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions&}|hdclindex{14}{usage}}{10}
\indexentry{RenewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\RenewGroupedTheoremFamilyOptions&}|hdclindex{14}{usage}}{10}
\indexentry{ProvideGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\ProvideGroupedTheoremFamilyOptions&}|hdclindex{14}{usage}}{10}
\indexentry{DeclareGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\DeclareGroupedTheoremFamilyOptions&}|hdclindex{14}{usage}}{10}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{14}{usage}}{10}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{14}{usage}}{10}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{14}{usage}}{10}
\indexentry{NewGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions*&}|hdclindex{15}{usage}}{10}
\indexentry{NewGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions*&}|hdclindex{15}{usage}}{10}
\indexentry{RenewGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\RenewGroupedTheoremFamilyOptions*&}|hdclindex{15}{usage}}{10}
\indexentry{ProvideGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\ProvideGroupedTheoremFamilyOptions*&}|hdclindex{15}{usage}}{10}
\indexentry{DeclareGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\DeclareGroupedTheoremFamilyOptions*&}|hdclindex{15}{usage}}{10}
\indexentry{NewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions&}|hdclindex{15}{usage}}{10}
\indexentry{NewGroupedTheoremFamily*={\verbatim@font !\verb*&!\NewGroupedTheoremFamily*&}|hdclindex{15}{usage}}{10}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nn&}|hdclindex{16}{usage}}{11}
\indexentry{NewTheoremGroup={\verbatim@font !\verb*&!\NewTheoremGroup&}|hdclindex{16}{usage}}{11}
\indexentry{RenewTheoremGroup={\verbatim@font !\verb*&!\RenewTheoremGroup&}|hdclindex{16}{usage}}{11}
\indexentry{ProvideTheoremGroup={\verbatim@font !\verb*&!\ProvideTheoremGroup&}|hdclindex{16}{usage}}{11}
\indexentry{DeclareTheoremGroup={\verbatim@font !\verb*&!\DeclareTheoremGroup&}|hdclindex{16}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nn&}|hdclindex{16}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_renew_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&renew&!\_!\verb*&group:nn&}|hdclindex{16}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&group:nn&}|hdclindex{16}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group:nn&}|hdclindex{16}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{17}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{17}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_renew_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&renew&!\_!\verb*&group:nnnnn&}|hdclindex{17}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&group:nnnnn&}|hdclindex{17}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group:nnnnn&}|hdclindex{17}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nn&}|hdclindex{17}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_renew_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&renew&!\_!\verb*&group:nn&}|hdclindex{17}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&group:nn&}|hdclindex{17}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group:nn&}|hdclindex{17}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group_rule:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group&!\_!\verb*&rule:nnnn&}|hdclindex{18}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group_rule:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group&!\_!\verb*&rule:nnnn&}|hdclindex{18}{usage}}{11}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{18}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_parent:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&parent:nn&}|hdclindex{19}{usage}}{11}
\indexentry{AddTheoremGroupParent={\verbatim@font !\verb*&!\AddTheoremGroupParent&}|hdclindex{19}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_parent:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&parent:nn&}|hdclindex{19}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_append_to_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&append&!\_!\verb*&to&!\_!\verb*&group:nn&}|hdclindex{20}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_append_to_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&append&!\_!\verb*&to&!\_!\verb*&group:nn&}|hdclindex{20}{usage}}{11}
\indexentry{AppendToTheoremGroup={\verbatim@font !\verb*&!\AppendToTheoremGroup&}|hdclindex{20}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_theorem:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&theorem:nnnn&}|hdclindex{21}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_theorem:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&theorem:nnnn&}|hdclindex{21}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_theorem:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&theorem:nnnn&}|hdclindex{21}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_theorem:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&theorem:nnn&}|hdclindex{22}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_theorem:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&theorem:nnn&}|hdclindex{22}{usage}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_theorem:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&theorem:nnn&}|hdclindex{22}{usage}}{11}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{22}{usage}}{11}
\indexentry{RequirePackage={\verbatim@font !\verb*&!\RequirePackage&}|hdclindex{29}{}}{3}
\indexentry{RequirePackage={\verbatim@font !\verb*&!\RequirePackage&}|hdclindex{30}{}}{4}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_declare_theorem:nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&declare&!\_!\verb*&theorem:nn&}|hdclindex{31}{main}}{5}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{32}{}}{5}
\indexentry{tl commands:=\pkg{tl} commands:>tl_log:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&log:n&}|hdclindex{34}{}}{7}
\indexentry{declaretheorem={\verbatim@font !\verb*&!\declaretheorem&}|hdclindex{35}{}}{8}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{37}{}}{10}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_hook_gset_rule_foreach:nNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&hook&!\_!\verb*&gset&!\_!\verb*&rule&!\_!\verb*&foreach:nNnn&}|hdclindex{38}{main}}{11}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family:nnn&}|hdclindex{23}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family:nnn&}|hdclindex{23}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_family:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&family:nnn&}|hdclindex{23}{usage}}{12}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{23}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family:nnnnn&}|hdclindex{24}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family:nnnnn&}|hdclindex{24}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_family:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&family:nnnnn&}|hdclindex{24}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family:nnn&}|hdclindex{24}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_theorem_to_group:n={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:n&}|hdclindex{25}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_theorem_to_group:n={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:n&}|hdclindex{25}{usage}}{12}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{25}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{26}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{26}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_renew_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&renew&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{26}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{26}{usage}}{12}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{26}{usage}}{12}
\indexentry{NewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions&}|hdclindex{26}{usage}}{12}
\indexentry{NewGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions*&}|hdclindex{26}{usage}}{12}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_declare_theorem:nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&declare&!\_!\verb*&theorem:nn&}|hdclindex{31}{usage}}{12}
\indexentry{declaretheorem={\verbatim@font !\verb*&!\declaretheorem&}|hdclindex{31}{usage}}{12}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{39}{}}{11}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&set:Npn&}|hdclindex{41}{}}{13}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{41}{}}{13}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{43}{}}{15}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:NN&}|hdclindex{45}{}}{17}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{45}{}}{17}
\indexentry{msg commands:=\pkg{msg} commands:>msg_new:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&new:nnn&}|hdclindex{47}{}}{19}
\indexentry{msg commands:=\pkg{msg} commands:>msg_line_context:={\verbatim@font !\verb*&!\msg&!\_!\verb*&line&!\_!\verb*&context:&}|hdclindex{49}{}}{21}
\indexentry{msg commands:=\pkg{msg} commands:>msg_new:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&new:nnn&}|hdclindex{51}{}}{23}
\indexentry{msg commands:=\pkg{msg} commands:>msg_line_context:={\verbatim@font !\verb*&!\msg&!\_!\verb*&line&!\_!\verb*&context:&}|hdclindex{53}{}}{25}
\indexentry{msg commands:=\pkg{msg} commands:>msg_new:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&new:nnn&}|hdclindex{55}{}}{27}
\indexentry{msg commands:=\pkg{msg} commands:>msg_line_context:={\verbatim@font !\verb*&!\msg&!\_!\verb*&line&!\_!\verb*&context:&}|hdclindex{57}{}}{29}
\indexentry{msg commands:=\pkg{msg} commands:>msg_new:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&new:nnn&}|hdclindex{59}{}}{31}
\indexentry{msg commands:=\pkg{msg} commands:>msg_line_context:={\verbatim@font !\verb*&!\msg&!\_!\verb*&line&!\_!\verb*&context:&}|hdclindex{62}{}}{34}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_hook_gset_rule_foreach:nNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&hook&!\_!\verb*&gset&!\_!\verb*&rule&!\_!\verb*&foreach:nNnn&}|hdclindex{38}{usage}}{13}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{38}{usage}}{13}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnn&}|hdclindex{46}{usage}}{13}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnn&}|hdclindex{50}{usage}}{13}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnnnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnnnn&}|hdclindex{54}{usage}}{13}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{58}{usage}}{13}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nn&}|hdclindex{58}{usage}}{13}
\indexentry{msg commands:=\pkg{msg} commands:>msg_new:nnnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&new:nnnn&}|hdclindex{64}{}}{36}
\indexentry{msg commands:=\pkg{msg} commands:>msg_line_context:={\verbatim@font !\verb*&!\msg&!\_!\verb*&line&!\_!\verb*&context:&}|hdclindex{66}{}}{38}
\indexentry{msg commands:=\pkg{msg} commands:>msg_see_documentation_text:n={\verbatim@font !\verb*&!\msg&!\_!\verb*&see&!\_!\verb*&documentation&!\_!\verb*&text:n&}|hdclindex{73}{}}{45}
\indexentry{hook commands:=\pkg{hook} commands:>hook_new:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&new:n&}|hdclindex{75}{}}{47}
\indexentry{hook commands:=\pkg{hook} commands:>hook_new:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&new:n&}|hdclindex{76}{}}{48}
\indexentry{hook commands:=\pkg{hook} commands:>hook_new:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&new:n&}|hdclindex{77}{}}{49}
\indexentry{hook commands:=\pkg{hook} commands:>hook_new:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&new:n&}|hdclindex{78}{}}{50}
\indexentry{hook commands:=\pkg{hook} commands:>hook_new:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&new:n&}|hdclindex{79}{}}{51}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{80}{main}}{52}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{81}{}}{52}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{81}{}}{52}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{82}{main}}{53}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_prefix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&prefix&!\_!\verb*&tl&}|hdclindex{82}{main}}{53}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{82}{main}}{53}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_suffix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&suffix&!\_!\verb*&tl&}|hdclindex{82}{main}}{53}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{82}{main}}{53}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_mapname_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&mapname&!\_!\verb*&clist&}|hdclindex{82}{main}}{53}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{82}{main}}{53}
\indexentry{bool commands:=\pkg{bool} commands:>bool_new:N={\verbatim@font !\verb*&!\bool&!\_!\verb*&new:N&}|hdclindex{83}{}}{53}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{84}{}}{54}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{85}{}}{55}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{86}{}}{56}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{87}{}}{57}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{88}{}}{58}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{89}{}}{59}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{90}{main}}{60}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_prefix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&prefix&!\_!\verb*&tl&}|hdclindex{90}{main}}{60}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{90}{main}}{60}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_suffix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&suffix&!\_!\verb*&tl&}|hdclindex{90}{main}}{60}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_mapname_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&mapname&!\_!\verb*&clist&}|hdclindex{90}{main}}{60}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{90}{main}}{60}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{90}{main}}{60}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{91}{}}{60}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{92}{}}{61}
\indexentry{tl commands:=\pkg{tl} commands:>tl_new:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&new:N&}|hdclindex{93}{}}{62}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{94}{}}{63}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{95}{}}{64}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{96}{}}{65}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{97}{main}}{66}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{98}{}}{66}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nn&}|hdclindex{63}{usage}}{14}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{80}{usage}}{14}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{80}{usage}}{14}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_in_family_options_environment_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&in&!\_!\verb*&family&!\_!\verb*&options&!\_!\verb*&environment&!\_!\verb*&bool&}|hdclindex{99}{main}}{67}
\indexentry{bool commands:=\pkg{bool} commands:>bool_new:N={\verbatim@font !\verb*&!\bool&!\_!\verb*&new:N&}|hdclindex{100}{}}{67}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_append_groups_int={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&append&!\_!\verb*&groups&!\_!\verb*&int&}|hdclindex{101}{main}}{68}
\indexentry{int commands:=\pkg{int} commands:>int_new:N={\verbatim@font !\verb*&!\int&!\_!\verb*&new:N&}|hdclindex{102}{}}{68}
\indexentry{keys commands:=\pkg{keys} commands:>keys_define:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&define:nn&}|hdclindex{103}{}}{69}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_prefix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&prefix&!\_!\verb*&tl&}|hdclindex{105}{}}{71}
\indexentry{tl commands:=\pkg{tl} commands:>empty_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&empty&!\_!\verb*&tl&}|hdclindex{106}{}}{72}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_suffix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&suffix&!\_!\verb*&tl&}|hdclindex{107}{}}{73}
\indexentry{tl commands:=\pkg{tl} commands:>empty_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&empty&!\_!\verb*&tl&}|hdclindex{108}{}}{74}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_mapname_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&mapname&!\_!\verb*&clist&}|hdclindex{110}{}}{76}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{113}{}}{79}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnn&}|hdclindex{116}{}}{82}
\indexentry{str commands:=\pkg{str} commands:>str_use:N={\verbatim@font !\verb*&!\str&!\_!\verb*&use:N&}|hdclindex{116}{}}{82}
\indexentry{keys commands:=\pkg{keys} commands:>keys_key_str={\verbatim@font !\verb*&!\l&!\_!\verb*&keys&!\_!\verb*&key&!\_!\verb*&str&}|hdclindex{116}{}}{82}
\indexentry{keys commands:=\pkg{keys} commands:>keys_define:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&define:nn&}|hdclindex{118}{}}{84}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{120}{}}{86}
\indexentry{tl commands:=\pkg{tl} commands:>novalue_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&novalue&!\_!\verb*&tl&}|hdclindex{121}{}}{87}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{122}{}}{88}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{124}{}}{90}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{126}{}}{92}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnn&}|hdclindex{129}{}}{95}
\indexentry{str commands:=\pkg{str} commands:>str_use:N={\verbatim@font !\verb*&!\str&!\_!\verb*&use:N&}|hdclindex{129}{}}{95}
\indexentry{keys commands:=\pkg{keys} commands:>keys_key_str={\verbatim@font !\verb*&!\l&!\_!\verb*&keys&!\_!\verb*&key&!\_!\verb*&str&}|hdclindex{129}{}}{95}
\indexentry{keys commands:=\pkg{keys} commands:>keys_define:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&define:nn&}|hdclindex{131}{}}{97}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{133}{}}{99}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{99}{usage}}{15}
\indexentry{tl commands:=\pkg{tl} commands:>novalue_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&novalue&!\_!\verb*&tl&}|hdclindex{134}{}}{100}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{135}{}}{101}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{137}{}}{103}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{139}{}}{105}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnn&}|hdclindex{142}{}}{108}
\indexentry{str commands:=\pkg{str} commands:>str_use:N={\verbatim@font !\verb*&!\str&!\_!\verb*&use:N&}|hdclindex{142}{}}{108}
\indexentry{keys commands:=\pkg{keys} commands:>keys_key_str={\verbatim@font !\verb*&!\l&!\_!\verb*&keys&!\_!\verb*&key&!\_!\verb*&str&}|hdclindex{142}{}}{108}
\indexentry{keys commands:=\pkg{keys} commands:>keys_define:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&define:nn&}|hdclindex{144}{}}{110}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{146}{}}{112}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnn&}|hdclindex{149}{}}{115}
\indexentry{str commands:=\pkg{str} commands:>str_use:N={\verbatim@font !\verb*&!\str&!\_!\verb*&use:N&}|hdclindex{149}{}}{115}
\indexentry{keys commands:=\pkg{keys} commands:>keys_key_str={\verbatim@font !\verb*&!\l&!\_!\verb*&keys&!\_!\verb*&key&!\_!\verb*&str&}|hdclindex{149}{}}{115}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_set_normalized_keys:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nnn&}|hdclindex{151}{main}}{117}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{152}{}}{117}
\indexentry{keys commands:=\pkg{keys} commands:>keys_set:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&set:nn&}|hdclindex{154}{}}{119}
\indexentry{keys commands:=\pkg{keys} commands:>keys_set:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&set:nn&}|hdclindex{156}{}}{121}
\indexentry{keys commands:=\pkg{keys} commands:>keys_set:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&set:nn&}|hdclindex{158}{}}{123}
\indexentry{keys commands:=\pkg{keys} commands:>keys_set:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&set:nn&}|hdclindex{160}{}}{125}
\indexentry{tl commands:=\pkg{tl} commands:>tl_if_eq:NnTF={\verbatim@font !\verb*&!\tl&!\_!\verb*&if&!\_!\verb*&eq:NnTF&}|hdclindex{161}{}}{126}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{161}{}}{126}
\indexentry{tl commands:=\pkg{tl} commands:>novalue_tl={\verbatim@font !\verb*&!\c&!\_!\verb*&novalue&!\_!\verb*&tl&}|hdclindex{161}{}}{126}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&set:Nn&}|hdclindex{163}{}}{128}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{163}{}}{128}
\indexentry{text commands:=\pkg{text} commands:>text_titlecase_first:n={\verbatim@font !\verb*&!\text&!\_!\verb*&titlecase&!\_!\verb*&first:n&}|hdclindex{165}{}}{130}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set_eq:NN={\verbatim@font !\verb*&!\tl&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{169}{}}{134}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{169}{}}{134}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{169}{}}{134}
\indexentry{bool commands:=\pkg{bool} commands:>bool_set_eq:NN={\verbatim@font !\verb*&!\bool&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{171}{}}{136}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{171}{}}{136}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{171}{}}{136}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set_eq:NN={\verbatim@font !\verb*&!\tl&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{172}{}}{137}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_prefix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&prefix&!\_!\verb*&tl&}|hdclindex{172}{}}{137}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_prefix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&prefix&!\_!\verb*&tl&}|hdclindex{172}{}}{137}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set_eq:NN={\verbatim@font !\verb*&!\tl&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{173}{}}{138}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_suffix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&suffix&!\_!\verb*&tl&}|hdclindex{173}{}}{138}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_suffix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&suffix&!\_!\verb*&tl&}|hdclindex{173}{}}{138}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set_eq:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{174}{}}{139}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{174}{}}{139}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{174}{}}{139}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_set_normalized_keys:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nnn&}|hdclindex{151}{usage}}{16}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{151}{usage}}{16}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set_eq:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{175}{}}{140}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_mapname_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&mapname&!\_!\verb*&clist&}|hdclindex{175}{}}{140}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_mapname_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&mapname&!\_!\verb*&clist&}|hdclindex{175}{}}{140}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set_eq:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{176}{}}{141}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{176}{}}{141}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_key_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&key&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{176}{}}{141}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_add_to_group_ordering:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&add&!\_!\verb*&to&!\_!\verb*&group&!\_!\verb*&ordering:n&}|hdclindex{178}{main}}{143}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{179}{}}{143}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_hook_gset_rule_foreach:nNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&hook&!\_!\verb*&gset&!\_!\verb*&rule&!\_!\verb*&foreach:nNnn&}|hdclindex{181}{}}{145}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{183}{}}{147}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_remove_from_group_ordering:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&remove&!\_!\verb*&from&!\_!\verb*&group&!\_!\verb*&ordering:n&}|hdclindex{187}{main}}{151}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{188}{}}{151}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_hook_gset_rule_foreach:nNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&hook&!\_!\verb*&gset&!\_!\verb*&rule&!\_!\verb*&foreach:nNnn&}|hdclindex{190}{}}{153}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{192}{}}{155}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_add_to_sort_hook:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&add&!\_!\verb*&to&!\_!\verb*&sort&!\_!\verb*&hook:n&}|hdclindex{196}{main}}{159}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_add_to_group_ordering:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&add&!\_!\verb*&to&!\_!\verb*&group&!\_!\verb*&ordering:n&}|hdclindex{178}{usage}}{17}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_remove_from_group_ordering:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&remove&!\_!\verb*&from&!\_!\verb*&group&!\_!\verb*&ordering:n&}|hdclindex{187}{usage}}{17}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{197}{}}{159}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gput_code:nnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gput&!\_!\verb*&code:nnn&}|hdclindex{199}{}}{161}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&left:Nn&}|hdclindex{202}{}}{164}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{202}{}}{164}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_sort_group_names:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&sort&!\_!\verb*&group&!\_!\verb*&names:&}|hdclindex{205}{main}}{167}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{206}{}}{167}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gremove_code:nn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gremove&!\_!\verb*&code:nn&}|hdclindex{208}{}}{169}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:NN&}|hdclindex{209}{}}{170}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{209}{}}{170}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_add_to_sort_hook:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&add&!\_!\verb*&to&!\_!\verb*&sort&!\_!\verb*&hook:n&}|hdclindex{209}{}}{170}
\indexentry{clist commands:=\pkg{clist} commands:>clist_clear:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&clear:N&}|hdclindex{210}{}}{171}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{210}{}}{171}
\indexentry{hook commands:=\pkg{hook} commands:>hook_use:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&use:n&}|hdclindex{211}{}}{172}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_group:nnnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&group:nnnnn&}|hdclindex{213}{main}}{174}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{214}{}}{174}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_use_group__!\meta{theorem group}:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&use&!\_!\verb*&group&!\_!\_!\verb*&!\meta{theorem group}:&}|hdclindex{215}{main}}{176}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{216}{}}{176}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gput_code:nnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gput&!\_!\verb*&code:nnn&}|hdclindex{218}{}}{178}
\indexentry{tl commands:=\pkg{tl} commands:>tl_put_left:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&put&!\_!\verb*&left:Nn&}|hdclindex{220}{}}{180}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_prefix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&prefix&!\_!\verb*&tl&}|hdclindex{220}{}}{180}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gput_code:nnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gput&!\_!\verb*&code:nnn&}|hdclindex{222}{}}{182}
\indexentry{tl commands:=\pkg{tl} commands:>tl_put_right:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{224}{}}{184}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_suffix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&suffix&!\_!\verb*&tl&}|hdclindex{224}{}}{184}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gput_code:nnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gput&!\_!\verb*&code:nnn&}|hdclindex{226}{}}{186}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{228}{}}{188}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_mapname_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&mapname&!\_!\verb*&clist&}|hdclindex{228}{}}{188}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_add_to_sort_hook:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&add&!\_!\verb*&to&!\_!\verb*&sort&!\_!\verb*&hook:n&}|hdclindex{196}{usage}}{18}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{196}{usage}}{18}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{205}{usage}}{18}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_group:nnnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&group:nnnnn&}|hdclindex{213}{usage}}{18}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gput_code:nnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gput&!\_!\verb*&code:nnn&}|hdclindex{230}{}}{190}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{232}{}}{192}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{232}{}}{192}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_add_to_group_ordering:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&add&!\_!\verb*&to&!\_!\verb*&group&!\_!\verb*&ordering:n&}|hdclindex{235}{}}{195}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_parents_group__!\meta{theorem group}__clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&parents&!\_!\verb*&group&!\_!\_!\verb*&!\meta{theorem group}&!\_!\_!\verb*&clist&}|hdclindex{235}{main}}{196}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{236}{}}{196}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{237}{}}{197}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{238}{}}{198}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{239}{}}{199}
\indexentry{clist commands:=\pkg{clist} commands:>clist_gput_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&gput&!\_!\verb*&left:Nn&}|hdclindex{240}{}}{200}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{240}{}}{200}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_undefine_group:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&undefine&!\_!\verb*&group:n&}|hdclindex{242}{main}}{202}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{243}{}}{202}
\indexentry{tl commands:=\pkg{tl} commands:>tl_log:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&log:n&}|hdclindex{245}{}}{204}
\indexentry{cs commands:=\pkg{cs} commands:>cs_undefine:N={\verbatim@font !\verb*&!\cs&!\_!\verb*&undefine:N&}|hdclindex{246}{}}{205}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gremove_code:nn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gremove&!\_!\verb*&code:nn&}|hdclindex{247}{}}{206}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gremove_code:nn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gremove&!\_!\verb*&code:nn&}|hdclindex{248}{}}{207}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gremove_code:nn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gremove&!\_!\verb*&code:nn&}|hdclindex{249}{}}{208}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gremove_code:nn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gremove&!\_!\verb*&code:nn&}|hdclindex{250}{}}{209}
\indexentry{clist commands:=\pkg{clist} commands:>clist_gremove_all:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&gremove&!\_!\verb*&all:Nn&}|hdclindex{251}{}}{210}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{251}{}}{210}
\indexentry{cs commands:=\pkg{cs} commands:>cs_undefine:N={\verbatim@font !\verb*&!\cs&!\_!\verb*&undefine:N&}|hdclindex{252}{}}{211}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_hook_gset_rule_foreach:nNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&hook&!\_!\verb*&gset&!\_!\verb*&rule&!\_!\verb*&foreach:nNnn&}|hdclindex{253}{}}{212}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{255}{}}{214}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_hook_gset_rule_foreach:nNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&hook&!\_!\verb*&gset&!\_!\verb*&rule&!\_!\verb*&foreach:nNnn&}|hdclindex{258}{}}{217}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{260}{}}{219}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_undefine_group:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&undefine&!\_!\verb*&group:n&}|hdclindex{242}{usage}}{19}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_hook_gset_rule_foreach:nNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&hook&!\_!\verb*&gset&!\_!\verb*&rule&!\_!\verb*&foreach:nNnn&}|hdclindex{263}{}}{222}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{265}{}}{224}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_hook_gset_rule_foreach:nNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&hook&!\_!\verb*&gset&!\_!\verb*&rule&!\_!\verb*&foreach:nNnn&}|hdclindex{268}{}}{227}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{270}{}}{229}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_hook_gset_rule_foreach:nNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&hook&!\_!\verb*&gset&!\_!\verb*&rule&!\_!\verb*&foreach:nNnn&}|hdclindex{273}{}}{232}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_defined_groups_clist={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&defined&!\_!\verb*&groups&!\_!\verb*&clist&}|hdclindex{275}{}}{234}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_remove_from_group_ordering:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&remove&!\_!\verb*&from&!\_!\verb*&group&!\_!\verb*&ordering:n&}|hdclindex{278}{}}{237}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define:nnnNNNn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define:nnnNNNn&}|hdclindex{280}{main}}{239}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{281}{}}{239}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define:nnnNNNn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define:nnnNNNn&}|hdclindex{280}{usage}}{20}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:nTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:nTF&}|hdclindex{283}{}}{241}
\indexentry{str commands:=\pkg{str} commands:>str_if_eq_p:nn={\verbatim@font !\verb*&!\str&!\_!\verb*&if&!\_!\verb*&eq&!\_!\verb*&p:nn&}|hdclindex{285}{}}{243}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist_p:N={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist&!\_!\verb*&p:N&}|hdclindex{287}{}}{245}
\indexentry{tl commands:=\pkg{tl} commands:>tl_log:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&log:n&}|hdclindex{290}{}}{248}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnnnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnnnn&}|hdclindex{291}{}}{249}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:nTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:nTF&}|hdclindex{294}{}}{252}
\indexentry{str commands:=\pkg{str} commands:>str_if_eq_p:nn={\verbatim@font !\verb*&!\str&!\_!\verb*&if&!\_!\verb*&eq&!\_!\verb*&p:nn&}|hdclindex{296}{}}{254}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist_p:N={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist&!\_!\verb*&p:N&}|hdclindex{298}{}}{256}
\indexentry{tl commands:=\pkg{tl} commands:>tl_log:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&log:n&}|hdclindex{301}{}}{259}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnnnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnnnn&}|hdclindex{302}{}}{260}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:nTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:nTF&}|hdclindex{305}{}}{263}
\indexentry{str commands:=\pkg{str} commands:>str_if_eq_p:nn={\verbatim@font !\verb*&!\str&!\_!\verb*&if&!\_!\verb*&eq&!\_!\verb*&p:nn&}|hdclindex{308}{}}{266}
\indexentry{str commands:=\pkg{str} commands:>str_if_eq_p:nn={\verbatim@font !\verb*&!\str&!\_!\verb*&if&!\_!\verb*&eq&!\_!\verb*&p:nn&}|hdclindex{309}{}}{267}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist_p:N={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist&!\_!\verb*&p:N&}|hdclindex{311}{}}{269}
\indexentry{tl commands:=\pkg{tl} commands:>tl_log:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&log:n&}|hdclindex{314}{}}{272}
\indexentry{tl commands:=\pkg{tl} commands:>tl_log:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&log:n&}|hdclindex{315}{}}{273}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:nTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:nTF&}|hdclindex{318}{}}{276}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist_p:N={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist&!\_!\verb*&p:N&}|hdclindex{320}{}}{278}
\indexentry{str commands:=\pkg{str} commands:>str_if_eq_p:nn={\verbatim@font !\verb*&!\str&!\_!\verb*&if&!\_!\verb*&eq&!\_!\verb*&p:nn&}|hdclindex{322}{}}{280}
\indexentry{tl commands:=\pkg{tl} commands:>tl_log:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&log:n&}|hdclindex{325}{}}{283}
\indexentry{tl commands:=\pkg{tl} commands:>tl_log:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&log:n&}|hdclindex{328}{}}{286}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{332}{}}{290}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_multiple:nnnNNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&multiple:nnnNNnn&}|hdclindex{333}{main}}{291}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{334}{}}{291}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&set:Npn&}|hdclindex{336}{}}{293}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{336}{}}{293}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Nn&}|hdclindex{338}{}}{295}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define:nnnNNNn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define:nnnNNNn&}|hdclindex{340}{}}{297}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:nN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:nN&}|hdclindex{350}{}}{307}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{350}{}}{307}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{352}{main}}{309}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_renew_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&renew&!\_!\verb*&group:nnnnn&}|hdclindex{352}{main}}{309}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&group:nnnnn&}|hdclindex{352}{main}}{309}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group:nnnnn&}|hdclindex{352}{main}}{309}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_multiple:nnnNNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&multiple:nnnNNnn&}|hdclindex{353}{}}{309}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_undefine_group:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&undefine&!\_!\verb*&group:n&}|hdclindex{357}{}}{313}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_group:nnnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&group:nnnnn&}|hdclindex{358}{}}{314}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_multiple:nnnNNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&multiple:nnnNNnn&}|hdclindex{333}{usage}}{22}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define:nnnNNNn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define:nnnNNNn&}|hdclindex{333}{usage}}{22}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{333}{usage}}{22}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_renew_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&renew&!\_!\verb*&group:nnnnn&}|hdclindex{333}{usage}}{22}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&group:nnnnn&}|hdclindex{333}{usage}}{22}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group:nnnnn&}|hdclindex{333}{usage}}{22}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define:nnnnNNn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define:nnnnNNn&}|hdclindex{333}{usage}}{22}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{361}{}}{317}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{362}{}}{318}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{363}{}}{319}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{364}{}}{320}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{365}{main}}{321}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{366}{}}{321}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&set:Npn&}|hdclindex{368}{}}{323}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{368}{}}{323}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Nn&}|hdclindex{370}{}}{325}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:nN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:nN&}|hdclindex{375}{}}{330}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{375}{}}{330}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nn&}|hdclindex{377}{main}}{332}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_renew_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&renew&!\_!\verb*&group:nn&}|hdclindex{377}{main}}{332}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&group:nn&}|hdclindex{377}{main}}{332}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group:nn&}|hdclindex{377}{main}}{332}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{378}{}}{332}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_set_normalized_keys:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nnn&}|hdclindex{382}{}}{336}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{383}{}}{337}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_prefix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&prefix&!\_!\verb*&tl&}|hdclindex{385}{}}{339}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_suffix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&suffix&!\_!\verb*&tl&}|hdclindex{386}{}}{340}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_mapname_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&mapname&!\_!\verb*&clist&}|hdclindex{387}{}}{341}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{388}{}}{342}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{390}{}}{344}
\indexentry{end={\verbatim@font !\verb*&!\end&}|hdclindex{391}{}}{345}
\indexentry{LaTeX={\verbatim@font !\verb*&!\LaTeX&}|hdclindex{394}{}}{348}
\indexentry{begin={\verbatim@font !\verb*&!\begin&}|hdclindex{396}{}}{350}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_new_document_command:Nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&new&!\_!\verb*&document&!\_!\verb*&command:Nnn&}|hdclindex{396}{}}{350}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_new_document_command:Nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&new&!\_!\verb*&document&!\_!\verb*&command:Nnn&}|hdclindex{396}{}}{350}
\indexentry{cs={\verbatim@font !\verb*&!\cs&}|hdclindex{398}{}}{352}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_set_normalized_keys:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nnn&}|hdclindex{364}{usage}}{23}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{365}{usage}}{23}
\indexentry{declarator={\verbatim@font !\verb*&!\declarator&}|hdclindex{365}{usage}}{23}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nn&}|hdclindex{377}{usage}}{23}
\indexentry{begin={\verbatim@font !\verb*&!\begin&}|hdclindex{400}{}}{354}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{401}{}}{355}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_new_document_command:Nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&new&!\_!\verb*&document&!\_!\verb*&command:Nnn&}|hdclindex{401}{}}{355}
\indexentry{NewDocumentCommand={\verbatim@font !\verb*&!\NewDocumentCommand&}|hdclindex{403}{}}{357}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{405}{}}{359}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_new_document_command:Nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&new&!\_!\verb*&document&!\_!\verb*&command:Nnn&}|hdclindex{405}{}}{359}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple_document:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple&!\_!\verb*&document:nnnn&}|hdclindex{406}{main}}{360}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{407}{}}{360}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&set:Npn&}|hdclindex{409}{}}{362}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{409}{}}{362}
\indexentry{cs commands:=\pkg{cs} commands:>cs_set:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&set:Nn&}|hdclindex{411}{}}{364}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_Declarator:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&Declarator:&}|hdclindex{411}{}}{364}
\indexentry{text commands:=\pkg{text} commands:>text_titlecase_first:n={\verbatim@font !\verb*&!\text&!\_!\verb*&titlecase&!\_!\verb*&first:n&}|hdclindex{411}{}}{364}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_new_document_command:Nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&new&!\_!\verb*&document&!\_!\verb*&command:Nnn&}|hdclindex{412}{}}{365}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:nN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:nN&}|hdclindex{414}{}}{367}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_map_aux:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&map&!\_!\verb*&aux:n&}|hdclindex{414}{}}{367}
\indexentry{NewTheoremGroup={\verbatim@font !\verb*&!\NewTheoremGroup&}|hdclindex{416}{main}}{369}
\indexentry{RenewTheoremGroup={\verbatim@font !\verb*&!\RenewTheoremGroup&}|hdclindex{416}{main}}{369}
\indexentry{ProvideTheoremGroup={\verbatim@font !\verb*&!\ProvideTheoremGroup&}|hdclindex{416}{main}}{369}
\indexentry{DeclareTheoremGroup={\verbatim@font !\verb*&!\DeclareTheoremGroup&}|hdclindex{416}{main}}{369}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple_document:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple&!\_!\verb*&document:nnnn&}|hdclindex{417}{}}{369}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_Declarator:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&Declarator:&}|hdclindex{419}{}}{371}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{422}{}}{374}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group_rule:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group&!\_!\verb*&rule:nnnn&}|hdclindex{424}{main}}{376}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{425}{}}{376}
\indexentry{str commands:=\pkg{str} commands:>str_set:Nn={\verbatim@font !\verb*&!\str&!\_!\verb*&set:Nn&}|hdclindex{427}{}}{378}
\indexentry{str commands:=\pkg{str} commands:>tmpa_str={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&str&}|hdclindex{427}{}}{378}
\indexentry{tl commands:=\pkg{tl} commands:>tl_trim_spaces:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&trim&!\_!\verb*&spaces:n&}|hdclindex{427}{}}{378}
\indexentry{str commands:=\pkg{str} commands:>str_if_eq:nnTF={\verbatim@font !\verb*&!\str&!\_!\verb*&if&!\_!\verb*&eq:nnTF&}|hdclindex{428}{}}{379}
\indexentry{str commands:=\pkg{str} commands:>tmpa_str={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&str&}|hdclindex{428}{}}{379}
\indexentry{str commands:=\pkg{str} commands:>str_set:Nn={\verbatim@font !\verb*&!\str&!\_!\verb*&set:Nn&}|hdclindex{430}{}}{381}
\indexentry{str commands:=\pkg{str} commands:>tmpa_str={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&str&}|hdclindex{430}{}}{381}
\indexentry{str commands:=\pkg{str} commands:>str_if_eq:nnTF={\verbatim@font !\verb*&!\str&!\_!\verb*&if&!\_!\verb*&eq:nnTF&}|hdclindex{432}{}}{383}
\indexentry{str commands:=\pkg{str} commands:>tmpa_str={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&str&}|hdclindex{432}{}}{383}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple_document:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple&!\_!\verb*&document:nnnn&}|hdclindex{406}{usage}}{24}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{406}{usage}}{24}
\indexentry{declarator={\verbatim@font !\verb*&!\declarator&}|hdclindex{406}{usage}}{24}
\indexentry{Declarator={\verbatim@font !\verb*&!\Declarator&}|hdclindex{406}{usage}}{24}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_!\meta {declarator}_group:nn={\verbatim@font \bslash groupthm_\meta {declarator}_group:nn}|hdclindex{416}{usage}}{24}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group_rule:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group&!\_!\verb*&rule:nnnn&}|hdclindex{424}{usage}}{24}
\indexentry{str commands:=\pkg{str} commands:>str_set:Nn={\verbatim@font !\verb*&!\str&!\_!\verb*&set:Nn&}|hdclindex{434}{}}{385}
\indexentry{str commands:=\pkg{str} commands:>tmpa_str={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&str&}|hdclindex{434}{}}{385}
\indexentry{str commands:=\pkg{str} commands:>str_if_eq:nnTF={\verbatim@font !\verb*&!\str&!\_!\verb*&if&!\_!\verb*&eq:nnTF&}|hdclindex{436}{}}{387}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{438}{}}{389}
\indexentry{str commands:=\pkg{str} commands:>tmpa_str={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&str&}|hdclindex{438}{}}{389}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gset_rule:nnnn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gset&!\_!\verb*&rule:nnnn&}|hdclindex{441}{}}{392}
\indexentry{str commands:=\pkg{str} commands:>tmpa_str={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&str&}|hdclindex{441}{}}{392}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{444}{}}{395}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{445}{main}}{396}
\indexentry{NewDocumentCommand={\verbatim@font !\verb*&!\NewDocumentCommand&}|hdclindex{446}{}}{396}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group_rule:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group&!\_!\verb*&rule:nnnn&}|hdclindex{448}{}}{398}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_parent:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&parent:nn&}|hdclindex{450}{main}}{400}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{451}{}}{400}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_ensure_group_exists:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&ensure&!\_!\verb*&group&!\_!\verb*&exists:n&}|hdclindex{453}{}}{402}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_ensure_group_exists:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&ensure&!\_!\verb*&group&!\_!\verb*&exists:n&}|hdclindex{454}{}}{403}
\indexentry{clist commands:=\pkg{clist} commands:>clist_gput_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&gput&!\_!\verb*&left:Nn&}|hdclindex{455}{}}{404}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{457}{}}{406}
\indexentry{AddTheoremGroupParent={\verbatim@font !\verb*&!\AddTheoremGroupParent&}|hdclindex{458}{main}}{407}
\indexentry{NewDocumentCommand={\verbatim@font !\verb*&!\NewDocumentCommand&}|hdclindex{459}{}}{407}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_parent:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&parent:nn&}|hdclindex{461}{}}{409}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_push_tmpa_seq:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&push&!\_!\verb*&tmpa&!\_!\verb*&seq:n&}|hdclindex{463}{main}}{411}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_flatten_groups_hierarchy:nN={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&flatten&!\_!\verb*&groups&!\_!\verb*&hierarchy:nN&}|hdclindex{465}{main}}{412}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{466}{}}{412}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_push_tmpa_seq:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&push&!\_!\verb*&tmpa&!\_!\verb*&seq:n&}|hdclindex{466}{}}{412}
\indexentry{seq commands:=\pkg{seq} commands:>seq_push:Nn={\verbatim@font !\verb*&!\seq&!\_!\verb*&push:Nn&}|hdclindex{468}{}}{414}
\indexentry{seq commands:=\pkg{seq} commands:>tmpa_seq={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&seq&}|hdclindex{468}{}}{414}
\indexentry{DeclareTheoremGroupRule={\verbatim@font !\verb*&!\DeclareTheoremGroupRule&}|hdclindex{445}{usage}}{25}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_parent:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&parent:nn&}|hdclindex{450}{usage}}{25}
\indexentry{AddTheoremGroupParent={\verbatim@font !\verb*&!\AddTheoremGroupParent&}|hdclindex{458}{usage}}{25}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_parent:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&parent:nn&}|hdclindex{458}{usage}}{25}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_push_tmpa_seq:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&push&!\_!\verb*&tmpa&!\_!\verb*&seq:n&}|hdclindex{463}{usage}}{25}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{470}{}}{416}
\indexentry{clist commands:=\pkg{clist} commands:>clist_clear:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&clear:N&}|hdclindex{472}{}}{418}
\indexentry{seq commands:=\pkg{seq} commands:>seq_set_from_clist:Nn={\verbatim@font !\verb*&!\seq&!\_!\verb*&set&!\_!\verb*&from&!\_!\verb*&clist:Nn&}|hdclindex{473}{}}{419}
\indexentry{seq commands:=\pkg{seq} commands:>tmpa_seq={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&seq&}|hdclindex{473}{}}{419}
\indexentry{bool commands:=\pkg{bool} commands:>bool_until_do:nn={\verbatim@font !\verb*&!\bool&!\_!\verb*&until&!\_!\verb*&do:nn&}|hdclindex{474}{}}{420}
\indexentry{seq commands:=\pkg{seq} commands:>seq_if_empty_p:N={\verbatim@font !\verb*&!\seq&!\_!\verb*&if&!\_!\verb*&empty&!\_!\verb*&p:N&}|hdclindex{476}{}}{422}
\indexentry{seq commands:=\pkg{seq} commands:>tmpa_seq={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&seq&}|hdclindex{476}{}}{422}
\indexentry{seq commands:=\pkg{seq} commands:>seq_pop:NN={\verbatim@font !\verb*&!\seq&!\_!\verb*&pop:NN&}|hdclindex{479}{}}{425}
\indexentry{seq commands:=\pkg{seq} commands:>tmpa_seq={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&seq&}|hdclindex{479}{}}{425}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{479}{}}{425}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_ensure_group_exists:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&ensure&!\_!\verb*&group&!\_!\verb*&exists:n&}|hdclindex{480}{}}{426}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{480}{}}{426}
\indexentry{clist commands:=\pkg{clist} commands:>clist_if_in:NnTF={\verbatim@font !\verb*&!\clist&!\_!\verb*&if&!\_!\verb*&in:NnTF&}|hdclindex{481}{}}{427}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{481}{}}{427}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&left:Nn&}|hdclindex{483}{}}{429}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{483}{}}{429}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:NN&}|hdclindex{484}{}}{430}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{485}{}}{431}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_push_tmpa_seq:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&push&!\_!\verb*&tmpa&!\_!\verb*&seq:n&}|hdclindex{486}{}}{432}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_append_to_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&append&!\_!\verb*&to&!\_!\verb*&group:nn&}|hdclindex{490}{main}}{436}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{491}{}}{436}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nn&}|hdclindex{493}{}}{438}
\indexentry{int commands:=\pkg{int} commands:>int_use:N={\verbatim@font !\verb*&!\int&!\_!\verb*&use:N&}|hdclindex{493}{}}{438}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_append_groups_int={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&append&!\_!\verb*&groups&!\_!\verb*&int&}|hdclindex{493}{}}{438}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_parent:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&parent:nn&}|hdclindex{494}{}}{439}
\indexentry{int commands:=\pkg{int} commands:>int_use:N={\verbatim@font !\verb*&!\int&!\_!\verb*&use:N&}|hdclindex{494}{}}{439}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_append_groups_int={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&append&!\_!\verb*&groups&!\_!\verb*&int&}|hdclindex{494}{}}{439}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_group_rule:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&group&!\_!\verb*&rule:nnnn&}|hdclindex{495}{}}{440}
\indexentry{int commands:=\pkg{int} commands:>int_use:N={\verbatim@font !\verb*&!\int&!\_!\verb*&use:N&}|hdclindex{496}{}}{441}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_append_groups_int={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&append&!\_!\verb*&groups&!\_!\verb*&int&}|hdclindex{496}{}}{441}
\indexentry{int commands:=\pkg{int} commands:>int_gincr:N={\verbatim@font !\verb*&!\int&!\_!\verb*&gincr:N&}|hdclindex{497}{}}{442}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_append_groups_int={\verbatim@font !\verb*&!\g&!\_!\_!\verb*&groupthm&!\_!\verb*&append&!\_!\verb*&groups&!\_!\verb*&int&}|hdclindex{497}{}}{442}
\indexentry{end={\verbatim@font !\verb*&!\end&}|hdclindex{499}{}}{444}
\indexentry{end={\verbatim@font !\verb*&!\end&}|hdclindex{500}{}}{445}
\indexentry{begin={\verbatim@font !\verb*&!\begin&}|hdclindex{504}{}}{449}
\indexentry{AppendToTheoremGroup={\verbatim@font !\verb*&!\AppendToTheoremGroup&}|hdclindex{504}{}}{449}
\indexentry{begin={\verbatim@font !\verb*&!\begin&}|hdclindex{505}{}}{450}
\indexentry{cs={\verbatim@font !\verb*&!\cs&}|hdclindex{506}{}}{451}
\indexentry{marg={\verbatim@font !\verb*&!\marg&}|hdclindex{506}{}}{451}
\indexentry{marg={\verbatim@font !\verb*&!\marg&}|hdclindex{506}{}}{451}
\indexentry{end={\verbatim@font !\verb*&!\end&}|hdclindex{507}{}}{452}
\indexentry{begin={\verbatim@font !\verb*&!\begin&}|hdclindex{511}{}}{456}
\indexentry{NewDocumentCommand={\verbatim@font !\verb*&!\NewDocumentCommand&}|hdclindex{512}{}}{457}
\indexentry{AppendToTheoremGroup={\verbatim@font !\verb*&!\AppendToTheoremGroup&}|hdclindex{512}{}}{457}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_flatten_groups_hierarchy:nN={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&flatten&!\_!\verb*&groups&!\_!\verb*&hierarchy:nN&}|hdclindex{465}{usage}}{26}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_append_to_group:nn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&append&!\_!\verb*&to&!\_!\verb*&group:nn&}|hdclindex{490}{usage}}{26}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{516}{}}{461}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{517}{}}{462}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_group:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&group:nnnnn&}|hdclindex{518}{}}{463}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_powerset_clist_foreach:Nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&powerset&!\_!\verb*&clist&!\_!\verb*&foreach:Nn&}|hdclindex{519}{main}}{464}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{520}{}}{464}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_copied_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&copied&!\_!\verb*&clist&}|hdclindex{520}{}}{464}
\indexentry{seq commands:=\pkg{seq} commands:>seq_new:N={\verbatim@font !\verb*&!\seq&!\_!\verb*&new:N&}|hdclindex{521}{}}{465}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_saved_seq={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&saved&!\_!\verb*&seq&}|hdclindex{521}{}}{465}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{522}{}}{466}
\indexentry{clist commands:=\pkg{clist} commands:>clist_remove_all:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&remove&!\_!\verb*&all:Nn&}|hdclindex{522}{}}{466}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{523}{}}{467}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_clist_foreach_aux:Nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&powerset&!\_!\verb*&clist&!\_!\verb*&foreach&!\_!\verb*&aux:Nn&}|hdclindex{523}{}}{467}
\indexentry{clist commands:=\pkg{clist} commands:>clist_if_empty:NTF={\verbatim@font !\verb*&!\clist&!\_!\verb*&if&!\_!\verb*&empty:NTF&}|hdclindex{525}{}}{469}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_copied_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&copied&!\_!\verb*&clist&}|hdclindex{525}{}}{469}
\indexentry{clist commands:=\pkg{clist} commands:>clist_get:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&get:NN&}|hdclindex{530}{}}{474}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_copied_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&copied&!\_!\verb*&clist&}|hdclindex{530}{}}{474}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{530}{}}{474}
\indexentry{seq commands:=\pkg{seq} commands:>seq_push:Nn={\verbatim@font !\verb*&!\seq&!\_!\verb*&push:Nn&}|hdclindex{531}{}}{475}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_saved_seq={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&saved&!\_!\verb*&seq&}|hdclindex{531}{}}{475}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{531}{}}{475}
\indexentry{clist commands:=\pkg{clist} commands:>clist_pop:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&pop:NN&}|hdclindex{532}{}}{476}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_copied_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&copied&!\_!\verb*&clist&}|hdclindex{532}{}}{476}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{532}{}}{476}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_clist_foreach_aux:Nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&powerset&!\_!\verb*&clist&!\_!\verb*&foreach&!\_!\verb*&aux:Nn&}|hdclindex{533}{}}{477}
\indexentry{seq commands:=\pkg{seq} commands:>seq_get:NN={\verbatim@font !\verb*&!\seq&!\_!\verb*&get:NN&}|hdclindex{534}{}}{478}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_saved_seq={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&saved&!\_!\verb*&seq&}|hdclindex{534}{}}{478}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{534}{}}{478}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&left:Nn&}|hdclindex{535}{}}{479}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{535}{}}{479}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_clist_foreach_aux:Nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&powerset&!\_!\verb*&clist&!\_!\verb*&foreach&!\_!\verb*&aux:Nn&}|hdclindex{536}{}}{480}
\indexentry{seq commands:=\pkg{seq} commands:>seq_get:NN={\verbatim@font !\verb*&!\seq&!\_!\verb*&get:NN&}|hdclindex{537}{}}{481}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_saved_seq={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&saved&!\_!\verb*&seq&}|hdclindex{537}{}}{481}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{537}{}}{481}
\indexentry{clist commands:=\pkg{clist} commands:>clist_remove_all:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&remove&!\_!\verb*&all:Nn&}|hdclindex{538}{}}{482}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{538}{}}{482}
\indexentry{clist commands:=\pkg{clist} commands:>clist_push:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&push:Nn&}|hdclindex{539}{}}{483}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_copied_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&copied&!\_!\verb*&clist&}|hdclindex{539}{}}{483}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{539}{}}{483}
\indexentry{seq commands:=\pkg{seq} commands:>seq_pop:NN={\verbatim@font !\verb*&!\seq&!\_!\verb*&pop:NN&}|hdclindex{540}{}}{484}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_saved_seq={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&saved&!\_!\verb*&seq&}|hdclindex{540}{}}{484}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{540}{}}{484}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{543}{}}{487}
\indexentry{powerset commands:=\pkg{powerset} commands:>powerset_clist_foreach:Nn={\verbatim@font !\verb*&!\powerset&!\_!\verb*&clist&!\_!\verb*&foreach:Nn&}|hdclindex{543}{}}{487}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set_eq:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{545}{}}{489}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_copied_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&copied&!\_!\verb*&clist&}|hdclindex{545}{}}{489}
\indexentry{clist commands:=\pkg{clist} commands:>clist_clear:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&clear:N&}|hdclindex{546}{}}{490}
\indexentry{clist commands:=\pkg{clist} commands:>clist_remove_duplicates:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&remove&!\_!\verb*&duplicates:N&}|hdclindex{547}{}}{491}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_copied_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&copied&!\_!\verb*&clist&}|hdclindex{547}{}}{491}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_clist_foreach_aux:Nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&powerset&!\_!\verb*&clist&!\_!\verb*&foreach&!\_!\verb*&aux:Nn&}|hdclindex{548}{}}{492}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set_eq:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{549}{}}{493}
\indexentry{powerset internal commands:=\pkg{powerset} internal commands:>powerset_copied_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&powerset&!\_!\verb*&copied&!\_!\verb*&clist&}|hdclindex{549}{}}{493}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_powerset_clist_foreach:Nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&powerset&!\_!\verb*&clist&!\_!\verb*&foreach:Nn&}|hdclindex{519}{usage}}{27}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_ensure_group_exists:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&ensure&!\_!\verb*&group&!\_!\verb*&exists:n&}|hdclindex{551}{main}}{495}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{552}{}}{495}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist:NTF={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist:NTF&}|hdclindex{554}{}}{497}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnn&}|hdclindex{556}{}}{499}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{559}{}}{502}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_use_group:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&use&!\_!\verb*&group:n&}|hdclindex{560}{main}}{503}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{561}{}}{503}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_ensure_group_exists:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&ensure&!\_!\verb*&group&!\_!\verb*&exists:n&}|hdclindex{563}{}}{505}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{564}{}}{506}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_use_function_on_name:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&use&!\_!\verb*&function&!\_!\verb*&on&!\_!\verb*&name:n&}|hdclindex{566}{main}}{508}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{567}{}}{508}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&set:Nn&}|hdclindex{569}{}}{510}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{569}{}}{510}
\indexentry{tl commands:=\pkg{tl} commands:>tl_use:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&use:N&}|hdclindex{571}{}}{512}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{571}{}}{512}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_theorem:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&theorem:nnnn&}|hdclindex{574}{main}}{515}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{575}{}}{515}
\indexentry{tl commands:=\pkg{tl} commands:>tl_clear:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&clear:N&}|hdclindex{577}{}}{517}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_prefix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&prefix&!\_!\verb*&tl&}|hdclindex{577}{}}{517}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&set:Nn&}|hdclindex{578}{}}{518}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{578}{}}{518}
\indexentry{tl commands:=\pkg{tl} commands:>tl_clear:N={\verbatim@font !\verb*&!\tl&!\_!\verb*&clear:N&}|hdclindex{579}{}}{519}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_suffix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&suffix&!\_!\verb*&tl&}|hdclindex{579}{}}{519}
\indexentry{clist commands:=\pkg{clist} commands:>clist_clear:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&clear:N&}|hdclindex{580}{}}{520}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_mapname_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&mapname&!\_!\verb*&clist&}|hdclindex{580}{}}{520}
\indexentry{clist commands:=\pkg{clist} commands:>clist_clear:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&clear:N&}|hdclindex{581}{}}{521}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{581}{}}{521}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_ensure_group_exists:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&ensure&!\_!\verb*&group&!\_!\verb*&exists:n&}|hdclindex{551}{usage}}{28}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_use_group:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&use&!\_!\verb*&group:n&}|hdclindex{560}{usage}}{28}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_use_function_on_name:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&use&!\_!\verb*&function&!\_!\verb*&on&!\_!\verb*&name:n&}|hdclindex{566}{usage}}{28}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{566}{usage}}{28}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_theorem:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&theorem:nnnn&}|hdclindex{574}{usage}}{28}
\indexentry{declaretheorem={\verbatim@font !\verb*&!\declaretheorem&}|hdclindex{574}{usage}}{28}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gremove_code:nn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gremove&!\_!\verb*&code:nn&}|hdclindex{582}{}}{522}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gremove_code:nn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gremove&!\_!\verb*&code:nn&}|hdclindex{583}{}}{523}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gremove_code:nn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gremove&!\_!\verb*&code:nn&}|hdclindex{584}{}}{524}
\indexentry{hook commands:=\pkg{hook} commands:>hook_gremove_code:nn={\verbatim@font !\verb*&!\hook&!\_!\verb*&gremove&!\_!\verb*&code:nn&}|hdclindex{585}{}}{525}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_flatten_groups_hierarchy:nN={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&flatten&!\_!\verb*&groups&!\_!\verb*&hierarchy:nN&}|hdclindex{586}{}}{526}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{586}{}}{526}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:NN&}|hdclindex{587}{}}{527}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{587}{}}{527}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_use_group:n={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&use&!\_!\verb*&group:n&}|hdclindex{587}{}}{527}
\indexentry{tl commands:=\pkg{tl} commands:>tl_log:n={\verbatim@font !\verb*&!\tl&!\_!\verb*&log:n&}|hdclindex{588}{}}{528}
\indexentry{clist commands:=\pkg{clist} commands:>clist_use:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&use:Nn&}|hdclindex{588}{}}{528}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{588}{}}{528}
\indexentry{hook commands:=\pkg{hook} commands:>hook_use:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&use:n&}|hdclindex{590}{}}{530}
\indexentry{hook commands:=\pkg{hook} commands:>hook_use:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&use:n&}|hdclindex{591}{}}{531}
\indexentry{hook commands:=\pkg{hook} commands:>hook_use:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&use:n&}|hdclindex{592}{}}{532}
\indexentry{hook commands:=\pkg{hook} commands:>hook_use:n={\verbatim@font !\verb*&!\hook&!\_!\verb*&use:n&}|hdclindex{593}{}}{533}
\indexentry{clist commands:=\pkg{clist} commands:>clist_map_function:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&map&!\_!\verb*&function:NN&}|hdclindex{594}{}}{534}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_mapname_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&mapname&!\_!\verb*&clist&}|hdclindex{594}{}}{534}
\indexentry{map commands:=\pkg{map} commands:>map_use_on_name:n={\verbatim@font !\verb*&!\map&!\_!\verb*&use&!\_!\verb*&on&!\_!\verb*&name:n&}|hdclindex{594}{}}{534}
\indexentry{tl commands:=\pkg{tl} commands:>tl_set:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&set:Nn&}|hdclindex{595}{}}{535}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{595}{}}{535}
\indexentry{tl commands:=\pkg{tl} commands:>tl_put_right:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{596}{}}{536}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{596}{}}{536}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_prefix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&prefix&!\_!\verb*&tl&}|hdclindex{596}{}}{536}
\indexentry{tl commands:=\pkg{tl} commands:>tl_put_right:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{597}{}}{537}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{597}{}}{537}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{597}{}}{537}
\indexentry{tl commands:=\pkg{tl} commands:>tl_put_right:Nn={\verbatim@font !\verb*&!\tl&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{598}{}}{538}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{598}{}}{538}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_suffix_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&suffix&!\_!\verb*&tl&}|hdclindex{598}{}}{538}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{599}{}}{539}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{599}{}}{539}
\indexentry{tl commands:=\pkg{tl} commands:>tmpa_tl={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&tl&}|hdclindex{599}{}}{539}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{600}{}}{540}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{600}{}}{540}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_declare_theorem:nn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&declare&!\_!\verb*&theorem:nn&}|hdclindex{601}{}}{541}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{602}{}}{542}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_theorem:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&theorem:nnnn&}|hdclindex{605}{main}}{545}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_theorem:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&theorem:nnnn&}|hdclindex{605}{main}}{545}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_multiple:nnnNNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&multiple:nnnNNnn&}|hdclindex{606}{}}{545}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_error:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&error:&}|hdclindex{610}{}}{549}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_theorem:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&theorem:nnnn&}|hdclindex{605}{usage}}{29}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_theorem:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&theorem:nnnn&}|hdclindex{611}{}}{550}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{614}{}}{553}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{615}{}}{554}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{616}{}}{555}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{617}{}}{556}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_theorem:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&theorem:nnn&}|hdclindex{618}{main}}{557}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_theorem:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&theorem:nnn&}|hdclindex{618}{main}}{557}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{619}{}}{557}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_set_normalized_keys:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nnn&}|hdclindex{623}{}}{561}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:nTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:nTF&}|hdclindex{624}{}}{562}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&left:Nn&}|hdclindex{626}{}}{564}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{626}{}}{564}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{628}{}}{566}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{630}{}}{568}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{631}{}}{569}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{632}{}}{570}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:NTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:NTF&}|hdclindex{633}{}}{571}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{633}{}}{571}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&left:Nn&}|hdclindex{635}{}}{573}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{635}{}}{573}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{636}{}}{574}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{638}{}}{576}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{639}{}}{577}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{640}{}}{578}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{643}{main}}{581}
\indexentry{NewGroupedTheorem*={\verbatim@font !\verb*&!\NewGroupedTheorem*&}|hdclindex{643}{main}}{581}
\indexentry{ProvideGroupedTheorem={\verbatim@font !\verb*&!\ProvideGroupedTheorem&}|hdclindex{643}{main}}{581}
\indexentry{ProvideGroupedTheorem*={\verbatim@font !\verb*&!\ProvideGroupedTheorem*&}|hdclindex{643}{main}}{581}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple_document:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple&!\_!\verb*&document:nnnn&}|hdclindex{644}{}}{581}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_Declarator:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&Declarator:&}|hdclindex{646}{}}{583}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_theorem:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&theorem:nnn&}|hdclindex{618}{usage}}{30}
\indexentry{NewGroupedTheorem={\verbatim@font !\verb*&!\NewGroupedTheorem&}|hdclindex{643}{usage}}{30}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{649}{}}{586}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_family:nnnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&family:nnnnn&}|hdclindex{654}{main}}{591}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{655}{}}{591}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&set:Nn&}|hdclindex{657}{}}{593}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{657}{}}{593}
\indexentry{powerset commands:=\pkg{powerset} commands:>powerset_clist_foreach:Nn={\verbatim@font !\verb*&!\powerset&!\_!\verb*&clist&!\_!\verb*&foreach:Nn&}|hdclindex{658}{}}{594}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{658}{}}{594}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set_eq:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{660}{}}{596}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{660}{}}{596}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{660}{}}{596}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{661}{}}{597}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{661}{}}{597}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_sort_group_names:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&sort&!\_!\verb*&group&!\_!\verb*&names:&}|hdclindex{662}{}}{598}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{663}{}}{599}
\indexentry{clist commands:=\pkg{clist} commands:>clist_use:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&use:Nn&}|hdclindex{664}{}}{600}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{664}{}}{600}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{665}{}}{601}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{669}{}}{605}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set_eq:NN={\verbatim@font !\verb*&!\clist&!\_!\verb*&set&!\_!\verb*&eq:NN&}|hdclindex{670}{}}{606}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{670}{}}{606}
\indexentry{clist commands:=\pkg{clist} commands:>clist_new:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&new:N&}|hdclindex{671}{}}{607}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&set:Nn&}|hdclindex{672}{}}{608}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family:nnnnn&}|hdclindex{674}{main}}{610}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_family:nnnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&family:nnnnn&}|hdclindex{654}{usage}}{31}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{659}{usage}}{31}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_multiple:nnnNNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&multiple:nnnNNnn&}|hdclindex{675}{}}{610}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_error:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&error:&}|hdclindex{679}{}}{614}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_family:nnnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&family:nnnnn&}|hdclindex{680}{}}{615}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{683}{}}{618}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{684}{}}{619}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_family:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&family:nnnnn&}|hdclindex{684}{}}{619}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family:nnn&}|hdclindex{685}{main}}{620}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_family:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&family:nnn&}|hdclindex{685}{main}}{620}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple:nnn&}|hdclindex{686}{}}{620}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_set_normalized_keys:nnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&set&!\_!\verb*&normalized&!\_!\verb*&keys:nnn&}|hdclindex{690}{}}{624}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:nTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:nTF&}|hdclindex{691}{}}{625}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&set:Nn&}|hdclindex{693}{}}{627}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{693}{}}{627}
\indexentry{clist commands:=\pkg{clist} commands:>clist_clear:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&clear:N&}|hdclindex{696}{}}{630}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{696}{}}{630}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:NTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:NTF&}|hdclindex{698}{}}{632}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{698}{}}{632}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&left:Nn&}|hdclindex{700}{}}{634}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{700}{}}{634}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{702}{}}{636}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{704}{}}{638}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_name_tl={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&name&!\_!\verb*&tl&}|hdclindex{705}{}}{639}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_thmtools_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&thmtools&!\_!\verb*&clist&}|hdclindex{706}{}}{640}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{707}{}}{641}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{709}{main}}{643}
\indexentry{NewGroupedTheoremFamily*={\verbatim@font !\verb*&!\NewGroupedTheoremFamily*&}|hdclindex{709}{main}}{643}
\indexentry{ProvideGroupedTheoremFamily={\verbatim@font !\verb*&!\ProvideGroupedTheoremFamily&}|hdclindex{709}{main}}{643}
\indexentry{ProvideGroupedTheoremFamily*={\verbatim@font !\verb*&!\ProvideGroupedTheoremFamily*&}|hdclindex{709}{main}}{643}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple_document:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple&!\_!\verb*&document:nnnn&}|hdclindex{710}{}}{643}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_Declarator:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&Declarator:&}|hdclindex{712}{}}{645}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{715}{}}{648}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family:nnnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family:nnnnn&}|hdclindex{674}{usage}}{32}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family:nnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family:nnn&}|hdclindex{685}{usage}}{32}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{709}{usage}}{32}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_theorem_to_group:n={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:n&}|hdclindex{720}{main}}{653}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{721}{}}{653}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:NTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:NTF&}|hdclindex{723}{}}{655}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_in_family_options_environment_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&in&!\_!\verb*&family&!\_!\verb*&options&!\_!\verb*&environment&!\_!\verb*&bool&}|hdclindex{723}{}}{655}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_left:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&left:Nn&}|hdclindex{725}{}}{657}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{725}{}}{657}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nn&}|hdclindex{728}{}}{660}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{731}{main}}{663}
\indexentry{NewDocumentCommand={\verbatim@font !\verb*&!\NewDocumentCommand&}|hdclindex{732}{}}{663}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_theorem_to_group:n={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:n&}|hdclindex{734}{}}{665}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_family_options:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{736}{main}}{667}
\indexentry{cs commands:=\pkg{cs} commands:>cs_new:Npn={\verbatim@font !\verb*&!\cs&!\_!\verb*&new:Npn&}|hdclindex{737}{}}{667}
\indexentry{DeclareDocumentEnvironment={\verbatim@font !\verb*&!\DeclareDocumentEnvironment&}|hdclindex{739}{}}{669}
\indexentry{clist commands:=\pkg{clist} commands:>clist_clear:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&clear:N&}|hdclindex{743}{}}{673}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{743}{}}{673}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_theorem_to_group:n={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:n&}|hdclindex{720}{usage}}{33}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{731}{usage}}{33}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_family_options:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{736}{usage}}{33}
\indexentry{bool commands:=\pkg{bool} commands:>bool_set_true:N={\verbatim@font !\verb*&!\bool&!\_!\verb*&set&!\_!\verb*&true:N&}|hdclindex{744}{}}{674}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_in_family_options_environment_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&in&!\_!\verb*&family&!\_!\verb*&options&!\_!\verb*&environment&!\_!\verb*&bool&}|hdclindex{744}{}}{674}
\indexentry{bool commands:=\pkg{bool} commands:>bool_set_false:N={\verbatim@font !\verb*&!\bool&!\_!\verb*&set&!\_!\verb*&false:N&}|hdclindex{746}{}}{676}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_in_family_options_environment_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&in&!\_!\verb*&family&!\_!\verb*&options&!\_!\verb*&environment&!\_!\verb*&bool&}|hdclindex{746}{}}{676}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{747}{}}{677}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{747}{}}{677}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_sort_group_names:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&sort&!\_!\verb*&group&!\_!\verb*&names:&}|hdclindex{748}{}}{678}
\indexentry{cs commands:=\pkg{cs} commands:>cs_if_exist:NTF={\verbatim@font !\verb*&!\cs&!\_!\verb*&if&!\_!\verb*&exist:NTF&}|hdclindex{749}{}}{679}
\indexentry{clist commands:=\pkg{clist} commands:>clist_use:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&use:Nn&}|hdclindex{749}{}}{679}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{749}{}}{679}
\indexentry{begin={\verbatim@font !\verb*&!\begin&}|hdclindex{751}{}}{681}
\indexentry{clist commands:=\pkg{clist} commands:>clist_use:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&use:Nn&}|hdclindex{751}{}}{681}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{751}{}}{681}
\indexentry{msg commands:=\pkg{msg} commands:>msg_error:nnnn={\verbatim@font !\verb*&!\msg&!\_!\verb*&error:nnnn&}|hdclindex{754}{}}{684}
\indexentry{clist commands:=\pkg{clist} commands:>clist_use:Nnnn={\verbatim@font !\verb*&!\clist&!\_!\verb*&use:Nnnn&}|hdclindex{756}{}}{686}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{756}{}}{686}
\indexentry{clist commands:=\pkg{clist} commands:>clist_clear:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&clear:N&}|hdclindex{760}{}}{690}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{760}{}}{690}
\indexentry{bool commands:=\pkg{bool} commands:>bool_set_true:N={\verbatim@font !\verb*&!\bool&!\_!\verb*&set&!\_!\verb*&true:N&}|hdclindex{761}{}}{691}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_in_family_options_environment_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&in&!\_!\verb*&family&!\_!\verb*&options&!\_!\verb*&environment&!\_!\verb*&bool&}|hdclindex{761}{}}{691}
\indexentry{bool commands:=\pkg{bool} commands:>bool_set_false:N={\verbatim@font !\verb*&!\bool&!\_!\verb*&set&!\_!\verb*&false:N&}|hdclindex{763}{}}{693}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_in_family_options_environment_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&in&!\_!\verb*&family&!\_!\verb*&options&!\_!\verb*&environment&!\_!\verb*&bool&}|hdclindex{763}{}}{693}
\indexentry{clist commands:=\pkg{clist} commands:>clist_put_right:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&put&!\_!\verb*&right:Nn&}|hdclindex{764}{}}{694}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{764}{}}{694}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_sort_group_names:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&sort&!\_!\verb*&group&!\_!\verb*&names:&}|hdclindex{765}{}}{695}
\indexentry{end={\verbatim@font !\verb*&!\end&}|hdclindex{766}{}}{696}
\indexentry{clist commands:=\pkg{clist} commands:>clist_use:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&use:Nn&}|hdclindex{766}{}}{696}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_group_clist={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&group&!\_!\verb*&clist&}|hdclindex{766}{}}{696}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{769}{main}}{699}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_renew_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&renew&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{769}{main}}{699}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_provide_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&provide&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{769}{main}}{699}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_declare_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&declare&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{769}{main}}{699}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_multiple:nnnNNnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&multiple:nnnNNnn&}|hdclindex{770}{}}{699}
\indexentry{use commands:=\pkg{use} commands:>use_none:n={\verbatim@font !\verb*&!\use&!\_!\verb*&none:n&}|hdclindex{774}{}}{703}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_define_family_options:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&define&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{775}{}}{704}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{778}{}}{707}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{779}{}}{708}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{780}{}}{709}
\indexentry{cs commands:=\pkg{cs} commands:>cs_generate_variant:Nn={\verbatim@font !\verb*&!\cs&!\_!\verb*&generate&!\_!\verb*&variant:Nn&}|hdclindex{781}{}}{710}
\indexentry{AddTheoremToGroup={\verbatim@font !\verb*&!\AddTheoremToGroup&}|hdclindex{742}{usage}}{34}
\indexentry{NewGroupedTheoremFamily={\verbatim@font !\verb*&!\NewGroupedTheoremFamily&}|hdclindex{747}{usage}}{34}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_new_family_options:nnnn={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&new&!\_!\verb*&family&!\_!\verb*&options:nnnn&}|hdclindex{769}{usage}}{34}
\indexentry{NewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions&}|hdclindex{782}{main}}{711}
\indexentry{NewGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions*&}|hdclindex{782}{main}}{711}
\indexentry{RenewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\RenewGroupedTheoremFamilyOptions&}|hdclindex{782}{main}}{711}
\indexentry{RenewGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\RenewGroupedTheoremFamilyOptions*&}|hdclindex{782}{main}}{711}
\indexentry{ProvideGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\ProvideGroupedTheoremFamilyOptions&}|hdclindex{782}{main}}{711}
\indexentry{ProvideGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\ProvideGroupedTheoremFamilyOptions*&}|hdclindex{782}{main}}{711}
\indexentry{DeclareGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\DeclareGroupedTheoremFamilyOptions&}|hdclindex{782}{main}}{711}
\indexentry{DeclareGroupedTheoremFamilyOptions*={\verbatim@font !\verb*&!\DeclareGroupedTheoremFamilyOptions*&}|hdclindex{782}{main}}{711}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_wrap_multiple_document:nnnn={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&wrap&!\_!\verb*&multiple&!\_!\verb*&document:nnnn&}|hdclindex{783}{}}{711}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_Declarator:={\verbatim@font !\verb*&!\&!\_!\_!\verb*&groupthm&!\_!\verb*&Declarator:&}|hdclindex{785}{}}{713}
\indexentry{keys commands:=\pkg{keys} commands:>keys_set:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&set:nn&}|hdclindex{788}{}}{716}
\indexentry{keys commands:=\pkg{keys} commands:>keys_set:nn={\verbatim@font !\verb*&!\keys&!\_!\verb*&set:nn&}|hdclindex{789}{}}{717}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:nTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:nTF&}|hdclindex{790}{}}{718}
\indexentry{clist commands:=\pkg{clist} commands:>clist_set:Nn={\verbatim@font !\verb*&!\clist&!\_!\verb*&set:Nn&}|hdclindex{792}{}}{720}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{792}{}}{720}
\indexentry{clist commands:=\pkg{clist} commands:>clist_clear:N={\verbatim@font !\verb*&!\clist&!\_!\verb*&clear:N&}|hdclindex{795}{}}{723}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{795}{}}{723}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{797}{}}{725}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{801}{}}{729}
\indexentry{bool commands:=\pkg{bool} commands:>bool_if:NTF={\verbatim@font !\verb*&!\bool&!\_!\verb*&if:NTF&}|hdclindex{802}{}}{730}
\indexentry{groupthm internal commands:=\pkg{groupthm} internal commands:>groupthm_starred_version_bool={\verbatim@font !\verb*&!\l&!\_!\_!\verb*&groupthm&!\_!\verb*&starred&!\_!\verb*&version&!\_!\verb*&bool&}|hdclindex{802}{}}{730}
\indexentry{use commands:=\pkg{use} commands:>use:N={\verbatim@font !\verb*&!\use:N&}|hdclindex{804}{}}{732}
\indexentry{groupthm commands:=\pkg{groupthm} commands:>groupthm_add_theorem_to_group:n={\verbatim@font !\verb*&!\groupthm&!\_!\verb*&add&!\_!\verb*&theorem&!\_!\verb*&to&!\_!\verb*&group:n&}|hdclindex{809}{}}{737}
\indexentry{clist commands:=\pkg{clist} commands:>tmpa_clist={\verbatim@font !\verb*&!\l&!\_!\verb*&tmpa&!\_!\verb*&clist&}|hdclindex{811}{}}{739}
\indexentry{NewGroupedTheoremFamilyOptions={\verbatim@font !\verb*&!\NewGroupedTheoremFamilyOptions&}|hdclindex{782}{usage}}{35}

View file

@ -1,29 +0,0 @@
\BOOKMARK [1][-]{toc1.1}{Contents}{}% 1
\BOOKMARK [1][-]{section.0.1}{1 Concepts}{}% 2
\BOOKMARK [2][-]{subsection.0.1.1}{1.1 Theorem groups}{section.0.1}% 3
\BOOKMARK [2][-]{subsection.0.1.2}{1.2 Grouped theorems}{section.0.1}% 4
\BOOKMARK [2][-]{subsection.0.1.3}{1.3 Theorem families}{section.0.1}% 5
\BOOKMARK [2][-]{subsection.0.1.4}{1.4 General notions}{section.0.1}% 6
\BOOKMARK [1][-]{section.0.2}{2 Theorem groups}{}% 7
\BOOKMARK [2][-]{subsection.0.2.1}{2.1 Defining theorem groups}{section.0.2}% 8
\BOOKMARK [2][-]{subsection.0.2.2}{2.2 Controlling theorem group precedence}{section.0.2}% 9
\BOOKMARK [2][-]{subsection.0.2.3}{2.3 Inheritance of theorem groups}{section.0.2}% 10
\BOOKMARK [2][-]{subsection.0.2.4}{2.4 Appending to theorem groups}{section.0.2}% 11
\BOOKMARK [2][-]{subsection.0.2.5}{2.5 Default theorem groups}{section.0.2}% 12
\BOOKMARK [1][-]{section.0.3}{3 Grouped Theorems}{}% 13
\BOOKMARK [2][-]{subsection.0.3.1}{3.1 Defining grouped theorems}{section.0.3}% 14
\BOOKMARK [2][-]{subsection.0.3.2}{3.2 Defining families of grouped theorems}{section.0.3}% 15
\BOOKMARK [1][-]{section.0.4}{4 LaTeX3 interface}{}% 16
\BOOKMARK [2][-]{subsection.0.4.1}{4.1 Theorem groups}{section.0.4}% 17
\BOOKMARK [2][-]{subsection.0.4.2}{4.2 Grouped theorems}{section.0.4}% 18
\BOOKMARK [2][-]{subsection.0.4.3}{4.3 Theorem families}{section.0.4}% 19
\BOOKMARK [1][-]{section.0.5}{5 groupthm implementation}{}% 20
\BOOKMARK [2][-]{subsection.0.5.1}{5.1 Dependencies}{section.0.5}% 21
\BOOKMARK [2][-]{subsection.0.5.2}{5.2 Messages}{section.0.5}% 22
\BOOKMARK [2][-]{subsection.0.5.3}{5.3 Allocation and initialization}{section.0.5}% 23
\BOOKMARK [2][-]{subsection.0.5.4}{5.4 Key interface}{section.0.5}% 24
\BOOKMARK [2][-]{subsection.0.5.5}{5.5 Theorem groups}{section.0.5}% 25
\BOOKMARK [2][-]{subsection.0.5.6}{5.6 Iterating over powersets}{section.0.5}% 26
\BOOKMARK [2][-]{subsection.0.5.7}{5.7 Grouped Theorems}{section.0.5}% 27
\BOOKMARK [2][-]{subsection.0.5.8}{5.8 Theorem families}{section.0.5}% 28
\BOOKMARK [2][-]{subsection.0.5.9}{5.9 Theorem family options}{section.0.5}% 29

View file

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

View file

@ -1,28 +0,0 @@
\contentsline {section}{\numberline {1}Concepts}{3}{section.0.1}%
\contentsline {subsection}{\numberline {1.1}Theorem groups}{3}{subsection.0.1.1}%
\contentsline {subsection}{\numberline {1.2}Grouped theorems}{3}{subsection.0.1.2}%
\contentsline {subsection}{\numberline {1.3}Theorem families}{3}{subsection.0.1.3}%
\contentsline {subsection}{\numberline {1.4}General notions}{4}{subsection.0.1.4}%
\contentsline {section}{\numberline {2}Theorem groups}{5}{section.0.2}%
\contentsline {subsection}{\numberline {2.1}Defining theorem groups}{5}{subsection.0.2.1}%
\contentsline {subsection}{\numberline {2.2}Controlling theorem group precedence}{6}{subsection.0.2.2}%
\contentsline {subsection}{\numberline {2.3}Inheritance of theorem groups}{6}{subsection.0.2.3}%
\contentsline {subsection}{\numberline {2.4}Appending to theorem groups}{7}{subsection.0.2.4}%
\contentsline {subsection}{\numberline {2.5}Default theorem groups}{7}{subsection.0.2.5}%
\contentsline {section}{\numberline {3}Grouped Theorems}{8}{section.0.3}%
\contentsline {subsection}{\numberline {3.1}Defining grouped theorems}{8}{subsection.0.3.1}%
\contentsline {subsection}{\numberline {3.2}Defining families of grouped theorems}{9}{subsection.0.3.2}%
\contentsline {section}{\numberline {4}\LaTeX 3 interface}{10}{section.0.4}%
\contentsline {subsection}{\numberline {4.1}Theorem groups}{11}{subsection.0.4.1}%
\contentsline {subsection}{\numberline {4.2}Grouped theorems}{11}{subsection.0.4.2}%
\contentsline {subsection}{\numberline {4.3}Theorem families}{12}{subsection.0.4.3}%
\contentsline {section}{\numberline {5}\pkg {groupthm} implementation}{12}{section.0.5}%
\contentsline {subsection}{\numberline {5.1}Dependencies}{12}{subsection.0.5.1}%
\contentsline {subsection}{\numberline {5.2}Messages}{13}{subsection.0.5.2}%
\contentsline {subsection}{\numberline {5.3}Allocation and initialization}{14}{subsection.0.5.3}%
\contentsline {subsection}{\numberline {5.4}Key interface}{15}{subsection.0.5.4}%
\contentsline {subsection}{\numberline {5.5}Theorem groups}{17}{subsection.0.5.5}%
\contentsline {subsection}{\numberline {5.6}Iterating over powersets}{27}{subsection.0.5.6}%
\contentsline {subsection}{\numberline {5.7}Grouped Theorems}{28}{subsection.0.5.7}%
\contentsline {subsection}{\numberline {5.8}Theorem families}{31}{subsection.0.5.8}%
\contentsline {subsection}{\numberline {5.9}Theorem family options}{33}{subsection.0.5.9}%

View file

@ -46,16 +46,10 @@ __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 }
}
\NewDocumentEnvironment{oldproof} { }
{
__PACKAGE_MACRO__(saved_proof:w)
}
}
{
__PACKAGE_MACRO__(saved_endproof:)
}

View file

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

View file

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

View file

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

View file

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

View file

@ -21,21 +21,25 @@ __IF__(index)
%Emphasize \vocabulary
\RequirePackage{expl3}
\ExplSyntaxOn
\NewDocumentCommand{\vocab}{O{} m}{
\NewDocumentCommand{\vocab}{O{} m}{%
\textbf{\color{blue} #2}%
\if\relax\detokenize{#1}\relax%
\index[vocabindex]{\text_titlecase_first:n{#2}} % true branch: #1 was empty
\else
\else%
\index[vocabindex]{#1} % false branch: #1 was supplied
\fi
\fi%
}
\ExplSyntaxOff
\newcommand\printvocabindex{
\printindex[vocabindex]
\newcommand\printvocabindex{%
\printindex[vocabindex]%
}
\NewDocumentCommand{\PrintVocabIndex}{ }
{%
\printindex[vocabindex]%
}
\else
\NewDocumentCommand{\vocab}{O{} m }{
\textbf{\color{blue} #2}
}
\NewDocumentCommand{\vocab}{O{} m }{%
\textbf{\color{blue} #2}%
}%
\fi

View file

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

View file

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

View file

@ -30,7 +30,7 @@ __HEADER__(Faktor package that also handles cofaktors)
\raisebox{#4\ht2}{\usebox2}% Denominator
}
\DeclareDocumentCommand{\cofaktor}{s m O{-0.5} m O{0.5}}{% \newfaktor[*][#2]{#3}[#4]{#5} -> #2\#4
\DeclareDocumentCommand{\cofaktor}{s O{-0.5} m O{0.5} m}{% \newfaktor[*][#2]{#3}[#4]{#5} -> #2\#4
\setbox0=\hbox{\ensuremath{#3}}% Store numerator
\setbox1=\hbox{\ensuremath{\diagdown}}% Store slash /
\setbox2=\hbox{\ensuremath{#5}}% Store denominator

View file

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

View file

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

View file

@ -43,19 +43,19 @@ __END_OPTIONS_X__
% The starred versions of the four commands will ignore the language option and print their
% exact names (without the *, of course)
\DeclareMathOperator{\@__PACKAGE_PREFIX__ggT}{ggT}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__ggT}{\if@__PACKAGE_PREFIX__english gcd\else ggT\fi}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__ggT}{__IF__(english) gcd\else ggT\fi}
\def\ggT{\@ifstar\@__PACKAGE_PREFIX__ggT\@@__PACKAGE_PREFIX__ggT}
\DeclareMathOperator{\@__PACKAGE_PREFIX__gcd}{gcd}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__gcd}{\if@__PACKAGE_PREFIX__english gcd\else ggT\fi}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__gcd}{__IF__(english) gcd\else ggT\fi}
\def\gcd{\@ifstar\@__PACKAGE_PREFIX__gcd\@@__PACKAGE_PREFIX__gcd}
\DeclareMathOperator{\@__PACKAGE_PREFIX__kgV}{kgV}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__kgV}{\if@__PACKAGE_PREFIX__english lcm\else kgV\fi}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__kgV}{__IF__(english) lcm\else kgV\fi}
\def\kgV{\@ifstar\@__PACKAGE_PREFIX__kgV\@@__PACKAGE_PREFIX__kgV}
\DeclareMathOperator{\@__PACKAGE_PREFIX__lcm}{lcm}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__lcm}{\if@__PACKAGE_PREFIX__english lcm\else kgV\fi}
\DeclareMathOperator{\@@__PACKAGE_PREFIX__lcm}{__IF__(english) lcm\else kgV\fi}
\def\lcm{\@ifstar\@__PACKAGE_PREFIX__lcm\@@__PACKAGE_PREFIX__lcm}
%Complex numbers
@ -87,9 +87,11 @@ __END_OPTIONS_X__
\DeclareSimpleMathOperator{Tor}
\DeclareSimpleMathOperator{MaxSpec}
\DeclareSimpleMathOperator{Sh}
\DeclareSimpleMathOperator{PSh}
\DeclareSimpleMathOperator{Proj}
\DeclareSimpleMathOperator{QCoh}
\DeclareSimpleMathOperator{Fun}
\DeclareSimpleMathOperator{ord}
\DeclareMathOperator{\Nil}{\mathcal{N}il}
\DeclareMathOperator{\Ouv}{\mathcal{O}uv}
\DeclareMathOperator{\PreSh}{Pre-Sh}
@ -163,6 +165,10 @@ __END_OPTIONS_X__
\newcommand*{\cfun}{\ensuremath{\mathbbm{1}}}
\newcommand*{\One}{\cfun}
%% such that in set declarations
\newcommand{\suchthat}{\;\middle|\;}
%Paired Delimiters
\DeclarePairedDelimiter\ceil{\lceil}{\rceil}
\DeclarePairedDelimiter\floor{\lfloor}{\rfloor}
@ -187,6 +193,11 @@ __END_OPTIONS_X__
\newcommand\abelianization{^{\ab}}
\NewDocumentCommand\set{m}
{
\left\{ #1 \right\}
}
%Taken from user egreg on
% https://tex.stackexchange.com/a/22255
\newcommand\frestriction[2]{{% we make the whole thing an ordinary symbol

View file

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

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

@ -0,0 +1,62 @@
%MIT License
%
% Copyright (c) 2018 varkor
%
% Permission is hereby granted, free of charge, to any person obtaining a copy
% of this software and associated documentation files (the "Software"), to deal
% in the Software without restriction, including without limitation the rights
% to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
% copies of the Software, and to permit persons to whom the Software is
% furnished to do so, subject to the following conditions:
%
% The above copyright notice and this permission notice shall be included in all
% copies or substantial portions of the Software.
%
% THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
% IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
% FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
% AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
% LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
% OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
% SOFTWARE. *** quiver ***
%
%
% A package for drawing commutative diagrams exported from https://q.uiver.app.
%
% This package is currently a wrapper around the `tikz-cd` package, importing necessary TikZ
% libraries, and defining a new TikZ style for curves of a fixed height.
%
% Version: 1.2.1
% Authors:
% - varkor (https://github.com/varkor)
% - AndréC (https://tex.stackexchange.com/users/138900/andr%C3%A9c)
\NeedsTeXFormat{LaTeX2e}
\ProvidesPackage{quiver}[2021/01/11 quiver]
% `tikz-cd` is necessary to draw commutative diagrams.
\RequirePackage{tikz-cd}
% `amssymb` is necessary for `\lrcorner` and `\ulcorner`.
\RequirePackage{amssymb}
% `calc` is necessary to draw curved arrows.
\usetikzlibrary{calc}
% `pathmorphing` is necessary to draw squiggly arrows.
\usetikzlibrary{decorations.pathmorphing}
% A TikZ style for curved arrows of a fixed height, due to AndréC.
\tikzset{curve/.style={settings={#1},to path={(\tikztostart)
.. controls ($(\tikztostart)!\pv{pos}!(\tikztotarget)!\pv{height}!270:(\tikztotarget)$)
and ($(\tikztostart)!1-\pv{pos}!(\tikztotarget)!\pv{height}!270:(\tikztotarget)$)
.. (\tikztotarget)\tikztonodes}},
settings/.code={\tikzset{quiver/.cd,#1}
\def\pv##1{\pgfkeysvalueof{/tikz/quiver/##1}}},
quiver/.cd,pos/.initial=0.35,height/.initial=0}
% TikZ arrowhead/tail styles.
\tikzset{tail reversed/.code={\pgfsetarrowsstart{tikzcd to}}}
\tikzset{2tail/.code={\pgfsetarrowsstart{Implies[reversed]}}}
\tikzset{2tail reversed/.code={\pgfsetarrowsstart{Implies}}}
% TikZ arrow styles.
\tikzset{no body/.style={/tikz/dash pattern=on 0 off 1mm}}
\endinput

View file

@ -1,26 +0,0 @@
__HEADER__(Easy standards for the todonotes package)
\RequirePackage[colorinlistoftodos]{todonotes}
\RequirePackage{xparse}
% Make \todo{} available inside minipages
\usepackage{marginnote}
\let\marginpar\marginnote
\setuptodonotes{tickmarkheight=0.1cm, size=\small}
\newcommand\todoref{
\todo[color=red!40]{Add reference.}
}
\newcommand\todoquestion{
\todo[color=black!10, size=\tiny]
}
\newcommand\todotex{
\todo[color=green!75!black]
}
\newcommand\todotypo{
\todo[color=blue!40, size=\tiny]{Typo corrected, double check this.}
}

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

@ -0,0 +1,148 @@
__HEADER__(Cache definitions of previous LaTeX runs to avoid computations)
%%%% This is just a proof of concept package,
%%%% there is possibly more room for clean-up
%%%% and / or speed-up etc.
%%% Also, the provided
%%% \DeclareCachedDocumentCommand
%%% is of course not really
%%% useful and just for demonstration
%%% purposes
\bool_new:N \g__cache_cache_bool
\int_new:N \g__cache_cache_version_document_int
\int_new:N \g__cache_cache_version_aux_int
\int_gset:Nn \g__cache_cache_version_aux_int { -1 }
\clist_new:N \g__cache_dump_auxfile_clist %% usual dump
\clist_new:N \g__cache_dump_cache_clist %% will be dumped such that it is restored as \g__cache_lazy_auxfile_tl on next run.
\tl_new:N \g__cache_lazy_document_tl
\tl_new:N \g__cache_lazy_auxfile_tl
\keys_define:nn { cache }
{
cache .bool_set:N = \g__cache_cache_bool,
cache .default:n = { true },
__cache version__ .int_set:N = \g__cache_cache_version_document_int,
cache version .meta:nn = { cache } { cache = true, __cache version__ = #1 },
cache version .default:n = { 0 },
}
\RequirePackage{l3keys2e}
\ProcessKeysOptions{cache}
% Setting up lazy execution and
% selecting of executing after reading of aux file
% if cache option has been used
\bool_if:NTF \g__cache_cache_bool
{
%% Writing things (at one go) to aux file at end of document:
\cs_new:Npn \__cache_dump_auxfile:n
{
\clist_gput_right:Nn \g__cache_dump_auxfile_clist
}
\cs_generate_variant:Nn \__cache_dump_auxfile:n { x }
\cs_new:Npn \__cache_dump_cache:n
{
\clist_gput_right:Nn \g__cache_dump_cache_clist
}
\cs_generate_variant:Nn \__cache_dump_cache:n { V }
\cs_new:Npn \__cache_write_auxout:n
{
\iow_now:cn { @auxout }
}
\cs_generate_variant:Nn \__cache_write_auxout:n { x }
%%% Handles dumping data to aux file at end of document
\hook_gput_code:nnn { enddocument } { cache }
{
\clist_map_function:NN \g__cache_dump_auxfile_clist
\__cache_write_auxout:n
\__cache_write_auxout:n
{
\csname tl_gput_right:cn \endcsname
{
g__cache_lazy_auxfile_tl
}
}
\__cache_write_auxout:x { \str_use:N \c_left_brace_str }
\clist_map_function:NN \g__cache_dump_cache_clist
\__cache_write_auxout:n
\__cache_write_auxout:x { \str_use:N \c_right_brace_str }
}
%%% Writes the current cache version into aux file
\__cache_dump_auxfile:x
{
\ExplSyntaxOn
\int_gset:Nn \exp_not:N \g__cache_cache_version_aux_int
{
\int_use:N \g__cache_cache_version_document_int
}
\ExplSyntaxOff
}
%%% Executing something lazily at beginning of document
%%% Lazy code only gets executed if auxfile version is older than document
\cs_new:Npn \__cache_lazy:n
{
\tl_gput_right:Nn \g__cache_lazy_document_tl
}
%%% Caching things. Handles writing and reading to aux file
%%% and makes code available in the next run of LaTeX
\cs_new:Npn \__cache_cache:n #1
{
\tl_set:Nn \l_tmpa_tl
{
{ #1 }
}
\regex_replace_all:nnN { \cP\# } { \cO\# } \l_tmpa_tl
\__cache_dump_cache:V \l_tmpa_tl
}
%%% This handles loading either the cached definitions
%%% from last run or executing the lazy definitions from the current run
%%% after loading the aux file
\hook_gput_code:nnn { begindocument } { cache }
{
\int_compare:nNnTF
\g__cache_cache_version_aux_int < \g__cache_cache_version_document_int
{
\tl_use:N \g__cache_lazy_document_tl
}
{
\tl_use:N \g__cache_lazy_auxfile_tl
}
}
}
{
\cs_set_eq:NN \__cache_lazy:n \use:n
\cs_set_eq:NN \__cache_cache:n \use_none:n
}
\cs_new:Npn \__cached_new_document_command:nnn #1 #2 #3
{
\NewDocumentCommand{#1}{#2}{#3}
\__cache_cache:n
{
\csname __cached_new_document_command:nnn \endcsname { #1 } { #2 } { #3 }
}
}
\NewDocumentCommand{\DeclareCachedDocumentCommand}{mmm}
{
\__cache_lazy:n
{
\__cached_new_document_command:nnn{#1}{#2}{#3}
}
}

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