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 managementCompilationResult– Compilation outcome (success, output path, logs)ManuscriptTree– Document tree for the main manuscriptSupplementaryTree– Document tree for supplementary materialsRevisionTree– 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:
- 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:
- Returns:
Path to the writer workspace directory.
- Return type:
- 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: