debian-mirror-gitlab/doc/user/markdown.md

1772 lines
56 KiB
Markdown
Raw Normal View History

2020-06-23 00:09:42 +05:30
---
2020-10-24 23:57:45 +05:30
stage: Create
group: Source Code
2022-03-02 08:16:31 +05:30
info: To determine the technical writer assigned to the Stage/Group associated with this page, see https://about.gitlab.com/handbook/engineering/ux/technical-writing/#assignments
2020-06-23 00:09:42 +05:30
---
2022-06-21 17:19:12 +05:30
# GitLab Flavored Markdown (GLFM) **(FREE)**
> The abbreviation [changed](https://gitlab.com/gitlab-org/gitlab/-/issues/24592) from `GFM` to `GLFM` in GitLab 14.10.
2016-09-13 17:45:13 +05:30
2022-07-16 23:28:13 +05:30
When you enter text in the GitLab UI, GitLab assumes the text is in the Markdown language.
The text is rendered with a set of styles. These styles are called *GitLab Flavored Markdown*.
2019-09-30 21:07:59 +05:30
2022-01-26 12:08:38 +05:30
For example, in Markdown, an unordered list looks like this:
2021-09-04 01:27:46 +05:30
```markdown
- Cat
- Dog
- Turtle
```
When this list is rendered, it looks like this:
- Cat
- Dog
- Turtle
These styles are **valid for GitLab only**. The [GitLab documentation website](https://docs.gitlab.com)
and the [main GitLab website](https://about.gitlab.com) use [Kramdown](https://kramdown.gettalong.org) instead.
2018-11-08 19:23:39 +05:30
2021-09-04 01:27:46 +05:30
You should not view this page in the documentation, but instead [view these styles as they appear on GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md).
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
GitLab Flavored Markdown extends the [CommonMark specification](https://spec.commonmark.org/current/).
2022-05-07 20:08:51 +05:30
It was inspired by [GitHub Flavored Markdown](https://docs.github.com/en/get-started/writing-on-github/getting-started-with-writing-and-formatting-on-github/basic-writing-and-formatting-syntax).
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
## Where you can use GitLab Flavored Markdown
2021-04-17 20:07:23 +05:30
You can use GitLab Flavored Markdown in the following areas:
2016-09-13 17:45:13 +05:30
2019-02-15 15:39:39 +05:30
- Comments
- Issues
- Merge requests
- Milestones
- Snippets (the snippet must be named with a `.md` extension)
- Wiki pages
- Markdown documents inside repositories
2021-09-04 01:27:46 +05:30
- Epics
2019-09-30 21:07:59 +05:30
You can also use other rich text files in GitLab. You might have to install a dependency
2021-09-04 01:27:46 +05:30
to do so. For more information, see the [`gitlab-markup` gem project](https://gitlab.com/gitlab-org/gitlab-markup).
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
### Differences between GitLab Flavored Markdown and standard Markdown
2021-03-11 19:13:27 +05:30
2021-09-04 01:27:46 +05:30
GitLab uses standard CommonMark formatting. However, GitLab Flavored Markdown
extends standard Markdown with features made specifically for GitLab.
2019-09-30 21:07:59 +05:30
2021-09-04 01:27:46 +05:30
Features not found in standard Markdown:
2019-09-30 21:07:59 +05:30
2021-09-04 01:27:46 +05:30
- [Color chips written in `HEX`, `RGB` or `HSL`](#colors)
2020-01-01 13:55:28 +05:30
- [Diagrams and flowcharts](#diagrams-and-flowcharts)
2021-09-04 01:27:46 +05:30
- [Emoji](#emojis)
2019-09-30 21:07:59 +05:30
- [Front matter](#front-matter)
- [Inline diffs](#inline-diff)
- [Math equations and symbols written in LaTeX](#math)
- [Task Lists](#task-lists)
2020-03-13 15:44:24 +05:30
- [Table of Contents](#table-of-contents)
2020-01-01 13:55:28 +05:30
- [Wiki specific Markdown](#wiki-specific-markdown)
2019-09-30 21:07:59 +05:30
2021-09-04 01:27:46 +05:30
Features [extended from standard Markdown](#features-extended-from-standard-markdown):
2019-09-30 21:07:59 +05:30
2022-05-07 20:08:51 +05:30
| Standard Markdown | Extended Markdown in GitLab |
|---------------------------------------|---------------------------------------------------------------------------------------|
| [blockquotes](#blockquotes) | [multi-line blockquotes](#multiline-blockquote) |
| [code blocks](#code-spans-and-blocks) | [colored code and syntax highlighting](#colored-code-and-syntax-highlighting) |
| [emphasis](#emphasis) | [multiple underscores in words](#multiple-underscores-in-words-and-mid-word-emphasis) |
| [headers](#headers) | [linkable Header IDs](#header-ids-and-links) |
| [images](#images) | [embedded videos](#videos) and [audio](#audio) |
| [line breaks](#line-breaks) | [more line break control](#newlines) |
| [links](#links) | [automatically linking URLs](#url-auto-linking) |
2019-09-30 21:07:59 +05:30
2021-09-04 01:27:46 +05:30
## Features not found in standard Markdown
The following features are not found in standard Markdown.
2018-11-20 20:47:30 +05:30
2019-09-30 21:07:59 +05:30
### Colors
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#colors).
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
You can write a color in the formats: `HEX`, `RGB`, or `HSL`.
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
- `HEX`: `` `#RGB[A]` `` or `` `#RRGGBB[AA]` ``
- `RGB`: `` `RGB[A](R, G, B[, A])` ``
- `HSL`: `` `HSL[A](H, S, L[, A])` ``
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
Named colors are not supported.
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
Colors in backticks are followed by a color indicator:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
2020-04-08 14:13:33 +05:30
- `#F00`
- `#F00A`
- `#FF0000`
- `#FF0000AA`
- `RGB(0,255,0)`
- `RGB(0%,100%,0%)`
- `RGBA(0,255,0,0.3)`
- `HSL(540,70%,50%)`
- `HSLA(540,70%,50%,0.3)`
```
- `#F00`
- `#F00A`
- `#FF0000`
- `#FF0000AA`
- `RGB(0,255,0)`
- `RGB(0%,100%,0%)`
- `RGBA(0,255,0,0.3)`
- `HSL(540,70%,50%)`
- `HSLA(540,70%,50%,0.3)`
2016-09-13 17:45:13 +05:30
2020-01-01 13:55:28 +05:30
### Diagrams and flowcharts
2021-09-04 01:27:46 +05:30
You can generate diagrams and flowcharts from text by using [Mermaid](https://mermaidjs.github.io/) or [PlantUML](https://plantuml.com).
You can also use [Kroki](https://kroki.io) to create a wide variety of diagrams.
2020-01-01 13:55:28 +05:30
#### Mermaid
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
Visit the [official page](https://mermaidjs.github.io/) for more details. The
[Mermaid Live Editor](https://mermaid-js.github.io/mermaid-live-editor/) helps you
learn Mermaid and debug issues in your Mermaid code. Use it to identify and resolve
issues in your diagrams.
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
To generate a diagram or flowchart, write your text inside the `mermaid` block:
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
````markdown
2019-09-30 21:07:59 +05:30
```mermaid
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
```
2020-04-08 14:13:33 +05:30
````
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```mermaid
graph TD;
A-->B;
A-->C;
B-->D;
C-->D;
```
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
You can also include subgraphs:
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
````markdown
2019-09-30 21:07:59 +05:30
```mermaid
graph TB
SubGraph1 --> SubGraph1Flow
subgraph "SubGraph 1 Flow"
SubGraph1Flow(SubNode 1)
SubGraph1Flow -- Choice1 --> DoChoice1
SubGraph1Flow -- Choice2 --> DoChoice2
end
subgraph "Main Graph"
Node1[Node 1] --> Node2[Node 2]
Node2 --> SubGraph1[Jump to SubGraph1]
SubGraph1 --> FinalThing[Final Thing]
end
```
2020-04-08 14:13:33 +05:30
````
2019-09-30 21:07:59 +05:30
```mermaid
graph TB
SubGraph1 --> SubGraph1Flow
subgraph "SubGraph 1 Flow"
SubGraph1Flow(SubNode 1)
SubGraph1Flow -- Choice1 --> DoChoice1
SubGraph1Flow -- Choice2 --> DoChoice2
end
subgraph "Main Graph"
Node1[Node 1] --> Node2[Node 2]
Node2 --> SubGraph1[Jump to SubGraph1]
SubGraph1 --> FinalThing[Final Thing]
end
```
2020-01-01 13:55:28 +05:30
#### PlantUML
2022-08-27 11:52:29 +05:30
PlantUML integration is enabled on GitLab.com. To make PlantUML available in self-managed
installation of GitLab, a GitLab administrator [must enable it](../administration/integration/plantuml.md).
2020-01-01 13:55:28 +05:30
2021-02-22 17:27:13 +05:30
#### Kroki
2021-09-04 01:27:46 +05:30
To make Kroki available in GitLab, a GitLab administrator must enable it.
For more information, see the [Kroki integration](../administration/integration/kroki.md) page.
2021-02-22 17:27:13 +05:30
2021-09-04 01:27:46 +05:30
### Emojis
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#emojis).
2016-09-13 17:45:13 +05:30
2020-05-24 23:13:21 +05:30
```markdown
2019-09-30 21:07:59 +05:30
Sometimes you want to :monkey: around a bit and add some :star2: to your :speech_balloon:. Well we have a gift for you:
2016-09-13 17:45:13 +05:30
2021-04-17 20:07:23 +05:30
:zap: You can use emoji anywhere GitLab Flavored Markdown is supported. :v:
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
You can use it to point out a :bug: or warn about :speak_no_evil: patches. And if someone improves your really :snail: code, send them some :birthday:. People :heart: you for that.
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
If you're new to this, don't be :fearful:. You can join the emoji :family:. Just look up one of the supported codes.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Consult the [Emoji Cheat Sheet](https://www.emojicopy.com) for a list of all supported emoji codes. :thumbsup:
2018-12-13 13:39:08 +05:30
```
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
Sometimes you want to <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/monkey.png" width="20px" height="20px" style="display:inline;margin:0;border: 0"> around a bit and add some <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/star2.png" width="20px" height="20px" style="display:inline;margin:0;border: 0"> to your <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/speech_balloon.png" width="20px" height="20px" style="display:inline;margin:0;border: 0">. Well we have a gift for you:
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
<img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/zap.png" width="20px" height="20px" style="display:inline;margin:0;border: 0">You can use emoji anywhere GitLab Flavored Markdown is supported. <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/v.png" width="20px" height="20px" style="display:inline;margin:0;border: 0">
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
You can use it to point out a<img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/bug.png" width="20px" height="20px" style="display:inline;margin:0;border: 0"> or warn about <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/speak_no_evil.png" width="20px" height="20px" style="display:inline;margin:0;border: 0"> patches. If someone improves your really <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/snail.png" width="20px" height="20px" style="display:inline;margin:0;border: 0"> code, send them some <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/birthday.png" width="20px" height="20px" style="display:inline;margin:0;border: 0">. People <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/heart.png" width="20px" height="20px" style="display:inline;margin:0;border: 0"> you for that.
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
If you're new to this, don't be <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/fearful.png" width="20px" height="20px" style="display:inline;margin:0;border: 0">. You can join the emoji <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/family.png" width="20px" height="20px" style="display:inline;margin:0;border: 0">. Just look up one of the supported codes.
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
Consult the [Emoji Cheat Sheet](https://www.webfx.com/tools/emoji-cheat-sheet/) for a list of all supported emoji codes. <img src="https://gitlab.com/gitlab-org/gitlab-foss/raw/master/public/-/emojis/2/thumbsup.png" width="20px" height="20px" style="display:inline;margin:0;border: 0">
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
#### Emojis and your operating system
2021-01-03 14:25:43 +05:30
2021-09-04 01:27:46 +05:30
The previous emoji example uses hard-coded images. Rendered emojis
in GitLab may be different depending on the OS and browser used.
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
Most emojis are natively supported on macOS, Windows, iOS, Android, and fall back on image-based
emojis where there is no support.
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
<!-- vale gitlab.Spelling = NO -->
2021-12-11 22:18:48 +05:30
On Linux, you can download [Noto Color Emoji](https://github.com/googlefonts/noto-emoji)
2020-04-22 19:07:51 +05:30
to get full native emoji support. Ubuntu 18.04 (like many modern Linux distributions) has
2019-09-30 21:07:59 +05:30
this font installed by default.
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
<!-- vale gitlab.Spelling = YES -->
2019-09-30 21:07:59 +05:30
### Front matter
2016-09-13 17:45:13 +05:30
2020-01-01 13:55:28 +05:30
Front matter is metadata included at the beginning of a Markdown document, preceding
2021-09-04 01:27:46 +05:30
the content. This data can be used by static site generators like [Jekyll](https://jekyllrb.com/docs/front-matter/),
2019-09-30 21:07:59 +05:30
[Hugo](https://gohugo.io/content-management/front-matter/), and many other applications.
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
When you view a Markdown file rendered by GitLab, front matter is displayed as-is,
2021-03-11 19:13:27 +05:30
in a box at the top of the document. The HTML content displays after the front matter. To view an example,
you can toggle between the source and rendered version of a
2022-01-26 12:08:38 +05:30
[GitLab documentation file](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/index.md).
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
In GitLab, front matter is used only in Markdown files and wiki pages, not the other
2020-06-23 00:09:42 +05:30
places where Markdown formatting is supported. It must be at the very top of the document
2021-09-04 01:27:46 +05:30
and must be between delimiters.
2016-09-13 17:45:13 +05:30
2020-03-13 15:44:24 +05:30
The following delimiters are supported:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
- YAML (`---`):
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
```yaml
2019-09-30 21:07:59 +05:30
---
title: About Front Matter
example:
2022-05-07 20:08:51 +05:30
language: yaml
2019-09-30 21:07:59 +05:30
---
2020-04-08 14:13:33 +05:30
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
- TOML (`+++`):
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
```toml
2019-09-30 21:07:59 +05:30
+++
title = "About Front Matter"
[example]
language = "toml"
+++
2020-04-08 14:13:33 +05:30
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
- JSON (`;;;`):
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
```json
2019-09-30 21:07:59 +05:30
;;;
{
"title": "About Front Matter"
"example": {
"language": "json"
}
}
;;;
2020-04-08 14:13:33 +05:30
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Other languages are supported by adding a specifier to any of the existing
delimiters. For example:
```php
---php
$title = "About Front Matter";
$example = array(
'language' => "php",
);
---
2016-09-13 17:45:13 +05:30
```
2019-02-15 15:39:39 +05:30
### Inline diff
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#inline-diff).
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
With inline diff tags, you can display `{+ additions +}` or `[- deletions -]`.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
The wrapping tags can be either curly braces or square brackets:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
- {+ addition 1 +}
- [+ addition 2 +]
- {- deletion 3 -}
- [- deletion 4 -]
2018-03-17 18:26:18 +05:30
```
2021-02-22 17:27:13 +05:30
![Inline diff as rendered by the GitLab interface](img/inline_diff_01_v13_3.png)
2019-09-04 21:01:54 +05:30
2019-09-30 21:07:59 +05:30
---
2019-09-04 21:01:54 +05:30
2021-09-04 01:27:46 +05:30
However, you cannot mix the wrapping tags:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
- {+ addition +]
- [+ addition +}
- {- deletion -]
- [- deletion -}
2018-03-17 18:26:18 +05:30
```
2016-09-13 17:45:13 +05:30
2020-05-24 23:13:21 +05:30
If your diff includes words in `` `code` `` font, make sure to escape each backtick `` ` `` with a
2021-09-04 01:27:46 +05:30
backslash `\`. Otherwise the diff highlight does not render correctly:
2020-04-22 19:07:51 +05:30
```markdown
- {+ Just regular text +}
- {+ Text with `backticks` inside +}
- {+ Text with escaped \`backticks\` inside +}
```
2021-02-22 17:27:13 +05:30
![Inline diff with mixed formatting, as rendered by the GitLab interface](img/inline_diff_02_v13_3.png)
2020-04-22 19:07:51 +05:30
2019-09-30 21:07:59 +05:30
### Math
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#math).
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
Math written in LaTeX syntax is rendered with [KaTeX](https://github.com/KaTeX/KaTeX).
2022-10-11 01:57:18 +05:30
_KaTeX only supports a [subset](https://katex.org/docs/supported.html) of LaTeX._
This syntax also works for the Asciidoctor `:stem: latexmath`. For details, see
the [Asciidoctor user manual](https://asciidoctor.org/docs/user-manual/#activating-stem-support).
2016-09-13 17:45:13 +05:30
2022-10-11 01:57:18 +05:30
Math written between dollar signs with backticks (``$`...`$``) is rendered
inline with the text. Math written in a [code block](#code-spans-and-blocks) with
the language declared as `math` is rendered on a separate line:
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
````markdown
2021-12-11 22:18:48 +05:30
This math is inline: $`a^2+b^2=c^2`$.
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
This math is on a separate line:
2018-11-20 20:47:30 +05:30
2019-09-30 21:07:59 +05:30
```math
a^2+b^2=c^2
2018-12-13 13:39:08 +05:30
```
2020-04-08 14:13:33 +05:30
````
2018-11-20 20:47:30 +05:30
2021-12-11 22:18:48 +05:30
This math is inline: $`a^2+b^2=c^2`$.
2018-11-20 20:47:30 +05:30
2021-12-11 22:18:48 +05:30
This math is on a separate line:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```math
a^2+b^2=c^2
```
2018-11-20 20:47:30 +05:30
2022-10-11 01:57:18 +05:30
#### LaTeX-compatible fencing
2018-11-20 20:47:30 +05:30
2022-10-11 01:57:18 +05:30
> Introduced in GitLab 15.4 [with a flag](../administration/feature_flags.md) named `markdown_dollar_math`. Disabled by default.
[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#latex-compatible-fencing).
FLAG:
On self-managed GitLab, by default this feature is not available. To make it available,
ask an administrator to [enable the feature flag](../administration/feature_flags.md) named `markdown_dollar_math`.
On GitLab.com, this feature is available.
The feature is not ready for production use.
Math written between dollar signs (`$...$`) is rendered
inline with the text. Math written between double dollar signs (`$$...$$`) is rendered
on a separate line:
````markdown
This math is inline: $a^2+b^2=c^2$.
This math is on a separate line: $$a^2+b^2=c^2$$
This math is on a separate line:
$$
a^2+b^2=c^2
$$
````
<!-- Uncomment the example below when the flag is enabled on GitLab.com -->
<!-- This math is inline: $a^2+b^2=c^2$.
This math is on a separate line: $$a^2+b^2=c^2$$
This math is on a separate line:
$$
a^2+b^2=c^2
$$ -->
2018-11-20 20:47:30 +05:30
2019-02-15 15:39:39 +05:30
### Task lists
2016-09-13 17:45:13 +05:30
2022-08-27 11:52:29 +05:30
> Inapplicable checkboxes [introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/85982) in GitLab 15.3.
2021-09-04 01:27:46 +05:30
[View this topic in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#task-lists).
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
You can add task lists anywhere Markdown is supported.
2016-09-13 17:45:13 +05:30
2022-07-23 23:45:48 +05:30
- In issues, merge requests, and comments, you can select the boxes.
- In all other places, you cannot select the boxes. You must edit the Markdown manually
2021-09-04 01:27:46 +05:30
by adding or removing an `x` in the brackets.
2022-08-27 11:52:29 +05:30
Besides complete and incomplete, tasks can also be **inapplicable**. Selecting an inapplicable checkbox
in an issue, merge request, or comment has no effect.
2021-09-04 01:27:46 +05:30
To create a task list, follow the format of an ordered or unordered list:
2019-09-30 21:07:59 +05:30
```markdown
2016-09-13 17:45:13 +05:30
- [x] Completed task
2022-08-27 11:52:29 +05:30
- [~] Inapplicable task
2016-09-13 17:45:13 +05:30
- [ ] Incomplete task
2022-08-27 11:52:29 +05:30
- [x] Sub-task 1
- [~] Sub-task 2
2019-09-30 21:07:59 +05:30
- [ ] Sub-task 3
2019-10-12 21:52:04 +05:30
2019-09-30 21:07:59 +05:30
1. [x] Completed task
2022-08-27 11:52:29 +05:30
1. [~] Inapplicable task
2019-09-30 21:07:59 +05:30
1. [ ] Incomplete task
2022-08-27 11:52:29 +05:30
1. [x] Sub-task 1
1. [~] Sub-task 2
1. [ ] Sub-task 3
2016-09-13 17:45:13 +05:30
```
2022-08-27 11:52:29 +05:30
![Task list as rendered by GitLab](img/completed_tasks_v15_3.png)
2017-08-17 22:00:37 +05:30
2020-04-22 19:07:51 +05:30
### Table of contents
2020-03-13 15:44:24 +05:30
2021-09-04 01:27:46 +05:30
A table of contents is an unordered list that links to subheadings in the document.
2021-09-30 23:02:18 +05:30
You can add a table of contents to issues and merge requests, but you can't add one
2021-12-11 22:18:48 +05:30
to notes or comments. Add either the `[[_TOC_]]` or `[TOC]` tag on its own line
to the **Description** field of any of the supported content types:
- Markdown files.
- Wiki pages.
- Issues.
- Merge requests.
2021-09-30 23:02:18 +05:30
2020-03-13 15:44:24 +05:30
```markdown
2021-12-11 22:18:48 +05:30
This sentence introduces my wiki page.
2020-04-22 19:07:51 +05:30
2020-03-13 15:44:24 +05:30
[[_TOC_]]
2020-04-22 19:07:51 +05:30
## My first heading
First section content.
## My second heading
Second section content.
2020-03-13 15:44:24 +05:30
```
2021-03-11 19:13:27 +05:30
![Preview of an auto-generated table of contents in a Wiki](img/markdown_toc_preview_v12_9.png)
2020-04-22 19:07:51 +05:30
2019-09-30 21:07:59 +05:30
### Wiki-specific Markdown
2017-08-17 22:00:37 +05:30
2021-09-04 01:27:46 +05:30
The following topics show how links inside wikis behave.
2016-09-13 17:45:13 +05:30
2020-04-22 19:07:51 +05:30
#### Wiki - direct page link
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
A direct page link includes the slug for a page that points to that page,
at the base level of the wiki.
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
This example links to a `documentation` page at the root of your wiki:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
[Link to Documentation](documentation)
```
2016-09-13 17:45:13 +05:30
2020-04-22 19:07:51 +05:30
#### Wiki - direct file link
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
A direct file link points to a file extension for a file, relative to the current page.
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
If the following example is on a page at `<your_wiki>/documentation/related`,
it links to `<your_wiki>/documentation/file.md`:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
[Link to File](file.md)
```
2016-09-13 17:45:13 +05:30
2020-04-22 19:07:51 +05:30
#### Wiki - hierarchical link
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
A hierarchical link can be constructed relative to the current wiki page by using `./<page>`,
2020-04-22 19:07:51 +05:30
`../<page>`, and so on.
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
If this example is on a page at `<your_wiki>/documentation/main`,
it links to `<your_wiki>/documentation/related`:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
2021-01-29 00:20:46 +05:30
[Link to Related Page](related)
2019-09-30 21:07:59 +05:30
```
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
If this example is on a page at `<your_wiki>/documentation/related/content`,
it links to `<your_wiki>/documentation/main`:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
[Link to Related Page](../main)
```
2017-08-17 22:00:37 +05:30
2021-09-04 01:27:46 +05:30
If this example is on a page at `<your_wiki>/documentation/main`,
it links to `<your_wiki>/documentation/related.md`:
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
```markdown
2021-01-29 00:20:46 +05:30
[Link to Related Page](related.md)
2019-09-30 21:07:59 +05:30
```
2017-08-17 22:00:37 +05:30
2021-09-04 01:27:46 +05:30
If this example is on a page at `<your_wiki>/documentation/related/content`,
it links to `<your_wiki>/documentation/main.md`:
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
```markdown
[Link to Related Page](../main.md)
```
2017-08-17 22:00:37 +05:30
2020-04-22 19:07:51 +05:30
#### Wiki - root link
2018-12-13 13:39:08 +05:30
2021-09-04 01:27:46 +05:30
A root link starts with a `/` and is relative to the wiki root.
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
This example links to `<wiki_root>/documentation`:
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
```markdown
[Link to Related Page](/documentation)
```
2017-08-17 22:00:37 +05:30
2021-09-04 01:27:46 +05:30
This example links to `<wiki_root>/miscellaneous.md`:
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
```markdown
[Link to Related Page](/miscellaneous.md)
```
2018-03-17 18:26:18 +05:30
2021-09-04 01:27:46 +05:30
## GitLab-specific references
GitLab Flavored Markdown renders GitLab-specific references. For example, you can reference
an issue, a commit, a team member, or even an entire project team. GitLab Flavored Markdown turns
2021-10-27 15:23:28 +05:30
that reference into a link so you can navigate between them. All references to projects should use the
2021-09-30 23:02:18 +05:30
**project slug** rather than the project name.
2021-09-04 01:27:46 +05:30
Additionally, GitLab Flavored Markdown recognizes certain cross-project references and also has a shorthand
version to reference other projects from the same namespace.
GitLab Flavored Markdown recognizes the following:
2022-05-07 20:08:51 +05:30
| references | input | cross-project reference | shortcut inside same namespace |
|:----------------------------------------------------------------------------|:------------------------------|:----------------------------------------|:-------------------------------|
| specific user | `@user_name` | | |
| specific group | `@group_name` | | |
| entire team | `@all` | | |
| project | `namespace/project>` | | |
| issue | ``#123`` | `namespace/project#123` | `project#123` |
| merge request | `!123` | `namespace/project!123` | `project!123` |
| snippet | `$123` | `namespace/project$123` | `project$123` |
| [epic](group/epics/index.md) | `&123` | `group1/subgroup&123` | |
2022-06-21 17:19:12 +05:30
| [iteration](group/iterations/index.md) | `*iteration:"iteration title"`| | |
2022-05-07 20:08:51 +05:30
| [vulnerability](application_security/vulnerabilities/index.md) <sup>1</sup> | `[vulnerability:123]` | `[vulnerability:namespace/project/123]` | `[vulnerability:project/123]` |
| feature flag | `[feature_flag:123]` | `[feature_flag:namespace/project/123]` | `[feature_flag:project/123]` |
| label by ID | `~123` | `namespace/project~123` | `project~123` |
| one-word label by name | `~bug` | `namespace/project~bug` | `project~bug` |
| multi-word label by name | `~"feature request"` | `namespace/project~"feature request"` | `project~"feature request"` |
| scoped label by name | `~"priority::high"` | `namespace/project~"priority::high"` | `project~"priority::high"` |
| project milestone by ID | `%123` | `namespace/project%123` | `project%123` |
| one-word milestone by name | `%v1.23` | `namespace/project%v1.23` | `project%v1.23` |
| multi-word milestone by name | `%"release candidate"` | `namespace/project%"release candidate"` | `project%"release candidate"` |
| specific commit | `9ba12248` | `namespace/project@9ba12248` | `project@9ba12248` |
| commit range comparison | `9ba12248...b19a04f5` | `namespace/project@9ba12248...b19a04f5` | `project@9ba12248...b19a04f5` |
| repository file references | `[README](doc/README.md)` | | |
| repository file line references | `[README](doc/README.md#L13)` | | |
| [alert](../operations/incident_management/alerts.md) | `^alert#123` | `namespace/project^alert#123` | `project^alert#123` |
| contact | `[contact:test@example.com]` | | |
2021-09-04 01:27:46 +05:30
1. [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/222483) in GitLab 13.7.
For example, referencing an issue by using `#123` formats the output as a link
to issue number 123 with text `#123`. Likewise, a link to issue number 123 is
recognized and formatted with text `#123`. If you don't want `#123` to link to an issue,
add a leading backslash `\#123`.
In addition to this, links to some objects are also recognized and formatted. Some examples of these are:
- Comments on issues: `"https://gitlab.com/gitlab-org/gitlab/-/issues/1234#note_101075757"`, which are rendered as `#1234 (comment 101075757)`
- The issues designs tab: `"https://gitlab.com/gitlab-org/gitlab/-/issues/1234/designs"`, which are rendered as `#1234 (designs)`.
- Links to individual designs: `"https://gitlab.com/gitlab-org/gitlab/-/issues/1234/designs/layout.png"`, which are rendered as `#1234[layout.png]`.
2022-01-26 12:08:38 +05:30
### Show the issue, merge request, or epic title in the reference
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/15694) in GitLab 14.6.
To include the title in the rendered link of an issue, merge request, or epic, add a plus (`+`)
at the end of the reference. For example, a reference like `#123+` is rendered as
`The issue title (#123)`.
URL references like `https://gitlab.com/gitlab-org/gitlab/-/issues/1234+` are also expanded.
2019-10-12 21:52:04 +05:30
### Embedding metrics in GitLab Flavored Markdown
2021-03-11 19:13:27 +05:30
Metric charts can be embedded in GitLab Flavored Markdown. Read
[Embedding Metrics in GitLab flavored Markdown](../operations/metrics/embed.md) for more details.
2019-10-12 21:52:04 +05:30
2021-09-04 01:27:46 +05:30
## Features extended from standard Markdown
2018-03-17 18:26:18 +05:30
2021-03-11 19:13:27 +05:30
All standard Markdown formatting should work as expected in GitLab. Some standard
2019-09-30 21:07:59 +05:30
functionality is extended with additional features, without affecting the standard usage.
2020-10-24 23:57:45 +05:30
If a functionality is extended, the new option is listed as a sub-section.
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
### Blockquotes
2018-03-17 18:26:18 +05:30
2021-03-11 19:13:27 +05:30
Use a blockquote to highlight information, such as a side note. It's generated
2019-09-30 21:07:59 +05:30
by starting the lines of the blockquote with `>`:
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
```markdown
2021-03-11 19:13:27 +05:30
> Blockquotes help you emulate reply text.
2019-09-30 21:07:59 +05:30
> This line is part of the same quote.
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
Quote break.
2018-03-17 18:26:18 +05:30
2021-12-11 22:18:48 +05:30
> This very long line is still quoted properly when it wraps. Keep writing to make sure this line is long enough to actually wrap for everyone. You can also *add* **Markdown** into a blockquote.
2019-09-30 21:07:59 +05:30
```
2018-03-17 18:26:18 +05:30
2021-03-11 19:13:27 +05:30
> Blockquotes help you emulate reply text.
2019-09-30 21:07:59 +05:30
> This line is part of the same quote.
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
Quote break.
2018-03-17 18:26:18 +05:30
2021-12-11 22:18:48 +05:30
> This very long line is still quoted properly when it wraps. Keep writing to make sure this line is long enough to actually wrap for everyone. You can also *add* **Markdown** into a blockquote.
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
#### Multiline blockquote
2018-03-17 18:26:18 +05:30
2021-09-04 01:27:46 +05:30
If this section isn't rendered correctly, [view it in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#multiline-blockquote).
2018-03-17 18:26:18 +05:30
2021-04-17 20:07:23 +05:30
GitLab Flavored Markdown extends the standard Markdown by also supporting multi-line blockquotes
2022-10-11 01:57:18 +05:30
fenced by `>>>`, with a blank line before and after the block:
2018-03-17 18:26:18 +05:30
2020-04-08 14:13:33 +05:30
```markdown
2022-10-11 01:57:18 +05:30
2019-09-30 21:07:59 +05:30
>>>
If you paste a message from somewhere else
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
that spans multiple lines,
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
you can quote that without having to manually prepend `>` to every line!
>>>
2022-10-11 01:57:18 +05:30
2019-09-04 21:01:54 +05:30
```
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
>>>
If you paste a message from somewhere else
2018-03-17 18:26:18 +05:30
2019-09-30 21:07:59 +05:30
that spans multiple lines,
2019-02-15 15:39:39 +05:30
2019-09-30 21:07:59 +05:30
you can quote that without having to manually prepend `>` to every line!
>>>
2019-02-15 15:39:39 +05:30
2019-09-30 21:07:59 +05:30
### Code spans and blocks
2019-02-15 15:39:39 +05:30
2021-03-11 19:13:27 +05:30
You can highlight anything that should be viewed as code and not standard text.
2019-02-15 15:39:39 +05:30
2021-03-11 19:13:27 +05:30
Inline code is highlighted with single backticks `` ` ``:
2019-02-15 15:39:39 +05:30
2019-09-30 21:07:59 +05:30
```markdown
Inline `code` has `back-ticks around` it.
```
2019-02-15 15:39:39 +05:30
2019-09-30 21:07:59 +05:30
Inline `code` has `back-ticks around` it.
2019-02-15 15:39:39 +05:30
2019-09-30 21:07:59 +05:30
---
2019-02-15 15:39:39 +05:30
2021-03-11 19:13:27 +05:30
To achieve a similar effect for a larger code example, you can:
- Fence an entire block of code with triple backticks (```` ``` ````).
- Fence an entire block of code with triple tildes (`~~~`).
- Indent it four or more spaces.
2019-02-15 15:39:39 +05:30
2020-04-08 14:13:33 +05:30
````markdown
```python
2019-09-30 21:07:59 +05:30
def function():
#indenting works just fine in the fenced code block
s = "Python code"
print s
```
2019-02-15 15:39:39 +05:30
2019-09-30 21:07:59 +05:30
Using 4 spaces
is like using
3-backtick fences.
2020-04-08 14:13:33 +05:30
````
2019-02-15 15:39:39 +05:30
2020-04-08 14:13:33 +05:30
```plaintext
2019-09-30 21:07:59 +05:30
~~~
Tildes are OK too.
~~~
2019-02-15 15:39:39 +05:30
```
2019-09-30 21:07:59 +05:30
The three examples above render as:
2017-08-17 22:00:37 +05:30
2020-04-08 14:13:33 +05:30
```python
2019-09-30 21:07:59 +05:30
def function():
#indenting works just fine in the fenced code block
s = "Python code"
print s
```
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
```plaintext
2019-09-30 21:07:59 +05:30
Using 4 spaces
is like using
3-backtick fences.
```
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
```plaintext
2019-09-30 21:07:59 +05:30
Tildes are OK too.
2020-04-08 14:13:33 +05:30
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
#### Colored code and syntax highlighting
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
If this section isn't rendered correctly,
2021-09-04 01:27:46 +05:30
[view it in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#colored-code-and-syntax-highlighting).
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
GitLab uses the [Rouge Ruby library](http://rouge.jneen.net/) for more colorful syntax
highlighting in code blocks. For a list of supported languages visit the
2019-12-21 20:55:43 +05:30
[Rouge project wiki](https://github.com/rouge-ruby/rouge/wiki/List-of-supported-languages-and-lexers).
2021-03-11 19:13:27 +05:30
Syntax highlighting is supported only in code blocks, so you can't highlight inline code.
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
To fence and apply syntax highlighting to a block of code, append the code language
to the opening code declaration, three back-ticks (```` ``` ````) or three tildes (`~~~`):
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
````markdown
2019-09-30 21:07:59 +05:30
```javascript
var s = "JavaScript syntax highlighting";
alert(s);
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```python
def function():
#indenting works just fine in the fenced code block
s = "Python syntax highlighting"
print s
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```
2016-09-13 17:45:13 +05:30
```
2019-09-30 21:07:59 +05:30
No language indicated, so no syntax highlighting.
2021-12-11 22:18:48 +05:30
s = "No highlighting is shown for this line."
2019-09-30 21:07:59 +05:30
But let's throw in a <b>tag</b>.
2016-09-13 17:45:13 +05:30
```
2020-04-08 14:13:33 +05:30
````
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
The four examples above render as:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```javascript
var s = "JavaScript syntax highlighting";
alert(s);
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```python
def function():
#indenting works just fine in the fenced code block
s = "Python syntax highlighting"
print s
```
```ruby
require 'redcarpet'
markdown = Redcarpet.new("Hello World!")
puts markdown.to_html
```
2020-04-08 14:13:33 +05:30
```plaintext
2019-09-30 21:07:59 +05:30
No language indicated, so no syntax highlighting.
2021-12-11 22:18:48 +05:30
s = "No highlighting is shown for this line."
2019-09-30 21:07:59 +05:30
But let's throw in a <b>tag</b>.
```
2016-09-13 17:45:13 +05:30
2017-08-17 22:00:37 +05:30
### Emphasis
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
In Markdown, you can emphasize text in multiple ways. You can italicize, bold, strikethrough,
2021-03-11 19:13:27 +05:30
and combine these emphasis styles together.
2021-04-17 20:07:23 +05:30
Strikethrough is not part of the core Markdown standard, but is part of GitLab Flavored Markdown.
2019-09-30 21:07:59 +05:30
2018-11-08 19:23:39 +05:30
Examples:
2019-09-30 21:07:59 +05:30
```markdown
2016-09-13 17:45:13 +05:30
Emphasis, aka italics, with *asterisks* or _underscores_.
2019-09-30 21:07:59 +05:30
Strong emphasis, aka bold, with double **asterisks** or __underscores__.
2016-09-13 17:45:13 +05:30
Combined emphasis with **asterisks and _underscores_**.
Strikethrough uses two tildes. ~~Scratch this.~~
```
2022-10-11 01:57:18 +05:30
<!-- markdownlint-disable MD050 -->
2016-09-13 17:45:13 +05:30
Emphasis, aka italics, with *asterisks* or _underscores_.
2019-09-30 21:07:59 +05:30
Strong emphasis, aka bold, with double **asterisks** or __underscores__.
2016-09-13 17:45:13 +05:30
Combined emphasis with **asterisks and _underscores_**.
Strikethrough uses two tildes. ~~Scratch this.~~
2022-10-11 01:57:18 +05:30
<!-- markdownlint-enable MD050 -->
2019-09-30 21:07:59 +05:30
#### Multiple underscores in words and mid-word emphasis
2018-11-08 19:23:39 +05:30
2021-03-11 19:13:27 +05:30
If this section isn't rendered correctly,
2021-09-04 01:27:46 +05:30
[view it in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#multiple-underscores-in-words).
2019-09-30 21:07:59 +05:30
2021-03-11 19:13:27 +05:30
Avoid italicizing a portion of a word, especially when you're
dealing with code and names that often appear with multiple underscores.
2021-04-17 20:07:23 +05:30
GitLab Flavored Markdown extends the standard Markdown standard by ignoring multiple underlines in words,
2020-01-01 13:55:28 +05:30
to allow better rendering of Markdown documents discussing code:
2019-09-30 21:07:59 +05:30
2020-04-08 14:13:33 +05:30
```markdown
2019-09-30 21:07:59 +05:30
perform_complicated_task
do_this_and_do_that_and_another_thing
but_emphasis is_desired _here_
2018-12-13 13:39:08 +05:30
```
2016-09-13 17:45:13 +05:30
2022-07-23 23:45:48 +05:30
<!-- vale gitlab.Spelling = NO -->
2019-09-30 21:07:59 +05:30
perform_complicated_task
do_this_and_do_that_and_another_thing
but_emphasis is_desired _here_
2022-07-23 23:45:48 +05:30
<!-- vale gitlab.Spelling = YES -->
2019-09-30 21:07:59 +05:30
---
If you wish to emphasize only a part of a word, it can still be done with asterisks:
2020-05-24 23:13:21 +05:30
```markdown
2019-09-30 21:07:59 +05:30
perform*complicated*task
do*this*and*do*that*and*another thing
2016-09-13 17:45:13 +05:30
```
2019-09-30 21:07:59 +05:30
perform*complicated*task
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
do*this*and*do*that*and*another thing
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
### Footnotes
2016-09-13 17:45:13 +05:30
2020-10-24 23:57:45 +05:30
Footnotes add a link to a note that are rendered at the end of a Markdown file.
2020-03-13 15:44:24 +05:30
2020-04-22 19:07:51 +05:30
To make a footnote, you need both a reference tag and a separate line (anywhere in the file) with
the note content.
2020-03-13 15:44:24 +05:30
2020-04-22 19:07:51 +05:30
Regardless of the tag names, the relative order of the reference tags determines the rendered
numbering.
2020-05-24 23:13:21 +05:30
<!--
2022-06-21 17:19:12 +05:30
The following codeblock uses HTML to skip the Vale ReferenceLinks test.
Do not change it back to a markdown codeblock.
2020-05-24 23:13:21 +05:30
-->
<pre class="highlight"><code>A footnote reference tag looks like this: [^1]
2020-03-13 15:44:24 +05:30
2020-04-22 19:07:51 +05:30
This reference tag is a mix of letters and numbers. [^footnote-42]
2020-03-13 15:44:24 +05:30
2021-12-11 22:18:48 +05:30
&#91;^1]: This text is inside a footnote.
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
&#91;^footnote-42]: This text is another footnote.
2020-05-24 23:13:21 +05:30
</code></pre>
2016-09-13 17:45:13 +05:30
2020-03-13 15:44:24 +05:30
A footnote reference tag looks like this:[^1]
2019-09-30 21:07:59 +05:30
2020-04-22 19:07:51 +05:30
This reference tag is a mix of letters and numbers.[^footnote-42]
2020-03-13 15:44:24 +05:30
2020-05-24 23:13:21 +05:30
<!--
Do not delete the single space before the [^1] and [^footnotes] references below.
These are used to force the Vale ReferenceLinks check to skip these examples.
-->
2021-12-11 22:18:48 +05:30
[^1]: This text is inside a footnote.
2020-03-13 15:44:24 +05:30
2021-12-11 22:18:48 +05:30
[^footnote-42]: This text is another footnote.
2019-09-30 21:07:59 +05:30
### Headers
```markdown
# H1
## H2
### H3
#### H4
##### H5
###### H6
Alternatively, for H1 and H2, an underline-ish style:
Alt-H1
======
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
Alt-H2
------
2016-09-13 17:45:13 +05:30
```
2019-09-30 21:07:59 +05:30
#### Header IDs and links
2018-11-08 19:23:39 +05:30
2021-04-17 20:07:23 +05:30
GitLab Flavored Markdown extends the standard Markdown standard so that all Markdown-rendered headers automatically
2019-09-30 21:07:59 +05:30
get IDs, which can be linked to, except in comments.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
On hover, a link to those IDs becomes visible to make it easier to copy the link to
the header to use it somewhere else.
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
The IDs are generated from the content of the header according to the following rules:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
1. All text is converted to lowercase.
2020-04-22 19:07:51 +05:30
1. All non-word text (such as punctuation or HTML) is removed.
2019-09-30 21:07:59 +05:30
1. All spaces are converted to hyphens.
1. Two or more hyphens in a row are converted to one.
1. If a header with the same ID has already been generated, a unique
incrementing number is appended, starting at 1.
2018-11-08 19:23:39 +05:30
Example:
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
```markdown
2019-09-30 21:07:59 +05:30
# This header has spaces in it
## This header has a :thumbsup: in it
# This header has Unicode in it: 한글
## This header has spaces in it
### This header has spaces in it
## This header has 3.5 in it (and parentheses)
2016-09-13 17:45:13 +05:30
```
2019-09-30 21:07:59 +05:30
Would generate the following link IDs:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
1. `this-header-has-spaces-in-it`
1. `this-header-has-a-in-it`
1. `this-header-has-unicode-in-it-한글`
1. `this-header-has-spaces-in-it-1`
1. `this-header-has-spaces-in-it-2`
1. `this-header-has-3-5-in-it-and-parentheses`
2018-11-08 19:23:39 +05:30
2021-12-11 22:18:48 +05:30
Emoji processing happens before the header IDs are generated. The
emoji is converted to an image, which is then removed from the ID.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
### Horizontal Rule
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
Create a horizontal rule by using three or more hyphens, asterisks, or underscores:
2016-09-13 17:45:13 +05:30
2019-07-31 22:56:46 +05:30
```markdown
2019-09-30 21:07:59 +05:30
Three or more hyphens,
---
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
asterisks,
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
***
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
or underscores
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
___
2019-07-31 22:56:46 +05:30
```
2016-09-13 17:45:13 +05:30
2017-08-17 22:00:37 +05:30
### Images
2016-09-13 17:45:13 +05:30
2018-11-08 19:23:39 +05:30
Examples:
2020-05-24 23:13:21 +05:30
<!--
2022-06-21 17:19:12 +05:30
The following codeblock uses HTML to skip the Vale ReferenceLinks test.
Do not change it back to a markdown codeblock.
2020-05-24 23:13:21 +05:30
-->
<pre class="highlight"><code>Inline-style (hover to see title text):
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
![alt text](img/markdown_logo.png "Title Text")
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Reference-style (hover to see title text):
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
![alt text1][logo]
2018-11-08 19:23:39 +05:30
2020-05-24 23:13:21 +05:30
&#91;logo]: img/markdown_logo.png "Title Text"
</code></pre>
2016-09-13 17:45:13 +05:30
2020-03-13 15:44:24 +05:30
<!--
2021-12-11 22:18:48 +05:30
DO NOT change the name of markdown_logo.png. This file is used for a test in
2020-05-24 23:13:21 +05:30
spec/controllers/help_controller_spec.rb.
2020-03-13 15:44:24 +05:30
-->
2019-09-30 21:07:59 +05:30
Inline-style (hover to see title text):
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
![alt text](img/markdown_logo.png "Title Text")
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Reference-style (hover to see title text):
2016-09-13 17:45:13 +05:30
2020-05-24 23:13:21 +05:30
<!--
The example below uses an in-line link to pass the Vale ReferenceLinks test.
Do not change to a reference style link.
-->
2016-09-13 17:45:13 +05:30
2020-05-24 23:13:21 +05:30
![alt text](img/markdown_logo.png "Title Text")
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
In the rare case where you must set a specific height or width for an image,
2021-11-18 22:05:49 +05:30
you can use the `img` HTML tag instead of Markdown and set its `height` and
`width` parameters.
2019-09-30 21:07:59 +05:30
#### Videos
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
If this section isn't rendered correctly, [view it in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#videos).
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
Image tags that link to files with a video extension are automatically converted to
a video player. The valid video extensions are `.mp4`, `.m4v`, `.mov`, `.webm`, and `.ogv`:
2016-09-13 17:45:13 +05:30
2020-05-24 23:13:21 +05:30
```markdown
2019-09-30 21:07:59 +05:30
Here's a sample video:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
![Sample Video](img/markdown_video.mp4)
2016-09-13 17:45:13 +05:30
```
2019-09-30 21:07:59 +05:30
Here's a sample video:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
![Sample Video](img/markdown_video.mp4)
2016-09-13 17:45:13 +05:30
2019-12-21 20:55:43 +05:30
#### Audio
2021-09-04 01:27:46 +05:30
If this section isn't rendered correctly, [view it in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#audio).
2019-12-21 20:55:43 +05:30
Similar to videos, link tags for files with an audio extension are automatically converted to
2020-01-01 13:55:28 +05:30
an audio player. The valid audio extensions are `.mp3`, `.oga`, `.ogg`, `.spx`, and `.wav`:
2019-12-21 20:55:43 +05:30
2020-05-24 23:13:21 +05:30
```markdown
2019-12-21 20:55:43 +05:30
Here's a sample audio clip:
![Sample Audio](img/markdown_audio.mp3)
```
Here's a sample audio clip:
![Sample Audio](img/markdown_audio.mp3)
2017-08-17 22:00:37 +05:30
### Inline HTML
2016-09-13 17:45:13 +05:30
2022-01-26 12:08:38 +05:30
> Allowing `rel="license"` [introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/20857) in GitLab 14.6.
2021-03-11 19:13:27 +05:30
To see the second example of Markdown rendered in HTML,
2021-09-04 01:27:46 +05:30
[view it in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#inline-html).
2016-09-13 17:45:13 +05:30
2020-10-24 23:57:45 +05:30
You can also use raw HTML in your Markdown, and it usually works pretty well.
2016-09-13 17:45:13 +05:30
2020-04-22 19:07:51 +05:30
See the documentation for HTML::Pipeline's [SanitizationFilter](https://github.com/jch/html-pipeline/blob/v2.12.3/lib/html/pipeline/sanitization_filter.rb#L42)
2020-03-13 15:44:24 +05:30
class for the list of allowed HTML tags and attributes. In addition to the default
2020-06-23 00:09:42 +05:30
`SanitizationFilter` allowlist, GitLab allows `span`, `abbr`, `details` and `summary` elements.
2022-01-26 12:08:38 +05:30
`rel="license"` is allowed on links to support the [Rel-License microformat](https://microformats.org/wiki/rel-license) and license attribution.
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
```html
2016-09-13 17:45:13 +05:30
<dl>
<dt>Definition list</dt>
<dd>Is something people use sometimes.</dd>
<dt>Markdown in HTML</dt>
2020-10-24 23:57:45 +05:30
<dd>Does *not* work **very** well. HTML <em>tags</em> do <b>work</b>, in most cases.</dd>
2016-09-13 17:45:13 +05:30
</dl>
```
<dl>
<dt>Definition list</dt>
<dd>Is something people use sometimes.</dd>
<dt>Markdown in HTML</dt>
2020-10-24 23:57:45 +05:30
<dd>Does *not* work **very** well. HTML <em>tags</em> do <b>work</b>, in most cases.</dd>
2019-09-30 21:07:59 +05:30
</dl>
---
2020-04-22 19:07:51 +05:30
It's still possible to use Markdown inside HTML tags, but only if the lines containing Markdown
2019-09-30 21:07:59 +05:30
are separated into their own lines:
```html
<dl>
<dt>Markdown in HTML</dt>
2020-10-24 23:57:45 +05:30
<dd>Does *not* work **very** well. HTML tags work, in most cases.</dd>
2019-09-30 21:07:59 +05:30
<dt>Markdown in HTML</dt>
<dd>
2020-10-24 23:57:45 +05:30
Does *not* work **very** well. HTML tags work, in most cases.
2019-09-30 21:07:59 +05:30
</dd>
</dl>
```
2020-05-24 23:13:21 +05:30
<!--
2021-02-22 17:27:13 +05:30
The example below uses HTML to force correct rendering on docs.gitlab.com,
2020-10-24 23:57:45 +05:30
Markdown is fine in GitLab.
2020-05-24 23:13:21 +05:30
-->
2019-09-30 21:07:59 +05:30
<dl>
<dt>Markdown in HTML</dt>
2020-10-24 23:57:45 +05:30
<dd>Does *not* work **very** well. HTML tags work, in most cases.</dd>
2019-09-30 21:07:59 +05:30
<dt>Markdown in HTML</dt>
<dd>
2020-10-24 23:57:45 +05:30
Does <em>not</em> work <b>very</b> well. HTML tags work, in most cases.
2019-09-30 21:07:59 +05:30
</dd>
2016-09-13 17:45:13 +05:30
</dl>
2021-06-08 01:23:25 +05:30
#### Collapsible section
2018-03-17 18:26:18 +05:30
2021-03-11 19:13:27 +05:30
To see the second Markdown example rendered in HTML,
2021-09-04 01:27:46 +05:30
[view it in GitLab](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#details-and-summary).
2019-09-30 21:07:59 +05:30
Content can be collapsed using HTML's [`<details>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/details)
and [`<summary>`](https://developer.mozilla.org/en-US/docs/Web/HTML/Element/summary)
2021-03-11 19:13:27 +05:30
tags. For example, collapse a long log file so it takes up less screen space.
2019-09-30 21:07:59 +05:30
```html
<p>
<details>
2020-04-22 19:07:51 +05:30
<summary>Click this to collapse/fold.</summary>
2019-09-30 21:07:59 +05:30
2020-10-24 23:57:45 +05:30
These details <em>remain</em> <strong>hidden</strong> until expanded.
2019-09-30 21:07:59 +05:30
<pre><code>PASTE LOGS HERE</code></pre>
</details>
</p>
```
2018-03-17 18:26:18 +05:30
<p>
<details>
2020-04-22 19:07:51 +05:30
<summary>Click this to collapse/fold.</summary>
2018-11-08 19:23:39 +05:30
2020-10-24 23:57:45 +05:30
These details <em>remain</em> <strong>hidden</strong> until expanded.
2018-03-17 18:26:18 +05:30
<pre><code>PASTE LOGS HERE</code></pre>
2018-11-08 19:23:39 +05:30
2018-03-17 18:26:18 +05:30
</details>
</p>
2019-09-30 21:07:59 +05:30
---
2021-03-11 19:13:27 +05:30
Markdown inside these tags is also supported.
2020-04-22 19:07:51 +05:30
2021-02-22 17:27:13 +05:30
NOTE:
2020-06-23 00:09:42 +05:30
If your Markdown isn't rendering correctly, try adding
`{::options parse_block_html="true" /}` to the top of the page, and add
`markdown="span"` to the opening summary tag like this: `<summary markdown="span">`.
2020-04-22 19:07:51 +05:30
Remember to leave a blank line after the `</summary>` tag and before the `</details>` tag,
as shown in the example:
2018-03-17 18:26:18 +05:30
2019-12-04 20:38:33 +05:30
````html
2018-03-17 18:26:18 +05:30
<details>
2020-04-22 19:07:51 +05:30
<summary>Click this to collapse/fold.</summary>
2018-03-17 18:26:18 +05:30
2020-10-24 23:57:45 +05:30
These details _remain_ **hidden** until expanded.
2018-11-08 19:23:39 +05:30
2019-12-04 20:38:33 +05:30
```
2019-10-12 21:52:04 +05:30
PASTE LOGS HERE
2019-12-04 20:38:33 +05:30
```
2018-11-08 19:23:39 +05:30
2018-03-17 18:26:18 +05:30
</details>
2019-12-04 20:38:33 +05:30
````
2018-03-17 18:26:18 +05:30
2020-05-24 23:13:21 +05:30
<!--
The example below uses HTML to force correct rendering on docs.gitlab.com, Markdown
2020-10-24 23:57:45 +05:30
works correctly in GitLab.
2020-05-24 23:13:21 +05:30
-->
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
<details>
2020-04-22 19:07:51 +05:30
<summary>Click this to collapse/fold.</summary>
2018-11-08 19:23:39 +05:30
2020-10-24 23:57:45 +05:30
These details <em>remain</em> <b>hidden</b> until expanded.
2016-09-13 17:45:13 +05:30
2019-12-04 20:38:33 +05:30
<pre><code>PASTE LOGS HERE</code></pre>
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
</details>
2016-09-13 17:45:13 +05:30
2020-04-22 19:07:51 +05:30
### Line breaks
2016-09-13 17:45:13 +05:30
2020-10-24 23:57:45 +05:30
A line break is inserted (a new paragraph starts) if the previous text is
2021-12-11 22:18:48 +05:30
ended with two newlines, like when you press <kbd>Enter</kbd> twice in a row. If you only
use one newline (select <kbd>Enter</kbd> once), the next sentence remains part of the
2021-03-11 19:13:27 +05:30
same paragraph. Use this approach if you want to keep long lines from wrapping, and keep
2020-07-28 23:09:34 +05:30
them editable:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
Here's a line for us to start with.
2016-09-13 17:45:13 +05:30
2020-10-24 23:57:45 +05:30
This longer line is separated from the one above by two newlines, so it is a *separate paragraph*.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
This line is also a separate paragraph, but...
These lines are only separated by single newlines,
so they *do not break* and just follow the previous lines
in the *same paragraph*.
```
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
Here's a line for us to start with.
2016-09-13 17:45:13 +05:30
2020-10-24 23:57:45 +05:30
This longer line is separated from the one above by two newlines, so it is a *separate paragraph*.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
This line is also a separate paragraph, but...
These lines are only separated by single newlines,
so they *do not break* and just follow the previous lines
in the *same paragraph*.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
#### Newlines
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
GitLab Flavored Markdown adheres to the Markdown specification for handling
[paragraphs and line breaks](https://spec.commonmark.org/current/).
2016-09-13 17:45:13 +05:30
2020-04-22 19:07:51 +05:30
A paragraph is one or more consecutive lines of text, separated by one or
more blank lines (two newlines at the end of the first paragraph), as [explained above](#line-breaks).
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
Need more control over line breaks or soft returns? Add a single line break
2020-10-24 23:57:45 +05:30
by ending a line with a backslash, or two or more spaces. Two newlines in a row create a new
2019-09-30 21:07:59 +05:30
paragraph, with a blank line in between:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
First paragraph.
Another line in the same paragraph.
A third line in the same paragraph, but this time ending with two spaces.{space}{space}
A new line directly under the first paragraph.
Second paragraph.
Another line, this time ending with a backslash.\
A new line due to the previous backslash.
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
### Links
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
You can create links two ways: inline-style and reference-style. For example:
2017-08-17 22:00:37 +05:30
2020-05-24 23:13:21 +05:30
<!--
2022-06-21 17:19:12 +05:30
The following codeblock uses HTML to skip the Vale ReferenceLinks test.
Do not change it back to a markdown codeblock.
2020-05-24 23:13:21 +05:30
-->
2021-12-11 22:18:48 +05:30
<pre class="highlight"><code>- This line shows an [inline-style link](https://www.google.com)
2022-06-21 17:19:12 +05:30
- This line shows a [link to a repository file in the same directory](permissions.md)
- This line shows a [relative link to a file one directory higher](../index.md)
2021-12-11 22:18:48 +05:30
- This line shows a [link that also has title text](https://www.google.com "This link takes you to Google!")
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Using header ID anchors:
2016-09-13 17:45:13 +05:30
2022-06-21 17:19:12 +05:30
- This line links to [a section on a different Markdown page, using a "#" and the header ID](permissions.md#project-features-permissions)
2021-12-11 22:18:48 +05:30
- This line links to [a different section on the same page, using a "#" and the header ID](#header-ids-and-links)
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
Using references:
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
- This line shows a [reference-style link, see below][Arbitrary case-insensitive reference text]
2019-09-30 21:07:59 +05:30
- You can [use numbers for reference-style link definitions, see below][1]
- Or leave it empty and use the [link text itself][], see below.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Some text to show that the reference links can follow later.
2017-08-17 22:00:37 +05:30
2020-05-24 23:13:21 +05:30
&#91;arbitrary case-insensitive reference text]: https://www.mozilla.org/en-US/
&#91;1]: https://slashdot.org
&#91;link text itself]: https://www.reddit.com
</code></pre>
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
- This line shows an [inline-style link](https://www.google.com)
2022-06-21 17:19:12 +05:30
- This line shows a [link to a repository file in the same directory](permissions.md)
- This line shows a [relative link to a file one directory higher](../index.md)
2021-12-11 22:18:48 +05:30
- This line shows a [link that also has title text](https://www.google.com "This link takes you to Google!")
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Using header ID anchors:
2016-09-13 17:45:13 +05:30
2022-06-21 17:19:12 +05:30
- This line links to [a section on a different Markdown page, using a "#" and the header ID](permissions.md#project-features-permissions)
2021-12-11 22:18:48 +05:30
- This line links to [a different section on the same page, using a "#" and the header ID](#header-ids-and-links)
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
Using references:
2016-09-13 17:45:13 +05:30
2020-05-24 23:13:21 +05:30
<!--
The example below uses in-line links to pass the Vale ReferenceLinks test.
Do not change to reference style links.
-->
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
- This line is a [reference-style link, see below](https://www.mozilla.org/en-US/)
2020-05-24 23:13:21 +05:30
- You can [use numbers for reference-style link definitions, see below](https://slashdot.org)
- Or leave it empty and use the [link text itself](https://www.reddit.com), see below.
2016-09-13 17:45:13 +05:30
2020-05-24 23:13:21 +05:30
Some text to show that the reference links can follow later.
2016-09-13 17:45:13 +05:30
2021-02-22 17:27:13 +05:30
NOTE:
2020-07-28 23:09:34 +05:30
Relative links do not allow the referencing of project files in a wiki
2021-12-11 22:18:48 +05:30
page, or a wiki page in a project file. The reason: a wiki is always
2019-09-30 21:07:59 +05:30
in a separate Git repository in GitLab. For example, `[I'm a reference-style link](style)`
2020-10-24 23:57:45 +05:30
points the link to `wikis/style` only when the link is inside of a wiki Markdown file.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
#### URL auto-linking
2016-09-13 17:45:13 +05:30
2021-04-17 20:07:23 +05:30
GitLab Flavored Markdown auto-links almost any URL you put into your text:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
- https://www.google.com
2019-12-21 20:55:43 +05:30
- https://www.google.com
2019-09-30 21:07:59 +05:30
- ftp://ftp.us.debian.org/debian/
- smb://foo/bar/baz
2019-12-04 20:38:33 +05:30
- irc://irc.freenode.net/
2019-09-30 21:07:59 +05:30
- http://localhost:3000
2016-09-13 17:45:13 +05:30
```
2021-03-11 19:13:27 +05:30
<!-- vale gitlab.Spelling = NO -->
2019-09-30 21:07:59 +05:30
- <https://www.google.com>
2019-12-21 20:55:43 +05:30
- <https://www.google.com>
2019-09-30 21:07:59 +05:30
- <ftp://ftp.us.debian.org/debian/>
- <smb://foo/bar/baz>
2019-12-04 20:38:33 +05:30
- <irc://irc.freenode.net/>
2019-09-30 21:07:59 +05:30
- <http://localhost:3000>
2018-11-08 19:23:39 +05:30
2021-03-11 19:13:27 +05:30
<!-- vale gitlab.Spelling = YES -->
2019-09-30 21:07:59 +05:30
### Lists
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
You can create ordered and unordered lists.
2019-12-04 20:38:33 +05:30
For an ordered list, add the number you want the list
2019-10-12 21:52:04 +05:30
to start with, like `1.`, followed by a space, at the start of each line for ordered lists.
2021-12-11 22:18:48 +05:30
After the first number, it does not matter what number you use. Ordered lists are
2019-10-12 21:52:04 +05:30
numbered automatically by vertical order, so repeating `1.` for all items in the
2020-10-24 23:57:45 +05:30
same list is common. If you start with a number other than `1.`, it uses that as the first
2021-12-11 22:18:48 +05:30
number, and counts up from there.
2016-11-03 12:29:30 +05:30
2019-09-30 21:07:59 +05:30
Examples:
2020-05-24 23:13:21 +05:30
```markdown
2019-09-30 21:07:59 +05:30
1. First ordered list item
2. Another item
- Unordered sub-list.
1. Actual numbers don't matter, just that it's a number
1. Ordered sub-list
1. Next ordered sub-list item
4. And another item.
2016-11-03 12:29:30 +05:30
```
2016-09-13 17:45:13 +05:30
2020-05-24 23:13:21 +05:30
<!--
The "2." and "4." in the example above are changed to "1." below, to match the style
standards on docs.gitlab.com.
2021-04-17 20:07:23 +05:30
See https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#lists
2020-05-24 23:13:21 +05:30
-->
2019-10-12 21:52:04 +05:30
2019-09-30 21:07:59 +05:30
1. First ordered list item
2019-10-12 21:52:04 +05:30
1. Another item
2019-09-30 21:07:59 +05:30
- Unordered sub-list.
1. Actual numbers don't matter, just that it's a number
1. Ordered sub-list
1. Next ordered sub-list item
2019-10-12 21:52:04 +05:30
1. And another item.
2019-12-04 20:38:33 +05:30
For an unordered list, add a `-`, `*` or `+`, followed by a space, at the start of
each line for unordered lists, but you should not use a mix of them.
2020-05-24 23:13:21 +05:30
```markdown
2019-12-04 20:38:33 +05:30
Unordered lists can:
- use
- minuses
They can also:
* use
* asterisks
They can even:
+ use
+ pluses
```
2020-05-24 23:13:21 +05:30
<!--
The "*" and "+" in the example above are changed to "-" below, to match the style
standards on docs.gitlab.com.
2021-04-17 20:07:23 +05:30
See https://docs.gitlab.com/ee/development/documentation/styleguide/index.html#lists
2020-05-24 23:13:21 +05:30
-->
2019-12-04 20:38:33 +05:30
Unordered lists can:
- use
- minuses
They can also:
- use
- asterisks
2019-09-30 21:07:59 +05:30
2019-12-04 20:38:33 +05:30
They can even:
2019-10-12 21:52:04 +05:30
2019-12-04 20:38:33 +05:30
- use
- pluses
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
---
2017-08-17 22:00:37 +05:30
2019-09-30 21:07:59 +05:30
If a list item contains multiple paragraphs, each subsequent paragraph should be indented
to the same level as the start of the list item text.
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
Example:
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
```markdown
1. First ordered list item
2018-11-08 19:23:39 +05:30
2019-09-30 21:07:59 +05:30
Second paragraph of first item.
2018-11-08 19:23:39 +05:30
2019-10-12 21:52:04 +05:30
1. Another item
2019-09-30 21:07:59 +05:30
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
1. First ordered list item
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Second paragraph of first item.
2016-09-13 17:45:13 +05:30
2019-10-12 21:52:04 +05:30
1. Another item
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
---
2016-09-13 17:45:13 +05:30
2021-12-11 22:18:48 +05:30
If the first item's paragraph isn't indented with the proper number of spaces,
2020-10-24 23:57:45 +05:30
the paragraph appears outside the list, instead of properly indented under the list item.
2021-12-11 22:18:48 +05:30
For example:
2016-09-13 17:45:13 +05:30
2020-04-08 14:13:33 +05:30
```markdown
2019-09-30 21:07:59 +05:30
1. First ordered list item
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Paragraph of first item.
2016-09-13 17:45:13 +05:30
2019-10-12 21:52:04 +05:30
1. Another item
2016-09-13 17:45:13 +05:30
```
2019-09-30 21:07:59 +05:30
1. First ordered list item
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Paragraph of first item.
2016-09-13 17:45:13 +05:30
2019-10-12 21:52:04 +05:30
1. Another item
2019-09-30 21:07:59 +05:30
2022-08-27 11:52:29 +05:30
---
Ordered lists that are the first sub-item of an unordered list item must have a preceding blank line if they don't start with `1.`.
**Good**
```markdown
- Unordered list item
5. First ordered list item
```
**Bad**
```markdown
- Unordered list item
5. First ordered list item
```
---
CommonMark ignores blank lines between ordered and unordered list items, and considers them part of a single list. These are rendered as a
_[loose](https://spec.commonmark.org/0.30/#loose)_ list. Each list item is enclosed in a paragraph tag and, therefore, has paragraph spacing and margins.
This makes the list look like there is extra spacing between each item.
For example:
```markdown
- First list item
- Second list item
- A different list
```
CommonMark ignores the blank line and renders this as one list with paragraph spacing.
2019-09-30 21:07:59 +05:30
### Superscripts / Subscripts
2016-09-13 17:45:13 +05:30
2021-04-17 20:07:23 +05:30
CommonMark and GitLab Flavored Markdown don't support the Redcarpet superscript syntax ( `x^2` ).
2021-03-11 19:13:27 +05:30
Use the standard HTML syntax for superscripts and subscripts:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```html
The formula for water is H<sub>2</sub>O
while the equation for the theory of relativity is E = mc<sup>2</sup>.
```
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
<!-- vale gitlab.Spelling = NO -->
2019-09-30 21:07:59 +05:30
The formula for water is H<sub>2</sub>O
while the equation for the theory of relativity is E = mc<sup>2</sup>.
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
<!-- vale gitlab.Spelling = YES -->
2022-06-21 17:19:12 +05:30
### Keyboard HTML tag
The `<kbd>` element is used to identify text that represents user keyboard input. Text surrounded by `<kbd>` tags is typically displayed in the browser's default monospace font.
```html
Press <kbd>Enter</kbd> to go to the next page.
```
Press <kbd>Enter</kbd> to go to the next page.
2019-09-30 21:07:59 +05:30
### Tables
2016-09-13 17:45:13 +05:30
2022-10-11 01:57:18 +05:30
Tables are not part of the core Markdown specification, but are part of GitLab Flavored Markdown.
#### Markdown
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
1. The first line contains the headers, separated by "pipes" (`|`).
2021-09-04 01:27:46 +05:30
1. The second line separates the headers from the cells.
- The cells can contain only empty spaces, hyphens, and
(optionally) colons for horizontal alignment.
- Each cell must contain at least one hyphen, but adding more hyphens to a
cell does not change the cell's rendering.
- Any content other than hyphens, whitespace, or colons is not allowed
2019-09-30 21:07:59 +05:30
1. The third, and any following lines, contain the cell values.
2020-01-01 13:55:28 +05:30
- You **can't** have cells separated over many lines in the Markdown, they must be kept to single lines,
2019-09-30 21:07:59 +05:30
but they can be very long. You can also include HTML `<br>` tags to force newlines if needed.
- The cell sizes **don't** have to match each other. They are flexible, but must be separated
by pipes (`|`).
- You **can** have blank cells.
2021-09-04 01:27:46 +05:30
1. Column widths are calculated dynamically based on the content of the cells.
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
Example:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
| header 1 | header 2 | header 3 |
2021-09-04 01:27:46 +05:30
| --- | --- | --- |
2019-09-30 21:07:59 +05:30
| cell 1 | cell 2 | cell 3 |
2020-10-24 23:57:45 +05:30
| cell 4 | cell 5 is longer | cell 6 is much longer than the others, but that's ok. It eventually wraps the text when the cell is too large for the display size. |
2021-01-03 14:25:43 +05:30
| cell 7 | | cell 9 |
2019-09-30 21:07:59 +05:30
```
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
| header 1 | header 2 | header 3 |
2021-09-04 01:27:46 +05:30
| --- | --- | --- |
2019-09-30 21:07:59 +05:30
| cell 1 | cell 2 | cell 3 |
2020-11-24 15:15:51 +05:30
| cell 4 | cell 5 is longer | cell 6 is much longer than the others, but that's ok. It eventually wraps the text when the cell is too large for the display size. |
2021-01-03 14:25:43 +05:30
| cell 7 | | cell 9 |
2016-09-13 17:45:13 +05:30
2021-03-11 19:13:27 +05:30
Additionally, you can choose the alignment of text in columns by adding colons (`:`)
2021-01-03 14:25:43 +05:30
to the sides of the "dash" lines in the second row. This affects every cell in the column:
2016-09-13 17:45:13 +05:30
2019-09-30 21:07:59 +05:30
```markdown
2021-09-04 01:27:46 +05:30
| Left Aligned | Centered | Right Aligned |
| :--- | :---: | ---: |
| Cell 1 | Cell 2 | Cell 3 |
| Cell 4 | Cell 5 | Cell 6 |
2019-09-30 21:07:59 +05:30
```
2016-09-13 17:45:13 +05:30
2021-09-04 01:27:46 +05:30
| Left Aligned | Centered | Right Aligned |
| :--- | :---: | ---: |
| Cell 1 | Cell 2 | Cell 3 |
| Cell 4 | Cell 5 | Cell 6 |
2017-08-17 22:00:37 +05:30
2021-09-04 01:27:46 +05:30
[In GitLab itself](https://gitlab.com/gitlab-org/gitlab/-/blob/master/doc/user/markdown.md#tables),
2021-01-03 14:25:43 +05:30
the headers are always left-aligned in Chrome and Firefox, and centered in Safari.
You can use HTML formatting to adjust the rendering of tables. For example, you can
use `<br>` tags to force a cell to have multiple lines:
```markdown
| Name | Details |
2021-09-04 01:27:46 +05:30
| --- | --- |
2021-12-11 22:18:48 +05:30
| Item1 | This text is on one line |
2021-01-03 14:25:43 +05:30
| Item2 | This item has:<br>- Multiple items<br>- That we want listed separately |
```
| Name | Details |
2021-09-04 01:27:46 +05:30
| --- | --- |
2021-12-11 22:18:48 +05:30
| Item1 | This text is on one line |
2021-01-03 14:25:43 +05:30
| Item2 | This item has:<br>- Multiple items<br>- That we want listed separately |
2021-03-11 19:13:27 +05:30
You can use HTML formatting in GitLab itself to add [task lists](#task-lists) with checkboxes,
2021-01-03 14:25:43 +05:30
but they do not render properly on `docs.gitlab.com`:
```markdown
| header 1 | header 2 |
2021-09-04 01:27:46 +05:30
| --- | --- |
2021-01-03 14:25:43 +05:30
| cell 1 | cell 2 |
| cell 3 | <ul><li> - [ ] Task one </li><li> - [ ] Task two </li></ul> |
```
2022-10-11 01:57:18 +05:30
##### Copy and paste from a spreadsheet
2020-03-13 15:44:24 +05:30
2022-05-07 20:08:51 +05:30
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/issues/27205) in GitLab 12.7.
2020-03-13 15:44:24 +05:30
2020-04-22 19:07:51 +05:30
If you're working in spreadsheet software (for example, Microsoft Excel, Google
2022-10-11 01:57:18 +05:30
Sheets, or Apple Numbers), GitLab creates a Markdown table when you copy and paste
2021-03-11 19:13:27 +05:30
from a spreadsheet. For example, suppose you have the
2020-03-13 15:44:24 +05:30
following spreadsheet:
![Copy from spreadsheet](img/markdown_copy_from_spreadsheet_v12_7.png)
Select the cells and copy them to your clipboard. Open a GitLab Markdown
entry and paste the spreadsheet:
![Paste to Markdown table](img/markdown_paste_table_v12_7.png)
2022-10-11 01:57:18 +05:30
#### JSON
> [Introduced](https://gitlab.com/gitlab-org/gitlab/-/merge_requests/86353) in GitLab 15.3.
To render tables with JSON code blocks, use the following syntax:
````markdown
```json:table
{}
```
````
Watch the following video walkthrough of this feature:
<div class="video-fallback">
See the video: <a href="https://www.youtube.com/watch?v=12yWKw1AdKY">Demo: JSON Tables in Markdown</a>.
</div>
<figure class="video-container">
<iframe src="https://www.youtube.com/embed/12yWKw1AdKY" frameborder="0" allowfullscreen="true"> </iframe>
</figure>
The `items` attribute is a list of objects representing the data points.
````markdown
```json:table
{
"items" : [
{"a": "11", "b": "22", "c": "33"}
]
}
```
````
To specify the table labels, use the `fields` attribute.
````markdown
```json:table
{
"fields" : ["a", "b", "c"],
"items" : [
{"a": "11", "b": "22", "c": "33"}
]
}
```
````
Not all elements of `items` must have corresponding values in `fields`.
````markdown
```json:table
{
"fields" : ["a", "b", "c"],
"items" : [
{"a": "11", "b": "22", "c": "33"},
{"a": "211", "c": "233"}
]
}
```
````
When `fields` is not explicitly specified, the labels are picked from the first element of `items`.
````markdown
```json:table
{
"items" : [
{"a": "11", "b": "22", "c": "33"},
{"a": "211", "c": "233"}
]
}
```
````
You can specify custom labels for `fields`.
````markdown
```json:table
{
"fields" : [
{"key": "a", "label": "AA"},
{"key": "b", "label": "BB"},
{"key": "c", "label": "CC"}
],
"items" : [
{"a": "11", "b": "22", "c": "33"},
{"a": "211", "b": "222", "c": "233"}
]
}
```
````
You can enable sorting for individual elements of `fields`.
````markdown
```json:table
{
"fields" : [
{"key": "a", "label": "AA", "sortable": true},
{"key": "b", "label": "BB"},
{"key": "c", "label": "CC"}
],
"items" : [
{"a": "11", "b": "22", "c": "33"},
{"a": "211", "b": "222", "c": "233"}
]
}
```
````
You can use the `filter` attribute to render a table with content filtered dynamically by user input.
````markdown
```json:table
{
"fields" : [
{"key": "a", "label": "AA"},
{"key": "b", "label": "BB"},
{"key": "c", "label": "CC"}
],
"items" : [
{"a": "11", "b": "22", "c": "33"},
{"a": "211", "b": "222", "c": "233"}
],
"filter" : true
}
```
````
By default, every JSON table has the caption `Generated with JSON data`.
You can override this caption by specifying the `caption` attribute.
````markdown
```json:table
{
"items" : [
{"a": "11", "b": "22", "c": "33"}
],
"caption" : "Custom caption"
}
```
````
If JSON is invalid, an error occurs.
````markdown
```json:table
{
"items" : [
{"a": "11", "b": "22", "c": "33"}
],
}
```
````
2016-09-13 17:45:13 +05:30
## References
- This document leveraged heavily from the [Markdown-Cheatsheet](https://github.com/adam-p/markdown-here/wiki/Markdown-Cheatsheet).
2019-09-30 21:07:59 +05:30
- The original [Markdown Syntax Guide](https://daringfireball.net/projects/markdown/syntax)
2020-01-01 13:55:28 +05:30
at Daring Fireball is an excellent resource for a detailed explanation of standard Markdown.
2021-01-03 14:25:43 +05:30
- You can find the detailed specification for CommonMark in the [CommonMark Spec](https://spec.commonmark.org/current/).
2021-03-11 19:13:27 +05:30
- The [CommonMark Dingus](https://spec.commonmark.org/dingus/) helps you test CommonMark syntax.