# The `.pres` file — Structure and commands A `.pres` file is a plain-text source describing a whole presentation. It has two parts: **settings** (global parameters) and **content** (the slides). Revealer accepts raw HTML anywhere, just like reveal.js, but adds a set of shortcuts so you can focus on the content. ## Structure ``` # --- SETTINGS -------------------------------------------------------------- > author: First author > author: Second author > event: Seminar place, 01/01/2026 > logo: Media/Images/Logos/Logo1.png > logo: Media/Images/Logos/Logo2.png > slideNumber: c/t # --- CONTENT --------------------------------------------------------------- >>> first: Title > subtitle: Subtitle === Title of slide 1 This slide is very informative. === Title of slide 2 This slide is extremely informative. ``` ## Main commands | Command | Description | | --- | --- | | `#` | **Comment.** Any line starting with `#` is skipped. | | `>>> first:` *title* | **First slide.** Its content is generated automatically (title, subtitle, authors, logos, event). | | `===` *title* | **Horizontal slide.** | | `---` *title* | **Vertical slide.** | | `%%%` *title* | **Section slide.** Marks the start of a section; the header is removed. Add `> relief: none` to drop the text stroke. | | `>>> biblio` | **Bibliography slide(s).** Adds formatted bibliography slides from the references cited with `> cite:`. The title can be set with `> title:`. | ## Presentation settings These must appear **before** the first slide. Any other global reveal.js options may also be specified here using `> option: value` (for example `> controls: false`). Boolean and numeric values are recognised; strings are quoted. | Command | Description | | --- | --- | | `> author:` *name* | **Author name.** Repeat to add contributors. Add an indented `> photo:` line below an author to show a photo grid on the first slide. | | `> rounded_photos:` *true|false* | **Round author photos.** When `true`, author photos on the title slide are displayed in a circle. Defaults to `false` (square). | | `> photo:` *path* | **Author photo.** Used in the settings block, either below an author or followed by an indented author. See [Author photos](#author-photos). | | `> event:` *text* | **Event.** Typically the location and date. | | `> logo:` *path* | **Institutional logo** on the first slide. Repeatable. | | `> theme:` *name* | **Theme.** `revealer` (default, neutral), `ljp`, or any [reveal.js theme](https://revealjs.com/themes/). See [Themes](themes.md). | | `> codeTheme:` *name* | **Code highlighting theme.** See the [highlight.js demo](https://highlightjs.org/static/demo/). Default: `zenburn`. | | `> slideNumber:` *option* | **Slide numbers.** Disabled by default. Any [reveal.js value](https://revealjs.com/slide-numbers/). | | `> controls:` *true|false* | **Show navigation controls.** Defaults to reveal.js built-in value. | | `> progress:` *true|false* | **Progress bar.** Controls the visibility of the progress bar. Alias `progressbar` is accepted for backwards compatibility. | | `> backgroundTransition:` *transition* | **Background transition.** Any reveal.js background transition. `false` is accepted as an alias for `none`. | | `> notesSize:` *size* | **Speaker-notes font size.** Default: `1em`. Overridable per slide. | | `> svgDuration:` *time* | **Default SVG animation duration.** Default: `0.5s`. See [SVG animation](svg.md). | | `> bibtex:` *path* | **Bibtex file** used for the bibliography. | ## Slide commands | Command | Description | | --- | --- | | `> visibility: hidden` | **Hide slide.** | | `> style: dark` | **Dark style** for the current slide. | | `> theme:` *name* | **Theme for the current slide.** Temporarily switches the reveal.js theme while this slide is active. | | `> subtitle:` *text* | **Subtitle** (first slide only). | | `> header: none` | **Remove the fixed header.** | | `> background:` *path*/*color* | **Background** image or colour. | | `> color:` *color* | **Text colour** for the current slide. | See [Layout parameters](#layout-parameters) for `header-margin`, `column-spacing`, `column-width`, `paragraph-spacing`, and the contextual `size` / `align` directives. Content-level helpers such as citations, speaker notes, raw reveal.js attributes, inline SVGs, and SVG animation steps are documented in [Content shortcuts](pres-shortcuts.md). ## Parameter scopes Every `> key: value` directive applies to a **scope**, which determines how far its effect reaches: | Scope | Where it is written | Applies to | | --- | --- | --- | | **Presentation** | in the settings block, before the first slide | the whole presentation | | **Slide** | inside a slide, outside any column block | the current slide | | **Block** | at the top of a column block (`\|\|` / `\|`) | that column only | | **Paragraph** | directly attached to a paragraph (no blank line before its content) | that paragraph only | Most directives have a fixed scope (see the tables above). Two of them — `size` and `align` — are **contextual**: their scope is deduced from *where* they appear (see [Content shortcuts › Paragraphs](pres-shortcuts.md#paragraphs)). ## Layout parameters A slide is organised as a central area (the space left free by the optional header and footer) filled with one or more **blocks** (columns). Each block holds a stack of **paragraphs** and shrinks its own font until it fits. The geometry is controllable: | Command | Scope | Default | Description | | --- | --- | --- | --- | | `> header-height:` *fraction* | presentation | current look | **Header band height**, as a fraction of the slide height. | | `> footer-height:` *fraction* | presentation | current look | **Footer band height**, as a fraction of the slide height. | | `> header-margin:` *fraction* | slide | `0.05` | **Vertical breathing margin** between the header/footer and the central area, as a fraction of the slide height. | | `> column-spacing:` *fraction* | slide | `0.05` | **Horizontal spacing** used at the edges and between blocks, as a fraction of the slide width. | | `> column-width:` `equal`\|`auto` | slide | `equal` | **Block widths.** `equal` splits the width evenly; `auto` rebalances widths so the per-block font scales are as even as possible. | | `> paragraph-spacing:` *number* | slide → block | `0.5` | **Spacing between paragraphs**, in line-heights (interligne). Defined inside a column block, it applies to that block only. | | `> size:` *factor* | contextual | `1` | **Relative font size** multiplier (e.g. `0.8`, `120%`). Cascades multiplicatively across scopes. | | `> align:` `left`\|`center`\|`right`\|`justify` | contextual | inherited | **Text alignment.** | ## Author photos Author photos are declared in the settings block, before the first slide. If at least one author has a photo, the generated first slide switches automatically from a comma-separated author line to a photo table: one row of photos, with each name below its image. Indented properties attach to the author/photo block just above them: ```html > author: First author > photo: Media/Images/Photos/first.jpg > author: Second author > photo: Media/Images/Photos/second.jpg ``` The inverse order is also accepted when the image is the natural starting point: ```html > photo: Media/Images/Photos/third.jpg > author: Third author ``` The path is written like other media paths: relative to the presentation folder. For example, in a presentation with `media/images/photos/`, use: ```html > author: Esther Zamora Sanchez > photo: media/images/photos/esther.jpg ``` Authors without a photo are still included in the table when photo mode is active; Revealer shows their initials in a neutral placeholder. The author name may contain inline HTML, for instance `Raphael Candelier`; the raw text is used for image alt text and initials. Only the author/photo properties are nested today. Other presentation settings remain top-level settings.