Introduction

I have been a LaTeX fan and evangelist for years. I've used it for slides (Beamer class, of course), reports, academic papers, resumes, random documents, and my graduate thesis. I've always encouraged others to use it, and preached the "separate the content from the formatting" sermon.

Over the last couple of years, though, I've started to 'doubt my religion'. Certain aspects about LaTeX have been bothering me more and more, and I've found that other tools have progressed to the point that I prefer using them over LaTeX in many scenarios.

Recently, while working on some Beamer class slides, I suddenly realized that I was absolutely miserable. Writing, editing, and using LaTeX had become a horribly painful chore. I no longer felt like LaTeX was enhancing my productivity, but rather was inhibiting it.

I think there is a lot that is right about LaTeX, but the few things that are wrong are really, really wrong. Work on LaTeX began in the 70s, and the initial release was in 1984. What sufficed for usability and interface only 10 years ago just doesn't compare to modern designs.

Don't misunderstand - there is a lot that LaTeX does that I think it does better than anything else out there. There is a whole lot to like about LaTeX, and it has capabilities no other software can match (e.g., writing and rendering mathematics content).

That said, LaTeX has been around for 30 years, and for all it does really well, I just can't imagine LaTeX still being popular even in another 10 years. It's impossible to get an accurate number of users for LaTeX, but I would bet that the user-base is in decline.

I would love for LaTeX to once again be my typesetting / word-processing program-of-choice, and it would be awesome for LaTeX to have a revival. In order for this to happen, though, I really think LaTeX needs to be completely re-designed, perhaps even re-written, to a large degree. It needs to be modernized.It would definitely be more of a 'rebirth' than a simple 'upgrade' effort (hence, the title of this post).

Anyway, let's get into more detail.

The Dogma of LaTeX

LaTeX, in many circles, really is like a religion. This seems to be especially true in certain academic and research circles, and is definitely true within a lot of groups in the free software community. If someone presents a paper or slides that were obviously not created with LaTeX, you'll always have that group of people that all turn and look at each other with that "Can you believe this guy? He didn't even use LaTeX," face.

Not using LaTeX, in many communities, is a sign of being a 'rookie', or 'not knowing the tools of the trade'. This sort of dogmatic pressure does the community far more harm than good, because it blinds everyone to the advantages of other tools and what about LaTeX could be improved.

This post is likely to attract a lot of responses from people who will accuse me of just not knowing LaTeX well-enough, or of not really understanding what makes it great. Before the pitchforks start marching, I want to take a minute and explain my background.

My Use of LaTeX

I've never used a LaTeX 'editor' like Lyx or TeXShop. I've always written LaTeX using purely ViM and a typical CLI-based build chain - I wrote my entire graduate thesis this way. I use the Vim-LaTeX plugin set, and have a number of LaTeX 'snippets' and such I've developed to make writing LaTeX a bit easier.

I've never dug into the LaTeX source code, and I'm certainly not one of the very few that has actually found a bug in the code.. I have written some templates and style sheets, but those are my only real contributions to the LaTeX community so far.

While in grad school, I created a modern LaTeX ETD template (ETD is the document standard required for modern theses and dissertations). It hasn't been officially picked up by any institutions that I'm aware of, but I do get occasional e-mails from grad students who have used it for their theses and dissertations. Now that Github has become the de-facto standard for sharing FOSS code, you can now find it there.

I would never claim to be a LaTeX expert, but I have used it pretty heavily and have peered into the sausage factory when necessary.

LaTeX's Advantages

Especially since I used to be on the opposite side of the fence, I think a great place to start is by going through all of the reasons I used to tell people that they should use LaTeX.

Free & Open Source

LaTeX is completely FOSS. TeX was released into the public domain by its creater, Knuth. The LaTeX distribution is also free software under the 'LaTeX Project Public License'.

I'm a huge fan of FOSS, and enjoy contributing to it and being part of the community. That said, I'm not a FOSS zealot, and I have no qualms about using proprietary software. Given the choice between two tools otherwise equal, however, I will take the FOSS option any day.

The fact that LaTeX is FOSS carries a huge number of advantages. It can be built and used on probably any platform you are going to be writing something on. There is a large community to support the software and provide help, and there is a huge repository of add-on modules and extensions, provided and supported for free, by the community. This paragraph is really sort of a "list of what's good about FOSS", but that doesn't mean it is any less valuable in the context of LaTeX.

And, frankly, there really aren't any other good options for typesetting or complex word-processing in the FOSS world. There are a lot of amazing editors, and some very decent word-processors that suffice for a lot of needs, but there certainly isn't a strong competitor to Microsoft Office or the iWork applications, in my opinion. LibreOffice is probably the first thing that comes to mind in terms of FOSS competitors to MS Office, but I've had very little luck making LibreOffice produce decent-looking documents and just looking at the LibreOffice UI makes my eyes bleed.

If you want to produce very professional documents, and you need something that runs natively on Linux (or you just require FOSS), LaTeX really is your best option.

Plaintext ASCII

All LaTeX source is plaintext ASCII - it doesn't matter if you write raw LaTeX using just an editor, or use a LaTeX environment like Lyx, it is all stored as plaintext. This makes the files inherently more portable.

Editing

It also means you can choose your editor. I happen to be a ViM fan. If you like EMACS, you can use that instead. You could even use something like gedit, if you wanted. Because everything is plaintext, you can really define your own writing environment.

Version Control

The fact that LaTeX source is plaintext also makes it possible to cleanly version-control LaTeX documents. You could certainly version-control the binary files produced by Office or iWork or whatever, but you wouldn't be able to make sense of the diffs or look through the commit tree in a meaningful way. Especially for writing long-form work or developing and storing content you commonly re-use, plaintext + version-control is a winning combination.

Other Tools

Since it is all plaintext, you can use any number of other tools on the files. Want to run your LaTeX document through some command-line scripts? Go for it. Want to grep through multiple LaTeX documents for certain strings? That's very easy. In Word, you would have to open every document and search for the strings individually.

*nix programs favor plaintext because they make it possible to leverage the very powerful suite of tools and programs common on these platforms, and the ability to use these programs with LaTeX is a huge win.

Scalable

It's much easier to work on very large projects with LaTeX, due in some part to the fact that it is plaintext that you then 'compile'. I'm sure most people have had the experience where they try to load a large Word document, and Word crashes. Or you try to scroll too quickly in a large document, and Word or iWork can't keep up and takes a bit to render the page.

In truth, this comes down to your editor, and there are plenty of editors you may use with LaTeX that would have this problem, too. But, the fact that LaTeX source is plaintext and the rendering happens separate from the editing really negates this problem.

For large projects, you can also split the source into many files, and combine them to form one document. You can do this with some other tools, as well, but it is made much easier by LaTeX's plaintext format.

Quality of Formatting

When it comes down to the quality of the formatting and typesetting, LaTeX really is king. I won't go into detail here, because there are a ton of typesetting geeks who have done much more thorough studies and explained the differences in much more detail than I can. Here is one good example, and there are many others.

Mathematics

LaTeX has fantastic support for many types of alphabets. Perhaps one of the things it is best known for is it's capability to typeset mathematics really, really well. It does this so well that even the American Mathematical Society recommends LaTeX. This capability is also what has made LaTeX a standard tool in many other areas of academic research. When you are explaining a problem that it took you six months to solve, you don't want to have to worry about Word mis-rendering your equations.

Citations and References

LaTeX's support for citations and references is pretty amazing. There are a load of tools commonly used to manage sources within LaTeX projects, but, here, I'm talking solely about the capabilities of the LaTeX distribution itself.

With a couple of common LaTeX extensions, it is also very easy to make all references and citations in your document clickable hyperlinks; so clicking a citation will actually take you to that reference in the bibliography, and so on.

Internal References

Also known as cross-references, LaTeX makes it very simple and straight-forward to create cross-references in your document. After you create a table or a figure, for example, you can easily cross-reference it in the text. With the extensions I mentioned above, that reference can even be a hyperlink.

Citations

The standard format for citations used with LaTeX is BibTeX, and it is pretty awesome. There is a reason that the ACM provides a BibTeX entry for each paper you can find in their portal - it really is the standard for citations.

The closest competitor to BibTeX is EndNote, which can be used with Microsoft Office products. Unfortunately, EndNote is non-free (both in speech and beer), and lacks many of the other advantages I list above (e.g., storing things as plaintext).

Microsoft has also been improving the native support in Word
for bibliographies, but it still isn't on-par with LaTeX + BibTeX.

Where LaTeX Falls Short

So, with all of that awesome stuff to love about LaTeX, why am I down on it? Let's get into the bad stuff...

Separates Content from Formatting

So, at this point, it seems like I started out the post by saying LaTeX is broken and is dying, and then spent the rest of the post explaining why LaTeX is the best thing ever. Here is where that ends, for the most part.

The Goal

One of the major selling points of LaTeX has always been that it allows you to separate the content from the formatting. This is most easily explained with an example:

MS Word is a 'What You See Is What You Get' tool. This is commonly shortened to 'WYSIWYG', and pronounced 'wissy-wig' or 'wussy-wig'. This means that as you are writing the document, you are not only writing the actual content of the document, but also handling all of the formatting and making sure it looks how you want it to look. You change the font sizes, make sure your heading is indented the way it needs to be, etc., When you are done and you print the document, it will end up on paper exactly how you see it on your screen - thus, What You See (on your screen) is What You Get (when you print / typeset).

In contrast, LaTeX is a 'What You Get Is What You Want' tool, or 'WYGIWYW'. I've never actually heard someone try to pronounce that one. The idea is that you focus on writing the content, and just tell LaTeX what something is, rather than how it should look. You tell LaTeX that this text is a heading, and that this text is a caption, and that this text is a normal paragraph, and then let LaTeX typeset it all in a professional manner. LaTeX comes with a bunch of standard formats for books, reports, resumes, and so on, that tell it how to typeset certain aspects of documents depending on the document type.

In Practice

WYGIWYW is well and good, and would truly be awesome, if it was done well. My problem with LaTeX, as it stands now, is that what I get isn't what I want.

Sure, LaTeX handles most of the simple things well. If your document is just some titles, headings, text, and some references, LaTeX will make a very professional looking document, likely on the first build.

If you have figures and tables, for example, though, there's a strong possibility you are going to end up fighting the LaTeX compiler.

If you have ever used images with LaTeX, I can almost guarantee that you have stuck an image into your document, tweaked the size / resize specification, and then rebuilt, over and over, trying to make it fit into the space you want, until it looks reasonable.

Tables aren't much better. LaTeX doesn't respect page boundaries when it comes to table objects, at all. Put too many objects in your table and it will just spill over the page boundary and won't show up in your document or slide. If you ever need to create a table that is longer than one page, I recommend you go out a buy a good bottle of Scotch before starting down that road. And trying to get your text aligned in a table with the whitespace borders you want (per-cell) always requires a bunch of Google searches.

Unfortunately, fixing the problem invariably involves some arcane TeX voodoo. If simply using the common / known LaTeX commands to create your document worked, you wouldn't have a formatting problem to begin with, so the solution always ends up being a complicated work-around or re-defining a LaTeX function or specifying a certain amount of spacing to be added to an object class. If you aren't a TeX expert, it is highly unlikely that you will know how to do this on your own.

Dealing with these issues is made even more difficult by the fact that you can't just resize the image to fit on the screen or resize the column to be the size you want with a simple drag of the mouse. If you are going to be forced to manually handle formatting, anyway, it's nice to have a tool that is intuitive to use for that purpose.

I've highlighted tables and figures here because they are really common document elements that I think most people have dealt with, but this general theme of issues extends to other elements, as well.

What it comes down to, though, is that when I write LaTeX, the content isn't really separated from the formatting. Sure, I'm not worried about the formatting while I'm making my first pass at writing the content, but that's only because I can't actually see what the formatting looks like. Once I build it for the first time and see that my image is four times the size I intended it to be and it has clobbered an entire page, I have to start trying to force the LaTeX compiler to give me what I actually want.

Usability

The title of this description is fairly self-explanatory, but I have major problems with LaTeX's usability. I'm no stranger to steep learning curves. I'm a ViM addict, and have been using some flavor of Linux for quite some time; as much as I love Linux, it isn't always the most user-friendly thing in the world.

I have a pretty high tolerance when it comes to usability, but there are aspects of LaTeX that really drive me nuts.

Confusing Syntax

So, a steep learning curve is one thing. But inconsistent and/or confusing syntax is another entirely. LaTeX just has so many different ways to do almost the same thing, but each one slightly different, and none of it is intuitive. Here is a good example:

Let's say you want to center something. There are a few common ways of doing this:

  • Use the \centering tag in your section.
  • Wrap the content in a \begin{center} and \end{center} block.
  • Wrap the content in a \begin{centering} and \end{centering} block.

What is the difference between these? The quick answer is that they affect whitespace. It isn't at all clear or intuitive that this is the case, though, or even if you knew that how each one actually affects the whitespace differently.

This is what I mean by 'confusing syntax' - it's almost like the language has become splintered, and a dozen people have all added different commands to do the same thing in slightly different ways because they didn't like the options already available.

The fact that you have to go through these and choose one also means, once again, that the formatting is not separated from the content. You have to understand how each of these commands affects the formatting, and choose the one that works best for you. If you are going to do this, anyway, why not do it in a way that is more intuitive?

Error Messages and Warnings

The LaTeX compiler is unfortunately not very helpful when something goes wrong. If it encounters an error, it will print something that I generally find to be unhelpful, and dumps you to a prompt.

Sometimes the error messages are relatively straight-forward. It's fairly obvious, for example, if you have typo'd a tag, and LaTeX will tell you on what line it saw something it didn't recognize.

If you are trying to compile something somewhat complex, though, such as a table or figure arrangement, things can get extremely confusing. It's almost impossible to understand the errors getting dumped out without ending up on the Stack Exchange for TeX. One of the most famous TeX warnings, badness 10000, is even somewhat of a meme among TeX nerds.

Density of Markup

LaTeX markup can be dense - especially compared to other markup languages. Here is a simple example.

This is what making a nested bulleted list looks like in Markdown:

* List Item 1
* List Item 2
    * Nested List Item 1
    * Nested List Item 2
* List Item 3

Here is the same thing in LaTeX:

\begin{itemize}
    \item List Item 1
    \item List Item 2
    \begin{itemize}
        \item Nested List Item 1
        \item Nested List Item 2
    \end{itemize}
    \item List Item 3
\end{itemize}

The difference is acute. LaTeX requires a lot more markup to achieve the same thing. Aside from taking longer to type and manage, it dramatically impacts readability. Even with intelligent syntax highlighting, the density of the markup greatly reduces readability and affects usability.

Usability has Come a Long Way

Really, what it boils down to is what used to pass for 'usable' just doesn't cut it anymore. A natural part of the progression of technology is rising standards. Fifteen years ago, I think the argument that LaTeX's usability wasn't great would have been much weaker.

Now, though, I don't think anyone could look at LaTeX and say, truthfully, that it doesn't have serious usability issues. The language, fundamentally, has aged, and it feels clunky writing it.

Modern Features

The last section focused on aspects of LaTeX that haven't aged well. This section talks about technologies developed by other software suites for which LaTeX lacks comparable functionality.

Reviewing & Commenting

Microsoft Office is perhaps most famous for this. The "Track Edits" in the "Review" mode of MS Office documents is very popular. This is for good reason, because it is incredibly useful.

There are methods of leaving comments in LaTeX code; notably, the comment section you use with \begin{..} and \end{..}. This allows you to achieve comments in the typeset document, and, of course, the comments look beautiful.

But this lacks the more advanced features that are inherent to the reviewing capabilities of other software suites. It doesn't track comment authors very well, and thus makes things more confusing if many people are reviewing a document. Other suites allow you to pair a comment with actual changesets, which you can then apply or reject, directly, through the comment. LaTeX can't do that.

If I was asked to write a report with four other people, and was given the option of doing it with LaTeX or MS Word, I would choose Word. LaTeX's reviewing capabilities are just far clunkier.

I will acknowledge that there are now some LaTeX web applications which replicate the excellent reviewing capabilities of MS Office (many of these web applications are discussed later), but it's not the same as being able to do that off-line, which right now just isn't possible with LaTeX.

'Cloud' Features

Because the LaTeX License is so liberal, there are a lot of online tools now that provide LaTeX capabilities. It's worth mentioning some of this, so let's run through it, here.

Simultaneous Editing

This is a big feature, now. The introduction of Google Docs has changed the game in terms of document editing. Apple made iWork free in response to Google, and Microsoft is rushing to add 'cloud' functionality as fast as it can. The newer versions of MS Office allow for simultaneous editing. None have done it as well as Google, though.

LaTeX will always be at a disadvantage because this isn't a native feature of the tool. I don't think it would make sense for it to be a native feature, but that doesn't change the fact that fully integrated features can be nice.

Thankfully, there are a number of websites that provide simultaneous editing of LaTeX documents, now. They are covered in the next section.

LaTeX Online

Now that I've said that, now would be a good time to acknowledge the many online LaTeX applications that have been introduced. Here's a short list:

LaTeX Web Editors and Compilers

LaTeX Equation Editors

The websites in the second list are really only for generating LaTeX equations, but the first list are full-featured LaTeX web applications. They allow editing, compiling, and to various degrees version control, simultaneous editing, and reviewing & commenting. Some claim to be used by some fairly prominent universities. Some of these tools look pretty rough, but others look really well designed. I've never used any of them, so I can't comment on what they are actually like to use, though.

So, What to Do?

So, to rehash, there really is a lot that I love about LaTeX.

Pros:

  • Free & Open Source
  • Everything is ASCII
    • Choice of editors
    • Version control is easy
    • Can easily use other common tools that operate on text
    • Scales very well
  • Excellent typesetting
    • Rendering of mathematics is unparalleled
  • Citations are very easy
    • BibTeX is amazing
  • Cross-references are very straight-forward and work well

And my primary issues with it are:

Cons:

  • Fails to truly separate content from the formatting
  • Poor usability
    • Inconsistent and confusing syntax
    • Unhelpful error messages and warnings
    • Density of the markup is insane
  • Lacks decent 'reviewing' functionality

The thing is, the primary competitors to LaTeX will likely never fulfill all of the things in the 'pros' list. MS Office, Apple's iWork, Google Docs, etc., may one day be able to replicate LaTeX's excellent typesetting, may improve their citations systems, and may even incorporate BibTeX - but can you imagine any of these ever becoming FOSS and storing things as pure ASCII? That's a long shot.

On the flip-side, I think the FOSS world needs a tool like LaTeX, but it needs a modern version of it. I think doing it correctly would require a complete re-design of the language and compiler. Hopefully, the typesetting functionality itself could be re-used, but I don't know enough about the LaTeX internals to really comment knowledgeably there.

I realize this is a pretty bold statement. The core of LaTeX has essentially been unchanged for longer than most modern technologies have existed. But, honestly, I think it's the only way to keep LaTeX relevant in the future.