Rocky Docs Formatting - Introduction¶
Over the last year, a lot has changed with Rocky documentation. This guide is meant to help contributors get familiar with our more advanced formatting options: including admonitions, numbered lists, tables, and more.
To be clear, a document may or may not need to contain any of these elements. If you feel that your document will benefit from them, then this guide should help.
A Note About Headings
Headings are not really special formatting characters, but rather standard markdown syntax. They include a single level one heading:
# This is Level one
and any number of sub-heading values, levels 2 through 6:
## A Level 2 heading
### A Level 3 heading
#### A Level 4 heading
##### A Level 5 heading
###### A Level 6 heading
The key here is that there can be as many of the 2 through 6 headings as you want to use, but only ONE level 1 heading. While the documentation will build with more than one level 1 heading, the automatically generated table of contents for the document that appears on the right-hand side, will NOT display correctly (or sometimes at all), with more than one. Keep this in mind when writing your documents.
Admonitions¶
Admonitions are special visual "boxes" that allow you to call attention to important facts and highlight them in a way that makes them stick out from the rest of the text. Admonitions types are as follows:
type | Description |
---|---|
attention | renders a light orange text box |
caution | renders a light orange text box |
danger | renders a red text box |
error | renders a red text box |
hint | renders a green text box |
important | renders a green text box |
note | renders a blue text box |
tip | renders a green text box |
warning | renders a orange text box |
custom 1 | always renders a blue text box |
custom 2 | uses a custom title within another type |
So there is no limit on the types of admonitions you can use as noted in custom 1 above. A custom title can be added to any of the other admonition types to get the colored box you want for a specific admonition, as noted in custom 2 above.
An admonition is always entered in this way:
!!! admonition_type
text of admonition
The body text of the admonition must be indented four (4) spaces from the beginning margin. It's easy to see where that is in this case, because it will always line up under the first letter of the admonition type. The extra line between the title and body will not show up, but is required for our translation engine (Crowdin) to function correctly.
Here are examples of each admonition type, and how they will look in your document:
Attention
text
Caution
text
Danger
text
Error
text
Hint
text
Important
text
Note
text
Tip
text
Warning
text
Custom
A custom 1 type. Here we've used "custom" as our admonition type. Again, this will always render in blue.
custom title
A custom 2 type. Here we've modified the "warning" admonition type with a custom header. Here's what that looks like:
!!! warning "custom title"
Numbered Lists¶
Numbered lists sound like they are easy to create and use, and once you get the hang of them, they really are. If you just have a single list of items with no complexity, then this sort of format works fine:
1. Item 1
2. Item 2
3. Item 3
-
Item 1
-
Item 2
-
Item 3
If you need to add code blocks, multiple lines or even paragraphs of text to a numbered list, then the text should be indented with those same four (4) spaces that we used in the admonitions.
You can't use your eyes to line them up under the numbered item, however, as this is one space off. If you are using a good markdown editor, you can set your tab value to four (4), which will make formatting everything a bit easier.
Here's an example of a multi-line numbered list with a code block thrown in for good measure:
-
When dealing with numbered lists that are multi line and include things like code blocks, use the space indentation to get what you want.
For example: this is indented four (4) spaces and represents a new paragraph of text. And here, we are adding a code block in. It is also indented by the same four (4) spaces as our paragraph:
dnf update
-
Here's our second listed item. Because we used the indentation (above) it renders with the next sequence of numbering (in other words, 2), but if we had entered item 1 without the indentation (in the subsequent paragraph and code), then this would show up as item 1 again, which is not what we want.
And here's how that looks as raw text:
1. When dealing with numbered lists that are multi line and include things like code blocks, use the space indentation to get what you want.
For example: this is indented four (4) spaces and represents a new paragraph of text. And here, we are adding a code block in. It is also indented by the same four (4) spaces as our paragraph:
```
dnf update
```
2. Here's our second listed item. Because we used the indentation (above) it renders with the next sequence of numbering (in other words, 2), but if we had entered item 1 without the indentation (in the subsequent paragraph and code), then this would show up as item 1 again, which is not what we want.
Tables¶
Tables help us to lay out command options, or in the above case, admonition types and descriptions. Here's how the table above is entered:
| type | Description |
|-----------|-----------------------------------------------------------|
| attention | renders a light orange text box |
| caution | renders a light orange text box |
| danger | renders a red text box |
| error | renders a red text box |
| hint | renders a green text box |
| important | renders a green text box |
| note | renders a blue text box |
| tip | renders a green text box |
| warning | renders a orange text box |
| custom <sub>1</sub> | always renders a blue text box |
| custom <sub>2</sub> | uses a customer title within another type |
Note that it isn't necessary to have each column broken down by size (as we've done in the first part of the table), but it is certainly more readable in the markdown source file. It can get confusing when you string the items together, simply by breaking the columns with the pipe character "|" wherever the natural break would be, as you can see in the last two items of the table.
Block Quotes¶
Block quotes are actually designed for quoting text from other sources to include in your documentation, but they don't have to be used that way. We've had several people use block quotes instead of tables, for instance, to list out some options. Examples of block quotes in markdown would be:
> **an item** - A description of that item
> **another item** - Another description of that item
That ends up looking like this when the page is rendered:
an item - A description of that item
another item - Another description of an item
Inline and Block-Level Code Blocks¶
Our approach to using code blocks is pretty simple. If your code
is short enough that you can (and want to) use it in a sentence like you just saw, use single backticks `, like so:
A sentence with a `commmand of your choosing` in it.
Any command that is not used inside of a text paragraph (especially the long bits of code with multiple lines) should be a full code block, defined with triple backticks `:
```bash
sudo dnf install the-kitchen-sink
```
The bash
bit of that formatting is a non-essential code identifier, but can help with syntax highlighting. Of course, if you're showcasing Python, PHP, Ruby, HTML, CSS, or any other kind of code, the "bash" should be changed to whatever language you're using.
Incidentally, if you need to show a code block within a code block, just add one more backtick ` to the parent block, like so:
````markdown
```bash
sudo dnf install the-kitchen-sink
```
````
And yes, the code block you just saw used five backticks at the beginning and end to make it render properly.
Keyboard¶
Another way to make sure that you add as much clarity to your documents as possible is to represent keys on the keyboard that must be entered, in the correct manner. This is done with <kbd>key</kbd>
. For instance, to represent that you need to hit the escape key in your document, you would use <kbd>ESC</kbd
. When you need to indicate that multiple keys must be pressed add a +
between them like this: <kbd>CTRL</kbd> + <kbd>F4</kbd>
if keys need to be pressed simultaneously, add "simultaneously" or "at the same time" or some similar phrase to your instructions. Here's an example of a keyboard instruction in your editor:
A workstation type installation (with graphical interface) starts this interface on terminal 1. Linux being multi-user, it is possible to connect several users several times, on different **physical terminals** (TTY) or **virtual terminals** (PTS). Virtual terminals are available within a graphical environment. A user switches from one physical terminal to another using <kbd>Alt</kbd> + <kbd>Fx</kbd> from the command line or using <kbd>CTRL</kbd> + <kbd>Alt</kbd> + <kbd>Fx</kbd>.
A workstation type installation (with graphical interface) starts this interface on terminal 1. Linux being multi-user, it is possible to connect several users several times, on different physical terminals (TTY) or virtual terminals (PTS). Virtual terminals are available within a graphical environment. A user switches from one physical terminal to another using Alt + Fx from the command line or using CTRL + Alt + Fx.
Grouping Different Formatting Types¶
Things really get crazy, when you need to combine multiple elements within another one. For instance, an admonition with a numbered list:
Note
Things can get a little crazy when you are grouping things together. Like when:
-
You add a numbered list of options within an admonition
-
Or you add a numbered list with multiple code blocks:
dnf install some-great-package
Which is also within a multi-paragraph numbered list.
Or what if you have a numbered list, with an additional admonition:
-
This item is something very important
Here we are adding a keyboard command to the list item:
Press ESC for no particular reason.
-
But this item is something very important and has multiple paragraphs to it
And it has an admonition in the middle of it:
Warning
Things can get a little crazy with multiple elements within different formatting types!
As long as you keep track of the magic four (4) spaces to indent and separate these items, they will display logically and exactly the way you want them to. Sometimes that is really important.
You can even embed a table or block quote (quite literally any formatting item type) within another one. Here we have a numbered list, an admonition, a table and some block quote elements all bundled together:
-
Trying to keep up with everything that's going on in your document can be a real task when there are multiple elements to be considered.
-
If you are feeling overwhelmed, consider:
important: I think my brain hurts!
When combining multiple formatting elements, your brain can go a little crazy. Consider sucking down some extra caffeine before you begin!
type caffeine daily allowance tea it will get you there eventually coffee for discerning taste buds red bull tastes terrible - but it will keep you going! mountain dew over hyped sugar if caffeine isn't to your liking
suffer if all else fails, concentrate more
-
There are more examples, but I think you get that everything can be nested within. Just remember the four (4) magic spaces.
Here's what this example looks like in your editor:
As long as you keep track of the magic four (4) spaces to separate these items, they will display logically and exactly the way you want them to. Sometimes that is really important.
You can even embed a table or block quote (quite literally any formatting item type) within another one. Here we have a numbered list, an admonition, a table and some block quote elements all bundled together:
1. Trying to keep up with everything that's going on in your document can be a real task when there are multiple elements to be considered.
2. If you are feeling overwhelmed, consider:
!!! important "important: I think my brain hurts!"
When combining multiple formatting elements, your brain can go a little crazy. Consider sucking down some extra caffeine before you begin!
| type | caffeine daily allowance |
|-----------------|----------------------------------|
| tea | it will get you there eventually |
| coffee | for discerning taste buds |
| red bull | tastes terrible - but it will keep you going!|
| mountain dew | over hyped |
> **sugar** if caffeine isn't to your liking
> **suffer** if all else fails, concentrate more
3. There are more examples, but I think you get that everything can be nested within. Just remember the four (4) magic spaces.
More Reading¶
-
The Rocky Linux how to contribute document
-
More on admonitions
-
More quick references for Markdown
Conclusion¶
Document formatting with admonitions, tables, numbered lists, and block quotes, can add clarity to your document. When using admonitions, take care to pick the correct type. This can make it easier to visually see the importance of the particular admonition.
Overuse of any of these elements can simply add clutter where none is needed. Learning to use these formatting items conservatively and well can be very helpful to get your point across in a document.
Lastly, to make formatting easier, consider changing your markdown editor's TAB value to four (4) spaces.
Author: Steven Spencer
Contributors: tianci li, Ezequiel Bruni