Markdown

Forum discussions on CodeProject use Markdown as an option for formatting text. "Markdown" is
not a standard: it's a loose, but generally agreed upon, understanding of how ASCII text should be
displayed when certain non-alphanumeric characters are added as decorations to words and text
blocks.

The Markdown CodeProject uses is very similar to that used in GitHub, Atlassian and StackExchange
with some small variations.

Note: Markdown accepts HTML tags. If you include valid HTML tags in your content then they
will be rendered as HTML. If you include invalid HTML tags (eg "<tag>") then it will be
automatically HTML encoded an not processed as HTML.

Syntax

Headings

Use #, ##, ### etc to generate H1, H2, H3 headings

# Heading level 1
## Heading level 2

Which produces

Heading level 1

Heading level 2

Alternatively you can underline headings with === or --- to get level 1 and level 2 headings:

Heading 1
=========
Heading 2
---------

Paragraphs

Paragraphs are created simply by typing text and separating the text by a blank line. Newlines
are preserved.

This is a paragraph
This is a new line

This is a separate paragraph

Code

Inline code is specified using matching `` or ´´ pairs around the code:

This is a ``variable`` name.

Produces

This is a variable name.

Code blocks are specified using matching ``` or ´´´ pairs at the top and bottom of the
code block on separate lines:

```
var int i = 0;
```

Produces

var int i = 0;

The language of the code block can be specified by adding it directly after the ```:

```cs
var int i = 0;
```
```javascript
var int i = 0;
```

If you wish to include ``` in your codeblocks (eg to demonstrate Markdown examples) then you
can escpe the markup using \:

```text
Your codeblocks should be of the form
\```C#
// some code
\```
```

will produce

Your codeblocks should be of the form
```C#
// some code
```

You can use multiple backticks as the delimiters if you want to include literal backticks in
the code span.

Just type ``foo `bar` baz`` at the prompt.

will produce

Just type foo `bar` baz at the prompt.

Inline character formatting

Bold, italics and strikethrough are supported by wrapping text in **, * (or_) and --
respectively

This is **bold**, *italics* and --strikethrough--

Produces

This is bold, italics and
strikethrough.

Lists

Use * or - to form unordered lists:

- Apples
- Pears
- Oranges

Produces

Apples

Pears

Oranges

Prefix list items with a number.

1. First
2. Second
3. Third

Produces

First

Second

Third

Nested lists can be generated by indenting subitems two or more spaces.

1. First
2. Second
- Sub-Second

Produces

First

Second

Sub-Second

Blockquotes

Prefix each line in the quote by ">":

> This is a quote
> from someone famous.
>
> This is a new paragraph inside the quote

Produces

This is a quote from someone famous.

This is a new paragraph inside the quote

Hyperlinks

Either prefix the link by http:// to have it auto-linked, or wrap the link text in [] and the
link URL by () to generate a hyperlink:

Visit [CodeProject](www.codeproject.com). Its URL is http://www.codeproject.com.

Differences to traditional Markdown

Preserving newlines

Markdown was originally created to allow blog content to be converted from plain ASCII to HTML
in the simplest, least painful method. Multiple lines were combined into single paragraphs, and
paragraph breaks required a blank line. This follows what you'd expect from text written in Notepad.

On CodeProject there is a certain expectation that what you see (in terms of linebreaks) is what
you get. Hence we have decided to preserve line breaks.

Inline formatting requires wordbreaks around formatting markers

Like GitHub, we suppress the processing of multiple underscores in words. my_var_name
would traditionally be rendered as myvarname which makes discussing code very hard.

Auto-hyperlinking

This is not standard Markup.

Strike-through

This is not standard Markup. Nor is the BLINK tag. This makes us sad.

Fenced code blocks and syntax highlighting

The use of ``` to deliniate code blocks is a GitHub extension we choose to follow for the sake
of established Markdown users. We added "´" as an option for those with European keyboards.