` element a [custom class and/or a custom ID](#classes-ids-and-attributes).
+
+```md
+| Default aligned | Left aligned | Center aligned | Right aligned |
+|-----------------|:-------------|:---------------:|---------------:|
+| First body part | Second cell | Third cell | fourth cell |
+| Second line | foo | **strong** | baz |
+| Third line | quux | baz | bar |
+|-----------------+--------------+-----------------+----------------|
+| Second body | | | |
+| 2nd line | | | |
+|-----------------+--------------+-----------------+----------------|
+| Third body | | | Foo |
+{: .custom-class #custom-id}
+
+```
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+| Default aligned | Left aligned | Center aligned | Right aligned |
+|-----------------|:-------------|:---------------:|---------------:|
+| First body part | Second cell | Third cell | fourth cell |
+| Second line | foo | **strong** | baz |
+| Third line | quux | baz | bar |
+|-----------------+--------------+-----------------+----------------|
+| Second body | | | |
+| 2nd line | | Hello World | |
+|-----------------+--------------+-----------------+----------------|
+| Third body | | | Foo |
+{: .custom-class #custom-id}
+
+
+
+
+
+
+Certain tools can help you to create your own complex table if you need merging lines or columns,
+and more advanced layouts. This is a [Table Generator] that perhaps can help you out.
+
+Note that the bars, spaces and dashes were used symmetrically above just for providing a nice
+view of the table markup. The symmetry is not required.
+
+Read through the [Kramdown syntax guide][kram-tables] on tables for further information.
+
+----
+
+## Code blocks
+
+There are a few options for displaying code blocks with Kramdown. Most of them use backticks ``` ` ```.
+
+### In-line
+
+This is an ``` `in-line` ``` code block.
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+
+_In-line_
+
+This is an `in-line` code block.
+
+
+
+
+### Fenced
+
+ ```
+ def hello
+ puts "Hello world!"
+ end
+ ```
+
+_Fenced Highlighted_
+
+ ```ruby
+ def hello
+ puts "Hello world!"
+ end
+ ```
+
+or
+
+ ```
+ def hello
+ puts "Hello world!"
+ end
+ ```
+ {: .language-ruby}
+
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+_Fenced_
+
+```
+def hello
+ puts "Hello world!"
+end
+```
+
+_Fenced Highlighted_
+
+```ruby
+def hello
+ puts "Hello world!"
+end
+```
+
+or
+
+```
+def hello
+ puts "Hello world!"
+end
+```
+{: .language-ruby}
+
+
+
+
+
+
+### Indented
+
+Add 4 white spaces before every line:
+
+ def hello
+ puts "Hello world!"
+ end
+
+_Indented Highlighted_
+
+ def hello
+ puts "Hello world!"
+ end
+ {: .language-ruby}
+
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+_Indented_
+
+ def hello
+ puts "Hello world!"
+ end
+
+_Indented Highlighted_
+
+ def hello
+ puts "Hello world!"
+ end
+{: .language-ruby}
+
+
+
+
+
+
+### Nested
+
+Add 4 white spaces before every line. This is used when you want to display a code block
+within a code block.
+
+ ```
+ def hello
+ puts "Hello world!"
+ end
+ ```
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+_Nested_
+
+ ```
+ def hello
+ puts "Hello world!"
+ end
+ ```
+
+
+
+
+### In lists
+
+Indent the text of each item in 3 white spaces. Leave blank lines between the code block and the list items,
+and ident the code block in 5 white spaces:
+
+ 1. Item 1
+ 1. Item 2
+
+ ```ruby
+ def hello
+ puts "Hello world!"
+ end
+ ```
+
+ 1. Item 3
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+1. Item 1
+1. Item 2
+
+ ```ruby
+ def hello
+ puts "Hello world!"
+ end
+ ```
+
+1. Item 3
+
+
+
+
+----
+
+## Blockquotes
+
+Blockquotes are good resources to mentioning someone else's quotes, like we did [just above](#quote).
+Also, can be used to emphasize a sentence or a small paragraph.
+
+```md
+> This is a blockquote.
+> On multiple lines.
+That may be lazy.
+>
+> This is the second paragraph.
+
+----
+
+> This is a paragraph.
+>
+> > A nested blockquote.
+>
+> ### Headers work
+>
+> * lists too
+>
+> and all other block-level **elements**.
+>
+> Even code blocks:
+>
+> def hello
+> puts "Hello world!"
+> end
+> {: .language-ruby}
+```
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+> This is a blockquote.
+> On multiple lines.
+That may be lazy.
+>
+> This is the second paragraph.
+
+----
+
+> This is a paragraph.
+>
+> > A nested blockquote.
+>
+> ### Headers work
+> {:.no_toc}
+>
+> * lists too
+>
+> and all other block-level **elements**.
+>
+> Even a code block:
+>
+> def hello
+> puts "Hello world!"
+> end
+> {: .language-ruby}
+
+
+
+
+----
+
+## Notes
+
+```md
+This is a regular paragraph.
+
+_**Note:** a note is something that needs to be mentioned but is apart from the context._
+{: .note}
+```
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+This is a regular paragraph.
+
+_**Note:** a note is something that needs to be mentioned but is apart from the context._
+{: .note}
+
+
+
+
+----
+
+## Comments
+
+_Markdown markup_
+
+```md
+This is a paragraph
+{::comment}
+This is a comment which is
+completely ignored.
+{:/comment}
+... paragraph continues here.
+```
+
+_Regular HTML markup_
+
+
+{: .language-html}
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+This is a paragraph
+{::comment}
+This is a comment which is
+completely ignored.
+{:/comment}
+... paragraph continues here.
+
+
+
+
+
+
+----
+
+## Anchors
+
+Add an anchor anywhere with:
+
+```
+[](){: name="hello-world"}
+
+Some text
+```
+
+Or simply use an ID:
+
+```
+Some text
+{: #hello-world}
+```
+----
+
+## Font Awesome
+
+Yes, we can use fancy [Font Awesome] icons too.
+
+_Regular_
+
+```
+### Puzzle Icon
+{: #puzzle}
+```
+
+And you can go further, such as the following.
+
+_Styled_
+
+```
+### Purple Puzzle Icon
+{: #puzzle-purple}
+
+### Orange GitLab Tanuki
+{: #tanuki-orange}
+```
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+_Regular_
+
+### Puzzle Icon
+{: #puzzle}
+
+----
+
+_Styled_
+
+### Purple GitLab Tanuki
+{: #tanuki-purple}
+
+### Orange GitLab Tanuki
+{: #tanuki-orange}
+
+
+
+
+When doing something like this to a heading, it's important give it a custom ID (e.g., `{: #puzzle}`),
+otherwise the one automatically created by Kramdown will sound very awkward.
+
+The class `fa-fw` is used when you want to display the icons as a list. They will be aligned, as well as
+the text right beside them.
+
+See live examples [on this post][ssgs-post], where the icons are used to illustrate the text.
+
+-----
+
+## Classes, IDs and attributes
+
+Defining CSS classes, and elements IDs and attributes with markdown is definitely something unusual (Kramdown magic!).
+
+But yes, if you know how to use it, you'll love it! Check how easy it is to do that with Kramdown:
+
+```
+Paragraph
+{: .class .class-1 .class-2}
+
+Paragraph
+{: #custom-id}
+
+Paragraph
+{: .class .class-1 #custom-id-1}
+
+## Heading
+{: .class .class-1 #custom-id-2}
+
+Paragraph
+{: .class #custom-id-3 style="padding-top:0" key="value"}
+
+## Heading {#hello}
+
+List:
+
+- {: .class} List item with custom class
+- {:#id} List item with custom id
+
+To a [link]{: #link}, in-line.
+
+This is a [link][google-es]{:hreflang="es"} in Spanish.
+
+[link]: https://google.com
+[google-es]: https://google.es
+```
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+Paragraph
+{: .class .class-1 .class-2}
+
+Paragraph
+{: #custom-id}
+
+Paragraph
+{: .class .class-1 #custom-id-1}
+
+### Heading
+{: .class .class-1 .no_toc #custom-id-2}
+
+Paragraph
+{: .class #custom-id-3 style="padding-top:0" key="value"}
+
+### Heading {#hello}
+{: .no_toc}
+
+List:
+
+- {: .class} List item with custom class
+- {:#id} List item with custom id
+
+To a [link]{: #link}, in-line.
+
+This is a [link][google-es]{:hreflang="es"} in Spanish.
+
+[link]: https://google.com
+[google-es]: https://google.es
+
+
+
+
+----
+
+## Mix HTML + Markdown Markup
+
+Mixing HTML markup with markdown is something almost "unthinkable" to someone used to regular markdown.
+And it's all over this document!
+
+Use the following markup at the beginning of your document:
+
+```md
+{::options parse_block_html="true" /}
+```
+
+And feel free to mix everything up:
+
+```
+Something in **markdown**.
+
+Then an HTML tag with crazy **markup** _all over_ the place!
+```
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+Something in **markdown**.
+
+
Then an HTML tag with crazy **markup** _all over_ the place!
+
+
+
+
+You can close the markup parser tag at any point, if you want to:
+
+```md
+{::options parse_block_html="false" /}
+```
+
+### Styles
+
+To wrap up, guess what?
+
+This:
+
+```css
+
+```
+
+
+
+Plus:
+
+```
+Hey! Hover the cursor over me and guess what?! :)
+{: .purple}
+```
+
+Equals to:
+
+
+
+**Output**
+{: .panel-heading}
+
+
+
+Hey! Hover the cursor over me and guess what?! :)
+{: .purple}
+
+
+
+
+And yes, the `