Making an alias to a note allows a note to be placed (i.e. appear) 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; see notes below re intrinsic attributes. An original and its alias(es) can share the same container/map.
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 always 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 (more re this further below).
- A copy of any alias doesn't take the suffix ' copy', as above the $name is always the same.
- An alias cannot contain children/descendants, but those of the original can be queried via its aliases (e.g. in an agent). Clarifying this, from v5.8.0, in agent 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.
- Intrinsic attributes are those attributes for which an alias can have a discrete value differing from the original (more & listing), for example map position and icon size.
- 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.
- Deleting an alias in an agent will cause the alias to be recreated as long as the original continues to match the agent query.
- Moving an alias out of an agent effectively dupes the alias as the agent will recreate its now-missing child alias (see above).
- Original and alias share outbound text links (internal 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.
- In Map views, aliases are drawn in normal container style (i.e. title bar at the top).
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. The new alias is inserted immediately after ($OutlineOrder) the source item; noting both have the same title, it is the new alias that is now selected. Newly-created aliases take their height and width from that of their original note, and placed on the map 0.5 units right and down from their source item. Once created, the alias can be moved anywhere in the current document. Another method of making aliases is to create an agent as that will create aliases for any notes matching the agent query.
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 that 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, basic links to or from 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 as a target so analysis of links to/from an alias is best done visually or by means of Roadmap view. So, originals and aliases export their own basic links (i.e. aliases can differ), but from v5.9.1 if an alias has no in/outbound basic links it will export those of the original. In the latter case the alias will show no basic links internally, e.g. in Roadmap view, but on export will inherit its original's basic links.
Text links as well as basic links are generated from exported aliases; the target of the link is the same regardless of whether the source is the original or an alias. An alias can never have $Text/text links different from that of its original - that is fundamental of the point of it being an alias.
Any alias can also be copied or aliased. However, do note that when copying/aliasing an existing alias the new alias is created as if being made from the alias's original though it uses the original's attributes rather than the source alias' intrinsic attributes (prior to v5.0.1 an alias of an alias echoed the alias and not the original). Likewise, the source alias' discrete basic links are not copied, the new alias will start with no basic links. In short you can't make a copy of an alias that maintains the intrinsic differences of the source alias from the original. Aliases cannot be copied outside their current document, as another TBX will not hold the original of the (alias) note being copied. An alias needs to point to its original for many of its attribute values so the two must reside in the same document.
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 in early versions of Tinderbox aliases weren't searched for by agents so the distinction was less necessary.
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.
Aliases are always drawn - in any major view - with their title ($DisplayName) in italics. There is no way to make an alias be titled in in normal type; this is by design. Going back pre-OS X, this mirrored how the OS showed aliases. Also at the time, Tinderbox had more limited display options. Whatever, it is currently deemed important that the user can easily tell what is an alias and what isn't and that trumps those who hate italics. This may change in the future, given the the original drivers of this choice have gone away, but this will not change within v5.x of the application.