Skip to content

Typst math rendering does not work correctly inside Obsidian-style callouts. #748

Closed

Description

@OstrichDowneyJr

When Typst is selected as the math renderer, equations render correctly in normal note content, but the same equations placed inside a callout such as > [!note] are not rendered correctly.

Steps to reproduce
Go to Settings → Editor → Math renderer and select Typst.
Create a note with a Typst equation outside a callout:

$
x_1 = frac(det W_1, det A)
$

Put the same equation inside a callout:

Note

$
x_1 = frac(det W_1, det A)
$

Expected behavior
The Typst expression inside the callout should be rendered in the same way as an expression outside the callout.

Actual behavior
Typst math inside the callout is not rendered correctly, while the same expression outside the callout works as expected.

Activity

  1. adibhanna commented on Sep 8, 2026

    @adibhanna
    Contributor

    Fixed on the v2.46.0 branch in ad3d781 (release PR #749). Thanks for the report.

    Two bugs, one per view, and both engines had them; Typst just made the second one loud.

    • Editor. The live preview only renders a $$ block whose fences own their lines, and the > in front of a callout's fence counted as prose, so the block stayed raw inside every callout. It now treats blockquote markers before a fence as what they are, keeps them out of the formula, and renders the block as part of the callout card.
    • Reading view. The pass that normalizes $$ fences before remark-math ran re-scanned an earlier block's closing fence as an opener, paired it with the callout's > $$, and rewrote the note with a bare $$ outside the quote. That block then swallowed everything after it, which is the failing formula you saw, and the callout was left with no body. The pass now reads fences past the quote markers, closes a block only at its own quote depth, and moves past canonical blocks instead of re-reading them.

    One note on the example: a bare $ on its own line is not a display block in ZenNotes with either engine (that is $$), so I assume your note uses $$ fences, which is exactly what broke; with bare $ lines, both views now at least show the same plain text inside and outside the callout, without the stray > that used to appear.

    Verified on the pre-fix and fixed builds of the same note with Typst selected, in both views, with tests for the editor scan and the normalizer. It ships with 2.46.0.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions