* appear one at a time<!-- _transition: fade -->* bullets, the _transition comment and the notesMarp's ![bg] images are CSS backgrounds; they get inlined too.
 puts it beside the text; bg left, bg contain and filters such as sepia also work.
<style scoped> block styles just this slide# <!-- fit --> Title (Marp menu → Insert → Fitted Heading)
Click the widget, then press →: the arrow keys still change slides.
x = np.linspace(0, 10, 101)
y = np.sin(x) * np.exp(-x / 5)
print(f"max {y.max():.3f} at x = {x[y.argmax()]:.1f}")
y.mean()
The cells share one Python: x and y are still there on the next slides.
Esc leaves the editor, ↺ restores the code, ⟲ restarts Python.
import sympy as sp
t = sp.symbols("t")
sp.integrate(sp.sin(t) * sp.exp(-t / 5), (t, 0, sp.oo))
python run auto ran this the first time the slide was shown.
A python run hidden cell on the previous slide did the imports.
plt.figure(figsize=(6, 2.6))
plt.plot(x, y, lw=2)
plt.xlabel("x"); plt.ylabel("y")
plt.title("sin(x) · exp(−x/5)")
from pycse import regress
rng = np.random.default_rng(1)
t = np.linspace(0, 5, 20)
c = 2.0 + 0.7 * t + rng.normal(0, 0.2, t.size)
A = np.column_stack([t**0, t])
p, pint, se = regress(A, c, alpha=0.05)
print("intercept, slope:", p.round(3))
print("95% intervals:\n", pint.round(3))
%pip install seaborn
import seaborn as sns
import pandas as pd
df = pd.DataFrame({"x": np.tile(np.arange(10), 3), "g": np.repeat(list("abc"), 10)})
df["y"] = df.x * df.g.map({"a": 1, "b": 2, "c": 3}) + np.random.default_rng(2).normal(0, 1, len(df))
sns.lmplot(data=df, x="x", y="y", hue="g", height=2.6, aspect=2)
Go back to slide 11, make the decay faster, and run it and the plot again.
Try it: press g, type plot, press Enter.
.vtt subtitle fileTry it: press v and say something. Start recording before going full screen.
Thsi sentence has a typo to fix.
Try it: double-click the typo to fix it. Then drag the chart, and use + / - to resize it. Delete hides a selection, Tab selects the block around it, Cmd+Z undoes. Esc twice finishes.
A reload keeps everything: it lives in the browser until you save it.
Yes: a hidden slide. It is in the thumbnails, dimmed and marked hidden, but not in the slideshow or any export.
H in the Slide Sorter, or Marp menu → Hide or Unhide Slide, wraps a slide in a <!-- scimax-hidden ... --> comment.
The Markdown does not change: s saves the new order in the HTML.
Try it: hide this slide, then find it again in the overview.
Open demo.md in VS Code to try these
Each change is one edit to the Markdown: Cmd+Z undoes it.
Directives complete as you type in the front matter or <!-- -->, and hovering explains them.
Right-click a thumbnail (or select several) → Edit with Claude Code…
In the Marp slide deck demo.md, edit slide 9 (lines 117-123).
Change only that slide and keep the rest of the deck as it is. Change:
Type the change and send it. With a Claude Code chat already open, the slides go to it as an @demo.md#L117-123 mention.
python run cell runs it in a Python panel, no slideshow neededpresenter: offline puts Python in the HTML, for a talk without internet| Key | Does | Key | Does |
|---|---|---|---|
| x | Present from the start | c | Present from this slide |
| p | n | PDF with notes | |
| h | One-file HTML slideshow | i | PNG per slide |
| s | PowerPoint (pictures) | e/d | Editable PowerPoint |
| g | For Google Slides | t | Notes as text |
In an org file, [[marp:demo.md::5][the demo]] presents from slide 5; hover it to see the deck.
presenter: true in new decksscimax.marp.presenter setting gives the tools to decks with no presenter: line; presenter: false still turns them offscimax marp build demo.md --open builds this one-file HTML from a terminal, a Makefile or Claude Code--pdf also writes a PDF; --plain builds it without the toolsScimax: Marp Help (C-c C-e ?) opens the full guide
Speaker notes look like this: any comment that is not a directive. Press p to see them in the presenter view.
These are the notes for the builds slide. Insert → Speaker Notes in the Marp menu adds a comment like this one.
Captions also show, smaller, in the presenter view. The yellow ring around the mouse is only drawn while recording.
scimax-hidden ## Backup slide Hidden slides stay in the Markdown and the thumbnails, but not in the show. scimax-hidden