How to make a glossary plugin

As I am using TW in school, I am often in the situation I discover that students do not know a specific word.
I would like to be able to import edit a dictionary-tid and display and edit it in the sidebar. It should automatically highlights and tooltip words in the text…
As I would like this to be done without changing the textfile,I guess this would be a dynannotate task, but how can this be realized? Other than in dynannotate this would not need prefix nor suffix.
Any Ideas?

In 2016 I did create a little glossary bundle. The original thread has been at GG:

You can import the following JSON … It also contains some docs

glossaryTiddlers.json (2.9 KB)

It may be a starting point.
have fun!

1 Like

If it should be done automatically, I think it would need to be similar to the freelinks-plugin. But this is a performance hog, since it would need to dynamically analyse every text element that is shown.

just a thought

Cool! Many thanks.
Is there a place to see this in action?
Is it already possible to annotate a textfile?

No – There are 2 example glossaries in the JSON file.

No – There are 2 macros, which need to be part of the text.

I think the problem with “learners” is, that too much “hand holding” can be counter productive. If everything is automatically annotated, there is no need to learn something new.

IMO if there is some interaction (gamification) the effect would be much better.

Teaching in a class with a high degree of non-native-speakers I would be happy to have a tool to annotate whenever I encounter a new word and to help with as many words as needed.
Otherwise they might be forced to take the completely effortless google-switch-language-way.

lol – OK – you win

Is there a reason that you don’t want one tiddler per definition? I find that for teaching purposes, there are many terms that warrant more than a simple ;term :definition structure — example sentences, etymology, see-also terms, don’t-confuse-with reminders, diagrams, overview of terms that are more specific variants of the current term, etc.

So I have a glossary tiddler with an overview of the first definition paragraph from each entry, but then each term clicks through to the more expanded explanation.

They’re not currently freelinked (since I stripped the site bells & whistles down for performance reasons when a student was running a desperately outdated laptop), but freelinking the glossary terms will get you most of what it seems you want, no?


Hi @springer, this is beautiful.
Do you have a dedicated editor for the glossary?

My terms are less universal. I am a history teacher - so sometimes I would annotatate something rather peculiar to a particular source- like a currency or a weight.

PS.: How do you apply the styles?

If I were writing such content I would tend to place the first use of a term in the current tiddler with a link to the tiddler [[glossary term]] as is traditional in written language and for acronyms “three letter acronym ([[TLA]])”. You can then leave the other uses unlinked. If desired you can turn off wiki links in content such as for printing but they are helpful. Freelinks can still be turned on and all occurrences will become links.

  • However you could do this through a macro with hover giving a tooltip description retrieved from the glossary tiddler.
  • Something like a footnotes plugin can also be used
  • If the first occurrence (or more) is a link in the text you could place the following in the view template below the body;
<$list filter="[all[current]links[]sort[]]" counter=item>
   <$list filter="[<item>match[1]]" variable=~>Links: </$list><$link/>, 
  • This lists all tiddler links in the current tiddler, if any, at the bottom.


  • Also look for the uni-link or alias plugins for multiple synonyms
  • Note freelinks can be turned off except for selected tiddlers.

Somewhere I have a tool “Dynanotator” based on dyananotate that lets you highlight text and then add comments or whatever. I never fussed with the CSS to make it real pretty.

Perhaps we could have a switch to easily turn on and off freelinking for this reason.

It can, see inside the plugin

I wrote one when fairly new to TW that turns out to be very similar to @springer’s approach.

A demo is at Usage is very simple:

<<excerptList "[tag[Glossary]]">>

And it simply extracts the first paragraph from each matching tiddler, linking directly to the tiddler for more information.