YAML can be used at the top of Markdown documents to add more structured data. Surround the YAML with two lines of consecutive dashes.- name: 'Venus' discoverer: 'Galileo Galilei' -.Venus. is the second planet from the Sun, orbiting it every 224.7 Earth days.
- Yaml Cheat Sheet Pdf
- Yaml List Syntax
- Yaml Syntax Cheat Sheet Answers
- Yaml File Syntax
- Yaml Syntax Online
- Yaml Syntax Cheat Sheet Download
A cheat sheet and full specification are available at the official site. The following is a synopsis of the basic elements. YAML accepts the entire Unicode character set, except for some control characters, and may be encoded in any one of UTF-8, UTF-16 or UTF-32. (Though UTF-32 is not mandatory, it is required for a parser to have JSON compatibility.). This Markdown cheat sheet provides a quick overview of all the Markdown syntax elements. It can’t cover every edge case, so if you need more information about any of these elements, refer to the reference guides for basic syntax and extended syntax. These are the elements outlined in John Gruber’s original design document.
Markdown
Paragraphs
Separate paragraphs with a blank line.
Start each heading with one or more hashes, followed by a space.
*
— ItalicWrap the words in single asterisks.
Wrap the words in double asterisks.
-
— Unordered listStart each line with a dash and a space.
Indent before the dash for nested lists.
Start each line with a number, period & space.
Indent before the number for nested lists.
[]()
— Link[]
— link text inside square brackets.()
— link URL inside round brackets.
Start with an exclamation point.
[]
— alt text inside square brackets.()
— image URL inside round brackets.
---
— Horizontal ruleThree consecutive dashes on a single line.
Surround code inside other text with single backticks.
```
— Code blockStart a line with three backticks to make a code block.
End the code block with three more backticks on their own line.
Optionally specify the code language after the opening backticks.
Non standard. Start a list and used square brackets with a space to denote a task.
Put an “x” between the square brackets to mark it as complete.
YAML
Always indent with two spaces.
Start with a term, no spaces, followed by a colon and a space.
Indent to create nested objects.
- value
— ArraysStart with a dash, and a space.
Arrays inside objects:
Objects inside arrays.
Surround text with quotes (double or single) to escape text.
In all the previous examples the quotes aren’t really necessary. But I find myself almost always adding them for clarity and to prevent myself from having to think about whether I need to escape the or not.
>
— Folded text blockStart with a greater than, and indent the next lines.
The text will be collapsed into a single line when parsed.
Start with a vertical pipe, and indent the next lines.
The text will keep its multiple lines when parsed.
---
— Front matterYAML can be used at the top of Markdown documents to add more structured data.
Surround the YAML with two lines of consecutive dashes.
DocFX supports DocFX Flavored Markdown
, aka DFM. It supports all GitHub Flavored Markdown syntax and compatible with CommonMark. Also, DFM adds new syntax to support additional functionalities, including cross reference and file inclusion.
Yaml Cheat Sheet Pdf
Note
The default markdown engine generated by docfx init
has been switched to markdig engine, which is built on the top of markdig. Previous markdown engine dfm
and dfm-latest
will be kept for compatibiilty.
Yaml Header
Yaml header in DFM is considered as the metadata for the Markdown file. It will transform to yamlheader
tag when processed.Yaml header MUST be the first thing in the file and MUST take the form of valid YAML set between triple-dashed lines. Here is a basic example:
Cross Reference
Cross reference allows you to link to another topic by using its unique identifier (called UID) instead of using its file path.
For conceptual Markdown files UID can be defined by adding a uid
metadata in YAML header:
For reference topics, UIDs are auto generated from source code and can be found in generated YAML files.
You can use one of the following syntax to cross reference a topic with UID defined:
- Markdown link:
[link_text](xref:uid_of_the_topic)
- Auto link:
<xref:uid_of_the_topic>
- Shorthand form:
@'uid_of_the_topic'
All will render to:
If link_text
is not specified, DocFX will extract the title from the target topic and use it as the link text.
Do not use the @uid
link in brackets (like this: (@uid)
). DocFX cannot parse this link. The @uid
link should be separated with white spaces. If you need to add a link in brackets, use [](xref:uid)
.
Note
Hashtag in xref
is always treated as separator between file name and anchor name. That means if you have #
in UID, it hasto be encoded to %23
.
Actually xref
format follows URI standard so all reserved characters should be encoded.
For more information, see cross reference.
File Inclusion
DFM adds syntax to include other file parts into current file, the included file will also be considered as in DFM syntax.
There are two types of file inclusion: Inline and block, as similar to inline code span and block code.
Note
YAML header is NOT supported when the file is an inclusion.
Inline
Inline file inclusion is in the following syntax, in which <title>
stands for the title of the included file, and <filepath>
stands for the file path of the included file. The file path can be either absolute or relative.<filepath>
can be wrapped by '
or '
.
Note
Yaml List Syntax
For inline file inclusion, the file included will be considered as containing only inline tags, for example,### header
inside the file will not transfer since <h3>
is a block tag, while [a](b)
will transform to<a href='b'>a</a>
since <a>
is an inline tag.Also, ending white spaces will be trimmed, considering ending white spaces in inline inclusion in most cases are typos.
Block
Block file inclusion must be in a single line and with no prefix characters before the start [
. Content inside the included file will transform using DFM syntax.
Section definition
User may need to define section. Mostly used for code table.Give an example below.
The above blockquote Markdown text will transform to section html as in the following:
Code Snippet
Allows you to insert code with code language specified. The content of specified code path will expand.
<language>
can be made up of any number of character and '-'. However, the recommended value should follow Highlight.js language names and aliases.<codepath>
is the path relative to the file containing this markdown content in file system, which indicates the code snippet file that you want to expand.<queryoption>
and<queryoptionvalue>
are used together to retrieve part of the code snippet file in the line range or tag name way. We have 2 query string options to represent these two ways:
query string using # | query string using ? | |
---|---|---|
1. line range | #L{startlinenumber}-L{endlinenumber} | ?start={startlinenumber}&end={endlinenumber} |
2. tagname | #{tagname} | ?name={tagname} |
3. multiple region range | Unsupported | ?range={rangequerystring} |
4. highlight lines | Unsupported | ?highlight={rangequerystring} |
5. dedent | Unsupported | ?dedent={dedentlength} |
- In
?
query string, the whole file will be included if none of the first three option is specified. - If
dedent
isn't specified, the maximum common indent will be trimmed automatically. <title>
can be omitted as it doesn't affect the DocFX markup result, but it can beautify the result of other Markdown engine, like GitHub Preview.
Code Snippet Sample
Tag Name Representation in Code Snippet Source File
DFM currently supports the following <language>
values to be able to retrieve by tag name:
- C family
- Start with:
// <{name}>
- End with:
// </{name}>
- Languages:actionscript,arduino,assembly (alias: nasm),c (alias: cpp, c++, objective-c, obj-c, objc, objectivec),csharp (alias: cs),cshtml,cuda,d (alias: dlang),fsharp (alias: fs),go (alias: golang),java,javascript (alias: js, node),pascal,php,processing,rust,scala,smalltalk,swift,typescript (alias: ts)
- File extensions:.as,.asm,.ino,.c,.cc,.cpp,.cs,.cshtml.cu,.cuh,.d,.fs,.fsi,.fsx,.go,.h,.hpp,.java,.js,.pas,.php,.pde,.rs,.scala,.st,.swift,.ts
- Start with:
- Basic family
- Start with:
' <{name}>
- End with:
' </{name}>
- Languages:vb,vbhtml,vbnet,vbscript
- File extensions:.bas,.vb,.vba,.vbhtml,.vbs
- Start with:
- Markup language family
- Start with:
<!-- <{name}> -->
- End with:
<!-- </{name}> -->
- Languages:cshtml,html,vbhtml,wsdl,xml,xsl,xslt,xsd,xaml
- File extensions:.asp,.aspx,.csdl,.cshtml,.edmx,.jsp,.vbhtml,.wsdl,.xaml,.xml,.xsd,.xsl,.xslt,.html
- Start with:
- Sql family
- Start with:
-- <{name}>
- End with:
-- </{name}>
- Languages:sql
- File extensions:.sql
- Start with:
- Script family
- Start with:
# <{name}>
- End with:
# </{name}>
- Languages:perl,powershell (alias: posh),python,r,ruby (alias: ru),shell (alias: sh, bash)
- File extensions:.bash,.pl,.ps1,.py,.r,.ru,.ruby,.sh
- Start with:
- Special language
- batchfile
- Start with:
rem <{name}>
- End with:
rem </{name}>
- Languages:batchfile
- File extensions:.bat.cmd
- Start with:
- csharp
- Start with:
#region {name}
- End with:
#endregion
- Languages:csharp (alias: cs)
- File extensions:.cs.cshtml
- Start with:
- erlang
- Start with:
% <{name}>
- End with:
% </{name}>
- Languages:erlang
- File extensions:.erl
- Start with:
- haskell
- Start with:
-- <{name}>
- End with:
-- </{name}>
- Languages:haskell
- File extensions:.hs
- Start with:
- matlab
- Start with:
% <{name}>
- End with:
% </{name}>
- Languages:matlab
- File extensions:.matlab
- Start with:
- lisp
- Start with:
; <{name}>
- End with:
; </{name}>
- Languages:lisp
- File extensions:.lisp,.lsp
- Start with:
- lua
- Start with:
-- <{name}>
- End with:
-- </{name}>
- Languages:lua
- File extensions:.lua
- Start with:
- vb
- Start with:
#Region {name}
- End with:
#End Region
- Languages:vb (alias: vbnet)
- File extensions:.vb.vbhtml
- Start with:
- batchfile
Note
If dev-lang is not specified, file extension will be used to determine the language.
Code Snippet for Jupyter Notebooks
Allows you to insert code from a code cell of a Jupyter Notebook. The source
content in the specified code cell will expand.
Steps to use this:
In your Jupyter Notebook, add metadata to the code cell you will reference:
In your .md file, use
name
to identify the cell.
Code Snippet for Jupyter Notebooks Sample
For this Jupyter Notebook cell:
Use the markup:
to display the lines of code in the source
part of the cell:
Note (Warning/Tip/Important)
Using specific syntax inside block quote to indicate the following content is Note.
The above content will be transformed to the following html:
Here are all the supported note types with the styling of the default theme applied:
Note
This is a note which needs your attention, but it's not super important.
Tip
This is a note which needs your attention, but it's not super important.
Warning
This is a warning containing some important message.
Yaml Syntax Cheat Sheet Answers
Important
This is a warning containing some important message.
Caution
This is a warning containing some important message.
Yaml File Syntax
Tabbed content
Syntax
- Start a tab by a special markdown title (any level).
- Title content should be a markdown link.
- Link target is
#tab/{tabid}
or#tab/{tabid}/{condition}
- Continue by any other content.
- End by a markdown hr.
Example
The result will be:
Tab group 1:
Tab content-1-1.
Tab content-2-1.
Tab group 2:
Tab content-a-1.
Tab content-b-1.
Tab group 3:
Tab content-1-1.
Tab content-2-1.
Tab group 4:
Tab content-a-2.
Tab content-b-2.
Behavior
Tab groups with a same set of id are linkable in one page.
In example, tab group 1, 3 have same id set: tabid-1
, tabid-2
, tab group 2, 4 have same id set: tabid-a
, tabid-b
.
So tab group 1, 3 are linked, tab group 2, 4 are linked.When tab tabid-1
in tab group 1 is clicked, tab tabid-1
in tab group 3 will be selected in same time.But tab group 2, 4 do not have any changed.
Condition
Condition is the tab id of other table groups.
e.g.:
Result:
Tab Group 1:
Tab Group 2:
Tab content-a for 1.
Tab content-a for 2.
Tab content-b for 1.
Tab content-b for 2.
When select tabid-1
in tab group 1, you can get content-a or content-b for 1 in group 2.
When select tabid-2
in tab group 1, you can get content-a or content-b for 2 in group 2.
Video
Allows you to add videos to your topics.
Syntax:
Note
You must provide the embed uri of the video you wish to add to your topic.
Example:
Result:
Differences introduced by DFM syntax
Warning
DFM introduces more syntax to support more functionalities. When GFM does not support them, preview theMarkdown file inside GFM Preview can lead to different results.
YAML header
In GFM, YAML header must start at the very beginning of the Markdown file.In DFM, YAML header contains more powerful meanings. Refer to Yaml Header for details.
In GFM, it would be rendered as <hr>a: b<hr>
.
In DFM, it would be rendered as a YAML header.
If you want to get <hr>
in html in DFM, use:
or change content to make it not in YAML format:
Text after block extension
Some block extension in DFM cannot be recognized in GFM.In GFM, it would be treated as a part of paragraph.Then, following content would be treated as a part of paragraph.
For example:
Yaml Syntax Online
In GFM, it will be rendered as a paragraph with content [!NOTE] This is code.
in blockquote.
In DFM, it will be rendered as a code in note.