2020-04-19 11:14:52 +01:00
# Style guide
2017-10-28 11:24:15 +01:00
2020-05-11 00:23:54 +01:00
This page lists specific formatting instructions for `tldr` pages.
2017-10-28 11:24:15 +01:00
## Layout
2022-07-20 01:08:47 +01:00
The basic format of each page should match the following template and have at most 8 command examples:
2017-10-28 11:24:15 +01:00
2022-07-20 01:08:47 +01:00
```md
# command name
2017-10-28 11:24:15 +01:00
2022-07-20 01:08:47 +01:00
> Short, snappy command description.
2017-10-28 11:24:15 +01:00
> Preferably one line; two are acceptable if necessary.
2022-07-20 01:08:47 +01:00
> More information: <https://example.com/command_name/help/page>.
- Code description:
`command_name options`
- Code description:
`command_name options`
...
```
Example:
```md
# krita
2023-10-09 13:12:47 +01:00
> A sketching and painting program designed for digital artists.
2022-07-20 01:08:47 +01:00
> See also: `gimp`.
> More information: <https://docs.krita.org/en/reference_manual/linux_command_line.html>.
2022-10-16 00:38:39 +01:00
- Start Krita:
2022-07-20 01:08:47 +01:00
`krita`
- Open specific files:
`krita {{path/to/image1 path/to/image2 ...}}`
2017-10-28 11:24:15 +01:00
2022-10-16 00:38:39 +01:00
- Start without a splash screen:
`krita --nosplash`
- Start with a specific workspace:
2017-10-28 11:24:15 +01:00
2022-07-20 01:08:47 +01:00
`krita --workspace {{Animation}}`
2017-10-28 11:24:15 +01:00
2022-10-16 00:38:39 +01:00
- Start in fullscreen mode:
2017-10-28 11:24:15 +01:00
2022-07-20 01:08:47 +01:00
`krita --fullscreen`
2017-10-28 11:24:15 +01:00
```
2023-10-13 00:26:58 +01:00
> [!NOTE]
> The help page can be any documentation/project/tutorial page, not just a man page,
2022-07-20 01:08:47 +01:00
> but documentation pages are preferred.
There is a linter that enforces the format above.
2017-10-28 11:24:15 +01:00
It is run automatically on every pull request,
but you may install it to test your contributions locally before submitting them:
2022-07-20 01:08:47 +01:00
```sh
2021-12-10 10:01:34 +00:00
npm install --global tldr-lint
2022-07-20 01:08:47 +01:00
tldr-lint path/to/tldr_page.md
2017-10-28 11:24:15 +01:00
```
2021-12-10 10:01:34 +00:00
For other ways to use `tldr-lint` , such as linting an entire directory, check out (what else!)
[`tldr tldr-lint` ](https://github.com/tldr-pages/tldr/blob/main/pages/common/tldr-lint.md ). Alternatively, you can also use its alias `tldrl` .
2017-10-28 11:24:15 +01:00
2021-06-23 14:36:44 +01:00
Your client may be able to preview a page locally using the `--render` flag:
2018-01-30 06:15:22 +00:00
2022-07-20 01:08:47 +01:00
```sh
tldr --render path/to/tldr_page.md
2018-01-30 06:15:22 +00:00
```
2022-07-20 01:08:47 +01:00
### Aliases
2022-08-24 20:33:49 +01:00
If a command can be called with alternative names (like `vim` can be called by `vi` ), alias pages can be created to point the user to the original command name.
2022-07-20 01:08:47 +01:00
```md
# command_name
> This command is an alias of `original-command-name`.
> More information: <https://example.com/original/command/help/page>.
- View documentation for the original command:
`tldr original_command_name`
```
Example:
```md
# vi
> This command is an alias of `vim`.
- View documentation for the original command:
`tldr vim`
2018-01-30 06:15:22 +00:00
```
2023-01-03 16:38:49 +00:00
2022-09-19 03:44:20 +01:00
- Pre-translated alias page templates can be found [here ](https://github.com/tldr-pages/tldr/blob/main/contributing-guides/translation-templates/alias-pages.md ).
2018-01-30 06:15:22 +00:00
2022-12-08 06:27:26 +00:00
## Option syntax
2022-12-09 03:48:31 +00:00
- Use GNU-style **long options** (like `--help` rather than `-h` ) when they are cross-platform compatible (intended to work the same across multiple platforms).
2023-01-03 16:38:49 +00:00
- In other cases, use short options (like `-h` ).
2023-10-11 08:57:23 +01:00
- Prefer using a space instead of the equals sign (`=`) to separate options from their arguments (i.e. use `--opt arg` instead of `--opt=arg` ), unless the program does not support it.
2023-01-03 03:44:04 +00:00
2022-12-13 04:23:03 +00:00
## Placeholder syntax
2017-10-28 11:24:15 +01:00
2022-12-13 04:23:03 +00:00
User-provided values should use the `{{placeholder}}` syntax
2017-10-28 11:24:15 +01:00
in order to allow `tldr` clients to highlight them.
2022-12-13 04:23:03 +00:00
Keep the following guidelines in mind when choosing placeholders:
2017-10-28 11:24:15 +01:00
2021-09-12 15:01:45 +01:00
### Naming
2023-01-03 16:38:49 +00:00
2022-12-13 04:23:03 +00:00
- Use short but descriptive placeholders,
2022-12-20 10:27:00 +00:00
such as `{{path/to/source_file}}` or `{{path/to/wallet.txt}}` .
2022-12-13 04:23:03 +00:00
- Use [`snake_case` ](https://wikipedia.org/wiki/snake_case ) for multi-word placeholders.
2023-01-03 16:38:49 +00:00
- Use a generic placeholder rather than an actual value where a generic placeholder is available (but there is an exception to this listed below). For example, use
`iostat {{1..infinity}}` rather than `iostat {{2}}` .
2023-08-26 18:30:06 +01:00
- If there are several consecutive placeholders of the same type
2023-01-03 16:38:49 +00:00
which don't allow adding arbitrary text in them (ranges), then instead of generic placeholders use descriptive ones. For example prefer `input swipe {{x_position}} {{y_position}} {{x_position}} {{y_position}} {{seconds}}`
instead of `input swipe {{-infinity..infinity}} {{-infinity..infinity}} {{-infinity..infinity}} {{-infinity..infinity}} {{1..infinity}}` .
2021-09-12 15:01:45 +01:00
### Paths
2023-01-03 16:38:49 +00:00
2022-12-20 10:27:00 +00:00
- Use `{{filename}}` when just file name is expected.
2021-09-12 15:01:45 +01:00
- For any reference to paths of files or directories,
use the format `{{path/to/<placeholder>}}` ,
except when the location is implicit.
- When the path cannot be relative,
but has to start at the root of the filesystem,
prefix it with a slash,
such as `get {{/path/to/remote_file}}` .
- In case of a possible reference both to a file or a directory,
use `{{path/to/file_or_directory}}` .
2022-10-16 00:38:39 +01:00
### Extensions
2021-09-12 15:01:45 +01:00
- If a particular extension is expected for the file, append it.
2022-12-20 10:27:00 +00:00
For example, `unrar x {{path/to/compressed.rar}}` .
2021-09-12 15:01:45 +01:00
- In case a generic extension is needed, use `{{.ext}}` , but **only** if an extension is required.
2022-12-20 10:27:00 +00:00
For instance, in `find.md` 's example "Find files by extension" (`find {{path/to/root}} -name '{{*.ext}}'`)
2021-09-12 15:01:45 +01:00
using `{{*.ext}}` explains the command without being unnecessarily specific;
2022-12-20 10:27:00 +00:00
while in `wc -l {{path/to/file}}` using `{{path/to/file}}` (without extension) is sufficient.
2021-09-12 15:01:45 +01:00
2023-01-10 01:54:53 +00:00
### Grouping placeholders
- If a command can take 0 or more arguments of the same kind, use an ellipsis: `{{placeholder1 placeholder2 ...}}` .
For instance, if multiple paths are expected `{{path/to/directory1 path/to/directory2 ...}}` can be used.
- If a command can take 0 or more arguments of different kinds, use an ellipsis: `{{placeholder1|placeholder2|...}}` .
If there are more than 5 possible values use `|...` after the last item.
- It's impossible to restrict the minimum or (and) maximum placeholder count via `ellipsis` .
It's up to the program to decide how to handle duplicating values, provided syntax
tells no info about whether items are mutually exclusive or not.
2021-09-12 15:01:45 +01:00
### Special cases
2023-01-03 16:38:49 +00:00
2021-09-12 15:01:45 +01:00
- If a command performs irreversible changes to a file system or devices,
2023-01-03 16:38:49 +00:00
write every example in a way that cannot be copy pasted thoughtlessly.
2021-09-12 15:01:45 +01:00
For example, instead of `ddrescue --force --no-scrape /dev/sda /dev/sdb`
write `ddrescue --force --no-scrape {{/dev/sdX}} {{/dev/sdY}}`
and use the `{{/dev/sdXY}}` placeholder for *block devices* instead of `/dev/sda1` .
2017-10-28 11:24:15 +01:00
2022-12-13 04:23:03 +00:00
In general, placeholders should make it as intuitive as possible
2018-01-30 06:15:22 +00:00
to figure out how to use the command and fill it in with values.
2021-01-10 13:11:45 +00:00
2021-09-12 15:01:45 +01:00
Technical wording on description lines should use the `backtick` syntax.
2021-01-10 13:11:45 +00:00
Use backticks on the following:
2023-10-11 08:57:23 +01:00
- Paths, e.g. `package.json` , `/etc/package.json` .
- Extensions, e.g. `.dll` .
- Commands, e.g. `ls` .
2021-07-25 21:17:28 +01:00
2023-10-09 13:12:47 +01:00
## Descriptions
2021-10-13 16:53:19 +01:00
2023-10-09 13:12:47 +01:00
- Avoid using the page title in the description (e.g. use `A sketching and painting program designed for digital artists` instead of `Krita is a sketching and painting program designed for digital artists` ) unless the program name differs from the executable name (e.g. `rg` and Ripgrep).
- Avoid mentioning that the program is used on the command-line (e.g. use `Ripgrep is a recursive line-oriented search tool` instead of `Ripgrep is a recursive line-oriented CLI search tool` ).
### Imperative Mood
2023-10-11 08:57:23 +01:00
- **All descriptions must be concise and phrased in the imperative mood.**
2023-01-03 16:38:49 +00:00
- This also applies to all translations by default unless otherwise specified in the language-specific section below.
2023-10-11 08:57:23 +01:00
- For example, when writing documentation for `cd` , a tool to check out and work on a specific directory in the Terminal or Command Prompt, **do not** write a lengthy description such as:
2023-10-09 13:12:47 +01:00
```md
> `cd` is a system tool, available in Windows, macOS, and Linux, to check out a specific directory to get things done in the Command Prompt, Terminal, and PowerShell.
```
2023-10-11 08:57:23 +01:00
It should instead be simplified to make it easier for everyone to read:
2023-10-09 13:12:47 +01:00
```md
> Change the current working directory.
```
If you are afraid the commands may differ between platforms or operating systems (e.g. Windows vs macOS), most [tldr pages clients ](https://github.com/tldr-pages/tldr/wiki/tldr-pages-clients ) will choose the most suitable version of the command.
In this case, the information of the Windows version of `cd` (stored in `pages/windows/cd.md` ) will be displayed by default to Windows users, and a generic/common version (stored in `pages/common/cd.md` ) will be displayed for Linux, macOS, and other platforms.
2023-10-11 08:57:23 +01:00
When writing descriptions for command examples, **check for any grammatical errors** . `Go to the specified directory` is preferred instead of:
- `Going to the specified directory` (should not be in present participle form)
- `This command will go to the specified directory` (it is clear that this example works for *this* comment)
- `Let's go to the specified directory!`
- `Directory change` (use the active form instead of passive, if possible)
For instance, instead of `Listing all files:` , `List all files:` can be be used as the example's description below:
2023-10-09 13:12:47 +01:00
```md
- Listing all files:
`ls`
```
2021-07-25 21:17:28 +01:00
## Serial Comma
2021-08-06 18:31:33 +01:00
2023-01-03 16:38:49 +00:00
- When declaring a list of 3 or more items,
2021-09-12 15:01:45 +01:00
use a [serial comma ](https://en.wikipedia.org/wiki/Serial_comma ),
also known as the Oxford comma,
since omitting it can create ambiguity.
2021-07-25 21:17:28 +01:00
> Delete the Git branches, tags and remotes.
The example above does not use a serial comma, so this could mean one of two things:
2023-08-26 18:30:06 +01:00
- Delete the Git branches named `tags` and `remotes` .
- Delete all of the following: Git branches, Git tags, and Git remotes.
2021-07-25 21:17:28 +01:00
This can be resolved by inserting a comma before the "and" or "or" in the final element in the list.
> Delete the Git branches, tags, and remotes.
2021-08-06 18:31:33 +01:00
2022-03-07 12:45:12 +00:00
## More information links
On the `More information` line, prefer linking to the author's provided documentation.
2023-08-26 18:30:06 +01:00
When not available, use < https: / / manned . org > as the default fallback.
2022-03-07 12:45:12 +00:00
2022-10-08 15:40:17 +01:00
## Language-Specific Rules
### Chinese-Specific Rules
2021-08-06 18:31:33 +01:00
2022-07-20 01:08:47 +01:00
When Chinese words, Latin words and Arabic numerals are written in the same sentence, more attention must be paid to copywriting.
2021-08-06 18:31:33 +01:00
2023-01-03 16:38:49 +00:00
The following guidelines are applied to Chinese (`zh`) and traditional Chinese (`zh_TW`) pages:
1. Place one space before/after English words and numbers.
2023-08-26 18:30:06 +01:00
- For example, use `列出所有 docker 容器` rather than `列出所有docker容器` .
- For example, use `宽度为 50 个字` rather than `宽度为50个字` .
2023-01-03 16:38:49 +00:00
2. Place one space between numbers and units **except** degrees and percentages.
2023-08-26 18:30:06 +01:00
- For example, use `容量 50 MB` rather than `容量 50MB` .
- For instances of degree and percentage, use `50°C` and `50%` rather than `50 °C` and `50 %` .
2023-01-03 16:38:49 +00:00
3. No additional spaces before/after full-width punctuations.
2023-08-26 18:30:06 +01:00
- For example, use `开启 shell, 进入交互模式` rather than `开启 shell ,进入交互模式`
2023-01-03 16:38:49 +00:00
4. Use full-width punctuations except for long Latin clauses.
2023-08-26 18:30:06 +01:00
- For example, use `嗨,你好。` rather than `嗨, 你好.`
2023-01-03 16:38:49 +00:00
5. Use a half-width punctuation to end a sentence when the last character is half-width.
2023-08-26 18:30:06 +01:00
2023-01-03 16:38:49 +00:00
- For example, use `将代码转化为 Python 3.` rather than `将代码转化为 Python 3。`
2023-08-26 18:30:06 +01:00
2023-01-03 16:38:49 +00:00
6. Use precise form for technical terms, and do not use unofficial Chinese abbreviations.
2023-08-26 18:30:06 +01:00
- For example, use `Facebook` rather than `facebook` , `fb` or `脸书` .
2021-08-06 18:31:33 +01:00
2022-10-16 00:38:39 +01:00
In order to maintain readability and normalization, please comply with the 6 rules above as much as possible when translating pages into Chinese.
2021-08-06 18:31:33 +01:00
2022-09-19 03:44:20 +01:00
For more information and examples of Chinese-specific rules, check out [*Chinese Copywriting Guidelines* ](https://github.com/sparanoid/chinese-copywriting-guidelines/blob/master/README.en.md ).
2022-10-08 15:40:17 +01:00
### French-Specific Rules
Example descriptions on pages in French must use the third person singular present indicative tense (présent de l'indicatif à la troisième personne du singulier).
For example, use `Extrait une archive` rather than `Extraire une archive` or `Extrais une archive` .