PAPERS

PAPERS

PAPERS are governed academic artifacts. Each paper IS a scope. SPEC = {SCOPE}.

INTERFACE — PAPER FRONT MATTER

Interface — Paper Front Matter

Every paper .md MUST declare:

FieldTypeRequiredDescription
`layout`stringYES`paper` — renders via PAPER class (standalone, TOC, PDF download)
`title`stringYESPaper title
`date`dateYESPublication date
`scope`stringYES`PAPERS`
`math`booleanYES`true` — enables LaTeX rendering
`talk`booleanNO`true` — enables TALK widget
`footerTagline`stringNOFooter attribution
`figure`objectNOHero figure (data-driven)
`pdf`stringNOPath to compiled PDF (LATEX backend)
INTERFACE — PAPER SECTIONS

Interface — Paper Sections

Every paper .md SHOULD follow this section order:

```

ABSTRACT

Abstract

TABLE OF CONTENTS

Table of Contents

1. SECTION ...

1. Section ...

2. SECTION ...

2. Section ...

APPENDIX A: ...

Appendix A: ...

APPENDIX B: ...

Appendix B: ...

REFERENCES

References

```

COMPILATION

Compilation

InputOutputCompiler
`PAPERS/*.md` (with front matter)`PAPERS.json` index`bin/build-surfaces`
`PAPERS/*.md` (with front matter)HTML pagesJekyll (`layout: paper`)
`PAPERS/*.md` (with front matter)PDFLaTeX backend (inherits SERVICES/LATEX)
RENDERING

Rendering

Papers render via layout: paper (PAPER class — standalone, extends BLOG). Two rendering modes based on pdf: front matter.

Mode 1: PDF Viewer (paginated) — when pdf: is set

LaTeX is the source. PDF is the compiled state. The web viewer renders the compiled PDF via PDF.js with deck.js-style navigation. All three content types (paper, book, deck) are paginated — blog is the only scrolling layout.

Viewer: Full-viewport canvas. One PDF page at a time. PDF.js renders each page to preserving exact LaTeX rendering (fonts, math, columns, figures).

Navigation: Keyboard (←/→, Space, j/k). Touch swipe (horizontal, 50px threshold). Hash URL (#5 → page 5). Page counter (1 / 24). Prev/next buttons (hidden on mobile — use swipe).

Downloads: PDF download button (fixed position, serves raw PDF file). Books and papers get PDF. Decks get PPT + PDF.

CSS: All viewer styles use Layer 0 tokens (–bg, –scrim, –border, –accent-rgb, –z-modal, etc.). Zero hardcoded values.

Mode 2: Markdown Fallback (scrolling) — when pdf: is NOT set

MammoChat whitepaper aesthetic compiled to Jekyll with CANONIC design tokens.

Layout: Two-column body (CSS columns) on desktop, single column on mobile (<768px). Column gap: var(–space-md). Column rule: 1px solid var(–border).

Typography: Sans-serif via var(–font) (Helvetica system stack). Body: var(–font-base), line-height 1.2. No paragraph indent, var(–space-xs) paragraph spacing. Justified text with hyphens.

Full-width spans (above/across columns): Title block, abstract, h2 section headings, horizontal rules, figures, tables, code blocks.

Headings: Section headings in var(–fg-secondary) (slate), bold, var(–font-lg). Subsections in var(–font-base), bold.

Figures: All hero figures MUST be theme-reactive — use CSS custom properties (var(–fg), var(–accent), var(–glass-strong)) or JS MutationObserver on data-theme. No hardcoded RGB in SVG.

Components: Math via KaTeX. Figures via data-figure attribute (JSON config). Appendices follow body. References at end. All styling via Layer 0 tokens — zero hardcoded values in Layer 19.

*PAPERS SPEC CANONIC*
TALK AUTO