StretchText is a hypertext feature which hasn’t gained mass adoption in systems like the WWW, but which gives more control to the reader in determining what level of detail to read at. Authors write content to several levels of detail in a work.

StretchText is similar to outlining, however instead of drilling down lists to greater detail, the current node is replaced with a newer node. This “stretching” to increase the amount of writing, or to contract it gives the feature its name. This is analogous to zooming in to get more detail.

Ted Nelson coined the term around 1967.

Conceptually StretchText is similar to existing hypertext system where a link provides a more descriptive or exhaustive explanation of something, but there is a key difference between a link and a piece of stretchtext. A link completely replaces the current piece of hypertext with the destination, whereas stretchtext expands or contracts the content in place. Thus the existing hypertext serves as context.


Storyspace Placeholder/’Transclusion’

Though Storyspace 3 strives to avoid modes, combining all its extensions in a single formalism, one modality cannot be avoided. The Storyspace reader clicks to follow links, but the writer and editor must be allowed to click to select and revise text.  

Storyspace 3 leverages this long-extant and seemingly- inescapable modal behavior to support generalized stretchtext  through macro expansion.  When writing, we may insert placeholders that can be interpreted by the performance engine. For example, the placeholder  


will be replaced, in the reader’s view, by the text of the note

Cicero in the container “sayings”. Similarly,


will embed a link with the specified anchor, If the link is clicked, the anchor text will be replaced by the contents of the designated note, and an optional action may be performed in order to record a change of state.

Storyspace 3 Mark Bernstein Eastgate Systems, Inc.


Random Destination (Link)

If the reader has not clicked on a text link, and if no basic links are found, we next examine the value of the current deck, a list of string tokens. If the current deck is empty (as it is in all Storyspace 1 documents),  

Storyspace 3 waits for an explicit selection. If the current deck isnot empty, however, Storyspace 3 gathers a pool of all notes for which  

• the note’s $Deck has a term in common with the current deck

• the note’s $Requirements are satisfied.

• the note is unvisited or, if no eligible note is unvisited,

the note has not been visited more than any other eligible note.  

If more than one such note is found, one note is chosen at random from the eligible set, and that note becomes the destination.

Storyspace 3 Mark Bernstein Eastgate Systems, Inc.



There is of course no reason why random links could also be incorporated into general hypertext.

Plain Links

Storyspace hypertexts offer both text links – links anchored to text spans – and plain links, which are notionally anchored to the writing space as a whole. Plain links for each note are kept in an ordered list. 

If a reader clicks on a word not otherwise linked, or if she presses the [Return] key, Storyspace follows the highest- priority plain link which has a satisfied guard field. Only if there  are no satisfied plain links does Storyspace require an explicit selection.

Storyspace 3 Mark Bernstein Eastgate Systems, Inc.