**Language / Langue :** [[fr:yaml:texte|FR]] | **EN**
====== Text and Formatting (YAML) ======
===== Line Breaks =====
In a YAML ''text: |'' block, line breaks are preserved.
Use ''+n+'' for an explicit line break in formats that do not support real new lines.
===== Text Box =====
When content inside ''%%[[%%'' and ''%%]]%%'' is not an image URL, it becomes a framed text block.
text: "[[Memo: the key is in the library.]]"
===== Inline Markdown =====
^ Syntax ^ Rendering ^
| ''%%**text**%%'' | Bold |
| ''%%*text*%%'' | Italic |
| ''%%__text__%%'' | Underline |
| ''%%~~text~~%%'' | Strikethrough |
| %%``text``%% | Inline code |
| ''%%||text||%%'' | Spoiler |
| ''> text'' on its own line | Block quote |
===== Highlighted code blocks =====
text: |
```diff
- old rule
+ new rule
```
```python
def roll_dice(faces):
return random.randint(1, faces)
```
Supported languages: ''diff'', ''yaml'', ''python'', ''js'', ''json'', ''bash'', and every language handled by highlight.js on web and desktop. On Discord, they fall back to a plain code block.
===== Story Blocks =====
With ''markdown: story'', semantic blocks get a dedicated visual rendering:
text: |
```narration
The fog thickens between the trees.
```
```dialogue
**The stranger**: You should not have come.
```
```thought
*He is lying.*
```
```system
Objective updated: find the bell.
```
```journal
Night 14. Third sleepless night.
```
Supported story blocks include ''narration'', ''dialogue'', ''thought'', ''system'' and ''journal''.
===== Per-Block Styles =====
text:
- "Normal text"
- size: 28
font: Georgia
text: "A 28 px Georgia title"
- size: 14
font: monospace
background: "#111827"
text-color: "#facc15"
text: "A styled badge"
===== Room Background =====
- id: night_room
background: "#0d1117"
text-color: "#f5f0d8"
text: "The room is dark."
===== The global markdown: field =====
Set in the scenario header, it wraps **all** room texts:
^ Value ^ Rendering ^
| ''fix'' | Monospace block (default) |
| ''none'' | Plain text |
| ''bold'' | Bold |
| ''italic'' | Italic |
| ''quote'' | Blockquote |
| ''story'' | Story blocks enabled |
| ''py'' / ''yaml'' / ''js'' / … | Highlighted code block |
===== Interactive Inline Elements =====
Double braces can also make a word, phrase or picture interactive:
text: "The %%{{door:?An old door.}}%% is locked."
text: "Touch the %%{{lever:@pull_lever}}%%."
text: "Drop the %%{{key:>key}}%% onto the %%{{door:$door}}%%."
See [[en:yaml:tooltips|Interactive tooltips]], [[en:yaml:clickable-elements|Clickable elements]] and [[en:yaml:drag-drop|Drag & drop]].
Tiles and grids use the extended picture syntax: [[en:yaml:tiles-tilemaps|Tiles and tilemaps]].
===== Reusing the text of another room =====
''%%[[ROOM:n]]%%'' inserts the narrative content of room number //n// where you write it. Useful for a recurring description or reply, written only once.
text: "The corridor goes on.[[ROOM:12]]"
The French form is ''%%[[SALLE:n]]%%''. Circular references are detected and stopped: a room cannot include itself, directly or indirectly.
The reference works on the web, in the desktop application and in an HTML5 export. Discord, the Terminal and the PDF show the referenced text in their usual linear form.
To build a conversation rather than plain text, see [[en:yaml:dialogues|Dialogues and sequences]].