Atharva Savnerkar 2 downloadsRepair LaTeX math delimiters in existing notes, selections, and pasted text.
Repair unrendered LaTeX math in existing notes, selected text, and future pastes. Converts \[ ... \] to Obsidian display math ($$) and \( ... \) to inline math ($). This is an independent community plugin.
No need to copy and paste the note again:
The current-note command works in editing mode and Reading view. Only the active note is repaired. Selection repair only changes complete expressions fully inside a selection and checks the surrounding note for code/math context.
In editing mode, use Undo to reverse a repair. In Reading view, use LaTeX Delimiter Fix: Revert last note repair. The latter stores one repair in memory for the current session and refuses to revert if the note has changed. It is not a persistent backup or vault history.
Use Reading view or Live Preview with your cursor outside the equation to see rendered math. Source mode intentionally shows raw syntax.
Enabled by default. Disable Fix LaTeX on paste in the plugin settings if desired. When conversion is needed, the plugin inserts plain-text Markdown from the clipboard, so rich clipboard formatting is not retained. Images, file pastes, multiple-cursor pastes, and pastes already handled by another plugin are left alone. Existing text elsewhere in the note is not changed by pasting.
main.js and manifest.json from the latest release, or extract the plugin ZIP.<your vault>/.obsidian/plugins/latex-delimiter-fix/. When updating, replace the existing files.Requires Obsidian 1.5.0 or later. No build step is needed for installation.
Before:
\[\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}\]
After:
$$
\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}
$$
The converter also handles standalone display blocks in basic quotes and lists, and display math embedded in ordinary prose by separating it into a block.
The converter skips fenced and indented code, matched inline code, YAML properties, HTML/Obsidian comments, HTML code/pre blocks, wiki links, Markdown link destinations, and existing matched dollar-delimited math (except repairing numeric percentages such as `$75%# LaTeX Delimiter Fix
Repair unrendered LaTeX math in existing notes, selected text, and future pastes. Converts \[ ... \] to Obsidian display math ($$) and \( ... \) to inline math ($). This is an independent community plugin.
No need to copy and paste the note again:
The current-note command works in editing mode and Reading view. Only the active note is repaired. Selection repair only changes complete expressions fully inside a selection and checks the surrounding note for code/math context.
In editing mode, use Undo to reverse a repair. In Reading view, use LaTeX Delimiter Fix: Revert last note repair. The latter stores one repair in memory for the current session and refuses to revert if the note has changed. It is not a persistent backup or vault history.
Use Reading view or Live Preview with your cursor outside the equation to see rendered math. Source mode intentionally shows raw syntax.
Enabled by default. Disable Fix LaTeX on paste in the plugin settings if desired. When conversion is needed, the plugin inserts plain-text Markdown from the clipboard, so rich clipboard formatting is not retained. Images, file pastes, multiple-cursor pastes, and pastes already handled by another plugin are left alone. Existing text elsewhere in the note is not changed by pasting.
main.js and manifest.json from the latest release, or extract the plugin ZIP.<your vault>/.obsidian/plugins/latex-delimiter-fix/. When updating, replace the existing files.Requires Obsidian 1.5.0 or later. No build step is needed for installation.
Before:
\[\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}\]
After:
$$
\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}
$$
The converter also handles standalone display blocks in basic quotes and lists, and display math embedded in ordinary prose by separating it into a block.
The converter skips fenced and indented code, matched inline code, YAML properties, HTML/Obsidian comments, HTML code/pre blocks, wiki links, Markdown link destinations, to `$75%# LaTeX Delimiter Fix
Repair unrendered LaTeX math in existing notes, selected text, and future pastes. Converts \[ ... \] to Obsidian display math ($$) and \( ... \) to inline math ($). This is an independent community plugin.
No need to copy and paste the note again:
The current-note command works in editing mode and Reading view. Only the active note is repaired. Selection repair only changes complete expressions fully inside a selection and checks the surrounding note for code/math context.
In editing mode, use Undo to reverse a repair. In Reading view, use LaTeX Delimiter Fix: Revert last note repair. The latter stores one repair in memory for the current session and refuses to revert if the note has changed. It is not a persistent backup or vault history.
Use Reading view or Live Preview with your cursor outside the equation to see rendered math. Source mode intentionally shows raw syntax.
Enabled by default. Disable Fix LaTeX on paste in the plugin settings if desired. When conversion is needed, the plugin inserts plain-text Markdown from the clipboard, so rich clipboard formatting is not retained. Images, file pastes, multiple-cursor pastes, and pastes already handled by another plugin are left alone. Existing text elsewhere in the note is not changed by pasting.
main.js and manifest.json from the latest release, or extract the plugin ZIP.<your vault>/.obsidian/plugins/latex-delimiter-fix/. When updating, replace the existing files.Requires Obsidian 1.5.0 or later. No build step is needed for installation.
Before:
\[\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}\]
After:
$$
\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}
$$
The converter also handles standalone display blocks in basic quotes and lists, and display math embedded in ordinary prose by separating it into a block.
The converter skips fenced and indented code, matched inline code, YAML properties, HTML/Obsidian comments, HTML code/pre blocks, wiki links, Markdown link destinations, ). An expression cannot cross a protected region. Incomplete pairs are left alone. TeX content is preserved apart from whitespace at expression edges and container prefixes.
This repairs delimiters and escapes bare numeric percentage signs in math, such as \(>75%\) to `$>75%# LaTeX Delimiter Fix
Repair unrendered LaTeX math in existing notes, selected text, and future pastes. Converts \[ ... \] to Obsidian display math ($$) and \( ... \) to inline math ($). This is an independent community plugin.
No need to copy and paste the note again:
The current-note command works in editing mode and Reading view. Only the active note is repaired. Selection repair only changes complete expressions fully inside a selection and checks the surrounding note for code/math context.
In editing mode, use Undo to reverse a repair. In Reading view, use LaTeX Delimiter Fix: Revert last note repair. The latter stores one repair in memory for the current session and refuses to revert if the note has changed. It is not a persistent backup or vault history.
Use Reading view or Live Preview with your cursor outside the equation to see rendered math. Source mode intentionally shows raw syntax.
Enabled by default. Disable Fix LaTeX on paste in the plugin settings if desired. When conversion is needed, the plugin inserts plain-text Markdown from the clipboard, so rich clipboard formatting is not retained. Images, file pastes, multiple-cursor pastes, and pastes already handled by another plugin are left alone. Existing text elsewhere in the note is not changed by pasting.
main.js and manifest.json from the latest release, or extract the plugin ZIP.<your vault>/.obsidian/plugins/latex-delimiter-fix/. When updating, replace the existing files.Requires Obsidian 1.5.0 or later. No build step is needed for installation.
Before:
\[\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}\]
After:
$$
\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}
$$
The converter also handles standalone display blocks in basic quotes and lists, and display math embedded in ordinary prose by separating it into a block.
The converter skips fenced and indented code, matched inline code, YAML properties, HTML/Obsidian comments, HTML code/pre blocks, wiki links, Markdown link destinations, and existing matched dollar-delimited math (except repairing numeric percentages such as `$75%# LaTeX Delimiter Fix
Repair unrendered LaTeX math in existing notes, selected text, and future pastes. Converts \[ ... \] to Obsidian display math ($$) and \( ... \) to inline math ($). This is an independent community plugin.
No need to copy and paste the note again:
The current-note command works in editing mode and Reading view. Only the active note is repaired. Selection repair only changes complete expressions fully inside a selection and checks the surrounding note for code/math context.
In editing mode, use Undo to reverse a repair. In Reading view, use LaTeX Delimiter Fix: Revert last note repair. The latter stores one repair in memory for the current session and refuses to revert if the note has changed. It is not a persistent backup or vault history.
Use Reading view or Live Preview with your cursor outside the equation to see rendered math. Source mode intentionally shows raw syntax.
Enabled by default. Disable Fix LaTeX on paste in the plugin settings if desired. When conversion is needed, the plugin inserts plain-text Markdown from the clipboard, so rich clipboard formatting is not retained. Images, file pastes, multiple-cursor pastes, and pastes already handled by another plugin are left alone. Existing text elsewhere in the note is not changed by pasting.
main.js and manifest.json from the latest release, or extract the plugin ZIP.<your vault>/.obsidian/plugins/latex-delimiter-fix/. When updating, replace the existing files.Requires Obsidian 1.5.0 or later. No build step is needed for installation.
Before:
\[\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}\]
After:
$$
\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}
$$
The converter also handles standalone display blocks in basic quotes and lists, and display math embedded in ordinary prose by separating it into a block.
The converter skips fenced and indented code, matched inline code, YAML properties, HTML/Obsidian comments, HTML code/pre blocks, wiki links, Markdown link destinations, to `$75%# LaTeX Delimiter Fix
Repair unrendered LaTeX math in existing notes, selected text, and future pastes. Converts \[ ... \] to Obsidian display math ($$) and \( ... \) to inline math ($). This is an independent community plugin.
No need to copy and paste the note again:
The current-note command works in editing mode and Reading view. Only the active note is repaired. Selection repair only changes complete expressions fully inside a selection and checks the surrounding note for code/math context.
In editing mode, use Undo to reverse a repair. In Reading view, use LaTeX Delimiter Fix: Revert last note repair. The latter stores one repair in memory for the current session and refuses to revert if the note has changed. It is not a persistent backup or vault history.
Use Reading view or Live Preview with your cursor outside the equation to see rendered math. Source mode intentionally shows raw syntax.
Enabled by default. Disable Fix LaTeX on paste in the plugin settings if desired. When conversion is needed, the plugin inserts plain-text Markdown from the clipboard, so rich clipboard formatting is not retained. Images, file pastes, multiple-cursor pastes, and pastes already handled by another plugin are left alone. Existing text elsewhere in the note is not changed by pasting.
main.js and manifest.json from the latest release, or extract the plugin ZIP.<your vault>/.obsidian/plugins/latex-delimiter-fix/. When updating, replace the existing files.Requires Obsidian 1.5.0 or later. No build step is needed for installation.
Before:
\[\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}\]
After:
$$
\text{Sequence} = \text{First} \longrightarrow \text{Next} \longrightarrow \text{Last}
$$
The converter also handles standalone display blocks in basic quotes and lists, and display math embedded in ordinary prose by separating it into a block.
The converter skips fenced and indented code, matched inline code, YAML properties, HTML/Obsidian comments, HTML code/pre blocks, wiki links, Markdown link destinations, ). An expression cannot cross a protected region. Incomplete pairs are left alone. TeX content is preserved apart from whitespace at expression edges and container prefixes.
. A bare % starts a TeX comment and can swallow subsequent Markdown. The same correction applies to existing dollar math from older versions. Multiline explanatory TeX comments are retained. Other invalid TeX and missing LaTeX packages require manual repair. Long equations may still need manual line breaks. Inline expressions must close on the same line. Display expressions spanning blank paragraphs, table cells, complex nested Markdown, or mixed prose within list/quote containers may be skipped. Literal paired delimiters in ordinary prose are indistinguishable from intended math; review repairs and use Undo if necessary.
The converter is a conservative source scanner rather than a full Markdown parser. Automated tests cover the original long-form equation, existing notes, Reading view/revert, selections, clipboard context, protected regions, malformed input, and repeated repairs. Tests use a mocked Obsidian API; this release was not manually exercised in a running Obsidian instance during development. Mobile uses only public Obsidian and standard JavaScript APIs, but on-device testing remains outstanding.
Runs locally. No network calls, telemetry, account, API key, remote code, external dependencies, or access outside the vault. Only explicit repairs and handled paste events change note content. All event handlers are registered with Obsidian for cleanup when the plugin unloads.
Requires Node.js 20 or later, with no third-party build or test dependencies:
node build.cjs
node --check main.js
node --test test/*.test.cjs
Edit src/math.js or src/main.js, then rebuild. main.js is the readable generated runtime bundle. The GitHub release tag must match the version in manifest.json exactly, without a v prefix; attach main.js and manifest.json as individual release assets.
Licensed under MIT.
Author: Atharva Savnerkar (Ayush4265).