I'm working as a programmer for about 20 years and invested a lot of time into understanding programming and computers before earning money with it.

I've learned to program Java, use Windows, then Python, Linux. Now I'm a Devops learning Docker and Keycloak ... what I mean to say is: I've picked up a pretty pile of tech but TeX, well ... this always remained a love-hate relationship.

I've made a couple attempts at differents flavours of TeX in the past and was never really happy with the whole thing. In the last month I was using Pandoc over a Docker container, which generates PDF from a Markdown document. I generate the Markdown file from my own Python program. This is fine. I just needed to nudge the default theme and I almost got everything that I wanted.

My problem is: I know I don't master the TeX behind it. How do I learn TeX (or LuaTeX or whatever) so I really am in control?

I want to know about what the nitty-gritty details are. I want to know what consequences are of choosing this flavour of TeX and choosing that package etc.

How do I learn this? What is the starting point to get on that path?

Update: I've read (or at least skimmed over) many tutorials. Some of my recurring problem about those:

  • Many tutorials aim to teach you how to write a scientific paper in the end (which I'm not really interested in).

  • Many times the tutorials are old and I'm uncertain if the information is still relevant (just as an example), let's say if I already know I'll be using LuaTeX/LuaLaTeX.

My goal is: I want to know about the today relevant foundations of TeX. About the architecture of it. What the limits of which parts are. I want to be able to make an informed decision about which part of TeX is going to be good about tackling what kind of problem.

  • 3
    How would you answer "How does one learn Linux?". Probably with "Depends on what you want to do with it.". Same here. If you use want to use Linux to do some standard tasks, you start it, select a nice theme and run applications. If you want to change things at the core level, the answer will be very different. Likewise, if you want to use LaTeX to write some documents, you load some packages, and there you go. If you want to write your own packages, you will need more preparations. – user194703 Sep 20 '19 at 6:23
  • 5
    Read the TeXbook, after that you'll know plainTeX and the underlying macros. Then read the LaTeX Companion, so you know LaTeX. Package choices come by time as you try to solve different issues you encounter in practice. The used engine (pdfTeX, XeTeX, or LuaTeX) don't have that huge of an impact, only really noteworthy difference is the usage of system fonts in the latter two. Oh, and the fact that you can use Lua in LuaTeX... And most package authors try to provide exhaustive documentation, so for the big packages you might skim through those as well. – Skillmon Sep 20 '19 at 6:23
  • 2
    @ MadMike Do not explore it, use it. I can drive a car without knowing almost nothing about its mechanics, except that it needs gasoline from time to time. Over time, you end up learning to change the oil, the battery or the spark plugs, but surely you will never need know how replace the clutch. I used LaTeX productively for years without knowing how work most TeX primitives, nor mess with the catcodes all the time, nor drawing every diagram with a Tikz that I can make in Inkscape in much less time. Establish your comfort zone an relax, the rest will take time. – Fran Sep 20 '19 at 18:32
  • 1
    See also this question. – ShreevatsaR Sep 20 '19 at 21:26
  • 1
    If you follow the advice given here, you'll probably waste a lot of time. Do it the other way round: Become a well informed user and then decide, what else to learn. I use LaTeX since 15 years as a user and never learned TeX. I'm not proud of the latter, but writing documents never ever made that necessary. With the try and error method and help by the lovely tex.stackexchange and from elsewhere you can get quite far: tex.stackexchange.com/a/325871/4736 – Keks Dose Sep 23 '19 at 11:05