I’ve been working lately on two main projects: The new package management for niven and a LaTeX package.
Writing a package for LaTeX isn’t that complicated, the problem is the lack of good documentation - most books I found describe how to use LaTeX and don’t mention even commands like
\ifx. I used the following two books:
- LaTeX2e for class and package writers
- TEX BY TOPIC, A TEXNICIAN’S REFERENCE
These two cover most of the subjects that are needed to write a simple package. The second one really just a reference, while the first book gives you examples how to add for example options to your package. Both are really worth reading - my LaTeX package offers now both support for technical books and “normal” books which are meant for print (for a pet project - from time to time, I’m writing on a book).
niven’s package system is currently in its 8th revision, this one is a fairly good looking one though :). When finished, it will be able to load and store any kind of object that the user defines into packages. Packages are the only way to serialize data in niven, and they provide a container for objects. They also provide means to distribute the content easily. The current system is different from the other ones as it stores object instance information in a wrapper object and not in the object itself - i.e. you access objects via
ObjectHandle<Type> and not via
This sounds complicated first, but it turns out to be rather easy when you use it. Packages have an advantage over storing the content in plain files (let’s say,
.jpg) as they store type information and dependencies, meaning it’s possible that one package is linked to another package. A good example is a map where several objects use the same texture, no need to store it several times. So much for now, as soon as I get the 8th revision ramped up and working I’ll get back to you.