Latex metadata from scrim document

Hi Everyone

I’m a long-term Scrivener enthusiast and use it for anything remotely long form.

One thing I used to do was use it to write presentations for lectures using latex’s beamer class.

I was able to use the document structure to build the lectures and the slides like this:

metadata
Draft folder:
⎿__ Lecture 1
Lecture 2
⎿__Part 1
⎿__ Section 1
⎿__ Slide 1
Slide 2

I would compile each lecture separately, choosing only the corresponding docs from the compile menu.

Scrivener would produce latex in which the successive levels below ‘lecture’ in the structure above produced latex tags for \part, \section and \slide, respectively

I loved this way of working because it gave me a great overview of the structure of the presentation in the binder, and produced consistent and good looking output. I made a sty file to style the output with a university logo etc.

A great thing about beamer is that you can set it up to have a list of sections on each page, and even of parts and sections, so your audience can keep track of where you’re going and where you’ve come from.

The problem is I haven’t used this workflow for years, and when I open in the current scrivener it updates to file to the current version and I guess I’m losing a lot of compile info because the compile process has changed profoundly. And I can’t remember ANYTHING about how I achieved this. Just goes to show how important documentation is.

So I need two things to get this working again, I think…

  1. How do I control the sectioning in latex produced by Scrivener to correspond to beamer class levels? i.e.: Part > Section > Slide, and produce the correct tags?

  2. How do I get Scrivener to read the metadata document that I have at the top of my project template? I contains project data and \include commands to pull in boilerplate from elsewhere. I realise I could add this into the project metadata probably, but I prefer the freeform of the metadata file.

Thanks so much to anyone who can help!

The hierarchy is not really showing in my eg. structure above as I intended, but hopefully it’s clear (also I made a mistake with the beamer tag for a slide, it’s \frame). This is what I mean…:

Level 1: Draft folder
Level 2: Lectures or Presentations, each to be compiled separately as a tex file
Level 2: Parts of lectures — \part
Level 3: Sections of lectures – \section
Level 4: Sildes —\frame

I haven’t used Beamer directly, and you may not want to consider updating your workflow, but if you would consider moving to a markdown workflow, you can use Pandoc to build not only Beamer, but many other types of presentations (dynamic HTML, powerpoint) from the same Scrivener source. You can use incremetal reveals, pauses, presenter notes, and many other tweaks: Pandoc Presentations

Pandoc uses level headings, so for example this source:

---
title: Habits
author: John Doe
date: March 22, 2005
---

# In the morning

## Getting up

- Turn off alarm
- Get out of bed

## Breakfast

- Eat eggs
- Drink coffee

# In the evening

## Dinner

- Eat spaghetti
- Drink wine

------------------

![picture of spaghetti](images/spaghetti.jpg)

## Going to sleep

- Get in bed
- Count sheep

pandoc -t beamer -o presentation.pdf

Get converted into this Beamer PDF set:

This uses level 1 heading for title slides, and level 2 for content slides at a particular level (in this case level 1 and 2) to split, along with horizontal rules (the rules are detailed in the pandoc docs). You can change which levels do what. Pandoc does the work of converting this into the correct HTML/LaTex markup for each output format, you just use the Binder as-is. It is as simple as use Binder hierarchy 1 + 2 and save to MultiMarkdown.

1 Like

Wonderful - thanks very much!

I have recently changed my long text doc workflow to use pandoc, and I’m pleased with it, and I hadn’t realised that it can also do presentations. Will try this now.

Regarding your previous compile settings, if you go into the main compile overview and click on the little ... button in the footer bar of the left sidebar, you should find an option for importing your legacy compile settings from the upgraded project. This will do a pretty good job of replicating how things were set up.

Overall though, you might want to at some point go through the migration tutorial, which walks one through the process of updating a sample project, along with its compile settings, and in doing so also covers most of the major changes to the software. It will answer your questions about hierarchy and section formatting/layout. In short though, much of that is the same, the main difference is that we moved how hierarchy is defined into the project settings. Compile settings are now abstracted from structural declarations (such as this thing at this level is a “part”), and thus more useful across many projects.

One last thing of note, although it’s not set up for Beamer at all, for future LaTeX projects of a more general nature, you might give the new General Non-Fiction (LaTeX) project template a test drive. It has a lot of the kind of stuff you set up, such as turning outline hierarchy into heading commands, along with many other conveniences. This template also demonstrates one way in which you can manage your preamble using the binder outline, with its Front and Back Matter features.

1 Like

Brilliant, thanks Amber, I will check out that template.

The Beamer template in Pandoc is the same main template as the standard LaTeX document: it uses if blocks to specify the beamer specific code. You can save a copy locally by typing pandoc -D beamer > beamer.tex. You can edit that file then use this modified template when running pandoc again using the --template option.

Great, tip, thank you very much!

[Slightly off-topic] Although I normally use the markdown presentation engine Deckset for my presentations, yesterday I tried the Scrivener → Pandoc[via Quarto] → RevealJS route, and I was very impressed by the output. Reveal.js has a lot of really neat tricks up its sleeve, you can see some of them in this demo:

Most of the core styles / markup is shared with the other presentation formats (Beamer | Powerpoint), but there are some nice extensions that benefit reveal.js. Writing the slides in Scrivener is very nice, using the Binder to manage slides and their order. One slight caveat with Scrivener’s editor is not being able to nest styles, or easily assign attributes to styles. But those issues can be worked around using raw markdown that passes through the compiler easily…