You can embed files, using ![[..]] - a syntax inspired by Obsidian. The HTML can be fully customized for each embed types.
The embed wiki-link syntax must appear on a paragraph of its own, with no other text added next to it.1 Recursive embeds are supported (see [] below for the one safety stop).
Notes
Embedding a note will simply inline it. For example, using ![[start]] displays the following:
Follow these steps to get started with Emanote.
- Install Emanote
- Use your existing notebook, or create one from emanote-template1.
-
Run
emanote run --port=8080(or justemanote) in terminal aftercd’ing to that notebook folder; this will launch the live server.-
Or, if you only want to generate the HTML files (for deployment), run
mkdir /tmp/output; emanote gen /tmp/output.
-
Or, if you only want to generate the HTML files (for deployment), run
- Visit Guide to learn more about Emanote, or Examples to get inspired first.2
Cyclic embeds
Embeds compose recursively — an embedded note may itself embed further notes — but a chain that closes back on itself (a → b → a, or a note that embeds itself) cannot be expanded without a fixpoint. Emanote detects the cycle and substitutes an inline ↺ Cyclic embed: <title> (via …) placeholder at the point the loop would close, naming both the offending note and the chain that led there.
The note Cyclic embed demo embeds itself. Embedding it here renders one level of its content, then the placeholder where the inner self-embed would have resolved:
This note exists only to demonstrate Emanote’s cyclic-embed detection (![[..]]). The line below is a self-embed of this same note — Emanote stops at the point the loop would close and emits a placeholder instead of expanding the embed forever.
↺ Cyclic embed: Cyclic embed demo (via Cyclic embed demo, Embedding)
Files
Embedding of File WikiLinks, as indicated in the aforementioned Obsidian help page, will eventually be supported; for now, certain file types already work.
See https://github.com/srid/emanote/issues/24 for progress on this feature.
Images
Embedding image files as, say, ![[disaster-girl.jpg]] is equivalent to  (this example links to this image).
It is also posible to add images inline (example, here’s the site favicon: ) say in the middle of a paragraph.
Videos
The following is the result of using ![[death-note.mp4]] (note that  also works).
Audio
The following is the result of using ![[cat.ogg]] (note that  also works).
PDFs
PDFs can be embedded using the same syntax. The following is the result of using ![[git-cheat-sheet-education.pdf]] (note that  also works):
Code files
Source-code, markup, and configuration files can be embedded using the same syntax. The file’s extension is matched against skylighting’s bundled syntax map, and the content is highlighted at build time through the same pipeline used for fenced code blocks (see Syntax Highlighting) — an embedded .hs file renders identically to a fenced Haskell code block in a regular note.
The following is the result of using ![[haskell-code.hs]] (the regular Markdown form  also works):
A C file:
A JSON file:
A TOML file:
A CSS snippet:
A bundled Lua filter:
Emanote source files that also have structural meaning are still available to wikilinks. For example, index.yaml continues to feed the metadata cascade, but ![[index.yaml]] can also inline the topmost file from the layer stack as a highlighted YAML block:
Template sources are linkable the same way, so a guide can point readers at a live override such as after-note.tpl.
Supported extensions
Anything skylighting’s syntaxesByExtension recognises will highlight — that’s hundreds of languages spanning Ada through Zsh, including the common programming languages, shells, markup (.html, .tex, .rst, …), data formats (.json, .yaml, .toml, .xml, …), and config files (.ini, .css, .scss, …). The image, audio, video, and PDF extensions listed above take precedence and embed via their dedicated templates instead.
To add support for a new language, contribute a Kate XML syntax file upstream to skylighting — Emanote picks it up automatically the next time the dependency is bumped.