Marp CLI Setup and Brand Theme Guide
Setup instructions for Marp CLI with Solanasis brand theming for rapid Markdown-to-slides generation.
1. Overview
Marp is a Markdown-to-slides ecosystem (MIT-licensed, v3.4.1+) that converts Markdown files to PDF, HTML, PPTX, and PNG slides. It renders at 345 slides/second with 2.8ms latency, making it one of the fastest slide generation tools available. Solanasis uses Marp for rapid internal presentations and training decks where speed-to-slide matters more than PPTX editability. A custom CSS theme applies Solanasis branding automatically to all generated slides.
2. Installation (WSL2)
Option A: npm (recommended)
npm install -g @marp-team/marp-cliOption B: Standalone binary
# Download latest release from https://github.com/marp-team/marp-cli/releases
# Extract and place in PATH
chmod +x marp
sudo mv marp /usr/local/bin/Verify installation
marp --versionChromium for PDF export
Marp needs Chromium to render PDF output. On WSL2:
sudo apt install chromium-browser
# Or set CHROME_PATH to Windows Chrome:
export CHROME_PATH="/mnt/c/Program Files/Google/Chrome/Application/chrome.exe"Optional: VS Code extension
Search “Marp for VS Code” in the Extensions marketplace for live preview while editing slide Markdown.
3. Brand CSS Theme
Save the following as solanasis-theme.css (recommended location: solanasis-scripts/templates/marp/solanasis-theme.css):
/* @theme solanasis */
@import 'default';
:root {
--color-navy: #020532;
--color-copper: #C47A3D;
--color-parchment: #FEF9F1;
--color-warm-stone: #F0EBE4;
--color-charcoal: #111827;
}
section {
background-color: var(--color-parchment);
color: var(--color-charcoal);
font-family: 'Montserrat', sans-serif;
font-size: 28px;
padding: 40px 60px;
}
h1 {
font-family: 'Playfair Display', serif;
color: var(--color-navy);
font-size: 48px;
border-bottom: 3px solid var(--color-copper);
padding-bottom: 12px;
}
h2 {
font-family: 'Montserrat', sans-serif;
color: var(--color-copper);
font-size: 36px;
font-weight: 700;
}
h3 {
font-family: 'Montserrat', sans-serif;
color: var(--color-navy);
font-size: 28px;
}
a {
color: var(--color-copper);
}
blockquote {
border-left: 4px solid var(--color-copper);
padding-left: 16px;
color: var(--color-navy);
font-family: 'Libre Baskerville', serif;
font-style: italic;
}
/* Title slide */
section.lead {
background-color: var(--color-navy);
color: var(--color-parchment);
}
section.lead h1 {
color: var(--color-parchment);
border-bottom-color: var(--color-copper);
}
/* Footer */
footer {
font-size: 14px;
color: var(--color-navy);
}
header {
font-size: 14px;
color: var(--color-copper);
}Brand color reference
| Name | Hex | Usage in theme |
|---|---|---|
| Navy | #020532 | H1 text, H3 text, footer, title slide background |
| Copper | #C47A3D | H2 text, links, blockquote border, header, accents |
| Parchment | #FEF9F1 | Default slide background, title slide text |
| Warm Stone | #F0EBE4 | Available for alternate slide backgrounds |
| Charcoal | #111827 | Body text |
Font reference
| Font | Usage |
|---|---|
| Playfair Display | H1 headings (display/title) |
| Montserrat | H2, H3, body text, footer |
| Libre Baskerville | Blockquotes, accent text |
4. Writing Slides in Markdown
Marp slides are standard Markdown with YAML frontmatter and --- slide separators. Example deck:
---
marp: true
theme: solanasis
paginate: true
header: 'Solanasis LLC'
footer: 'solanasis.com'
---
<!-- _class: lead -->
# Operational Resilience Baseline
## For Acme Corporation
**Prepared by Dmitri Zasage, CEO**
April 2026
---
## Agenda
1. Current State Assessment
2. Key Findings
3. Recommendations
4. Next Steps
---
## Key Findings
- **Finding 1:** No documented disaster recovery plan
- **Finding 2:** Backup verification not performed regularly
- **Finding 3:** Single point of failure in email infrastructure
> "An untested backup is not a backup."Slide authoring tips
---on its own line creates a new slide<!-- _class: lead -->applies the title slide style (navy background)<!-- _class: invert -->inverts colors for a dark slide (built-in)paginate: truein frontmatter enables slide numbers- Images:
places a background image on the right 40% of the slide - Speaker notes:
<!-- This is a speaker note -->(visible in presenter view)
5. CLI Usage
Basic output commands
# PDF output (most common for deliverables)
marp slides.md --pdf --theme solanasis-theme.css
# HTML output (for web hosting or email)
marp slides.md --html --theme solanasis-theme.css
# PPTX output (non-editable -- slides rendered as images)
marp slides.md --pptx --theme solanasis-theme.css
# PNG output (one image per slide)
marp slides.md --images png --theme solanasis-theme.cssDevelopment workflow
# Watch mode -- auto-rebuilds on file changes
marp -w slides.md --theme solanasis-theme.cssConfiguration file
Save as marp.config.js (recommended location: solanasis-scripts/templates/marp/marp.config.js):
module.exports = {
theme: './solanasis-theme.css',
html: true,
output: 'output/',
}With a config file, run simply: marp slides.md (config is auto-detected in the working directory or parent directories).
6. Integration with solanasis-scripts
- Marp theme CSS should live in
solanasis-scripts/templates/marp/solanasis-theme.css - AI agents generate Markdown content, then invoke
marpCLI via subprocess - For editable PPTX deliverables, use python-pptx instead (Marp PPTX renders slides as images)
- Marp config file at
solanasis-scripts/templates/marp/marp.config.js
Directory structure
solanasis-scripts/
templates/
marp/
solanasis-theme.css # Brand CSS theme
marp.config.js # Default config
7. Known Limitations
- PPTX export renders slides as background images (not editable text in PowerPoint). The experimental
--pptx-editableflag requires LibreOffice and has lower fidelity. For editable PPTX, use python-pptx (generate-pitch-deck.py). - PDF export requires Chromium (bundled in npm version, or system Chromium on WSL2). Set
CHROME_PATHif using Windows Chrome. - Custom fonts must be installed system-wide or available via CSS
@import url()from Google Fonts. Local fonts require@font-facein the CSS theme. - WSL2 mirrored networking mode may be needed for browser-based PDF export. If PDF export hangs, try
export PUPPETEER_EXECUTABLE_PATH=/usr/bin/chromium-browser.
8. References
- Marp official site: https://marp.app/
- Marp CLI GitHub: https://github.com/marp-team/marp-cli
- Marp themes: https://github.com/marp-team/marp-core/tree/main/themes
- Brand constants: gws-template-design-spec
- Related: ai-native-document-generation-playbook
Last updated: 2026-04-12