I’ve been working lately on two main projects: The new package managment 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
- 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
Type*. 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.