So, other than moving around your exported SVGs & PDFs, I am not sure; Look at what u/up_o said on this cross-post on r/Ubuntu. He suggested Notekit as a way to annotate with Mardown.
Slightly late response, but I'm working on one, with a particular focus on tablet input: Notekit. There isn't quite feature parity with Typora since using native instead of HTML-based rendering makes things like tables hard and many aspects of it are still work in progress in general, but several people (including myself) do already use it on a daily basis.
There isn't really something just like OneNote unfortunately. You may check out Joplin, Obsidian and Xournal++
Notekit resembles OneNote the most imo, but it's still unfinished
cLaTeXMath is quite fast. But it can only do a fraction of what LaTeX can do and is more focused on math equations.
I use it allmost daily on conjunction with NoteKit for structured notetaking. And if you use it that often you'll find (surprisingly almost no bugs) some strings that cause it to segfault.
Having contributed to it, I also found it pretty hard to understand the code.
I'm developing a tool that kind of aims to be this. I don't think it meets some of your dealbreaker requirements at the moment (the userbase is very small, there is no specific fullscreen support beyond "maximise the window"...) either way, but I'm in particular unsure about how to interpret your requirements regarding instances; if I understand them correctly, it seems unlikely that anything out there would satisfy them.
> When there's an instance of the app opened, and you open a new instance on a different virtual desktop, it opens a new instance on the current virutal desktop
By virtual desktops, do you mean workspaces? Assuming yes:
Do you specifically want it to not create a new instance when started while in a workspace in which there already is an instance? This may be difficult to implement portably, since as far as I understand there is no standardised notion of window-to-workspace mapping that exists outside of the window manager (which accordingly would need to be queried). In many "desktop wall" paradigm WMs, windows that are on other workspaces are just windows whose top left corner is off screen.
If you want multiple instances to start up, how do you want them to interact? Should they all display the same hierarchy of notes/set of tabs? What if both of them are looking at the same file? Do you want edits to be synchronised across the instances in real time? Doing this would probably have a significant impact on the program's architecture that few developers would be willing to accommodate for such a niche requirement.
I'm developing one that primarily targets Linux and has a somewhat less tested Windows build, but I don't have the equipment to try and port to Mac and a mobile port is unfortunately completely off the table (since Gtk+ does not have support for any mobile platform).
Currently, the thing I'm agonising over the most is LaTeX math rendering, tentatively implemented in this branch. (You'll need to clone Lasem and enable the cmake switch.) Unfortunately, Lasem is barely maintained and has some pretty nasty bugs (most conspicuously, some special characters get doubled starting from their second occurrence). However, there is nothing else out there that has nearly that convenient an API (except for some solutions that embed KaTeX, V8 and Webkit, which is a tad too heavy). If you know something or are comfortable enough parsing DVIs to make a solution that calls out to external LaTeX renderers after all (or know (or can write :)) a better library), I'd be very happy to accept a patch.
This might be fairly high-hanging fruit though. Lowest-hanging fruit non-Gtk fruit I can think of: gtksourceview's markdown highlighting spec is pretty lackluster. I made some improvements to it (see sourceview/markdown.lang
in the repo), but there is room for more. (Basically, fix the regexen to correctly detect nested lists vs. code blocks etc.)