Hacker News new | ask | show | jobs
by YWall39 829 days ago
> The author is a PhD student that has been using LaTeX heavily for 10 years. But what should a new student use, and why? When the only reason to choose LaTeX is old colleagues and gatekeeping publishers, I know it's a matter of time.

Sadly its more than that. Will we be able to compile a typst file made today in 10 years? I have to do that regularly with latex. Will everybody one collaborates with also use typst? Very unlikely. A new PhD student may find it beneficial to write papers with someone who only uses latex. then why bother with typst? (and I really want typst to win)

4 comments

I regularly can't do that in LaTeX due to changes in packages. Yeah, the core is stable, but dependencies are still an issue in TeX land.
That's only true if you need a lot of speciality packages. For the vast majority of people using LaTeX, they only need the core packages like the basic features of hyperref, geometry, amsmath, amsthm, and in that case, they are quite stable.

I've never had a problem recompiling documents. Yeah, you might have a problem if you're using LaTeX for a fringe use but most people don't.

> Will we be able to compile a typst file made today in 10 years?

Yes! typst is actually better than LaTeX in this regard:

LaTeX: contrary to how it sells itself, it's not good at compiling old files. The TeX core is fine but the packaging story is awful. Once I found a beamer presentation about LaTeX itself, including of course some slides about the amazing backward compatibility. Well, the slides failed to compile in multiple places due to the fancy packages used by the author, which had made breaking changes between whatever they were using and my own TeX Live installation. And using an older version of TeX Live is not trivial. Another example: a few weeks ago a colleague found himself unable to compile a document that worked before the system (Linux distribution) update. It took us two hours to figure out that one of the LaTeX packages had made a change which made it incompatible with another package unless you switch the order of \usepackage. Fun!

typst: it's a single binary, statically linked. That's it! If you care about this, you can literally commit this one file (30MB or so) in your repository and it will run flawlessly in 10 years. The packaging system is very recent and still a preview, but it's already better than LaTeX since packages are imported by specific versions. And if you're worried that the typst package server will go down it's easy to mirror it locally.

> Will everybody one collaborates with also use typst? Very unlikely. A new PhD student may find it beneficial to write papers with someone who only uses latex.

That's the reason I mention. If it's the only reason left for learning LaTeX, good luck LaTeX. Very soon it will be "Will everybody one collaborates with also use LaTeX? Very unlikely".

> LaTeX: contrary to how it sells itself, it's not good at compiling old files.

yes and no, that bit me last week, some packages decided to become incompatible. but in my case 99% of old files compile fine today.

A legitimate concern given that Typst is still maturing. But I have at least one thing to say in its favour: you can lock the version of packages that you import. The only reason LaTeX documents full of \usepackages are reproducible ten years later is because packages are in maintenance mode, not because of well-thought-out future-proof design.
Typst is a single file binary. The preview packages are versioned too. If typst breaks the API in ten years, I'd still be able to download the old binary and make a PDF from scratch. I can't begin to imagine the complexity in installing multiple texlive distributions side by side.
Yes, but its more complicated. In my case I have slides with a number of include files, some have not changed since 2006 (just checked), one does not want to maintain slides with same ancient version of typst, and then possibly have many floating around.

For me, they need to promise full backwards compatibility.

That's a valid point: if you don't want a language that makes breaking changes (so you can always compile old files with the latest version), it's not the right time to use typst. It's just moving too fast now. It's currently at version 0.11. Come back when they release 1.0.
That old binary won't link with the shared libraries on your machine 10 years from now. Depends on 280 other crates. Ye gads.

"Yeah just use ancient binaries" is not a viable strategy for future-proofing.

It's a lot easier to move fast and break things when you don't care about stability.

  $ ldd bin/typst
   statically linked
You faked this. `ldd` never prints just the text `statically linked` for a statically-linked binary.

Here's the real output.

    $ ldd result/bin/typst
        linux-vdso.so.1 (0x00007ffd2c4e5000)
        libgcc_s.so.1 => /nix/store/28d6zz06v3mpwdbi72fdw64qmmq8rhfm-gcc-13.2.0-lib/lib/libgcc_s.so.1 (0x00007f4fe68b9000)
        libm.so.6 => /nix/store/7x591g0d1kydp4dci0jvksi0qbn013v3-glibc-2.38-27/lib/libm.so.6 (0x00007f4fe67d9000)
        libc.so.6 => /nix/store/7x591g0d1kydp4dci0jvksi0qbn013v3-glibc-2.38-27/lib/libc.so.6 (0x00007f4fe4619000)
        /nix/store/7x591g0d1kydp4dci0jvksi0qbn013v3-glibc-2.38-27/lib/ld-linux-x86-64.so.2 => /nix/store/7v29y7b3b38x2hpgld698fw6k5mffam8-glibc-2.38-44/lib64/ld-linux-x86-64.so.2 (0x00007f4fe68e1000)
You can't have truly statically linked binaries on glibc systems; they ditched support for that over a decade ago. On the 1% of Linux systems using Musl you can produce statically-linked binaries, but `ldd` will report `not a dynamic executable`.

You faked your console output.

It's not faked. I guess the nix recipe does things differently from the official binary. Try yourself: https://github.com/typst/typst/releases/download/v0.11.0/typ...

But it's true that when I tried ldd on a trivial static binary (compiling "int main() { return 0; }" with "gcc -static a.c") I got a different message: "not a dynamic executable". I don't know why you'd get sometimes one message sometimes the other...

Having to use magically-blessed (what you call "official") binaries is not a viable strategy either.
Yeah, this is also not a fair fight.

The "will it work in 10 years?" just swayed _immensely_ in Typst's favor.