I studied typography and I used LaTeX occasionally but also for the 150+ page master thesis in archeology, of my brother.
Which required a special type of source reference/footnote formatting that I took from some legal/law-related LaTeX package. It also required sections typeset in Sanskrit and old Greek. Different package. There were issues when using them together. That was just the most headache-inducing bit I remember as this was way more than a decade ago.
I'm also a developer, most of my life was C/C++, now Rust. But also Tcl, Python, Lua, some projects in specialized functional languages etc.
Even with this BG, using LaTeX for the aformentioned thesis, a project where no good readymade template/package that covered all requirements was available, was painful.
I worked as a typographer and designer for a decade from my late teens to my late 20's. That was mostly PageMaker and then InDesign (I circumvented QuarkXPress where I could).
Using these desktop publishing packages was also often painful. Just in ways orthogonal to the painfulness of LaTeX.
I think a typsetting system needs to hit a sweet spot where you can do almost anything you can do in a desktop publishing software and almost anything you can do in a system like LaTeX.
I think typst (see [1], currently on HN front page) is on a good trajectory to be just that. Eventually.
I don't think (La)TeX was or ever will be able to hit that sweet spot.
I (a mere graphic designer) had mixed feelings about LaTeX for pretty much the same reasons, and realized LaTeX' modularity is its greatest power and its Achilles heel.
But I could find that "sweet spot" in ConTeXt. Switched to it 12 years ago and never looked back.
I can't feel the same way about Typst. Maybe I'm wrong but it seems to me it's going to have the same kind of Achilles heel than LaTeX.
> LaTeX' modularity is its greatest power and its Achilles heel
I'd say not quite, it's more the way that the entire system is built on shaky grounds, namely an insane operational model, an insane syntax, the lack of separation of concerns and the lack of namespaces. TeX could have been built on top of a predictable syntax, a transparent operational model, with a separation of styling and content and giving modules segregated namespaces, but none of that happened. When Leslie Lamport wrote LaTeX he tried to inch closer to these and other desiderata; when I built a system on top of XeLaTeX that started with a Markdown-ish/HTML-ish input syntax and compiled a XeLaTeX source text I certainly hoped I could achieve some kind of operational sanity and shield me from many of the dirty details, but in the end I gave up.
Edit Ah and to address your point I believe it's not modularity per se it's just that TeX is at its very heart an environment that is actively hostile to being clean and modular, it acts like it wants very much to be a wibbly-wobbly ball of stuff.
I tried Typst, which everyone seems to be saying is a replacement for LaTeX. Yes, Typst does get some stuff right and is easier to use in some cases. But LaTeX works out of the box with some basic document styles without learning much, and doesn't give you the freedom of a blank document.
In the end I gave up Typst. Didn't like it. Yes, Typst might be better for some but for writing basic documents like an article or basic math paper, Typst didn't work for me.
Isn’t LaTeX the most popular way of using TeX? Why is it bad to compare that to alternatives?
It’s like writing an article about Python and someone comments about speed differences between Cpython and Julia. Sure, Cpython isn’t Python, but isn’t that still valid and interesting?
Honestly the thing that I always find myself coming back to is Pandoc + Markdown, and then rendering the document with XeLaTeX. I personally find markdown very easy to write and parse on the fly, and it has a pretty straightforward transformation to LaTeX so I get pretty documents. I can also easily render it to other formats if I need to. Pandoc rocks.
What? You can init to a standard template. The syntax is significantly simpler and definitely easier to learn, it resembles something like markdown for simple things, a huge step up from LaTeX.
I can not imagine someone having an easier time with (La)TeX than with Typist, when starting from zero.
Are there any other mathematicians out there? I love TeX, while freely acknowledging that it has flaws, but maybe it's just because it is the water in which mathematical writers swim, so that we learn it from such an early age and it becomes essentially inconceivable to use anything else.
The author carefully notes that the blog is not typeset in TeX, but I was disappointed that someone who cares for typography would think that the point of math mode is to shove everything in an <em> (not even <i>) tag. TeX sets what it thinks of as variables in an appropriate slanted (not exactly italic) type, but it would not (unless specifically instructed to do so) put the exponent 2 in y = x^2 in that same slanted type.
(Incidentally, the Turing completeness that the author mentions was against Knuth's original vision for the language; as the mythology around TeX goes—although I can't find a source right now—he added the relevant extra power (I'm not sure what it was) only "reluctantly." At Guy Steele's request, by the way!)
I have the same sentiment about TeX. The fact that the language has been stable for over 30 years is incredibly important to me. I also feel like I can do anything in TeX: I have written a C compiler in TeX as an academic exercise so I cannot take complaints about TeX's macros seriously.
You can not take complaints about TeX being a very bad programming language, based on the totally obsolete principle of macro expansion seriously, because you have written something complex in it?
That is totally absurd. TeX is an awful programming language and there is no changing that. Either you accept it and suffer through it or use something else. But it obviously the worst thing about typesetting in any TeX derived system.
There's all kinds of weird stuff that people do, like the other day I saw a guy with a wingsuit that was apparently crafted from a carpet jump into the abyss to ride the winds. "I can not take people seriously who do not just use a carpet and jump off cliffs". You do you I guess.
The big thing for me is macros and programmability.
Early on in my learning graphic design I found the interactive tools of the time (Aldus PageMaker, Quark XPress) quite primitive and limiting --- at one point in order to have the control I wanted I was using Altsys Virtuoso (basically Macromedia Freehand v4, a drawing program) to lay out books --- at least it would hang punctuation.
Finding TeX on my NeXT Cube and then learning it meant that I had access to a tool which rather than being limited by what features a corporation decided to implement for a given version, was only limited by computer processing power, storage space, and my facility to write macros.
In addition to a lot of books and so forth, I've used TeX to:
- write the typesetting back-end for "HS" ads for an interactive phone book production system
- measure all the ads for a country's phone book, check the dimensions against their nominal size, and then either correct them (so that they would fit correctly) or note that ad in a list (so that the ad could be re-designed at the correct size)
- implement the typesetting back-end for a customizable story book where the text was selected by the user and their choices would be implemented so as to set the desired appearance of images
More importantly, for general development, when making TeX, Dr. Donald E. Knuth created Literate Programming:
What TeX gets right: flexible macros. Sometimes you really do need more control than most languages offer. A combination of XML documents with custom XSLT is probably the best alternative, but XML syntax is horrible to write.
What TeX gets wrong: flexible macros. There's a very good reason we shy away from "cannot be parsed, only executed" when designing a language these days. There's also the major issue of namespacing.
It's quite reminiscent of the Curse of Lisp, except somehow worse.
The problem with TeX is that the programming language TeX is extremely bad. It is genuinely painful to use and so while the idea of using an open ended programming language to do typesetting is great the hurdles you have to move over make it very unpleasant.
Macro expansion just is not a good programming paradigm. And often when I was facing a problem which could have been handled programmatically in TeX, e.g. generation of a table, it turned out far more complex than expected. No doubt if I didn't have hundreds of hours typesetting LaTeX, but hundreds of hours programming TeX it would have been relatively easy. But my point is that having a good language at the core would make these tasks immediately obvious to someone with significant programming experience.
You might be interested in Pollen. It's not a direct analog to TeX at all as the intended target is ebooks, but it might tick some of the boxes you've mentioned. Racket is a far better language than TeX for general purpose expression of internal logic or generation.
To be honest I think typst gets it mostly right, it puts a relatively simple python/rust'esque scripting language inside the document and lets you easily reference between them.
I don't think a lisp would have been a bad option, although I generally do not really like the syntax. Certainly it is a far better option than macro expansion.
Which required a special type of source reference/footnote formatting that I took from some legal/law-related LaTeX package. It also required sections typeset in Sanskrit and old Greek. Different package. There were issues when using them together. That was just the most headache-inducing bit I remember as this was way more than a decade ago.
I'm also a developer, most of my life was C/C++, now Rust. But also Tcl, Python, Lua, some projects in specialized functional languages etc.
Even with this BG, using LaTeX for the aformentioned thesis, a project where no good readymade template/package that covered all requirements was available, was painful.
I worked as a typographer and designer for a decade from my late teens to my late 20's. That was mostly PageMaker and then InDesign (I circumvented QuarkXPress where I could).
Using these desktop publishing packages was also often painful. Just in ways orthogonal to the painfulness of LaTeX.
I think a typsetting system needs to hit a sweet spot where you can do almost anything you can do in a desktop publishing software and almost anything you can do in a system like LaTeX.
I think typst (see [1], currently on HN front page) is on a good trajectory to be just that. Eventually.
I don't think (La)TeX was or ever will be able to hit that sweet spot.
[1] https://news.ycombinator.com/item?id=41014941
But I could find that "sweet spot" in ConTeXt. Switched to it 12 years ago and never looked back.
I can't feel the same way about Typst. Maybe I'm wrong but it seems to me it's going to have the same kind of Achilles heel than LaTeX.
I'd say not quite, it's more the way that the entire system is built on shaky grounds, namely an insane operational model, an insane syntax, the lack of separation of concerns and the lack of namespaces. TeX could have been built on top of a predictable syntax, a transparent operational model, with a separation of styling and content and giving modules segregated namespaces, but none of that happened. When Leslie Lamport wrote LaTeX he tried to inch closer to these and other desiderata; when I built a system on top of XeLaTeX that started with a Markdown-ish/HTML-ish input syntax and compiled a XeLaTeX source text I certainly hoped I could achieve some kind of operational sanity and shield me from many of the dirty details, but in the end I gave up.
Edit Ah and to address your point I believe it's not modularity per se it's just that TeX is at its very heart an environment that is actively hostile to being clean and modular, it acts like it wants very much to be a wibbly-wobbly ball of stuff.
In the end I gave up Typst. Didn't like it. Yes, Typst might be better for some but for writing basic documents like an article or basic math paper, Typst didn't work for me.
It’s like writing an article about Python and someone comments about speed differences between Cpython and Julia. Sure, Cpython isn’t Python, but isn’t that still valid and interesting?
I can not imagine someone having an easier time with (La)TeX than with Typist, when starting from zero.
The author carefully notes that the blog is not typeset in TeX, but I was disappointed that someone who cares for typography would think that the point of math mode is to shove everything in an <em> (not even <i>) tag. TeX sets what it thinks of as variables in an appropriate slanted (not exactly italic) type, but it would not (unless specifically instructed to do so) put the exponent 2 in y = x^2 in that same slanted type.
(Incidentally, the Turing completeness that the author mentions was against Knuth's original vision for the language; as the mythology around TeX goes—although I can't find a source right now—he added the relevant extra power (I'm not sure what it was) only "reluctantly." At Guy Steele's request, by the way!)
That is totally absurd. TeX is an awful programming language and there is no changing that. Either you accept it and suffer through it or use something else. But it obviously the worst thing about typesetting in any TeX derived system.
I remember in the '80s hearing that someone had written a Fortran compiler in troff, just to prove it could be done.
You must be fun at parties.
There's all kinds of weird stuff that people do, like the other day I saw a guy with a wingsuit that was apparently crafted from a carpet jump into the abyss to ride the winds. "I can not take people seriously who do not just use a carpet and jump off cliffs". You do you I guess.
Early on in my learning graphic design I found the interactive tools of the time (Aldus PageMaker, Quark XPress) quite primitive and limiting --- at one point in order to have the control I wanted I was using Altsys Virtuoso (basically Macromedia Freehand v4, a drawing program) to lay out books --- at least it would hang punctuation.
Finding TeX on my NeXT Cube and then learning it meant that I had access to a tool which rather than being limited by what features a corporation decided to implement for a given version, was only limited by computer processing power, storage space, and my facility to write macros.
A good example of this is: https://graphicdesign.stackexchange.com/questions/31088/any-...
In addition to a lot of books and so forth, I've used TeX to:
- write the typesetting back-end for "HS" ads for an interactive phone book production system
- measure all the ads for a country's phone book, check the dimensions against their nominal size, and then either correct them (so that they would fit correctly) or note that ad in a list (so that the ad could be re-designed at the correct size)
- implement the typesetting back-end for a customizable story book where the text was selected by the user and their choices would be implemented so as to set the desired appearance of images
More importantly, for general development, when making TeX, Dr. Donald E. Knuth created Literate Programming:
http://literateprogramming.com/
which programming style has allowed me to make larger and more complex programs more easily.
What TeX gets wrong: flexible macros. There's a very good reason we shy away from "cannot be parsed, only executed" when designing a language these days. There's also the major issue of namespacing.
It's quite reminiscent of the Curse of Lisp, except somehow worse.
Macro expansion just is not a good programming paradigm. And often when I was facing a problem which could have been handled programmatically in TeX, e.g. generation of a table, it turned out far more complex than expected. No doubt if I didn't have hundreds of hours typesetting LaTeX, but hundreds of hours programming TeX it would have been relatively easy. But my point is that having a good language at the core would make these tasks immediately obvious to someone with significant programming experience.
[0] https://docs.racket-lang.org/pollen/
I don't think a lisp would have been a bad option, although I generally do not really like the syntax. Certainly it is a far better option than macro expansion.
I'm grinding on the thesis in emacs, zotero, texlive, and qgis.
Not a proprietary package in sight.
And I will use proprietary software when sensible: my Open Source leanings are not religious in nature.
But the public nature of the product is huge.
Deleted Comment