Language Support OverviewΒΆ
Comparison of all supported languages
Language Support OverviewΒΆ
Introligo supports automatic API documentation extraction for multiple programming languages, each with optimized integration for the best documentation experience.
Supported LanguagesΒΆ
PythonΒΆ
Extraction Tool: Sphinx autodoc Complexity: β ββββ (Simple) Features: β β β β β (Excellent)
Zero-configuration autodoc integration
Multiple docstring styles (Google, NumPy, Sphinx)
Type hint support
Automatic inheritance trees
Source code links
C/C++ΒΆ
Extraction Tool: Doxygen + Breathe Complexity: β β β ββ (Moderate) Features: β β β β β (Excellent)
Industry-standard Doxygen integration
Full C++ features (templates, namespaces, inheritance)
Rich documentation with diagrams
Multi-file support
Automatic Breathe configuration
GoΒΆ
Extraction Tool: go doc + custom parser Complexity: β β βββ (Easy) Features: β β β ββ (Good)
Automatic extraction via go doc
RST conversion
Graceful fallback without Go
Manual documentation option
Multi-package support
JavaΒΆ
Extraction Tool: Source parser + Javadoc converter Complexity: β β βββ (Easy) Features: β β β β β (Very Good)
Automatic extraction from Java source files
Full Javadoc tag support (@param, @return, @throws)
No external tools required
Package and file-level documentation
Maven/Gradle project support
RustΒΆ
Extraction Tool: cargo doc + source parser Complexity: β β βββ (Easy) Features: β β β β β (Very Good)
Automatic extraction via cargo doc
RST conversion from doc comments
Graceful fallback without Cargo
Manual documentation option
Multi-crate support
LaTeX / MathematicsΒΆ
Extraction Tool: MathJax Complexity: β ββββ (Simple) Features: β β β β β (Very Good)
Inline and block equations
External LaTeX file inclusion
Full LaTeX math syntax
Numbered equations with cross-references
Automatic MathJax configuration
LaTeX/Math Documentation Guide β
Quick ComparisonΒΆ
Language |
Setup |
Auto-Extract |
External Tool |
Build Time |
|---|---|---|---|---|
Python |
Minimal |
β Yes |
No |
Fast |
C/C++ |
Moderate |
β Yes |
Doxygen |
Slow |
Go |
Minimal |
β Yes* |
Go (optional) |
Fast |
Java |
Minimal |
β Yes |
No |
Fast |
Rust |
Minimal |
β Yes* |
Cargo (optional) |
Moderate |
LaTeX |
Minimal |
Manual |
No |
Fast |
*Go extraction requires Go to be installed; gracefully falls back to manual docs *Rust extraction requires Cargo to be installed; gracefully falls back to manual docs
Features by LanguageΒΆ
Documentation QualityΒΆ
Feature |
Python |
C/C++ |
Go |
Java |
Rust |
LaTeX |
|---|---|---|---|---|---|---|
Function Docs |
β |
β |
β |
β |
β |
N/A |
Class Docs |
β |
β |
β οΈ |
β |
β |
N/A |
Type Info |
β |
β |
β |
β |
β |
N/A |
Examples |
β |
β |
β |
β |
β |
β |
Cross-refs |
β |
β |
β οΈ |
β οΈ |
β οΈ |
β |
Diagrams |
β |
β |
β |
β |
β |
β οΈ |
Configuration ComplexityΒΆ
Aspect |
Python |
C/C++ |
Go |
Java |
Rust |
LaTeX |
|---|---|---|---|---|---|---|
Initial Setup |
β |
βββ |
ββ |
ββ |
ββ |
β |
Learning Curve |
β |
ββββ |
ββ |
ββ |
ββ |
ββ |
Maintenance |
β |
βββ |
β |
β |
β |
β |
Integration MethodΒΆ
Python:
modules:
my_module:
module: "mypackage.mymodule" # That's it!
C/C++:
doxygen:
xml_path: "doxygen/xml"
project_name: "myproject"
modules:
my_api:
language: cpp
doxygen_file: "api.h"
Go:
modules:
my_package:
language: go
godoc_package: "github.com/user/pkg"
godoc_path: "."
Java:
modules:
my_package:
language: java
java_package: "com.example.mypackage"
java_source_path: "src/main/java"
Rust:
modules:
my_crate:
language: rust
rustdoc_crate: "my_crate"
rustdoc_path: "."
LaTeX:
modules:
equations:
latex_includes:
- "math/equations.tex"
Choosing the Right ApproachΒΆ
For Python ProjectsΒΆ
β Use Python support if: - You have Python source code with docstrings - You want automatic API extraction - You need type hint documentation - You want zero-configuration setup
For C/C++ ProjectsΒΆ
β Use C/C++ support if: - You have C/C++ source with Doxygen comments - You need comprehensive C++ feature support - You can run Doxygen as part of your build - You want rich documentation with diagrams
For Go ProjectsΒΆ
β Use Go support if: - You have Go packages with godoc comments - You want automatic extraction (when Go is available) - You need fallback for environments without Go - You want simple, clean documentation
For Java ProjectsΒΆ
β Use Java support if: - You have Java source files with Javadoc comments - You want automatic extraction without external tools - You need Maven/Gradle project documentation - You want full Javadoc tag support (@param, @return, @throws) - You can provide source files to the documentation build
For Mathematical ContentΒΆ
β Use LaTeX support if: - You need mathematical equations - You want inline or block formulas - You have external LaTeX files - You need numbered, cross-referenced equations
Multi-Language ProjectsΒΆ
Introligo handles mixed-language projects seamlessly:
modules:
# Python API
python_api:
title: "Python API"
module: "myproject.api"
# C++ Core
cpp_core:
title: "C++ Core"
language: cpp
doxygen_file: "core.h"
# Go Services
go_services:
title: "Go Services"
language: go
godoc_package: "github.com/org/services"
# Java Backend
java_backend:
title: "Java Backend"
language: java
java_package: "com.myproject.backend"
java_source_path: "backend/src/main/java"
# Mathematical Models
math_models:
title: "Mathematical Models"
latex_includes:
- "models/equations.tex"
Auto-ConfigurationΒΆ
Introligo automatically configures Sphinx extensions based on detected languages:
Detected Python module β Adds sphinx.ext.autodoc, sphinx.ext.napoleon, sphinx.ext.viewcode
Detected C/C++ doxygen β Adds breathe
Detected Go godoc β Logs detection (no extension needed)
Detected Java package β Logs detection (no extension needed)
Detected LaTeX includes β Adds sphinx.ext.mathjax
Best PracticesΒΆ
1. Organize by LanguageΒΆ
modules:
api_reference:
title: "API Reference"
python_api:
parent: "api_reference"
title: "Python API"
# Python modules here
cpp_api:
parent: "api_reference"
title: "C++ API"
# C++ modules here
2. Use Consistent StyleΒΆ
Python: Google or NumPy docstring style
C/C++: JavaDoc style Doxygen comments
Go: Standard godoc conventions
LaTeX: Consistent notation throughout
3. Combine with Narrative DocsΒΆ
Every language supports adding: - overview: High-level description - usage_examples: Code examples - features: Bullet points - notes: Additional information
4. Test Documentation BuildΒΆ
# Generate Introligo RST
python -m introligo config.yaml -o docs
# Build with Sphinx
cd docs && sphinx-build -b html . _build/html
Common WorkflowsΒΆ
Python-Only ProjectΒΆ
# Simple setup
pip install sphinx furo
# Create config
cat > introligo_config.yaml << EOF
sphinx:
project: "My Project"
html_theme: "furo"
modules:
api:
module: "myproject"
title: "API"
EOF
# Generate and build
python -m introligo introligo_config.yaml -o docs
cd docs && sphinx-build -b html . _build/html
C++ with Python BindingsΒΆ
# Install requirements
pip install sphinx breathe furo
sudo apt-get install doxygen
# Run Doxygen first
doxygen Doxyfile
# Then Introligo + Sphinx
python -m introligo config.yaml -o docs
cd docs && sphinx-build -b html . _build/html
Multi-Language MicroservicesΒΆ
modules:
services:
title: "Services"
python_service:
parent: "services"
module: "services.python"
title: "Python Service"
java_service:
parent: "services"
language: java
java_package: "com.org.javaservice"
java_source_path: "java-service/src/main/java"
title: "Java Service"
go_service:
parent: "services"
language: go
godoc_package: "github.com/org/go-service"
title: "Go Service"
cpp_lib:
parent: "services"
language: cpp
doxygen_file: "lib.h"
title: "C++ Library"
TroubleshootingΒΆ
Python Import ErrorsΒΆ
Solution: Add project to path:
sphinx:
add_project_to_path: true
project_root: ".."
Doxygen XML Not FoundΒΆ
Solution: Verify paths:
ls doxygen/xml/index.xml # Should exist
Go Not AvailableΒΆ
Solution: Use manual docs:
godoc_manual_content: |
Package documentation here...
Java Source Not FoundΒΆ
Solution: Verify paths and package structure:
ls src/main/java/com/example/pkg/*.java # Should exist
Or use manual docs:
java_manual_content: |
Package documentation here...
Math Not RenderingΒΆ
Solution: Check MathJax extension:
sphinx:
extensions:
- "sphinx.ext.mathjax"
See AlsoΒΆ
SummaryΒΆ
Introligo provides comprehensive multi-language documentation support:
β Python - Zero-config autodoc integration β C/C++ - Industry-standard Doxygen + Breathe β Go - Automatic go doc extraction β Java - Javadoc source file parsing with full tag support β Rust - Automatic cargo doc extraction with RST conversion β LaTeX - Beautiful mathematical formulas
Choose the language support that fits your project, or use them all together for multi-language documentation!