A command-line tool for managing LaTeX articles and presentations with git integration and Zotero bibliography synchronization.
- Repository Initialization: Complete setup for LaTeX article or presentation projects with one command
- Project Types: Support for articles, Beamer presentations, and posters
- LaTeX Compilation: Compile documents with latexmk/pdflatex/xelatex/lualatex, watch mode, shell escape support
- Font Installation: Download and install fonts for XeLaTeX projects (Marianne, Roboto Mono, etc.)
- GitHub Actions Workflows: Automated PDF compilation with XeLaTeX support, artifact upload, and GitHub releases
- Git Release Management: Create, list, and delete releases with gitinfo2 support
- Zotero Integration: Synchronize bibliography from Zotero with robust pagination and error handling
- LaTeX Build Management: Clean build files and manage LaTeX compilation artifacts
- Git Hooks Setup: Automated setup of git hooks for gitinfo2 integration
- Project Configuration: Auto-generates pyproject.toml with article-cli settings
- Documentation: Creates README with build instructions and usage guide
pip install article-cligit clone https://github.com/feelpp/article.cli.git
cd article.cli
pip install -e .-
Initialize your LaTeX article repository:
cd your-article-repo article-cli init --title "Your Article Title" --authors "Author One,Author Two"
This creates:
.github/workflows/latex.yml- Complete CI/CD pipelinepyproject.toml- Project configuration with article-cli settingsREADME.md- Documentation and usage instructions.gitignore- LaTeX-specific ignore rules.vscode/settings.json- LaTeX Workshop configuration.vscode/ltex.dictionary.en-US.txt- Custom dictionary
-
Configure Zotero (add as GitHub secret):
export ZOTERO_API_KEY="your_api_key_here"
-
Setup git hooks and update bibliography:
article-cli setup article-cli update-bibtex
-
Commit and push to trigger automated PDF compilation!
-
Setup git hooks (run once per repository):
article-cli setup
-
Configure Zotero credentials:
export ZOTERO_API_KEY="your_api_key_here" export ZOTERO_GROUP_ID="your_group_id" # or ZOTERO_USER_ID
-
Update bibliography from Zotero:
article-cli update-bibtex
-
Create a release:
article-cli create v1.0.0
ZOTERO_API_KEY: Your Zotero API key (required for bibliography updates)ZOTERO_USER_ID: Your Zotero user ID (alternative to group ID)ZOTERO_GROUP_ID: Your Zotero group ID (alternative to user ID)
Create a .article-cli.toml file in your project root for project-specific settings:
[zotero]
api_key = "your_api_key_here"
group_id = "4678293" # Default for article.template
# user_id = "your_user_id" # alternative to group_id
output_file = "references.bib"
[git]
auto_push = true
default_branch = "main"
[latex]
clean_extensions = [".aux", ".bbl", ".blg", ".log", ".out", ".synctex.gz"]
[fonts]
directory = "fonts"
[fonts.sources]
marianne = "https://github.com/ArnaudBelcworking/Marianne/archive/refs/heads/master.zip"
roboto-mono = "https://github.com/googlefonts/RobotoMono/releases/download/v3.000/RobotoMono-v3.000.zip"
[themes]
directory = "."
# Custom theme sources (numpex is built-in)
# [themes.sources.my-theme]
# url = "https://example.com/theme.zip"
# description = "My custom theme"
# files = ["beamerthememytheme.sty"]
# requires_fonts = false
# engine = "pdflatex"# Initialize a new article repository (auto-detects main .tex file)
article-cli init --title "My Article Title" --authors "John Doe,Jane Smith"
# Initialize a Beamer presentation project
article-cli init --title "My Presentation" --authors "Author" --type presentation
# Initialize with numpex theme (requires theme files from presentation.template.d)
article-cli init --title "NumPEx Talk" --authors "Author" --type presentation --theme numpex
# Specify custom Zotero group ID
article-cli init --title "My Article" --authors "Author" --group-id 1234567
# Specify main .tex file explicitly
article-cli init --title "My Article" --authors "Author" --tex-file article.tex
# Force overwrite existing files
article-cli init --title "My Article" --authors "Author" --forceThe init command sets up:
- GitHub Actions workflow for automated PDF compilation and releases (with XeLaTeX support for presentations)
- pyproject.toml with dependencies and article-cli configuration
- README.md with comprehensive documentation
- .gitignore with LaTeX-specific patterns
- VS Code configuration for LaTeX Workshop with auto-build and SyncTeX
- Font configuration (for presentation projects using custom themes)
# Create a new release
article-cli create v1.2.3
# List recent releases
article-cli list --count 10
# Delete a release
article-cli delete v1.2.3# Update bibliography from Zotero
article-cli update-bibtex
# Specify custom output file
article-cli update-bibtex --output my-refs.bib
# Skip backup creation
article-cli update-bibtex --no-backup# Compile with latexmk (default engine)
article-cli compile
# Compile specific file with latexmk
article-cli compile main.tex
# Compile with pdflatex engine
article-cli compile --engine pdflatex
# Compile with XeLaTeX (for custom fonts)
article-cli compile --engine xelatex
# Compile with LuaLaTeX
article-cli compile --engine lualatex
# Enable shell escape (for code highlighting, etc.)
article-cli compile --shell-escape
# Watch for changes and auto-recompile
article-cli compile --watch
# Clean before and after compilation
article-cli compile --clean-first --clean-after
# Specify output directory
article-cli compile --output-dir build/Install fonts for XeLaTeX projects (useful for custom Beamer themes):
# Install default fonts (Marianne, Roboto Mono) to fonts/ directory
article-cli install-fonts
# Install to a custom directory
article-cli install-fonts --dir custom-fonts/
# Force re-download even if fonts exist
article-cli install-fonts --force
# List installed fonts
article-cli install-fonts --listDefault fonts:
- Marianne: French government official font
- Roboto Mono: Google's monospace font for code
Install Beamer themes for presentations:
# List available themes
article-cli install-theme --list
# Install numpex theme (NumPEx Beamer theme)
article-cli install-theme numpex
# Install to a custom directory
article-cli install-theme numpex --dir themes/
# Force re-download even if theme exists
article-cli install-theme numpex --force
# Install from a custom URL
article-cli install-theme my-theme --url https://example.com/theme.zipAvailable themes:
- numpex: NumPEx Beamer theme following French government visual identity (requires XeLaTeX and custom fonts)
Complete presentation setup:
# 1. Install the theme
article-cli install-theme numpex
# 2. Install required fonts
article-cli install-fonts
# 3. Compile with XeLaTeX
article-cli compile presentation.tex --engine xelatex# Setup git hooks for gitinfo2
article-cli setup
# Clean LaTeX build files
article-cli clean# Override configuration via command line
article-cli update-bibtex --api-key YOUR_KEY --group-id YOUR_GROUP
# Specify custom configuration file
article-cli --config custom-config.toml update-bibtexRelease versions must follow the semantic versioning format:
vX.Y.Zfor stable releases (e.g.,v1.2.3)vX.Y.Z-pre.Nfor pre-releases (e.g.,v1.2.3-pre.1)
- Python 3.8+
- Git repository with gitinfo2 package (for LaTeX integration)
- Zotero account with API access (for bibliography features)
MIT License - see LICENSE file for details.
- Fork the repository
- Create a feature branch (
git checkout -b feature/amazing-feature) - Commit your changes (
git commit -m 'Add amazing feature') - Push to the branch (
git push origin feature/amazing-feature) - Open a Pull Request
- Add font installation command (
install-fonts) for XeLaTeX projects - Support Marianne and Roboto Mono fonts by default
- Add theme installation command (
install-theme) for Beamer presentations - Built-in support for numpex theme with automatic download
- Extended GitHub Actions workflow with XeLaTeX and multi-document support
- Add presentation project type with Beamer template support
- Add
--engineoption for xelatex and lualatex compilation - Improved CI/CD with font installation steps
- Add
initcommand for repository initialization - Add
compilecommand with watch mode and multiple engines - GitHub Actions workflow generation
- VS Code configuration generation
- Initial release
- Git release management
- Zotero bibliography synchronization
- LaTeX build file cleanup
- Configuration file support