Hacky python scripts to simplify LaTeX package writing, in particular the ones at https://git.abstractnonsen.se/latex/latex-packages.
| base | ||
| build | ||
| config | ||
| default_formatters | ||
| errors | ||
| formatter | ||
| macros | ||
| utils | ||
| .gitignore | ||
| __init__.py | ||
| LICENSE | ||
| README.md | ||
PyTeX
Some hacky python scripts to simplify my LaTeX package writing.
Usage
Write packages in .pytex format. The PackageFormatter class will then - given author and name of the package - read in and format the file to produce a ready to use LaTeX package .sty file.
As an example, see the LatexPackages repository where this is used.
Macros
Here is a (possibly incomplete) list of the PyTeX macros currently supported. The examples assume that we create a package called example.sty, written by myself:
| macro name | explanation | example |
|---|---|---|
__HEADER__(< package description>) |
inserts package header, including license and LaTeX package header | \NeedsTexFormat{LaTeX2e}\ProvidesPackage{mkessler-example}[2021/10/07 - <description>] |
__PACKAGE_NAME__ |
inserts package name | mkessler-example |
__PACKAGE_PREFIX__ |
inserts package prefix | mkessler@example@ |
__PACKAGE_MACRO__(<macro-name>) |
declares internal package macro | \mkessler@example@<macro-name> |
__FILE_NAME__ |
inserts package file name | mkessler-example.sty |
__AUTHOR__ |
inserts package author | Maximilian Keßler |
__DATE__ |
inserts compilation date in format %Y/%m/%d |
2021/10/07 |
__NEW_IF__(<name>,<value>) |
declares a new LaTeX if | \ifmkessler@example@<name>\mkessler@example@<name><value> |
__SET_IF__(<name>,<value>) |
sets the value of a LaTeX if | \mkessler@example@<name><value> |
__IF__(<name>) |
starts conditional | \ifmkessler@example@<name> |
__LANGUAGE_OPTIONS__ |
inserts default language options | \newif\mkessler@example@english\mkessler@example@englishtrue\DeclareOption{german}{\mkessler@example@englishfalse}\DeclareOption{ngerman}{\mkessler@example@englishfalse}\DeclareOption{english}{\mkessler@example@englishtrue} |
__LANGUAGE_OPTIONS_X__ |
inserts default language options with xkeyval |
\newif\mkessler@example@english\mkessler@example@englishtrue\DeclareOptionX{german}{\mkessler@example@englishfalse}\DeclareOptionX{ngerman}{\mkessler@example@englishfalse}\DeclareOptionX{english}{\mkessler@example@englishtrue} |
__END_OPTIONS__ |
process options and handle wrong options | \DeclareOption*{\PackageWarning{mkessler-example}{Unknown '\CurrentOption'}\ProcessOptions\relax |
__END_OPTIONS_X__ |
process options with xkeyval |
\DeclareOptionX*{\PackageWarning{mkessler-example}{Unknown '\CurrentOption'}\ProcessOptionsX\relax |
__ERROR__(<message>) |
output package error | \PackageError{mkessler-example}{<message>} |
__WARNING__(<message>) |
output package warning | \PackageWarning{mkessler-example}{<message>} |
__INFO__(<message>) |
output package info | \PackageInfo{mkessler-example}{<message>} |