Markdown++ Cheatsheet
This cheatsheet is designed to be a reference for quickly discovering the many ways in which you can use Markdown and Markdown++ to organize your content for easy content creation, reuse, and publishing.
Since Markdown++ is designed to be fully backward compatible with Markdown, each section is divided into a Markdown part and a Markdown++ part, allowing users to focus on writing and productivity rather than the issues of content architecture, reuse, and publishing.
Titles
Markdown considers Title and Heading 1 paragraphs to be the most significant paragraphs within a file.
Title paragraphs are one way to attribute the most important heading paragraph in a file, however they are not required.
Markdown Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
Text for Title
===
|
Text for Title |
Title 1 |
Paragraph |
Text for Title
---
|
Text for Title |
Title 2 |
Paragraph |
Titles with Markdown++
Examples of using Markdown++ to add additional paragraph information to your Markdown title syntax such as a style name, a custom alias that can be linked to, one or more markers, and a hidden comment that passes through to the generated output.
Markdown++ Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
<!--style:CustomTitle-->
Text for Title
=====
|
Text for Title |
CustomTitle |
Paragraph |
<!--style:CustomTitle; #CustomAlias; pass-through comment-->
Title with linkable custom alias
==========================
|
Title with linkable custom alias |
CustomTitle |
Paragraph |
<!--style:CustomTitle; markers:{"TopicAlias":"TopicID","Keywords":"Word1"}-->
Title with markers
==================
|
Title with markers |
CustomTitle |
Paragraph |
Headings
Heading paragraphs are the traditional way to organize hierarchical paragraphs within a markdown file. If Title paragraphs are not used, then the Heading 1 paragraph would be the most significant in the file.
Markdown Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
# Heading
|
Heading |
Heading 1 |
Paragraph |
## Heading
|
Heading |
Heading 2 |
Paragraph |
### Heading
|
Heading |
Heading 3 |
Paragraph |
#### Heading
|
Heading |
Heading 4 |
Paragraph |
##### Heading
|
Heading |
Heading 5 |
Paragraph |
###### Heading
|
Heading |
Heading 6 |
Paragraph |
Headings with Markdown++
Examples of using Markdown++ to add additional paragraph information to your markdown heading syntax such as a style name, a custom alias that can be linked to, one or more markers, and a hidden comment that passes through to the generated output.
Markdown++ Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
<!--style:Procedure Title-->
# Heading
|
Heading |
Procedure Title |
Paragraph |
<!--style:Section Title; markers:{"TopicAlias":"TopicID", "Keywords":"Word1,Word2", "Description":"Summary text"}-->
# Heading
|
Heading |
Section Title |
Paragraph |
Paragraphs and Line Breaks
Naturally create paragraphs using one more more lines of text followed by a blank line. Do not indent paragraphs with spaces or tabs unless you intend to nest them as part of a list structure. This is the most common type of paragraph in a file.
Markdown Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
One or more lines of text followed by a blank line
|
One or more lines of text followed by a blank line
⏎ |
Paragraph |
Paragraph |
Force a line break
using one or more white spaces at the end of the line
|
Force a line break⏎
using one or more white spaces at the end of the line |
Paragraph |
Paragraph |
Embed a line break using the HTML<br />
element
|
Embed a line break using the HTML⏎
element |
Paragraph |
Paragraph |
Paragraphs with Markdown++
Examples of using Markdown++ to add additional paragraph information to your markdown paragraph syntax such as a style name, a custom alias that can be linked to, one or more markers, and a hidden comment that passes through to the generated output.
Markdown++ Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
<!--style:Unique-->
Paragraph with unique style name.
|
Paragraph with unique style name |
Unique |
Paragraph |
<!--style:Unique; #CustomAlias-->
Paragraph with linkable custom alias
|
Paragraph with linkable custom alias |
Unique |
Paragraph |
<!--style:Unique; markers:{"TopicAlias":"TopicID"}-->
Paragraph with marker
|
Paragraph with marker |
Unique |
Paragraph |
Lists
Use list structures to organize paragraphs into unordered or ordered lists.
To create an unordered list, add dashes (-), asterisks (*), or plus signs (+) in front of line items.
To create an ordered list, add line items with numbers followed by a period and then a space. The exact numerical value is not important as it will be calculated when rendered
Use indentation to nest paragraphs, other lists, or tables within lists.
Markdown Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
- First item
- Second item
- Third item
|
- First item
- Second item
- Third item
|
UList,
UList Item,
UList Paragraph |
Paragraph,
Paragraph,
Paragraph |
* First item
* Second item
- Indented item
- Indented item
|
- First item
- Second item
- Indented item
- Indented item
|
UList,
UList Item,
UList Paragraph |
Paragraph,
Paragraph,
Paragraph |
+ First item
* Second item
- Third item
* Fourth item
|
|
UList,
UList Item,
UList Paragraph |
Paragraph,
Paragraph,
Paragraph |
1. First item
1. Second item
1. Third item
|
- First item
- Second item
- Third item
|
OList,
OList Item,
OList Paragraph |
Paragraph,
Paragraph,
Paragraph |
1. First item
1. Second item
1. Third item
1. Fourth item
|
- First item
- Second item
- Third item
- Fourth item
|
OList,
OList Item,
OList Paragraph |
Paragraph,
Paragraph,
Paragraph |
1. First item
- Second item
- Third item
1. Fourth item
|
- First item
- Fourth item
|
OList,
OList Item,
OList Paragraph,
UList,
UList Item,
UList Paragraph |
Paragraph,
Paragraph,
Paragraph,
Paragraph,
Paragraph,
Paragraph |
- First item
Nested paragraph
- Second item
|
- First item
Nested paragraph - Second item
|
UList,
UList Item,
UList Paragraph
Paragraph |
Paragraph,
Paragraph,
Paragraph,
Paragraph |
Lists with Markdown++
Examples of using Markdown++ to add additional information to your markdown list syntax such as unique style name(s).
Markdown++ Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
<!--style:UniqueList-->
- First item
- Second item
- Third item
|
- First item
- Second item
- Third item
|
UniqueList,
UniqueList Item,
UniqueList Paragraph |
Paragraph,
Paragraph,
Paragraph |
- <!--style:Unique-->
First item
- <!--style:Unique-->
Second item
- Third item
|
- First item
- Second item
- Third item
|
UList,
UList Item,
UList Unique,
UList Paragraph |
Paragraph,
Paragraph,
Paragraph,
Paragraph |
<!--style:UniqueList-->
1. First item
1. Second item
1. Third item
|
- First item
- Second item
- Third item
|
UniqueList,
UniqueList Item,
UniqueList Paragraph |
Paragraph,
Paragraph,
Paragraph |
<!--style:UniqueList-->
1. <!--style:Unique-->
First item
1. <!--style:Unique-->
Second item
|
- First item
- Second item
- Third item
|
UniqueList,
UniqueList Item,
UniqueList Unique |
Paragraph,
Paragraph,
Paragraph |
Code
There are two ways to create code paragraphs in Markdown.
Code Block: indent every line with at least four white space characters
Code Fence: first and last lines contain three consequtive backtick characters.
Code paragraphs have the unique characteristic of preserving white space and not requiring an escape sequence to render characters that have special meaning in markdown.
Markdown Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
var int x, y, z;
z = 3*x + 4*y
|
var int x, y, z;
z = 3*x + 4*y
|
Code Block |
Paragraph |
```
var int x, y, z;
z = 3*x + 4*y
```
|
var int x, y, z;
z = 3*x + 4*y
|
Code Fence |
Paragraph |
- List with nested Code Fence
```
var int x, y, z;
z = 3*x + 4*y
```
|
|
UList,
UList Item,
UList Paragraph,
Code Fence |
Paragraph, Paragraph, Paragraph, Paragraph |
Blockquotes
To create a blockquote place a greater-than (>) character followed by a white space at the beginning of one or more consequtive lines.
Markdown Syntax |
Generated Output |
ePublisher Style(s) |
Type(s) |
> Abrahim Lincoln said:
> Four score and seven years ago...
|
Abrahim Lincoln said:
Four score and seven years ago... |
Blockquote |
Paragraph |
> My original email
>> Your first reply
>>> My reply to your reply
|
My original email
Your first reply
My reply to your reply |
Blockquote |
Paragraph |
- List with blockquote
> blockquote here
> second line of blockquote
|
- List with blockquote
blockquote here
second line of blockquote
|
Blockquote |
Paragraph |
Horizontal Rules
To seperate paragraphs with a solid line, you can place three or more hyphens, dashes, or underscores (-
, \*
, or \_
) together on a line by themselves.
Markdown Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
---
|
|
Horizontal Rule |
Paragraph |
***
|
|
Horizontal Rule |
Paragraph |
___
|
|
Horizontal Rule |
Paragraph |
HTML
To use HTML code directly within your source content, just start and end the HTML code with matching start and end tags. For example:
<h1>Hello World!</h1>
Markdown Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
<iframe
width="165"
height="90"
src="https://www.youtube.com/embed/D4QoQWboM-U"
frameborder="0"
allow="accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture"
allowfullscreen>
</iframe>
|
|
HTML |
Paragraph |
Tables
Use table structures to organize column information. In markdown, tables are easy to create and can organize paragraphs into one or more columns with a heading row and one or more body rows.
Markdown Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
|Cell Head1|Cell Head2|
|----------|----------|
|Cell Body1|Cell Body2|
|
Cell Head1 | Cell Head2 |
---|
Cell Body1 | Cell Body2 |
|
Default,
Table Cell Head,
Table Cell Body |
Table,
Paragraph,
Paragraph
|
- List item with nested table
|Cell Head1|Cell Head2|
|----------|----------|
|Cell Body1|Cell Body2|
|
- List item with nested table
Cell Head1 | Cell Head2 |
---|
Cell Body1 | Cell Body2 |
|
UList,
UList Item,
UList Paragraph,
Default,
Table Cell Head,
Table Cell Body |
Paragraph,
Paragraph,
Paragraph,
Table,
Paragraph,
Paragraph
|
|Default Alignment|
|-----------------|
|Body|
|
|
Default,
Table Cell Head,
Table Cell Body |
Table,
Paragraph,
Paragraph
|
|Left Alignment|
|:-------------|
|Body|
|
|
Default,
Table Cell Head,
Table Cell Body |
Table,
Paragraph,
Paragraph
|
|Center Alignment|
|:--------------:|
|Body|
|
|
Default,
Table Cell Head,
Table Cell Body |
Table,
Paragraph,
Paragraph
|
|Right Alignment|
|-------------:|
|Body|
|
|
Default,
Table Cell Head,
Table Cell Body |
Table,
Paragraph,
Paragraph
|
Tables with Markdown++
Examples of using Markdown++ to assign a unique style name to your tables.
Markdown++ Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
<!--style:Unique-->
|Cell Head1|Cell Head2|
|----------|----------|
|Cell Body1|Cell Body2|
|
Cell Head1 | Cell Head2 |
---|
Cell Body1 | Cell Body2 |
|
Unique,
Unique Cell Head,
Unique Cell Body |
Table,
Paragraph,
Paragraph
|
Inline Text
To add style to one or more characters of text, use the *, _, ~, or ` characters both before and after the text.
Markdown Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
**Bold text**
|
Bold text |
Bold |
Character |
*Italic text*
|
Italic text |
Italic |
Character |
~~Strikethrough text~~
|
Strikethrough text |
Strikethrough |
Character |
`Embedded code`
|
Embedded code |
Code |
Character |
**Bold *nested italic* text**
|
Bold nested italic text |
Bold,
Italic |
Character,
Character |
__Alternate Bold text__
|
Alternate bold text |
Bold |
Character |
_Alternate Italic text_
|
Alternate italic text |
Italic |
Character |
Inline Text with Markdown++
Examples of using Markdown++ to assign a unique style name to your inline text.
Markdown++ Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
<!--style:CustomBold-->**Bold**
|
Bold |
CustomBold |
Character |
Images
To insert an image into your source content use the following pattern to describe the path to your image, its alternate text, and its title text.
![<Alt text>](<Path> "Title text")
Markdown Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
![logo](images/logo.png "Logo")
|
|
Image |
Graphic |
Images with Markdown++
Examples of using Markdown++ to assign a unique style name to your image.
Markdown++ Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
<!--style:CustomImage-->![logo](images/logo.png "Logo")
|
|
CustomImage |
Graphic |
Aliases
There are two kinds of aliases used in Markdown++ for resolving link destinations.
Heading Aliases: created automatically for markdown heading paragraphs using the paragraph text.
Automatic generation convention:
All text is converted to lowercase
All non-word text (such as punctuation or HTML) is removed
All spaces are converted to hyphens
Two or more hyphens in a row are converted to one
If a header with the same ID has already been generated, a unique incrementing number is appended, starting at "1"
Custom Aliases (Markdown++) which are manually inserted into your content as follows:
<!--#CustomAlias-->
Markdown++
Custom Aliases are recommended over
Heading Aliases unless your heading text is guaranteed to remain static (unchanged) over time.
Markdown++ Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
<!--#CustomAlias-->
|
|
N/A |
N/A |
<!--style:Procedure Title; #CustomAlias-->
# Heading
|
Heading |
Procedure Title |
Paragraph |
Links
There are two types of links that can be created in markdown.
Link within the same or to a different markdown file
[Link text](<Path>#<Optional Fragment> "Title Text")`
Link to a web address
[Link text](https://www.webworks.com/ "webworks website")
Markdown Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
[My Link](#MyAnchor "Title")
|
My Link |
Link |
Character |
[My Link](topics/file.md#MyAnchor "Title")
|
My Link |
Link |
Character |
[My Link](https://www.webworks.com/ "WebWorks")
|
My Link |
Link |
Character |
<https://www.webworks.com/>
|
https://www.webworks.com/ |
Link |
Character |
[Reverb Runtime Context Link](#context/<TopicID> "Title")
|
Reverb Runtime Context Link |
Link |
Character |
[Reverb Runtime Search Link](#search/<Words> "Search for Words")
|
Reverb Runtime Search Link |
Link |
Character |
Links with Markdown++
Assigning a custom ePublisher style name to the link text.
Markdown++ Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
[<!--style:CustomLink-->*Link text*](topics/file.md#MyAnchor "Title")
|
My Link |
CustomLink |
Character |
Link References
A link reference is a link created using a link key enclosed in brackets: [<Link Key>]
. Then somewhere else in the file the link key is used with a :
character to supply the actual link path and fragment.
Markdown Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
[<Link Text>][<Link Key>]
|
<Link Text> |
Link |
Character |
[<Link Key>]: topics/file.md#fragment "Title"
|
|
Link,
Paragraph |
Character,
Paragraph |
Footnotes
Footnotes use a sequential key enclosed in brackets, such as: [^1]
. Then somewhere else in the file the footnote key is used with a :
character to define the footnote content.
Markdown Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
quick brown fox[^1]
|
quick brown fox1 |
Footnote Reference,
Paragraph |
Character,
Paragraph |
[^1]: Foxes are red.
|
1Foxes are red. |
Paragraph |
Paragraph |
Footnotes with Markdown++
Assigning a custom style name to the footnote definition paragraph.
Markdown++ Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
[^1]: <!--style:CustomParagraph-->
Foxes are red.
|
1Foxes are red. |
CustomParagraph |
Paragraph |
Escape Character (\)
The escape character is the backslash character: \, which allows you to quickly disable special handling of reserve characters such as, *
, #
, |
, <
, and \.
Markdown Syntax |
Generated Output |
ePublisher Style Name(s) |
Style Type(s) |
\* not a bullet
|
* not a bullet |
N/A |
N/A |
Markers
A markers command allows you to insert one or more meta data name/value pairs at a specific location in your source content files. Then during the publication process, the meta data can be used to enable functionality or characteristics in the generated output.
Markdown Syntax |
ePublisher Style Name(s) |
Style Type(s) |
<!--markers:{"Keywords": "word1, word2"}-->
|
Keywords |
Marker |
<!--markers:{"Description": "Topic summary here"}-->
|
Description |
Marker |
<!--markers:{"TopicAlias": "TopicID"}-->
|
TopicAlias |
Marker |
Includes
An include command allows you to include the Markdown++ source content from another file into your current source file. If your <Path>
is relative, it should be relative to the file that includes it.
Includes Syntax
<!--include:<Path>-->
Conditions
A condition command allows you to delineate a chunk of content so that its inclusion in the final output can be controlled by ePublisher using the names of conditions and setting their value to Hidden or Visible.
Conditions Syntax
Single Condition
<!--condition:<ConditionName>-->
Conditional content here.
<!--/condition-->
Require Multiple Conditions (Logical AND)
<!--condition: OnlineOnly Version1-->
Conditional content that is visible only when both conditions are set to visible in ePublisher.
<!--/condition-->
One of Multiple Conditions (Logical OR)
<!--condition: OnlineOnly, PrintOnly-->
Conditional content that is visible when at least one of the conditions is set to visible in ePublisher.
<!--/condition-->
Using Logical Not (!) Character
<!--condition: !PrintOnly !OnlineOnly-->
Conditional content that is visible when the PrintOnly and OnlineOnly conditions are set to hidden.
<!--/condition-->
Variables
A variable can be used as a placeholder in your source content that will be set to a specific value by ePublisher when generating output. Variables are preceeded with the character: $
and ended with the character: ;
. You can use them as text in your source content as well as in your markers.
Variables Syntax
Text with variable: $ProductName;
Variables are for use with chunks of single line text and their values in ePublisher cannot include other variables or Markdown++ commands.