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:
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.

  • 4
    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.) Jul 26, 2011 at 8:34
  • 1
    For 1. have a look at clsguide on CTAN. Jul 26, 2011 at 8:35
  • …and also dtxtut. Jul 26, 2011 at 8:54
  • 3
    @Martin: the compiler is pdftex, not latex
    – user2478
    Jul 26, 2011 at 13:30
  • 1
    @Herbert: Ok, latex is a symlink to pdftex. Close enough ;-) Jul 26, 2011 at 13:35

2 Answers 2


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.

More advanced:

  • 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.

To be continued... I'll add links for the documents.

  • I made the answer CW. Any modification is welcome.
    – Leo Liu
    Jul 26, 2011 at 13:57

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. Jul 26, 2011 at 13:22
  • 2
    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, 2011 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. Jul 26, 2011 at 14:22
  • @Bill: Thanks a lot. Your reference links are amazing ;)
    – Chan
    Jul 26, 2011 at 16:26
  • -1 The Not So Short Introduction to LaTeX2e & linkrot: scharrer-online.de
    – nilon
    Sep 14, 2016 at 13:03

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.