Getting started with AsciiDoc syntax
Author: Joseph Cayouette
Version: v1.0 (2025-10-22)
Overview
This guide introduces the most common AsciiDoc syntax and conventions used in SUSE technical documentation.
You’ll also learn how to structure content effectively, and apply best practices for maintainable writing.
SUSE Documentation Style Guide (Asciidoc)
Syntax
Processing
Getting Started with AsciiDoc Syntax
AsciiDoc is a lightweight, text-based markup language for authoring documentation, books, and technical content.
It’s readable in plain text and easily converts to HTML, PDF, and other formats through Asciidoctor.
This guide provides a full syntax overview and examples for each feature of AsciiDoc.
Table of contents
- Paragraphs
- Text formatting
- Links
- Document header
- Section titles
- Automatic TOC
- Includes
- Lists
- Images
- Audio
- Videos
- Keyboard, Button, and Menu Macros
- Literals and Source Code
- Admonitions
- More Delimited Blocks
- Tables
- IDs, Roles, and Options
- Comments
- Breaks
- Attributes and Substitutions
- Text Replacements
- Escaping Substitutions
- Bibliography
- Footnotes
- Markdown Compatibility
Paragraphs
A paragraph is one or more consecutive lines of text. Blank lines separate paragraphs.
This is a normal paragraph.
This is another paragraph.
For literal paragraphs (preserve formatting):
  This is a literal paragraph.
  Leading spaces and newlines are preserved.
Text formatting
AsciiDoc supports rich inline formatting:
*bold* _italic_ *_bold italic_* `monospace`
^superscript^ ~subscript~
Result: bold, italic, bold italic, monospace, superscript^text^, subscripttext.
Links
https://asciidoctor.org
https://asciidoctor.org[AsciiDoctor]
mailto:user@example.com[Email Us]
link:../file.adoc[Relative Link]
Document header
The header defines metadata and attributes.
= Document Title
Author Name <author@example.com>
v1.0, 2025-10-22
:toc:
:sectnums:
Section titles
= Level 0 Title
== Level 1
=== Level 2
==== Level 3
===== Level 4
====== Level 5
Automatic TOC
Enable a table of contents automatically with:
:toc:
:toclevels: 3
The TOC appears in the rendered output.
Includes
Include other files or snippets:
include::chapter1.adoc[]
include::snippets/code-example.adoc[tag=main]
Lists
Unordered list
* Item 1
** Sub-item
*** Sub-sub-item
Ordered list
. Step 1
. Step 2
.. Sub-step
Description list
Term 1:: Definition
Term 2::
Multi-line definition
Checklist
* [x] Done
* [ ] Not done
Images
image::example.png[Alt text,300,200]
image::https://asciidoctor.org/images/octocat.jpg[GitHub mascot]
Use :imagesdir: to set a base directory.
Audio
audio::track.mp3[]
audio::https://example.com/music.mp3[Sample Audio]
Videos
video::sample.mp4[width=640, height=360]
video::https://www.youtube.com/embed/abcd1234[youtube]
Keyboard, Button, and Menu Macros
kbd:[Ctrl+S]
btn:[Submit]
menu:File[Save As]
Literals and Source Code
Inline Literal
Use `+command+` to mark literal text.
Source Block
[source,python]
----
print("Hello, AsciiDoc!")
----
Callouts
[source,python]
----
print("Hello") # <1>
print("World!") # <2>
----
<1> Prints hello
<2> Prints world
Admonitions
NOTE: This is a note.
TIP: Pro tip here.
IMPORTANT: Don’t skip this.
WARNING: Be cautious!
CAUTION: Handle carefully.
Block style:
[WARNING]
====
Critical warning block.
====
More Delimited Blocks
.Example
====
This is an example block.
====
.Quote
____
“Knowledge speaks, but wisdom listens.”
____
.Sidebar
****
Additional context or tips.
****
.Literal Block
....
$ echo "Hello"
....
Tables
|===
| Name | Age | Role
| Alice | 30 | Developer
| Bob | 40 | Manager
|===
IDs, Roles, and Options
[#custom-id]
== Section Title
[.role-name]
Text styled with role.
[options="header"]
|===
| Header | Value
| One | 1
| Two | 2
|===
Comments
Comments are ignored in the output:
// This is a comment line
////
This is a comment block.
Ignored in output.
////
Breaks
Line break +++
New line continues.
Horizontal rule:
''' or ---
Attributes and Substitutions
:project-name: MyApp
The project name is {project-name}.
Substitutions apply within inline content or blocks using [subs=+].
Text Replacements
Define replacements globally:
:heart: ❤️
I {heart} AsciiDoc!
Escaping Substitutions
To prevent AsciiDoc from processing text, use a backslash or pass macro:
\*Not bold\*
pass:[*Not bold*]
Bibliography
[bibliography]
== References
* [[[iso9001]]] ISO 9001:2015 Quality Management
* [[[agile]]] Manifesto for Agile Software Development
Reference example:
See <<iso9001>> for details.
Footnotes
A sentence with a footnote.footnote:[This is the footnote text.]
Markdown Compatibility
AsciiDoc supports most Markdown-style syntax:
*italic* or _italic_
**bold** or __bold__
`code` or ``code``
However, AsciiDoc syntax is more structured and extensible.
Last updated: October 2025