Render markdown at the bottom of the note viewer

In my Plugin, the user is able to insert research references into the note body in the current cursor position. However, the inserted text is a short form of the complete reference, like (Smith 2015). So, I want to do one extra thing: render a full list of references at the bottom of the note viewer like this:

References

  • Statistical mechanics describes how macroscopic observations are related to microscopic parameters that fluctuate around an average (Smith 2015)

I was planning to use a markdown-it plugin to do that, but all the resources I found were about rendering a single token in the same place where it was inserted. So, can anyone guide me on how to accomplish such a thing? Or maybe there is a better approach without the need for a markdown-it plugin?

Thanks in advance :heart:

But why not just have it render in the same place it was inserted ? :thinking: It's easier that way and in fact, you can just use the table-of-contents plugin as reference.

People would have the freedom to enable it or not instead of forcing it on the user. Maybe they don't want it at the very end ? (I'm not sure where else would you put it.. But still lol)

I just prefer having it as a token [[references]]. It is more flexible.

2 Likes

To render some arbitrary content, you could add a core rule, as is done for the checkboxes: joplin/checkbox.ts at a8bc9d2a63f3ed75e93910c72bbc3dff0a5df956 · laurent22/joplin · GitHub

Markdown-it calls this only once and you get the complete list of tokens. Then you have two options I think:

  • Append a custom token for example called "reference_list", then you create a new renderer rule that convert this token into HTML.

  • Or you could directly add the HTML tokens to the token list, as is done in checkbox.ts

2 Likes

The references will be rendered at the bottom of the note viewer in addition to being rendered in the same place they were written in. With that said, I actually liked the idea of making it optional for users. I can, for example, register a checkbox in the config screen for that.

2 Likes

I think there was one plugin that did something similar to what you're looking for.

The idea is to add a custom token to the end of the list of all tokes and have a rule that handles this token to output whatever you want.

1 Like

Found it: joplin-plugin-referencing-notes/notesReferences.js at master · ambrt/joplin-plugin-referencing-notes · GitHub

1 Like