Skip to main content

A Python library for generating, validating and converting academic content using Typst format.

Project description

fabricatio-typst

MIT Python Versions PyPI Version PyPI Downloads PyPI Downloads Bindings: PyO3 Build Tool: uv + maturin

Academic article generation and Typst document tooling, built on Fabricatio's event-based agent framework.

Installation

pip install fabricatio[typst]

For RAG-backed article writing:

pip install fabricatio[typst,rag]

Overview

Two layers compose this package:

Rust extension (fabricatio_typst.rust) — performance-critical utilities:

  • TeX-to-Typst math conversion (raw LaTeX and delimited $/$$/\(/\[ math)
  • BibTeX bibliography management with fuzzy citation lookup
  • Typst comment manipulation and YAML front-matter handling
  • Markdown section extraction

Python layer — agent-based academic content generation:

  • Extract paper essences and generate structured research proposals
  • Build hierarchical article outlines and generate full content
  • RAG-backed article writing with citation-aware iterative retrieval
  • Store and query article chunks in LanceDB

Rust API

from fabricatio_typst.rust import (
    BibManager,
    tex_to_typst,
    convert_all_tex_math,
    comment,
    uncomment,
    strip_comment,
    split_out_metadata,
    to_metadata,
    extract_body,
    replace_thesis_body,
    extract_sections,
    fix_misplaced_labels,
)

TeX Conversion

Function Description
tex_to_typst(string) Convert raw LaTeX code to Typst math
convert_all_tex_math(string) Convert $, $$, \(, \[ math delimiters to Typst $
tex_to_typst(r"\frac{1}{\sqrt{x^2 + 1}}")
# => '#frac(1, sqrt(x^2 + 1))'

convert_all_tex_math("Einstein's $E = mc^2$ is famous.")
# => "Einstein's $E = m c^2$ is famous."

Comment Utilities

Function Description
comment(string) Prepend // to every line
uncomment(string) Remove // prefix from every line
strip_comment(string) Strip leading and trailing comment lines

BibManager

Loads a BibTeX bibliography file and provides fuzzy citation lookup.

bib = BibManager("references.bib")
cite_key = bib.get_cite_key_by_title("Attention Is All You Need")
# => "vaswani2017attention"

key = bib.get_cite_key_fuzzy("transformers attention mechanism")
authors = bib.get_author_by_key(key)
abstract = bib.get_abstract_by_key(key)
Method Description
get_cite_key_by_title(title) Exact-match citation key by title
get_cite_key_by_title_fuzzy(title) Fuzzy-match citation key by title
get_cite_key_fuzzy(query) Fuzzy-match citation key by arbitrary query
list_titles(is_verbatim=False) List all bibliography titles
get_author_by_key(key) Authors for a citation key
get_year_by_key(key) Publication year for a citation key
get_abstract_by_key(key) Abstract for a citation key
get_title_by_key(key) Title for a citation key
get_field_by_key(key, field) Arbitrary BibTeX field for a citation key

Document Utilities

Function Description
split_out_metadata(string) Extract YAML front matter as (metadata, rest)
to_metadata(data) Serialize Python object to YAML comment block
extract_body(string, wrapper) Extract content between wrapper markers
replace_thesis_body(string, wrapper, new_body) Replace content between wrapper markers
extract_sections(string, level=1, section_char="#") Parse markdown sections at given header level
fix_misplaced_labels(string) Move \<label\> tags outside display math blocks

Python Models

Hierarchical article representation from proposal through completed paper:

Model Description
ArticleProposal Research proposal: problems, approaches, methods, aims, keywords
ArticleEssence Semantic fingerprint: title, authors, equations, figures, contributions
ArticleOutline Hierarchical outline: chapters → sections → subsections
ArticleChapterOutline Chapter-level outline node
ArticleSectionOutline Section-level outline node
ArticleSubsectionOutline Subsection-level outline node
Article Complete paper with full content and validation
ArticleChapter Chapter with sections
ArticleSection Section with subsections
ArticleSubsection Subsection with paragraphs
Paragraph Structured paragraph blueprint with word count
ArticleChunk LanceDB-storable chunk with bibtex metadata
ArticleEssenceStorable ArticleEssence with LanceDB storage capability
CitationManager Deduplicated, iteratively expanded citation set for RAG
ChunkKwargs TypedDict for chunking parameters

Actions

Each action is a Fabricatio Action — an async callable unit in the agent workflow. Available actions:

Content Extraction

Action Description
ExtractArticleEssence Extract article essences from files on disk
FixArticleEssence Fix extracted essences using BibTeX reference data
ExtractOutlineFromRaw Parse an outline from raw text

Generation

Action Description
GenerateArticleProposal Generate a research proposal from a briefing
GenerateInitialOutline Build an outline from a proposal
GenerateArticle Generate full article content from an outline
LoadArticle Load a complete article from outline + Typst code
WriteChapterSummary Write summaries for each chapter
WriteResearchContentSummary Write a research content summary

RAG-Backed Writing

Action Description
WriteArticleContentRAG Write article content with citation-aware RAG
ArticleConsultRAG Retrieve relevant citations for article sections
TweakArticleLancedbRAG Refine article content using LanceDB RAG
ChunkArticle Split an article into storeable chunks
StoreArticleEssence Store article essences into LanceDB

Citation Capability

CitationLancedbRAG — citation-aware iterative search that expands queries over multiple rounds and deduplicates by bibtex key.

Workflows

Pre-composed action pipelines:

Workflow Steps
WriteOutlineCorrectedWorkFlow GenerateArticleProposalGenerateInitialOutline → dump output
StoreArticle ExtractArticleEssenceStoreArticleEssence

Usage:

from fabricatio_typst.actions.article import GenerateArticleProposal, GenerateInitialOutline
from fabricatio_typst.models.article_proposal import ArticleProposal
from fabricatio_typst.models.article_outline import ArticleOutline

async def generate_outline():
    proposal: ArticleProposal = await GenerateArticleProposal()._execute(
        article_briefing="Quantum error correction in near-term devices"
    )
    print(f"Proposal: {proposal.title}")

    outline: ArticleOutline = await GenerateInitialOutline()._execute(
        article_proposal=proposal
    )
    print(f"Outline chapters: {len(outline.chapters)}")

Dependencies

  • fabricatio-core — agent framework and core models
  • fabricatio-tool — filesystem utilities
  • fabricatio-capabilities — capability mixins (Extract, Censor, etc.)

Optional for article generation workflows:

  • fabricatio-actions — output dumping actions
  • fabricatio-improve, fabricatio-rule — content improvement and validation

Optional for RAG features:

  • fabricatio-lancedb — vector storage and retrieval

CLI

The package includes the ttm (TeX to Typst Math) binary:

# Convert math in a file
ttm file input.md -o output.md

# Convert raw LaTeX string
ttm raw "\frac{a}{b}"

# Convert a string with math delimiters
ttm string "The formula $\int_0^\infty e^{-x} dx$ is useful."

Configuration

TypstConfig exposes tunable settings via the Fabricatio config system:

from fabricatio_typst.config import typst_config

typst_config.paragraph_sep         # "// - - -"
typst_config.article_wrapper       # "// =-=-=-=-=-=-=-=-=-="
typst_config.chap_summary_template # "built-in/chap_summary"

License

MIT — see LICENSE

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distributions

No source distribution files available for this release.See tutorial on generating distribution archives.

Built Distributions

If you're not sure about the file name format, learn more about wheel file names.

fabricatio_typst-0.1.30-cp314-cp314-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.14Windows x86-64

fabricatio_typst-0.1.30-cp314-cp314-manylinux_2_34_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ x86-64

fabricatio_typst-0.1.30-cp314-cp314-manylinux_2_34_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.14manylinux: glibc 2.34+ ARM64

fabricatio_typst-0.1.30-cp314-cp314-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.14macOS 11.0+ ARM64

fabricatio_typst-0.1.30-cp313-cp313-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.13Windows x86-64

fabricatio_typst-0.1.30-cp313-cp313-manylinux_2_34_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ x86-64

fabricatio_typst-0.1.30-cp313-cp313-manylinux_2_34_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.13manylinux: glibc 2.34+ ARM64

fabricatio_typst-0.1.30-cp313-cp313-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.13macOS 11.0+ ARM64

fabricatio_typst-0.1.30-cp312-cp312-win_amd64.whl (3.8 MB view details)

Uploaded CPython 3.12Windows x86-64

fabricatio_typst-0.1.30-cp312-cp312-manylinux_2_34_x86_64.whl (4.3 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ x86-64

fabricatio_typst-0.1.30-cp312-cp312-manylinux_2_34_aarch64.whl (3.9 MB view details)

Uploaded CPython 3.12manylinux: glibc 2.34+ ARM64

fabricatio_typst-0.1.30-cp312-cp312-macosx_11_0_arm64.whl (3.8 MB view details)

Uploaded CPython 3.12macOS 11.0+ ARM64

File details

Details for the file fabricatio_typst-0.1.30-cp314-cp314-win_amd64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp314-cp314-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.14, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp314-cp314-win_amd64.whl
Algorithm Hash digest
SHA256 1b22a318876e2325381618c5b3a87e84adc38484d3c4fc26577795c68d04c5e0
MD5 8c7e25294d9c71fe9f870f9872f4e241
BLAKE2b-256 ca0a02f5f13ed11334773b7a0a4ae476c6a4515af5de631721b909fa0455aea9

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp314-cp314-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp314-cp314-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.14, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp314-cp314-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 d0fabf4ce73d7060d0712406aaa72169a8854e7ab25a81b1be0025822fb06c24
MD5 a9aeac2a6c1e56981cdcf9b229515d64
BLAKE2b-256 1647697cced71dd76243294cec6d428836c1dd776d09dea48ceb23e26256bdc2

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp314-cp314-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp314-cp314-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.14, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp314-cp314-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 51115f78f236a50a7aca139dcadfd782ad813f77e632a8e53430f785d7016316
MD5 0342bf8ad42b51603bd8bbf1fe841689
BLAKE2b-256 a51e65c68e17c7c59fb1fe7f5bfca6219fed1204065049b0aded89bd0f72ad2f

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp314-cp314-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp314-cp314-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.14, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp314-cp314-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 d3a63f5476ba104ff5b138a31e69c523a9d1833fb24ea0ace41f19a077d2dd83
MD5 4984285f4ba7785f886802859307cff4
BLAKE2b-256 e162ba0d258cfc8bd86b54f03cb3001d032dbe531f154b0cd381db0796cca526

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp313-cp313-win_amd64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp313-cp313-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.13, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp313-cp313-win_amd64.whl
Algorithm Hash digest
SHA256 189f5c201d6b398807c75f6008f65f22e0683ceb9a1d5a3ca33e5c625b4799df
MD5 0d2270e1186f7e0667eddccb5ba722fe
BLAKE2b-256 ff30647d4b531df014b5d6ba64a7ce99c4cb51df60b71841bf34b34d001629e7

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp313-cp313-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp313-cp313-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.13, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp313-cp313-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 7144addf0a7d321087b31f63e750c0109f17ac860287f98df4934894c7d59bdf
MD5 6f590b5ec5ce2a94caaca1950b95a78b
BLAKE2b-256 9519db88ad1a74f22adcecc70cde5dedf6b84325258dc5775c1a23c8dfa6dc19

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp313-cp313-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp313-cp313-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.13, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp313-cp313-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 55126c4e1ab1e16f7d4c6a0c8080ba4be6142f40cdce53bda6d6d2556f6d5c30
MD5 299dde6bce6c5a3000dc89e5c9e72a75
BLAKE2b-256 7267f7f5f19d3f5150e0cca5e195e1954f6f857d11347f6809a74db81ae25a1c

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp313-cp313-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp313-cp313-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.13, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp313-cp313-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 6ba08582f8d01dc461e5206dcfda17a3d8d894a080fecdafd4087f2c077a58a7
MD5 a85dae172f5640b0ae4e7da14232c46d
BLAKE2b-256 8702e671aacabcb99246fefa8fd7504a27ca46fcf985e4dd1a76ccd0f47baa12

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp312-cp312-win_amd64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp312-cp312-win_amd64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.12, Windows x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":null,"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp312-cp312-win_amd64.whl
Algorithm Hash digest
SHA256 e2249d322df7c533cfb40e158e3fdd132c956bde4d3fcaa5f3b8461bf2e154a5
MD5 acfec31b5809c567ef1b0e378ccd0127
BLAKE2b-256 e8c625795732400dfba9266b81a1984d099e882e9f3b235411c780ba4c98ea4b

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp312-cp312-manylinux_2_34_x86_64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp312-cp312-manylinux_2_34_x86_64.whl
  • Upload date:
  • Size: 4.3 MB
  • Tags: CPython 3.12, manylinux: glibc 2.34+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp312-cp312-manylinux_2_34_x86_64.whl
Algorithm Hash digest
SHA256 fa9cc7f71251f897fb946be56388039a985e91f8caef003f52077bd452a9ff61
MD5 7402ab4a7c69d0e41e459e520cd4fb58
BLAKE2b-256 cd36ce6b83d4826e3befe108357ec6fde34d3d607e7e2b493776405cc70975ce

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp312-cp312-manylinux_2_34_aarch64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp312-cp312-manylinux_2_34_aarch64.whl
  • Upload date:
  • Size: 3.9 MB
  • Tags: CPython 3.12, manylinux: glibc 2.34+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"Ubuntu","version":"24.04","id":"noble","libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp312-cp312-manylinux_2_34_aarch64.whl
Algorithm Hash digest
SHA256 28302ecd4cd82fbd93d3988944936bff02566bc9022fee9a3c8eabf4bc218698
MD5 10e0286dac9a2a2a6a4cec4476ceb4da
BLAKE2b-256 ad8ba134d35d525393940459eddf0198d235b5f63de0b4483b8497150d10b1bf

See more details on using hashes here.

File details

Details for the file fabricatio_typst-0.1.30-cp312-cp312-macosx_11_0_arm64.whl.

File metadata

  • Download URL: fabricatio_typst-0.1.30-cp312-cp312-macosx_11_0_arm64.whl
  • Upload date:
  • Size: 3.8 MB
  • Tags: CPython 3.12, macOS 11.0+ ARM64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: uv/0.11.21 {"installer":{"name":"uv","version":"0.11.21","subcommand":["publish"]},"python":null,"implementation":{"name":null,"version":null},"distro":{"name":"macOS","version":null,"id":null,"libc":null},"system":{"name":null,"release":null},"cpu":null,"openssl_version":null,"setuptools_version":null,"rustc_version":null,"ci":true}

File hashes

Hashes for fabricatio_typst-0.1.30-cp312-cp312-macosx_11_0_arm64.whl
Algorithm Hash digest
SHA256 30dd373d8e823918f291d8aaf3142506e599a4a725e194a451a48acbdafa6834
MD5 5b0dcbaaf6303d0c0a54262c24f51044
BLAKE2b-256 b232cb6ac52c6f8776c871338de8eabd1486d5fee20c26d7db0c9d287a3e0a02

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page