This repository contains the specification for the Unimarkup markup language.
The goal of Unimarkup is to combine conventions of other well-known markup languages, and create a markup language that can easily scale from simple README files to scientific papers, and full program documentation.
The focus of Unimarkup is
- Usability
- Consistency
- Internationalization
Since Unimarkup is a markup language, the content will mostly be converted to other formats like PDF or HTML as defined in the output-formats folder. Besides those more final formats, the i18n folder defines intermediate formats to help with content localization.
Unimarkup also integrates a more programming language like markup that is defined in the markup/logic folder. This makes the construction of more complex content easier, and improves content reusability.
The following example uses some Unimarkup elements. Detailed description about those elements, and others may be found in the markup section.
# Heading
## Sub-Heading
Some pragraph inside the sub-heading section.
Common **inline** ||markup|| that *all*ows ***inner* word** and `nesting`.
## Escaping, links, references and text-box
Escape any character using a single backslash.
Also inside `verbatim \` text`.
[links](uri) should look familiar if you know Markdown.
Reference [##unimarkup-elements], [^^notes], or [&&literature].
Use a [text-box]{ color : red } to apply additional styling.
# Blocks
|||
First column with a task list:
-[] Main task (still open)
-[x] Completed sub-task
-[ ] Remaining task
:::
Second column with a table:
===
| column 1 row 1 | column 2 row 1 |
| column 1 row 2 | column 2 row 2 |
===
|||
This language was inspired by many other markup and programming languages.
Other great markup languages (given in alphabetical order):
The following structure of the Unimarkup specification is given in alphabetical order.
- addons ... contains language addons that are not part of the core specification
- associated extensions ... defines file extensions that should be associated with Unimarkup content
- configuration ... contains the configuration options for Unimarkup files that must be supported by Unimarkup implementations
- glossary ... contains definitions for terms used in the Unimarkup specification
- i18n ... contains internationalization aspects of the Unimarkup specification that must be supported by Unimarkup implementations
- markup ... contains the core markup syntax for the Unimarkup language
- output-formats ... contains the output formats that must be supported by Unimarkup implementations, and defines the conversion from Unimarkup markup to the output format
The specification is written mostly in Unimarkup. Due to the similarity to Markdown, it is not that obvious. Minor differences are nested verbatim blocks being inverted in Unimarkup.
Notable differences between Markdown and Unimarkup:
Most block, inline, and decorator elements are already quite stable. The HTML output is also stable for many elements, but some complex elements require more testing and feedback.
There are still many built-in field elements missing, but this requires external feedback. The logic section is also pretty rough, but most users won't use them excessively, but rather use predefined macros and memorables.
Any verbatim text that is between <>
is used as placeholder value that may be replaced by any other text.
The <>
graphemes are also part of the placeholder value.
If an element breaks this convention, it must be stated explicitly.
A note is used to highlight information concerning usage restrictions, to prevent wrong usage, or about the rendering behavior of an element.
Note: Notes are set by starting a new line with **Note:**
followed by one space and surrounded by blank lines.
The keywords must, must not, should, should not, may and optional are used as described in rfc2119.
This work is licensed under a Creative Commons Attribution-NoDerivatives 4.0 International License.
Short explanation: The No Derivatives part should help to encourage people to get involved in improving the core specification, rather than spin-off their own variation.