scitex.ai · docs · pip install scitex-writer
LaTeX compilation system for scientific manuscripts with automatic versioning, diff generation, and cross-platform reproducibility.
Part of the SciTeX ecosystem — empowers both human researchers and AI agents.
Preview
Light mode (default) and dark mode (--dark-mode)
Demo video with AI agent
📦 Installation
# LaTeX dependencies (Ubuntu/Debian)
sudo apt-get install texlive-latex-extra latexdiff parallel imagemagick ghostscript
# LaTeX dependencies (macOS)
brew install texlive latexdiff parallel imagemagick ghostscript
# Python package + MCP server
pip install scitex-writer
Quick Start
git clone https://github.com/ywatanabe1989/scitex-writer.git my-paper
cd my-paper && make manuscript # or: ./compile.sh manuscript
Five Interfaces
| Interface | For | Description |
|---|---|---|
| 📜 Shell/Make | Direct compilation | make manuscript, ./compile.sh |
| 🐍 Python API | Human researchers | import scitex_writer as sw |
| 🖥️ CLI Commands | Terminal users | scitex-writer compile, scitex-writer bib |
| 🌐 GUI Editor | Visual editing | scitex-writer gui - browser-based editor |
| 🔧 MCP Tools | AI agents | 38 tools for Claude/GPT integration |
🌐 GUI Editor
Standalone browser-based editor with file tree, LaTeX editor, PDF preview, and compilation controls.
# Install Flask dependency
pip install scitex-writer[editor]
# Launch GUI (opens browser automatically)
scitex-writer gui # Current directory
scitex-writer gui ./my-paper # Specific project
scitex-writer gui --port 8080 # Custom port
# Python API
import scitex_writer as sw
sw.gui("./my-paper")
# Docker
docker build -f scripts/containers/Dockerfile.gui -t scitex-writer-gui .
docker run --rm -p 5050:5050 -v $(pwd):/workspace scitex-writer-gui
📜 Shell Scripts / Make
# Make commands (recommended)
make manuscript # Compile manuscript
make supplementary # Compile supplementary
make revision # Compile revision
make all # Compile all documents
make manuscript-export # Package for arXiv submission
make clean # Remove build artifacts
# Shell scripts (direct)
./compile.sh manuscript --draft # Fast single-pass
./compile.sh manuscript --no-figs # Skip figures
./compile.sh manuscript --no-tables # Skip tables
./compile.sh manuscript --dark-mode # Dark mode (Monaco theme)
./compile.sh manuscript --watch # Hot-reload
# Dark mode via environment variable
SCITEX_WRITER_DARK_MODE=true make manuscript
🐍 Python API
**Compile** — Build PDFs
import scitex_writer as sw
sw.compile.manuscript("./my-paper") # Full compile
sw.compile.manuscript("./my-paper", draft=True) # Fast draft mode
sw.compile.supplementary("./my-paper")
sw.compile.revision("./my-paper", track_changes=True)
sw.export.manuscript("./my-paper") # arXiv-ready tarball
sw.export.manuscript("./my-paper", output_dir="/tmp") # Custom output dir
# Tables
sw.tables.list("./my-paper")
sw.tables.add("./my-paper", "results", "a,b\n1,2", "Results summary")
sw.tables.remove("./my-paper", "results")
# Figures
sw.figures.list("./my-paper")
sw.figures.add("./my-paper", "fig01", "./plot.png", "My figure")
sw.figures.remove("./my-paper", "fig01")
# Bibliography
sw.bib.list_files("./my-paper")
sw.bib.add("./my-paper", "@article{Smith2024, title={...}}")
sw.bib.merge("./my-paper") # Merge + deduplicate
sw.get_guideline("abstract")
sw.build_guideline("abstract", draft="Your draft...")
sw.list_guidelines() # ['abstract', 'introduction', 'methods', 'discussion', 'proofread']
from scitex_writer import generate_asta
result = generate_asta("./my-paper", search_type="related")
sw.gui("./my-paper") # Launch editor
sw.gui("./my-paper", port=8080, dark_mode=True) # Custom options
🖥️ CLI Commands
scitex-writer --help # Show all commands
# Compile - Build PDFs
scitex-writer compile manuscript # Compile manuscript
scitex-writer compile manuscript --draft # Fast single-pass
scitex-writer compile supplementary # Compile supplementary
scitex-writer compile revision # Compile revision letter
# Export - arXiv submission
scitex-writer export manuscript # Package for arXiv upload
# Bibliography - Reference management
scitex-writer bib list-files # List .bib files
scitex-writer bib list-entries # List all entries
scitex-writer bib get Smith2024 # Get specific entry
scitex-writer bib add '@article{...}' # Add entry
scitex-writer bib remove Smith2024 # Remove entry
scitex-writer bib merge # Merge and deduplicate
# Tables - CSV↔LaTeX management
scitex-writer tables list # List tables
scitex-writer tables add results data.csv "Caption"
scitex-writer tables remove results
# Figures - Image management
scitex-writer figures list # List figures
scitex-writer figures add fig01 plot.png "Caption"
scitex-writer figures remove fig01
# Guidelines - IMRAD writing tips
scitex-writer guidelines list # List available sections
scitex-writer guidelines abstract # Get abstract guidelines
scitex-writer guidelines abstract -d draft.tex # Build prompt with draft
# Prompts - AI2 Asta integration
scitex-writer prompts asta # Generate related papers prompt
scitex-writer prompts asta -t coauthors # Find collaborators
# MCP server management
scitex-writer mcp list-tools # List all MCP tools (markdown)
scitex-writer mcp doctor # Check server health
scitex-writer mcp installation # Show Claude Desktop config
scitex-writer mcp start # Start MCP server
# GUI - Browser-based editor
scitex-writer gui # Launch editor (current dir)
scitex-writer gui ./my-paper # Open specific project
scitex-writer gui --port 8080 --no-browser # Custom port, no auto-open
🔧 MCP Tools — 38 tools for AI Agents
Turn AI agents into autonomous manuscript compilers. | Category | Tools | Description | |----------|-------|-------------| | project | 4 | Clone, info, PDF paths, document types | | compile | 4 | Manuscript, supplementary, revision, content | | tables | 5 | CSV↔LaTeX, list/add/remove tables | | figures | 5 | Convert, render PDF, list/add/remove | | bib | 6 | List files/entries, CRUD, merge/dedupe | | guidelines | 3 | List, get, build with draft | | prompts | 1 | AI2 Asta prompt generation | | export | 1 | arXiv-ready tarball packaging | | claim | 6 | Traceable scientific assertions | | migration | 2 | Overleaf import/export | | update | 1 | Template update from upstream | **Claude Desktop** (`~/.config/Claude/claude_desktop_config.json`):
{
"mcpServers": {
"scitex-writer": {
"command": "scitex-writer",
"args": ["mcp", "start"]
}
}
}
Output Structure
./scitex-writer/
├── 00_shared/ # Shared resources across all documents
│ ├── title.tex # Manuscript title
│ ├── authors.tex # Author names and affiliations
│ ├── keywords.tex # Keywords for the manuscript
│ ├── journal_name.tex # Target journal name
│ ├── bib_files/ # Multiple .bib files (auto-merged and deduplicated)
│ ├── latex_styles/ # Common LaTeX configurations
│ └── templates/ # LaTeX document templates
│
├── 01_manuscript/ # Main manuscript
│ ├── contents/ # Modular content sections
│ │ ├── abstract.tex
│ │ ├── introduction.tex
│ │ ├── methods.tex
│ │ ├── results.tex
│ │ ├── discussion.tex
│ │ ├── figures/ # Figure captions + media
│ │ └── tables/ # Table captions + CSV data
│ ├── archive/ # Version history (gitignored)
│ ├── manuscript.tex # Compiled LaTeX
│ ├── manuscript_diff.tex # Change-tracked version
│ └── manuscript.pdf # Output PDF
│
├── 02_supplementary/ # Supplementary materials
│ ├── contents/ # Supplementary content sections
│ │ ├── supplementary_methods.tex
│ │ ├── supplementary_results.tex
│ │ ├── figures/ # Supplementary figures
│ │ └── tables/ # Supplementary tables
│ ├── archive/ # Version history (gitignored)
│ ├── supplementary.tex # Compiled LaTeX
│ └── supplementary.pdf # Output PDF
│
├── 03_revision/ # Revision response letter
│ ├── contents/ # Reviewer responses
│ │ ├── editor/ # E_01_comments.tex, E_01_response.tex
│ │ ├── reviewer1/ # R1_01_comments.tex, R1_01_response.tex
│ │ └── reviewer2/ # R2_01_comments.tex, R2_01_response.tex
│ ├── archive/ # Version history (gitignored)
│ ├── revision.tex # Compiled LaTeX
│ └── revision.pdf # Output PDF
│
├── config/ # Configuration files
│ └── config_manuscript.yaml # Citation style, engine settings
│
└── scripts # Compilation scripts
├── containers/ # Container image builds (Apptainer/Singularity)
├── installation/ # Environment setup and dependency installation
├── maintenance/ # Repository maintenance (usage, update, demos)
├── powershell/ # Windows PowerShell scripts
├── python/ # Python utilities
└── shell/ # Core compilation scripts
Features
Details
| Feature | Description | |------------------------|-----------------------------------------------------------------------| | **Separated Files** | Modular sections (abstract, intro, methods, results, discussion) | | **Built-in Templates** | Pre-configured manuscript, supplementary materials, and revision | | **Bibliography** | Multi-file with auto-deduplication, 20+ citation styles | | **Assets** | Parallel figure/table processing (PNG, PDF, SVG, Mermaid, CSV) | | **GUI Editor** | Browser-based editor with PDF preview (`scitex-writer gui`) | | **Dark Mode** | Monaco/VS Code dark theme for comfortable reading (`--dark-mode`) | | **Multi-Engine** | Auto-selects best engine (Tectonic 1-3s, latexmk 3-6s, 3-pass 12-18s) | | **Cross-Platform** | Linux, macOS, WSL2, Docker, Singularity, HPC clusters |Usage
PDF Compilation
# Basic compilation
./scripts/shell/compile_manuscript.sh # Manuscript
./scripts/shell/compile_supplementary.sh # Supplementary
./scripts/shell/compile_revision.sh # Revision letter
# Performance options
./scripts/shell/compile_manuscript.sh --draft # Fast single-pass
./scripts/shell/compile_manuscript.sh --no-figs # Skip figures
./scripts/shell/compile_manuscript.sh --no-tables # Skip tables
./scripts/shell/compile_manuscript.sh --no-diff # Skip diff generation
# Engine selection
./scripts/shell/compile_manuscript.sh --engine tectonic # Fastest
./scripts/shell/compile_manuscript.sh --engine latexmk # Standard
./scripts/shell/compile_manuscript.sh --engine 3pass # Most compatible
# Development
./scripts/shell/compile_manuscript.sh --watch # Hot-reload on file changes
./scripts/shell/compile_manuscript.sh --clean # Remove cache
Figures
1. Place media files in `01_manuscript/contents/figures/caption_and_media/`: ``` 01_example_figure.png 01_example_figure.tex # Caption file ``` 2. Caption file format (`01_example_figure.tex`): ```latex %% Figure caption \caption{Your figure caption here. Explain panels (A, B, C) if applicable.} \label{fig:example_figure_01} ``` 3. Supported formats: PNG, JPEG, PDF, SVG, TIFF, Mermaid (.mmd) 4. Figures auto-compile and include in `FINAL.tex`Tables
1. Place CSV + caption in `01_manuscript/contents/tables/caption_and_media/`: ``` 01_example_table.csv 01_example_table.tex # Caption file ``` 2. CSV auto-converts to LaTeX table format 3. Caption file format (`01_example_table.tex`): ```latex %% Table caption \caption{Your table caption. Define abbreviations used.} \label{tab:example_table_01} ```References
Organize references in multiple `.bib` files - they auto-merge with deduplication:00_shared/bib_files/
├── methods_refs.bib # Method-related references
├── field_background.bib # Background literature
└── my_papers.bib # Your own publications