Context: LaTeX is a typesetting system. When compiling a document, a lot of really in-depth debugging information is printed, which can be borderline incomprehensible to anyone but LaTeX experts. It can also be a visual hindrance when looking for important information like errors.
LaTeX is soo great! You don’t have to worry about formatting ever again.
Puts image I’m talking about 8 pages away from the section that talks about the image
Writes not only over the margin, but over the goddamn page boundary because adding a page was not fashionable that day
Moves a table left by 1 cm on every other compilation, moves it back in the other compilations (happened to a colleague)
So instead of worrying about formatting you worry about learning the incantations that force LaTeX at gunpoint not to fuck up the formatting.
Compiler:
Could not find "tikz.sty"
Me: So you want me to install the package called “tikz”?
Compiler:
no, there's no package called tikz. I need the file called "tikz.sty"
Me: Okay then, so which package provides the “tikz.sty” file?
Compiler:
fuck if I know, go google it or something ¯\_(ツ)_/¯
Switched to typst a few months ago, enjoying it much more than LaTeX so far. Really excited to see how it will grow in the future
Yeees, I forgot all about the non-existent module system.
– Professor: Here’s the template for your thesis.
– There are, like, 50 lines of macro imports here. Which modules does this need?
– Fuck if I know. You want my installation? It’s only 50GB.
I feel personally attacked. Brb, making presentation slides in beamer and compiling 1000 times to get the figure to the exact right pixel.
I definitely won’t make any changes to the figure later that will make me have to adjust the position again. Why yes, this is better than PowerPoint, why do you ask?
If you’re trying to do pixel adjustments of figure position and changing it breaks something, you missed the point of the software package and/or are doing something horribly wrong and unsupported.
Sheesh, now I feel actually attacked a little. I was being mostly hyperbolic, but you can do really useful things with complex figures in presentations. For example: revealing elements sequentially to build up to the final figure or altering opacity of different elements to bring the audience’s attention to specific parts of the figure.
This sequencing can sometimes very subtly alter the size of the figure as you change elements, so the default positioning will slightly change from one slide to the next. Most people won’t care or notice when a figure slightly drifts by a pixel or two during these sequences, but it bothers me tremendously so I add adjustments to keep every variation of the figure aligned on the slides.
If you’re trying to do something on LaTeX and you find yourself wrestling with the software or writing TeX commands. Take a step back and reconsider. The reason the software is fighting you is because you are trying to make it do something it is not meant for or you’re actively asking it to do the opposite of what you stated earlier you wanted to achieve. Thus creating a contradiction of intent.
Obvious examples are using the article template to write a book, or using the book template to write a letter. It is akin to using Excel as a game engine, possible, but not easily. You’re trying to use a hammer to unscrew a bolt. Of course the tool is gonna fight you.
Take a step back and reconsider. The reason the software is fighting you is because you are trying to make it do something it is not meant for or you’re actively asking it to do the opposite of what you stated earlier you wanted to achieve.
Wise words, and true most of the time.
But goddammit is it so hard not to write over the page border? This isn’t something I should have to specifically define as bad.
You don’t generally have to. There’s a package or environment somewhere that lifted that restriction or force it by trying to do something else. LaTeX is 100% deterministic. Someone, you perhaps unknowingly, told it to put that text there while trying to achieve something else.
Remember that LaTeX is about setting rules then letting it arrange the text in a way that follows those rules. If you try to meddle into the typography by hand, forcing specifics that break the rules, you will break its behavior. If it is putting text over the margin, it is because it determined that is the only way to fulfill the totality of your instructions.
For the image one there is an option to control if the image is immediate, or when if finds space to insert. Trouble is I have to look these up all the time…so what starts as an attempt at creating a cleanly formatted document often takes more time than messing around with a shitty editor like Word
Its always bothered me that a language meant to get rid of formatting there seems to be a lot of fucking formatting. There’s no way to change the way things look outside of explicit formatting (like themes). It’s basically all formatting.
And it’s a fucking mess. How in the fuck do I make titles? What about subtitles? Why is there no paragraph spacing? What’s the point of \title if it’s completely indistinguishable from other text?
I want a markdown editor that supports math LaTeX and a ton of plugins. Markdown is dead simple for a reason.
Your editor shoul show you \title as another colour
And subtitle would be \large after title line
It is all formatting rules. But eliminates formatting the body text.
At least you know output will be same, not like MS Word
Oh thank goodness, body text is notoriously the hardest thing to format in a document
I see a lot of strange takes around here, and honestly cannot understand where you are coming from. Like really: I’ve written several 100+ page documents with everything from basic tables, figures and equations, to various custom-formatted environments and programmatically generated sections, and I’ve never encountered even a third of these formatting issues people are talking about.
You literally just \documentclass[whatever]{my doc type}, \usepackage{stuff} and fire away. To be honest, I’ve seen some absolutely horrifying preambles and unnecessary style sheets, and feel the need to ask: How are you people making latex so hard?
The reason is that you’re reading TeX, not LaTeX. The latter has abstracted away the fundamental building blocks so few people know how an hbox is set anymore. So, an hbox is a box where the content is in horizontal mode. Between the things is glue. Glue can stretch and shrink. Depending on how you have set your tolerance and penalties, there’s a maximum percentage of stretch allowed. If the glue stretches more, it becomes bad, this is called badness and can effectively be up to 10000 bad. So why not just put more things into the box? Well, (La)TeX probably tried to do that, but came up with worse badness. TeX always chooses the least bad option on a paragraph level. In practice, the usual suspect is often that you have something else that can’t fit the last part of a line, like a really long word. If you can look at it and manually hyphenate it, things might be better.
Most probably a narrow column with a word near the end that TeX had problems hyphenating.
A line of text is basically a hbox. The words in this line are fixed in their lenght, so TeX distributes the space between them as evenly as possible to fill this hbox. It has a certain range for the length of a space, and tries to move words or parts of words with hyphenation around to stay in the OK range for the space width. If it can’t, it complains about under- or overfull hboxes.
I ran into this issue when using code blocks in LaTeX that contained a bash command like ‘echo aBcdEF32… > /var/www/index.php’, where aBcdEF32… was the base64 encoded string of a web shell. I wound up having to set the line break behavior to split on some random letters/numbers to get everything to wrap appropriately, although that was probably some hacky heretical solution.
You could have used a thin space every four or eight hex digits, showing that it is not really a space but making it easier to read.
But you cannot blame TeX for not being able to break such a construct.
Ironically the tom7 video about it using an AI to rewrite text to look prettier was the first time I learnt what badness and text layout in TeX actually meant.
Thank you for this writeup, very informative. I get a lot of these “badness 10000” messages when working with things that have “complex” layouts, for example a resume/CV template. Given that TeX was originally made for research papers/articles, it makes sense that weirdness would arise when it’s used for more layout-heavy stuff!
Badness 10000 usually indicates that something is very wrong. Usually overfull hboxes. If the text is spaced out to the point where it immediately looks bad, that could still be like badness 5000. What I have seen mostly is macros not playing well with other macros, and in LaTeX there’s a lot of macros under the hood, so it’s very hard to troubleshoot.
TIL my thesis could have been easier if Typst would have been available years earlier.
yeah, I still wrote my dissertation last year on latex because that was the template they had and I didn’t feel like reading all formatting rules and writing a Typst version for that. That said, creating a Typst template is a far more straightforward than any other format.
honestly LaTeX isn’t too bad once you have it all set up. An environment with the correct packages, a collection of templates for common document types, a set of macros for often-used constructions, and and editor with good snippets and syntax highlighting. Once you have all of that, LaTeX becomes a breeze. At one point, I was even taking notes with LaTeX in real-time during lectures.
But that’s the beauty of typst – it’s like a fully beefed out LaTeX setup, but straight out of the box. No need for snippets, because the syntax is lean enough as it is. No need for templates, because there is no boilerplate needed for a document. No need to waste half an hour setting up an environment and looking for dependencies – all of typst is just two executables (compiler and LSP), and package management is automatic.
Which apparently needs an account just to use it and a subscription to use it well. Don’t think something like that can be a lord and saviour over LaTeX.
That’s just to use the online editor. It’s open source, and there’s a CLI you can run locally.
This is what I though as well when I first looked at their website. But nope, the compiler and LSP are available as fully offline programs under the apache license. But I understand how you’d get confused, their website is strikingly polished for an open-source non-commercial project!
The only thing you’re missing out on if you use the offline version is having the rendered preview update in real time as you type, but you can sort of emulate that feature using their neovim plugin and a really fast PDF viewer like zathura.
The last point: I use MuPDF + entr as zarhura crush as a mf, not usable at all. Some others use typst-preview which can be used in the browser and as a VS Code extension. But I use Neovim btw and the web version lack a few key features. Anyway, I use mupdf+entr+nvim for many months now and it’s more than enough for me.
The web version, for me, is just to share my local project with someone, that’s it.
Well, overleaf.com is for LaTeX, but typst.app is for Typst, a superior alternative witch is in beta. So for some people it won’t be enough (yet), but for me it’s awesome.
If you work with LaTeX for five years and still have no idea what a hbox is or what that message means, you should not consider naming this “experience”.
I already explained this in my post of yesterday in this thread. I’ve been the TeX admin at our university in my student times. I’ve been creating styles and \shipout macros. I know this stuff inside out. Heck, I’ve even read good parts of the source to understand some finer points.