Codexis Book Building System
Architecture Overview
The Codexis system is a comprehensive book publishing toolchain that converts source documents (likely LaTeX) into multiple output formats with quality assurance features. Here's a breakdown:
-
Architecture Overview:
- The system follows a modular architecture with specialized components for each step of the publishing process
BookBuilderOrchestratoris the main entry point that orchestrates all processes- Each component handles specific aspects of the build process (PDF generation, ebook formats, quality checks)
-
Core Components:
- BookBuilderCore: Core framework for the book building process
- QualityChecker: Runs validation on generated files
- EbookBuilder: Generates various ebook formats (EPUB, MOBI, KFX)
- PDFBuilder: Creates PDF output
- MarkdownBuilder: Generates markdown for documentation
- WikiJSBuilder: Creates Wiki.js compatible content
-
Quality Checking Process:
- EPUB Validation: Uses
epubcheckto validate EPUB files against the EPUB standard, outputting results to XML - Accessibility Testing: Uses
ACE(Accessibility Checker for EPUB) to test accessibility compliance - PDF Comparison: Uses
diff-pdfto compare current PDF with previous version to highlight changes
- EPUB Validation: Uses
-
Output Formats:
- PDF: Main output format generated directly from LaTeX
- EPUB: Industry standard for ebooks
- MOBI: Amazon's older Kindle format
- KFX: Amazon's newer Kindle format
- HTML: Web-compatible format
- Markdown: For documentation and Wiki.js
-
Build Process Flow:
- Initialize components and parse options
- Setup directory structure
- Build PDF (may stop here with pdf_only option)
- Generate ebook formats (EPUB, MOBI, KFX)
- Create markdown/Wiki.js content
- Run quality checks (unless skipped)
-
Quality Check Details:
- EPUBCheck: Validates structure and content against EPUB specification
- ACE Check: Tests for accessibility compliance, generating HTML report
- PDF Diff: Creates visual comparison between current and previous PDF versions
-
Directory Structure:
- Root directory:
manuscript/- Main source file:
manuscript.tex - Configuration:
config.yaml,meta.yaml
- Main source file:
- Content:
manuscript/content/- Front matter:
content/front-matter/ - Chapters:
content/chapters/ - Back matter:
content/back-matter/ - Images:
content/images/ - Figures:
content/figures/ - Tables:
content/tables/ - Equations:
content/equations/ - Bibliography:
content/bibliography/ - Glossary:
content/glossary/ - Acronyms:
content/acronyms/
- Front matter:
- Styles:
manuscript/styles/ - Assets:
manuscript/assets/ - Output:
manuscript/output/- PDF:
output/pdf/ - EPUB:
output/epub/ - MOBI:
output/mobi/ - KFX:
output/kfx/ - HTML:
output/html/ - Markdown:
output/markdown/ - WikiJS:
output/markdown-wikijs/ - Reports:
output/reports/- ACE results:
reports/ace_results/ - EPUB check:
reports/epubcheck/ - Logs:
reports/logs/
- ACE results:
- PDF:
- Temporary files:
manuscript/tmp/
- Root directory: