There are other typesetting systems you could also look at:
- good old troff. Nowadays there are really nice tutorials coming with groff, and I got the book "Unix text processing" for free ages ago.
- Lout. Similar functionality to TeX but much simpler to learn.
- PostScript, if you first get some nice functions to turn it into something more high-level.
- XML + XSLT -> XSL-FO, for example using Apache FOP. XSL-FO is the modern-day equivalent to TeX and Lout and, like everything these days, uses XML syntax.
Once you figure out what high-level concepts you'd want to use (headings, paragraphs, tables?, font changes, etc.), you'll find that those have all got direct mappings into roff and Lout (and TeX) constructs. If you go for PostScript or PCL, you'll have to implement them yourself.