1 - Asciidoc
Syntax
Since AsciiDoc is offered as a “complete system,” including both language and interpreter, there is a central syntax. Unlike Markdown, AsciiDoc has no variants or dialects.
Comments
AsciiDoc code can be commented, just like any other source code. This means that comments are not taken into account during the interpretation of the source text (e.g., when converting to PDF). This allows documents or parts of text to be commented on, or notes to be left.
This is arbitrary text in AsciiDoc.
// This line will not be interpreted.
This line will be displayed.
Paragraphs/Lines
AsciiDoc does not require special specifications for line breaks and paragraphs. The text is rendered as it was written. However, it is possible to force a line break using a plus symbol. Alternatively, the attribute [%hardbreaks] can be prepended.
This is line number one.
This is line number two.
And now another paragraph.
This line will be +
hard broken.
[%hardbreaks]
These lines will be
displayed as they are.
Text Formatting
Bold, Italic, Highlight, Code
To display text as bold, italic, or code, there are two possibilities, depending on whether the text to be formatted stands alone or is located in the middle of a text.
A single word can be enclosed in single asterisks, underscores, hashtags, or grave accents.
This text is *bold*.
This text is _italic_.
This text is `code`.
This text is #highlighted#.
If you want to format a part of text in the middle of a sentence, this is achieved by using double asterisks, underscores, hashtags, or grave accents. If this were attempted with single characters, the formatting rule would be ignored.
The "tt" in Mi**tt**ag are bold.
The "tt" in Mi*tt*ag are not bold.
The "tt" in Mi__tt__ag are italic.
The "tt" in Mi_tt_ag are not italic.
The "tt" in Mi``tt``ag are code.
The "tt" in Mi`tt`ag are not code.
The "tt" in Mi##tt##ag are highlighted.
The "tt" in Mi#tt#ag are not highlighted.
Underlined, Strikethrough
To underline or strikethrough text, hashtags with an attribute are used.
This text is [.underline]#underlined#.
This text is [.line-through]#strikethrough#.
Superscript, Subscript, and Smart Quotes
Using superscript and subscript, parts of text can be raised or lowered. For this, the text parts are placed between single carets/circumflexes (superscript) or tildes (subscript).
This is a ~low~point.
This is a ^high^point.
Here is the completed AsciiDoc text with content for the empty chapters (starting from “Links”), based on the official AsciiDoc syntax and common best practices:
Here is the revised version of your AsciiDoc documentation — now with a short, concise explanation for each chapter before the syntax examples come. This keeps it clear, understandable, and useful for beginners.
Links
Explanation:
AsciiDoc supports both external web links and internal references within the document (anchors) as well as links to local files. The syntax is simple and intuitive — ideal for documentation that needs to be linked.
External Links
https://www.asciidoc.org[AsciiDoc Website]
Internal Links (Anchors)
[[section1]]
== First Section
See also <<section1>>.
File Links
link:manual.pdf[Download Manual]
Document Header
Explanation:
The document header contains metadata such as title, author, date, and global attributes. It is optional but recommended for structured documents — especially for PDF or book exports.
= Document Title
Author Name <author@example.com>
:doctype: book
:author: Author Name
:revdate: 2026-02-09
Automatic Table of Contents
Explanation:
A table of contents (TOC) is automatically generated as soon as the attribute :toc: is set. It can be placed on the left, right, or anywhere else — helpful for longer documents.
:toc: left
= Main Title
== Chapter 1
Content...
== Chapter 2
Further content...
Includes
Explanation:
With include::, you can embed external AsciiDoc files or parts of them. Practical for reusable sections (e.g., footnotes, notes, chapters).
include::chapter1.adoc[]
include::../shared/footnotes.adoc[tag=section2]
Lists
Explanation:
AsciiDoc supports bulleted lists (*), numbered lists (.), and definition lists (::). Indentation determines the hierarchy — simple and clearly structured.
Bulleted Lists
* Point 1
* Point 2
* Subpoint
Numbered Lists
. First point
. Second point
.. Subpoint
Definitions
Term::
Definition of the term.
Images
Explanation:
Images are embedded using image::. You can control size, alt text, and scaling. Works in HTML, PDF, and EPUB — depending on the backend.
image::logo.png[Logo, 200, 100]
image::diagram.svg[Diagram, scaledwidth=50%]
Audio
Explanation:
Audio files (e.g., voice messages) can be embedded directly in the document. Useful for tutorials or multimedia documentation.
audio::voicemessage.mp3[Voice Message, autoplay]
Videos
Explanation:
Videos are embedded using video::. You can enable controls like autoplay, controls, or loop — ideal for instructions or presentations.
video::tutorial.mp4[Tutorial, width=640, height=360, autoplay, controls]
Keyboard, Button, Menu Macros
Explanation:
With kbd: and menu:, you can clearly highlight keyboard shortcuts and menu paths — particularly useful in instructions or software documentation.
Keyboard Shortcuts
Press kbd:[Ctrl+C] to copy.
Menu Commands
Go to menu:File[Save As...].
Source Code
Explanation:
Code blocks with syntax highlighting are introduced with [source]. You can specify languages like Python, Bash, or HTML — helpful for developer documentation.
[source,python]
----
def hello():
print("Hello World")
----
Notes, Text Blocks
Explanation:
With NOTE:, TIP:, WARNING:, etc., you can highlight important information. Quotes with ____ are ideal for quotations or excerpts from external sources.
Notes
NOTE: This is important information.
TIP: Here's how to do it faster.
Quotes
____
"This is a quote."
— Author
____
Tables
Explanation:
Tables are defined with |===. Each cell is separated by |. You can control column count, borders, and captions — perfect for comparisons or data.
|===
| Column 1 | Column 2
| Value A | Value B
| Value C | Value D
|===
IDs, Roles, and Options
Explanation:
With [[id]], you set anchors for internal links. With [.role], you can assign CSS classes. With [%option], you control block behavior (e.g., unnumbered).
IDs
[[chapter2]]
== Chapter 2
Roles
[.note]
This text has a role.
Options
[%unnumbered]
== This section has no number.
Attributes and Special Characters
Explanation:
Attributes (:name: value) enable reuse of text or values. Special characters like + or \\ may need to be escaped to avoid being interpreted as formatting.
Attributes
:version: 1.0
The version is {version}.
Special Characters
+ for plus, \\ for backslash, ' for apostrophe.
Bibliography
Explanation:
A bibliography can be created manually or via bibliography::. Useful for scientific or referenced documents.
[bibliography]
== Literature
- Author, Title, Publisher, Year
Footnotes
Explanation:
Footnotes are inserted with footnote:[Text] or [footnote:]. They appear at the end of the document or page — ideal for supplementary information.
This is a sentence with a footnote.footnote:[This is the footnote.]
Another sentence with [footnote:2]Footnote 2[footnote:2].
Conclusion
Advantages
A major advantage of AsciiDoc is certainly its wide range of functions, which even allows complex documents with tables of contents and bibliographies. The include function and possible comments also facilitate handling large amounts of text and many files; collaborative editing is thus also easy. Since AsciiDoc is not just a language but also comes with an application, productive work can be done without much detour. Apart from a text editor for the text files, nothing else is needed.
Disadvantages
AsciiDoc is by far not as widely used as Markdown. Productive tools like note-taking apps, wikis, or static site generators rarely support AsciiDoc, and if they do, usually only via plugins. Those who work a lot with such tools will not get around using Markdown and AsciiDoc in parallel.
Further Information
Literature
Weblinks
-
AsciiDoc (auf Englisch)
-
AsciiDoctor (auf Englisch)
Tools for Using AsciiDoc
Text Editors
Static Site Generators
Transformation Tools
2 - Markdown
Markdown is certainly the most widespread simple markup language.
Syntax
Basic Syntax
These are the basic commands that Markdown offers and should fundamentally work in every tool.
Headings
To display headings, one or more hashtags are placed before the heading title, depending on the level.
# Heading 1
## Heading 2
### Heading 3
#### Heading 4
##### Heading 5
###### Heading 6
Note: It is best to always insert a blank line before a heading, as interpretations may otherwise be incorrect.
Paragraphs/Lines
There are no real notations for line breaks and paragraphs; the text is displayed as written. To support a line break, two spaces can be added at the end of the line, or alternatively, the HTML tag <br> can be used.
First line with two spaces at the end.
And now the next line.
First line with the HTML tag at the end.<br>
And now the next line.
Text Formatting
By default, Markdown offers the ability to display text as bold and/or italic.
To display text in bold, the corresponding text part is written between double stars or underscores.
I also have **bold text**.
I also have __bold text__.
And here is **bold text** in the middle.
To display text in italics, the corresponding text part is written between single stars or underscores.
I also have *italic text*.
I also have _italic text_.
And here is *italic text* in the middle.
Of course, these can also be combined:
To display text in bold and italic, the corresponding text part is written between triple stars or underscores.
I also have ***bold and italic text***.
I also have ___bold and italic text___.
And here is ***bold and italic text*** in the middle.
Blockquotes
To quote text as a block, simply place a “greater than” sign before the line.
> This text is in a blockquote.
If the blockquote is to span multiple lines, the “greater than” sign must be placed at the beginning of each line (including empty lines).
> This text represents the first line in the blockquote.
>
> And here is the next line.
Quotes can also be nested; in this case, an additional “greater than” sign is added for the next level or indentation.
> This text is in a blockquote.
>
>> This text is nested.
Lists
Lists are just as simple and are written directly in the text. If the list goes to another level, this is enabled by indentation (4 spaces or 1 tab).
Ordered List
Ordered lists are generated by simply placing the corresponding number followed by a period before the line.
1. First item
2. Second item
3. Third item
1. first indentation
2. second indentation
4. Fourth item
Unordered List
Unordered lists are generated by simply placing a hyphen before the line.
- First item
- Second item
- Third item
- first indentation
- second indentation
- Fourth item
Links and Images
To display a link, the link text is placed in square brackets, followed by the URL within parentheses.
Ordered lists are generated by simply placing the corresponding number followed by a period before the line.
My favorite search engine is [Swisscows](https://swisscows.com/en).
A title can also be added to the link as a tooltip.
My favorite search engine is [Swisscows](https://swisscows.com/en "The Swiss search engine").
As a shorthand, a URL can also simply be written within angle brackets.
My favorite search engine is <https://swisscows.com/en>.
Extended Syntax
Tables
Tables are defined using vertical bars (|) and hyphens (-). The first line contains the column headers, the second line defines the alignment (optional).
| Left aligned | Centered | Right aligned |
| :----------- | :-----------: | ------------: |
| Cell 1 | Cell 2 | Cell 3 |
| Cell 4 | Cell 5 | Cell 6 |
Note: The number of hyphens in the separator line is arbitrary; only the
:for alignment matters.
Code Blocks
For multi-line code, a code block is created with three backticks (```) or with four spaces per line. Optionally, the language can be specified to activate syntax highlighting.
```python
def hello():
print("Hello, World!")
---
#### Footnotes
Footnotes are inserted in the text with `[^identifier]` and defined at the end of the file with `[^identifier]:`.
```markdown
Here is a text with a footnote.[^1]
[^1]: This is the explanation for the footnote.
Note: Not all Markdown parsers support footnotes – e.g., Hugo requires
goldmarkwith the option enabled.
IDs for Headings
Headings can be provided with an ID to link to them directly (e.g., for tables of contents or anchor links).
## Heading with ID {#my-id}
[Link to heading](#my-id)
Note: In Hugo,
enableInlineShortcodes = truemust be activated in the configuration.
Task Lists
Task lists (checklists) are created with - [ ] for unchecked and - [x] for checked items.
- [x] Task completed
- [ ] To do
- [ ] Do later
Note: Often used in GitHub, GitLab, or note apps like Obsidian.
Strikethrough
Strikethrough text is enclosed with double tildes (~~).
This text is ~~strikethrough~~.
Emojis
Emojis can be inserted directly (e.g., 😊) or with shortcodes like :smile: (depending on the parser).
I'm in a good mood today 😊
Note: In Hugo, emojis must be explicitly activated (
enableEmoji = true).
Highlighting Text
Some parsers (e.g., Hugo with Goldmark) support highlighting with ==:
This text is ==highlighted==.
Note: Not standardized – does not work everywhere.
Sub-/Superscript
Subscript (H₂O) and superscript (x²) are represented with ~ and ^ respectively – but only in some extensions like Pandoc or Hugo with a special parser.
Water is H~2~O.
x^2^ is x squared.
Note: Not part of the CommonMark standard – Works, for example, in Hugo with
goldmarkand the option enabled.
Usage
Markdown does not represent a system of its own but stands purely for an open and freely available syntax. One could compare Markdown to an embeddable scripting language. This is certainly also the reason why so many systems support Markdown and the language is thus so versatile.
Wiki Systems
Wiki systems such as Mediawiki (on which Wikipedia is based), dokuWiki, or integrated wiki functions like those in GitHub or GitLab standardly use Markdown for content management.
Wikis are primarily there to present content, in the Git area documentation for the offered software. Thanks to the simple syntax, these can also be created and managed by non-techies.
Notes
The widely available note apps (or sometimes also called desktop wikis) also rely on Markdown for content management. Often an integrated WYSIWYG editor is provided, but it uses Markdown in the background. There is usually also the possibility to switch to the source text and edit directly there. Examples include Zim, Zettlr, QOwnNotes, and Logseq in the open-source area, or popular variants like Evernote, Obsidian, or Joplin.
Websites
In the area of websites, Markdown appears in two ways. On the one hand, well-known Content Management Systems (such as WordPress and Drupal) often offer plugins/modules to publish content in Markdown. But besides CMS, there are also SSGs, so-called Static Site Generators, such as Hugo or Jekyll. In addition, there are similar systems specialized in technical documentation like MKDocs, Sphinx, or Docusaurus. Here too, all content is created in Markdown and then converted into static websites using a preprocessor, which can then be published.
Presentations/Courses
Besides websites, presentations can also be created with Markdown. However, these are not PowerPoint presentations but are dynamically converted into web elements using preprocessors. Examples include Marp, remarkJS, or Cleaver. Specifically for online courses, the Markdown extension LiaScript is suitable.
Documents
Markdown certainly lacks some functionalities that a word processor like MS Word or LibreOffice Writer can offer, but it is perfectly sufficient for simple documents such as letters.
Conclusion
Advantages
Markdown has a simple and clear syntax and is therefore easy to learn. Markdown documents also have the advantage of being easily readable even in source text. They are thus both machine-readable and human-readable. The latter thanks to the simple and straightforward syntax without overhead. The wide distribution of Markdown and its integration into so many tools also speaks for itself.
Disadvantages
Besides the clear advantages, there is unfortunately also negative news about Markdown.
Markdown is very suitable for articles and notes that are not structured too complexly. If one wants to create more, e.g., large and complex documents, such as entire books, useful functions like a table of contents or the possibility to nest files using “Include” are missing.
Although there is a Markdown standard with CommonMark, the strong distribution has nevertheless led to many “dialects,” as many tools extend the standard syntax with their own commands. As a result, Markdown documents from different systems are not necessarily compatible with each other.