Self-publishing
Although typography and publishing are vast subjects, the principle-guided approach would help there.
The main principle is that a text prepared for publishing has lots of nested structure and specialized sub-languages or DSLs.
There are multiple layers in every published document, and each layer has its own nested structure.
- headlines and corresponding sections
- Quotations and examples (to be rendered verbatim)
LaTeX
blocks for mathematics (to be rendered withMathJax
)- source code blocks in various programming languages.
- etc.
The main principle is that the org-mode
format is the most general (or generalized), while Markdown is more specialized (or specific), and LaTeX is even “low level” (closer to typograhy level).
This means that one has to write in the most general strucures and then specialize for publishing (without loss of any strucutre, it is actually augmenting or annotating an existing document structure).
Org-mode
The org-mode
of GNU Emacs supports all the required nesting and block definitions and tagging, along with the basic export (into commonly used formats) functionality.
The org-mode
structured text file format is an ideal source format, which can be exported or converted into other formats using pandoc
.
Notably, an org-mode
file could be exported out of box into pdf
and djvu
formats, as well as plain html
.
Pandoc
The Pandoc
converter does the right thing – it parses the source format (of a structured text) into a generalized AST first, and then from that AST it generates an output (the target format).
This is how one gets, say, Markdown
or rst
, from an org-mode
file. Again, the main principle is that there is a common structure and tagging, and both are preserved (losslessly transformed) between various formats.
Emacs
The GNU Emacs
is a software implementation of a Lisp Machine, which happen to have an editor within it. It could compile and run all your code blocks, pretty-print all your mathematics and check your spelling and your code.
There is objectively nothing better, provided you know how to use it and lots of external packages.
The Web
Export to static HTML
(and CSS
) for a static web-site (just a directory) is the most basic option. It is, however, powerful-enough to render high-quality and aesthetically pleasant content.
The mdbook
of the Rust project is the tool of choice for self-published technical and programming books.
Hugo
Static site generators, such as Hugo
, is an “advanced” option. It supports third-party themes and basic SEO, so a proper delegation (of mundane tasks) is going on.
Fortunately, there is the ox-hugo
package for GNU Emacs.
Github Pages
It seems that the only remained censorship-resistant (or at least tolerable) free hosting is the Github Pages facility. It was originally designed for Jekill
, but can host basically any static html directory.
This is where to publish your stuff.