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 | ||
formatter | ||
macros | ||
.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>} |