2020-07-20 19:28:13 +02:00
|
|
|
---
|
|
|
|
template: overrides/main.html
|
|
|
|
---
|
|
|
|
|
|
|
|
# Content tabs
|
|
|
|
|
|
|
|
Sometimes, it's desirable to group alternative content under different tabs,
|
|
|
|
e.g. when describing how to access an API from different languages or
|
2020-07-21 13:33:44 +02:00
|
|
|
environments. Material for MkDocs allows for beautiful and functional tabs, grouping code blocks and other content.
|
2020-07-20 19:28:13 +02:00
|
|
|
|
|
|
|
## Configuration
|
|
|
|
|
|
|
|
### Tabbed
|
|
|
|
|
|
|
|
[:octicons-file-code-24: Source][1] · [:octicons-workflow-24: Extension][2]
|
|
|
|
|
|
|
|
The [Tabbed][2] extension, which is part of [Python Markdown Extensions][3],
|
2020-07-23 13:17:50 +02:00
|
|
|
integrates with Material for MkDocs and can be enabled via `mkdocs.yml`:
|
2020-07-20 19:28:13 +02:00
|
|
|
|
|
|
|
``` yaml
|
|
|
|
markdown_extensions:
|
|
|
|
- pymdownx.tabbed
|
|
|
|
```
|
|
|
|
|
2020-07-23 09:29:23 +02:00
|
|
|
[1]: https://github.com/squidfunk/mkdocs-material/blob/master/src/assets/stylesheets/main/extensions/pymdownx/_tabbed.scss
|
2020-07-20 19:28:13 +02:00
|
|
|
[2]: https://facelessuser.github.io/pymdown-extensions/extensions/tabbed/
|
|
|
|
[3]: https://facelessuser.github.io/pymdown-extensions/
|
|
|
|
|
2020-07-21 16:01:22 +02:00
|
|
|
### SuperFences
|
|
|
|
|
2020-07-23 15:34:43 +02:00
|
|
|
The [SuperFences][4] extension, which is also part of [Python Markdown
|
|
|
|
Extensions][3], allows for the __nesting of code and content blocks inside
|
|
|
|
tabs__, and is therefore strongly recommended:
|
2020-07-21 16:01:22 +02:00
|
|
|
|
|
|
|
``` yaml
|
|
|
|
markdown_extensions:
|
|
|
|
- pymdownx.superfences
|
|
|
|
```
|
|
|
|
|
2020-07-23 15:34:43 +02:00
|
|
|
[4]: https://facelessuser.github.io/pymdown-extensions/extensions/superfences/
|
2020-07-21 16:01:22 +02:00
|
|
|
|
2020-07-20 19:28:13 +02:00
|
|
|
## Usage
|
|
|
|
|
|
|
|
### Grouping code blocks
|
|
|
|
|
|
|
|
Code blocks are one of the primary targets to be grouped, and can be considered
|
|
|
|
a special case of content tabs, as tabs with a single code block are always
|
|
|
|
rendered without horizontal spacing.
|
|
|
|
|
|
|
|
_Example_:
|
|
|
|
|
|
|
|
```
|
|
|
|
=== "C"
|
|
|
|
|
|
|
|
``` c
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
int main(void) {
|
|
|
|
printf("Hello world!\n");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
=== "C++"
|
|
|
|
|
|
|
|
``` c++
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
int main(void) {
|
|
|
|
std::cout << "Hello world!" << std::endl;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
```
|
|
|
|
|
|
|
|
_Result_:
|
|
|
|
|
|
|
|
=== "C"
|
|
|
|
|
|
|
|
``` c
|
|
|
|
#include <stdio.h>
|
|
|
|
|
|
|
|
int main(void) {
|
|
|
|
printf("Hello world!\n");
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
=== "C++"
|
|
|
|
|
|
|
|
``` c++
|
|
|
|
#include <iostream>
|
|
|
|
|
|
|
|
int main(void) {
|
|
|
|
std::cout << "Hello world!" << std::endl;
|
|
|
|
return 0;
|
|
|
|
}
|
|
|
|
```
|
|
|
|
|
|
|
|
### Grouping other content
|
|
|
|
|
|
|
|
When a content tab contains more than one code block, it is rendered with
|
|
|
|
horizontal spacing. Vertical spacing is never added, but can be achieved
|
|
|
|
by nesting tabs in other blocks.
|
|
|
|
|
|
|
|
_Example_:
|
|
|
|
|
|
|
|
```
|
|
|
|
=== "Unordered list"
|
|
|
|
|
|
|
|
- Sed sagittis eleifend rutrum
|
|
|
|
- Donec vitae suscipit est
|
|
|
|
- Nulla tempor lobortis orci
|
|
|
|
|
|
|
|
=== "Ordered list"
|
|
|
|
|
|
|
|
1. Sed sagittis eleifend rutrum
|
|
|
|
2. Donec vitae suscipit est
|
|
|
|
3. Nulla tempor lobortis orci
|
|
|
|
```
|
|
|
|
|
|
|
|
_Result_:
|
|
|
|
|
|
|
|
=== "Unordered list"
|
|
|
|
|
|
|
|
- Sed sagittis eleifend rutrum
|
|
|
|
- Donec vitae suscipit est
|
|
|
|
- Nulla tempor lobortis orci
|
|
|
|
|
|
|
|
=== "Ordered list"
|
|
|
|
|
|
|
|
1. Sed sagittis eleifend rutrum
|
|
|
|
2. Donec vitae suscipit est
|
|
|
|
3. Nulla tempor lobortis orci
|
|
|
|
|
|
|
|
### Embedded content
|
|
|
|
|
2020-07-23 15:34:43 +02:00
|
|
|
When [SuperFences][5] is enabled, content tabs can contain arbitrary nested
|
|
|
|
content, including further content tabs, and can be nested in other blocks like
|
|
|
|
[admonitions][6], [details][7] or blockquotes:
|
2020-07-20 19:28:13 +02:00
|
|
|
|
2020-07-20 19:34:44 +02:00
|
|
|
_Example_:
|
|
|
|
|
|
|
|
``` markdown
|
2020-07-20 19:38:11 +02:00
|
|
|
!!! example
|
2020-07-20 19:34:44 +02:00
|
|
|
|
|
|
|
=== "Unordered List"
|
|
|
|
|
|
|
|
_Example_:
|
|
|
|
|
|
|
|
``` markdown
|
|
|
|
- Sed sagittis eleifend rutrum
|
|
|
|
- Donec vitae suscipit est
|
|
|
|
- Nulla tempor lobortis orci
|
|
|
|
```
|
|
|
|
|
|
|
|
_Result_:
|
|
|
|
|
|
|
|
- Sed sagittis eleifend rutrum
|
|
|
|
- Donec vitae suscipit est
|
|
|
|
- Nulla tempor lobortis orci
|
|
|
|
|
|
|
|
=== "Ordered List"
|
|
|
|
|
|
|
|
_Example_:
|
|
|
|
|
|
|
|
``` markdown
|
|
|
|
1. Sed sagittis eleifend rutrum
|
|
|
|
2. Donec vitae suscipit est
|
|
|
|
3. Nulla tempor lobortis orci
|
|
|
|
```
|
|
|
|
|
|
|
|
_Result_:
|
|
|
|
|
|
|
|
1. Sed sagittis eleifend rutrum
|
|
|
|
2. Donec vitae suscipit est
|
|
|
|
3. Nulla tempor lobortis orci
|
|
|
|
```
|
|
|
|
|
|
|
|
_Result_:
|
|
|
|
|
2020-07-20 19:38:11 +02:00
|
|
|
!!! example
|
2020-07-20 19:28:13 +02:00
|
|
|
|
2020-07-20 19:34:44 +02:00
|
|
|
=== "Unordered List"
|
2020-07-20 19:28:13 +02:00
|
|
|
|
|
|
|
_Example_:
|
|
|
|
|
|
|
|
``` markdown
|
|
|
|
- Sed sagittis eleifend rutrum
|
|
|
|
- Donec vitae suscipit est
|
|
|
|
- Nulla tempor lobortis orci
|
|
|
|
```
|
|
|
|
|
|
|
|
_Result_:
|
|
|
|
|
|
|
|
- Sed sagittis eleifend rutrum
|
|
|
|
- Donec vitae suscipit est
|
|
|
|
- Nulla tempor lobortis orci
|
|
|
|
|
2020-07-20 19:34:44 +02:00
|
|
|
=== "Ordered List"
|
2020-07-20 19:28:13 +02:00
|
|
|
|
|
|
|
_Example_:
|
|
|
|
|
|
|
|
``` markdown
|
|
|
|
1. Sed sagittis eleifend rutrum
|
|
|
|
2. Donec vitae suscipit est
|
|
|
|
3. Nulla tempor lobortis orci
|
|
|
|
```
|
|
|
|
|
|
|
|
_Result_:
|
|
|
|
|
|
|
|
1. Sed sagittis eleifend rutrum
|
|
|
|
2. Donec vitae suscipit est
|
|
|
|
3. Nulla tempor lobortis orci
|
|
|
|
|
2020-07-23 15:34:43 +02:00
|
|
|
[5]: #superfences
|
2020-07-21 16:01:22 +02:00
|
|
|
[6]: admonitions.md
|
|
|
|
[7]: admonitions.md#details
|