Compare commits
2 commits
master
...
topology-1
Author | SHA1 | Date | |
---|---|---|---|
31a9aae848 | |||
3f2257072d |
111 changed files with 572 additions and 7488 deletions
12
.ci/ci_build.sh
Executable file
12
.ci/ci_build.sh
Executable file
|
@ -0,0 +1,12 @@
|
|||
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
|
||||
|
|
@ -1,17 +1,11 @@
|
|||
set -e
|
||||
eval $(ssh-agent -s)
|
||||
echo "$GITLAB_DEPLOY_KEY" | base64 -d | tr -d '\r' | ssh-add - > /dev/null
|
||||
|
||||
# Set up ssh private key
|
||||
mkdir -p ~/.ssh
|
||||
chmod 700 ~/.ssh
|
||||
|
||||
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
|
||||
ssh-keyscan gitlab.com >> ~/.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"
|
||||
|
|
|
@ -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['REF_NAME'],
|
||||
branch=os.environ['CI_COMMIT_REF_NAME'],
|
||||
hexsha=get_latest_commit(repo).hexsha[0:7],
|
||||
repo_name='latex/latex-packages')
|
||||
repo_name='kesslermaximilian/LatexPackages')
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
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 ../..
|
|
@ -1,13 +1,12 @@
|
|||
# ! /bin/sh
|
||||
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")
|
||||
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")
|
||||
|
||||
echo ${REMOTE_BRANCH}
|
||||
|
||||
if [ "$REMOTE_BRANCH" = "" ]; then
|
||||
if [ "$REMOTE_BRANCH" = "" ];then
|
||||
echo "This is the first build on this branch, creating new branch in build repository to push to"
|
||||
git checkout --orphan ${CI_COMMIT_REF_NAME}-build
|
||||
ls -ra | sed '/^\.git$/d' | sed '/^\.\.$/d' | sed '/^\.$/d' | xargs -r git rm --cached
|
|
@ -1,81 +0,0 @@
|
|||
name: Build LaTeX packages
|
||||
on: [push]
|
||||
|
||||
jobs:
|
||||
build:
|
||||
runs-on: latex-latest
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
submodules: recursive
|
||||
fetch-depth: 0 # We need all history to correctly parse tag names
|
||||
fetch-tags: true
|
||||
- name: Setup git credentials and committer
|
||||
run: .ci/configure_git.sh
|
||||
env:
|
||||
DEPLOY_SSH_KEY: ${{ secrets.deploy_ssh_key }}
|
||||
- name: Clone build repository
|
||||
uses: actions/checkout@v4
|
||||
with:
|
||||
repository: latex/latex-packages-build
|
||||
path: build/packages
|
||||
ref: master
|
||||
- name: Checkout correct branch in build repository
|
||||
run: |
|
||||
.ci/setup_build_repo_branch.sh
|
||||
env:
|
||||
REF_NAME: ${{ github.ref_name }}
|
||||
- name: Build packages incrementally
|
||||
run: make
|
||||
- name: Push packages to build repo
|
||||
run: |
|
||||
.ci/deploy_to_build_repo.sh
|
||||
env:
|
||||
REF_NAME: ${{ github.ref_name }}
|
||||
- name: Clean up git files from build repo
|
||||
if: github.ref == 'refs/heads/master'
|
||||
run: rm -rf build/packages/.git
|
||||
- name: Save built packages to cache
|
||||
if: github.ref == 'refs/heads/master'
|
||||
uses: actions/cache/save@v3
|
||||
with:
|
||||
path: build/packages/
|
||||
key: ${{ github.ref }}-packages
|
||||
|
||||
pages:
|
||||
runs-on: latex-latest
|
||||
needs: build
|
||||
if: github.ref == 'refs/heads/master'
|
||||
steps:
|
||||
- name: Checkout repository
|
||||
uses: actions/checkout@v4
|
||||
- name: Load package cache
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
path: build/packages/
|
||||
key: ${{ github.ref }}-packages
|
||||
- name: Load compilation cache
|
||||
uses: actions/cache/restore@v3
|
||||
with:
|
||||
path: .compile
|
||||
key: ${{ github.ref }}-doc
|
||||
- name: Compile documentation
|
||||
run: make doc
|
||||
env:
|
||||
TEXINPUTS: '${{ github.workspace }}/build/packages//:'
|
||||
- name: Prepage pages
|
||||
run: |
|
||||
cd build
|
||||
rm -rf packages/.git # Don't deploy the git files
|
||||
zip -r latex-packages.zip packages/ -x '*.git*'
|
||||
zip -r latex-packages-doc.zip doc/
|
||||
- name: Deploy to pages
|
||||
uses: actions/pages@v1
|
||||
with:
|
||||
directory: build/
|
||||
- name: Upload compilation cache
|
||||
uses: actions/cache/save@v3
|
||||
with:
|
||||
path: .compile
|
||||
key: ${{ github.ref }}-doc
|
15
.gitignore
vendored
15
.gitignore
vendored
|
@ -5,18 +5,3 @@ build/*
|
|||
.idea/
|
||||
*.synctex.gz
|
||||
__pycache__
|
||||
*.aux
|
||||
*.fdb_latexmk
|
||||
*.fls
|
||||
*.log
|
||||
*.pdf
|
||||
wip/proof/.skip
|
||||
*.out
|
||||
*.idx
|
||||
*.ilg
|
||||
*.ind
|
||||
*.cnt
|
||||
*.glo
|
||||
*.hd
|
||||
*.toc
|
||||
*.sty
|
||||
|
|
44
.gitlab-ci.yml
Normal file
44
.gitlab-ci.yml
Normal file
|
@ -0,0 +1,44 @@
|
|||
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
|
32
Makefile
32
Makefile
|
@ -1,29 +1,12 @@
|
|||
# Makefile for latex-packages
|
||||
|
||||
BUILD_DIR=build
|
||||
DOC_SUBDIR=doc
|
||||
PACKAGES_SUBDIR=packages
|
||||
COMPILE_SUBDIR=.compile
|
||||
.PHONY: build
|
||||
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 --source-dir src --build-dir ${BUILD_ROOT}/${PACKAGES_SUBDIR} ${BUILD_FLAGS}
|
||||
@python3 build.py ${BUILD_DIRS} ${BUILD_FLAGS}
|
||||
|
||||
# Build packages and allow repo to be dirty (use with caution and only when developing)
|
||||
dirty: .initsubmodulelock
|
||||
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}
|
||||
@python3 build.py ${BUILD_DIRS} ${BUILD_FLAGS} --allow-dirty
|
||||
|
||||
init: .initsubmodulelock .gitconfiglock
|
||||
|
||||
|
@ -45,9 +28,6 @@ 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
2
PyTeX
|
@ -1 +1 @@
|
|||
Subproject commit c9bb0e87c91beae3e17a829603e4459cf804ec51
|
||||
Subproject commit 6277050e22b395eef5f554f3106aacd76562b3d2
|
15
README.md
15
README.md
|
@ -1,5 +1,7 @@
|
|||
# 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.
|
||||
|
@ -10,13 +12,6 @@ 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.
|
||||
|
||||
|
@ -27,9 +22,3 @@ 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
|
||||
|
|
|
@ -1,14 +0,0 @@
|
|||
# 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';
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,5 +0,0 @@
|
|||
\documentclass[full]{l3doc}
|
||||
\usepackage{mkessler-todo}
|
||||
\begin{document}
|
||||
\DocInput{../../../src/environments/fancythm/fancythm.dtx}
|
||||
\end{document}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,5 +0,0 @@
|
|||
\documentclass[full]{l3doc}
|
||||
\usepackage{mkessler-todo}
|
||||
\begin{document}
|
||||
\DocInput{../../../src/environments/groupthm/groupthm.dtx}
|
||||
\end{document}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,165 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,5 +0,0 @@
|
|||
\documentclass[full]{l3doc}
|
||||
\usepackage{mkessler-todo}
|
||||
\begin{document}
|
||||
\DocInput{../../../src/environments/thmstyle/thmstyle.dtx}
|
||||
\end{document}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,105 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,55 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,119 +0,0 @@
|
|||
\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 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,59 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,102 +0,0 @@
|
|||
\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 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,70 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,93 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,60 +0,0 @@
|
|||
\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 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,140 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,76 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,69 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,52 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,31 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,46 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,54 +0,0 @@
|
|||
\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}
|
|
@ -1 +0,0 @@
|
|||
../../LATEXMKRC
|
|
@ -1,48 +0,0 @@
|
|||
\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}
|
|
@ -1,8 +0,0 @@
|
|||
#! /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" -- {} \;
|
265
src/environments/fancythm.pysty
Normal file
265
src/environments/fancythm.pysty
Normal file
|
@ -0,0 +1,265 @@
|
|||
__HEADER__(Theorem-Environment Package)
|
||||
%Provides fancy theorem-like-environments used in the write-ups of my lecture notes
|
||||
|
||||
\RequirePackage{xkeyval}
|
||||
|
||||
__NEW_IF__(showstars,true)
|
||||
__NEW_IF__(showdaggers,true)
|
||||
__NEW_IF__(includestars,true)
|
||||
__NEW_IF__(includeoral,true)
|
||||
__NEW_IF__(markoral,true)
|
||||
|
||||
__NEW_IF__(lecturenumbers,true)
|
||||
__NEW_IF__(numbersmallenvironmentswiththeorem,false)
|
||||
__NEW_IF__(numbersmallenvironments,false)
|
||||
__NEW_IF__(defaulttheorems,true)
|
||||
|
||||
\define@choicekey*{__PACKAGE_NAME__}{__PACKAGE_PREFIX__numbersmallenvironments}[\val\nr]{no,section,theorem}{%
|
||||
\ifcase\nr\relax
|
||||
__SET_IF__(numbersmallenvironments,false)
|
||||
\or
|
||||
__SET_IF__(numbersmallenvironments,true)
|
||||
%numbering small environments within sections is forbidden whilst using lecturenumbes
|
||||
__IF__(lecturenumbers)
|
||||
__SET_IF__(numbersmallenvironmentswiththeorem,true)
|
||||
\else
|
||||
__SET_IF__(numbersmallenvironmentswiththeorem,false)
|
||||
\fi
|
||||
\or
|
||||
__SET_IF__(numbersmallenvironments,true)
|
||||
__SET_IF__(numbersmallenvironmentswiththeorem,true)
|
||||
\fi
|
||||
}
|
||||
|
||||
\define@choicekey*{__PACKAGE_NAME__}{__PACKAGE_PREFIX__lecturenumbers}[\val\nr]{true,false}{%
|
||||
\ifcase\nr\relax
|
||||
__SET_IF__(lecturenumbers,true)
|
||||
\else
|
||||
__SET_IF__(lecturenumbers,false)
|
||||
\fi
|
||||
}
|
||||
|
||||
\define@choicekey*{__PACKAGE_NAME__}{__PACKAGE_PREFIX__defaulttheorems}[\val\nr]{true,false}{%
|
||||
\ifcase\nr\relax
|
||||
__SET_IF__(defaulttheorems,true)
|
||||
\else
|
||||
__SET_IF__(defaulttheorems,false)
|
||||
\fi
|
||||
}
|
||||
|
||||
\define@choicekey*{__PACKAGE_NAME__}{__PACKAGE_PREFIX__showdaggers}[\val\nr]{true,false}{%
|
||||
\ifcase\nr\relax
|
||||
__SET_IF__(showdaggers,true)
|
||||
\else
|
||||
__SET_IF__(showdaggers,false)
|
||||
\fi
|
||||
}
|
||||
|
||||
\define@choicekey*{__PACKAGE_NAME__}{ownenvironments}[\val\nr]{on, natural, off}{%
|
||||
\ifcase\nr\relax
|
||||
__SET_IF__(includestars,true)
|
||||
__SET_IF__(showstars,true)
|
||||
\or
|
||||
__SET_IF__(includestars,true)
|
||||
__SET_IF__(showstars,false)
|
||||
\or
|
||||
__SET_IF__(includestars,false)
|
||||
__SET_IF__(showstars,false)
|
||||
\fi
|
||||
}
|
||||
|
||||
\define@choicekey*{__PACKAGE_NAME__}{oralremarks}[\val\nr]{on,natural,off}{%
|
||||
\ifcase\nr\relax
|
||||
__SET_IF__(includeoral,true)
|
||||
__SET_IF__(markoral,true)
|
||||
\or
|
||||
__SET_IF__(includeoral,true)
|
||||
__SET_IF__(markoral,true)
|
||||
\or
|
||||
__SET_IF__(includeoral,false)
|
||||
\fi
|
||||
}
|
||||
|
||||
%%%%% Option section
|
||||
__LANGUAGE_OPTIONS_X__
|
||||
|
||||
\DeclareOptionX{showdaggers}{\setkeys{__PACKAGE_NAME__}{__PACKAGE_PREFIX__showdaggers=#1}}
|
||||
\DeclareOptionX{ownenvironments}{\setkeys{__PACKAGE_NAME__}{ownenvironments=#1}}
|
||||
\DeclareOptionX{oralremarks}{\setkeys{__PACKAGE_NAME__}{oralremarks=#1}}
|
||||
|
||||
\DeclareOptionX{lecturenumbers}{\setkeys{__PACKAGE_NAME__}{__PACKAGE_PREFIX__lecturenumbers=#1}}
|
||||
\DeclareOptionX{numbersmallenvironments}{\setkeys{__PACKAGE_NAME__}{__PACKAGE_PREFIX__numbersmallenvironments=#1}}
|
||||
|
||||
\DeclareOptionX{defaulttheorems}{\setkeys{__PACKAGE_NAME__}{__PACKAGE_PREFIX__defaulttheorems=#1}}
|
||||
|
||||
__END_OPTIONS_X__
|
||||
|
||||
%%%%%%%% Implementation section
|
||||
|
||||
%Required Packages and setup
|
||||
\RequirePackage{amsmath}
|
||||
\RequirePackage{amsthm}
|
||||
\RequirePackage{mdframed}
|
||||
\RequirePackage{thmtools}
|
||||
\RequirePackage[skins]{tcolorbox}
|
||||
\RequirePackage{mfirstuc}
|
||||
\RequirePackage{xifthen}
|
||||
\RequirePackage{xparse}
|
||||
\tcbuselibrary{breakable}
|
||||
|
||||
% Dummy counters
|
||||
\declaretheorem[numberwithin=section]{__PACKAGE_PREFIX__dummy}
|
||||
\declaretheorem[numberwithin=__PACKAGE_PREFIX__dummy]{__PACKAGE_PREFIX__smalldummy}
|
||||
|
||||
%%%%% Main part, i.e. providing macros for defining new theorems
|
||||
|
||||
%%Environments that are numbered by default have 3 versions:
|
||||
% - the standard one, for numbering
|
||||
% - one asterisk, to exclude them from numbering (because they were not numbered in the lecture) -> they will be numbered if 'truenmubers' option is set
|
||||
% - two asterisks, for marking them as self-added, so they will not be numbered, but will receive a visual asterisk. -> They will be numbered if 'truenumbers' option is set
|
||||
|
||||
|
||||
|
||||
\NewDocumentCommand{\declarebigtheorem}{O{} O{} m m O{}}{
|
||||
%First, store the name of the theorem in \theoremname
|
||||
__IF__(english)
|
||||
\ifthenelse{\isempty{#2}}{\def\theoremname{#4}}{\def\theoremname{#2}}
|
||||
\else
|
||||
\ifthenelse{\isempty{#1}}{\def\theoremname{#4}}{\def\theoremname{#1}}
|
||||
\fi
|
||||
|
||||
%Define the mane version of the theorem
|
||||
\ifthenelse{\isempty{#5}}{\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling = __PACKAGE_PREFIX__dummy]{#4}}{}
|
||||
|
||||
%Define the versions theorem*, theorem**, dtheorem
|
||||
__IF__(lecturenumbers)
|
||||
__IF__(numbersmallenvironments)
|
||||
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling=__PACKAGE_PREFIX__smalldummy]{#4*}
|
||||
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, sibling=__PACKAGE_PREFIX__smalldummy]{#4**}
|
||||
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, sibling=__PACKAGE_PREFIX__smalldummy]{d#4}
|
||||
\else
|
||||
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, numbered=no]{#4*}
|
||||
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, numbered = no]{#4**}
|
||||
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, numbered = no]{d#4}
|
||||
\fi
|
||||
\else
|
||||
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}, sibling=__PACKAGE_PREFIX__dummy]{#4*}
|
||||
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, sibling=__PACKAGE_PREFIX__dummy]{#4**}
|
||||
\declaretheorem[style = #3, name = \makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, sibling=__PACKAGE_PREFIX__dummy]{d#4}
|
||||
\fi
|
||||
__IF__(includestars)\else\renewenvironment{#4**}{\comment}{\endcomment}\fi
|
||||
}
|
||||
|
||||
\NewDocumentCommand{\declaresmalltheorem}{O{} O{} m m}{
|
||||
%Get the name of the theorem and store it in \theoremname
|
||||
__IF__(english)
|
||||
\ifthenelse{\isempty{#2}}{\def\theoremname{#4}}{\def\theoremname{#2}}
|
||||
\else
|
||||
\ifthenelse{\isempty{#1}}{\def\theoremname{#4}}{\def\theoremname{#1}}
|
||||
\fi
|
||||
__IF__(numbersmallenvironments)
|
||||
__IF__(numbersmallenvironmentswiththeorem)
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling = __PACKAGE_PREFIX__smalldummy]{#4}
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, sibling=__PACKAGE_PREFIX__smalldummy]{#4*}
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, sibling=__PACKAGE_PREFIX__smalldummy]{d#4}
|
||||
\else
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling=__PACKAGE_PREFIX__dummy]{#4}
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, sibling=__PACKAGE_PREFIX__dummy]{#4*}
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, sibling=__PACKAGE_PREFIX__dummy]{d#4}
|
||||
\fi
|
||||
\else
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, numbered = no]{#4}
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showstars) *\else\fi, numbered = no]{#4*}
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}__IF__(showdaggers) $^{\dagger}$\else\fi, numbered = no]{d#4}
|
||||
\fi
|
||||
\declaretheorem[style=#3,name=\makefirstuc{\expandafter\theoremname}, sibling=__PACKAGE_PREFIX__dummy]{n#4}
|
||||
__IF__(includestars)\else\renewenvironment{#4*}{\comment}{\endcomment}\fi
|
||||
}
|
||||
|
||||
|
||||
%%%% If requested, now define some default theoremstyles
|
||||
__IF__(defaulttheorems)
|
||||
\RequirePackage[default styles]{mkessler-thmstyle} % Easy setup of mdframed styles
|
||||
|
||||
\declarebigtheorem[Satz][Theorem]{thmredmarginandfill}{theorem} __IF__(english)\else\AtBeginDocument{\def\theoremautorefname{Satz}}\fi
|
||||
\declarebigtheorem{thmredmarginandfill}{proposition}
|
||||
\declarebigtheorem[Korollar]{thmredmarginandfill}{corollary}
|
||||
\declarebigtheorem{thmorangemarginandfill}{lemma}
|
||||
\declarebigtheorem[Lemma und Definition][Lemma and Definition]{thmorangemarginbluefill}{lemmadef}
|
||||
\declarebigtheorem{thmbluemarginandfill}{definition}
|
||||
\declarebigtheorem[Satz und Definition][Theorem and Definition]{thmredmarginbluefill}{theoremdef}
|
||||
\declarebigtheorem[Proposition und Definition][Proposition and Definition]{thmredmarginbluefill}{propositiondef}
|
||||
\declarebigtheorem{thmvioletmarginandfill}{notation}
|
||||
\declarebigtheorem[zuSatz][Addition to Theorem]{thmredmarginandfill}{additiontheorem}
|
||||
|
||||
%%%Environments that are not numbered by default (notation, question, example, remark etc) have two forms:
|
||||
% - normal form: won't be numbered unless '__PACKAGE_PREFIX__numbersmallenvironments' is set
|
||||
% - having an asterisk: will be displayed with an asterisk, will be numbered if 'numbersmallenvironments' is set
|
||||
%Notation
|
||||
|
||||
\declaresmalltheorem[Notationsmissbrauch][Abuse of Notation]{thmvioletmargin}{abuse}
|
||||
\declaresmalltheorem[Beispiel]{thmgreenmargin}{example}
|
||||
\declaresmalltheorem[Bemerkung]{thmyellowmargin}{remark}
|
||||
\declaresmalltheorem[Lob]{thmgoldmargin}{praise}
|
||||
\declaresmalltheorem[Trivial Nonsense][Trivial Nonsense]{thmyellowmargin}{trivial}
|
||||
\declaresmalltheorem[Frage]{thmblackmarginandfill}{question}
|
||||
\declaresmalltheorem[Organisatorisches][Organisational stuff]{thmblackmargin}{orga}
|
||||
\declaresmalltheorem[Fakt]{thmredmargin}{fact}
|
||||
|
||||
%%%% Specially treated stuff
|
||||
|
||||
\declaresmalltheorem[__IF__(markoral) Mündliche Anmerkung\else Bemerkung\fi][__IF__(markoral) Oral remark\else remark\fi]{thmyellowmargin}{oral}
|
||||
% Option to remove oral remarks when needed
|
||||
__IF__(includeoral)\else
|
||||
\renewenvironment{oral}{\comment}{\endcomment}
|
||||
\renewenvironment{oral*}{\comment}{\endcomment}
|
||||
\renewenvironment{doral}{\comment}{\endcomment}
|
||||
\fi
|
||||
|
||||
|
||||
%%%%%%%% Other mdframed style boxes
|
||||
|
||||
\newtcolorbox{recap}{before skip = 0.5cm, after skip = 0.5cm, enhanced, sharp corners = all, colback = white, colframe = gray, toprule=0pt, bottomrule=0pt, leftrule=0pt,rightrule=0pt, overlay = {
|
||||
\draw[gray, line width = 2pt] (frame.north west) -- ++(0.5cm, 0pt);
|
||||
\draw[gray, line width=2pt] (frame.south east) -- ++(-0.5cm, 0pt);
|
||||
\draw[gray, line width=2pt] (frame.north west) -- ++ (0pt, -0.5cm);
|
||||
\draw[gray, line width=2pt] (frame.south east) -- ++(0pt, 0.5cm);
|
||||
}}
|
||||
|
||||
\newenvironment{moral}{%
|
||||
\begin{mdframed}[linecolor=green!70!black]%
|
||||
\bfseries\color{green!50!black}}%
|
||||
{\end{mdframed}}
|
||||
|
||||
\newenvironment{antimoral}{%
|
||||
\begin{mdframed}[linecolor=red!70!black]%
|
||||
\bfseries\color{red!50!black}}%
|
||||
{\end{mdframed}}
|
||||
|
||||
|
||||
%%%%%%%%%%%% Non-mdframed theorems
|
||||
|
||||
\theoremstyle{plain}
|
||||
\newtheorem{variant}{__IF__(english) Variant\else Variante\fi}
|
||||
\newtheorem{assumption}{__IF__(english) Assumption\else Annahme\fi}
|
||||
|
||||
\theoremstyle{definition}
|
||||
\newtheorem*{note}{__IF__(english) Note\else Anmerkung\fi}
|
||||
\newtheorem*{warning}{\color{red}__IF__(english) Warning \else Warnung\fi}
|
||||
\newtheorem*{goal}{__IF__(english) Goal \else Ziel\fi}
|
||||
\newtheorem*{strategy}{__IF__(english) Proof Strategy \else Beweisstrategie\fi}
|
||||
\newtheorem*{goal*}{__IF__(english) Goal* \else Ziel*\fi}
|
||||
\newtheorem*{problem}{Problem}
|
||||
\newtheorem*{info}{Information}
|
||||
|
||||
|
||||
\newtheorem*{answer}{__IF__(english) Answer\else Antwort\fi}
|
||||
\newtheorem{observe}[theorem]{__IF__(english) Observe\else Beobachte\fi}
|
||||
\newtheorem*{property}{__IF__(english) Property\else Eigenschaft\fi}
|
||||
\newtheorem*{intuition}{Intuition}
|
||||
\newtheorem*{recall}{__IF__(english) Recall\else Erinnerung\fi}
|
||||
\newtheorem*{idea}{__IF__(english) Idea\else Idee\fi}
|
||||
\newtheorem{exercise}{__IF__(english) Exercise\else Aufgabe\fi}[section]
|
||||
\newtheorem{reminder}{__IF__(english) Reminder\else Erinnerung\fi}
|
||||
|
||||
\fi % end of default theorems
|
|
@ -1,7 +0,0 @@
|
|||
@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;
|
|
@ -1,922 +0,0 @@
|
|||
% \iffalse meta-comment
|
||||
%<*internal>
|
||||
\begingroup
|
||||
\input docstrip.tex
|
||||
\keepsilent
|
||||
\usedir{tex/latex/mkessler/fancythm}
|
||||
\askforoverwritefalse
|
||||
\generate{\file{fancythm.sty}{\from{fancythm.dtx}{package}}}
|
||||
\def\tmpa{plain}
|
||||
\ifx\tmpa\fmtname\endgroup\expandafter\bye\fi
|
||||
\endgroup
|
||||
%</internal>
|
||||
%% File: fancytm.dtx
|
||||
%
|
||||
% Copyright (C) 2022 Maximilian Keßler
|
||||
%
|
||||
% It may be distributed and/or modified under the conditions of the
|
||||
% LaTeX Project Public License (LPPL), either version 1.3c of this
|
||||
% license or (at your option) any later version. The latest version
|
||||
% of this license is in the file
|
||||
%
|
||||
% https://www.latex-project.org/lppl.txt
|
||||
%
|
||||
% -----------------------------------------------------------------------
|
||||
%<package>\ProvidesExplPackage{fancythm}{2022/01/30}{0.0.2}{Grouped theorems.}
|
||||
%
|
||||
%<*driver>
|
||||
\documentclass[full,kernel]{l3doc}
|
||||
\begin{document}
|
||||
\DocInput{\jobname.dtx}
|
||||
\end{document}
|
||||
%</driver>
|
||||
% \fi
|
||||
%
|
||||
% \title{^^A
|
||||
% The \pkg{fancythm} package^^A
|
||||
% }
|
||||
%
|
||||
% \author{^^A
|
||||
% Maximilian Keßler
|
||||
% }
|
||||
%
|
||||
% \date{Released 2022-01-12}
|
||||
%
|
||||
% \maketitle
|
||||
%
|
||||
% \begin{documentation}
|
||||
% \end{documentation}
|
||||
%
|
||||
%
|
||||
% \begin{implementation}
|
||||
%
|
||||
% \section{\pkg{fancythm} implementation}
|
||||
%
|
||||
% \begin{macrocode}
|
||||
%<*package>
|
||||
% \end{macrocode}
|
||||
%
|
||||
% \begin{macrocode}
|
||||
%<@@=fancythm>
|
||||
% \end{macrocode}
|
||||
%
|
||||
%
|
||||
% \subsection{Dependencies}
|
||||
% \begin{macrocode}
|
||||
\RequirePackage{l3keys2e}
|
||||
\RequirePackage[default styles]{thmstyle}
|
||||
% \end{macrocode}
|
||||
%
|
||||
% \subsection{Counter management}
|
||||
%
|
||||
%
|
||||
% Wrappers for \LaTeX2e counter manipulation
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\arabic:n, \counter_new:n, \counter_within:nn,\counter_new:nn}
|
||||
%
|
||||
% Obvious meanings.
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_set_eq:NN \arabic:n \arabic
|
||||
\cs_set_eq:NN \counter_new:n \newcounter
|
||||
\cs_set_eq:NN \counter_within:nn \counterwithin
|
||||
\cs_new:Npn \counter_new:nn #1 #2
|
||||
{
|
||||
\counter_new:n { #1 }
|
||||
\counter_within:nn { #1 } { #2 }
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}
|
||||
% {
|
||||
% \counter_if_exist_p:n,
|
||||
% \counter_if_exist:nT,
|
||||
% \counter_if_exist:F,
|
||||
% \counter_if_exist:nTF,
|
||||
% }
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \counter_if_exist_p:n #1
|
||||
{
|
||||
\cs_if_exist_p:c { c@ #1 }
|
||||
}
|
||||
\cs_new:Npn \counter_if_exist:nT #1
|
||||
{
|
||||
\cs_if_exist:cT { c@ #1 }
|
||||
}
|
||||
\cs_new:Npn \counter_if_exist:nF #1
|
||||
{
|
||||
\cs_if_exist:cF { c@ #1 }
|
||||
}
|
||||
\cs_new:Npn \counter_if_exist:nTF #1
|
||||
{
|
||||
\cs_if_exist:cTF { c@ #1 }
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\counter_undefined_error:n}
|
||||
%
|
||||
% Standard counter error message.
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_set_eq:Nc \counter_undefined_error:n { @nocounterr }
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\counter_ensure_exist:n}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \counter_ensure_exist:n #1
|
||||
{
|
||||
\counter_if_exist:nF { #1 }
|
||||
{
|
||||
\counter_undefined_error:n { #1 }
|
||||
}
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\counter_the:n, \counter_set_the:nn}
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \counter_the:n #1
|
||||
{
|
||||
\use:c { the #1 }
|
||||
}
|
||||
\cs_new:Npn \counter_set_the:nn #1 #2
|
||||
{
|
||||
\counter_ensure_exist:n { #1 }
|
||||
\exp_args:Nc \renewcommand { the #1 } { #2 }
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\counter_sub:nn}
|
||||
% \begin{syntax}
|
||||
% \cs{counter_sub:nn}\marg{counter_1}\marg{counter_2}
|
||||
% \end{syntax}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \counter_sub:nn #1 #2
|
||||
{
|
||||
\counter_within:nn { #1 } { #2 }
|
||||
\counter_set_the:nn { #1 }
|
||||
{
|
||||
\counter_the:n { #2 } . \arabic:n { #1 }
|
||||
}
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\counter_new_sub:nn #1 #2}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \counter_new_sub:nn #1 #2
|
||||
{
|
||||
\counter_new:n { #1 }
|
||||
\counter_sub:nn { #1 } { #2 }
|
||||
}
|
||||
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
% \subsection{Counter management}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\@@_counter_sub_if_exist:n}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \@@_counter_sub_if_exist:n #1
|
||||
{
|
||||
\counter_if_exist:nT { #1 }
|
||||
{
|
||||
\counter_new_sub:nn { in #1 } { #1 }
|
||||
}
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\counter_alias:nn, \counter_alias:nx}
|
||||
% \begin{syntax}
|
||||
% \cs{counter_alias:nn}\marg{counter_1}\marg{counter_2}
|
||||
% \end{syntax}
|
||||
%
|
||||
% Note that since 2022-06-02, the implementation of \cs{@counteralias}
|
||||
% in \pkg{thmtools} has changed.
|
||||
% Before, aliasing an already existing counter did not throw an error,
|
||||
% which is considered a bug now
|
||||
% (\href{https://github.com/muzimuzhi/thmtools/issues/28}{https://github.com/muzimuzhi/thmtools/issues/28}).
|
||||
% Since \pkg{!!} relies on the old functionality,
|
||||
% we adapt this here by undefining \cs{c@\meta{countername}} before calling
|
||||
% \cs{@counteralias}.
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \counter_alias:nn #1 % trailing #2
|
||||
{
|
||||
\cs_undefine:c { c@ #1 }
|
||||
\use:c { @counteralias } { #1 } % implicit #2
|
||||
}
|
||||
\cs_generate_variant:Nn \counter_alias:nn { n x }
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \subsection{Initialization}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{variable}{indocument, insection, insubsection, inchapter, inpart}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\counter_new:n { indocument }
|
||||
\@@_counter_sub_if_exist:n { section }
|
||||
\@@_counter_sub_if_exist:n { subsection }
|
||||
\@@_counter_sub_if_exist:n { chapter }
|
||||
\@@_counter_sub_if_exist:n { part }
|
||||
% \end{macrocode}
|
||||
% \end{variable}
|
||||
%
|
||||
% \begin{variable}{toplevel, sublevel, subsublevel, subsubsublevel}
|
||||
%
|
||||
% Note that the \texttt{toplevel} counter will be potentially redefined
|
||||
% by the given package options.
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\counter_alias:nn { toplevel } { indocument }
|
||||
\counter_new_sub:nn { sublevel } { toplevel }
|
||||
\counter_new_sub:nn { subsublevel } { sublevel }
|
||||
\counter_new_sub:nn { subsubsublevel } { subsublevel }
|
||||
% \end{macrocode}
|
||||
% \end{variable}
|
||||
%
|
||||
%
|
||||
% \begin{variable}{\g_@@_style_str}
|
||||
%
|
||||
% This will hold the style information of the package.
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\str_new:N \g_@@_style_str
|
||||
% \end{macrocode}
|
||||
% \end{variable}
|
||||
%
|
||||
% \begin{variable}{\g_@@_translator_bool}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\bool_new:N \g_@@_translator_bool
|
||||
% \end{macrocode}
|
||||
% \end{variable}
|
||||
%
|
||||
%
|
||||
% \begin{variable}{\g_@@_generate_defaults_bool}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\bool_new:N \g_@@_generate_defaults_bool
|
||||
% \end{macrocode}
|
||||
% \end{variable}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{variable}
|
||||
% {
|
||||
% \l_@@_key_name_tl,
|
||||
% \l_@@_key_mdframed_tl,
|
||||
% \l_@@_key_style_tl,
|
||||
% \l_@@_key_group_clist,
|
||||
% \l_@@_key_thmtools_clist,
|
||||
% }
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\tl_new:N \l_@@_key_name_tl
|
||||
\tl_new:N \l_@@_key_mdframed_tl
|
||||
\tl_new:N \l_@@_key_style_tl
|
||||
\clist_new:N \l_@@_key_group_clist
|
||||
\clist_new:N \l_@@_key_thmtools_clist
|
||||
% \end{macrocode}
|
||||
% \end{variable}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{variable}
|
||||
% {
|
||||
% \l_@@_name_tl,
|
||||
% \l_@@_thmtools_clist,
|
||||
% \l_@@_group_clist,
|
||||
% }
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\tl_new:N \l_@@_name_tl
|
||||
\clist_new:N \l_@@_thmtools_clist
|
||||
\clist_new:N \l_@@_group_clist
|
||||
% \end{macrocode}
|
||||
% \end{variable}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{variable}{\g_@@_groupthm_option_clist}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\clist_new:N \g_@@_groupthm_option_clist
|
||||
% \end{macrocode}
|
||||
% \end{variable}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \subsection{Key interface}
|
||||
%
|
||||
% \begin{texnote}
|
||||
% Note that unfortunately, none of the keynames really containes a space.
|
||||
% \LaTeX2e strips spaces before loading a package, so introducing them here
|
||||
% would make them inaccessible.
|
||||
% Here they are ignored by \LaTeX3 and are present for readability.
|
||||
% \end{texnote}
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\keys_define:nn { fancythm }
|
||||
{
|
||||
translator .bool_set:N = \g_@@_translator_bool ,
|
||||
translator .default:n = { true } ,
|
||||
generate defaults .bool_set:N = \g_@@_generate_defaults_bool ,
|
||||
generate defaults .default:n = { true } ,
|
||||
number in .choices:nn =
|
||||
{ document, section, subsection, chapter, part }
|
||||
{
|
||||
\counter_alias:nx { toplevel } { in \tl_use:N \l_keys_choice_tl }
|
||||
} ,
|
||||
number in .default:n = { document } ,
|
||||
style .choices:nn =
|
||||
{ fancy, plain, classic }
|
||||
{
|
||||
\str_set:Nn \g_@@_style_str { \tl_use:N \l_keys_choice_tl }
|
||||
} ,
|
||||
style .default:n = { fancy } ,
|
||||
cache .code:n =
|
||||
{
|
||||
\clist_put_right:Nn \g_@@_groupthm_option_clist { cache = #1 }
|
||||
} ,
|
||||
cache .default:n = { true } ,
|
||||
cache version .code:n =
|
||||
{
|
||||
\clist_put_right:Nn \g_@@_groupthm_option_clist { cache version = #1 }
|
||||
} ,
|
||||
cache version .default:n = { 0 } ,
|
||||
}
|
||||
% \end{macrocode}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\keys_define:nn { fancythm / fancytheorem }
|
||||
{
|
||||
name .tl_set:N = \l_@@_key_name_tl ,
|
||||
name .default:n = \c_novalue_tl ,
|
||||
mdframed .tl_set:N = \l_@@_key_mdframed_tl ,
|
||||
mdframed .default:n = \c_novalue_tl ,
|
||||
style .tl_set:N = \l_@@_key_style_tl ,
|
||||
style .default:n = \c_novalue_tl ,
|
||||
group .clist_set:N = \l_@@_key_group_clist ,
|
||||
group .default:n = {} ,
|
||||
thmtools .clist_set:N = \l_@@_key_thmtools_clist ,
|
||||
thmtools .default:n = {} ,
|
||||
}
|
||||
% \end{macrocode}
|
||||
%
|
||||
%
|
||||
% Process the given keys:
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\keys_set:nn { fancythm } { translator, generate defaults, number in, style }
|
||||
\ProcessKeysOptions{ fancythm }
|
||||
% \end{macrocode}
|
||||
%
|
||||
|
||||
|
||||
% \begin{macro}{\@@_require_package:nn}
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \@@_require_package:nn #1
|
||||
{
|
||||
\RequirePackage [ #1 ]
|
||||
}
|
||||
\cs_generate_variant:Nn \@@_require_package:nn { V n }
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\@@_require_package:Vn \g_@@_groupthm_option_clist { groupthm }
|
||||
% \end{macrocode}
|
||||
%
|
||||
%
|
||||
%
|
||||
% This sets up translation if requested.
|
||||
% Throughout implementation, we can just use \cs{@@_translate:n}
|
||||
% and will (or not) have translation according to the specified options.
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\bool_if:NTF \g_@@_translator_bool
|
||||
{
|
||||
\RequirePackage{translator}
|
||||
\usedictionary{translator-environment-names}
|
||||
\cs_set_eq:NN \@@_translate:n \translate
|
||||
}
|
||||
{
|
||||
\cs_set_eq:NN \@@_translate:n \use:n
|
||||
}
|
||||
% \end{macrocode}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\@@_set_normalized_keys:nn}
|
||||
%
|
||||
% \begin{syntax}
|
||||
% \cs{@@_set_normalized_keys:nn}\marg{keys}\marg{fallback name}
|
||||
% \end{syntax}
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \@@_set_normalized_keys:nn #1 #2
|
||||
{
|
||||
\keys_set:nn { fancythm / fancytheorem } { name, mdframed, style, group, thmtools }
|
||||
\keys_set:nn { fancythm / fancytheorem } { #1 }
|
||||
\clist_set_eq:NN \l_@@_group_clist \l_@@_key_group_clist
|
||||
\clist_set_eq:NN \l_@@_thmtools_clist \l_@@_key_thmtools_clist
|
||||
\tl_if_eq:NnF \l_@@_key_mdframed_tl { \c_novalue_tl }
|
||||
{
|
||||
\clist_put_right:Nx \l_@@_thmtools_clist
|
||||
{
|
||||
mdframed = { style = \tl_use:N \l_@@_key_mdframed_tl }
|
||||
}
|
||||
}
|
||||
\tl_if_eq:NnF \l_@@_key_style_tl { \c_novalue_tl }
|
||||
{
|
||||
\clist_put_right:Nx \l_@@_thmtools_clist
|
||||
{
|
||||
style = \tl_use:N \l_@@_key_style_tl
|
||||
}
|
||||
}
|
||||
\tl_if_eq:NnTF \l_@@_key_name_tl { \c_novalue_tl }
|
||||
{
|
||||
\tl_set:Nx \l_@@_name_tl
|
||||
{
|
||||
\text_titlecase_first:n { \tl_trim_spaces:n { #2 } }
|
||||
}
|
||||
}
|
||||
{
|
||||
\tl_set_eq:NN \l_@@_name_tl \l_@@_key_name_tl
|
||||
}
|
||||
\tl_set:Nx \l_@@_name_tl
|
||||
{
|
||||
\exp_not:N \csname @@_translate:n \exp_not:N \endcsname { \tl_use:N \l_@@_name_tl }
|
||||
}
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \subsection{Fancy theorems}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\@@_wrap_multiple:nnn}
|
||||
% \begin{syntax}
|
||||
% \cs{@@_wrap_multiple:nnn}\marg{declarator list}\marg{function name}\marg{code}
|
||||
% \end{syntax}
|
||||
%
|
||||
% Defines \meta{function name}, which is assumed to contain \cs{declarator}
|
||||
% by \meta{code} for each declarator in \meta{declarator list}.
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \@@_wrap_multiple:nnn #1 #2 #3
|
||||
{
|
||||
\cs_set:Npn \@@_map_aux:n ##1
|
||||
{
|
||||
\cs_new:cn { #2 }
|
||||
{
|
||||
#3
|
||||
}
|
||||
}
|
||||
\clist_map_function:nN { #1 } \@@_map_aux:n
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\fancythm_new_theorem:nnnn, \fancythm_provide_theorem:nnnn}
|
||||
% \begin{syntax}
|
||||
% \cs{fancythm_new_theorem:nnnn}\marg{fancy theorem}\marg{groups}
|
||||
% \marg{name}\marg{thmtools keys}
|
||||
% \end{syntax}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\@@_wrap_multiple:nnn
|
||||
{ new, provide }
|
||||
{ fancythm_#1_theorem:nnnn }
|
||||
{
|
||||
\use:c { groupthm_#1_family:nnnnn } { ##1 } { dagger, star, nobraces } { ##3 } { ##4 } { ##2 }
|
||||
\use:c { groupthm_#1_family_options:nnnn }
|
||||
{ ##1 }
|
||||
{ !s !t+ !t-}
|
||||
{
|
||||
\IfBooleanT { ####1 }
|
||||
{
|
||||
\AddTheoremToGroup { star }
|
||||
}
|
||||
\IfBooleanT { ####2 }
|
||||
{
|
||||
\AddTheoremToGroup { dagger }
|
||||
}
|
||||
\IfBooleanT { ####3 }
|
||||
{
|
||||
\AddTheoremToGroup { nobraces }
|
||||
}
|
||||
}
|
||||
{ ##2 }
|
||||
}
|
||||
\cs_generate_variant:Nn \fancythm_new_theorem:nnnn { n V V V }
|
||||
\cs_generate_variant:Nn \fancythm_provide_theorem:nnnn { n V V V }
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\fancythm_new_theorem:nn}
|
||||
% \begin{syntax}
|
||||
% \cs{fanythm_new_theorem:nn}\marg{key=value list}\marg{fancy theorem}
|
||||
% \end{syntax}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\@@_wrap_multiple:nnn
|
||||
{ new, provide }
|
||||
{ fancythm_#1_theorem:nn }
|
||||
{
|
||||
\@@_set_normalized_keys:nn { ##1 } { ##2 }
|
||||
\use:c { fancythm_#1_theorem:nVVV }
|
||||
{ ##2 }
|
||||
\l_@@_group_clist
|
||||
\l_@@_name_tl
|
||||
\l_@@_thmtools_clist
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\@@_new_document_command:Nnn, \@@_new_document_command:cnn}
|
||||
%
|
||||
% Private wrappers around \cs{NewDocumentCommand}.
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \@@_new_document_command:Nnn #1 #2 #3
|
||||
{
|
||||
\NewDocumentCommand { #1 } { #2 } { #3 }
|
||||
}
|
||||
\cs_generate_variant:Nn \@@_new_document_command:Nnn { c n n }
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\@@_wrap_multiple_document:nnnn}
|
||||
% \begin{syntax}
|
||||
% \cs{@@_wrap_multiple_document:nnnn}\marg{declarator list}\marg{function name}\marg{arg spec}\marg{code}
|
||||
% \end{syntax}
|
||||
%
|
||||
% This is very similar to \cs{@@_wrap_multiple:nnn}, except that it produces document commands.
|
||||
% For this reason, \cs{declarator} and \cs{Declarator} are available to refer to the lower
|
||||
% and upper-case versions of the current declarator.
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \@@_wrap_multiple_document:nnnn #1 #2 #3 #4
|
||||
{
|
||||
\cs_set:Npn \@@_map_aux:n ##1
|
||||
{
|
||||
\cs_set:Nn \@@_Declarator: { \text_titlecase_first:n { ##1 } }
|
||||
\@@_new_document_command:cnn { #2 } { #3 } { #4 }
|
||||
}
|
||||
\clist_map_function:nN { #1 } \@@_map_aux:n
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\NewFancyTheorem, \ProvideFancyTheorem}
|
||||
% \begin{syntax}
|
||||
% \cs{NewFancyTheorem}\marg{key=value list}\marg{fancy theorem}
|
||||
% \end{syntax}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\@@_wrap_multiple_document:nnnn
|
||||
{ new, provide }
|
||||
{ \@@_Declarator: FancyTheorem }
|
||||
{ O{} m }
|
||||
{
|
||||
\use:c { fancythm_#1_theorem:nn } { ##1 } { ##2 }
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \subsection{Provided resources}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% We introduce various new 0theorem groups that help us to organize the document
|
||||
% in a flexible way.
|
||||
%
|
||||
% \begin{variable}{star, dagger, big, small, tiny, custom}
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\declaretheoremstyle[notebraces={{}{}}]{nobraces}
|
||||
\groupthm_new_group:nnnnn { star } { } { * } { } { }
|
||||
\groupthm_new_group:nnnnn { dagger } { } { $^{\dagger}$ } { } { }
|
||||
\groupthm_new_group:nnnnn { big } { } { } { } { sibling = toplevel }
|
||||
\groupthm_new_group:nnnnn { small } { } { } { } { sibling = sublevel }
|
||||
\groupthm_new_group:nnnnn { tiny } { } { } { } { numbered = no }
|
||||
\groupthm_new_group:nnnnn { custom } { } { } { } { sibling = sublevel }
|
||||
\groupthm_new_group:nnnnn { nobraces } { } { } { } { style = nobraces }
|
||||
% \end{macrocode}
|
||||
% \end{variable}
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\groupthm_add_parent:nn { star } { custom }
|
||||
\groupthm_add_parent:nn { dagger } { custom }
|
||||
% \end{macrocode}
|
||||
% \begin{macrocode}
|
||||
\DeclareTheoremGroupRule [ suffix ] { dagger } { higher } { star }
|
||||
\DeclareTheoremGroupRule { tiny } { higher } { small }
|
||||
\DeclareTheoremGroupRule { tiny } { higher } { big }
|
||||
\DeclareTheoremGroupRule { tiny } { higher } { custom }
|
||||
\DeclareTheoremGroupRule { small } { higher } { big }
|
||||
\DeclareTheoremGroupRule { custom } { higher } { big }
|
||||
% \end{macrocode}
|
||||
%
|
||||
%
|
||||
% It remains to provide a list of theorems at the beginning of the document.
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\fancythm_add_provided_theorem_to_group:nn}
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \fancythm_add_provided_theorem_to_group:nn #1 #2
|
||||
{
|
||||
\cs_if_exist:cF { @@_provided_theorem__#1__group_clist }
|
||||
{
|
||||
\clist_new:c { @@_provided_theorem__#1__group_clist }
|
||||
}
|
||||
\clist_put_left:cn { @@_provided_theorem__#1__group_clist } { #2 }
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\AddProvidedFancyTheoremToGroup}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\NewDocumentCommand { \AddProvidedFancyTheoremToGroup } { m m }
|
||||
{
|
||||
\fancythm_add_provided_theorem_to_group:nn { #1 } { #2 }
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\@@_provide_package_theorem:nnn}
|
||||
% \begin{syntax}
|
||||
% \cs{@@_provide_package_theorem:nnn}\marg{key=value list}\marg{fancy theorem}
|
||||
% \marg{group}
|
||||
% \end{syntax}
|
||||
%
|
||||
% Group can be one of \texttt{big}, \texttt{small}, \texttt{tiny},
|
||||
% and the provided theorem will have this group, unless it conflicts
|
||||
% with a user-provided group, in which case this is ignored.
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \@@_provide_package_theorem:nnn #1 #2 #3
|
||||
{
|
||||
\@@_set_normalized_keys:nn { #1 } { #2 }
|
||||
\cs_if_exist:cT { @@_provided_theorem__#2__group_clist }
|
||||
{
|
||||
\clist_concat:ccc
|
||||
{ l_@@_group_clist }
|
||||
{ @@_provided_theorem__#2__group_clist }
|
||||
{ l_@@_group_clist }
|
||||
}
|
||||
\clist_if_in:NnF \l_@@_group_clist { big }
|
||||
{
|
||||
\clist_if_in:NnF \l_@@_group_clist { small }
|
||||
{
|
||||
\clist_if_in:NnF \l_@@_group_clist { tiny }
|
||||
{
|
||||
\clist_put_right:Nn \l_@@_group_clist { #3 }
|
||||
}
|
||||
}
|
||||
}
|
||||
\fancythm_provide_theorem:nVVV
|
||||
{ #2 }
|
||||
\l_@@_group_clist
|
||||
\l_@@_name_tl
|
||||
\l_@@_thmtools_clist
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\fancythm_provide_big_theorem:nn}
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \fancythm_provide_big_theorem:nn #1 #2
|
||||
{
|
||||
\@@_provide_package_theorem:nnn { #1 } { #2 } { big }
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\fancythm_provide_small_theorem:nn}
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \fancythm_provide_small_theorem:nn #1 #2
|
||||
{
|
||||
\@@_provide_package_theorem:nnn { #1 } { #2 } { small }
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macro}{\fancythm_provide_tiny_theorem:nn}
|
||||
% \begin{macrocode}
|
||||
\cs_new:Npn \fancythm_provide_tiny_theorem:nn #1 #2
|
||||
{
|
||||
\@@_provide_package_theorem:nnn { #1 } { #2 } { tiny }
|
||||
}
|
||||
% \end{macrocode}
|
||||
% \end{macro}
|
||||
%
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
\bool_if:NT \g_@@_generate_defaults_bool
|
||||
{
|
||||
\AddToHook { begindocument / before } [ fancythm ]
|
||||
{
|
||||
\fancythm_provide_big_theorem:nn { style = thmredmarginandfill } { theorem }
|
||||
\fancythm_provide_big_theorem:nn { style = thmredmarginandfill } { proposition }
|
||||
\fancythm_provide_big_theorem:nn { style = thmredmarginandfill } { corollary }
|
||||
\fancythm_provide_big_theorem:nn { style = thmbluemarginandfill } { definition }
|
||||
\fancythm_provide_big_theorem:nn { style = thmorangemarginandfill} { lemma }
|
||||
\fancythm_provide_big_theorem:nn { style = thmgreenmargin } { example }
|
||||
\fancythm_provide_big_theorem:nn
|
||||
{
|
||||
style = thmredmarginbluefill,
|
||||
name = Theorem ~ and ~ Definition
|
||||
} { theoremdef }
|
||||
\fancythm_provide_big_theorem:nn
|
||||
{
|
||||
style = thmredmarginbluefill,
|
||||
name = Proposition ~ and ~ Definition
|
||||
} { propositiondef }
|
||||
\fancythm_provide_big_theorem:nn
|
||||
{
|
||||
style = thmorangemarginbluefill,
|
||||
name = Lemma ~ and ~ Definition
|
||||
} { propositiondef }
|
||||
% \end{macrocode}
|
||||
% \begin{macrocode}
|
||||
\fancythm_provide_small_theorem:nn { style = thmvioletmargin } { notation }
|
||||
\fancythm_provide_small_theorem:nn { style = thmyellowmargin } { remark }
|
||||
\fancythm_provide_small_theorem:nn { style = thmgoldmargin } { praise }
|
||||
\fancythm_provide_small_theorem:nn { style = thmblackmarginandfill } { question }
|
||||
\fancythm_provide_small_theorem:nn { style = thmblackmargin } { orga }
|
||||
\fancythm_provide_small_theorem:nn { style = thmredmargin } { fact }
|
||||
\fancythm_provide_small_theorem:nn
|
||||
{
|
||||
style = thmyellowmargin,
|
||||
name = Trivial ~ Nonsense
|
||||
} { trivial }
|
||||
\fancythm_provide_small_theorem:nn
|
||||
{
|
||||
style = thmvioletmargin,
|
||||
name = Abuse ~ of ~ Notation
|
||||
} { abuse }
|
||||
\fancythm_provide_small_theorem:nn
|
||||
{
|
||||
style = thmyellowmargin,
|
||||
name = Oral ~ remark
|
||||
} { oral }
|
||||
% \end{macrocode}
|
||||
% \begin{macrocode}
|
||||
\fancythm_provide_tiny_theorem:nn { } { variant }
|
||||
\fancythm_provide_tiny_theorem:nn { } { assumption }
|
||||
\fancythm_provide_tiny_theorem:nn { } { note }
|
||||
\fancythm_provide_tiny_theorem:nn { } { warning }
|
||||
\fancythm_provide_tiny_theorem:nn { } { goal }
|
||||
\fancythm_provide_tiny_theorem:nn { } { strategy }
|
||||
\fancythm_provide_tiny_theorem:nn { } { problem }
|
||||
\fancythm_provide_tiny_theorem:nn { } { info }
|
||||
\fancythm_provide_tiny_theorem:nn { } { observe }
|
||||
\fancythm_provide_tiny_theorem:nn { } { property }
|
||||
\fancythm_provide_tiny_theorem:nn { } { intuition }
|
||||
\fancythm_provide_tiny_theorem:nn { } { recall }
|
||||
\fancythm_provide_tiny_theorem:nn { } { idea }
|
||||
\fancythm_provide_tiny_theorem:nn { } { exercise }
|
||||
\fancythm_provide_tiny_theorem:nn { } { reminder }
|
||||
}
|
||||
}
|
||||
\DeclareHookRule { begindocument / before } { groupthm } { after } { fancythm }
|
||||
% \end{macrocode}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \begin{macrocode}
|
||||
%</package>
|
||||
% \end{macrocode}
|
||||
%
|
||||
% \end{implementation}
|
||||
%
|
||||
%
|
||||
%
|
||||
% \newpage
|
||||
% \PrintIndex
|
|
@ -1,6 +0,0 @@
|
|||
@default_files = ("groupthm.dtx");
|
||||
$makeindex = "makeindex -s gind.ist %O -o %D %S";
|
||||
$clean_ext .= ' glo';
|
||||
$clean_ext .= ' hd';
|
||||
$clean_full_ext .= ' sty';
|
||||
$emulate_aux = 1;
|
File diff suppressed because it is too large
Load diff
92
src/environments/thmstyle.pysty
Normal file
92
src/environments/thmstyle.pysty
Normal file
|
@ -0,0 +1,92 @@
|
|||
__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
|
|
@ -1,6 +0,0 @@
|
|||
@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;
|
|
@ -1,412 +0,0 @@
|
|||
% \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
|
|
@ -8,7 +8,7 @@ __HEADER__(Definitions of categories with automatic indexing)%% Wrapper commands
|
|||
|
||||
\NewDocumentCommand{\category}{ m }
|
||||
{
|
||||
\operatorname{\textup{\textbf{#1}}}
|
||||
\operatorname{\textbf{#1}}
|
||||
}
|
||||
|
||||
|
||||
|
@ -41,12 +41,6 @@ __HEADER__(Definitions of categories with automatic indexing)%% Wrapper commands
|
|||
}
|
||||
}
|
||||
|
||||
|
||||
\NewDocumentCommand{\MakeCategoryIndex}{ }
|
||||
{
|
||||
\printindex[categories]
|
||||
}
|
||||
|
||||
\makeindex
|
||||
[
|
||||
name = categories,
|
||||
|
@ -148,24 +142,3 @@ __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}
|
|
@ -30,7 +30,7 @@ __HEADER__(Faktor package that also handles cofaktors)
|
|||
\raisebox{#4\ht2}{\usebox2}% Denominator
|
||||
}
|
||||
|
||||
\DeclareDocumentCommand{\cofaktor}{s O{-0.5} m O{0.5} m}{% \newfaktor[*][#2]{#3}[#4]{#5} -> #2\#4
|
||||
\DeclareDocumentCommand{\cofaktor}{s m O{-0.5} m O{0.5}}{% \newfaktor[*][#2]{#3}[#4]{#5} -> #2\#4
|
||||
\setbox0=\hbox{\ensuremath{#3}}% Store numerator
|
||||
\setbox1=\hbox{\ensuremath{\diagdown}}% Store slash /
|
||||
\setbox2=\hbox{\ensuremath{#5}}% Store denominator
|
|
@ -10,17 +10,16 @@ __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.
|
||||
|
||||
\NewDocumentCommand{\MakeAliasesForwith}{m m m}
|
||||
{
|
||||
\def\makealiasesforwith#1#2#3{
|
||||
\def__PACKAGE_MACRO__(makealias)##1{
|
||||
\expandafter\def\csname #2##1\endcsname{\ensuremath{#1{##1}}}
|
||||
}
|
||||
|
@ -35,11 +34,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
|
|
@ -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, decorations.markings}
|
||||
\usetikzlibrary{calc, intersections, through, quotes, angles, babel, positioning, snakes}
|
||||
|
||||
\RequirePackage{tikz-cd} %Commutative diagrams
|
||||
\RequirePackage{xparse}
|
||||
|
@ -42,31 +42,3 @@ __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={-,-}}}
|
|
@ -87,11 +87,9 @@ __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}
|
||||
|
@ -165,10 +163,6 @@ __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}
|
||||
|
@ -193,11 +187,6 @@ __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
|
|
@ -42,4 +42,6 @@ __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{--}}
|
||||
|
||||
|
||||
|
|
@ -21,25 +21,21 @@ __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]%
|
||||
}
|
||||
\NewDocumentCommand{\PrintVocabIndex}{ }
|
||||
{%
|
||||
\printindex[vocabindex]%
|
||||
\newcommand\printvocabindex{
|
||||
\printindex[vocabindex]
|
||||
}
|
||||
\else
|
||||
\NewDocumentCommand{\vocab}{O{} m }{%
|
||||
\textbf{\color{blue} #2}%
|
||||
}%
|
||||
\NewDocumentCommand{\vocab}{O{} m }{
|
||||
\textbf{\color{blue} #2}
|
||||
}
|
||||
\fi
|
||||
|
|
@ -1,62 +0,0 @@
|
|||
%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
|
|
@ -16,6 +16,3 @@ 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]$|
|
|
@ -1,62 +0,0 @@
|
|||
__HEADER__(Iterate over powerset of clist)
|
||||
|
||||
\ExplSyntaxOn
|
||||
|
||||
%%% Iterate over powerset of claist
|
||||
|
||||
\clist_new:N \l_powerset_copied_clist
|
||||
\seq_new:N \l_powerset_saved_seq
|
||||
|
||||
|
||||
|
||||
\cs_generate_variant:Nn \clist_remove_all:Nn { N V }
|
||||
|
||||
% Pseudocode of this macro
|
||||
% remove left -> push on stack
|
||||
% call recursive
|
||||
% add left to 'extra'
|
||||
% call recursive
|
||||
% remove left from 'extra'
|
||||
% add from stack to left
|
||||
|
||||
\cs_new:Npn \__powerset_clist_foreach_aux:Nn #1 #2
|
||||
{
|
||||
\clist_if_empty:NTF \l_powerset_copied_clist
|
||||
{
|
||||
#2
|
||||
}
|
||||
{
|
||||
\clist_get:NN \l_powerset_copied_clist \l_tmpa_tl
|
||||
\seq_push:NV \l_powerset_saved_seq \l_tmpa_tl
|
||||
\clist_pop:NN \l_powerset_copied_clist { \l_tmpa_tl }
|
||||
|
||||
\__powerset_clist_foreach_aux:Nn #1 {#2}
|
||||
|
||||
\seq_get:NN \l_powerset_saved_seq \l_tmpa_tl
|
||||
\clist_put_left:NV #1 \l_tmpa_tl
|
||||
|
||||
\__powerset_clist_foreach_aux:Nn #1 {#2}
|
||||
|
||||
\seq_get:NN \l_powerset_saved_seq \l_tmpa_tl
|
||||
\clist_remove_all:NV #1 \l_tmpa_tl
|
||||
\clist_push:NV \l_powerset_copied_clist \l_tmpa_tl
|
||||
\seq_pop:NN \l_powerset_saved_seq \l_tmpa_tl
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
% Usage:
|
||||
% \clist_use_powerset:Nn {clist variable name}{code for each subset}
|
||||
% This will execute #2 for each subset of the listname given as #1
|
||||
% In #2, the name given as #1 can be used for the current subset
|
||||
% After execution, the value of #1 is restored
|
||||
\cs_new:Npn \powerset_clist_foreach:Nn #1 #2
|
||||
{
|
||||
\clist_set_eq:NN \l_powerset_copied_clist #1
|
||||
\clist_clear:N #1
|
||||
\clist_remove_duplicates:N \l_powerset_copied_clist
|
||||
|
||||
\__powerset_clist_foreach_aux:Nn #1 {#2}
|
||||
|
||||
\clist_set_eq:NN #1 \l_powerset_copied_clist
|
||||
}
|
|
@ -1,8 +1,6 @@
|
|||
__HEADER__(Declaring of math symbols with automatic indexing)
|
||||
|
||||
\@ifclassloaded{beamer}{}{
|
||||
\RequirePackage{imakeidx}
|
||||
}
|
||||
\RequirePackage{imakeidx}
|
||||
\RequirePackage{xparse}
|
||||
|
||||
% Keys used for declaring symbols
|
||||
|
@ -35,20 +33,18 @@ __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
|
||||
@
|
||||
$#4{#5}#6$
|
||||
#3
|
||||
}
|
||||
}
|
||||
\index[#1]
|
||||
{
|
||||
#7
|
||||
@
|
||||
$#4{#5}#6$
|
||||
#3
|
||||
}
|
||||
\bool_gset_true:c { used_#2 }
|
||||
}
|
||||
#4{#5}
|
||||
}
|
||||
\expandafter\protected\expandafter\gdef\csname#2\endcsname
|
||||
{
|
26
src/utils/todo.pysty
Normal file
26
src/utils/todo.pysty
Normal file
|
@ -0,0 +1,26 @@
|
|||
__HEADER__(Easy standards for the todonotes package)
|
||||
|
||||
\RequirePackage[colorinlistoftodos]{todonotes}
|
||||
\RequirePackage{xparse}
|
||||
|
||||
% Make \todo{} available inside minipages
|
||||
\usepackage{marginnote}
|
||||
\let\marginpar\marginnote
|
||||
|
||||
\setuptodonotes{tickmarkheight=0.1cm, size=\small}
|
||||
|
||||
\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
148
src/wip/cache/cache.pysty3
vendored
|
@ -1,148 +0,0 @@
|
|||
__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}
|
||||
}
|
||||
}
|
|
@ -1,34 +0,0 @@
|
|||
__HEADER__(Hacky code setup for verbatim code)
|
||||
|
||||
__NEW_IF__(pipe,false)
|
||||
\DeclareOption{pipe}{__SET_IF__(pipe,true)}
|
||||
\ProcessOptions
|
||||
|
||||
|
||||
% This is needed in general: when _ is active, we want it to expand to
|
||||
% an actual _ character
|
||||
\catcode`_=13
|
||||
\let_\_
|
||||
\catcode`_=8
|
||||
|
||||
\ExplSyntaxOn
|
||||
\NewDocumentCommand{\code}{m}
|
||||
{
|
||||
\tl_set_rescan:Nnn \l_tmpa_tl
|
||||
{
|
||||
\char_set_catcode_active:N _
|
||||
}
|
||||
{ #1 }
|
||||
\texttt{ \tl_use:N \l_tmpa_tl }
|
||||
}
|
||||
\ExplSyntaxOff
|
||||
|
||||
__IF__(pipe)
|
||||
\catcode`|=\active
|
||||
\def|#1|{
|
||||
\code{#1}
|
||||
}
|
||||
% Do not make | active inside tables
|
||||
\AddToHook{env/tabular/before}[code]{\catcode`|=12}
|
||||
\AddToHook{env/tabular/after}[code]{\catcode`|=13}
|
||||
\fi
|
|
@ -4,10 +4,6 @@ __HEADER__(Simple enumeration package wrapper. Handles custom number setting and
|
|||
\RequirePackage[shortlabels]{enumitem}
|
||||
\RequirePackage{tikz}
|
||||
\newcommand\setItemnumber[1]{\setcounter{enum\romannumeral\@enumdepth}{\numexpr#1-1\relax}}
|
||||
\NewDocumentCommand{\SetItemNumber}{m}
|
||||
{
|
||||
\setcounter{enum\romannumeral\@enumdepth}{\numexpr#1-1\relax}
|
||||
}
|
||||
|
||||
\def__PACKAGE_MACRO__(drawcircle)#1{
|
||||
\tikz[baseline=(char.base)]{
|
|
@ -46,27 +46,33 @@ __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} { }
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_proof:w)
|
||||
}
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_endproof:)
|
||||
}
|
||||
\NewDocumentEnvironment{oldproof}{ o }
|
||||
{
|
||||
\IfValueTF { #1 }
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_proof:w) { #1 }
|
||||
}
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_proof:w)
|
||||
}
|
||||
}
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_endproof:)
|
||||
}
|
||||
|
||||
\NewDocumentEnvironment{oldsubproof} { o }
|
||||
{
|
||||
\IfValueTF { #1 }
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_subproof:n) { #1 }
|
||||
}
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_subproof:n) { \translate { Subproof } }
|
||||
}
|
||||
}
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_endsubproof:)
|
||||
}
|
||||
\NewDocumentEnvironment{oldsubproof}{ o }
|
||||
{
|
||||
\IfValueTF { #1 }
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_subproof:n) { #1 }
|
||||
}
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_subproof:n) { \translate { Subproof } }
|
||||
}
|
||||
}
|
||||
{
|
||||
__PACKAGE_MACRO__(saved_endsubproof:)
|
||||
}
|
||||
|
||||
%%% Main implementation
|
||||
|
|
@ -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}
|
||||
|
||||
\NewDocumentCommand\todoref{O{}}{
|
||||
\todo[color=red!40, #1]{Add reference.}
|
||||
}
|
||||
|
||||
\NewDocumentCommand\todoquestion{O{}}{
|
||||
\todo[color=black!10, size=\tiny, #1]
|
||||
}
|
||||
|
||||
\NewDocumentCommand\todotex{O{}}{
|
||||
\todo[color=green!75!black, #1]
|
||||
}
|
||||
|
||||
\NewDocumentCommand\todotypo{O{}}{
|
||||
\todo[color=blue!40, size=\tiny, #1]{Typo corrected, double check this.}
|
||||
}
|
|
@ -1,11 +1,3 @@
|
|||
once:
|
||||
pdflatex test.tex
|
||||
|
||||
clean:
|
||||
latexmk -C test.tex
|
||||
|
||||
test:
|
||||
latexmk -dvi- -pdf -gg -Werror -latexoption=-interaction=nonstopmode test.tex
|
||||
latexmk -c test.tex
|
||||
|
||||
.PHONY: once clean test
|
||||
|
|
|
@ -1,194 +1,65 @@
|
|||
\documentclass[12pt]{minimal}
|
||||
|
||||
\usepackage{l3benchmark}
|
||||
|
||||
\usepackage[cache]{groupthm}
|
||||
|
||||
\usepackage[generate defaults = false]{fancythm}
|
||||
|
||||
\ExplSyntaxOn
|
||||
\iow_new:N \l_my_iow
|
||||
\iow_open:Nn \l_my_iow { dump.txt }
|
||||
\DeclareHookRule { begindocument } { before } { before } { groupthm }
|
||||
|
||||
%\cs_set_eq:NN \groupthm_cache:n \__groupthm_cache_auxfile:V
|
||||
%\cs_set_eq:NN \__groupthm_cache:n \use_none:n
|
||||
|
||||
\AddToHook { begindocument } [ before ]
|
||||
{
|
||||
\tl_gset:Nn \g__groupthm_lazy_auxfile_tl
|
||||
{
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Assumption}}{__assumption__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Exercise}}{__exercise__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Goal}}{__goal__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Idea}}{__idea__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Info}}{__info__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Intuition}}{__intuition__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Note}}{__note__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Observe}}{__observe__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Problem}}{__problem__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Property}}{__property__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Recall}}{__recall__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Reminder}}{__reminder__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Strategy}}{__strategy__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Variant}}{__variant__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {numbered=no,name=\csname __fancythm_translate:n\endcsname {Warning}}{__warning__groups_tiny}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Abuse of Notation},style=thmvioletmargin}{__abuse__groups_small}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Fact},style=thmredmargin}{__fact__groups_small}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Notation},style=thmvioletmargin}{__notation__groups_small}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Oral remark},style=thmyellowmargin}{__oral__groups_small}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Orga},style=thmblackmargin}{__orga__groups_small}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Praise},style=thmgoldmargin}{__praise__groups_small}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Question},style=thmblackmarginandfill}{__question__groups_small}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Remark},style=thmyellowmargin}{__remark__groups_small}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Trivial Nonsense},style=thmyellowmargin}{__trivial__groups_small}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Assumption}$^{\dagger }$}{__assumption__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Assumption}*$^{\dagger }$}{__assumption__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Assumption}*}{__assumption__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Exercise}$^{\dagger }$}{__exercise__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Exercise}*$^{\dagger }$}{__exercise__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Exercise}*}{__exercise__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Goal}$^{\dagger }$}{__goal__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Goal}*$^{\dagger }$}{__goal__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Goal}*}{__goal__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Idea}$^{\dagger }$}{__idea__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Idea}*$^{\dagger }$}{__idea__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Idea}*}{__idea__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Info}$^{\dagger }$}{__info__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Info}*$^{\dagger }$}{__info__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Info}*}{__info__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Intuition}$^{\dagger }$}{__intuition__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Intuition}*$^{\dagger }$}{__intuition__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Intuition}*}{__intuition__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Note}$^{\dagger }$}{__note__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Note}*$^{\dagger }$}{__note__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Note}*}{__note__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Observe}$^{\dagger }$}{__observe__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Observe}*$^{\dagger }$}{__observe__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Observe}*}{__observe__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Problem}$^{\dagger }$}{__problem__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Problem}*$^{\dagger }$}{__problem__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Problem}*}{__problem__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Property}$^{\dagger }$}{__property__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Property}*$^{\dagger }$}{__property__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Property}*}{__property__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Recall}$^{\dagger }$}{__recall__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Recall}*$^{\dagger }$}{__recall__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Recall}*}{__recall__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Reminder}$^{\dagger }$}{__reminder__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Reminder}*$^{\dagger }$}{__reminder__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Reminder}*}{__reminder__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Strategy}$^{\dagger }$}{__strategy__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Strategy}*$^{\dagger }$}{__strategy__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Strategy}*}{__strategy__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Variant}$^{\dagger }$}{__variant__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Variant}*$^{\dagger }$}{__variant__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Variant}*}{__variant__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Warning}$^{\dagger }$}{__warning__groups_tiny_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Warning}*$^{\dagger }$}{__warning__groups_tiny_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,numbered=no,name=\csname __fancythm_translate:n\endcsname {Warning}*}{__warning__groups_tiny_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Abuse of Notation}$^{\dagger }$,style=thmvioletmargin}{__abuse__groups_small_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Abuse of Notation}*$^{\dagger }$,style=thmvioletmargin}{__abuse__groups_small_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Abuse of Notation}*,style=thmvioletmargin}{__abuse__groups_small_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Fact}$^{\dagger }$,style=thmredmargin}{__fact__groups_small_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Fact}*$^{\dagger }$,style=thmredmargin}{__fact__groups_small_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Fact}*,style=thmredmargin}{__fact__groups_small_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Notation}$^{\dagger }$,style=thmvioletmargin}{__notation__groups_small_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Notation}*$^{\dagger }$,style=thmvioletmargin}{__notation__groups_small_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Notation}*,style=thmvioletmargin}{__notation__groups_small_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Oral remark}$^{\dagger }$,style=thmyellowmargin}{__oral__groups_small_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Oral remark}*$^{\dagger }$,style=thmyellowmargin}{__oral__groups_small_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Oral remark}*,style=thmyellowmargin}{__oral__groups_small_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Orga}$^{\dagger }$,style=thmblackmargin}{__orga__groups_small_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Orga}*$^{\dagger }$,style=thmblackmargin}{__orga__groups_small_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Orga}*,style=thmblackmargin}{__orga__groups_small_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Praise}$^{\dagger }$,style=thmgoldmargin}{__praise__groups_small_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Praise}*$^{\dagger }$,style=thmgoldmargin}{__praise__groups_small_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Praise}*,style=thmgoldmargin}{__praise__groups_small_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Question}$^{\dagger }$,style=thmblackmarginandfill}{__question__groups_small_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Question}*$^{\dagger }$,style=thmblackmarginandfill}{__question__groups_small_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Question}*,style=thmblackmarginandfill}{__question__groups_small_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Remark}$^{\dagger }$,style=thmyellowmargin}{__remark__groups_small_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Remark}*$^{\dagger }$,style=thmyellowmargin}{__remark__groups_small_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Remark}*,style=thmyellowmargin}{__remark__groups_small_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Trivial Nonsense}$^{\dagger }$,style=thmyellowmargin}{__trivial__groups_small_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Trivial Nonsense}*$^{\dagger }$,style=thmyellowmargin}{__trivial__groups_small_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=sublevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Trivial Nonsense}*,style=thmyellowmargin}{__trivial__groups_small_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Corollary},style=thmredmarginandfill}{__corollary__groups_big}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Definition},style=thmbluemarginandfill}{__definition__groups_big}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Example},style=thmgreenmargin}{__example__groups_big}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Lemma},style=thmorangemarginandfill}{__lemma__groups_big}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Proposition and Definition},style=thmredmarginbluefill}{__propositiondef__groups_big}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Proposition},style=thmredmarginandfill}{__proposition__groups_big}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Theorem and Definition},style=thmredmarginbluefill}{__theoremdef__groups_big}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,name=\csname __fancythm_translate:n\endcsname {Theorem},style=thmredmarginandfill}{__theorem__groups_big}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Corollary}$^{\dagger }$,style=thmredmarginandfill}{__corollary__groups_big_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Corollary}*$^{\dagger }$,style=thmredmarginandfill}{__corollary__groups_big_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Corollary}*,style=thmredmarginandfill}{__corollary__groups_big_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Definition}$^{\dagger }$,style=thmbluemarginandfill}{__definition__groups_big_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Definition}*$^{\dagger }$,style=thmbluemarginandfill}{__definition__groups_big_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Definition}*,style=thmbluemarginandfill}{__definition__groups_big_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Example}$^{\dagger }$,style=thmgreenmargin}{__example__groups_big_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Example}*$^{\dagger }$,style=thmgreenmargin}{__example__groups_big_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Example}*,style=thmgreenmargin}{__example__groups_big_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Lemma}$^{\dagger }$,style=thmorangemarginandfill}{__lemma__groups_big_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Lemma}*$^{\dagger }$,style=thmorangemarginandfill}{__lemma__groups_big_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Lemma}*,style=thmorangemarginandfill}{__lemma__groups_big_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition and Definition}$^{\dagger }$,style=thmredmarginbluefill}{__propositiondef__groups_big_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition and Definition}*$^{\dagger }$,style=thmredmarginbluefill}{__propositiondef__groups_big_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition and Definition}*,style=thmredmarginbluefill}{__propositiondef__groups_big_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition}$^{\dagger }$,style=thmredmarginandfill}{__proposition__groups_big_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition}*$^{\dagger }$,style=thmredmarginandfill}{__proposition__groups_big_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Proposition}*,style=thmredmarginandfill}{__proposition__groups_big_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem and Definition}$^{\dagger }$,style=thmredmarginbluefill}{__theoremdef__groups_big_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem and Definition}*$^{\dagger }$,style=thmredmarginbluefill}{__theoremdef__groups_big_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem and Definition}*,style=thmredmarginbluefill}{__theoremdef__groups_big_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem}$^{\dagger }$,style=thmredmarginandfill}{__theorem__groups_big_dagger}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem}*$^{\dagger }$,style=thmredmarginandfill}{__theorem__groups_big_dagger_star}
|
||||
\csname __groupthm_thmtools_declare_theorem:nn\endcsname {sibling=toplevel,sibling=sublevel,name=\csname __fancythm_translate:n\endcsname {Theorem}*,style=thmredmarginandfill}{__theorem__groups_big_star}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {abuse}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {assumption}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {corollary}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {definition}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {example}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {exercise}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {fact}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {goal}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {idea}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {info}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {intuition}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {lemma}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {notation}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {note}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {observe}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {oral}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {orga}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {praise}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {problem}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {property}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {propositiondef}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {proposition}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {question}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {recall}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {remark}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {reminder}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {strategy}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {theoremdef}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {theorem}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{big}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {trivial}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{small}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {variant}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
\csname __groupthm_define_family_options:nnnn\endcsname {warning}{!s!t+}{\IfBooleanT {#1}{\AddTheoremToGroup {star}}\IfBooleanT {#2}{\AddTheoremToGroup {dagger}}}{tiny}
|
||||
}
|
||||
}
|
||||
\ExplSyntaxOff
|
||||
\documentclass[a4paper, german]{article}
|
||||
|
||||
\usepackage[lecture numbers = false, number all, number small environments = section]{mkessler-fancythm}
|
||||
|
||||
|
||||
\begin{document}
|
||||
\begin{theorem}[Name]\label{test}
|
||||
test
|
||||
\end{theorem}
|
||||
\begin{definition**}
|
||||
test
|
||||
\end{definition**}
|
||||
|
||||
\begin{abuse}
|
||||
\ref{test}
|
||||
|
||||
\end{abuse}
|
||||
\begin{theorem}
|
||||
test
|
||||
\end{theorem}
|
||||
|
||||
\mdfsetup{skipabove=8pt,skipbelow=\topskip, bottomline=true}
|
||||
\begin{lemma}
|
||||
|
||||
\end{lemma}
|
||||
|
||||
\begin{example}
|
||||
|
||||
\end{example}
|
||||
|
||||
\begin{praise}
|
||||
test
|
||||
\end{praise}
|
||||
|
||||
\begin{remark}
|
||||
test
|
||||
\end{remark}
|
||||
|
||||
\begin{notation}
|
||||
test
|
||||
\end{notation}
|
||||
|
||||
\begin{abuse}
|
||||
test
|
||||
\end{abuse}
|
||||
|
||||
\begin{theoremdef}
|
||||
|
||||
\end{theoremdef}
|
||||
|
||||
\begin{fact}
|
||||
test
|
||||
\end{fact}
|
||||
|
||||
\begin{orga}
|
||||
|
||||
\end{orga}
|
||||
|
||||
\begin{question}
|
||||
|
||||
\end{question}
|
||||
|
||||
\begin{oral}
|
||||
test
|
||||
\end{oral}
|
||||
|
||||
nothing
|
||||
\end{document}
|
||||
|
|
Some files were not shown because too many files have changed in this diff Show more
Loading…
Reference in a new issue