Writer Module (stx.writer)

LaTeX manuscript compilation, figure/table management, bibliography handling, and IMRAD writing guidelines.

Note

stx.writer wraps the standalone scitex-writer package. Install with: pip install scitex-writer.

Quick Reference

from scitex.writer import Writer
from pathlib import Path

writer = Writer(Path("my_paper"))

# Compile manuscript → PDF
result = writer.compile_manuscript()
if result.success:
    print(f"PDF: {result.output_pdf}")

# Compile supplementary materials
result = writer.compile_supplementary()

# Compile revision with change tracking
result = writer.compile_revision(track_changes=True)

CLI Usage

# Compile
scitex writer compile manuscript ./my-paper
scitex writer compile supplementary ./my-paper
scitex writer compile revision ./my-paper --track-changes

# Bibliography
scitex writer bib list ./my-paper
scitex writer bib add ./my-paper "@article{...}"

# Tables and figures
scitex writer tables add ./my-paper data.csv
scitex writer figures list ./my-paper

# Writing guidelines
scitex writer guidelines get abstract

Project Structure

A writer project follows this layout:

my_paper/
+-- 00_shared/
|   +-- bibliography.bib
|   +-- figures/
|   +-- tables/
+-- 01_manuscript/
|   +-- main.tex
|   +-- sections/
+-- 02_supplementary/
|   +-- main.tex
+-- 03_revision/
    +-- main.tex

Create a new project:

scitex template clone paper my_paper

Key Classes

  • Writer – Main entry point for compilation and project management

  • CompilationResult – Compilation outcome (success, output path, logs)

  • ManuscriptTree – Document tree for the main manuscript

  • SupplementaryTree – Document tree for supplementary materials

  • RevisionTree – Document tree for revision responses

Document Management

Figures:

# Add figure (copies image + creates caption file)
writer.add_figure("fig1", "plot.png", caption="Results")

# List figures
writer.list_figures()

# Convert between formats
writer.convert_figure("figure.pdf", "figure.png", dpi=300)

Tables:

# Add table from CSV
writer.add_table("tab1", csv_content, caption="Demographics")

# CSV ↔ LaTeX conversion
writer.csv_to_latex("data.csv", "table.tex")
writer.latex_to_csv("table.tex", "data.csv")

Bibliography:

# Add BibTeX entry
writer.add_bibentry('@article{key, title={...}, ...}')

# Merge multiple .bib files
writer.merge_bibfiles(output_file="bibliography.bib")

Writing Guidelines

IMRAD guidelines for each manuscript section:

scitex writer guidelines list
scitex writer guidelines get introduction
from scitex.writer import guidelines

# Get guideline for a section
guide = guidelines.get("methods")

# Build editing prompt: guideline + draft
prompt = guidelines.build("discussion", draft_text)

Compilation Options

result = writer.compile_manuscript(
    timeout=300,        # Max compilation time (seconds)
    no_figs=False,      # Exclude figures
    no_tables=False,    # Exclude tables
    draft=False,        # Draft mode (fast, lower quality)
    dark_mode=False,    # Dark color scheme
    quiet=False,        # Suppress output
)

API Reference

SciTeX Writer - LaTeX manuscript compilation system with MCP server.

Four Interfaces:
  • Python API: import scitex_writer as sw

  • CLI: scitex-writer <command>

  • GUI: scitex-writer gui (browser-based editor)

  • MCP: 38 tools for AI agents

Modules:
  • claim: Traceable scientific assertions (stats, figures, citations)

  • compile: Compile manuscripts to PDF

  • export: Export manuscript for arXiv submission

  • migration: Import from / export to external platforms (Overleaf)

  • project: Clone, info, get_pdf

  • tables: List, add, remove, csv_to_latex

  • figures: List, add, remove, convert

  • bib: List, add, remove, merge

  • guidelines: IMRAD writing tips

  • prompts: AI2 Asta integration

  • gui: Browser-based editor (Django)

scitex.writer.usage()

Get the usage guide with branding applied.

Returns:

Formatted usage guide string.

Return type:

str

scitex.writer.ensure_workspace(project_dir, git_strategy='child', **kwargs)[source]

Ensure writer workspace exists at {project_dir}/.scitex/writer/.

If the directory already exists, returns the path without modification. If not, clones the full scitex-writer template.

Parameters:
  • project_dir (str or Path) – Root project directory. Writer workspace will be at {project_dir}/.scitex/writer/ (hidden, dotfile convention).

  • git_strategy (str, optional) – Git initialization strategy (‘child’, ‘parent’, ‘origin’, None).

  • **kwargs – Forwarded to Writer constructor (branch, tag, etc.).

Returns:

Path to the writer workspace directory.

Return type:

pathlib.Path

scitex.writer.gui(project_dir, port=5050, host='127.0.0.1', open_browser=True, desktop=False, hot_reload=False)

Launch the Django editor server locally.

Tries scitex_app._standalone.run_standalone first (gets the full workspace shell from scitex-ui). Falls back to a bare runserver bootstrap if scitex-app is not installed.

Return type:

None