Letter class alternatives with support for figures, tables, and labels
I recommend using the scrlttr2 class.
- It is extremely flexible
- It is actively maintained
- It is stable since many years; if there would occur any bug I'm sure the author would deal with it quickly
- There are templates (German example)
- The class includes concepts which distinguish it from other classes, such as variables, pseudo lengths
- You can use option files to store macros or to extend functionality
- You could even use
\section
,\subsection
,\subsubsection
,\paragraph
and\minisec
: the KOMA-Script author provides the option filesections.lco
for it, with an example - It benefits from features of the KOMA-Script bundle
- You can use
scrpage2
with it for header and footer - You can use tables and figures with captions, for example if you load the
float
and thecaption
package - Here's a German presentation about separation of content and presentation using scrlttr2: briefdemo.pdf (source code)
Originally, the KOMA-Script manual, including the sclttr2 documentation, has been written in German, also published as a book. There's an english translation, which could be a bit behind the most current features (currently 2011-05-30).
As a general remark: I expect a letter class to provide letter functionality, a book class to offer book features etc. - not a class to do all. There are many classes for different purposes and even if one uses two classes, the results can be merged.
I've never quite seen the advantage of a letter class. I just use article
class (plus a letterhead package that I wrote for my university.) Using the article
class obviously solves the problems with respect to undefined environments in (some of) the letter classes.
For mail merge type documents I use the datatool
package, which allows me to store the addresses in a .csv
file and allows an unlimited number of fields as needed. The documentation has examples of using it for mail merge. Here's an example of how I use it: Example of mailmerge package with an Excel spreadsheet. But my needs are quite minimal, so this may not be the best solution for everyone.