Une [[macro|Macros]] est définie par l'utilisation du [[pragma|Pragma]] `\define`. Comme tout pragma, il peut seulement prendre place au début d'un tiddler.
La première ligne de la définition indique le nom de la macro suivi de ses paramètres. Chaque paramètre a un nom, et de façon optionnelle une valeur par défaut utilisée si aucune valeur n'est passée lors de l'appel de la macro. Les lignes qui suivent contiennent le texte de la macro (càd l'extrait de code représenté par le nom de la macro), jusqu'à l'apparition du `\end`<<:>>
Vous pouvez éviter l'utilisation du marqueur final `\end`, en rédigeant toute la définition sur une seule ligne<<:>>
```
\define sayhi(name:"Bugs Bunny") Salut, Je suis $name$.
```
Une [[présentation|Macro Definition Syntax]] plus formelle de cette syntaxe est aussi disponible.
!! [[ZoneRéservée|PlaceHolder]]
Les extraits de code peuvent utiliser des [[Zones Réservées|PlaceHolder]] en paramètres. Il suffira de placer le nom du paramètre entre les signes dollar, comme `$ceci$`.
Il est aussi possible d'utiliser des [[Zones Réservées|PlaceHolder]] comme [[variables|Variables]]. Il suffira de placer le nom de la variable (ou du nom de la macro) entre les signes dollar entourés de parenthèses, comme `$(ceci)$`.
À la valeur actuelle du paramètre ou de la variable se substituera celle portée par le [[ZoneRéservée|PlaceHolder]] lors de l'appel de la macro<<dp>>
Il est aussi possible de développer une macro dans un [[module JavaScript|https://tiddlywiki.com/dev/index.html#JavaScript%20Macros]]. Les macros ~JavaScript sont disponibles dans tous les tiddlers, et offrent un maximum de flexibilité.
On peut importer dans un tiddler les définitions de macros d'une [[sélection|Title Selection]] d'autres tiddlers en utilisant le widget <<.wlink ImportVariablesWidget>>.