Ability to create all content via API [and RemNote flavored markdown] (paste syntax)

Related:

Pasting Markdown

If you paste plain text into RemNote it gets interpreted as RemNote Flavored Markdown. The table below compares its syntax with common markdownmarkdown.

Format Markdown RemNote Flavored Markdown
bold **bold** or __bold__ only **bold**
italics _italics_ __italics__
You need space before the first and after the last __!
This is the same as Markdown bold!
underline - _underline_
This is the same as Markdown italics!
You need space before the first and after the last _!
Highlight - ^^highlight^^
Default: yellow (3)
Highlight with color - ^^highlight^^(N)
N = 1…6 where 5 and 6 are swapped for some reason
Headers # h1
###### h6
# h1
### h3
and some bugs, see below
Inline code `code` `code`
It is called quote and not styled monospace by default (Custom CSS for Quotes with " or monospace).
Code blocks ```block``` ```block```
Blocks are generated as separate rem.
Latex $$f = ma$$ $$f = ma$$ for display math
$f = ma$ for inline math.
Links [text](link) same
Image ![alt text](link) same
Image from clipboard (image/png) - yes
Audio - &[true](URL)
The true sets it as audio-only.
Video - &[anything but true](URL)
Cloze - {{text}}
By default all clozes in a rem are joined into one which gets a new random id.
There is a syntax to set the id manually, but I think this has to be an already existing id, so this is not useful.
Todo - [ ] todo
- [x] done
same
[[ref]] - [[ref]], [[top-level/child]]
Nesting is supported via /
As of 1.2.1 this searches top level rem only
undefined behavior if not unique
[[Daily Document]] - Use the format [[January 1st, 2021]] (code for JavaScript).
#tag - #tag
#[[multi word tag]]
undefined if not unique
Portal - ((portal_id
use Copy Rem as Portal to find this id
Plugins - ^[plugin-name](url)
the url is ignored, only the name is relevant

Not implemented yet:

  • code blocks
  • todos
  • search portal
  • hierarchical selection of tags and references

API

Internally this rem
image
has this datastructure:


[Instead of name it is key in the IndexedDB lnotes.quanta store.]

The current API only allows setting name and content of a Rem as (Rich)text, i.e. only supports using the formatting described above. I think at least the API should support adding all formatting.

This can be implemented either by

  • improving the markdown formatting options (which seems quite limited) or
  • by allowing to supply a datastructure as name/content to the API, i.e. make API.update(rem._id, { name: rem.name }) a noop for plain rems.

Updates

  • Codeblocks and todos work since 1.1
  • New Reference Pasting in 1.2.1
    • Only consideres top-level rem
    • Allow nesting/hierarchies with /, e.g. [[top-level-parent/child]]

Similarly I would like to be able to paste Rem from one account to another. This means to either

  • map all RemNote markup to markdown/html and parse it from there or
  • have an extra clipboard slot with a specific mime type just for RemNote with the relevant metadata.

Of cause both approaches can be used to add content to RemNote from another software.

1 Like

Is there a way to create aliases in the same way?

Note for clarification (for slow people like me) :
[[parent rem/child/grand child]] works
##parent rem/child/grand_child works (note the _ as it needs to be one word)