Macana

Obsidian Flavored Markdown

Obsidian's Markdown dialect is called Obsidian Flavored Markdown (OFM). OFM is based on GitHub Flavored Markdown (GFM), with additions and some deviations.

Unfortunately, Obsidian does not publish formal specification for OFM. Due to the lack of specification, Macana's support for OFM is best-effort.

Supported features

By default, Obsidian uses their own variant of wikilink for internal links. To use this link style, surround the target file name without file extension or path to the file from the Vault root (document root) without file extension, with [[ and ]].

- [[Overview|Alternative Title]]
- [[Overview]]
- [[Overview#Arbitrary document tree]]
- [[GitHub Flavored Markdown#^alert-callout-compat]]
- [[#Block identifier]]

Block identifier

Macana can generate corresponding anchor point if you create a block identifier. Links to automatically generated block identifier is not supported.

This is a paragraph. ^block-ident-demo

This is a paragraph.


Since Macana strictly parse Markdown, block identifier separated by more than one newline characters is treated as a regular text, even though Obsidian treat that as a block identifier for the previous block. Because of this, you can't reference the entire list. This restriction may be removed if Obsidian published formal and correct specification for their Markdown flavor.

- Foo
- Bar

^Baz
  • Foo
  • Bar

^Baz

Image size attributes

Add a vertical pipe (|) following text specifying image dimensions to set the image size inside image's alt text.

![Engelbart|100x145](https://history-computer.com/ModernComputer/Basis/images/Engelbart.jpg)

Engelbart

Embeds

You can embeds files in accepted file formats by adding ! right before the wikilink's opening square brackets.

Images

To set the display image size, add a vertical pipe (|) following text specifying image dimension.

![[dog.jpg|128x128]]

128x128

Another documents

Put an exclamation symbol ! before internal wikilink to make it a document embeds.

As you can see in the below examples, Macana embeds the target document directly inside body without any modifications. The embedded section affects embedder's document outline. Place the embed inside blockquote if you want to it to be shown as quote.

![[GitHub Flavored Markdown#Strikethrough]]
> ![[GitHub Flavored Markdown#Strikethrough]]

Strikethrough

Surround text with a pair of one or two tildes (~) to make the part strikethrough.

~~This text is rendered with strikethrough~~.

This text is rendered with strikethrough.

Strikethrough

Surround text with a pair of one or two tildes (~) to make the part strikethrough.

~~This text is rendered with strikethrough~~.

This text is rendered with strikethrough.

Highlights

Surround text with == to make the text highlighted.

==Hello, World!==

Hello, World!

Callouts

> [!info]+ Title, _Italic_
> Both title and body can contain Markdown.

Mathematical expressions

Macana supports mathematical expressions, both inline one ($) and block one ($$).

Macana uses Temml while Obsidian uses MathJax, in order to support environments without JavaScript. Possible differences including, but not limited to:

  • Resulting graphics differs (Macana uses standard MathML, Obsidian uses MathJax's SVG output)
  • Certain LaTeX macros available on Obsidian but not on Macana and vice versa.
  • Rendering differences between User Agents due to rendering engines and/or available fonts.
This is an inline math expression $e^{2i\pi} = 1$.

This is an inline math expression e2iπ=1.

$$
\begin{vmatrix}a & b\\
c & d
\end{vmatrix}=ad-bc
$$
|abcd|=adbc

Comments

Surround portion of text with %% to exclude them from the output HTML.

Foo %%Bar%% Baz

%%
This entire block

should not be in the output HTML.
%%

Foo Baz

Unsupported features

Nested callouts

For a technical reason, Macana currently cannot parse nested callouts. This example is from Obsidian help document:

> [!question] Can callouts be nested?
> > [!todo] Yes!, they can.
> > > [!example]  You can even use multiple layers of nesting.