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

Python Documentation Guide β†’

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

C/C++ Documentation Guide β†’

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

Go Documentation Guide β†’

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

Java Documentation Guide β†’

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

Rust Documentation Guide β†’

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!