A **macro** is a piece of code that is inserted into [[passage]] text. Macros are used to accomplish many effects, such as altering the game's state, displaying different text depending on the game's state, and altering the manner in which text is displayed.

===== List of built-in macros=====
These are only the built-in macros in Twine - other macros may be installed or written on a story-by-story basis.

The following macros **control variables and text** in the story, or use them to alter the displayed passage text:
  * [[<<if>>]] / [[<<else>>]] / [[<<endif>>]]
  * [[<<set>>]]
  * [[<<remember>>]]

The following macros **display special text**, such as the contents of variables, or the text of another passage. They can provide powerful means of expression in a story.
  * [[<<print>>]]
  * [[<<display>>]]

The following macro creates special kind of **[[link]]s**:
  * [[<<choice>>]]

The following macro controls how its contained text is displayed, and can be useful when combined with other macros:
  * [[<<nobr>>]]

The following macros create **form input elements**, and can be used to get input from the player:
  * [[<<textinput>>]]
  * [[<<radio>>]]
  * [[<<checkbox>>]]
  * [[<<button>>]]
 
The following macros are not as useful as they were in previous versions of Twine, but remain for backwards-compatibility:
  * [[<<silently>>]] (now supplanted by the [[<<nobr>>]] macro and the "nobr" [[tag|passage tag]].)
  * [[<<back>>]] / <<return>> (now supplanted by the [[function|previous() function]].)

===== Pseudo-macros =====

In addition to actual Javascript-coded macros, the [[<<display>>]] macro has a shorthand form which allows passages to behave as if they were macros - their contained code can be called and included from any other passage using a syntax similar to actual macros.
