# What are good advanced LaTeX books?

I've been using LaTeX for about 3 months, and I'm hooked. My background is programming, so for the basic, google is sufficient. I did some research on amazon.com and found these two books with many positive feedback:
LaTeX-Companion-Techniques-Computer-Typesetting
Guide to LaTeX (4th Edition)

However, most of people said they are more like references than a real book. And if they really are, then I think I'd rather look up at CTAN. What I'm looking for is a book that can teach me how to program in LaTeX, for example:

1. Write my own package

2. Create animation

3. Create and using macro in LaTeX
....

I know there are many options around, however to pick the right one is not an easy task. Any advice or suggestion would be greatly appreciated. Thank you.

-
I don't think there is a book which covers points 1 and 2. Also note it's 'LaTeX' not 'Latex' (or 'LaTex' or 'latex', but `latex` is the compiler.) –  Martin Scharrer Jul 26 '11 at 8:34
For 1. have a look at `clsguide` on CTAN. –  Martin Scharrer Jul 26 '11 at 8:35
…and also `dtxtut`. –  Andrey Vihrov Jul 26 '11 at 8:54
@Martin: the compiler is `pdftex`, not `latex` –  Herbert Jul 26 '11 at 13:30
@Herbert: Ok, `latex` is a symlink to `pdftex`. Close enough ;-) –  Martin Scharrer Jul 26 '11 at 13:35

A personal list of list for heavy LaTeX users:

• More Math into LaTeX, 4ed. (easier)
• A Guide To LaTeX, 4ed.
• Digital Typography Using LaTeX. Springer.

• The LaTeX Companion, 2ed.
• The LaTeX Graphics Companion, 2ed.

And more: Many documents of LaTeX packages (user-level).

A personal useful book list for macro writers:

A personal useful (package) documentation list for package and class writers, general purpose:

• clsguide: LaTeX2e for class and package writers.
• source2e: Documented source code of LaTeX kernel.
• classes: Documented source code of LaTeX standard classes.
• macros2e: Martin's useful manual for LaTeX internal macros. (c.f. source2e)
• eTeX's manual.
• etoolbox: a useful toolbox of eTeX. For modern packages it is really useful.
• keyval: Support for key-value interface.
• pgfkey or xkeyval or l3keys2e: More advanced key-value interface.
• Some packages of Oberdiek bundle: ifpdf, ifxetex, ifluatex, atbegshi, kvoptions, zref, ...
• Some packages of tools bundle: array, calc (c.f. eTeX's primitives), fontsmpl (c.f. fonttable), layout (c.f. layouts), showkeys, trace, xspace, ...
• expl3, interface3 and source3 (i.e. l3kernel bundle): Introduction of LaTeX3 syntax and documented (developing) LaTeX3 kernel.
• Some packages of l3packages bundle, especially xparse.
• Documents of pdfTeX, and maybe XeTeX and LuaTeX.

-
I made the answer CW. Any modification is welcome. –  Leo Liu Jul 26 '11 at 13:57
Thanks for a nice list ;). –  Chan Jul 26 '11 at 16:25

For point 1, have a look at the following links:

The Not So Short Introduction to LaTeX2e

LaTeX2e for Authors

Although they refer to LaTeX2e, it should be sufficient for most applications of LaTeX. For point number 2, have a look at the following article:

Tools for creating LaTeX-integrated graphics and animation under GNU/Linux

For point 3, have a look at the following link:

Martin Scharrer's Website

The document provided on this site lists the internal macros defined by the LaTeX2e base files which can also be useful to package authors.

-
`macros2e` is on CTAN already, you can update the link. –  Andrey Vihrov Jul 26 '11 at 13:22
I must say (personally, I'm sorry), lshort is really not a good document. And it's only for beginners, but not suitable for any advance reference. A much better quick introduce to LaTeX is ltxprimer by Indian TUG. –  Leo Liu Jul 26 '11 at 13:23
See the `macros2e answer` of mine for the updated CTAN and code repository links. I have to say that IMHO this document is not a starting point to learn how to define own macros. –  Martin Scharrer Jul 26 '11 at 14:22
@Bill: Thanks a lot. Your reference links are amazing ;) –  Chan Jul 26 '11 at 16:26
@Chan: You're welcome! –  Bill Jul 27 '11 at 0:18