telml
TeLML (short for TeX-Like Markup Language) is a markup language I created for personal projects, specifically to serve as a lightweight but extensible markup language. I've implemented it in several languages, but the current reference implementation is in Haskell, and can be found on Gitub. In addition to using it locally as a markup language for projects-in-progress, it is also the markup language that powers What Happens When Computer, my short-posts-on-technical-topics blog.
The core of TeLML is the tag, which looks mostly like a LaTeX command invocation (e.g. \em{foo}
), with the following major differences:
- All tags in TeLML have a mandatory payload, which is surrounded in curly braces. Thus,
\br
is not a valid TeLML tag, but\br{}
is. - All tags in TeLML can have multiple "arguments" separated by vertical bars, so a tag with multiple values might look like
\link{https://duckduckgo.com/|this}
. - All special characters can be escaped with another backslash, so that
\\br\{\}
is the TeLML transcription of the string\br{}
rather than a nullary tag.
The TeLML format is split into two parts: the core format, which only defines the data model and how to parse and serialize it, and the markup format, which adds a set of HTML-like basic tags on top (including inline tags like \em{...}
and \strong{...}
as well as block-level tags like \blockquote{...}
and \code{...}
.) The libraries linked to above also allow uses that are extensible, in which new bespoke tags can be added for particular purposes.
For a more thorough description, see the following links:
- A description of the exact grammar and data model used in TeLML
- The TeLML markup module that defines the tag semantics as well as an API for adding new custom tags
- A document giving short rationale for why I wrote this instead of using another markup language