# Makefile for SciTeX Writer
# Usage: make [target]
# Author: ywatanabe
# Dependencies: Python 3.8+, compile scripts, Apptainer containers
GREEN := \033[0;32m
CYAN := \033[0;36m
NC := \033[0m
.PHONY: \
manuscript-compile \
supplementary-compile \
revision-compile \
manuscript \
supplementary \
revision \
all \
manuscript-draft \
supplementary-draft \
revision-draft \
manuscript-watch \
supplementary-watch \
revision-watch \
init \
manuscript-init \
supplementary-init \
revision-init \
shared-init \
restore \
python-install \
python-develop \
python-test \
python-build \
python-upload \
python-upload-test \
python-update \
python-version \
clean \
clean-logs \
clean-archive \
clean-compiled \
clean-python \
clean-all \
manuscript-export \
check \
help \
usage \
usage-manuscript \
usage-supplementary \
usage-revision \
usage-shared
# Default target - show help instead of compiling
.DEFAULT_GOAL := help
# ============================================================================
# Document compilation
# ============================================================================
manuscript-compile:
@echo "Compiling manuscript..."
./compile.sh manuscript --quiet
supplementary-compile:
@echo "Compiling supplementary materials..."
./compile.sh supplementary --quiet
revision-compile:
@echo "Compiling revision responses..."
./compile.sh revision --quiet
# Backward-compatible aliases (referenced in README.md)
manuscript: manuscript-compile
supplementary: supplementary-compile
revision: revision-compile
all: manuscript-compile supplementary-compile revision-compile
# ============================================================================
# Draft mode - fast compilation (skips bibliography)
# ============================================================================
manuscript-draft:
@echo "Compiling manuscript (draft mode)..."
./compile.sh manuscript --draft --quiet
supplementary-draft:
@echo "Compiling supplementary (draft mode)..."
./compile.sh supplementary --draft --quiet
revision-draft:
@echo "Compiling revision (draft mode)..."
./compile.sh revision --draft --quiet
# ============================================================================
# Watch mode - auto-recompile on file changes
# ============================================================================
manuscript-watch:
@echo "Starting manuscript watch mode (Ctrl+C to stop)..."
./compile.sh manuscript --watch
supplementary-watch:
@echo "Starting supplementary watch mode (Ctrl+C to stop)..."
./compile.sh supplementary --watch
revision-watch:
@echo "Starting revision watch mode (Ctrl+C to stop)..."
./compile.sh revision --watch
# ============================================================================
# Initialize contents to clean template
# ============================================================================
init:
@bash scripts/shell/initialize_contents.sh
shared-init:
@bash scripts/shell/initialize_contents.sh shared
manuscript-init:
@bash scripts/shell/initialize_contents.sh manuscript
supplementary-init:
@bash scripts/shell/initialize_contents.sh supplementary
revision-init:
@bash scripts/shell/initialize_contents.sh revision
# ============================================================================
# Restore contents from snapshot
# ============================================================================
restore:
ifdef ID
@bash scripts/shell/restore_contents.sh "$(ID)"
else
@bash scripts/shell/restore_contents.sh
endif
# ============================================================================
# Python package targets
# ============================================================================
python-install:
@echo "Installing scitex-writer..."
pip install .
python-develop:
@echo "Installing scitex-writer in development mode..."
pip install -e .
python-test:
@echo "Running tests..."
pytest tests/ -v
python-build:
@echo "Building distribution packages..."
python -m build
python-upload:
@echo "Uploading to PyPI..."
python -m twine upload dist/*
python-upload-test:
@echo "Uploading to Test PyPI..."
python -m twine upload --repository testpypi dist/*
python-update:
@echo "Updating scitex-writer..."
./scripts/maintenance/update.sh
python-version:
@echo "SciTeX Writer $(shell grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/' | head -1 | tr -d '\"')"
demo-previews:
@echo "Generating demo preview images for README..."
./scripts/maintenance/generate_demo_previews.sh
# ============================================================================
# Cleaning targets
# ============================================================================
clean:
@echo "Cleaning temporary files..."
rm -f ./01_manuscript/*.{aux,log,bbl,blg,out,toc,fls,fdb_latexmk,synctex.gz}
rm -f ./02_supplementary/*.{aux,log,bbl,blg,out,toc,fls,fdb_latexmk,synctex.gz}
rm -f ./03_revision/*.{aux,log,bbl,blg,out,toc,fls,fdb_latexmk,synctex.gz}
clean-logs:
@echo "Cleaning log directories..."
rm -rf ./01_manuscript/logs/*
rm -rf ./02_supplementary/logs/*
rm -rf ./03_revision/logs/*
rm -rf ./logs/*
clean-archive:
@echo "Cleaning archive directories..."
rm -rf ./01_manuscript/archive/*
rm -rf ./02_supplementary/archive/*
rm -rf ./03_revision/archive/*
clean-compiled:
@echo "Cleaning compiled tex/pdf files..."
rm -f ./01_manuscript/{manuscript.pdf,manuscript.tex,manuscript_diff.pdf,manuscript_diff.tex}
rm -f ./02_supplementary/{supplementary.pdf,supplementary.tex,supplementary_diff.pdf,supplementary_diff.tex}
rm -f ./03_revision/{revision.pdf,revision.tex,revision_diff.pdf,revision_diff.tex}
clean-python:
@echo "Cleaning Python build artifacts..."
rm -rf build/
rm -rf dist/
rm -rf *.egg-info
rm -rf src/*.egg-info
find . -type d -name __pycache__ -exec rm -rf {} + 2>/dev/null || true
find . -type f -name "*.pyc" -delete
clean-all: clean clean-logs clean-archive clean-compiled clean-python
@echo "Deep cleaning all generated files..."
# ============================================================================
# Export
# ============================================================================
manuscript-export:
@echo "Exporting manuscript for arXiv submission..."
@bash scripts/shell/export_arxiv.sh
# ============================================================================
# Validation
# ============================================================================
check:
@bash scripts/shell/check_project.sh
# ============================================================================
# Status and information
# ============================================================================
status:
@echo "=== Paper Compilation Status ==="
@echo "Manuscript PDF: $(shell [ -f ./01_manuscript/manuscript.pdf ] && echo "✓ Available" || echo "✗ Missing")"
@echo "Supplementary PDF: $(shell [ -f ./02_supplementary/supplementary.pdf ] && echo "✓ Available" || echo "✗ Missing")"
@echo "Revision PDF: $(shell [ -f ./03_revision/revision.pdf ] && echo "✓ Available" || echo "✗ Missing")"
@echo ""
@echo "Container Cache:"
@ls -lh ./.cache/containers/*.sif 2>/dev/null | awk '{print " " $$9 " (" $$5 ")"}' || echo " No containers cached"
# Help target
help:
@echo ""
@printf "$(GREEN)╔═══════════════════════════════════════════════════════╗$(NC)\n"
@printf "$(GREEN)║ SciTeX Writer v%-5s - LaTeX Manuscript System ║$(NC)\n" "$(shell grep '^version = ' pyproject.toml | sed 's/version = "\(.*\)"/\1/' | head -1 | tr -d '\"')"
@printf "$(GREEN)╚═══════════════════════════════════════════════════════╝$(NC)\n"
@echo ""
@printf "$(CYAN)🚀 Initialization:$(NC)\n"
@echo " make init Reset all contents to template"
@echo " make shared-init Reset shared metadata only"
@echo " make manuscript-init Reset manuscript only"
@echo " make supplementary-init Reset supplementary only"
@echo " make revision-init Reset revision only"
@echo ""
@printf "$(CYAN)🔧 Compilation:$(NC)\n"
@echo ""
@printf " $(CYAN)📝 Full:$(NC)\n"
@echo " make manuscript-compile Compile manuscript"
@echo " make supplementary-compile Compile supplementary"
@echo " make revision-compile Compile revision"
@echo ""
@printf " $(CYAN)⚡ Draft (skips bibliography):$(NC)\n"
@echo " make manuscript-draft Draft manuscript"
@echo " make supplementary-draft Draft supplementary"
@echo " make revision-draft Draft revision"
@echo ""
@printf " $(CYAN)🔄 Watch (auto-recompile):$(NC)\n"
@echo " make manuscript-watch Watch manuscript"
@echo " make supplementary-watch Watch supplementary"
@echo " make revision-watch Watch revision"
@echo ""
@printf "$(CYAN)📦 Export:$(NC)\n"
@echo " make manuscript-export Export manuscript for arXiv submission"
@echo ""
@printf "$(CYAN)🔙 Restoration:$(NC)\n"
@echo " make restore List available snapshots"
@echo " make restore ID=xxx Restore from snapshot"
@echo ""
@printf "$(CYAN)📦 Python Package:$(NC)\n"
@echo " make python-install Install package"
@echo " make python-develop Install in dev mode"
@echo " make python-test Run tests"
@echo " make python-build Build distributions"
@echo " make python-upload Upload to PyPI"
@echo " make python-upload-test Upload to Test PyPI"
@echo " make python-update Update to latest version"
@echo " make python-version Show version"
@echo ""
@printf "$(CYAN)🧹 Cleaning:$(NC)\n"
@echo " make clean Remove temporary LaTeX files"
@echo " make clean-logs Remove log files"
@echo " make clean-archive Remove archived versions"
@echo " make clean-compiled Remove compiled tex/pdf files"
@echo " make clean-python Remove Python build artifacts"
@echo " make clean-all Remove all generated files"
@echo ""
@printf "$(CYAN)📋 Information:$(NC)\n"
@echo " make check Validate project before compilation"
@echo " make status Show compilation status"
@echo " make help Show this help message"
@echo " make usage Show full project usage guide"
# Project usage guides
usage:
@./scripts/maintenance/show_usage.sh
usage-manuscript:
@./scripts/shell/compile_manuscript.sh --help
usage-supplementary:
@./scripts/shell/compile_supplementary.sh --help
usage-revision:
@./scripts/shell/compile_revision.sh --help
usage-shared:
@echo "━━━ 00_shared/ - Shared Metadata ━━━"
@echo ""
@echo "Files shared across all document types:"
@echo " title.tex - Manuscript title"
@echo " authors.tex - Author list and affiliations"
@echo " keywords.tex - Keywords for the manuscript"
@echo " journal_name.tex - Target journal name"
@echo " bib_files/*.bib - Bibliography files (auto-merged and deduplicated)"
@echo ""
@echo "Location: $(CURDIR)/00_shared/"
@echo ""
@echo "These files are automatically included in all document types"
@echo "(manuscript, supplementary, revision)."