I'm a PhD student, so I use LaTeX on a daily basis, and it makes me very sad that there's no viable alternative. LaTeX is a horrid mess of language design, mostly due to not being a language, but rather a set of macros on top of TeX, with all the problems you can imagine, esp. the error messages that makes a C++ template error read like Shakespeare in comparison.
The core pain of LaTeX may be summarized in only two words: poor composability. Anything (package) can break anything else. The environments offered by many package cannot be composed.
To top it off, almost no-one has an understanding of the underlying semantics of LaTeX. Few people even know how LaTeX macros work (and I'll include myself in that). LaTeX lives off cut and paste more than PHP and Javascript ever did. This is made more tragic by the fact that the people using LaTeX (in many cases academics, not script kiddies) should know better.
I really think there is a market in providing a clean replacement to LaTeX by the way. Seen the prevalence of LaTeX in large institutions, it wouldn't be hard to get them to pay for a better solution if you could get the users on your side.
On the flip side, as a researcher I am so glad that LaTeX exists.
Here is the thing. I treat LaTeX (mostly) like markdown. I use the environments to write my text, include my maths, add my figures, and compile with the target journal's sty file. Done. For my thesis, I applied my university's thesis style guide.
Now, there are all sort of clever packages that do various things - however, rarely is that my job to source and apply. The publisher of your document should be doing that.
I agree with the underlying problem - the package design can cause problems, but you can usually work around them. It is after all just a collection of contributions mostly from academics hacking to add some feature they need.
As to 'people using LaTeX should know better', I would argue that they do know better - but contributing back to one of many tools they use that is already doing what they need is probably low on their priority list. Remember, their responsibility isn't to work on typesetting projects, but to be able to typeset their research for publications. Most will do what it takes to get that done - which is probably where all those nightmarish packages come from.
I really disagree with you here. Sure, the codebase is a mess, that's not a surprise. It's over 30 years old. While some may see it as a hack on top of TeX, I see it as a development. The ways to make packages is, in my opinion, what makes LaTeX so great; all my needs so far could be found within a google search, which led me to tex.sx and a nice answer involving a package that does exactly what I wanted.
LaTeX is not only very extensible, but also, in my experience, very stable. Even typesetting hundreds of pages filled with figures (both rasterized images and vector graphics made with TikZ, which is wonderful by the way), equations, tables, references and stuff, just works.
I do agree on the error messages though. However, so far a search on tex.sx have solved everything. Sure, spending 30 minutes on a bug only to discover a misplaced closing bracket sucks, but to me, that's a tradeoff I can live with.
If anything should ever replace (La)TeX, my bet would be something like Markdown. However, I think it'll take a while... LaTeX has a HUGE community and a large array of packages written for all sorts of features.
If you haven't dealt with catastrophic package conflicts, I have to wonder how involved the projects you're writing are.... and I'm somewhat surprised by the claim, "...equations... just work." They "work," but god I'd love to be able to write
\left(\int some stuff \\
some stuff on a new line\right)
and have the parentheses, like, resize the way they would without the line-break.
I don't think that Markdown is a viable replacement for LaTeX. The benefits of LaTeX over TeX are convenient font management, cross references, bibliographic databases, etc (although, if you can do without "convenient font management", TeX with eplain will get you most of what you want LaTeX for). The benefits of TeX are page layout and typography. Neither of these really fit Markdown. TeX on its own isn't much heavier than Markdown.
You can use LaTeX in a Markdown document and convert to PDF with a tool like Pandoc. It might be a better option when you don't care much about custom formatting.
Definitely; pandoc is great and most people are better off using it than LaTeX directly. The comments above mine meant "replace" as in "displace," though and some of the important functionality of LaTeX, stuff that matters a lot when you're writing a mathematically technical book (cross-references, indexing, etc) is unlikely to be implemented in markdown. Especially since, in this context, pandoc's approach of converting the document to LaTeX doesn't help: we're still stuck with LaTeX's limitations!
It would be interesting if some of these lightweight alternatives --- pandoc, org-mode, etc --- would target TeX and handle the LaTeX functionality themselves. It would obviously be more work, but it might lead to something self-contained and distinct.
It gets you about 90% there according to my 150 page so far PhD thesis. And a whole world of pain that I no longer have to worry about, so I can concentrate on the incredible pain of writing the last 50 pages.
I've had great success with org-mode compiling down to LaTeX for Crypto 101 (https://www.crypto101.io).
I think the original author's points have merit: for example, the error messages are horrid, and in my case it's certainly not helped by adding another layer of indirection. But, I also fully agree with you: it's still better than everything else!
> the people using LaTeX (in many cases academics, not script kiddies) should know better.
Dunno about that, I've worked with both commercial research code (which has developed a second life as a mission critical commercial project) and academic research code. It's almost all absolutely dreadful for generally good reasons.
I'm writing up my PhD at the moment. I was going to finish it in markdown and then move it over to msword with pandoc. A couple of days of messing around with xrefs and such like and I'm very happy to see that it's in LaTeX now, and that LaTex much to my surprise is still the best environment in which to prepare a thesis.
I generally agree with what you say. Four things though:
- I have found that learning how to write simple macros can simplify writing LaTeX significantly. If you dislike how you have to write the same five invocations in every figure, just make that a macro. \newcommand is easy enough to learn. Treat your LaTeX like you treat any other programming task. Build abstractions, refactor.
- I recently switched from pdflatex to lualatex. Now I can write "macros" in Lua. This finally enables me to write complex stuff, like a LaTeX environment that converts markdown to LaTeX, or some fancy table editing stuff. I can now bring to bear my regular programming skills on LaTeX code!
- There are a few data formats that convert cleanly to LaTeX. I actually write my documents in org-mode, which is then converted to LaTeX. While this sounds like a recipe for disaster, it actually works great because of two properties: One, you can always write plain LaTeX inline in your org-mode stuff, which will be copied verbatim into the resulting document. Two, the resulting LaTeX code is clean enough to just switch over to using that in case something catastrophic happens to org-mode.
- There actually is one very viable alternative to LaTeX: HTML. HTML5 and CSS3 in particular introduced very comprehensive support for paged media and there are a few excellent HTML-PDF exporters available out there. Just imagine how much cooler it is to write plain HTML, and take care of all the formatting in CSS. This also enables the use of preprocessors like Markdown, and Javascript for programmatic content (like MathJax for equations). This really works, and it works today. The effort to write beautiful documents remains high though, on a similar level to writing beautiful LaTeX documents.
It's mindblowing that there's no modern LaTeX replacement. I've seen talks about it at https://hackpad.com/New-scientific-markup-language-utAjFcYuv..., but nothing came out of it.
Something with a saner syntax (think markdown), a modern interface for nontrivial tasks (maybe pythonic), better extensibility, cleaner codebase, better error msgs.... There would be millions of users instantly, but it's probably a gigantic task. Someone do it, please
I have long maintained that the single best use of a million dollars to advance math and science would be to hire a small team of developers to make a LaTeX that doesn't suck. The amount of grad student, postdoc, and professor time wasted on dealing with it is staggering.
Can anyone give me an order-of-magnitude estimate for how much it would cost to make an "enterprise-quality" version of LaTeX? Something with the same powers, but say, the ability to use columns without reading web forums, with packages that don't conflict, and with human-readable errors.
(La)TeX gets the same treatment as Vim is getting right now with Neovim [1]. A full refractoring to make code from the 80s readable by a larger group, make it faster (some kind of JIT compiler would be nice) and just cleaner in every way.
For the reader who is not familiar with Tex/Latex: Tex is a typesetting system designed by Knuth with the purpose of enabling him (Knuth) to typeset a math paper in a way that a good classical typesetter would have done (with the skils aquired in years of training).
Latex is a set of Tex macros that turns Tex into something more similar to a Markup language where one does mark up headings for headings etc.
While Tex is exceptional in its quality, robustness and beauty (it is probably one of the oldes software pieces still in wide use), Latex has a lot more dark corners as user norswap points out.
Latex enables average users to use Tex without having to think about how to lay out a document. Latex makes a lot of good choices in Layout (and a few bad ones too).
Nevertheless -- and that continues to amaze me -- Latex and its documentclasses continue to be the only viable choice for scientific typesetting by PhD students who just don't have the time to learn plain Tex.
There are a few Tex-based alternatives (Context for example) that could be considered equal, but Latex seems to offer a reasonable experience.
In the WYSIWYG realm, there is hardly viable competition. Word or LibreOffice/OpenOffice, Docbook/XSLT/XML:FO, etc. Most of them produce inferior results or provide an inferior user experience.
I have heard countless stories of people who opted to not use Latex for their thesis/drafts, and the pain is unspeakable. A friend realized - when turning in his thesis - that page numbering was off on odd pages in the copy he meant to turn in last minute (was there on the draft printed out 3 hours before). A lecturer had his PhD dissertation published by its subtitle because by accident it vanished during the title. Countless How-to-write-your-thesis guides of the early 2000s adviced to not write more than 20 pages within the same document of a popular word processor since it was known to easily crash then. And have I mentioned how much more painful handling citations is in most word processors? Bibtex et. al is not comfortable, but I would prefer it to most other solutions on the market. The manual for a product at a company where I worked at had odd page numbers in serif fonts and even in sans serif fonts. It was produced not with a consumer word processor but with a "professional" tool. An XSL:FO based report generator that I once had to use produced horrible typesetting (and made the machine swap while formatting that textual output, 4GB of RAM were not enough). And changing things was nightmarish.
I wonder what the future of Tex and Latex is, but I do not see serious competition on the horizon, especially not in areas, where people have to get things done.
My best bet is, that the haskell folks will be able to provide an alternative in a few years, the diagrams library has already taken on Metafont and pandoc has been proven to be great for parsing text markup. The meta language of the diagrams library has shown that Haskell is actually suitable and expressive for drawing and arranging items. Until then, Tex will rule the world of outstanding scientific typesetting for the average scientist.
> In the WYSIWYG realm, there is hardly viable competition
I used LyX as a student http://www.lyx.org/. It was a great way to quickly generate a LaTeX document and then fiddle around with it at the end. That was the 1.5 version, they're now on 2.1 which looks much more polished.
Except that LyX is not a WYSIWYG environment, remember? LyX is a GUI environment that hides TeX/LaTeX macros and commands but it's not WYSIWYG. Remember that WYSIWYG means that what you see (on the screen) is what you get (on the printed page) which LyX most certainly does not do. Not bashing LyX, mind you, I use it myself and it's great.
The term Lyx uses for what it does is WYSIWM (What You See Is What You Mean) to describe the fact the GUI lets users manipulate the structure of the document.
It should be noted that LyX isn't quite WYSIWYG, which is actually a good thing. It shows you a rough representation of what things mean, rather than what they will look like, allowing you to concentrate on the content.
I've used TeX with eplain and for many purposes it's great, but publishers and coauthors essentially mandate LaTeX for real papers.
Pollen is intriguing[1,2], but way too early to say anything about. If TeX or LaTeX are going to be displaced any time soon, it's going to be because of textbooks published on the web (caveat: unfounded speculation on my part, but read on). I'm sure it's possible to embed a dynamic simulation into a pdf, for example, but nothing like what can be put online. And LaTeX isn't designed to produce websites.
The power of TeX is that it is a powerful and beautiful type setter. Something like a website was not on the horizon.
For Online-Documentation the best option for me is Sphinx at the moment. It is extendible and still a clean markup, slightly more powerful than markdown but does not get into the way.
It is no coincidence that it uses Latex for generating its PDFs. Sadly its not possible then to polish the printable output in the same way as you would be able in tex or latex.
Good summary of the state of play, but I think you overlook one thing - there are now viable online WYSIWIG (at least partially) editors that hopefully can make it easier fr the novice to be nudged towards best practice (besides all the other benefits of SaaS) See https://www.writelatex.com
I'd love to see a Haskell-based alternative to LaTeX. Like the Xmonad window manager, it could become a niche product with its own small but lively community.
It would have great potential because it would provide a very robust building ground for a program.
One of Latex's Building blocks, Metafont, a domain specific language for curve definition (as in fonts) is already implemented in Haskell, and it does not look anything like what people expect Haskell to look like, its part of the diagrams library [1]
What would be next is probably to port the layout algorithm for paragraphs (the rubber and boxes stuff). This could then be used within a framework for page layout.
As a big conceptional change it would probably mean that one separates the Macro stuff from the markup. As writing the plain text within a haskell sourcefile is probably not what one wants (Strings, quoting, etc.).
[1] The diagrams library by itself has resemblances to the immensly powerful Tikz package.
For a while I was working on a Haskell-based macro system that compiles TeX-like source to HTML and LaTeX (and whatever else you like) (https://github.com/jgm/HeX). You'd write your macro definitions in a Haskell program, then run this program on the textual source to produce output. What's nice about this is that you can use Haskell's module system to organize your macros, and Haskell's type checker to check for errors. The macros are just Haskell functions, and the types of the functions determine what kinds of arguments are consumed by the macro. I'd like to come back to this some time.
It gets better... Well, LaTeX doesn't, but you'll eventually converge on a set of packages and workarounds that fit your writing.
Macros are local to the environment where they're created, so you can get around a lot of cut and paste by using \newcommand judiciously at the top of your \begin{proof} or \begin{itemize} (etc.)
I think, in the eyes of many of its users, Scientific Workplace is the paid "replacement" for LaTeX. I know a lot of people like Lyx too.
I would be delighted to be able to use markdown for simple documents and extrude to TeX/LaTeX to pretty-print hardcopy. LaTeX is a lot nicer than battling Word, but (especially when accents are involved) a lot less nice than Markdown for most simple documents; pandoc seems to be the best answer to this problem at the moment.
It's the worst best system I've ever come across. I find that over the years, I've accumulated enough tricks and a reasonable makefile that I can do just about everything I need. Very seldom now do i need to write novel code.
Context macro package fixes most of Latex's pains: http://www.pragma-ade.com/
Unfortunately, I don't think any journal will accept it as their input format.
The TL team essentially do the impossible-- the software is large and very complex and the people skills required are no less of a challenge-- and they do it every year. Karl and the others are wizards.
> "Fake spaces" have been introduced. The original TeX does not insert space characters between words. Instead, words and punctuation characters are positioned for optimal full justification without an explicit space character inbetween.
This has been the cause of text extraction being a nightmare for TeX PDFs, glad it's finally fixed, even if it took 16 years!
Thousands of bibliography styles, document styles, fonts in multiple formats, as well as basically every macro package ever written. And it's actually several typesetting programs: TeX, LaTeX, PdfLaTeX, XeLaTeX...
The core pain of LaTeX may be summarized in only two words: poor composability. Anything (package) can break anything else. The environments offered by many package cannot be composed.
To top it off, almost no-one has an understanding of the underlying semantics of LaTeX. Few people even know how LaTeX macros work (and I'll include myself in that). LaTeX lives off cut and paste more than PHP and Javascript ever did. This is made more tragic by the fact that the people using LaTeX (in many cases academics, not script kiddies) should know better.
I really think there is a market in providing a clean replacement to LaTeX by the way. Seen the prevalence of LaTeX in large institutions, it wouldn't be hard to get them to pay for a better solution if you could get the users on your side.