5 years of experience, yet still not clue what "Underfull \hbox" means
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.
As long as you let TeX do it's job, you usually don't get such issues. But there are many people who mistake TeX as a "Word for Scientists", and just make the same mistakes they make in Word because they do not grok TeX.
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.
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.
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
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.
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.
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.
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.
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.
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.
Those template errors feel almost passive-aggressive to me. Almost as if the compiler is telling you "Here are all the ways in which I tried to make your shitty code make sense, and yet it still doesn't work" lol
BTW I wrote my thesis in LibreOffice. That’s its own can of worms, but at least I knew how to wrestle it into submission – other than LaTeX. Set the font to Latin Modern Roman and no-one will know the difference.
LaTeX writes the same fonts better, at least compared to MS Office. I notice it when a papers been written in word with the Journal template with the same fonts and style. LaTeX kerns and splits new lines nicer.
I am curious just how many people would notice that (or the usage of the microtype package vs without).
I know of one professor in my college who dabbled in typography and was usually spot on when it came to something like this but I've never heard the others talk about it.
Use entr it's a godsend! It watches when you write a buffer and then runs a command, which can be a script. Save your LaTeX often, and you never ger those errors!
For vim users, there's also vimtex, which, on top of doing what entr does, has a "quick fixes" feature that basically creates a split with a concise list of errors that's much more readable than pdflatex (or similar) output
A "hbox" in TeX is a horizontal box. In 99% cases when laying out text, it's a line of text. "Underfull hbox" means "I couldn't stretch the content of this line far enough, so it will look janky as f due to the increased spacing". "Overfull hbox" means "Well, I tried my best to hyphenate and line-terminate, but this word will stick out of the margin and will look stupid as f."
Most of the time this is caused by a word that auto hyphenation can't deal with. You need to add a manual hyphenation exception. I can't remember how to do that, sorry, because it's been a while and also I'm mildly drunk, sorry.