What
Word documents with "Different Odd & Even Pages" enabled (w:evenAndOddHeaders in word/settings.xml) render the same header/footer on every page in SuperDoc. The even/odd variants are ignored.
Root Cause
The layout engine hardcodes alternateHeaders = false at packages/layout-engine/layout-engine/src/index.ts:1287, preventing the paginator from selecting the correct header/footer variant per page. This causes incorrect margin calculations — the body content area doesn't account for different header heights on odd vs even pages.
The rest of the pipeline already supports this:
- Import:
w:evenAndOddHeaders is parsed from settings.xml → styles.alternateHeaders
- Layout Bridge:
getHeaderFooterTypeForSection() already handles even/odd variant selection
- Rendering: The provider pattern renders whichever variant is selected
Expected Behavior
- Page 1 (odd): renders odd/default header
- Page 2 (even): renders even header
- Page 3 (odd): renders odd/default header
- Margins adjust per page based on actual header/footer content height for each variant
Spec Reference
- ECMA-376 §17.10 — Headers and Footers
w:evenAndOddHeaders element in word/settings.xml
What
Word documents with "Different Odd & Even Pages" enabled (
w:evenAndOddHeadersinword/settings.xml) render the same header/footer on every page in SuperDoc. The even/odd variants are ignored.Root Cause
The layout engine hardcodes
alternateHeaders = falseatpackages/layout-engine/layout-engine/src/index.ts:1287, preventing the paginator from selecting the correct header/footer variant per page. This causes incorrect margin calculations — the body content area doesn't account for different header heights on odd vs even pages.The rest of the pipeline already supports this:
w:evenAndOddHeadersis parsed fromsettings.xml→styles.alternateHeadersgetHeaderFooterTypeForSection()already handles even/odd variant selectionExpected Behavior
Spec Reference
w:evenAndOddHeaderselement inword/settings.xml