Markdown ✍️

Emanote notes are primarily written in Markdown format, but Org Mode ✍️ is also supported in a basic form. A tutorial is available here. Below we shall highlight some of the commonmark extensions that Emanote supports on top of standard Mardown syntax.

Emanote supports [[…]] wiki-link syntax. See Wiki Links for the full reference — custom titles, structural links, anchors, regular-Markdown forms, and how broken / ambiguous links render (templated, override-friendly).

Emojis

😄

🏃 🐜

See list of available emojis for reference.

Footnotes

https://github.com/jgm/commonmark-hs/blob/master/commonmark-extensions/test/footnotes.md

Demo: Checkout this note1 and this other note2 as both are footnotes. You may also reuse1 footnotes.

Clicking a footnote reference opens a click-dismissible popup with the footnote’s body — no scroll-away, no bottom footnote list. Keyboard users can focus a ref and press Enter or Space. On narrow screens the popup slides up as a bottom sheet.

Task lists

  • A task that was done
  • A task that is to be done.
  • Task with Markdown and links (eg: Pandoc Lua Filters)
  • A list item with no task marker

Tasks can also be written outside of list context, such as paragraphs:

This is a task on its own paragraph.

Here we have the next paragraph.

Unchecked tasks will appear in the task index available at /-/tasks.

Definition lists

https://github.com/jgm/commonmark-hs/blob/master/commonmark-extensions/test/definition_lists.md

Fruits
Apples
Oranges
Animal Foods
Eggs
Diary
Offal
Muscle meat

Lists

Simple lists,

  • Apple
  • Orange
  • Mango

Lists with sub-lists,

  • Muscle meat
  • Offal
    • Liver
    • Heart
  • Misc
    • Bone Marrow
    • Cartillage
    • Skin

List items can contain multiple block elements (eg: paragraph),

  • Meat is the only nutritionally complete food

  • Animal foods contain all of the protein, fat, vitamins and minerals that humans need to function.

    They contain absolutely everything we need in just the right proportions.

  • In contrast to vegetables, meat does not contain any “anti-nutrients”

Ordered lists,

  1. Be happy
  2. Be harmless
  3. Be naive

Tables

CategoryFavourite
Web BrowserBrave
Search EngineBrave Search
ChatElement

Column alignment is honored on each cell — use :--- for left, ---: for right, and :---: for center.

LeftCenterRight
AppleBananaPear
CarrotEggplantKiwi

(Note that wiki links with a custom text must have their pipe escaped when used inside tables.)

Hash Tags

Add Twitter-like hashtags anywhere in Markdown file. They can also be added to the YAML frontmatter. Hash tags can also be “hierarchical”, for instance: #emanote/syntax/demo

All-numeric issue references such as #221 are left as plain text rather than tags. If a numeric identifier should be a tag, use a hierarchical tag such as #issue/221.

Highlighting

You can highlight any inline text by wraping them in == (ie. ==inline text==).3 The CSS style for highlighted inlines can be specified in index.yaml. Regular Markdown syntax, including emojis, can be mixed in with highlighted inlines to 🍓 give a distinction on top of it all.

Callouts

See Callouts for details.

Note

This is a note callout

Lorem ipsum dolor sit amet, consectetur adipiscing elit, sed do eiusmod tempor incididunt ut labore et dolore magna aliqua.

Raw HTML

Block-level HTML is passed through verbatim. When an opening tag and its matching closing tag each sit on their own line with blank lines on either side, the markdown between them is parsed as the element’s children. This is how <details> renders as a working disclosure widget with rich content inside:

This paragraph is a child of the <details> element. Regular markdown still works inside — emphasis, example links, code spans, and Emanote extensions like wiki links all parse normally.

Without the blank lines, the <details>...</details> is treated as one opaque HTML block — markdown inside is not parsed. For an Emanote-native foldable variant that doesn’t require raw HTML at all, see the + / - callout suffix in Callouts.

Heading anchors

You can use the following syntax to override the default heading anchors:

{#head}
## Some heading

On default theme, an anchor is displayed when you hover on the heading allowing you to copy the link to the heading. Here are all heading levels for comparison:

Heading level 3

Heading level 4

Heading level 5
Heading level 6

Code

Fenced code blocks are tokenised at build time and shipped as styled <span>s, e.g.

main :: IO ()
main = putStrLn "Hello, world!"

See Syntax Highlighting for the highlighter, the bundled language list, and how to disable highlighting per-page.

Source files can also be embedded into a note by wikilink — ![[foo.hs]] inlines the file as a syntax-highlighted code block, with the language picked from the file extension. This also works for Emanote’s own source files such as index.yaml and Heist .tpl templates. See Embedding for the syntax and the recognised extensions.

Diagrams written in mermaid syntax render as SVG — see Mermaid Diagrams.

#emanote/syntax/demo #issue/221