Making an alias to a note allows a note to be placed in more than one location in a Tinderbox document, just like an alias in Mac OS. The original note can be in one place in the hierarchy; the alias can be somewhere else entirely. Both the original note and the alias give access to the content of the note: the same text window, the same attributes, and so on.
A note can have many aliases, or none. Aliases are a flexible way for organising notes in ways that a simple Outline-style hierarchy doesn’t permit.
An alias will have the same name as the original. Change the name of either the alias or the original, and both will change.
- The name of an alias will appear in italics in all views.
- An alias cannot contain children/descendants, but the original's can be queried via the alias; from v5.8.0, in queries aliases assume their original's descendants for purposes of matching).
- Opening a text window of an alias actually opens the text window of the original note.
- Editing the attributes of an alias actually edits the attributes of the original note (except for intrinsic attributes).
- Deleting an alias removes just that alias - the original and any other aliases are unaffected.
- Original and alias share outbound text links (TB and web links out from $Text). All other inbound/outbound notes are individual to original or alias.
- Deleting the original note automatically deletes all its aliases; deleting an alias has no effect on the original.
To create an alias, choose Make Alias from the Edit menu, or press Cmd-L — if you are in a view window, first select the correct note with the arrow tool. Otherwise, create an agent, that will create aliases for any matching notes.
The alias will be created as a sibling of the original note. You can then move it anywhere in the document that you want.
Newly-created aliases take their height and width from that of their original note. When exporting, aliases also behave as if their original note's children were their own children. In previous releases, aliases behaved as if they never possessed children.
Aliases are exported as separate pages in the appropriate location within the output. This makes it easier to use web links to alias content that point to the right place. It also helps when web output uses a hierarchical navigation system as with aTbRef.
When including children that are aliases such as when using ^children^ and ^descendants^, items than happen to be aliases are included as aliases. Previously, the original was included.
Since for most purposes the alias and its original are interchangeable, this change will seldom affect export. However, intrinsic properties of the alias are exportable (and may differ from those of the original).
Reflecting the way aliases are treated as separate entities in an export context, links to aliases 'belong to those aliases and they support their own Roadmap view and Browse Links windows. However, the links() action code cannot currently address aliases at a target so analysis of links to/from an alias is best done visually or by means of Roadmaps.
Text links as well as basic links are generated from exported aliases; the target of the link is the same for the original and all alias(es).
Any alias can be copied in its own right - i.e. maintaining the alias' discrete attributes, as opposed to taking all attributes from the original note. However, aliases can only be copied within their current document, as another TBX will not hold the original of the (alias) note being copied and the alias still points to the original for many of its attribute values.
Making an alias of an existing alias is treated as if an alias is being made from the alias's original. Note that prior to v5.0.1 and alias of an alias echoed the alias and not the original.
The $IsAlias attribute (from v5.0.2) can help with identifying whether a note is an alias or note. This is especially helpful within agents were all matches are aliases, regardless of the type of note being matched. Note that prior to v4, aliases weren't searched for by agents so the distinction was less necessary.
Intrinsic attributes of an alias (not necessarily a complete list), i.e. those not necessarily - shared with its original note are these.
The $Container attribute is worthy of note as this means the 'parent' designator value of an alias doesn't equal that of the original note. This becomes important in agent actions where the acted-on note is an alias. It is thus often necessary to use syntax like $Name(parent(original) - the name of the original note's parent container - rather than $Name(parent). In an agent action the latter code returns the name of the agent. Incidentally, in the last scenario $Name(parent) and $Name(agent) would both return the name of the agent.
