AsciiDoc Syntax Quick Reference
AsciiDoc is a mature, lightweight markup language for authoring notes, articles, documentation, books, web pages, slide decks and man pages in plain text. This guide is a quick reference for the common formatting markup and document elements in the AsciiDoc syntax.
Several examples focus on the output generated by the HTML backend. AsciiDoc produces complementary output when generating DocBook. Most features labeled “Asciidoctor only” can be made available to the native AsciiDoc processor by using this AsciiDoc configuration file from the Asciidoctor project. |
Paragraphs
Paragraphs don't require any special markup in AsciiDoc. A paragraph is just one or more lines of consecutive text. To begin a new paragraph, separate it by at least one blank line.
Paragraphs don’t require any special markup in AsciiDoc. A paragraph is just one or more lines of consecutive text.
To begin a new paragraph, separate it by at least one blank line.
To preserve a line break, end the line in a space followed by a plus sign. + This results in a visible line break (e.g., `<br>`) between the lines.
To preserve a line break, end the line in a space followed by a plus sign.
This results in a visible line break (e.g., <br>
) between the lines.
A normal paragraph. A sequence of lines that begin with at least one space is a literal paragraph. Literal paragraphs are treated as preformatted text. The text is shown in a fixed-width font and endlines are preserved. Another normal paragraph.
A normal paragraph.
A sequence of lines that begin with at least one space is a literal paragraph. Literal paragraphs are treated as preformatted text. The text is shown in a fixed-width font and endlines are preserved.
Another normal paragraph.
NOTE: An admonition paragraph draws the reader's attention to auxiliary information. Its purpose is determined by the label at the beginning of the paragraph. Here are the other built-in admonition types: TIP: Pro tip... IMPORTANT: Don't forget... WARNING: Watch out for... CAUTION: Ensure that...
An admonition paragraph draws the reader’s attention to auxiliary information. Its purpose is determined by the label at the beginning of the paragraph. |
Here are the other built-in admonition types:
Pro tip… |
Don’t forget… |
Watch out for… |
Ensure that… |
You can also create admonition blocks. |
[.lead] This text will be styled as a lead paragraph (i.e., larger font).
This text will be styled as a lead paragraph (ie., larger font).
The default Asciidoctor stylesheet automatically styles the first paragraph of the preamble as a lead paragraph. |
Formatted Text
_italic phrase_ __i__talic le__tt__ers *bold phrase* **b**old le**tt**ers *_bold italic phrase_* **__b__**old italic le**__tt__**ers `monospace phrase` and le``tt``ers `_monospace italic phrase_` and le``__tt__``ers `*monospace bold phrase*` and le``**tt**``ers `*_monospace bold italic phrase_*` and le``**__tt__**``ers `+inline literal passthrough+` (monospace text without substitutions)
italic phrase
italic letters
bold phrase
bold letters
bold italic phrase
bold italic letters
monospace phrase
and lett
ers
monospace italic phrase
and lett
ers
monospace bold phrase
and lett
ers
monospace bold italic phrase
and lett
ers
inline literal passthrough
(monospace text without substitutions)
Do werewolves believe in [small]#small print#? [big]##O##nce upon an infinite loop.
Do werewolves believe in small print?
Once upon an infinite loop.
^super^script phrase ~sub~script phrase
superscript phrase
subscript phrase
'`single smart quotes`' "`double smart quotes`"
‘single smart quotes’
“double smart quotes”
Document Header
A header is optional. When you do add a header to your document, the only required element is a title. |
The header may not contain blank lines and must be offset from the content by at least one blank line. |
//toc::[] = My Document's Title My document provides...
= My Document's Title Doc Writer <[email protected]> My document provides...
= My Document's Title Doc Writer <[email protected]> v1.0, 2014-01-01 My document provides...
You cannot have a revision line without an author line. |
= My Document's Title Doc Writer <[email protected]> v1.0, 2014-01-01 :toc: :imagesdir: assets/images :homepage: http://asciidoctor.org My document provides...
Section Titles (Headers)
= Document Title (Level 0) == Level 1 Section === Level 2 Section ==== Level 3 Section ===== Level 4 Section ====== Level 5 Section == Another Level 1 Section
Document Title (Level 0)
Section Level 1
Section Level 2
Section Level 3
Section Level 4
Section Level 5
When using the article doctype (the default), you can only have one level-0 section title (i.e., the document title) and it must be in the document header. |
The number of equal signs matches the heading level in the HTML output.
For example, Section Level 1 becomes an <h2> heading.
|
= Document Title (Level 0) == Section Level 1 === Section Level 2 ==== Section Level 3 ===== Section Level 4 ====== Section Level 5 = Section Level 0
Document Title (Level 0)
Section Level 1
Section Level 2
Section Level 3
Section Level 4
Section Level 5
Section Level 0
[[primitives-nulls]] == Primitive types and null values
sectanchors
-
When this document attribute is set, a section icon anchor appears in front of the section title.
sectlinks
-
When this document attribute is set, the section titles become links.
Section title anchors depend on the default Asciidoctor stylesheet to render properly. |
Include Files
= Reference Documentation Lead Developer This is documentation for project X. include::basics.adoc[] include::installation.adoc[] include::example.adoc[]
Asciidoctor does not insert blank lines between adjacent include statements to keep the content separated. Be sure to add a blank line in the source document to avoid unexpected results, such as a section title being swallowed. |
:asciidoctor-source: https://raw.github.com/asciidoctor/asciidoctor/master include::{asciidoctor-source}/README.adoc[]
Including content from a URI is potentially dangerous, so it’s disabled if the safe mode is SECURE or greater.
Assuming the safe mode is less than SECURE, you must also set the allow-uri-read attribute to permit Asciidoctor to read content from a URI.
|
Horizontal Rules and Page Breaks
'''
<<<
Lists
* Edgar Allen Poe * Sheri S. Tepper * Bill Bryson //^ * Kevin Spacey * Jeremy Piven
-
Edgar Allen Poe
-
Sheri S. Tepper
-
Bill Bryson
-
Kevin Spacey
-
Jeremy Piven
Blank lines are required before and after a list. |
You can force two lists apart with a line comment, as the previous example demonstrates.
The text in the comment, (^ ), is optional, but serves as a hint to other authors that this line serves as an "end of list" marker.
|
* level 1 ** level 2 *** level 3 **** level 4 ***** level 5 * level 1
-
level 1
-
level 2
-
level 3
-
level 4
-
level 5
-
-
-
-
-
level 1
The unordered list marker can be changed using block styles. |
- [*] checked - [x] also checked - [ ] not checked - normal list item
-
checked
-
also checked
-
not checked
-
normal list item
Checklists can use font-based icons and be interactive. |
. Step 1 . Step 2 . Step 3
-
Step 1
-
Step 2
-
Step 3
. Step 1 . Step 2 .. Step 2a .. Step 2b . Step 3
-
Step 1
-
Step 2
-
Step 2a
-
Step 2b
-
-
Step 3
. level 1 .. level 2 ... level 3 .... level 4 ..... level 5 . level 1
-
level 1
-
level 2
-
level 3
-
level 4
-
level 5
-
-
-
-
-
level 1
For ordered lists, Asciidoctor supports numeration styles such as lowergreek and decimal-leading-zero .
|
first term:: definition of first term section term:: definition of second term
- first term
-
definition of first term
- section term
-
definition of second term ====//toc::[]
first term:: definition of first term section term:: definition of second term
- first term
-
definition of first term
- section term
-
definition of second term
[qanda] What is Asciidoctor?:: An implementation of the AsciiDoc processor in Ruby. What is the answer to the Ultimate Question?:: 42
-
What is Asciidoctor?
An implementation of the AsciiDoc processor in Ruby.
-
What is the answer to the Ultimate Question?
42
Operating Systems:: Linux::: . Fedora * Desktop . Ubuntu * Desktop * Server BSD::: . FreeBSD . NetBSD Cloud Providers:: PaaS::: . OpenShift . CloudBees IaaS::: . Amazon EC2 . Rackspace
- Operating Systems
-
- Linux
-
-
Fedora
-
Desktop
-
-
Ubuntu
-
Desktop
-
Server
-
-
- BSD
-
-
FreeBSD
-
NetBSD
-
- Cloud Providers
-
- PaaS
-
-
OpenShift
-
CloudBees
-
- IaaS
-
-
Amazon EC2
-
Rackspace
-
Lists can be indented. Leading whitespace is not significant. |
* Every list item has at least one paragraph of content, which may be wrapped, even using a hanging indent. + Additional paragraphs or blocks are adjoined by putting a list continuation on a line adjacent to both blocks. + list continuation:: a plus sign (+) on a line by itself * A literal paragraph does not require a list continuation. $ gem install asciidoctor * AsciiDoc lists may contain any complex content. + [cols="2", options="header"] |=== |Application |Language |AsciiDoc |Python |Asciidoctor |Ruby |===
-
Every list item has at least one paragraph of content, which may be wrapped, even using a hanging indent.
Additional paragraphs or blocks are adjoined by putting a list continuation on a line adjacent to both blocks.
- list continuation
-
a plus sign (+) on a line by itself
-
A literal paragraph does not require a list continuation.
$ gem install asciidoctor
-
AsciiDoc lists may contain any complex content.
Application Language AsciiDoc
Python
Asciidoctor
Ruby
== Links
http://asciidoctor.org - automatic! http://asciidoctor.org[Asciidoctor] https://github.com/asciidoctor[Asciidoctor @ *GitHub*]
http://asciidoctor.org - automatic!
link:index.html[Docs]
[email protected] mailto:[email protected][Discuss Arquillian] mailto:[email protected][Subscribe, Subscribe me, I want to join!] irc://irc.freenode.org/#asciidoctor
http://discuss.asciidoctor.org[Discuss Asciidoctor, role="external", window="_blank"] http://discuss.asciidoctor.org[Discuss Asciidoctor^] http://search.example.com["Google, Yahoo, Bing^", role="teal"]
Links with attributes (including the subject and body segments on mailto links) are a feature unique to Asciidoctor.
To enable them, you must set the linkattrs attribute on the document.
When they are enabled, you must quote the link text if it contains a comma.
|
[[bookmark-a]]Inline anchors make arbitrary content referenceable. anchor:bookmark-b[]Use a cross reference to link to this location.
See <<paragraphs>> to learn how to write paragraphs. Learn how to organize the document into <<section-titles,sections>>.
See Paragraphs to learn how to write paragraphs.
Learn how to organize the document into sections.
Refer to <<document-b.adoc#section-b,Section B>> for more information. See you when you get back from <<document-b#section-b,Section B>>!
== Images
image::sunset.webp[] image::sunset.webp[Sunset] [[img-sunset]] .A mountain sunset image::sunset.webp[Sunset, 300, 200, link="http://www.flickr.com/photos/javh/5448336655"] image::http://asciidoctor.org/images/octocat.webp[GitHub mascot]
Images are resolved relative to the value of the imagesdir document attribute, which defaults to an empty value.
The imagesdir attribute can be an absolute path, relative path or base URL.
If the image target is a URL or absolute path, the imagesdir prefix is not added.
|
You should use the imagesdir attribute to avoid hard coding the shared path to your images in every image macro.
|
image:sunset.webp[Sunset,150,150,role="right"] What a beautiful sunset!
What a beautiful sunset!
There are a variety of attributes available to position and frame images. |
Click image:icons/play.webp[Play, title="Play"] to get the party started. Click image:icons/pause.webp[title="Pause"] when you need a break.
Click to get the party started.
Click when you need a break.
= Document Title :data-uri:
When the data-uri attribute is set, all images in the document—including admonition icons—are embedded into the document as data URIs.
|
Instead of declaring the data-uri attribute in the document, you can pass it as a command-line argument using -a data-uri .
|
== Videos
video::video_file.mp4[] video::video_file.mp4[width=640, start=60, options=autoplay]
video::rPQoq7ThGAU[youtube]
video::67480300[vimeo]
You can control the video settings using additional attributes and options on the macro. |
== Source Code
Reference code like `types` or `methods` inline.
Reference code like types
or methods
inline.
Indent the line one space to insert a code snippet
Indent the line one space to insert a code snippet
.... error: The requested operation returned error: 1954 Forbidden search for defensive operations manual absolutely fatal: operation initiation lost in the dodecahedron of doom would you like to die again? y/n ....
error: The requested operation returned error: 1954 Forbidden search for defensive operations manual absolutely fatal: operation initiation lost in the dodecahedron of doom would you like to die again? y/n
.Gemfile.lock ---- GEM remote: https://rubygems.org/ specs: asciidoctor (0.1.4) PLATFORMS ruby DEPENDENCIES asciidoctor (~> 0.1.4) ----
GEM remote: https://rubygems.org/ specs: asciidoctor (0.1.4) PLATFORMS ruby DEPENDENCIES asciidoctor (~> 0.1.4)
[source,ruby] .app.rb ---- require 'sinatra' get '/hi' do "Hello World!" end ----
require 'sinatra'
get '/hi' do
"Hello World!"
end
[source,ruby] ---- require 'sinatra' <1> get '/hi' do <2> "Hello World!" <3> end ---- <1> Library import <2> URL mapping <3> Content for response
require 'sinatra' (1)
get '/hi' do (2)
"Hello World!" (3)
end
1 | Library import |
2 | URL mapping |
3 | Content for response |
---- line of code // <1> line of code # <2> line of code ;; <3> ---- <1> A callout behind a line comment for C-style languages. <2> A callout behind a line comment for Ruby, Python, Perl, etc. <3> A callout behind a line comment for Clojure.
line of code (1) line of code (2) line of code (3)
1 | A callout behind a line comment for C-style languages. |
2 | A callout behind a line comment for Ruby, Python, Perl, etc. |
3 | A callout behind a line comment for Clojure. |
[source,xml] ---- <section> <title>Section Title</title> <!--1--> </section> ---- <1> The section title is required.
<section>
<title>Section Title</title> (1)
</section>
1 | The section title is required. |
[source,ruby] ---- include::app.rb[] ----
:sourcedir: src/main/java [source,java] ---- include::{sourcedir}/org/asciidoctor/Asciidoctor.java[] ----
[source,ruby,indent=0] ---- include::lib/document.rb[lines=5..10] ----
-
When
indent
is 0, the leading block indent is stripped (tabs are replaced with 4 spaces). -
When
indent
is > 0, the leading block indent is first stripped (tabs are replaced with 4 spaces), then a block is indented by the number of columns equal to this value.
[source,xml] <meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta name="viewport"
content="width=device-width, initial-scale=1.0">
====
Enabling the syntax highlighter
Syntax highlighting is enabled by setting the :source-highlighter: pygments The valid options for are |
More Delimited Blocks
.AsciiDoc history **** AsciiDoc was first released in Nov 2002 by Stuart Rackham. It was designed from the start to be a shorthand syntax for producing professional documents like DocBook and LaTeX. ****
Any block can have a title, positioned above the block. A block title is a line of text that starts with a dot. The dot cannot be followed by a space. |
.Sample document ==== Here's a sample AsciiDoc document: [listing] .... = Title of Document Doc Writer :toc: This guide provides... .... The document header is useful, but not required. ====
Here’s a sample AsciiDoc document:
= Title of Document Doc Writer :toc: This guide provides...
The document header is useful, but not required.
[NOTE] ==== An admonition block may contain complex content. .A list - one - two - three Another paragraph. ====
An admonition block may contain complex content. A list
Another paragraph. |
Admonition and callout icons
Asciidoctor can "draw" icons using Font Awesome and CSS. To use this feature, set the value of the |
[quote, Abraham Lincoln, Soldiers' National Cemetery Dedication] ____ Four score and seven years ago our fathers brought forth on this continent a new nation... ____ [quote, Albert Einstein] A person who never made a mistake never tried anything new. ____ A person who never made a mistake never tried anything new. ____
Four score and seven years ago our fathers brought forth on this continent a new nation…
Soldiers' National Cemetery Dedication
A person who never made a mistake never tried anything new.
A person who never made a mistake never tried anything new.
"I hold it that a little rebellion now and then is a good thing, and as necessary in the political world as storms in the physical." -- Thomas Jefferson, Papers of Thomas Jefferson: Volume 11
I hold it that a little rebellion now and then is a good thing, and as necessary in the political world as storms in the physical.
Papers of Thomas Jefferson: Volume 11
As a tip of the hat to Dick, Asciidoctor recognizes text between "air quotes" as a quote block. Air quotes are the best thing since fenced code blocks.
[, Richard M. Nixon] "" When the President does it, that means that it's not illegal. ""
"" When the President does it, that means that it’s not illegal. ""
++++ <p> Content in a passthrough block is passed to the output unprocessed. That means you can include raw HTML, like this embedded Gist: </p> <script src="http://gist.github.com/mojavelinux/5333524.js"> </script> ++++
Content in a passthrough block is passed to the output unprocessed. That means you can include raw HTML, like this embedded Gist:
-- An open block can be an anonymous container, or it can masquerade as any other block. -- [source] -- puts "I'm a source block!" --
An open block can be an anonymous container, or it can masquerade as any other block.
puts "I'm a source block!"
:version: 0.1.4 [source,xml] [subs="verbatim,attributes"] ---- <dependency> <groupId>org.asciidoctor</groupId> <artifactId>asciidoctor-java-integration</artifactId> <version>{version}</version> </dependency> ----
<dependency>
<groupId>org.asciidoctor</groupId>
<artifactId>asciidoctor-java-integration</artifactId>
<version>0.1.4</version>
</dependency>
Block Id, Role and Options
id
and role
[[goals]] [role="incremental"] * Goal 1 * Goal 2
id
and role
(Asciidoctor only)[#goals.incremental] * Goal 1 * Goal 2
|
id
) and role
[[free_the_world]][big goal]_free the world_
id
) and role
(Asciidoctor only)[#free_the_world.big.goal]_free the world_
[rolename]`escaped monospace text`
options
[options="header,footer,autowidth"] |=== |Cell A |Cell B |===
options
(Asciidoctor only)[%header%footer%autowidth] |=== |Cell A |Cell B |===
Comments
// A single-line comment.
Single-line comments can be used to divide elements, such as two adjacent lists. |
//// A multi-line comment. Notice it's a delimited block. ////
Tables
.Table Title |=== |Name of Column 1 |Name of Column 2 |Name of Column 3 (1) (2) |Cell in column 1, row 1 |Cell in column 2, row 1 |Cell in column 3, row 1 |Cell in column 1, row 2 |Cell in column 2, row 2 |Cell in column 3, row 2 |===
1 | Unless the cols attribute is specified, the number of columns is equal to the number of vertical bars on the first non-blank line inside the block delimiters. |
2 | When a blank line follows a single line of column titles, the column titles row will be styled as a header row by default. |
Name of Column 1 | Name of Column 2 | Name of Column 3 |
---|---|---|
Cell in column 1, row 1 |
Cell in column 2, row 1 |
Cell in column 3, row 1 |
Cell in column 1, row 2 |
Cell in column 2, row 2 |
Cell in column 3, row 2 |
[cols="2*", options="header"] (1) |=== |Name of Column 1 |Name of Column 2 |Cell in column 1, row 1 |Cell in column 2, row 1 |Cell in column 1, row 2 |Cell in column 2, row 2 |===
1 | The * in the cols attribute is the repeat operator. It means repeat the column specification for the remainder of columns. In this case, it means to repeat the default formatting across 4 columns. When the header row is not defined on a single line, you must use the cols attribute to set the number of columns and options attributes to make the first row a header. |
Name of Column 1 | Name of Column 2 |
---|---|
Cell in column 1, row 1 |
Cell in column 2, row 1 |
Cell in column 1, row 2 |
Cell in column 2, row 2 |
[cols="1,1,2", options="header"] (1) .Applications |=== |Name |Category |Description |Firefox |Browser |Mozilla Firefox is an open-source web browser. It's designed for standards compliance, performance, portability. |Arquillian |Testing |An innovative and highly extensible testing platform. Empowers developers to easily create real, automated tests. |===
1 | In this example, the cols attribute has two functions. It specifies that this table has three columns, and it sets their relative widths. |
Name | Category | Description |
---|---|---|
Firefox |
Browser |
Mozilla Firefox is an open-source web browser. It’s designed for standards compliance, performance, portability. |
Arquillian |
Testing |
An innovative and highly extensible testing platform. Empowers developers to easily create real, automated tests. |
[cols="2,2,5a"] |=== |Firefox |Browser |Mozilla Firefox is an open-source web browser. It's designed for: * standards compliance * performance * portability http://getfirefox.com[Get Firefox]! |===
Firefox |
Browser |
Mozilla Firefox is an open-source web browser. It’s designed for:
|
[format="csv", options="header"] |=== Artist,Track,Genre Baauer,Harlem Shake,Hip Hop The Lumineers,Ho Hey,Folk Rock |===
Artist | Track | Genre |
---|---|---|
Baauer |
Harlem Shake |
Hip Hop |
The Lumineers |
Ho Hey |
Folk Rock |
,=== Artist,Track,Genre Baauer,Harlem Shake,Hip Hop ,===
Artist | Track | Genre |
---|---|---|
Baauer |
Harlem Shake |
Hip Hop |
:=== Artist:Track:Genre Robyn:Indestructable:Dance :===
Artist | Track | Genre |
---|---|---|
Robyn |
Indestructable |
Dance |
[cols="e,m,^,>s", width="25%"] |=== |1 >s|2 |3 |4 ^|5 2.2+^.^|6 .3+<.>m|7 ^|8 |9 2+>|10 |===
1 |
2 |
3 |
4 |
5 |
|
|
|
8 |
|||
9 |
|
UI Macros
You must set the experimental attribute in the document header to enable these macros.
|
kbd
macro)|=== |Shortcut |Purpose |kbd:[F11] |Toggle fullscreen |kbd:[Ctrl+T] |Open a new tab |kbd:[Ctrl+Shift+N] |New incognito window |kbd:[Ctrl + +] |Increase zoom |===
Shortcut | Purpose |
---|---|
F11 |
Toggle fullscreen |
Ctrl+T |
Open a new tab |
Ctrl+Shift+N |
New incognito window |
Ctrl++ |
Increase zoom |
menu
macro)To save the file, select menu:File[Save]. Select menu:View[Zoom > Reset] to reset the zoom level to the default setting.
To save the file, select
.Select
to reset the zoom level to the default setting.btn
macro)Press the btn:[OK] button when you are finished. Select a file in the file navigator and click btn:[Open].
Press the OK button when you are finished.
Select a file in the file navigator and click Open.
Attributes and Substitutions
:homepage: http://asciidoctor.org :docslink: http://asciidoctor.org/docs[Asciidoctor's Docs] :desc: Asciidoctor is a mature, plain-text document format for + writing notes, articles, documentation, books, and more. + It's also a text processor & toolchain for translating + documents into various output formats (i.e., backends), + including HTML, DocBook, PDF and ePub. :checkedbox: pass:normal[`[✔]`] Check out {homepage}[Asciidoctor]! {desc} Check out {docslink} too! {checkedbox} That's done!
Check out Asciidoctor! Asciidoctor is a mature, plain-text document format for writing notes, articles, documentation, books, and more. It’s also a text processor & toolchain for translating documents into various output formats (i.e., backends), including HTML, DocBook, PDF and ePub. Check out Asciidoctor’s Docs too!
|
-
Attribute passed to the API or CLI that does not end in
@
-
Attribute defined in the document
-
Attribute passed to the API or CLI that ends in
@
-
Intrinsic attribute value (default values)
To make an attribute value that is passed to the API or CLI have a lower precedence than an assignment in the document, add an @ symbol to the end of the attribute value.
|
Attribute reference | Replacement | Rendered |
---|---|---|
\{lt} |
< |
< |
\{gt} |
> |
> |
\{amp} |
& |
& |
\{startsb} |
[ |
[ |
\{endsb} |
] |
] |
\{vbar} |
| |
| |
\{caret} |
^ |
^ |
\{asterisk} |
* |
* |
\{tilde} |
~ |
~ |
\{apostrophe} |
' |
' |
\{backslash} |
\ |
\ |
\{backtick} |
` |
` |
\{two-colons} |
:: |
:: |
\{two-semicolons} |
;; |
;; |
Attribute reference | Replacement | Rendered |
---|---|---|
\{empty} |
_nothing_ |
|
\{sp}, \{space} |
_single space_ |
|
\{nbsp} |
\  |
|
\{zwsp} |
\​ |
|
\{wj} |
\⁠ |
|
\{apos} |
\' |
' |
\{quot} |
\" |
" |
\{lsquo} |
\‘ |
‘ |
\{rsquo} |
\’ |
’ |
\{ldquo} |
\“ |
“ |
\{rdquo} |
\” |
” |
\{deg} |
\° |
° |
\{plus} |
\+ |
+ |
\{brvbar} |
\¦ |
¦ |
Attribute | Description |
---|---|
|
Calls the processor |
|
Version of the processor |
|
Backend used to render document |
|
Last modified date |
|
Last modified date and time |
|
Name of document directory |
|
Name of document file |
|
Last modified time |
|
The title of the document |
|
Document’s doctype (e.g., article) |
|
Local date when rendered |
|
Local date and time when rendered |
|
Local time when rendered |
none
|
Disables substitutions |
normal
|
Performs all substitutions except for callouts |
verbatim
|
Replaces special characters and processes callouts |
specialcharacters
|
Replaces |
quotes
|
Applies text formatting |
attributes
|
Replaces attribute references |
replacements
|
Substitutes textual and character reference replacements |
macros
|
Processes macros |
post_replacements
|
Replaces the line break character ( |
[caption=""] .Parts{counter2:index:0} |=== |Part Id |Description |PX-{counter:index} |Description of PX-{index} |PX-{counter:index} |Description of PX-{index} |===
Part Id | Description |
---|---|
PX-1 |
Description of PX-1 |
PX-2 |
Description of PX-2 |
Text Replacement
Name | Syntax | Unicode Replacement | Rendered | Notes |
---|---|---|---|---|
Copyright |
\(C) |
\© |
© |
|
Registered |
\(R) |
\® |
® |
|
Trademark |
\(TM) |
\™ |
™ |
|
Em dash |
\-- |
\— |
— |
When space is detected on either side of the em dash, the thin space numeric character entity ( |
ellipses |
\... |
\… |
… |
|
right single arrow |
\-> |
\→ |
→ |
|
right double arrow |
\=> |
\⇒ |
⇒ |
|
left single arrow |
\<- |
\← |
← |
|
left double arrow |
\<= |
\⇐ |
⇐ |
|
apostrophe |
Sam\'s |
Sam\’s |
Sam’s |
The vertical form apostrophe is replaced with the curved form apostrophe. |
Any named, numeric or hex XML entity reference is supported. |
Escaping Text
\*Stars* is not rendered as bold text. The asterisks around the word are preserved. \{author} is not resolved to the author name. The curly brackets around the word are preserved. The backslash character is automatically removed.
*Stars* is not rendered as bold text. The asterisks around the word are preserved.
{author} is not resolved to the author name. The curly brackets around the word are preserved.
The backslash character is automatically removed.
$$*Stars*$$ is not rendered as bold text. The asterisks around the word are preserved. $$&$$ renders as an XML entity instead of &.
*Stars* is not rendered as bold text. The asterisks around the word are preserved.
& renders as an XML entity instead of &.
+++<u>underline me</u>+++ renders as underlined text. pass:[<u>underline me</u>] also renders as underlined text.
underline me renders as underlined text.
underline me also renders as underlined text.
`Text in {backticks}` renders exactly as entered, in `monospace`. The attribute reference is not resolved.
Text in backticks
renders exactly as entered, in monospace
.
The attribute reference is not resolved.
Table of Contents (ToC)
= AsciiDoc Writer's Guide Doc Writer <[email protected]> v1.0, 2013-01-01 :toc:
= AsciiDoc Writer's Guide Doc Writer <[email protected]> v1.0, 2013-01-01 :toc: right
The ToC "title, levels, and positioning" can be customized. |
Bibliography
'The Pragmatic Programmer' <<prag>> should be required reading for all developers. [bibliography] - [[[prag]]] Andy Hunt & Dave Thomas. 'The Pragmatic Programmer: From Journeyman to Master'. Addison-Wesley. 1999. - [[[seam]]] Dan Allen. 'Seam in Action'. Manning Publications. 2008.
'The Pragmatic Programmer' [prag] should be required reading for all developers.
Footnotes
A statement.footnote:[Clarification about this statement.] A bold statement.footnoteref:[disclaimer,These opinions are my own.] Another bold statement.footenoteref:[disclaimer]
Markdown Compatibility
Markdown compatibility is only available by default in Asciidoctor. You can configure AsciiDoc (Python) to recognize this syntax by putting the AsciiDoc compatibility file from Asciidoctor in the same directory as the document being processed. |
# Document Title (Level 0) ## Section Level 1 ### Section Level 2 #### Section Level 3 ##### Section Level 4 ###### Section Level 5
Document Title (Level 0)
Section Level 1
Section Level 2
Section Level 3
Section Level 4
Section Level 5
```ruby require 'sinatra' get '/hi' do "Hello World!" end ```
require 'sinatra'
get '/hi' do
"Hello World!"
end
> I hold it that a little rebellion now and then is a good thing, > and as necessary in the political world as storms in the physical. > -- Thomas Jefferson, Papers of Thomas Jefferson: Volume 11
I hold it that a little rebellion now and then is a good thing, and as necessary in the political world as storms in the physical.
Papers of Thomas Jefferson: Volume 11
> > What's new? > > I've got Markdown in my AsciiDoc! > > > Like what? > > * Blockquotes > * Headings > * Fenced code blocks > > > Is there more? > > Yep. AsciiDoc and Markdown share a lot of common syntax already.
What’s new?
I’ve got Markdown in my AsciiDoc!
Like what?
Blockquotes
Headings
Fenced code blocks
Is there more?
Yep. AsciiDoc and Markdown share a lot of common syntax already.
--- - - - *** * * *
User Manual and Help
To learn more about Asciidoctor and its capabilities, check out the other Asciidoctor guides and its User Manual. Also, don’t forget to join the Asciidoctor mailing list, where you can ask questions and leave comments..= AsciiDoc Syntax Quick Reference Dan Allen; Sarah White v1.0.3, 2014-12-28 :description: This guide is a quick reference for the common formatting markup and document elements in the AsciiDoc syntax. :keywords: AsciiDoc, Asciidoctor, syntax, reference, cheatsheet :imagesdir: images :experimental: :table-caption!: :example-caption!: :figure-caption!: :idprefix: :idseparator: - :linkattrs: :docref: http://asciidoctor.org/docs :user-ref: http://asciidoctor.org/docs/user-manual :fontawesome-ref: http://fortawesome.github.io/Font-Awesome :icon-inline: http://asciidoctor.org/docs/user-manual/#inline-icons :icon-attribute: http://asciidoctor.org/docs/user-manual/#size-rotate-and-flip :video-ref: http://asciidoctor.org/docs/user-manual/#video :checklist-ref: http://asciidoctor.org/docs/user-manual/#checklists :list-marker: http://asciidoctor.org/docs/user-manual/#custom-markers :list-number: http://asciidoctor.org/docs/user-manual/#numbering-styles :imagesdir-ref: http://asciidoctor.org/docs/user-manual/#imagesdir :image-attributes: http://asciidoctor.org/docs/user-manual/#put-images-in-their-place :toc-ref: http://asciidoctor.org/docs/user-manual/#table-of-contents :para-ref: http://asciidoctor.org/docs/user-manual/#paragraph :literal-ref: http://asciidoctor.org/docs/user-manual/#literal-text-and-blocks :admon-ref: http://asciidoctor.org/docs/user-manual/#admonition :bold-ref: http://asciidoctor.org/docs/user-manual/#bold-and-italic :quote-ref: http://asciidoctor.org/docs/user-manual/#quotation-marks-and-apostrophes :sub-ref: http://asciidoctor.org/docs/user-manual/#subscript-and-superscript :mono-ref: http://asciidoctor.org/docs/user-manual/#monospace :css-ref: http://asciidoctor.org/docs/user-manual/#custom-styling-with-attributes :pass-ref: http://asciidoctor.org/docs/user-manual/#passthrough-macros :mailinglist: http://discuss.asciidoctor.org
AsciiDoc is a mature, lightweight markup language for authoring notes, articles, documentation, books, web pages, slide decks and man pages in plain text. This guide is a quick reference for the common formatting markup and document elements in the AsciiDoc syntax.
Several examples focus on the output generated by the HTML backend. AsciiDoc produces complementary output when generating DocBook. Most features labeled “Asciidoctor only” can be made available to the native AsciiDoc processor by using this AsciiDoc configuration file from the Asciidoctor project. |
Paragraphs
Paragraphs don't require any special markup in AsciiDoc. A paragraph is just one or more lines of consecutive text. To begin a new paragraph, separate it by at least one blank line.
Paragraphs don’t require any special markup in AsciiDoc. A paragraph is just one or more lines of consecutive text.
To begin a new paragraph, separate it by at least one blank line.
To preserve a line break, end the line in a space followed by a plus sign. + This results in a visible line break (e.g., `<br>`) between the lines.
To preserve a line break, end the line in a space followed by a plus sign.
This results in a visible line break (e.g., <br>
) between the lines.
A normal paragraph. A sequence of lines that begin with at least one space is a literal paragraph. Literal paragraphs are treated as preformatted text. The text is shown in a fixed-width font and endlines are preserved. Another normal paragraph.
A normal paragraph.
A sequence of lines that begin with at least one space is a literal paragraph. Literal paragraphs are treated as preformatted text. The text is shown in a fixed-width font and endlines are preserved.
Another normal paragraph.
NOTE: An admonition paragraph draws the reader's attention to auxiliary information. Its purpose is determined by the label at the beginning of the paragraph. Here are the other built-in admonition types: TIP: Pro tip... IMPORTANT: Don't forget... WARNING: Watch out for... CAUTION: Ensure that...
An admonition paragraph draws the reader’s attention to auxiliary information. Its purpose is determined by the label at the beginning of the paragraph. |
Here are the other built-in admonition types:
Pro tip… |
Don’t forget… |
Watch out for… |
Ensure that… |
You can also create admonition blocks. |
[.lead] This text will be styled as a lead paragraph (i.e., larger font).
This text will be styled as a lead paragraph (ie., larger font).
The default Asciidoctor stylesheet automatically styles the first paragraph of the preamble as a lead paragraph. |
Formatted Text
_italic phrase_ __i__talic le__tt__ers *bold phrase* **b**old le**tt**ers *_bold italic phrase_* **__b__**old italic le**__tt__**ers `monospace phrase` and le``tt``ers `_monospace italic phrase_` and le``__tt__``ers `*monospace bold phrase*` and le``**tt**``ers `*_monospace bold italic phrase_*` and le``**__tt__**``ers `+inline literal passthrough+` (monospace text without substitutions)
italic phrase
italic letters
bold phrase
bold letters
bold italic phrase
bold italic letters
monospace phrase
and lett
ers
monospace italic phrase
and lett
ers
monospace bold phrase
and lett
ers
monospace bold italic phrase
and lett
ers
inline literal passthrough
(monospace text without substitutions)
Do werewolves believe in [small]#small print#? [big]##O##nce upon an infinite loop.
Do werewolves believe in small print?
Once upon an infinite loop.
^super^script phrase ~sub~script phrase
superscript phrase
subscript phrase
'`single smart quotes`' "`double smart quotes`"
‘single smart quotes’
“double smart quotes”
Document Header
A header is optional. When you do add a header to your document, the only required element is a title. |
The header may not contain blank lines and must be offset from the content by at least one blank line. |
//toc::[] = My Document's Title My document provides...
= My Document's Title Doc Writer <[email protected]> My document provides...
= My Document's Title Doc Writer <[email protected]> v1.0, 2014-01-01 My document provides...
You cannot have a revision line without an author line. |
= My Document's Title Doc Writer <[email protected]> v1.0, 2014-01-01 :toc: :imagesdir: assets/images :homepage: http://asciidoctor.org