In this lesson, I cover linking within Tinderbox. This lesson covers the entire complexity gamut, from basic foundational concepts to fundaments, to intermediate actions, to advanced applications of action code.
Links are useful for,
Visual semantics
Structural semantics (data analytics and analysis)
Navigation
Moving and transforming attribute value
The process of linking helps you curate and incrementally formalize your thinking as you work with your notes.
Furthermore, I discuss why we create links, what links are, how to create links, and some important technical details pertaining to links, like direction and style. I also address how to make links dynamic through action so that you can use them as functional method for moving and transforming data, aka attribute values, throughout your Tinderbox file.
Semantics is the study of meaning, reference, or truth, and links can help us with this visually.
There is a lot to this lesson. The topics covered and when they are covered in the video are listed in the table below.
Topic
Start Time
Introduction
00:00
Linking in Map View, modifying link visuals
05:47
Using the hand in map view to move link position
08:38
Linking in outline live
09:10
Introduction to Link pane, ⌘
09:35
Linking in Timeline and other views, like chart view
12:26
Viewing into a note with Link pane, tearing off text window and editing note
14:39
Parking lot method 1: parking a link for later use
16:58
What the link numbers mean in map view
19:12
Parking lot method 2: linking inline text to other notes
20:05
Parking lot method 3: linking to other notes by name search and introduction to link types
21:01
Weblinks: creating and editing
25:02
Footnotes and endnotes
26:19
Simple citations
30:44
Ziplink method
31:48
Ziplink method - linking to a note by name
31:35
Ziplink method - creating note
34:09
Ziplink method - creating note and embedding return anchor link
34:09
Ziplink method - creating note and embedding text and return anchor link
35:55
Ziplink method - linking to another note and chaining the anchor text
34:50
Understanding link types: creating, deleting, and understanding directionality
38:16
Understanding link types: link type actions, i.e. triggering one-time action code with link types
38:16
Understanding link types: transferring and transforming attribute value from one note to another, understanding destination and source designators
38:16
Using export code to generate navigation links
51:06
Pulling it all together: manuscript management demonstration
53:55
Unlinking and updating attribute values “automatically” with action code
57:10
Linking and updating attribute values “automatically” with action code
Love your new video, especially the part where you are talking about passing data between linked notes! Is it possible to find all notes which are using particular link type? I could do it by adding specific value to notes’ attribute which are using particular link type and then run agent to look for this value, but maybe there is easier/faster way to do it?
A good starting place for this is aTbRef, especially the full list of action code operators. More specifically, you might want to check out linkedTo() and its opposite linkedFrom().
Yes, absolutely. I use the operations that @mwra refers to near the end of the demo for managing the “automatic” addition and removal of the links.
I’ve updated the sample file linked above with one method for doing this. You’ll note how I’ve created new user attributes to capture both lists and count of the three link types: Invited, Accepted, Declined. There are a ton of ways to do this, and more important to use the results, but this was the quickest from an example perspective.
You can generate some keen insight. For instance. You’ll note how only three reviewers have been invited, but there are 5 invitations. This is a signal that one or more reviewers have been invited more than once.
Thanks @satikusala for another excellent training video from you! There is still so much to discover in tinderbox.
In my current project (plot for a novel) I have >50 notes which are linked in a chain. I use the link type to describe a cause-effect relationship from on note to the next (note-1 -> causes-effects -> note-2).
In map view it looks wonderful.
For review I would like to export the notes as html but with the customised linke type names. Is there a way to export the link type too and get something like:
I don’t believe there is. In V9 a new action code is being introduced that will enable the ability to pull details about attributes, e.g. perform a get for their default, suggested, category, type, and description details. Perhaps we could ask for a new feature that would do something similar for linkTypes.
I tried thinking about how to do this with a Stamp and I could not think of a way. I’ll ask around.
If it faster than typing it manually again it might be worth considering it. I could then plug in the different values (names from linke types) into an attribute for later reference.
Correct, you can take actions on the link types, but as of right now you can’t store a link type as an attribute value and then use this value in other operations, like in an export template.
Thanks for an excellent video. I have a question , when I use [[ to start a link in the note’s text , it starts to show up a list of suggestions ( note names )from the existing notes.
In my case since I have created more than one note with the same name ( as I am updating my notes from a long time ) I wish I could preview notes which are given as suggestions in the list and then select the appropriate one . Could you help me with this query please? Thanks
In short, No, as that isn’t what the quick link pop-up is designed to do. Therefore, what you want—in the manner to desire to see it would need a change to the app so by all mean email in a feature request (to tinderbox@eastgate.com) with a use case explaining what you need and why.
Meanwhile, be aware that the quicklinks’ matching note pop-up lists notes in $OutlineOrder.
Perhaps the first thing to do is de-dupe your note names. In outline view, make an agent with the query:
isDuplicateName($Name)
and the agent action to:
$MyString=$Container(original);
Next, in the Sort Inspector set ‘Sort by’ to Name and ‘and by’ to OutlineOrder.
Lastly, enable column view and add a column for ‘MyString’.
We see note ‘ant’ has 3 duplicates—and as importantly where they are, and that ‘bee’ has one duplicate. In my test above I made a new user String attribute OriginalContainer in case MyString was already being used for other purposes, e.g. in a large/mature TBX document.
Now, once you’ve worked out your duplicate to use discrete name, you can get on with making quick links without ambiguity as to the target note. Or if you want to keep the duplicate $Name you can at least easily preview the note’s $Text and figure to which duplicate you wish to link and where it lists in the list of duplicates (as by $OutlineOrder).
This is exactly why I’ve started the convention of using prefixes, e.g. Org-, for organization, Prod-, for a product, Fig-, for figure, Qt- for quotes, etc. I make a special effort to ensure my note names are unique. I use a variety of manual and automated strategies for this. The key when using prefixes is to also use a user-generated attribute I call $Shorttitle. I run a function on every note that strips the prefix out to populate the $Shorttitle attribute with the $Name sans prefix. That way, when I publish my documents I have names and not references without the prefix. These practices are explained in my later videos.
Prefixes are good, but they aren’t suitable for all sorts of notes. One day, you take notes on “the totalitarian press”. Three years later, other stuff has happened and you take new notes on “the totalitarian press”, not thinking about your old note at all.
I think this sort of preview might be a good thing, though it uses screen space and you might be covering up things you want to see. I’ll make a note of it.
Oh, don’t get me wrong. I LOVE the idea of the preview. Also, I agree prefixes are not right for every or note-taking/publishing context. I had to do a ton of thought and code development to make this strategy work for me; which was not a bad thing because it really made/makes me think and immerse myself in my data.
Every UI affordance comes at a cost, maybe there could be a pop-up.