1.93 KB
Newer Older
Alexander Povel's avatar
Alexander Povel committed
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
# Contributing

Welcome to the project!

This file is a short guide on how to contribute to it.
The gist is: just go ahead and hack at it.

## Feature Requests, Enhancements, Bugs, Issues

Please feel free to submit issues about problems and bugs you encountered.

Features and enhancements you would like to see added can also go there, and we can
then see towards implementing them for you.
Chances are that what you seek is already possible with the (many) included packages,
and only an example in the cookbook showing how to do it (but no change to the `*.cls`
file) is needed.

## Development Environment
Alexander Povel's avatar
Alexander Povel committed
19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46

The environment for compilation is taken care of by the Docker image as specified in
[the CI config file](.gitlab-ci.yml) (search for the `image` name on
Refer to its `DOCKERFILE` for what it does exactly.

It would be greatly beneficial to use that Docker image for yourself.
It is guaranteed and proven to work (a succeeding pipeline implies a succeeding Docker
Otherwise, it is not terribly hard to set up a local environment imitating that Docker
For installation advice, refer to the cookbook PDF Preface chapter.

## Style

Being a LaTeX project, there are no generally agreed-upon guides, styles, best
practices and the like.
Everything is basically free-form.
A look at the source code will reveal the few (stylistic) choices chosen for this project:

- A line limit of about 90.
- Proper indentation (this is very important!) for readability and maintainability.
  This is also true for math environments, where indenting `\frac{}{}` and other
  multi-argument commands will do wonders for legibility.
  Proper indentation involves aligning opening and closing braces and all that jazz.
  Unfortunately, there is no formatter to automatically do this for LaTeX.
- Proper commenting and even links to stackexchange solutions will probably be helpful
  and avoid duplicate lookups of already-solved issues.