Chrome-расширение, которое добавляет математические вычисления прямо на Overleaf на основе SymPy, работающего в браузере через Pyodide.
- Python 81.2%
- TypeScript 16.5%
- HTML 2.3%
| Filename | Latest commit message | Latest commit date |
|---|---|---|
| .husky | ||
| obsidian-latex-math | ||
| public | ||
| py | ||
| src | ||
| .gitignore | ||
| .prettierignore | ||
| .prettierrc | ||
| AGENTS.md | ||
| bun.lock | ||
| eslint.config.ts | ||
| LICENSE | ||
| manifest.config.ts | ||
| package.json | ||
| pyproject.toml | ||
| README.md | ||
| tsconfig.json | ||
| vite.config.ts | ||
Linal — расширение для Overleaf
Chrome-расширение, которое добавляет математические вычисления прямо на Overleaf — на основе SymPy, работающего в браузере через Pyodide.
Что умеет
Выдели любой фрагмент LaTeX на Overleaf и нажми f(x) Evaluate во всплывающей кнопке. Результат вставится сразу после выделения.
Арифметика и алгебра
\frac{1}{2} + \frac{1}{3} → = \frac{5}{6}
(x + 1)^2 → = x^2 + 2x + 1
\frac{x^2 - 1}{x - 1} → = x + 1
Производные
(x^3)' → = 3x^2
(\sin x)' → = \cos(x)
(x^2 y)' → = 2xy
Интегралы
\int x^2 \, dx → = \frac{x^3}{3}
\int_0^1 x^2 \, dx → = \frac{1}{3}
\int e^x \sin(x) \, dx → = \frac{e^x(\sin x - \cos x)}{2}
Суммы и произведения
\sum_{k=1}^{n} k → = \frac{n(n+1)}{2}
\sum_{k=0}^{\infty} \frac{1}{2^k} → = 2
\prod_{k=1}^{n} k → = n!
Пределы
\lim_{x \to 0} \frac{\sin x}{x} → = 1
\lim_{x \to \infty} \frac{1}{x} → = 0
Тригонометрия и специальные функции
\sin(\pi) → = 0
\cos\left(\frac{\pi}{3}\right) → = \frac{1}{2}
e^{i\pi} → = -1
\ln(e^3) → = 3
Матричные операции
\det\begin{pmatrix}1&2\\3&4\end{pmatrix} → = -2
\tr\begin{pmatrix}1&2\\3&4\end{pmatrix} → = 5
\begin{pmatrix}1&2\\3&4\end{pmatrix}\begin{pmatrix}1&2\\3&4\end{pmatrix} = \begin{pmatrix}7 & 10 \\ 15 & 22\end{pmatrix}
\operatorname{rref}\left(\begin{pmatrix}1&2\\3&4\end{pmatrix}\right)
% → приведённая ступенчатая форма (RREF)
\operatorname{gauss}\left(\begin{pmatrix}1&2\\3&4\end{pmatrix}\right)
% → ступенчатая форма (метод Гаусса)
НОД, НОК, факториал
\gcd(12, 18) → = 6
10! → = 3628800
Архитектура
Контент-скрипт (страница Overleaf)
↕ chrome.runtime.sendMessage
Фоновый service worker
↕ relay
Offscreen document
└─ Pyodide WASM
└─ lmat_cas_client (lark-парсер → SymPy → LmatLatexPrinter)
- LaTeX → SymPy — разбирается через
lmat_cas_clientс LALR-грамматикой (lark) - SymPy → LaTeX — печатается обратно через
LmatLatexPrinter - Всё работает локально — никаких сетевых запросов
Сборка
bun install
bun run build # результат в dist/
Загрузить dist/ как распакованное расширение в Chrome: chrome://extensions → «Режим разработчика» → «Загрузить распакованное».
Используемые Python-пакеты
| Пакет | Версия | Назначение |
|---|---|---|
| sympy | 1.13.3 | Символьная математика |
| mpmath | 1.3.0 | Вещественные числа высокой точности |
| lark | 1.2.2 | LALR-парсер LaTeX |
| regex | 2024.11.6 | Расширенные регулярные выражения |
Основа
Python-пайплайн вычислений адаптирован из zarstensen/obsidian-latex-math.