Markup languages 📑
A markup language is a system for annotating a document in a way that is visually distinguishable from the content. It is used only to format the text, so that when the document is processed for display, the markup language does not appear.
The idea and terminology evolved from the “marking up” of paper manuscripts, which is traditionally written with a red pen or blue pencil on authors’ manuscripts. This typically includes both content corrections (such as spelling, punctuation, or movement of content), and also typographic instructions.
In digital media, this “blue pencil instruction text” was replaced by tags which ideally indicate what the parts of the document are, rather than details of how they might be shown. This lets authors avoid formatting every instance of the same kind of thing redundantly (and possibly inconsistently).
Examples of instructions are:
- make a heading larger
- emphasize text (italic or bold)
- underline, or strike-through text
- create ordered, or unordered lists
- add inline links
- display inline images, or videos
Types
- Presentational markup: used by traditional word-processing systems
- Procedural markup: instructions for programs to process the text. Examples include: troff, TeX, LaTeX, and PostScript.
- Descriptive markup: used to label parts of the document for what they are, rather than how they should be processed. Examples include: LaTeX, HTML, SVG, XML.
- Lightweight markup languages: small and largely unstandardized markup languages
Lightweight markup languages
The most interesting to me, in historical order:
- reStructuredText – the oldest readable lightweight markup language. Used primarily in Python for technical documentation.
- AsciiDoc – old and readable, used for documentation, e-books. Initially written in Python.
- Textile – used for writing articles, forum posts, documentation, and any other type of written content. Originally written in PHP.
- Org-mode – file format and Emacs mode designed for notes, planning, authoring, and executing code in various programming languages.
- Markdown – widely used in blogging, instant messaging, online forums, collaborative software, documentation pages, and readme files.
- Creole – for wikis, to simplify the transfer of content between different wiki engines.
- GitHub Flavored Markdown – Markdown with extra features. Not that lightweight really.
µ markup languages
http://archieml.org
https://github.com/newsdev/archieml-js
ArchieML makes it easy to write and edit structured text on deadline that could be rendered in web pages. Tag text as data, without having to type a lot of special characters. Similar with YAML.
https://eno-lang.org
https://eno-lang.org/blog
https://codeberg.org/simonrepp/libeno
Eno - a data language for everyone.
http://criticmarkup.com
CriticMarkup, made for authors and editors to track changes to documents in plain text. Highlight insertions, deletions, substitutions and comments.
https://geminiprotocol.net/docs/gemtext.gmi
https://geminiprotocol.net/docs/cheatsheet.gmi
Gemtext is a limited subset of Markdown.
https://idyll-lang.org/docs/syntax
https://github.com/idyll-lang/idyll
Idyll: interactive narratives for the web. Create explorable explanations, write data-driven stories, and add interactivity to blogs.
https://markwhen.com
https://github.com/mark-when/markwhen
A markdown-like journal language for plainly writing logs, gantt charts, blogs, feeds, notes, journals, diaries, todos, timelines, calendars or anything that happens over time.
https://github.com/jgm/djot ⭐️
A light markup syntax inspired from Commonmark. It’s more than commonmark, with support for definition lists, footnotes, tables, several new kinds of inline formatting
https://xit.jotaen.net
https://github.com/jotaen/xit
xit! is a plain-text file format for todos and check lists
https://github.com/markdoc/markdoc
Powerful, flexible, Markdown-based authoring framework
https://github.com/markmap/markmap
Visualize your Markdown as mindmaps
https://mermaid.js.org
https://github.com/mermaid-js/mermaid
Mermaid: diagramming and charting tool with Markdown-inspired text definitions and a renderer to create and modify complex diagrams, written in Javascript.
https://fountain.io/syntax
https://github.com/nyousefi/Fountain
Fountain is a plain text markup language for screenwriting.
Fountain is a simple markup syntax that allows screenplays to be written, edited, and shared in plain, human-readable text
https://github.com/terrastruct/d2
D2 is a modern diagram scripting language that turns text to diagrams
https://github.com/typst/typst
Markup-based typesetting system that is designed to be as powerful as LaTeX while being much easier to learn and use.
https://remarkjs.com
https://github.com/gnab/remark
A simple, in-browser, markdown-driven slideshow tool
https://srackham.github.io/rimu
https://github.com/srackham/rimu
Rimu is a readable-text to HTML markup language inspired by AsciiDoc and Markdown
https://pointillistic.com/ren
https://github.com/humanistic/REN
Ren is a lightweight data-exchange text format. Programming language independent, with familiar conventions.
Ren has two main data structures:
- An ordered group of values, called a list
- A collection of name/value pairs, called a map
https://rmarkdown.rstudio.com
R Markdown documents are fully reproducible. Weave together narrative text and code to produce elegantly formatted output. Use multiple languages including R, Python, and SQL.
https://hiroppy.github.io/fusuma
https://github.com/hiroppy/fusuma
Fusuma makes slides with Markdown easily
https://github.com/macrat/funyu
https://github.com/macrat/funyu/blob/master/REFERENCE.fny
funyu is markup language for blog posting.
https://github.com/blacksmithgu/obsidian-dataview
A data index and query language over Markdown files, for Obsidian.
Treats your Obsidian Vault as a database which you can query from. Provides a JavaScript API and pipeline-based query language for filtering, sorting, and extracting data from Markdown pages.
Markdown editors
There’s a ton of them, this is just a short list:
- http://falcon.star-lord.me
- https://boostnote.io
- https://caret.io
- https://fsnot.es – macOS and iOS
- https://getupnote.com
- https://ghostwriter.kde.org
- https://github.com/brrd/abricotine – 💀
- https://github.com/dvcrn/markright – 💀
- https://github.com/gsantner/markor – Android only
- https://github.com/Moeditor/Moeditor – 💀
- https://github.com/n457/Uncolored – 💀
- https://ia.net/writer – Mac and Windows only
- https://nota.md – succesor of Caret
- https://notable.app
- https://standardnotes.com
- https://typora.io
- https://zettlr.com
Obviously, all text editors will be able to edit Markdown, but some editors have better support for highlighting specific parts of the text, creating links or tables, etc.
Tools
Python tool for converting files and office documents to Markdown:
( Made by Microsoft! )
https://github.com/microsoft/markitdown
Turn markdown files into structured, queryable data with JS.
Parses markdown files to extract structured data (frontmatter, tags, etc) and builds a queryable index either in JSON files or a local SQLite database.
https://github.com/datopian/markdowndb
https://github.com/nvim-neorg/neorg
Org-mode markup in NeoVIM using LUA
Awesome
- https://github.com/croqaz/awesome-markup
- https://github.com/bodiam/awesome-asciidoc
- https://github.com/mundimark/awesome-markdown
- https://github.com/BubuAnabelas/awesome-markdown
Links
- https://wikipedia.org/wiki/Comparison_of_documentation_generators
- https://wikipedia.org/wiki/Comparison_of_document-markup_languages
- https://wikipedia.org/wiki/General-purpose_markup_language
- https://wikipedia.org/wiki/Lightweight_markup_language
- https://wikipedia.org/wiki/List_of_document_markup_languages
- https://wikipedia.org/wiki/List_of_markup_languages
- https://wikipedia.org/wiki/Markup_language
- https://wikipedia.org/wiki/Page_description_language