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.
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.
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.
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.
Oh I don’t blame it at all, I totally realize I threw a weird edge case at it! If it sounded like I was slagging TeX I didn’t mean it that way at all.
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.
In my research group we could tell instantly and it would usually act as a mark against the paper (ie read this one later).
If you’re reading a lot of papers it becomes apparent.
I have completely abandoned latex for typst at this point.
Thank you for sharing, typst looks awesome.
I’m still waiting for Quarto and the R ecosystem to better support Typst.
I’m not familiar, what’s Quarto?
https://quarto.org is an open-source scientific and technical publishing system. You write markdown text and it converts it to HTML website, PDF article/book, word document and many other formats.
Thats why you should learn Ancient Egyptian
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.
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.
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.
Just let me use the university wide template everyone uses instead of having a dedicated template for your department that looks like shit, uses a shitty ass font, and integrates packages I despise. god fucking dammit
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
If you don’t want an image to float, don’t put it in a float environment.
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
If you had seen some of the Word documents I have, you would not joke about that. People can really f-up text bodies.
Example: one guy wanted to keep two paragraphs together. He did not know about the necessary formatting option, but he knew that chapter titles did what he wanted. So he made the first paragraph a title and just reset font, size, etc to resemble a normal text. F-ed up quite some things…
That’s just an effect of shitty software that does too much (and yes I’m advocating for a simpler Word or something. Markdown is fine for 95% of use cases.)
Guess what? I have moved my large text layouts over to HTML. Creating printed TOCs in a PDF takes some effort, but once I got that under control, it worked. Takes a makefile, though, and a bit of discipline in the HTML file, but the result is surprisingly good.
Anything you put that amount of effort into should be good, as long as you actually care about it.
I’ve come to that conclusion, too. If only printing support were better, I wouldn’t write anything but HTML.
Okay now what would happen if you made him use LaTeX?
Lmao the hits keep coming
I’ve used LyX with good results, it’s a GUI that abstracts away many of the complexities of latex.
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?
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.
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.
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.
I’d rather use TeXmacs or LyX to avoid typing in obscure commands and whatnot
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”.
Ok, go on then, tell the class what underfull hbox is. And no googling!
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.
And you’re expecting everyone to have this amount of experience?
Yes? Experience and skill are good things and should be encouraged!
But of course, how else could you describe yourself as having experience with TeX? /s
I think our TeX savvy lemming here confuses a knowledge level in the expert/consultant sphere with “having experience”.
Having worked with LaTeX on and off for 15 years, and on occasions developing TeX macros (ie copy pasting stuff from stackoverflow and shotgun debugging it until it sorta works) and creating various graphics with PGF/TikZ, I would describe myself as having extended experience with the TeX environment. But I still can’t tell you exactly what causes \hbox underfull without looking it up… Probably because it’s never caused a failure to output my documents.
“Using LaTeX” and and “programing with LaTeX” are very different things. For most people, LaTeX is a means to an end, for you LaTeX is your whole job. You’re the exception, and exception can not be an example.
bullish on typst
I recently wrote my thesis in typst, best choice i could make
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.
Have you heard of our lord and savior Typst?
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.
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.
That’s just to use the online editor. It’s open source, and there’s a CLI you can run locally.
I use overleaf.
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.
How is Typst “superior” to Latex?
Since for me it has all the needed features, for me — it’s by far superior (even compared to LuaLaTeX which is the last thing I used). But some people, mainly from academia, are still can’t switch due to some features missing. A few people were able to create thesis in Typst (including myself). In the long run it will be 100% superior. In the mean time, there are a few hacks to enable some features that are otherwise not implemented yet.
Whether or not typst is “superior” is largely debatable, but here are some reasons why I personally prefer Typst to LaTeX:
- leaner syntax
- less boilerplate
- (arguably) more intuitive syntax for math and formatting
- real-time preview thanks to incremental compilation
- automatic package management
- Ability to perform calculations/data processing inline inside your document (I know you can do this in LaTeX as well, but typst makes it easier)
However, as Andrew said, it is very much still in beta, so I don’t think it can be a complete replacement for LaTeX. Basically, think of it as something in between LaTeX and Markdown. Less features, but easier to write.
Thank you! That was very helpful.
Reminds me of c++ linker errors
Surely, you really mean C++ compiler errors for anything involving temples, yes? 5000 pages of errors because you misplaced a sign somewhere.
The secret is just ignore 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!