Using LaTeX is mostly fine, except for the endless compile times, useless error messages, lack of unicode, etc. like the GP said.
I'm maintaining an internally used LaTeX document class and the development experience is even worse. TeX has no concept of such avant-garde ideas like lists, dictionaries, or namespaces. Things break all the time, and sometimes only when you load three specific packages in a specific order because they all patch each other's routines. I still haven't completely groked the idea of fragile commands and expanding macros. Characters can change meaning depending on context, even the `comment` character (%) or the `escape` character (\), (and I believe even the curly braces) for example when used inside `\path{}` or `\url{}` [1]. It makes a difference whether you comment out line endings or not. The LaTeX3 syntax looks like a bad joke. I mean, look at it:
> except for the endless compile times, useless error messages, lack of unicode, etc.
Some of these have been fixed; see my sibling comment [0] for more details.
> TeX has no concept of such avant-garde ideas like lists, dictionaries, or namespaces. […]. The LaTeX3 syntax looks like a bad joke.
But that is in fact the entire purpose of LaTeX3. I agree that the syntax looks intimidating, but it's actually quite nice once you learn it, and it's written that way to provide namespacing in TeX. Similarly, LaTeX3 defines lists, dictionaries, and most other conventional datastructures.
> Things break all the time, and sometimes only when you load three specific packages in a specific order because they all patch each other's routines.
Hmm, well it depends. The LaTeX kernel and the TeX engines are more stable than nearly all other software, but the third-party packages do indeed break occasionally. But you see similar dynamics play out in most other ecosystems: JavaScript the language is incredibly stable and has excellent backwards compatibility, but if you use 50+ third-party packages, then things do indeed break occasionally.
> Characters can change meaning depending on context
Much like operator overloading in other languages, catcode changes in TeX can indeed be misused and are sometimes confusing, but they're also a pretty useful solution to problems that would otherwise be tricky to solve.
All this isn't to say that TeX doesn't have issues—I criticize LaTeX myself fairly frequently—but most of these are due to the fact that LaTeX is 40-year-old software built on a 50-year-old engine, and has remained backwards-compatible with documents throughout that entire time. And La(TeX) is slowly modernizing, so I'm fairly hopeful that things will continue to improve.
> Much like operator overloading in other languages, catcode changes in TeX can indeed be misused and are sometimes confusing, but they're also a pretty useful solution to problems that would otherwise be tricky to solve.
I'm sorry, but I've never seen overloading of such fundamental characters like the comment character or escape character anywhere. Or at least if you use these characters inside a string, it's pretty clear that the string context is special. In LaTeX I have no way of knowing which catcodes a macro has modified without essentially parsing the entire thing, which breaks syntax highlighters and language servers (something that increases quality of life in other languages substantially), because the compile times are prohibitive. The decision to let users redefine %, \ and literally every character seems like a really, really bad idea to me.
Other languages and syntaxes seem to do just fine, so I'm not sure what you mean by tricky to solve.
> most of these are due to the fact that LaTeX is 40-year-old software built on a 50-year-old engine, and has remained backwards-compatible with documents throughout that entire time
I realize that, and I appreciate what LaTeX (and by extension TeX) has done. It's a giant in sciences and the software world, of absolutely critical importance, but still. We learned a lot of lessons about writing software in the last 50 years, and Typst is applying these from the ground up. Unfortunately I don't have a lot of confidence that LaTeX can be modernized.
> I'm sorry, but I've never seen overloading of such fundamental characters like the comment character or escape character anywhere.
I believe that Racket [0], Mathematica [1], Raku [2], and Rust [3] let you assign arbitrary meanings to most symbols, but these are indeed much more restricted than TeX is (and for good reason). But the issue is really more that TeX barely supports lexical scoping, and that it lets you change the global catcodes at any point in the document, since changing the meanings of characters before any code runs or only in the middle of a scope is pretty useful.
> Or at least if you use these characters inside a string, it's pretty clear that the string context is special.
Verbatim is essentially equivalent to strings in other languages, and it mostly works pretty well, aside from the huge problem that it's impossible to nest it or pass it as an argument to most macros.
> In LaTeX I have no way of knowing which catcodes a macro has modified without essentially parsing the entire thing
Agreed, this is pretty annoying, but the only consolation is that most documents don't change their catcodes very often (since it's usually a pretty terrible idea).
> Other languages and syntaxes seem to do just fine, so I'm not sure what you mean by tricky to solve.
Texinfo [4] is what I was mainly thinking of, since that is able to completely redefine TeX's syntax without needing to manually implement parsing itself (which would be the best strategy today, but was less feasible back when computers were much slower). Similarly, active characters are pretty useful (this is how ~ is defined to insert a non-breaking space, and is also useful for faux-Markdown [5]).
> We learned a lot of lessons about writing software in the last 50 years, and Typst is applying these from the ground up.
Yup, I first learned about Typst on the first day that it was released, and even then I thought that it had a good chance of suceeding, since it solved the problems that most users had (bad error messages and slow compile times), whereas the other TeX competitors focused on things like better typesetting quality, better extensibility, or easier programability, which most users don't care about at all.
I would be personally a little disappointed if Typst replaced LaTeX, but until that happens, I definitely hope that it continues to do well.
> Unfortunately I don't have a lot of confidence that LaTeX can be modernized.
There are lots of other non-LaTeX TeX formats that are quite modern (ConTeXt [6] is my personal favourite, but OpTeX [7] is nice too), and even LaTeX itself has improved quite a bit over the last 5 years or so [8]. But yeah, it's modernization process is still much slower than nearly any other piece of software, so I am also worried that this may end up being too little too late.
> I would be personally a little disappointed if Typst replaced LaTeX, but until that happens, I definitely hope that it continues to do well.
I'm curious about why you'd be disappointed. Is it because you think typst is an irremediably inferior technology to you or is it because you are invested in LaTex?
I do not mean to ask this in accusatory way. I'm not very well informed about typst or tex (I've only used typst once and I thought it was easy and nice).
I'm just curious about what is worse about typst that would make someone disappointed if that was the reason why you would be.
It's mostly that I'm quite personally invested in TeX, far more than most people are. I work on it nearly every day, and I'm even hosting an international TeX conference about a month from now [0].
I do have a few minor concerns about Typst, mainly that its parsing/compiling strategy allows less introspection and extensibility than TeX does (but this is necessary for its fast compile times), and the fact that it's backed by a for-profit company seems less robust than TeX's 50-year history of volunteer maintainership. And of course Typst is still missing quite a few features, but if it's successful I can't imagine that this will be an issue.
Also, I personally mostly use ConTeXt [1], which compiles much faster than LaTeX and has a very uniform syntax, so switching to Typst wouldn't have as many benefits compared to if I were switching from LaTeX.
So if Typst were to take over, I'd mainly be disappointed that my very deep knowledge of TeX would be no longer relevant. But I also wouldn't be surprised if Typst ultimately revitalized TeX, since it might motivate us to improve TeX even more, and Typst might be a good entrypoint for users interested in plain text typesetting (who might then switch to TeX if they find Typst too limiting).
Excuse me for going meta, but your series of comments here have been extraordinarily informative, wise, and a pleasure to read. Thank you for taking the time (and for your work on TeX).
My understanding is that ffmpeg is probably incredibly close to the metal, with tons of assembler mixed in. I imagine doing the same in Rust would include lots of `unsafe` blocks and a similar amount of assembly, so it wouldn't change much in terms of security. Or am I wrong?
Why are we still focusing on docx so much? Is anybody printing these at all? If not, I have to assume people are putting information in a big free text field, arranging the text like they sit at a type writer, and then other people have to extract the information from the same free text field. There has got to be a better solution for whatever people are trying to achieve with documents.
This comes up often, particularly on Reddit, and I don't think we're doing us any favors by counting it as social media. It has a few substantial differences to Facebook, Instagram, TikTok, Twitter, et al:
- The focus isn't on connecting. It has a "friends" feature (I believe?), but the social graph is extremely weak.
- You are not expected to use your real name. On the contrary, it comes off as weird unless you're a celebrity.
- There is no algorithm maximizing engagement, or at least not a hyper personalized algorithm that analyzes your scrolling speed and every sensor under the sun feeding into a machine learning system designed by professional psychologists to keep you hooked.
- Individuality isn't as encouraged. The user name is small, and there are no avatars, or at least used to be (I don't use the new interface very much). The focus is on the content instead.
I suppose you can find a definition of "social media" that includes Reddit, and surely the differences are fluid, especially since we can recognize some efforts by Reddit to become more like the real social media sites, but I vote for putting it in a different category for the sake of discussion.
Reddit absolutely has algorithmic feeds since it ipo'ed (maybe earlier but I used third party apps so I wasn't subjected to them). 90% of my home page is bullshit I didn't ask for.
You contribute to the stress-energy tensor by having mass or energy. That directly influences spacetime curvature. The Einstein field equations tell you how precisely.
It's a hard problem. How do you prove you own an account if you lost all proof of ownership? Especially so if an account was never tied to your real name, in which case you could at least rely on government ids.
Gambling creates addicts, and addicts are more likely to act in desperation. They might steal, default on debt, or kill themselves and are less productive members of society. I bet societies with lots of addicts are much less likely to thrive because they carry a ton of dead weight. Thus we should ban or at least curb gambling because it hurts us all in general.
We legalized online gambling, the end result is more and earlier addiction and the added tax does not outweigh the societal cost due to loss of jobs, added crime and secondary effects of broken families on monetary, let alone ethical grounds. And they had to change the law to have more bite due to gambling sites mostly ignoring the required checks on addicted and heavy usage players, because profits have to be made. At least they got rid of the insane commercials since that's what most normal people complained about.
I'm maintaining an internally used LaTeX document class and the development experience is even worse. TeX has no concept of such avant-garde ideas like lists, dictionaries, or namespaces. Things break all the time, and sometimes only when you load three specific packages in a specific order because they all patch each other's routines. I still haven't completely groked the idea of fragile commands and expanding macros. Characters can change meaning depending on context, even the `comment` character (%) or the `escape` character (\), (and I believe even the curly braces) for example when used inside `\path{}` or `\url{}` [1]. It makes a difference whether you comment out line endings or not. The LaTeX3 syntax looks like a bad joke. I mean, look at it:
\ExplSyntaxOn \tl_set:Nn \l_tmpa_tl {A} \group_begin: \tl_set:Nn \l_tmpa_tl {B} \par value~inside~group:~\tl_use:N \l_tmpa_tl \group_end: \par value~outside~group:~\tl_use:N \l_tmpa_tl
\tl_set:Nn \l_tmpb_tl {A} \group_begin: \tl_gset:Nn \l_tmpb_tl {B} \par value~inside~group:~\tl_use:N \l_tmpb_tl \group_end: \par value~outside~group:~\tl_use:N \l_tmpb_tl \ExplSyntaxOff
????
Let's just let it retire and focus our efforts on Typst and pushing publishers to accept Typst.
[1] Just look at all these poor souls trying to achieve something as exotic as putting a URL with a percent sign inside a footnote: https://tex.stackexchange.com/questions/12230/getting-percen...
reply