[Feature Request] LaTeX rendering support in terminal output
Status Open
Reported on v2.1.92
Maintainer reply None cached
Workaround ✓ Mentioned in thread ↓
Activity 13 comments · opened Apr 7, 2026
Bug Description
PLEASE ALLOW LATEX TO RENDER IN THE TERMINAL PLEASE PLEASE IT WILL MAKE LEANRING CONCEPTS SO MUCH EASUER THIS WOULD BE HUGE
Environment Info
- Platform: darwin
- Terminal: Apple_Terminal
- Version: 2.1.92
- Feedback ID: 89f832ee-6067-4c40-9eb3-a6e8ef6aef01
Errors
[{"error":"Error: NON-FATAL: Lock acquisition failed for /Users/vkamarthi24/.local/share/claude/versions/2.1.92 (expected in multi-process scenarios)\n at im_ (/$bunfs/root/src/entrypoints/cli.js:1884:2153)\n at An6 (/$bunfs/root/src/entrypoints/cli.js:1884:1233)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-06T12:53:37.059Z"},{"error":"Error: 1P event logging: 1 events failed to export (code=ECONNABORTED, timeout of 10000ms exceeded)\n at queueFailedEvents (/$bunfs/root/src/entrypoints/cli.js:422:2574)\n at async doExport (/$bunfs/root/src/entrypoints/cli.js:422:1516)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-06T13:20:04.830Z"},{"error":"Error: {\"message\":\"Failed to export 1 events (code=ECONNABORTED, timeout of 10000ms exceeded)\",\"originalLine\":\"422\",\"originalColumn\":\"1668\",\"line\":\"422\",\"column\":\"1668\",\"sourceURL\":\"/$bunfs/root/src/entrypoints/cli.js\",\"stack\":\"Error: Failed to export 1 events (code=ECONNABORTED, timeout of 10000ms exceeded)\\n at doExport (/$bunfs/root/src/entrypoints/cli.js:422:1668)\\n at processTicksAndRejections (native:7:39)\",\"name\":\"Error\"}\n at error (/$bunfs/root/src/entrypoints/cli.js:1822:4371)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:417:36794)\n at AZ4 (/$bunfs/root/src/entrypoints/cli.js:417:37338)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:418:19103)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-06T13:20:04.831Z"},{"error":"Error: 1P event logging: 5 events failed to export (code=ECONNABORTED, timeout of 10000ms exceeded)\n at queueFailedEvents (/$bunfs/root/src/entrypoints/cli.js:422:2574)\n at async doExport (/$bunfs/root/src/entrypoints/cli.js:422:1516)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-06T13:23:57.612Z"},{"error":"Error: {\"message\":\"Failed to export 5 events (code=ECONNABORTED, timeout of 10000ms exceeded)\",\"originalLine\":\"422\",\"originalColumn\":\"1668\",\"line\":\"422\",\"column\":\"1668\",\"sourceURL\":\"/$bunfs/root/src/entrypoints/cli.js\",\"stack\":\"Error: Failed to export 5 events (code=ECONNABORTED, timeout of 10000ms exceeded)\\n at doExport (/$bunfs/root/src/entrypoints/cli.js:422:1668)\\n at processTicksAndRejections (native:7:39)\",\"name\":\"Error\"}\n at error (/$bunfs/root/src/entrypoints/cli.js:1822:4371)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:417:36794)\n at AZ4 (/$bunfs/root/src/entrypoints/cli.js:417:37338)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:418:19103)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-06T13:23:57.613Z"},{"error":"Error: 1P event logging: 1 events failed to export (code=ECONNABORTED, timeout of 10000ms exceeded)\n at queueFailedEvents (/$bunfs/root/src/entrypoints/cli.js:422:2574)\n at async doExport (/$bunfs/root/src/entrypoints/cli.js:422:1516)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-06T14:01:31.180Z"},{"error":"Error: {\"message\":\"Failed to export 1 events (code=ECONNABORTED, timeout of 10000ms exceeded)\",\"originalLine\":\"422\",\"originalColumn\":\"1668\",\"line\":\"422\",\"column\":\"1668\",\"sourceURL\":\"/$bunfs/root/src/entrypoints/cli.js\",\"stack\":\"Error: Failed to export 1 events (code=ECONNABORTED, timeout of 10000ms exceeded)\\n at doExport (/$bunfs/root/src/entrypoints/cli.js:422:1668)\\n at processTicksAndRejections (native:7:39)\",\"name\":\"Error\"}\n at error (/$bunfs/root/src/entrypoints/cli.js:1822:4371)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:417:36794)\n at AZ4 (/$bunfs/root/src/entrypoints/cli.js:417:37338)\n at <anonymous> (/$bunfs/root/src/entrypoints/cli.js:418:19103)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-06T14:01:31.181Z"},{"error":"Error: Failed to fetch version from https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/latest: timeout of 30000ms exceeded\n at Py1 (/$bunfs/root/src/entrypoints/cli.js:1882:15046)\n at processTicksAndRejections (native:7:39)","timestamp":"2026-04-06T14:01:41.170Z"},{"error":"Error: Failed to fetch version from https://storage.googleapis.com/claude-code-dist-86c565f3-f756-42ad-8dfa-d59b1c096819/claude-code-releases/latest: timeout of 30000ms exceeded\n at Py1 (/$bunfs…
Note: Content was truncated.
Showing cached comments. Read the full discussion on GitHub ↗
9 Comments
Adding a more structured request here because this seems to be the right issue for it.
The main request is support for Markdown math rendering in the Claude Code terminal / TUI path, ideally for both:
$...$$$...$$Concrete examples:
Inline:
Block:
Right now these show up as raw Markdown / LaTeX source, which makes Claude Code much less useful for:
I think even a limited first step would already help a lot:
This does not necessarily require full browser-style MathJax/KaTeX rendering in the terminal. A normalized terminal-friendly rendering path would already be a meaningful improvement over raw source.
This is specifically about the terminal / TUI rendering path, not browser-based renderers.
is this being considered? Would be really usefully if implemented. +1-ing this
I also have this problem. Plz support latex in vscode cc tui.
I also really need this feature.
If you want STEM to take Claude seriously, you need to let Claude output in a way that's usable by professionals in those fields.
Right now, the only way to get LaTeX is to run Claude headless and pipe the output to something else to render it, or use your crappy mobile/browser apps. Both of which are terrible solutions, IMO.
+1, would be nice to have. Google just added this:
See https://github.com/google-antigravity/antigravity-cli/releases/tag/1.0.4
For anyone who needs a stopgap while this stays open: I put together a small Claude Code skill,
claude-math, that gets Claude to emit math as inline Unicode glyphs (∑, ≤, ℝ, x², ∫₀¹, set-builder, matrices, etc.) instead of LaTeX, so it is at least legible in the terminal today.To be clear, it does not render LaTeX (that is exactly what this issue asks for). It just sidesteps the
$...$noise with Unicode that every terminal already displays, and it is copy/search safe (no math-alphanumeric styling codepoints).Install:
Same skill also works in Codex CLI (
claude-math install --codex, since Codex reads the sameSKILL.mdformat).Repo: https://github.com/vladimirrott/claude-math
Would still love native rendering here; posting this only as a workaround for people who need readable math in the meantime.
Quick update:
claude-mathis now on npm, so no clone or marketplace-add needed first, one command does it:Published with provenance (
claude-math@0.2.0, https://www.npmjs.com/package/claude-math). Verified on a clean machine: installs and enables the skill fine.Still just the Unicode-glyph workaround, not the native LaTeX rendering this issue asks for, so I'm not suggesting this closes it. Just a ~10-second install now if you want readable math in the terminal today.
Repo: https://github.com/vladimirrott/claude-math
cc @vignankamarthi @water2078 @farhan0167 @Doglovesfish @jncrenshaw @cossio in case the one-line install helps in the meantime.
Pinging the folks who asked for this, so the update doesn't get buried:
claude-mathis now a one-line install (npx claude-math install, or--codexfor Codex CLI). Details in my comment above. It's the Unicode-glyph workaround, not the native rendering this issue tracks.cc @vignankamarthi @water2078 @farhan0167 @Doglovesfish @jncrenshaw @cossio
Small update for anyone using the stopgap here, and thanks in advance to everyone who kicks the tires. Your feedback is what shapes this.
Over on the Codex twin of this request (openai/codex#18906), @DanChai22 pointed out the real limit of a Unicode-only skill: it cannot render arbitrary LaTeX, and stacked bounds leak source. Fair hit. So claude-math 0.3.1 now handles the multi-char cases much better:
To be clear this is still the Unicode stopgap, not the native rendering this issue asks for. The real fix is a TUI that parses inline and block math, renders through a graphics backend when the terminal has one (Kitty, iTerm2, SIXEL), and falls back to readable Unicode or structured text otherwise (SSH, tmux, CI logs).
One line to try it, MIT, read every line:
npx claude-math install # Claude Code
npx claude-math install --codex # Codex CLI
Repo: https://github.com/vladimirrott/claude-math
Two open questions I would genuinely love your take on:
@vignankamarthi @water2078 @farhan0167 @Doglovesfish @jncrenshaw @cossio what would you want from a native renderer here? And if you try the stopgap, thank you in advance for any feedback. That is exactly the kind of nudge that turned into today's fix.
Open source is at its best when someone points at the rough edge and it just gets fixed.