PowerPoint templates
PowerPoint
Guide
Reference for translating a deck authored on Microsoft's stock Office Theme
template onto the Polyrhythm .potx templates - manually (PowerPoint > Layout)
or programmatically. The Polyrhythm layouts were built to match Office's OOXML
slide-layout type and placeholder type/idx/sz, so most content relayouts
1:1.
Source of truth: generated from the committed templates by
_repo/scripts/pptx/layouts.mjs. If you change a layout's placeholders or reordernums, re-render and update the IDs below (they are the master'ssldLayoutIds and theslideLayoutN.xmlpart names, assigned innumorder).
How a translator should work
A slide does not reference the sldLayoutId directly - it references a
slideLayout part through a relationship in its .rels
(slideN.xml.rels -> Target="../slideLayouts/slideLayoutNN.xml"). The
sldLayoutId lives in the master's sldLayoutIdLst and is given here only so a
tool can cross-check. The three keys to a translation:
- Match the source layout by its OOXML
typeand Office layout name. The name is required to disambiguate:type="obj"andtype="twoObj"are each shared by several layouts, so type alone is not enough (e.g. Two Content vs. Comparison are bothtwoObj). - Retarget the slide's layout relationship to the Polyrhythm
slideLayoutNN.xmlpart below. Pick the dark or light.potxas the theme - the IDs and part names are identical in both, so theme is purely a file choice. - Remap placeholders by
(type, idx)per the row. Identity in most rows; the exceptions are flagged (Section Header needsidx 1 -> idx 2).sz(full/half/quarter) is a cosmetic hint and never affects matching.
Polyrhythm adds two extra placeholders to most layouts - the editable
classification/distribution zones at body idx 13 and body idx 14. They have
no Office source and are simply left as empty prompts (hidden until filled).
The matrix - 11 standard Office layouts
Placeholder columns list type/idx (a bare number = a content placeholder with no
type attribute, i.e. Office's "Content Placeholder", schema-default obj).
| Office layout | Office type | Office placeholders | -> Polyrhythm target | sldLayoutId | Part | Polyrhythm placeholders | Placeholder remap | Notes |
|---|---|---|---|---|---|---|---|---|
| Title Slide | title | ctrTitle - subTitle/1 | PR-01 Title Cover | 2147483651 | slideLayout2.xml | ctrTitle - subTitle/1 - body/2 | identity | body/2 = deck-info (rev/date/customer); no Office source. Alt: PR-02 Formal Cover (2147483652, slideLayout3.xml). |
| Title and Content | obj | title - 1 | PR-00 Base Content | 2147483650 | slideLayout1.xml | title - 1 | identity | Canonical obj target - match by name, since 10+ PR layouts are type="obj". |
| Section Header | secHead | title - body/1 | PR-05 Section Divider | 2147483655 | slideLayout6.xml | body/1 - title - body/2 | title->title; body/1 -> body/2 | Remap required. PR body/1 is the small section-code kicker (above the title); the Office text belongs in PR body/2 (summary, below the title). Naive idx-matching mis-places it. |
| Two Content | twoObj | title - 1 - 2 | PR-07 Two Content | 2147483657 | slideLayout8.xml | title - 1 - 2 | identity | Shares twoObj with Comparison - disambiguate by name / absence of body headings. |
| Comparison | twoObj | title - body/1 - 2 - body/3 - 4 | PR-19 Comparison | 2147483668 | slideLayout19.xml | title - body/1 - 2 - body/3 - 4 | identity | Exact 1-4 parity. body/1 & body/3 are the column headings; 2 & 4 the bodies. |
| Title Only | titleOnly | title | PR-06 Thesis | 2147483656 | slideLayout7.xml | title - body/1 | title->title | Only titleOnly match, but Thesis restyles the title as one oversized statement and adds an attribution (body/1). No neutral title-only canvas exists - see Gaps. |
| Blank | blank | (none) | PR-10 Full Content | 2147483660 | slideLayout11.xml | 1 | n/a | No blank layout exists. Free-form shapes carry over regardless of target; Full Content gives one open area with no title. See Gaps. |
| Content with Caption | objTx | title - 1 - body/2 | PR-18 Content with Caption | 2147483667 | slideLayout18.xml | title - 1 (half) - body/2 (quarter) | identity | Exact parity. 1 = large content (right), body/2 = caption (left). |
| Picture with Caption | picTx | title - pic/1 - body/2 | PR-20 Picture with Caption | 2147483669 | slideLayout20.xml | title - pic/1 - body/2 (quarter) | identity | Exact parity. Alt: PR-23 Team / SME Profile (2147483670, slideLayout21.xml) adds body/2 role line + 3 credentials - use for people. |
| Title and Vertical Text | vertTx | title - body/1 | PR-00 Base Content | 2147483650 | slideLayout1.xml | title - 1 | title->title; body/1->1 | No vertical-text layout; verticality is lost. Rare. See Gaps. |
| Vertical Title and Text | vertTitleAndTx | title - body/1 | PR-00 Base Content | 2147483650 | slideLayout1.xml | title - 1 | title->title; body/1->1 | No vertical layout; verticality is lost. Rare. See Gaps. |
Full Polyrhythm layout reference (all 29)
Every layout in both .potx. (c1/c2...) distinguishes the surface covers from
the surface dividers. Classification zones (body/13, body/14) are present on
all but are omitted here.
| PR name | num | type | sldLayoutId | Part | Content placeholders | Office analog |
|---|---|---|---|---|---|---|
| Base Content | 00 | obj | 2147483650 | slideLayout1.xml | title - 1 | Title and Content |
| Title Cover | 01 | title | 2147483651 | slideLayout2.xml | ctrTitle - subTitle/1 - body/2 | Title Slide |
| Formal Cover | 02 | title | 2147483652 | slideLayout3.xml | ctrTitle - subTitle/1 - body/2 | Title Slide |
| Capability Statement | 03 | obj | 2147483653 | slideLayout4.xml | title - 1 - body/2 | - (brand) |
| Briefing Map | 04 | obj | 2147483654 | slideLayout5.xml | title - body/2 - 1 | - (brand agenda) |
| Section Divider | 05 | secHead | 2147483655 | slideLayout6.xml | body/1 - title - body/2 | Section Header |
| Thesis | 06 | titleOnly | 2147483656 | slideLayout7.xml | title - body/1 | Title Only |
| Two Content | 07 | twoObj | 2147483657 | slideLayout8.xml | title - 1 - 2 | Two Content |
| Three Content | 08 | obj | 2147483658 | slideLayout9.xml | title - 1 - 2 - 3 | - (3-up) |
| Title + Content | 09 | obj | 2147483659 | slideLayout10.xml | title - 1 | - (split obj) |
| Full Content | 10 | obj | 2147483660 | slideLayout11.xml | 1 | Blank (closest) |
| Evidence Timeline | 11 | obj | 2147483661 | slideLayout12.xml | title - body/1-5 - 6 | - (brand) |
| Executive Summary | 12 | obj | 2147483662 | slideLayout13.xml | title - 1-6 | - (decision record) |
| Integration Flow | 13 | obj | 2147483663 | slideLayout14.xml | title - body/1-4 - 5 | - (brand) |
| Chart Explanation | 15 | chart | 2147483664 | slideLayout15.xml | title - chart/1 - body/2 | - (chart + takeaway) |
| Register | 16 | obj | 2147483665 | slideLayout16.xml | title - body/2 - 1 - body/3 | - (brand) |
| Data Table | 17 | tbl | 2147483666 | slideLayout17.xml | title - body/2 - tbl/1 - body/3 | - (table) |
| Content with Caption | 18 | objTx | 2147483667 | slideLayout18.xml | title - body/2 - 1 | Content with Caption |
| Comparison | 19 | twoObj | 2147483668 | slideLayout19.xml | title - body/1 - 2 - body/3 - 4 | Comparison |
| Picture with Caption | 20 | picTx | 2147483669 | slideLayout20.xml | title - pic/1 - body/2 | Picture with Caption |
| Team / SME Profile | 23 | picTx | 2147483670 | slideLayout21.xml | title - pic/1 - body/2 - 3 | Picture with Caption (people) |
| Closing / Request | 26 | obj | 2147483671 | slideLayout22.xml | title - body/1 - body/2 | - (brand) |
| Field Note | 28 | obj | 2147483672 | slideLayout23.xml | title - body/1 | - (brand) |
| Modeling & Simulation (cover) | 31 | title | 2147483673 | slideLayout24.xml | ctrTitle - subTitle/1 - body/2 | Title Slide (surface) |
| Aircraft Mission Systems (cover) | 32 | title | 2147483674 | slideLayout25.xml | ctrTitle - subTitle/1 - body/2 | Title Slide (surface) |
| Software Engineering (cover) | 33 | title | 2147483675 | slideLayout26.xml | ctrTitle - subTitle/1 - body/2 | Title Slide (surface) |
| Modeling & Simulation (divider) | 35 | secHead | 2147483676 | slideLayout27.xml | body/1 - title - body/2 | Section Header (surface) |
| Aircraft Mission Systems (divider) | 36 | secHead | 2147483677 | slideLayout28.xml | body/1 - title - body/2 | Section Header (surface) |
| Software Engineering (divider) | 37 | secHead | 2147483678 | slideLayout29.xml | body/1 - title - body/2 | Section Header (surface) |
Machine-readable map
Keyed by Office layout name. placeholders lists every source->target remap as
[srcType, srcIdx, dstType, dstIdx] (null type = untyped content placeholder).
sldLayoutId/part are identical in the dark and light .potx.
{
"Title Slide": { "officeType": "title", "target": "Title Cover", "num": "01", "sldLayoutId": 2147483651, "part": "slideLayout2.xml", "layoutType": "title", "placeholders": [["ctrTitle",0,"ctrTitle",0],["subTitle",1,"subTitle",1]], "alt": ["Formal Cover"] },
"Title and Content": { "officeType": "obj", "target": "Base Content", "num": "00", "sldLayoutId": 2147483650, "part": "slideLayout1.xml", "layoutType": "obj", "placeholders": [["title",0,"title",0],[null,1,null,1]] },
"Section Header": { "officeType": "secHead", "target": "Section Divider", "num": "05", "sldLayoutId": 2147483655, "part": "slideLayout6.xml", "layoutType": "secHead", "placeholders": [["title",0,"title",0],["body",1,"body",2]], "note": "remap idx 1->2; PR body/1 is the section-code kicker" },
"Two Content": { "officeType": "twoObj", "target": "Two Content", "num": "07", "sldLayoutId": 2147483657, "part": "slideLayout8.xml", "layoutType": "twoObj", "placeholders": [["title",0,"title",0],[null,1,null,1],[null,2,null,2]] },
"Comparison": { "officeType": "twoObj", "target": "Comparison", "num": "19", "sldLayoutId": 2147483668, "part": "slideLayout19.xml", "layoutType": "twoObj", "placeholders": [["title",0,"title",0],["body",1,"body",1],[null,2,null,2],["body",3,"body",3],[null,4,null,4]] },
"Title Only": { "officeType": "titleOnly", "target": "Thesis", "num": "06", "sldLayoutId": 2147483656, "part": "slideLayout7.xml", "layoutType": "titleOnly", "placeholders": [["title",0,"title",0]], "note": "Thesis restyles the title; no neutral title-only layout" },
"Blank": { "officeType": "blank", "target": "Full Content", "num": "10", "sldLayoutId": 2147483660, "part": "slideLayout11.xml", "layoutType": "obj", "placeholders": [], "note": "no blank layout; free shapes carry regardless" },
"Content with Caption": { "officeType": "objTx", "target": "Content with Caption", "num": "18", "sldLayoutId": 2147483667, "part": "slideLayout18.xml", "layoutType": "objTx", "placeholders": [["title",0,"title",0],[null,1,null,1],["body",2,"body",2]] },
"Picture with Caption": { "officeType": "picTx", "target": "Picture with Caption", "num": "20", "sldLayoutId": 2147483669, "part": "slideLayout20.xml", "layoutType": "picTx", "placeholders": [["title",0,"title",0],["pic",1,"pic",1],["body",2,"body",2]], "alt": ["Team / SME Profile"] },
"Title and Vertical Text": { "officeType": "vertTx", "target": "Base Content", "num": "00", "sldLayoutId": 2147483650, "part": "slideLayout1.xml", "layoutType": "obj", "placeholders": [["title",0,"title",0],["body",1,null,1]], "note": "verticality lost" },
"Vertical Title and Text": { "officeType": "vertTitleAndTx", "target": "Base Content", "num": "00", "sldLayoutId": 2147483650, "part": "slideLayout1.xml", "layoutType": "obj", "placeholders": [["title",0,"title",0],["body",1,null,1]], "note": "verticality lost" }
}
Gaps - Office layouts with no clean Polyrhythm target
These map with loss; address by authoring a new layout in layouts.mjs if the
content type is common in your source decks.
- Title Only -> mapped to Thesis (
titleOnly), but Thesis is an opinionated single-statement layout. There is no neutral "title + open canvas". Fix: add a plaintitleOnlylayout (sharedcontentHeadtitle, empty body). - Blank -> no
blanklayout. Free shapes survive any retarget; Full Content gives an open, title-less area. Fix: add atype="blank"layout (classification zones only) for true blank parity. - Title and Vertical Text / Vertical Title and Text -> no vertical-text
layouts; mapped to Base Content with vertical orientation lost. Rare in practice;
add
vertTx/vertTitleAndTxlayouts only if needed.
All other standard Office layouts have exact or near-exact (idx-faithful)
Polyrhythm targets.