Include an HTML deck
Rendered slide decks (Reveal.js, Marp, PowerPoint → HTML export) and other
self-contained pages own their own full markup. You don't want the wrap script injecting
the site chrome into the middle of a deck. The mechanism for that is
external_layout.
How it works
A tab marked "external_layout": true in its _tab.json still
appears in the header, but the wrap script skips every page inside it —
the files are served exactly as authored. Use this for any tab whose pages are not
<main class="doc-body"> documents.
Steps
- Create the tab directory and drop your decks in:
mkdir docs/pages/decks cp ~/exports/q1-review.html docs/pages/decks/index.html cp ~/exports/pitch.html docs/pages/decks/pitch.html - Mark it external in
docs/pages/decks/_tab.json:{ "label": "Decks", "key": "research", "landing": "index.html", "order_priority": 40, "external_layout": true, "sections": [] } - Re-run the wrap script. It reports the decks tab as skipped (by design) and leaves
those files byte-for-byte intact:
python3 docs/_lib/_wrap_handwritten.py
Clicking the Decks tab opens index.html as-is; the deck
controls its own navigation.
Linking to a deck from a normal page
<p>Watch the <a href="../decks/q1-review.html">Q1 review deck</a>.</p>
Notes
- Source files (
.pptx,.key) don't belong underdocs/— they won't render and they bloat the repo. Keep them elsewhere and commit only the exported HTML. - Embedded media in a deck inflates page weight; the dev server's no-cache headers mean large decks reload slowly. Keep them lean where you can.
- The
external_layoutflag is per tab, not per page. If you want one normal page plus some self-chromed pages, put the self-chromed ones in their own tab.