> ## Documentation Index
> Fetch the complete documentation index at: https://docs-slidekit.theduomi.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Layout & Rendering Controls

> Choose compatible template slides, understand slide size behavior, and tune pagination, fitting, footers, slide numbers, and deck-level overrides.

# Layout & Rendering Controls

Generation has three cooperating parts:

* The selected template slide decides the slide size, placeholder positions, table/chart regions, and default visual styling.
* `slide_data` supplies the content and any explicit formatting overrides.
* `options` tunes how that content is fit into the selected slide and how output-level details such as footers and slide numbers are applied.

Use this page when you are choosing a template slide, deciding whether content should paginate, or setting deck-level rendering defaults.

<Note>
  Template analysis can record both PowerPoint master layouts and the actual template slides. Generation requests target actual analyzed slides by `template_slide_id` / `slideId`; master-layout analysis is useful for inspection and matching, but generation does not populate a master layout directly.
</Note>

## Choose a compatible template slide

Good output starts with a template slide that structurally matches the payload.

| Payload shape                               | Template layout to use                            | Rendering guidance                                                                                 |
| ------------------------------------------- | ------------------------------------------------- | -------------------------------------------------------------------------------------------------- |
| Title, subtitle, narrative text, or bullets | Text-oriented slide with real text regions        | Let the template carry font and placement defaults; override text formatting only when needed      |
| Large table with no supporting text         | Table-only slide                                  | Keep `auto_paginate_tables: true` when row counts may overflow                                     |
| Table plus commentary text                  | Slide designed for a table and textbox            | Set `auto_paginate_tables: false`; use font-size floors and textbox repositioning to fit one slide |
| Two-column table + chart or table + table   | Two-column template with matching content regions | Set `auto_paginate_tables: false`; two-column content is fit onto one output slide                 |
| Agenda sections                             | Agenda template                                   | Use an `agenda` block with a template that has the expected agenda structure                       |

Do not use a two-column `content` array for arbitrary left/right layouts. The renderer currently treats two-column content as table + chart or table + table layouts.

## Template styling inheritance

By default, generated slides inherit from the template. If a formatting field is omitted, the renderer uses the template's fonts, sizes, colors, table styling, chart presets, placeholder positions, and master layouts where supported.

Explicit formatting in `slide_data` wins over template styling. The common pattern is to let the template carry the brand, then override only data-driven styling such as status colors, risk flags, chart series colors, or one-off title sizing.

For the full generation payload shape and formatting surfaces, see [Presentation Generation](/guides/presentation-generation) and the block-specific guides.

## Aspect ratio and slide size

Generated output uses the PowerPoint slide size from the template:

* Single-slide generation uses the selected template's slide size.
* Deck generation initializes the output deck from the first selected template slide's presentation size.
* Slide previews preserve the source template's aspect ratio.

Use one aspect ratio per generated deck. If you need both `16:9` and `4:3` output, keep separate template sets and generate separate decks instead of mixing them in one request.

## Where `options` go

For single-slide generation, put `options` at the request root:

```json theme={"dark"}
{
  "template_slide_id": "slide_customer_table",
  "slide_data": {},
  "options": {
    "auto_paginate_tables": true,
    "table_min_font_size": 8
  }
}
```

For deck generation, put shared rendering defaults and deck-wide footer settings at the deck root. Add `options` to an individual slide only when that slide needs different rendering behavior:

```json theme={"dark"}
{
  "slides": [
    {
      "template_slide_id": "slide_table_with_notes",
      "slide_data": {},
      "options": {
        "auto_paginate_tables": false,
        "table_min_font_size": 8,
        "textbox_min_font_size": 8
      }
    }
  ],
  "options": {
    "auto_paginate_tables": true,
    "show_slide_numbers": true,
    "footer_text": "Confidential"
  }
}
```

## Rendering options

These options affect how each slide is populated and fit into the selected template slide.

| Option                     | Type              | Default | What it controls                                                                                       |
| -------------------------- | ----------------- | ------- | ------------------------------------------------------------------------------------------------------ |
| `auto_paginate_tables`     | boolean           | `true`  | Splits overflowing table-only layouts across continuation slides                                       |
| `allow_textbox_reposition` | boolean           | `false` | Allows textboxes below a table to move down to create more table space                                 |
| `table_min_font_size`      | integer or `null` | `null`  | Minimum table body font size during fit optimization; omitted uses the renderer default, currently 8pt |
| `textbox_min_font_size`    | integer or `null` | `null`  | Minimum textbox font size during fit optimization; omitted uses the renderer default, currently 8pt    |

`table_min_font_size` and `textbox_min_font_size` accept values from `6` to `72`.

## Pagination and fitting

`auto_paginate_tables` only applies to table-only layouts. When rows overflow, the renderer creates continuation slides and repeats the header row when one is provided.

For layouts that combine a table with text, or for two-column layouts, set `auto_paginate_tables: false`. Those layouts are fit onto one slide by adjusting table and textbox sizing instead of creating continuation slides.

Use `allow_textbox_reposition: true` only for templates where a textbox sits below a table and can safely move down. It is not useful for unrelated textboxes or side-by-side layouts.

Use font-size floors to control the tradeoff between fit and readability:

* Lower values allow more content to fit before pagination or clipping.
* Higher values preserve readability but may force pagination or leave less room for dense content.

## Footer and slide-number options

These options are presentation-level output settings.

| Option               | Type              | Default | What it controls                                                                   |
| -------------------- | ----------------- | ------- | ---------------------------------------------------------------------------------- |
| `show_slide_numbers` | boolean           | `false` | Enables PowerPoint-native slide numbering                                          |
| `footer_text`        | string or `null`  | `null`  | Footer text shown on generated slides                                              |
| `footer_font_size`   | integer or `null` | `null`  | Footer and slide-number font size; omitted uses the template/default footer size   |
| `footer_font_name`   | string or `null`  | `null`  | Footer and slide-number font family; omitted uses the template/default footer font |

For single-slide generation, footer and slide-number options apply to that generated output file. For deck generation, they are applied deck-wide from the top-level `options` object.

Do not put `show_slide_numbers`, `footer_text`, `footer_font_size`, or `footer_font_name` only inside `slides[].options` for deck generation. Deck output uses the top-level footer and slide-number settings.

## Deck override behavior

If a deck slide does not include `slides[].options`, it uses the deck-level rendering options.

If a deck slide does include `slides[].options`, that object replaces the deck-level rendering options for that slide. It is not merged field-by-field.

Include every rendering option you want preserved on that slide. Omitted rendering fields fall back to `GenerationOptions` defaults, not deck-level values.

```json theme={"dark"}
{
  "slides": [
    {
      "template_slide_id": "slide_mixed_table_text",
      "slide_data": {},
      "options": {
        "auto_paginate_tables": false,
        "allow_textbox_reposition": true,
        "table_min_font_size": 8,
        "textbox_min_font_size": 8
      }
    }
  ],
  "options": {
    "auto_paginate_tables": true,
    "table_min_font_size": 10,
    "textbox_min_font_size": 9,
    "show_slide_numbers": true,
    "footer_text": "Confidential"
  }
}
```

In this example, the slide uses `table_min_font_size: 8`, not the deck-level `10`.

If the slide-level object had only included `"auto_paginate_tables": false`, then `table_min_font_size` would fall back to the renderer default instead of inheriting the deck-level `10`.

## Related Guides

<CardGroup cols={2}>
  <Card title="Presentation Generation" icon="file-powerpoint" href="/guides/presentation-generation">
    Generate one slide or a full deck.
  </Card>

  <Card title="Slide Input" icon="brackets-curly" href="/guides/slide-input">
    See where `options` appears in single-slide and deck request structures.
  </Card>
</CardGroup>
