Skip to main content

LaTeX manuscript compilation system for scientific documents

Project description

SciWriter

LaTeX manuscript compilation with CLI and MCP server integration.

CI Python License

Quick Start

Shell Scripts (Recommended)
git clone https://github.com/ywatanabe1989/sciwriter.git my-paper
cd my-paper
./scripts/shell/compile_manuscript.sh
Python CLI
pip install sciwriter
sciwriter compile ./my-paper              # Compile manuscript
sciwriter compile ./my-paper -t suppl     # Compile supplementary
sciwriter status ./my-paper               # Check dependencies
MCP Server

Add to Claude Desktop config (~/.config/claude/claude_desktop_config.json):

{
  "mcpServers": {
    "sciwriter": {
      "command": "python",
      "args": ["-m", "sciwriter.mcp_server"]
    }
  }
}

Tools: compile, status, clean, get_project_info


Features

Features
  • Templates - Manuscript, supplementary material, and revision letter
  • Modular LaTeX - Section-separated .tex files
  • MCP Server - Claude Desktop integration
  • Media Support - Figures, tables, and citations
  • Citation Management - Multi-file .bib with auto-merge
  • Citation Styles - 20+ journal formats (Nature, IEEE, APA, etc.)
  • Auto Counts - Words and media per section
  • Diff Visualization - Track changes between versions
  • Git Friendly - Auto-archive with version history

Installation

Python Package
pip install sciwriter
Ubuntu/Debian
sudo apt-get install texlive-latex-extra latexdiff parallel imagemagick ghostscript
macOS
brew install texlive latexdiff parallel imagemagick ghostscript
HPC / Containers
# Module system
module load texlive latexdiff parallel

# Docker
docker run -v $(pwd):/work scitex-writer

# Singularity/Apptainer
singularity run scitex-writer.sif

Project Structure

Directory Layout
my-paper/
├── 00_shared/              # Shared resources (bibliography, styles)
│   ├── bib_files/          # Multiple .bib files (auto-merged)
│   └── latex_styles/       # Common LaTeX configurations
├── 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 (auto-generated)
│   ├── manuscript.tex      # Compiled LaTeX
│   └── manuscript.pdf      # Output PDF
├── 02_supplementary/       # Supplementary materials
├── 03_revision/            # Revision response letter
└── scripts/shell/          # Compilation scripts

PDF Compilation

Basic Commands
./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 Mode
./scripts/shell/compile_manuscript.sh --watch  # Hot-reload on file changes
./scripts/shell/compile_manuscript.sh --clean  # Remove cache

Content Management

Bibliography

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

Citation Styles (set in config/config_manuscript.yaml):

  • unsrtnat - numbered, order of citation
  • plainnat - numbered, alphabetical
  • apalike - author-year, APA style
  • IEEEtran - IEEE format
  • naturemag - Nature style
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):

    %% 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)

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):

    %% Table caption
    \caption{Your table caption. Define abbreviations used.}
    \label{tab:example_table_01}
    

Documentation

Guides
Guide Description
Installation Setup for all environments
Quick Start Common workflows
Content Creation Writing manuscripts
Bibliography Reference management
Architecture Technical details
AI Prompts

Writing assistance prompts in docs/prompts/:

  • abstract.md - Abstract writing guidelines
  • introduction.md - Introduction structure
  • methods.md - Methods section format
  • discussion.md - Discussion framework
  • proofreed.md - Proofreading checklist

SciTeX
AGPL-3.0 · ywatanabe@scitex.ai

Project details


Download files

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

Source Distribution

sciwriter-0.1.4.tar.gz (104.8 kB view details)

Uploaded Source

Built Distribution

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

sciwriter-0.1.4-py3-none-any.whl (144.3 kB view details)

Uploaded Python 3

File details

Details for the file sciwriter-0.1.4.tar.gz.

File metadata

  • Download URL: sciwriter-0.1.4.tar.gz
  • Upload date:
  • Size: 104.8 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for sciwriter-0.1.4.tar.gz
Algorithm Hash digest
SHA256 0986f120367a879ab4824a79fa999440377034b9e51ce9ee42f7c904a37ae028
MD5 9f44bccbe2d6c8de6e9ab849bdcb0a33
BLAKE2b-256 b15b98511b305a2278ec9e1e4a413afd6631b8b94e563eb2b4d2141252cf275c

See more details on using hashes here.

File details

Details for the file sciwriter-0.1.4-py3-none-any.whl.

File metadata

  • Download URL: sciwriter-0.1.4-py3-none-any.whl
  • Upload date:
  • Size: 144.3 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/6.2.0 CPython/3.10.12

File hashes

Hashes for sciwriter-0.1.4-py3-none-any.whl
Algorithm Hash digest
SHA256 ed9c2fa225fcf7dc0f805443f9280f5cd315013066034d8a81f6aa025fc20af0
MD5 ea33345d22d9c1f2232d0c76202f9381
BLAKE2b-256 ba8edb1519496a750698e97b9549496cbf835d2e1fa9046c4d108c9b450a0f9f

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