I've given up on tex. I'm typesetting a book right now, and getting the epub going was a piece of cake. Then I tried using LibreOffice for the print version and it was a nightmare to control via the API and buggy as hell. So I decided now would be a good time to try tex. After 2 solid days of yak shaving, I threw in the towel. It's too fragmented, the documentation is terrible (complete - all 600 pages worth, but terrible for discovery or learning). It's basically rabbit hole after rabbit hole, with most, if not all, tutorials directed towards typesetting your homework assignments.
All of the CSS/HTML based solutions cost thousands per license, so that's out.
I'm now on to SILE, which fixes a lot of problems with tex. I can only hope that it's advanced enough to properly typeset a novel.
I ask this as a totally naive person regarding novels and publishing, but who is fairly happy with writing papers in Latex: what is difficult about typesetting a novel? I ask because I would think that novels would be on the easier end of typesetting situations, but clearly your experience is different.. I just can't imagine what you are struggling with. I've "typeset" many novels by converting them from text formats to latex for the purpose of reading on my e-reader and haven't had many difficulties other than dealing with unsupported character encodings. Of course I can imagine that the professional situation is quite difficult, but I'm surprised it's so different. Care to share details of the trouble you had?
Getting otf fonts working, getting images working and properly positioned, getting alternating left-right headers to behave themselves, especially at a chapter start. Every new thing involved going back to ctan (I had high hopes for memoir) or searching online in the hopes that someone took the time to write down how they did it. Most of the time you'd just find "how to make your math formulas look pretty" or "how to typeset your thesis"
You'd think that typesetting a novel would be a gimme, but in the current ecosystem (tex or otherwise) it's a shambles.
OTF is dead easy if you use XeTeX (specifically the xelatex command). The fancyhdr should give enough control over headers. Yeah, floating images can be annoying.
I use it mainly for technical documentation (product manuals, etc.), so I've never tried the memoir class. But what I find myself doing mostly these days is makinng my own classes, usually based on article because it seems to me to have the most 'neutral' defaults.
It's a very steep learning curve, but I've found it an extremely valuable technology to be able to use.
Asking questions on the TeX stack overflow is a pretty good way to get help also.
I agree with the last point: asking questions on tex.stackexchange is a GREAT way to get help. Sometimes you run into an "impossible" problem and some wizard will show up and fix it in minutes.
Hm. Font stuff I'm not surprised, fonts can be tricky especially in Latex, you're definitely right. Bit surprised images were difficult. I guess I haven't had to deal much with margin and header issues. fancyhdr can certainly be confusing. Did you try "lyx"? I guess for what it does help with, it might not actually make any of these particular issues easier..
Of course, it's all about using a good template. Usually I find there are tons of resources out there, but it does often involve finding someone with the same problem and asking the right question.
I'm typesetting a series of novels with LaTeX and memoir and I share your pain. I didn't have much trouble with fonts (fontspec is pretty awesome compared to the old TeX way), but things like typesetting on a grid, that was difficult.
I'm now reading on ConTeXt and it seems to be a much more adequate TeX format. For one thing, it supports grid typesetting! LaTeX's philosophy is to separate style and content, leaving the style to "someone else". It seems that ConTeXt's philosophy is to separate style and content, but still make it easy for the user to choose the style. It's also more integrated: comprehensive core, few third-party packages, meaning less compatibility issues (but less choice too). I'll definitely try it for my next project.
The main idea is to have every line of text fall on an evenly spaced grid. Here's an example where the middle paragraph is not grid aligned: https://i.stack.imgur.com/XskJu.png
Generally you also want the baseline of titles to fall on the grid. Possibly also the formulas, figures etc.
LaTeX is pretty bad at this: by default it inserts stretchable vertical space between paragraphs, and around things like bullet lists, centered text and formulas.
Stretchable space is a good thing when you have a lot of elements beside simple paragraphs: it gives TeX flexibility to produce a nice page layout. For example the optimal spacing around equations might not be a multiple of the inter-line space. And you might still want to have the last line land precisely at the bottom of the page, so there must be a stretchable space somewhere. This flexibility also helps avoiding widows and orphans[1].
On the other hand I think non-grid-aligned text looks terrible for novels, especially when the page is thin and you can see through the paper the text on the other side (it's much less noticeable if the lines on both sides are perfectly aligned). Grid typesetting is also nice when you have multiple columns of text on the same page: it looks odd if the lines of one column are not aligned with those in the next column.
I've typeset novels, technical manuals, math, poetry, articles, chess diagrams, posters, presentations, my resume, and probably a bunch of other things in LaTeX. It wasn't a big deal, though it's definitely a rabbit hole in terms of the amount of tweaking that's required if you want everything just right, if you're doing something fancy, and if what you're doing doesn't quite fit any of the many pre-written templates. The great thing, though, is that once you've tweaked one document the way you like it, now you've got a template to use for documents of the same type, which should only require minor tweaking in the future.
There's definitely a learning curve to LaTeX, but not a huge one, as it's mostly just a markup language. If you want to get in to the programming side of it, or if you want to learn one of the larger LaTeX packages really well, that would take you more time, but not even then it shouldn't scare anyone, particularly if you've learned other high level programming languages before. Diving in to TeX itself could be a different story, but I can't comment since I've never bothered to learn it myself, and haven't had to for anything that I've done with LaTeX.
Anyone who wants everything “just right” and is particular about what that means – and doesn’t have to make more than 2 documents in a particular template (or maybe even if they do) – should just start with InDesign, and save hours of trouble.
Where LaTeX shines is for cases where you don’t really care about the details of the layout, but just want someone else to handle it all in a somewhat sensible way when you hand them a basic manuscript, and not shit all over itself the way MS Word does on a regular basis.
LaTeX is great for generic college papers where you don’t have figures and don’t have time to worry about the layout. By contrast it’s a huge pain in the butt for something like magazines, coffee-table books, or posters.
(It’s also the best way to typeset mathematical formulas, of course.)
That doesn't answer the question. To me as a common reader, the typesetting of a novel requires in no particular order
- nice block text adjustment, line-breaks and hyphenation, line/paragraph,chapter spacing
- margins and padding, page numbers, and chapter headings
- font selection, supporting ligatures and kerning if you are fancy
I'm sure the devil is in the details, but how much detail can there be in basic running text? I'm fine reading novels rendered by basic html engines without css, even in monospaced font. The most important consideration for a text layout engine seems to be the font data format and corresponding font engine, which I don't know much about, because I don't really care.
I wrote a free tool a bit ago that wraps Pandoc/LaTeX/Jekyll and takes Markdown inputs and exports epub, mobi, and print-ready PDFs (5x8 & 6x9 Pdfx-1a compliant), specifically for fiction.
I found the memoir class frustrating to use when I was writing a technical manuscript (a botanical flora). It's great if you are willing to accept the defaults, but if you want to change things, the documentation is actually pretty spare. You can waste hours or even days tweaking and rebuilding your document to have it formatted the way you would like -- tasks that could be done in a lot less time in graphical page layout software like InDesign. I ended up composing my work in Word and then importing it into InDesign. That was a lot more satisfying than using latex for me, for writing that is not math heavy.
What 600-page documentation are you referring to? The TeXbook by Knuth goes only up to page 483 (with the appendixes starting on page 304).
By the way, a really excellent book for (plain) TeX is A Beginner's Book of TeX by Seroul and Levy: it's truly for the beginner, yet at the end you'll be practically an expert, or at least know how to become one.
I've seen people get frustrated with LaTeX (not TeX), but that's because it was designed to make it difficult to do typesetting: instead the LaTeX philosophy is to specify only the document structure, and leave all the typesetting to a package that you hope someone has written.
Your comment is interesting to me. I've read about TeX and LaTeX from time to time and it was my impression that everyone used LaTeX because TeX itself was difficult to use. And I never questioned this because almost every article I could find only spoke about LaTeX.
Your comment is making me reevaluate what I thought I understood.
People use LaTeX because it already does a lot of what people want to do. More, it was also one of the first standard ways of packaging extensions for TeX. (I may be wrong on that point...)
Folks are also highly scared off of TeX due to some of its aesthetic nature. Specifically, it looks rather different than most modern languages.
That said, I think most of that fear is unfounded and I regret that I let it keep me from learning this while in college.
Yes, an overwhelming majority use LaTeX rather than TeX directly. (Well, among the tiny number of people who use TeX/LaTeX at all.) The reason, though, is not that TeX is difficult to use: it's that TeX is a system for typesetting, and most people don't need typesetting.
If you're writing a paper for publication in a journal, they probably have their own typesetting style. With LaTeX you can just specify your paper as a sequence of paragraphs, "sections", a title, an author, and so on, and, by including the journal's style file (assuming it's good), your paper will come out typeset in that journal's style. This philosophy is explained at https://www.latex-project.org/about/
This is great for certain (many) kinds of documents. The problem with this, though, is that the moment you want to change the appearance and get into typesetting yourself, you're fighting a system that was actively designed to prevent you from doing this.
An analogy may be a system like, say, WordPress: if what you have is a blog, then it would work for you, and you even get to choose one of several “themes” that others have written, and so on. The set of available plugins and customizations can even be impressively versatile (for example, I noticed that time.com runs on WordPress, and apparently so do a number of other non-blog sites: https://vip.wordpress.com/clients/). But ultimately, if you're trying to figure it out by yourself and have your own ideas about what your website should look like, a system like this will always be more frustrating than the alternative (of having full control).
TeX is not difficult to use, though in the beginning you'd have to specify manually things like the typesetting of the document title (put it in a bold font at 16pt, centered on a line...). LaTeX has features to automate many such common typesettings tasks, but it has its own flaws (some stemming from the fact that it's implemented using TeX macros, which weren't designed for such heavy “programming”).
I've never needed to use it much, but when I do, it's mostly copy paste, crappy hacks, or video 'tutorials' of LaTeX. Now I'm genuinely curious what vanilla TeX looks like. Any good learning resources?
Two days? I wrote my thesis in Tex and i probably spent two weeks! But the end result was typographically great! When you're in academia, you can afford to spend that time. These days, it's all Google Docs for me.
I've had complete strangers email me with Tex questions just from encountering my thesis.
The community on Stack Exchange was very helpful for me.
It doesn't help either that all the basic references are in the form of books. Finding the relevant bits of information can take a long time. Besides documentation, another of TeX's weaknesses is its lack of debugging capabilities, which makes it really hard to figure out what goes on behind the scenes.
Wasn't there the idea of making TeX Live a rolling release? I guess the idea was there but it turned out it would be impossible w/o breaking thing from time to time.
LaTeX is still one of my favourite piece of technology of all time. It is at time so alien, yet beautiful.
I now get closer to 10+ years of programming experience, yet nothing comes close to debugging a faulty LaTeX custom command... it can quickly turn to an unreadable mess, but you have to admit that once everything is swept under a preamble.tex file, the rest of the code is very clean. Especially with auctex in emacs which displays most math symbols as their true unicode counterpart.
Funny story: one of my first gig was working in a music instruments shop where I was basically the IT guy, from sysadmin to web dev. At some point the software that created the barcode labels stopped working. Now I had to find an automatic way to make those labels, so of course I turned to LaTeX. All I needed to do was to write a batch file calling `pdflatex` with a template tex file and a pdf file for the label was promptly sent to the printer! There is probably some python package for doing the same thing, but I was so proud of seeing Computer Modern font tagged to every instruments in the shop!
If you set `conceallevel' to 2 and use syntax highlighting, you should get it in vim without any plugins needed (although I have only neovim installed).
For example, \AA -> Å, $\pm$ -> ±, and {\'e} -> é.
Does anyone else find this "feature" really annoying? I always set conceallevel to 0 but vim seems to constantly find a way to replace my code with unicode.
I once heard a professor talk about writing a book 30 or so years ago. He looked at all the available options and decided latex wasn't perfect, but was the best available. 20 years later he decided to look at everything again and was appalled that latex was still the best option he had.
Have you ever tried to color a latex table? If you color a cell, most readers will cover ~1 pixel of the upper and left table borders with the cell color, regardless of the zoom level. This is especially a problem on zoom levels where the border is only 1 or 2 pixels, but makes you feel insane when you zoom in so it's 10 or more. You know what the most common advice for fixing this is? "Get rid of your table borders. It will make your table look better."
Latex is full of little problems like this, but it's still the best.
You have much more control if you make your table in TikZ using a matrix of nodes. If you want borders, the key thing is setting "row sep=-\pgflinewidth, column sep=-\pgflinewidth" so the border doesn't get doubled up (see e.g. [1]).
Latex is far from ideal, but it's still the best because it hasn't stood still - many people are constantly contributing improvements and new packages, and it's very hard for a new replacement system to compete with that.
The takeaway is: If you are to judge LaTeX, judge its whole ecosystem.
Otherwise, this is like saying Python is not suitable as HTTP client because "urllib" has too many quirk - ignoring the fact everyone else uses the excellent "requests" libraray.
Although there are interesting developments at its code (XeLaTex, LuaTex), it is the packages which are ever evolving at a rapid pace. Have trouble with the "graphics" package? Use "graphicx" instead. Don't like the old "letter" class? Use "scrlttr2". And of course, use TikZ, it is one of the most well-designed, best-documented and comprehensive packages out there.
Compared to most programming languages, what I really like about LaTeX is their almost almost merciless take on backwards compatibility. This means that your old "article" document almost certainly works with later LaTeX versions. There will never be a breaking new version of "article" that forces you to adapt your LaTeX code, like we see with so many libraries in other languages. But this also means that you are stuck in your "old world" if you don't keep your eye open for new packages, and are willing to learn them. There are quite a lot of StackExchange questions that are essentially like this:
"Q: How do I fix my issue with package X? A: Use the newer package Y instead (or in addition)."
I think it's also the degree of flexibility. Typesetting is itself a creative process as much as a technical one. When I do technical writing with LaTeX (and I do a lot) I'm usually ok with about 99% of what it outputs, but then I have the ability to fiddle around and make that one table have the borders exactly how I like them and that picture caption to be spaced just a little differently etc; I want to indulge my sense of aesthetics just a bit.
It's the combination of (mostly works by default) and (I can make it look just right) that is appealing. It gives me just enough stuff to play with to be satisfying and even a bit fun, without having to tweak so many things that it gets frustrating.
> I once heard a professor talk about writing a book 30 or so years ago. He looked at all the available options and decided latex wasn't perfect, but was the best available. 20 years later he decided to look at everything again and was appalled that latex was still the best option he had.
Many many years ago I evaluated the available options as well to write internal documentation for the company I worked for. Looked at groff with the mom macro package. But eventually settled on Lout.
Lout worked very pleasantly (it has a nice markup language) but the output didn't look as beautiful as Latex. Unfortunately it doesn't seemed to be developed anymore.
Lout was the inspiration for LILArt (see http://runtimeterror.com/rep/lilart) which has a @-based syntax. The idea is that you define a document in a tree-like format with nodes, properties and such (similar to XML but not as verbose) and then you pass it to a LIL (a scripting language similar to Tcl) script to... do stuff with the nodes. You call lilart like "lilart -f<format> file.ladoc" where <format> simply makes lilart to load the "<format>.lil" script and call its "process-tree" function, passing in the root node.
The reason i made it was that i liked Lout's syntax but i wanted something closer to DocBook that i could convert to other formats (Lout only works with printed output). I think the closest is GNU Texinfo, but even that was too specific and it needs way more handholding for the underlying output than i'd like. Texinfo defines its node types (and its format isn't really a tree nor very generic) whereas LILArt's node types are just a convention and in practice the scripts can define any sort of node.
Having said that, LILArt is really a backburner project which i only touch wherever i need to write a document in more than one format. The default LILArt scripts can output groff macros for conversion to PS and PDF (i used that because it is already installed in many systems, including the iMac i used at the time, and it is small to download for where it isn't available) and HTML in several variations, like semantic HTML, "simple" HTML for systems like Java help and LHelp, HTML for conversion to mobi and plain text and "naked" HTML for use with QuHelp (a program that i wrote some years ago to convert naked HTML files to full web-based help sites with search). I also had a Texinfo target that could be used to make info files, PDF and PS through TeX and CHM files for a while but it was buggy and decided to rewrite it at some point.
However i only touch that rarely when i need it so i don't really recommend its use as it is right now (the processor is more or less done, but the scripts aren't very well thought out since i was doing stuff as i needed them and they need a bit of a cleanup and some nodes are needlessly verbose - the DocBook inspiration - and need some abbreviation aliases).
"Scribble is a collection of tools for creating prose documents—papers, books, library documentation, etc.—in HTML or PDF (via Latex) form. More generally, Scribble helps you write programs that are rich in textual content, whether the content is prose to be typeset or any other form of text to be generated programmatically."
You type in text and mark up using @-tags that are defined in, and can also contain, the full Racket language. It's like LaTeX with a modern language (but without the tons of available packages).
Nowadays Sphinx is quite usable for writing both long-form documentation and reference docs.
It's a really complex piece of software (much more complex than everyone thinks at first), but most of the time that isn't noticeable. The rST syntax can be somewhat confusing with advanced constructs, but for most stuff a short primer gets everyone going in the right direction. Since it's Python, deployment is a little bit annoying on non-Linux machines, but for docs you want CI anyway. To tweak PDF (i.e. latex) output it requires a fair bit of knowledge of both Sphinx and latex (and possibly rST [0]).
Like I said... it's quite usable.
[0] rST again being much more complex than everyone thinks at first. It's an enterprise markup language.
> 20 years later he decided to look at everything again and was appalled that latex was still the best option he had.
I've always wanted to build a latex based reporting system for similar reasons, all existing reporting systems suck and I wouldn't be surprised if I could build a latex based system to be the least worst option.
I wonder if there are other areas that it would be useful?
Yes .tex programming is probably the least intuitive kind of language I've ever seen. Here is a FizzBuzz in vanilla .tex for anyone who curious to see what that's like:
% fizzbuzz.tex -- Compile with pdftex, not pdflatex
\def\modulo#1#2{(#1-(#1/#2)*#2)} % a mod n = a-(a/n)*n where / is integer division
\newcount\X
\X=1
\loop
\ifnum \numexpr\modulo{\X}{15} = 0
FizzBuzz
\else
\ifnum \numexpr\modulo{\X}{3} = 0
Fizz
\else
\ifnum \numexpr\modulo{\X}{5} = 0
Buzz
\else
\the\X
\fi
\fi
\fi
\endgraf
\advance \X by 1
\unless \ifnum \X>100
\repeat
\bye
Honestly, that doesn't seem that non-intuitive to me. Certainly missing opening and closing brackets, but if closing with fi is a common idiom of old languages. The rest doesn't seem that bad. Just verbose.
I guess to me it doesn't read that much worse than "if (!(x < 100))", which is somewhat bad form, but not unreadable. (More likely would it have been "if (!aboveThreshold(x))". I know I have seen similar in some lisp code. At least, I have seen "unless" before.
Don't take my comment as my rushing out to embrace TeX. I just don't think it is nearly as bad as its reputation.
I wrote my first (well, only) book in SGML Docbook, which I processed through a LaTeX toolchain. Sebastian Rahtz answered so many of my questions back then (~15 years ago), despite them often being stupid questions (because I was entirely new to TeX/LaTeX). I just read that he passed away last year. TeX Live was originally his project, among many other document-related projects. I'm happy to see it continues without him.
Looks like it has added many of the enhancements from recent updates to luatex. LuaLaTeX has saved my hide more times than I care to mention... Because for reasons I do not understand, there are still some people from the dark ages who insist on shipping PDFs with documentation that does not belong in a PDF.
If you find TeX, LaTeX, and friends useful, check out the TeX Users Group at http://www.tug.org. If you'd consider supporting the folks who bring you TeX Live, you can read the Aims and Benefits page at https://tug.org/aims_ben.html.
Note that a membership is very reasonable-- if you choose an electronic copy of the journal then membership is $45 annually, or $15 annually if you are a student, senior, etc. The details are at https://tug.org/join.html.
It's amazing how many different and dissimilar components go into a TeX distribution like TeX Live:
- At the base, there is Donald Knuth's program `tex`, itself written in a strange language (WEB) that is essentially an ad-hoc macro-expansion system (not used by many others, and not even by Knuth today, who prefers CWEB), and compiles (via `tangle`) to a dialect/version of Pascal (“Pascal-H”) for which a compiler hasn't existed for years. [It also "compiles" (via `weave`) to the printed book TeX: The Program]
- Then there is LaTeX, an elaborate set of macros written originally by Leslie Lamport (another Turing award winner) and later by a team, to be interpreted by the TeX program, which was never designed by its original creator for such elaborate programming.
- There are entire new programs (aka TeX engines) like pdfTeX and XeTeX, created by editing the original `tex.web` in different directions.
- There are the binaries of all these programs, compiled using `web2c`, a program written solely for converting all these WEB programs written in (basically) Pascal into C code, which is neither an arbitrary Pascal-to-C converter nor even an arbitrary WEB-to-C converter.
- There is LuaTeX, a manual rewrite of TeX in C, embedding a Lua interpreter and adding many hooks and extensions.
- There are thousands of macro packages written by thousands of people of varying levels of skill and foresight, on top of TeX, LaTeX, and other macro packages themselves: essentially everything on CTAN (which was inspiration for Perl's CPAN, and ultimately many languages' package repositories like Python's PyPI etc.)
And all this without even mentioning ConTEXt, Metafont, MetaPost, BibTeX, Kpathsea, various assorted utilities, graphics drivers…
A now also the recently announced tectonic [0].
I also remember watching a talk about a clojure re-implementation but I think I never saw it released anywhere.
There is still no uniform way to insert animation in the slides/paper. Partly it's because a problems of PDF readers, but there are problems in TeX-parts too.
66 comments
[ 3.3 ms ] story [ 298 ms ] threadAll of the CSS/HTML based solutions cost thousands per license, so that's out.
I'm now on to SILE, which fixes a lot of problems with tex. I can only hope that it's advanced enough to properly typeset a novel.
You'd think that typesetting a novel would be a gimme, but in the current ecosystem (tex or otherwise) it's a shambles.
I use it mainly for technical documentation (product manuals, etc.), so I've never tried the memoir class. But what I find myself doing mostly these days is makinng my own classes, usually based on article because it seems to me to have the most 'neutral' defaults.
It's a very steep learning curve, but I've found it an extremely valuable technology to be able to use.
Asking questions on the TeX stack overflow is a pretty good way to get help also.
Of course, it's all about using a good template. Usually I find there are tons of resources out there, but it does often involve finding someone with the same problem and asking the right question.
I'm now reading on ConTeXt and it seems to be a much more adequate TeX format. For one thing, it supports grid typesetting! LaTeX's philosophy is to separate style and content, leaving the style to "someone else". It seems that ConTeXt's philosophy is to separate style and content, but still make it easy for the user to choose the style. It's also more integrated: comprehensive core, few third-party packages, meaning less compatibility issues (but less choice too). I'll definitely try it for my next project.
what does this mean? I haven't seen that term before. I assume it's nothing to do with tables..
Generally you also want the baseline of titles to fall on the grid. Possibly also the formulas, figures etc.
LaTeX is pretty bad at this: by default it inserts stretchable vertical space between paragraphs, and around things like bullet lists, centered text and formulas.
Stretchable space is a good thing when you have a lot of elements beside simple paragraphs: it gives TeX flexibility to produce a nice page layout. For example the optimal spacing around equations might not be a multiple of the inter-line space. And you might still want to have the last line land precisely at the bottom of the page, so there must be a stretchable space somewhere. This flexibility also helps avoiding widows and orphans[1].
On the other hand I think non-grid-aligned text looks terrible for novels, especially when the page is thin and you can see through the paper the text on the other side (it's much less noticeable if the lines on both sides are perfectly aligned). Grid typesetting is also nice when you have multiple columns of text on the same page: it looks odd if the lines of one column are not aligned with those in the next column.
[1] https://en.wikipedia.org/wiki/Widows_and_orphans
There's definitely a learning curve to LaTeX, but not a huge one, as it's mostly just a markup language. If you want to get in to the programming side of it, or if you want to learn one of the larger LaTeX packages really well, that would take you more time, but not even then it shouldn't scare anyone, particularly if you've learned other high level programming languages before. Diving in to TeX itself could be a different story, but I can't comment since I've never bothered to learn it myself, and haven't had to for anything that I've done with LaTeX.
Where LaTeX shines is for cases where you don’t really care about the details of the layout, but just want someone else to handle it all in a somewhat sensible way when you hand them a basic manuscript, and not shit all over itself the way MS Word does on a regular basis.
LaTeX is great for generic college papers where you don’t have figures and don’t have time to worry about the layout. By contrast it’s a huge pain in the butt for something like magazines, coffee-table books, or posters.
(It’s also the best way to typeset mathematical formulas, of course.)
- nice block text adjustment, line-breaks and hyphenation, line/paragraph,chapter spacing
- margins and padding, page numbers, and chapter headings
- font selection, supporting ligatures and kerning if you are fancy
I'm sure the devil is in the details, but how much detail can there be in basic running text? I'm fine reading novels rendered by basic html engines without css, even in monospaced font. The most important consideration for a text layout engine seems to be the font data format and corresponding font engine, which I don't know much about, because I don't really care.
You can check out the LaTeX template in the repo.
http://chrisanthropic.github.io/Open-Publisher-Documentation...
By the way, a really excellent book for (plain) TeX is A Beginner's Book of TeX by Seroul and Levy: it's truly for the beginner, yet at the end you'll be practically an expert, or at least know how to become one.
I've seen people get frustrated with LaTeX (not TeX), but that's because it was designed to make it difficult to do typesetting: instead the LaTeX philosophy is to specify only the document structure, and leave all the typesetting to a package that you hope someone has written.
Your comment is making me reevaluate what I thought I understood.
Folks are also highly scared off of TeX due to some of its aesthetic nature. Specifically, it looks rather different than most modern languages.
That said, I think most of that fear is unfounded and I regret that I let it keep me from learning this while in college.
You don't say "make a heading", you say "make this text in 14pt font, bold, with this much extra vertical space.
If you're writing a paper for publication in a journal, they probably have their own typesetting style. With LaTeX you can just specify your paper as a sequence of paragraphs, "sections", a title, an author, and so on, and, by including the journal's style file (assuming it's good), your paper will come out typeset in that journal's style. This philosophy is explained at https://www.latex-project.org/about/
This is great for certain (many) kinds of documents. The problem with this, though, is that the moment you want to change the appearance and get into typesetting yourself, you're fighting a system that was actively designed to prevent you from doing this.
An analogy may be a system like, say, WordPress: if what you have is a blog, then it would work for you, and you even get to choose one of several “themes” that others have written, and so on. The set of available plugins and customizations can even be impressively versatile (for example, I noticed that time.com runs on WordPress, and apparently so do a number of other non-blog sites: https://vip.wordpress.com/clients/). But ultimately, if you're trying to figure it out by yourself and have your own ideas about what your website should look like, a system like this will always be more frustrating than the alternative (of having full control).
TeX is not difficult to use, though in the beginning you'd have to specify manually things like the typesetting of the document title (put it in a bold font at 16pt, centered on a line...). LaTeX has features to automate many such common typesettings tasks, but it has its own flaws (some stemming from the fact that it's implemented using TeX macros, which weren't designed for such heavy “programming”).
If all you have is a passing curiosity though, you may just want to look at some examples: Knuth has .tex sources of some of his papers on his website (https://cs.stanford.edu/~knuth/preprints.html); you can look at them and compare with the resulting PDF files (which you can generate with `pdftex`). For an already typeset example, look at JRM2680.tex (https://cs.stanford.edu/~knuth/papers/JRM2680.tex) and JRM2680.pdf (https://cs.stanford.edu/~knuth/papers/JRM2680.pdf).
I've had complete strangers email me with Tex questions just from encountering my thesis.
The community on Stack Exchange was very helpful for me.
I now get closer to 10+ years of programming experience, yet nothing comes close to debugging a faulty LaTeX custom command... it can quickly turn to an unreadable mess, but you have to admit that once everything is swept under a preamble.tex file, the rest of the code is very clean. Especially with auctex in emacs which displays most math symbols as their true unicode counterpart.
Funny story: one of my first gig was working in a music instruments shop where I was basically the IT guy, from sysadmin to web dev. At some point the software that created the barcode labels stopped working. Now I had to find an automatic way to make those labels, so of course I turned to LaTeX. All I needed to do was to write a batch file calling `pdflatex` with a template tex file and a pdf file for the label was promptly sent to the printer! There is probably some python package for doing the same thing, but I was so proud of seeing Computer Modern font tagged to every instruments in the shop!
For example, \AA -> Å, $\pm$ -> ±, and {\'e} -> é.
http://vimdoc.sourceforge.net/htmldoc/syntax.html#tex-concea...
Have you ever tried to color a latex table? If you color a cell, most readers will cover ~1 pixel of the upper and left table borders with the cell color, regardless of the zoom level. This is especially a problem on zoom levels where the border is only 1 or 2 pixels, but makes you feel insane when you zoom in so it's 10 or more. You know what the most common advice for fixing this is? "Get rid of your table borders. It will make your table look better."
Latex is full of little problems like this, but it's still the best.
Latex is far from ideal, but it's still the best because it hasn't stood still - many people are constantly contributing improvements and new packages, and it's very hard for a new replacement system to compete with that.
[1] https://tex.stackexchange.com/questions/18521/tikz-matrix-as...
Otherwise, this is like saying Python is not suitable as HTTP client because "urllib" has too many quirk - ignoring the fact everyone else uses the excellent "requests" libraray.
Although there are interesting developments at its code (XeLaTex, LuaTex), it is the packages which are ever evolving at a rapid pace. Have trouble with the "graphics" package? Use "graphicx" instead. Don't like the old "letter" class? Use "scrlttr2". And of course, use TikZ, it is one of the most well-designed, best-documented and comprehensive packages out there.
Compared to most programming languages, what I really like about LaTeX is their almost almost merciless take on backwards compatibility. This means that your old "article" document almost certainly works with later LaTeX versions. There will never be a breaking new version of "article" that forces you to adapt your LaTeX code, like we see with so many libraries in other languages. But this also means that you are stuck in your "old world" if you don't keep your eye open for new packages, and are willing to learn them. There are quite a lot of StackExchange questions that are essentially like this:
"Q: How do I fix my issue with package X? A: Use the newer package Y instead (or in addition)."
It's the combination of (mostly works by default) and (I can make it look just right) that is appealing. It gives me just enough stuff to play with to be satisfying and even a bit fun, without having to tweak so many things that it gets frustrating.
LaTeX::Word as Context::PageMaker.
Many many years ago I evaluated the available options as well to write internal documentation for the company I worked for. Looked at groff with the mom macro package. But eventually settled on Lout.
Lout worked very pleasantly (it has a nice markup language) but the output didn't look as beautiful as Latex. Unfortunately it doesn't seemed to be developed anymore.
https://en.m.wikipedia.org/wiki/Lout_%28software%29
The reason i made it was that i liked Lout's syntax but i wanted something closer to DocBook that i could convert to other formats (Lout only works with printed output). I think the closest is GNU Texinfo, but even that was too specific and it needs way more handholding for the underlying output than i'd like. Texinfo defines its node types (and its format isn't really a tree nor very generic) whereas LILArt's node types are just a convention and in practice the scripts can define any sort of node.
Having said that, LILArt is really a backburner project which i only touch wherever i need to write a document in more than one format. The default LILArt scripts can output groff macros for conversion to PS and PDF (i used that because it is already installed in many systems, including the iMac i used at the time, and it is small to download for where it isn't available) and HTML in several variations, like semantic HTML, "simple" HTML for systems like Java help and LHelp, HTML for conversion to mobi and plain text and "naked" HTML for use with QuHelp (a program that i wrote some years ago to convert naked HTML files to full web-based help sites with search). I also had a Texinfo target that could be used to make info files, PDF and PS through TeX and CHM files for a while but it was buggy and decided to rewrite it at some point.
However i only touch that rarely when i need it so i don't really recommend its use as it is right now (the processor is more or less done, but the scripts aren't very well thought out since i was doing stuff as i needed them and they need a bit of a cleanup and some nodes are needlessly verbose - the DocBook inspiration - and need some abbreviation aliases).
"Scribble is a collection of tools for creating prose documents—papers, books, library documentation, etc.—in HTML or PDF (via Latex) form. More generally, Scribble helps you write programs that are rich in textual content, whether the content is prose to be typeset or any other form of text to be generated programmatically."
You type in text and mark up using @-tags that are defined in, and can also contain, the full Racket language. It's like LaTeX with a modern language (but without the tons of available packages).
It's a really complex piece of software (much more complex than everyone thinks at first), but most of the time that isn't noticeable. The rST syntax can be somewhat confusing with advanced constructs, but for most stuff a short primer gets everyone going in the right direction. Since it's Python, deployment is a little bit annoying on non-Linux machines, but for docs you want CI anyway. To tweak PDF (i.e. latex) output it requires a fair bit of knowledge of both Sphinx and latex (and possibly rST [0]).
Like I said... it's quite usable.
[0] rST again being much more complex than everyone thinks at first. It's an enterprise markup language.
I've always wanted to build a latex based reporting system for similar reasons, all existing reporting systems suck and I wouldn't be surprised if I could build a latex based system to be the least worst option.
I wonder if there are other areas that it would be useful?
Don't take my comment as my rushing out to embrace TeX. I just don't think it is nearly as bad as its reputation.
If you find TeX, LaTeX, and friends useful, check out the TeX Users Group at http://www.tug.org. If you'd consider supporting the folks who bring you TeX Live, you can read the Aims and Benefits page at https://tug.org/aims_ben.html.
Note that a membership is very reasonable-- if you choose an electronic copy of the journal then membership is $45 annually, or $15 annually if you are a student, senior, etc. The details are at https://tug.org/join.html.
- At the base, there is Donald Knuth's program `tex`, itself written in a strange language (WEB) that is essentially an ad-hoc macro-expansion system (not used by many others, and not even by Knuth today, who prefers CWEB), and compiles (via `tangle`) to a dialect/version of Pascal (“Pascal-H”) for which a compiler hasn't existed for years. [It also "compiles" (via `weave`) to the printed book TeX: The Program]
- Then there is LaTeX, an elaborate set of macros written originally by Leslie Lamport (another Turing award winner) and later by a team, to be interpreted by the TeX program, which was never designed by its original creator for such elaborate programming.
- There are entire new programs (aka TeX engines) like pdfTeX and XeTeX, created by editing the original `tex.web` in different directions.
- There are the binaries of all these programs, compiled using `web2c`, a program written solely for converting all these WEB programs written in (basically) Pascal into C code, which is neither an arbitrary Pascal-to-C converter nor even an arbitrary WEB-to-C converter.
- There is LuaTeX, a manual rewrite of TeX in C, embedding a Lua interpreter and adding many hooks and extensions.
- There are thousands of macro packages written by thousands of people of varying levels of skill and foresight, on top of TeX, LaTeX, and other macro packages themselves: essentially everything on CTAN (which was inspiration for Perl's CPAN, and ultimately many languages' package repositories like Python's PyPI etc.)
And all this without even mentioning ConTEXt, Metafont, MetaPost, BibTeX, Kpathsea, various assorted utilities, graphics drivers…
[0]: https://tectonic-typesetting.github.io/en-US/