mirror of
https://github.com/youfoundjk/TeXcore.git
synced 2026-07-22 07:33:31 +00:00
No description
Fixes
- WebAssembly & initialization
- Fix TikZJax WebAssembly initialization issues.
- Fonts & symbol rendering
- Override DVI parser `machine.putText` to use split character code offsets from `tikzjax.js`.
- Map codes 0–9 starting at 161 to fix incorrect Γ rendering (was showing as Θ).
- Map codes 10–19 starting at 173 to resolve Ω and ⊗ collisions with soft hyphen.
- Layout & rendering
- Fix SVG clipping by switching to `position: relative` with `overflow: visible`.
- Adjust inline SVG behavior to prevent top-of-page clipping.
- Type compatibility
- Cast types to `unknown` in `TikzJaxLoader` and worker functions for compatibility.
- Error handling & cleanup
- Improve error handling across TikZ components.
- Remove unused dependencies and unnecessary console logs.
Features
- Package loading system
- Add robust dependency resolution in `loader.ts` for:
- `tikz-cd`
- `tikz-feynhand`
- `pgfcalendar`
- Ensure required libraries and keys load dynamically on demand.
- Rendering & layout improvements
- Enhance SVG bounding box calculation.
- Implement dynamic column width calculation.
- Improve row and column layout alignment and responsiveness.
- TikZ editor enhancements
- Add keyboard shortcut tooltips to sidebar buttons.
- Introduce thickness control slider for elements.
- Improve snapping system with modes:
- grid
- half
- none
- Add support for new shapes:
- circles
- rectangles
- triangles
- Improve TikZ code generation error handling.
Improvements
- Selection & editing UX
- Add lasso selection for multiple vertices in `CanvasGrid`.
- Support multi-element editing in `RightSidebar`.
- Refactor `TikzEditorModal` to handle multiple selected vertices.
- Enable batch updates for selected elements.
- Layout & styling
- Compact `.block-language-tikz` layout:
- margin: `1.5em 0` → `0.3em 0`
- padding: `1rem 0` → `0`
- Improve canvas controls and interaction styles.
- Component refactoring
- Refactor `CanvasGrid` to use template literals.
- Replace inline styles with `setCssStyles`.
- Improve `TikzCodec` node naming clarity.
- Improve `history manager` type safety with `EditorElement`.
- Use `window.setTimeout` in asset manager for better compatibility.
- Accessibility & UI polish
- Improve sidebar button titles and tooltips.
- Standardize live preview overlay button titles.
- Clean up modal styling and text consistency.
Documentation
- Revamp TeXcore plugin documentation:
- Clarify PDF export features and settings.
- Improve quick preview architecture explanation.
- Enhance equation search and autocomplete docs.
- Streamline snippets usage and transformations.
- Expand TikZ diagrams section with graphical editor guide.
- Improve getting started guide with clearer steps.
- Add navigation and configuration updates.
- Update plugin manifest descriptions for clarity.
|
||
|---|---|---|
| .github | ||
| __mocks__ | ||
| docs | ||
| release-artifacts | ||
| src | ||
| test_helpers | ||
| tikzjax-assets | ||
| .editorconfig | ||
| .gitignore | ||
| .npmrc | ||
| .prettierignore | ||
| .prettierrc.json | ||
| CONTRIBUTING.md | ||
| esbuild.config.mjs | ||
| eslint.config.mjs | ||
| eslint.css.config.mjs | ||
| jest.config.js | ||
| LICENSE | ||
| manifest-beta.json | ||
| manifest.json | ||
| mkdocs.yml | ||
| package-lock.json | ||
| package.json | ||
| pnpm-lock.yaml | ||
| pnpm-workspace.yaml | ||
| README.md | ||
| requirements.txt | ||
| tsconfig.eslint.json | ||
| tsconfig.json | ||
| version-bump.mjs | ||
| versions.json | ||
TeXcore for Obsidian
A minimalistic, high-performance LaTeX assistant for automatic equation numbering, referencing, and TikZ rendering with basic GUI editing in Obsidian.md to transforms your vault into a rich ecosystem for scientific drafting and study.
Key Features
- Equation Numbering & referencing: Auto-numbers equations with custom IDs and provides search-based fuzzy autocomplete suggestion dropdowns via
\eqref. - On-Demand TikZ Diagrams: Compiles TikZ code blocks asynchronously in a Web Worker, lazy-downloading and caching assets to remain lightweight and bloat-free.
- Advanced PDF Export: Highly configurable single-note or batch folder PDF exports featuring customizable headers, footers, page sizes, and style overrides.
Behind the Scenes: The WebAssembly Engine
To render TikZ diagrams without forcing you to install a full local LaTeX distribution, TeXcore runs the compiler directly inside Obsidian using WebAssembly:
- TeX in Wasm: The core Pascal source code of TeX is compiled into a WebAssembly binary (
tex.wasm) via theweb2jscompiler. - Background Compilation: Because TeX compilation is CPU-bound, the plugin spawns a background Web Worker to run the Wasm engine. This keeps Obsidian's UI completely smooth and responsive.
- On-Demand CDN Fetching: When you first run a TikZ diagram, the plugin downloads the pre-compiled format engine (
core.dump.gz) and the font stylesheet (tikzjax.css), caching them locally on your disk. - Lazy Caching: If your diagram includes specific packages (e.g.
\usepackage{circuitikz}), the loader resolves the files, downloads them from a CDN, and saves them locally. Subsequent renders of the same packages work fully offline.
License
This plugin is licensed under the MIT License.
Credits & Sourcing
The TikZJax engine and assets are derived from and built upon the incredible work of the following open-source projects:
- kisonecat/tikzjax by Jim Fowler — The original browser-based TeX-in-Wasm compiler.
- drgrice1/tikzjax by Glenn Rice — Added Web Worker support, along with additional TeX library and package compilations.
- artisticat1/obsidian-tikzjax by
artisticat1— Inspiration for Obsidian integration wrapper that packaged these components.
Note: The underlying TeX engine binaries, format dumps, and LaTeX style packages are distributed under their respective open-source licenses (GPL-3.0+ / LPPL v1.3c).