Skip to main content
Glama
605,552 tools. Updated 2026-09-24 01:29

"LaTeX" matching MCP tools:

  • Replace a workspace's doc body. Takes EITHER TipTap JSON (`content`) OR Markdown (`markdown`): pass markdown when you're producing prose from scratch (CommonMark + GFM is the format every LLM emits natively), pass TipTap JSON when you need structural edits to an existing doc (round-trip from get_doc, mutate, write back). Beyond CommonMark + GFM, the markdown layer recognizes: - **![alt text](https://…)** → inline image. Use ANY publicly-reachable URL (HTTPS preferred — HTTP fires browser mixed-content warnings; data: URIs are rejected by `allowBase64: false`). Renders block-feeling via CSS (max-width 100%, rounded corners, drop shadow) even though the underlying node is inline. The `alt` text is the accessible label and shows in place of the image if the URL fails to load — always include it. To attach a user-uploaded file, hit `POST /api/workspaces/:slug/upload-image` from the human-side UI first to get a Vercel Blob URL, then reference that URL in the doc markdown. - A **lone video-file URL on its own line** (extension `.mp4` / `.m4v` / `.webm` / `.mov` / `.mkv`, signed-params + timestamp fragments tolerated) → native HTML5 `<video controls preload="metadata">` player. Source URL is referenced directly: no iframe, no transcoding, no quality loss. Vercel Blob is the canonical hosting (5 GB per file, served with HTTP range requests so 4K masters stream cleanly), but ANY publicly-reachable HTTPS URL works. Sample shape: a paragraph containing only `https://cdn.dock.ai/2025-launch-walkthrough.mp4`. Mid-paragraph URLs stay as plain links — surrounding prose disqualifies the auto-promotion (matches the oEmbed convention). - **```mermaid** fenced code → diagram (15 sub-types: flowchart, sequence, gantt, ER, state, class, mindmap, timeline, pie, quadrant, sankey, XY-chart, packet, block, journey) - **$x$** inline math, **$$x$$** block math (LaTeX, KaTeX-rendered, scripts/href disabled) - **> [!NOTE]** / **[!TIP]** / **[!IMPORTANT]** / **[!WARNING]** / **[!CAUTION]** GFM-style callouts - **```svg** fenced code → sanitized SVG embed (the universal escape hatch for custom diagrams; scripts and event handlers stripped at write time) - **<details><summary>X</summary>BODY</details>** → collapsible toggle - **[[slug]]** / **[[org/slug]]** / **[[slug#tab]]** / **[[slug#row-id]]** / **[[slug|display]]** → cross-references to another workspace, surface, or row. Resolved against your accessible workspace set; targets you can't see render as plain text on the reader's side (no info leak). Every cross-ref creates a Backlink row so the target's 'referenced from' sidebar shows this doc. - **[@Label](dock:mention/<kind>/<id>)** → @-mention of a user or agent. `<kind>` is `agent` or `human`; `<id>` is the principal id. Optional query params `?org=<slug>` (agents) or `?email=<addr>` (humans) for renderer hints. Mentioning a human writes a `doc_mention` row to their inbox + sends a deep-link email; mentioning an agent fires the `doc.mention_added` webhook so the agent service can wake up and reply. Re-saving a doc that already mentions someone does NOT re-fire — only newly-added mentions notify (computed from a diff against the previous body). Use this from agent code to ping a teammate when a doc you wrote needs their eyes. - A **lone URL on its own line** from a safelisted provider (YouTube, Vimeo, Loom, Figma, CodePen, GitHub gists) → sandboxed iframe embed. Other URLs stay as regular links. Surrounding prose disqualifies the auto-embed. Per-format caps: max 50 Mermaid diagrams (30 KB source each), max 500 math expressions (8 KB source each), max 50 SVG blocks (100 KB source each post-sanitize), max 200 cross-refs per doc, max 500 @-mentions per doc, max 20 embeds per doc, max 20 videos per doc (5 GB per file at upload time), max 200 images per doc. See /docs/doc-formats for examples. Last-write-wins; no CRDT merge. Emits doc.updated + doc.heading_added + doc.mention_added events as applicable. Requires editor role. Multi-surface workspaces optionally accept `surface_slug` to write to a specific doc tab; omitted writes the primary doc surface. Append-only updates have a dedicated `append_doc_section` tool that doesn't require fetching the body first.
    ConnectorNo auth
  • Export scholarly identifiers to a bibliography file format ready to write to disk or paste into a reference manager. Use when the user wants a file (.bib, .ris, .nbib, .xml, .rdf, .csv) for Zotero, Mendeley, EndNote, RefWorks, BibTeX/LaTeX, Pandoc, or Excel. Format parameter is required: bib (BibTeX — LaTeX), ris (RIS — most widely supported by reference managers), csl (CSL JSON — Pandoc/Quarto), endnote-xml, endnote-refer, refworks, medline (NBIB — PubMed round-trips, clinical workflows), zotero-rdf, csv (spreadsheet-friendly), or txt (plain-text bibliography rendered with the optional style parameter — txt is the only format that uses style; the others have their own structured shape and ignore it). Accepts the same identifier formats as resolveIdentifier (DOI/PMID/PMCID/ISBN/arXiv/ISSN/ADS/WHO IRIS, prefixes tolerated), single or comma/newline-separated batch — one round trip per call. Returns: { content: string, format: string } where content is the entire bibliography in the requested format as a single string — write it to a file (.bib/.ris/.nbib/etc.) or paste it directly into the target tool. Use formatCitation instead when the user wants in-line citation text (manuscript, slide); use resolveIdentifier when they want raw structured metadata. Read-only and idempotent — safe to retry. Works anonymously against the public Scholar Sidekick API (rate-limited free tier); set SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) for higher limits, or RAPIDAPI_KEY for paid RapidAPI tiers. Rate limits follow your tier.
    ConnectorNo auth
  • Export scholarly identifiers to a bibliography file format ready to write to disk or paste into a reference manager. Use when the user wants a file (.bib, .ris, .nbib, .xml, .rdf, .csv) for Zotero, Mendeley, EndNote, RefWorks, BibTeX/LaTeX, Pandoc, or Excel. Format parameter is required: bib (BibTeX — LaTeX), ris (RIS — most widely supported by reference managers), csl (CSL JSON — Pandoc/Quarto), endnote-xml, endnote-refer, refworks, medline (NBIB — PubMed round-trips, clinical workflows), zotero-rdf, csv (spreadsheet-friendly), or txt (plain-text bibliography rendered with the optional style parameter — txt is the only format that uses style; the others have their own structured shape and ignore it). Accepts the same identifier formats as resolveIdentifier (DOI/PMID/PMCID/ISBN/arXiv/ISSN/ADS/WHO IRIS, prefixes tolerated), single or comma/newline-separated batch — one round trip per call. Returns: { content: string, format: string } where content is the entire bibliography in the requested format as a single string — write it to a file (.bib/.ris/.nbib/etc.) or paste it directly into the target tool. Use formatCitation instead when the user wants in-line citation text (manuscript, slide); use resolveIdentifier when they want raw structured metadata. Read-only and idempotent — safe to retry. Works anonymously against the public Scholar Sidekick API (rate-limited free tier); set SCHOLAR_API_KEY (a free ssk_ key from https://scholar-sidekick.com/account) for higher limits, or RAPIDAPI_KEY for paid RapidAPI tiers. Rate limits follow your tier.
    ConnectorNo auth
  • Compile LaTeX source into a PDF. Returns a PDF URL, page count and compile time. USE THIS WHEN: you have LaTeX source (or a \documentclass) and no local pdflatex / TeX Live installation to run it with. This is that missing compiler, available over HTTP. Also use it whenever the user asks for a document where typesetting matters - an invoice, contract, report, letter, CV, certificate, or academic paper - since you can write the LaTeX yourself and compile it here. DO NOT USE THIS TO: convert HTML to PDF, merge, split or compress existing PDF files, or extract text from a PDF. This compiles LaTeX source and nothing else. No API key is required. Anonymous callers get a small number of compilations per day and failed attempts do not count, so you can iterate on your LaTeX for free. Send an API key in the Authorization header to raise the limits. With a key, a document over the plan's page or size limit still returns a PDF: `preview: true`, the first pages the plan allows, `total_pages`, and `plan_required` naming the plan that covers the whole document. Show the user the preview and relay `warning`; never drop pages silently. IMPORTANT: This tool compiles LaTeX, NOT plain text. You must generate complete, valid LaTeX source yourself before calling it. Do not pass plain text, markdown or JSON directly - convert them to LaTeX first, and never ask the user to write LaTeX. A minimal valid document is: \documentclass{article}\begin{document}<content>\end{document}. Escape these in body text: % & $ # _ { } and backslash. If compilation fails the response includes a `diagnosis` naming the cause and a concrete suggested fix, often a missing \usepackage. Apply it and call again yourself rather than showing the user a TeX log.
    ConnectorNo auth
  • Submit a new version of an existing document. The earlier version is not replaced: it keeps its own identifier, so an existing citation of it still resolves to the exact text it referred to. The previous version's chunks will be marked as not-latest. Omit `categories`, `keywords`, or `language` to inherit each independently from the previous version; pass a value to override. Content is file-only: provide a base64-encoded ZIP archive (content_archive_base64) OR a content_ref from an out-of-band upload — exactly one. A ZIP may hold a single PDF, markdown + figures, or multifile LaTeX. Inline text is no longer accepted. For content above ~10 KB, prefer create_upload_url → PUT the file to the returned URL → pass the returned file_id as content_ref (avoids base64 token bloat). content_archive_base64 and content_ref are mutually exclusive — provide exactly one. Limits: title ≤5,000 chars; abstract ≤50,000 chars; archive ≤50 MB; keywords ≤50 items × ≤100 chars each. Set dry_run=true to validate without committing: no document is created, nothing is queued, no credits are charged; the response shows what would be saved and the estimated cost.
    ConnectorAPI key
  • Answers 'for my problem, is the method I use superseded — and by what?' over a grounded, entity-resolved knowledge base of textual critique receipts + benchmark-dominance edges (no LLM call at query time). Call with a `family` (e.g. 'rag', 'peft', 'kvcache') and a `method` (e.g. 'SnapKV', 'LoRA') to get a verdict: how superseded it is, WHO critiques it (verbatim quotes + the citing paper), WHO beats it on benchmarks (winner, numbers, condition, source paper), and the not-yet-superseded alternatives in the same sub-problem. Omit `method` to get the whole-family map: most-superseded baselines, competition sub-problems, and the live frontier. Method names are matched case- and spacing-insensitively, with did-you-mean suggestions on a miss. Use this when choosing or reviewing a technique for a known problem area, or to check whether a baseline a paper relies on has been beaten. Does not require a Pro API key. Covers ~10 builder-problem families and growing; the `family` parameter lists them, or pass family='list' for the live set. Coverage caveat: evidence is drawn only from arXiv benchmark tables, so 'superseded' means a method was beaten in a published comparison (not that it is dead or unusable), production frameworks (LangChain, LlamaIndex, etc.) appear only as baselines and never as winners, and results are a literature signal rather than a deployment recommendation. GROUNDING — how far to trust an individual receipt: every claim passes a deterministic gate against the source paper's raw LaTeX (a critique must carry a verbatim quote shingle found in the source; a benchmark edge must have every one of its numbers present there), so a fabricated quote or table cell cannot enter the KB. What the gate does NOT verify is ATTRIBUTION: the quote is real but its subject may be class-level or a pronoun ('these methods', 'they') rather than the named method, so tying a receipt to one specific method is sometimes an inference. No end-to-end precision number has been measured on this endpoint — read the verbatim quote and its citing paper before repeating a verdict, and cite the source rather than asserting supersession as fact.
    ConnectorNo auth

Matching MCP Servers

  • F
    license
    A
    quality
    B
    maintenance
    Compiles and inspects LaTeX projects using a local TeX Live 2025 installation, exposing tools for environment reporting, file lookup, building, cleaning, and a reusable IEEEtran preamble template.
    4
    -

Matching MCP Connectors

  • latexOAuth

    Persistent AI LaTeX workspace: edit and compile multi-file projects, export publication-ready PDFs.

  • Compile LaTeX to PDF without installing TeX Live. No API key needed to start.

  • Submit a document for indexing on OpenArx. Supports LaTeX, Markdown, and PDF formats. Returns a core_document_id for status tracking. Published documents are immutable. To correct or update one later, publish a new version rather than editing in place. Content is file-only: provide a base64-encoded ZIP archive (content_archive_base64) OR a content_ref from an out-of-band upload — exactly one. A ZIP may hold a single PDF, markdown + figures, or multifile LaTeX. Inline text is no longer accepted. For content above ~10 KB, prefer create_upload_url → PUT the file to the returned URL → pass the returned file_id as content_ref (avoids base64 token bloat). content_archive_base64 and content_ref are mutually exclusive — provide exactly one. Limits: title ≤5,000 chars; abstract ≤50,000 chars; archive ≤50 MB; keywords ≤50 items × ≤100 chars each. Set dry_run=true to validate without committing: no document is created, nothing is queued, no credits are charged; the response shows what would be saved and the estimated cost.
    ConnectorAPI key
  • Convert Markdown or HTML you already have into Word, PDF, HTML, LaTeX, EPUB and other formats. Pass the content directly; the document does not need to exist in mdedit. Conversion is asynchronous: pass the returned opaque jobId to get_conversion_status until it completes, and never show that identifier to the user. To export a document already stored in mdedit, use start_article_export instead.
    ConnectorAPI key
  • Compile LaTeX source to a PDF without picking a project: pass the main .tex content (and optional extra .tex/.bib files). Runs on letX's real TeX Live compile farm and returns a PDF download link, or the compile errors so you can fix the source and try again. Note: only text files are supported here, so projects with images should be created via create_project and edited in letX. The source is saved to the user's "AI Scratchpad" project.
    ConnectorOAuth
  • Permanently delete saved posts. DESTRUCTIVE and IRREVERSIBLE. First call WITHOUT confirmed=true to see which posts will be deleted, then call again WITH confirmed=true after user explicitly approves.
    Connector
    Destructive
    OAuth
  • Render Hyades source to Unicode/ASCII text art. Hyades uses LaTeX-like syntax but outputs multi-line plain text instead of PDF. It supports math (fractions, integrals, matrices, Greek letters), tables with box-drawing frames, lists, flex-like layout (hbox/vbox), user-defined macros, and computation. IMPORTANT: Always display the rendered output to the user directly in your response. The output is pre-formatted multi-line text art that depends on exact character alignment. You MUST use a fenced code block (triple backticks) or equivalent monospace/preformatted element to preserve spacing. Never display the output as regular prose text — column alignment, box-drawing characters, and fraction bars will break without a monospace font. Input is a complete Hyades document. Plain text outside math delimiters is rendered as prose paragraphs. Use `$...$` for inline math and `$$...$$` for display math (centered on its own line). --- ## Math Supports ~95% of LaTeX math syntax. ### Inline vs Display ``` Inline math: $a^2 + b^2 = c^2$ flows with text. Display math gets its own block: $$ a^2 + b^2 = c^2 $$ ``` Use `$...$` for inline, `$$...$$` for display. Display math is centered. ### Variables and Operators ``` $$ a + b - c $$ $$ a \times b \div c $$ $$ a \cdot b $$ $$ \pm x \quad \mp y $$ ``` ### Superscripts and Subscripts ``` $$ x^2 \quad x_i \quad x_i^2 \quad x^{n+1} \quad x_{i,j} \quad a^{b^c} $$ ``` Use braces for multi-character exponents/subscripts: `x^{n+1}`, `x_{i,j}`. **Bracing rules:** Use braces for multi-token expressions: `x^{n+1}`, `x_{i,j}`. Commands that take arguments (like `\mathbf{v}`) work without extra braces: `x_\mathbf{v}` is equivalent to `x_{\mathbf{v}}`, matching TeX behavior. ### Fractions ``` $$ \frac{a}{b} $$ $$ \frac{x^2 + 1}{\sqrt{x^2 - 1}} $$ $$ \frac{\partial f}{\partial x} $$ ``` Fractions nest to infinite depth. `\dfrac` and `\tfrac` are accepted as aliases for `\frac`. ### Roots ``` $$ \sqrt{x} $$ $$ \sqrt[3]{x} $$ $$ \sqrt[n]{x^2 + y^2} $$ ``` Optional argument gives the nth root: `\sqrt[3]{x}`. ### Parentheses and Grouping ``` $$ (a + b) \quad [a + b] \quad \{a + b\} \quad |x| \quad \Vert x \Vert $$ ``` Curly braces need escaping: `\{` and `\}`. ### Auto-Scaling Delimiters (\left/\right) `\left` and `\right` make delimiters grow to match their contents: ``` $$ \left( \frac{a}{b} \right) \quad \left[ \frac{a}{b} \right] \quad \left| \frac{a}{b} \right| $$ ``` Works with all delimiter types: `( ) [ ] \{ \} | \| \lfloor \rfloor \lceil \rceil \langle \rangle`. Use `\left.` or `\right.` for invisible (null) delimiters — essential for evaluation bars: ``` $$ \left.\frac{df}{dx}\right|_{x=0} $$ ``` Use `\middle` inside `\left...\right` for scaled interior delimiters: ``` $$ \left( \frac{a}{b} \middle| \frac{c}{d} \right) $$ ``` ### Explicit Delimiter Sizing (\big through \Bigg) `\big`, `\Big`, `\bigg`, `\Bigg` set delimiter sizes explicitly. `\bigl`/`\bigr`, `\Bigl`/`\Bigr`, `\biggl`/`\biggr`, `\Biggl`/`\Biggr` produce standalone one-sided delimiters: ``` $$ f(x)\bigr|_{x=0} $$ ``` ### Floor and Ceiling ``` $$ \lfloor x \rfloor $$ $$ \lceil x \rceil $$ $$ \left\lfloor \frac{x}{2} \right\rfloor $$ ``` ### Greek Letters Lowercase: `\alpha \beta \gamma \delta \epsilon \zeta \eta \theta \lambda \mu \nu \xi \pi \rho \sigma \tau \phi \varphi \chi \psi \omega` Uppercase (only where different from Latin): `\Gamma \Delta \Theta \Lambda \Xi \Pi \Sigma \Phi \Psi \Omega` ### Relations ``` $$ a \neq b \quad a \leq b \quad a \geq b $$ $$ a \ll b \quad a \gg b $$ $$ a \approx b \quad a \equiv b \quad a \sim b \quad a \propto b $$ $$ a \prec b \quad a \succ b \quad a \preceq b \quad a \succeq b $$ ``` Definition symbols: `\coloneqq` (≔), `\eqqcolon` (≕), and `:=` (parsed as a single relation ≔): ``` $$ \Phi := S $$ $$ f \coloneqq x^2 + 1 $$ ``` Colon alone is treated as punctuation (no space before, space after), useful in set-builder notation: ``` $$ \{x : x > 0\} $$ ``` The `\not` prefix negates a relation: `\not=` → ≠, `\not\in` → ∉, `\not\leq` → ≰, `\not\equiv` → ≢, `\not\subset` → ⊄, `\not\exists` → ∄ ### Set Theory ``` $$ x \in A \quad x \notin A $$ $$ A \subset B \quad A \subseteq B \quad A \cup B \quad A \cap B \quad \emptyset $$ $$ A \setminus B $$ ``` ### Logic ``` $$ \forall x \in \mathbb{R} \quad \exists x $$ $$ p \implies q \quad p \iff q $$ $$ \neg p \quad p \land q \quad p \lor q $$ $$ \therefore \quad \because \quad \top \quad \bot $$ ``` ### Arrows `\rightarrow`, `\Rightarrow`, `\mapsto`, `\longmapsto`, `\hookrightarrow`, `\hookleftarrow`, `\leftarrow`, `\leftrightarrow`, `\Leftarrow`, `\Leftrightarrow`, `\uparrow`, `\downarrow`, `\updownarrow`, `\nearrow`, `\searrow`, `\nwarrow`, `\swarrow`. Extensible arrows with text labels: ``` $$ A \xrightarrow{f} B \xleftarrow{g} C $$ ``` ### Standard Functions Standard functions are set in upright type: ``` $$ \sin x \quad \cos(x) \quad \tan x $$ $$ \log x \quad \log_2 x \quad \ln x \quad \exp(x) $$ $$ \sin^2 x + \cos^2 x = 1 $$ ``` Also: `\arcsin`, `\arccos`, `\arctan`, `\sinh`, `\cosh`, `\tanh`, `\det`, `\dim`, `\ker`, `\deg`, `\gcd`, `\sup`, `\inf`, `\max`, `\min`, `\argmax`, `\argmin`, `\limsup`, `\liminf`. ### Custom Function Names (\fn / \operatorname) `\fn{name}` or `\operatorname{name}` produces an upright function name for functions Hyades doesn't know: ``` $$ \fn{softmax}\left(x_i\right) = \frac{e^{x_i}}{\sum_j e^{x_j}} $$ $$ \operatorname{Tr}(A) $$ ``` ### Text in Math (\text) `\text{words}` inserts upright text inside math mode: ``` $$ x = 0 \text{ if } y > 0 $$ ``` ### Accents and Decorations Single-character: `\hat{x}`, `\bar{x}`, `\tilde{x}`, `\vec{x}`, `\dot{x}`, `\ddot{x}`, `\acute{x}`, `\grave{x}`, `\breve{x}`, `\check{x}` Wide accents: `\overline{AB}`, `\underline{text}`, `\overrightarrow{AB}`, `\overleftarrow{AB}`, `\widehat{xyz}`, `\widetilde{xyz}` ### Overset and Underset ``` $$ \overset{n}{=} $$ $$ \underset{x}{y} $$ $$ \stackrel{\text{def}}{=} $$ ``` `\overset{top}{base}` places annotation above base; `\underset{bot}{base}` below. `\stackrel` is an alias for `\overset`. ### Overbrace and Underbrace ``` $$ \overbrace{a + b + c}^{3 \text{ terms}} $$ $$ \underbrace{x + y + z}_{n \text{ terms}} $$ ``` ### Primes ``` $$ f'(x) \quad f''(x) \quad f'''(x) \quad f^{(n)}(x) $$ ``` ### Math Fonts `\mathbf{v}` → bold, `\mathbb{R}` → blackboard bold (ℕℤℚℝℂ), `\mathcal{L}` → calligraphic, `\mathfrak{R}` → Fraktur (𝔄𝔅ℭ), `\mathsf{A}` → sans-serif (𝖠𝖡𝖢), `\mathscr{A}` → script (same as \mathcal), `\boldsymbol{\alpha}` → bold (works with Greek: 𝛂𝛃, and symbols: `\boldsymbol{\nabla}` → 𝛁, `\boldsymbol{\partial}` → 𝛛) ### Dots and Ellipses `\ldots` (low dots, for commas), `\cdots` (centered, for operators), `\vdots` (vertical), `\ddots` (diagonal, for matrices) ### Summation ``` $$ \sum_{i=1}^{n} x_i $$ ``` `\Sum` and `\SUM` give progressively larger variants. ### Products ``` $$ \prod_{i=1}^{n} x_i $$ ``` `\Prod` and `\PROD` give larger variants. ### Integrals ``` $$ \int_a^b f(x) \, dx $$ $$ \iint f(x,y) \, dx\,dy $$ $$ \oint_C f(z) \, dz $$ ``` Also: `\iiint`, `\oiint`. Larger variants: `\Int`, `\INT`, etc. ### Limits `\lim` places its subscript directly below: ``` $$ \lim_{x \to 0} \frac{\sin x}{x} = 1 $$ $$ \max_{x \in [0,1]} f(x) $$ $$ \argmax_{\theta} L(\theta) $$ ``` ### Calculus Operators ``` $$ \frac{dy}{dx} \quad \frac{d^2y}{dx^2} \quad \frac{\partial f}{\partial x} $$ $$ \nabla f \quad \nabla \cdot \mathbf{F} \quad \nabla \times \mathbf{F} \quad \nabla^2 f $$ ``` ### Matrices Six types with different delimiters. `&` separates columns, `\\` or `;` separates rows. LaTeX-style `\begin{pmatrix}...\end{pmatrix}` also works for all matrix types. ``` $$ \pmatrix{a & b \\ c & d} $$ % (parentheses) $$ \bmatrix{a & b \\ c & d} $$ % [brackets] $$ \Bmatrix{a & b \\ c & d} $$ % {braces} $$ \vmatrix{a & b \\ c & d} $$ % |bars| (determinants) $$ \Vmatrix{a & b \\ c & d} $$ % ‖double bars‖ (norms) $$ \matrix{a & b \\ c & d} $$ % no delimiters ``` ### Cases (Piecewise Functions) ``` $$f(x) = \cases{ x & \text{if } x > 0 \\ 0 & \text{if } x = 0 \\ -x & \text{if } x < 0 }$$ ``` ### Aligned Equations `&` marks the alignment point: ``` $$\aligned{ f(x) &= x^2 + 2x + 1 \\ &= (x + 1)^2 }$$ ``` Use `\intertext{...}` inside aligned to insert prose between rows. Intertext is left-aligned at the document margin while equations remain centered: ``` $$\aligned{ x &= a \\ \intertext{where} a &= b + c }$$ ``` `\tag` works on aligned blocks — the tag is right-justified and vertically centered: ``` $$\aligned{ f(x) &= x^2 + 2x + 1 \\ &= (x + 1)^2 } \tag{7}$$ ``` ### Boxed ``` $$ \boxed{E = mc^2} $$ ``` Draws a box-drawing frame around the content. ### Phantom ``` $$ a + \phantom{bbb} + c $$ ``` Invisible placeholder — renders as whitespace with the same dimensions as the content. ### Smash ``` $$ \sqrt{\smash{y^3}} $$ ``` `\smash{content}` renders content but collapses its height to a single line (the baseline row). Used to prevent tall content from affecting surrounding constructs like roots or delimiters. ### Substack ``` $$ \sum_{\substack{i=1 \\ j>0}} x_{ij} $$ ``` Stacks multiple lines vertically (for multi-line subscripts/superscripts). ### Tag ``` $$ E = mc^2 \tag{1} $$ ``` Equation tag rendered as `(text)`. ### Number Theory ``` $$ a \equiv b \pmod{n} $$ $$ a \bmod n \quad a \mid b $$ $$ \binom{n}{k} $$ ``` ### Style Commands (No-ops) `\displaystyle`, `\textstyle`, `\scriptstyle`, `\scriptscriptstyle` are accepted but transparent (Hyades has no math size concept). `\notag` and `\nonumber` are also silently ignored. This allows pasting LaTeX source that uses these commands without errors. ### Math Spacing `\!` (negative thin), `\,` (thin), `\:` (medium), `\;` (thick), `\quad` (1em), `\qquad` (2em) ### Atom-Type Overrides (\mathord, \mathbin, \mathrel) Override the default spacing category of a symbol. Analogous to TeX's `{=}` idiom for suppressing operator spacing, but explicit and readable: ``` $a \mathord{=} b$ %% "a=b" — = treated as ordinary symbol (no spacing) $a = b$ %% "a = b" — default relation spacing $f \mathrel{:} A \to B$ %% "f : A → B" — : treated as relation (symmetric spacing) $a : b$ %% "a: b" — default punctuation spacing $a \mathbin{\triangle} b$ %% "a △ b" — triangle with binary operator spacing ``` - `\mathord{X}`: Suppress spacing — X renders as an ordinary symbol with no surrounding gaps. Use this instead of TeX's `{=}` or `{}=` idiom which does not work in Hyades. - `\mathbin{X}`: Force binary operator spacing (gap on both sides). - `\mathrel{X}`: Force relation spacing (gap on both sides). ### Binary Operators `\oplus`, `\otimes`, `\odot`, `\circ`, `\bullet`, `\star`, `\dagger`, `\ddagger` ### Geometry `\angle`, `\triangle`, `\perp`, `\parallel` ### Famous Equations (all valid input) ``` $$ x = \frac{-b \pm \sqrt{b^2 - 4ac}}{2a} $$ %% Quadratic formula $$ e^{i\pi} + 1 = 0 $$ %% Euler's identity $$ f(x) = \frac{1}{\sigma\sqrt{2\pi}} e^{-\frac{(x-\mu)^2}{2\sigma^2}} $$ %% Normal distribution $$ \fn{Attention}(Q, K, V) = \fn{softmax}\left(\frac{QK^\top}{\sqrt{d_k}}\right) V $$ %% Attention mechanism $$ e^x = \sum_{n=0}^{\infty} \frac{x^n}{n!} $$ %% Taylor series $$ \int_{-\infty}^{\infty} e^{-x^2} dx = \sqrt{\pi} $$ %% Gaussian integral $$ P(A|B) = \frac{P(B|A) P(A)}{P(B)} $$ %% Bayes' theorem $$ \nabla \times \mathbf{E} = -\frac{\partial \mathbf{B}}{\partial t} $$ %% Maxwell's equation $$ i\hbar \frac{\partial}{\partial t} \Psi = \hat{H} \Psi $$ %% Schrodinger equation $$ \fn{softmax}(x_i) = \frac{e^{x_i}}{\sum_j e^{x_j}} $$ %% Softmax ``` --- ## Text Formatting ``` \textbf{bold text} \textit{italic text} \texttt{monospace text} \textbf{\textit{bold italic}} ``` Nesting `\textbf` and `\textit` produces bold-italic text. Inline math `$...$` inside `\textit` or `\textbf` is rendered as math (not styled as text): ``` \textit{Let $f(x) = x^2$ be a function} ``` ### Verbatim (No Processing) ``` \verb|raw \commands { } are preserved| ``` ### Special Characters `\textbackslash` → \, `\textdollar` → $, `\textpercent` → %, `\textampersand` → &, `\texthash` → # ### Text Spacing Commands `\ ` (backslash-space) — explicit inter-word space. Useful after abbreviations: `i.e.\ $f$` renders without extra sentence spacing. `\@` — marks the next period as sentence-ending (silently consumed). `\,` — thin space (works in both text and math mode). --- ## Paragraphs and Line Breaking Text flows into paragraphs automatically. A single newline is a space; a blank line starts a new paragraph. ### Line-Breaking Modes ``` \linebreaker{greedy} % Default. Fast, good results. \linebreaker{knuth} % TeX-style optimal. Minimizes ugliness. \linebreaker{raggedright} % Left-aligned, no justification. ``` ### Hyphenation `\sethyphenate{true}` / `\sethyphenate{false}` --- ## Tables Tables use `\table` with nested `\row` and `\col`: ``` \table[width:40, frame:single, pad:{l:1,r:1}]{ \row[frame:{b:double}]{ \col{Name} \col{Value} } \row{ \col{Alpha} \col{0.05} } \row{ \col{Beta} \col{0.95} } } ``` ### Table Properties | Property | Values | Default | |----------|--------|---------| | `width` / `w` | number, `auto` | parent width | | `frame` / `f` | `none`, `dotted`, `single`, `rounded`, `double`, `bold` | `single` | | `border` | same as frame (outer edges only) | unset | | `pad` / `p` | number or `{t:N, b:N, l:N, r:N}` | 0 | | `align` / `a` | `l`/`left`, `c`/`center`, `r`/`right` | `l` | | `valign` / `va` | `t`/`top`, `m`/`middle`, `b`/`bottom` | `t` | Row properties: `frame`, `pad`, `align`, `valign`, `height`. Column properties: `width`, `align`, `valign`, `frame`, `pad`, `span`, `reset`. Frame styles: `none` (space), `dotted` (┄┆), `single` (─│), `rounded` (╭╮╰╯ corners), `double` (═║), `bold` (━┃) Compound edges: `frame:{t:double, b:single, l:none, r:none}`, `pad:{l:1, r:1}` Properties cascade: table → column (down rows) → row → cell. IMPORTANT: When a row overrides a property (e.g. `frame:{b:double}`), that override is inherited by ALL subsequent rows. To stop it, the next row must explicitly reset it (e.g. `frame:{b:single}`). The `border` property on the table level controls the outer edges and cannot be overridden by row or column `frame`. --- ## Lists ``` \fancylist{ - First item - Second item with longer text that wraps to the next line - Third item - Nested child - Grandchild } ``` Three nesting levels supported. Uses ●/○ bullets in Unicode, - in ASCII. --- ## Layout Primitives Flex-like box model for spatial control. ### Box Types ``` \begin[width]{hbox} % horizontal (side by side) \child[width][align]{content} \end{hbox} \begin[top|middle|bottom]{hbox} % hbox with vertical alignment \child[width][align]{content} \end{hbox} \begin[width]{vbox} % vertical (stacked) \child[width][align]{content} \end{vbox} ``` Child width: fixed number, `auto` (fill remaining), `intrinsic` (natural width), or omitted (equal share). When multiple children omit width, they split the remaining space equally (after fixed-width children). Horizontal alignment: `left`, `center`, `right`. Vertical alignment for hbox: set on `\begin` bracket — `top` (default), `middle`, `bottom`. Width inheritance: boxes without an explicit width inherit their parent's width. `\setwidth{N}` sets the document-level width. ### Rules ``` \hrule[width]{left_cap}{fill_char}{right_cap} \vrule[height]{top}{fill}{bottom} \intersect_rules{...} % fix junction characters at rule crossings ``` Width/height can be a number or `auto`. An `auto`-width `\hrule` in a vbox stretches to the box width. An `auto`-height `\vrule` in an hbox stretches to match the tallest sibling. `\intersect_rules` scans all cells, checks neighboring line arms, and replaces with correct junction glyphs (┌ ┬ ┐ ├ ┼ ┤ └ ┴ ┘). Handles single, double, bold, and mixed styles. ### Measuring Content ``` \measure<content_name,width_var,height_var>{content to measure} ``` Renders content invisibly, stores it under `content_name` (retrieve with `\recall<content_name>`), and stores the measured width and height into integer variables. ### Spacing `\vskip{N}` (N blank lines), `\hskip{N}` (N spaces) ### Common Layout Patterns Two-column with gutter: ``` \begin{hbox} \child{Left column} \child[2]{} \child{Right column} \end{hbox} ``` Centering via auto spacers: ``` \begin{hbox} \child[auto]{} \child[intrinsic]{Centered content} \child[auto]{} \end{hbox} ``` Indentation: ``` \begin{hbox} \child[4]{} \child[auto]{Indented content} \end{hbox} ``` --- ## User-Defined Macros ``` \macro<\greet{name}>{Hello, ${name}!} \greet{World} % → Hello, World! \macro<\fullname{first}{last}>{${first} ${last}} \fullname{John}{Doe} % → John Doe % Optional parameters with defaults \macro<\heading[char=-]{title}>{ ${title} \hrule[20]{}{${char}}{} } \heading{Default} % uses - \heading[char:=]{Custom} % uses = ``` --- ## Document Settings ``` \setwidth{80} % Output width in columns (default: 80) \setunicode{true} % Use Unicode symbols (default: true) \setmathitalic{true} % Italicize math variables (default: true) \linebreaker{greedy} % Line-breaking algorithm \sethyphenate{true} % Enable hyphenation \setparskip{1} % Blank lines between paragraphs \setmathabove{1} % Blank lines above display math (default: 0) \setmathbelow{1} % Blank lines below display math (default: 0) ``` --- ## Computation Variables, loops, and conditionals are available. ### Variables and Arithmetic ``` \let<x>{10} \let<y>{20} \let<sum>{\add{\valueof<x>,\valueof<y>}} Result: \valueof<sum> % → Result: 30 ``` ### Conditionals ``` \let<n>{42} \if{\gt{\valueof<n>,0}}{positive}\else{non-positive} ``` ### Loops ``` \let<i>{1} \begin{loop} \exit_when{\gt{\valueof<i>,5}} \valueof<i>\hskip{1} \inc<i> \end{loop} % Output: 1 2 3 4 5 ``` ### Content Storage `\assign<name>{content}` stores text, `\recall<name>` retrieves it. `\let`/`\valueof` is for integers; `\assign`/`\recall` is for text. ### Lambdas ``` \lambda<double>[x]{\mul{\recall<x>,2}} \recall<double>[5] % → 10 ``` ### Arrays ``` \let<nums[]>{[10, 20, 30]} \valueof<nums>[0] % → 10 \len<nums> % → 3 \push<nums>{40} % append ``` --- ## Quick Reference ### Math Mode | Input | Output | |-------|--------| | `$x^2$` | x² | | `$x_i$` | xᵢ | | `$\frac{a}{b}$` | a/b (stacked) | | `$\sqrt{x}$` | √x | | `$\sum_{i=1}^n$` | Σ with limits | | `$\int_a^b$` | ∫ with limits | | `$\prod_{i=1}^n$` | ∏ with limits | | `$\lim_{x \to 0}$` | lim with subscript below | | `$\limsup_{n}$` | lim sup with subscript below | | `$\liminf_{n}$` | lim inf with subscript below | | `$\alpha, \beta, \gamma$` | α, β, γ | | `$\mathbb{R}$` | ℝ | | `$\mathbf{v}$` | 𝐯 | | `$\leq, \geq, \neq$` | ≤, ≥, ≠ | | `$\in, \forall, \exists$` | ∈, ∀, ∃ | | `$\rightarrow, \Rightarrow$` | →, ⇒ | | `$\infty, \partial, \nabla$` | ∞, ∂, ∇ | | `$f'(x)$` | 𝑓′(𝑥) | | `$\binom{n}{k}$` | binomial coefficient | | `$\lfloor x \rfloor$` | ⌊x⌋ | | `$\fn{name}$` | custom function name | | `$\operatorname{name}$` | same as \fn | | `$\text{words}$` | upright text in math | | `$\ll, \gg$` | ≪, ≫ | | `$\mathord{=}$` | suppress operator spacing | | `$\mathbin{:}$` | force binary operator spacing | | `$\mathrel{:}$` | force relation spacing | | `$\prec, \succ$` | ≺, ≻ | | `$\neg, \land, \lor$` | ¬, ∧, ∨ | | `$\subseteq, \setminus$` | ⊆, ∖ | | `$\mid$` | ∣ (divides) | | `$\therefore, \because$` | ∴, ∵ | | `$\wp, \imath, \jmath$` | ℘, ı, ȷ | | `$\Box$` | □ | | `$\not=$` | ≠ (\not prefix negates relations) | | `$\left.\right\|$` | invisible delimiter (evaluation bar) | | `$\overset{n}{=}$` | annotation above base | | `$\underset{x}{y}$` | annotation below base | | `$\boxed{x}$` | framed box around content | | `$\phantom{x}$` | invisible spacer | | `$\smash{x}$` | collapse height to baseline | | `$\xrightarrow{f}$` | extensible arrow with label | | `$\substack{a \\ b}$` | stacked lines | | `$\mathfrak{R}$` | Fraktur (𝔄𝔅ℭ) | | `$\mathsf{A}$` | sans-serif (𝖠𝖡𝖢) | | `$\boldsymbol{\alpha}$` | bold Greek (𝛂𝛃) | | `$\coloneqq$` | ≔ (definition) | | `$\eqqcolon$` | ≕ (reverse definition) | | `$a := b$` | ≔ (combined relation) | ### Text Commands | Command | Effect | |---------|--------| | `\textbf{x}` | **bold** | | `\textit{x}` | *italic* | | `\texttt{x}` | monospace | | `\verb\|x\|` | verbatim | | `\hrule` | horizontal line | | `\vskip{N}` | N blank lines | | `\hskip{N}` | N spaces | ### Table Syntax ``` \table[width:W, frame:STYLE, pad:{l:L,r:R}, border:STYLE, align:A]{ \row[frame:{b:STYLE}]{ \col[width:N, align:A]{content} } } ``` ### Layout Syntax ``` \begin[width]{vbox} \child[width][h_align]{content} \end{vbox} \begin[top|middle|bottom]{hbox} \child[width][h_align]{content} \end{hbox} ``` ### Settings ``` \setwidth{N} \setunicode{true|false} \setmathitalic{true} \linebreaker{greedy|knuth|raggedright} \sethyphenate{true} \setparskip{N} \setmathabove{N} \setmathbelow{N} ```
    ConnectorNo auth
  • FluxInk image text recognition. Extract text from an EXISTING image (file upload, URL, or base64) the user provides. Higher accuracy than built in vision for tightly packed text, multi language documents, math, and LaTeX. Returns per region confidence and detection coordinates. Use this when the user uploads, attaches, or shares an image containing text they want extracted (screenshot, photo, scanned document, receipt, sign, whiteboard, book page, photographed handwritten notes). Use this when the user wants a photographed math expression or chemistry formula converted to LaTeX. Use this when the user references an image and asks to read, transcribe, or digitize the text in it. Do NOT use this when the user has NOT provided an image yet. Do NOT use this when the user wants to draw or handwrite something fresh (call show_handwriting_canvas instead). Do NOT use this when the request is a plain text question, summary, or explanation with no image attached. The language parameter selects the recognition mode. en is English text (default). zh is Chinese text. paddle is multilingual or mixed text. formula is mathematics. latex returns raw LaTeX markup. After returning results, present the extracted text clearly and offer follow up actions like translation, summarization, or editing.
    ConnectorNo auth
  • Search letX's public library of free LaTeX templates. Returns {id, title, url} results; pass an id to fetch for the full record. (ChatGPT deep-research compatibility tool; search_templates gives richer output for other clients.)
    ConnectorOAuth
  • List all labels/tags the user has applied to their saved posts, with counts per label.
    ConnectorOAuth
  • List all AI-generated topic categories with post counts and sample posts. Shows how posts are automatically grouped by topic. Use for "what topics do I have?", "show my auto categories", "what are my posts grouped into?".
    ConnectorOAuth
  • Extract paper content from an arXiv paper's LaTeX source, falling back to PDF text. Two modes: 'results' (default) returns ~800 chars of results/experiments + up to 3 table captions — lean, ideal for checking a reported number. 'all' returns full paper sections (abstract, introduction, related work, method, results, conclusion) at up to 3000 chars each + 5 table captions, ~15KB, so prefer 'results' unless you need the whole paper. Content is available for ~95% of arXiv papers; a 404 means neither LaTeX nor PDF extraction yielded text. May take a few seconds.
    ConnectorNo auth
  • Fetch one letX LaTeX template record by the id returned from search. (ChatGPT deep-research compatibility tool; get_template gives richer output for other clients.)
    ConnectorOAuth
  • Search letX's library of 1000+ free LaTeX templates (university theses, IEEE/ACM/Elsevier/Springer journal formats, CVs and resumes, posters, presentations, reports). Returns matching templates with their slug, category and preview link. Use get_template for full details.
    ConnectorOAuth
  • Search for academic papers and return BibTeX citations. Searches DBLP (computer science) and Semantic Scholar (broad academic coverage) for comprehensive results. Returns formatted BibTeX entries ready to use in LaTeX documents.
    ConnectorNo auth
  • Create a new letX project from provided LaTeX files (main.tex required). Returns the project id and editor link.
    ConnectorOAuth
  • Search saved posts by meaning — finds posts related to your query even when they use different words. Best for conceptual queries like "posts about building side projects" or "career growth advice". Uses AI query expansion + embedding similarity + keyword matching + a precision relevance filter for high-accuracy results. When answering the user, hyperlink each post title to its Reddit permalink and add a 1-2 sentence summary.
    ConnectorOAuth