Guide to using Markdown on RFC Hub

This document contains most of the Markdown formatting that can be used on RFC Hub. It is essentially GitHub Flavored Markdown but there are a few edge-cases that can lead to differences in rendering. Major differences include not being able to embed any HTML and that images must be uploaded using the RFC Editor.

Headers #

Headers are used to define different sections of your RFC. Note that the title of your RFC is always displayed at the top of the document so there's no reason to repeat it within the RFC itself.

Hovering over a header will display an octothorpe (#) character. Clicking it will scroll to the header and add an anchor to the current URL. Sharing this new URL with others will link them directly to that heading.

# h1 Heading
## h2 Heading
### h3 Heading
#### h4 Heading
##### h5 Heading
###### h6 Heading

These lesser common heading formats are also accepted:

Alt-H1
======

Alt-H2
------

h1 Heading #

h2 Heading #

h3 Heading #

h4 Heading #

h5 Heading #
h6 Heading #

These lesser common heading formats are also accepted:

Alt-H1 #

Alt-H2 #

Markdown Alerts #

> [!NOTE]
> Highlights information that users should take into account, even when skimming.

> [!TIP]
> Optional information to help a user be more successful.

> [!IMPORTANT]
> Crucial information necessary for users to succeed.

> [!WARNING]
> Critical content demanding immediate user attention due to potential risks.

> [!CAUTION]
> Negative potential consequences of an action.

Note

Highlights information that users should take into account, even when skimming.

Tip

Optional information to help a user be more successful.

Important

Crucial information necessary for users to succeed.

Warning

Critical content demanding immediate user attention due to potential risks.

Caution

Negative potential consequences of an action.

Emphasis #

Emphasis, aka italics, with *asterisks* or _underscores_.

Strong emphasis, aka bold, with **asterisks** or __underscores__.

Combined emphasis with **asterisks and _underscores_**.

Strikethrough uses two tildes. ~~Scratch this.~~

**This is bold text**

__This is bold text__

*This is italic text*

_This is italic text_

~~Strikethrough~~

Emphasis, aka italics, with asterisks or underscores.

Strong emphasis, aka bold, with asterisks or underscores.

Combined emphasis with asterisks and underscores.

Strikethrough uses two tildes. Scratch this.

This is bold text

This is bold text

This is italic text

This is italic text

Strikethrough

Lists #

1. First ordered list item
2. Another item
    * Unordered sub-list
    * Use four spaces for proper rendering
1. The actual number itself isn't too important 
    1. Ordered sub-list
4. And another item.

    You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces.

    To have a line break without a paragraph, you will need to use two trailing spaces.  
    Note that this line is separate, but within the same paragraph.  
    (This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)

* Unordered list can use asterisks
- Or minuses
+ Or pluses, but when adjacent they form a new list

1. Make my changes
    1. Fix bug
    2. Improve formatting
        - Make the headings bigger
2. Push my commits to GitHub
3. Open a pull request
    * Describe my changes
    * Mention all the members of my team
        * Ask for feedback

+ Create a list by starting a line with `+`, `-`, or `*`
+ Sub-lists are made by indenting 2 spaces:
  - Marker character change forces new list start:
    * Ac tristique libero volutpat at
    + Facilisis in pretium nisl aliquet
    - Nulla volutpat aliquam velit
+ Very easy!
  1. First ordered list item

  2. Another item

    • Unordered sub-list
    • Use four spaces for proper rendering
  3. The actual number itself isn't too important

    1. Ordered sub-list
  4. And another item.

    You can have properly indented paragraphs within list items. Notice the blank line above, and the leading spaces.

    To have a line break without a paragraph, you will need to use two trailing spaces.
    Note that this line is separate, but within the same paragraph.
    (This is contrary to the typical GFM line break behaviour, where trailing spaces are not required.)

  • Unordered list can use asterisks
  • Or minuses
  • Or pluses, but when adjacent they form a new list
  1. Make my changes
    1. Fix bug
    2. Improve formatting
      • Make the headings bigger
  2. Push my commits to GitHub
  3. Open a pull request
    • Describe my changes
    • Mention all the members of my team
      • Ask for feedback
  • Create a list by starting a line with +, -, or *
  • Sub-lists are made by indenting 2 spaces:
    • Marker character change forces new list start:
      • Ac tristique libero volutpat at
      • Facilisis in pretium nisl aliquet
      • Nulla volutpat aliquam velit
  • Very easy!

Ignoring Markdown formatting #

You can escape Markdown formatting by using a backslash \ before the Markdown character.

Let's rename \*our-new-project\* to \*our-old-project\*.

Let's rename *our-new-project* to *our-old-project*.

<strong>Also note that HTML is not allowed</strong>

Links #

[I'm an inline-style link](https://www.google.com)

[I'm a link to a heading in the current document](#sec-headers)

[I'm an inline-style link with title](https://www.google.com "Google's Homepage")

[I'm a reference-style link][Arbitrary case-insensitive reference text]

[You can use numbers for reference-style link definitions][1]

Or leave it empty and use the [link text itself].

URLs in angle brackets will automatically get turned into links.
<http://www.example.com> will work but http://www.example.com will not.

Some text to show that the reference links can follow later.

[arbitrary case-insensitive reference text]: https://www.mozilla.org
[1]: http://slashdot.org
[link text itself]: http://www.reddit.com

I'm an inline-style link

I'm a link to a heading in the current document

I'm an inline-style link with title

I'm a reference-style link

You can use numbers for reference-style link definitions

Or leave it empty and use the link text itself.

URLs in angle brackets will automatically get turned into links. http://www.example.com will work but http://www.example.com will not.

Some text to show that the reference links can follow later.

Images #

The RFC Editor allows you to add images to your document. Upon clicking an uploaded
image it will automatically add the appropriate markdown to embed the image in your
RFC. Here's an example without alt text:

![](https://user-content.rfchub.app/f18bb068-611b-4bdc-a951-6b4155e88221/logo-Fz9Sm1Ma.png)

By default the alt text will be the name of the image file. However, you should change
it to be something more descriptive as the alt text will be displayed below the image
as a caption.

![The image alt text is used as a caption](https://user-content.rfchub.app/f18bb068-611b-4bdc-a951-6b4155e88221/logo-Fz9Sm1Ma.png)

Note that images must be uploaded using the RFC Editor. Images loaded from third party
domains will not work. Deleting an RFC will also delete the files attached to it so if
you copy and paste the contents of an RFC into another RFC then you should also
re-upload the images to be safe.

The RFC Editor allows you to add images to your document. Upon clicking an uploaded image it will automatically add the appropriate markdown to embed the image in your RFC. Here's an example without alt text:

By default the alt text will be the name of the image file. However, you should change it to be something more descriptive as the alt text will be displayed below the image as a caption.

The image alt text is used as a caption
The image alt text is used as a caption

Note that images must be uploaded using the RFC Editor. Images loaded from third party domains will not work. Deleting an RFC will also delete the files attached to it so if you copy and paste the contents of an RFC into another RFC then you should also re-upload the images to be safe.

Code and Syntax Highlighting #

Inline `code` has `back-ticks around` it.

Inline code has back-ticks around it.

@media print, (max-width:1270px) {
  /* shadow gets cut off when screen is thin */
  #rfc-markdown {
    box-shadow: none !important;
  }
}
function updateTimeElementsToBeLocalTime(root = document.body) {
    const $times = $$('time', root);
    for (let $time of $times) {
      if ($time.classList.contains('localized') || !$time.attributes.format) return;
      const format = $time.attributes.format.value; // string dateFns format
      if (format === 'iso') continue;
      const local = dateFns.format($time.dateTime, format);
      $time.innerText = local;
      $time.classList.add('localized');
    }
}

The following languages are supported when viewing an RFC:

Language Language Language Language Language
1c abnf accesslog actionscript ada
angelscript apache applescript arcade arduino
armasm asciidoc aspectj autohotkey autoit
avrasm awk axapta bash basic
bnf brainfuck cal capnproto ceylon
c clean clojure clojure-repl cmake
coffeescript coq cos cpp crmsh
crystal csharp csp css dart
delphi diff django d dns
dockerfile dos dsconfig dts dust
ebnf elixir elm erb erlang
erlang-repl excel fix flix fortran
fsharp gams gauss gcode gherkin
glsl gml go golo gradle
graphql groovy haml handlebars haskell
haxe hsp http hy inform7
ini irpf90 isbl java javascript
jboss-cli json julia julia-repl kotlin
lasso latex ldif leaf less
lisp livecodeserver livescript llvm lsl
lua makefile markdown mathematica matlab
maxima mel mercury mipsasm mizar
mojolicious monkey moonscript n1ql nestedtext
nginx nim nix node-repl nsis
objectivec ocaml openscad oxygene parser3
perl pf pgsql php php-template
plaintext pony powershell processing profile
prolog properties protobuf puppet purebasic
python python-repl q qml reasonml
rib r roboconf routeros rsl
ruby ruleslanguage rust sas scala
scheme scilab scss shell smali
smalltalk sml sqf sql stan
stata step21 stylus subunit swift
taggerscript tap tcl thrift tp
twig typescript vala vbnet vbscript-html
vbscript verilog vhdl vim wasm
wren x86asm xl xml xquery
yaml zephir

Note that while editing your RFC document you'll also get syntax highlighting on code blocks. However, only a subset of languages are supported.

Tables #

Colons can be used to align columns.

| Tables        | Are           | Cool  |
| ------------- |:-------------:| -----:|
| col 3 is      | right-aligned | $1600 |
| col 2 is      | centered      |   $12 |
| zebra stripes | are neat      |    $1 |

There must be at least 3 dashes separating each header cell.
The outer pipes (|) are optional, and you don't need to make the
raw Markdown line up prettily. You can also use inline Markdown.

Markdown | Less | Pretty
--- | --- | ---
*Still* | `renders` | **nicely**
1 | 2 | 3

| First Header  | Second Header |
| ------------- | ------------- |
| Content Cell  | Content Cell  |
| Content Cell  | Content Cell  |

| Command | Description |
| --- | --- |
| git status | List all new or modified files |
| git diff | Show file differences that haven't been staged |

| Command | Description |
| --- | --- |
| `git status` | List all *new or modified* files |
| `git diff` | Show file differences that **haven't been** staged |

| Left-aligned | Center-aligned | Right-aligned |
| :---         |     :---:      |          ---: |
| git status   | git status     | git status    |
| git diff     | git diff       | git diff      |

| Name     | Character |
| ---      | ---       |
| Backtick | `         |
| Pipe     | \|        |

Colons can be used to align columns.

Tables Are Cool
col 3 is right-aligned $1600
col 2 is centered $12
zebra stripes are neat $1

There must be at least 3 dashes separating each header cell. The outer pipes (|) are optional, and you don't need to make the raw Markdown line up prettily. You can also use inline Markdown.

Markdown Less Pretty
Still renders nicely
1 2 3
First Header Second Header
Content Cell Content Cell
Content Cell Content Cell
Command Description
git status List all new or modified files
git diff Show file differences that haven't been staged
Command Description
git status List all new or modified files
git diff Show file differences that haven't been staged
Left-aligned Center-aligned Right-aligned
git status git status git status
git diff git diff git diff
Name Character
Backtick `
Pipe |

Blockquotes #

> Blockquotes are very handy in email to emulate reply text.
> This line is part of the same quote.

Quote break.

> This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can *put* **Markdown** into a blockquote.

> Blockquotes can also be nested...
>> ...by using additional greater-than signs right next to each other...
> > > ...or with spaces between arrows.

Blockquotes are very handy in email to emulate reply text. This line is part of the same quote.

Quote break.

This is a very long line that will still be quoted properly when it wraps. Oh boy let's keep writing to make sure this is long enough to actually wrap for everyone. Oh, you can put Markdown into a blockquote.

Blockquotes can also be nested...

...by using additional greater-than signs right next to each other...

...or with spaces between arrows.

Horizontal Rules #

Three or more...

---

Hyphens

***

Asterisks

___

Underscores

Three or more...


Hyphens


Asterisks


Underscores