Loading repository data…
Loading repository data…
louisazhou / repository
You write simple, readable Markdown with a few extras, and Slide Generator produces well-formatted PowerPoint and Google Slides. This is like LaTeX Beamer for ppt: as the content creator, you focus on content, and let the system handle layout. You can even seamlessly create slides in Jupyter notebook! No more context switching, stay in your flow.
Create native PowerPoint and Google Slides directly from Markdown or Python notebooks — and stay focused on your content, not formatting tweaks.
Slide Generator renders your content in a real browser to understand layout, then reproduces it as native slide elements. Tables, columns, images, and speaker notes are handled automatically, so final adjustments are minimal.
Status
Installation
pip install slide-generatorpython -m venv .venv && source .venv/bin/activatepip install -r requirements.txtIf you’ve used LaTeX Beamer, you know the ideal: focus on content and let the system handle layout. Slide Generator brings that content‑first experience to PowerPoint/Google Slides while keeping everything editable.
python‑pptx let you control every pixel—but only if you write dozens of lines of layout code for each slide. Every deck becomes a one‑off script with brittle coordinates and font definitions.Short examples of the syntax you write and the result you get.
Find more recipes in docs/cookbook.pdf and full decks under output/.
# Two-column slide
:::columns
:::column
### 📋 Project Status Table
| Task | Owner | Progress |
|------|-------|----------|
| Authentication | Alice | [100%]{.red} |
| Database | Bob | [80%]{.green} |
| API Docs | Carol | [100%]{.green .underline} |
| Analytics | Dave | 60% |
:::
:::column
### ✍️ Notes
All core features are either complete or in final testing.
[Performance]{.bold .blue} metrics are excellent.
:::
:::
# 🖼️ Figure + Table Demo
:::columns
:::column

:::
:::column
| Segment | % |
|---------|---|
| Complete | 55 |
| In-Progress | 35 |
| Blocked | 10 |
:::
# 📒 Speaker Notes Demo 2
[A second slide]{.red} to ensure notes mapping is robust.
??? [Speaker note]{.red} for ==slide 2== – keep _eye-contact_ with the [audience](www.google.com).
??? Mention the live ~~demo~~ coming right after this.
{% figure "create_sales_chart" width=0.8 caption="Quarterly sales performance vs targets showing steady improvement" %}
{% table "regional_data"
order_by="Revenue" desc=true
rules=[
["Growth < 0", {"class": ["red", "bold"]}],
["Revenue > 1000000", {"class": ["green"]}]
]
highlight={
("East", "Satisfaction"): ["blue", "bold"]
} %}
--theme default|dark.themes/ and editing variables (slide size, padding, fonts, colors, table deltas).
examples/gslides_demo.py and provide credentials via env or a local credentials.json.CLI (planned console script) — once on PyPI
pip install slide-generator
slidegen examples/demo_content.md \
-o output/first_deck.pptx \
--theme default
CLI (from source, today)
python -m slide_generator.generator examples/demo_content.md \
-o output/first_deck.pptx \
--theme default
You’ll find the deck under output/first_deck.pptx. To also generate a paginated HTML preview for visual verification, add --debug.
CLI
python -m slide_generator.generator examples/demo_content.md \
-o output/presentation.pptx \
--theme default
Python API
import asyncio
from pathlib import Path
from slide_generator.generator import SlideGenerator
markdown = Path("examples/demo_content.md").read_text(encoding="utf-8")
async def build():
gen = SlideGenerator(output_dir="output", theme="default")
out = await gen.generate(markdown, "output/from_api.pptx")
print("Wrote:", out)
asyncio.run(build())
Notebook workflow (see examples/notebook_example.ipynb for full demo)
from pathlib import Path
from slide_generator.notebook import SlideNotebook
notebook = SlideNotebook(output_dir="output", theme="default", debug=False, base_dir=Path("examples"))
notebook.new_slide("""
# Quarterly Performance
{% figure "create_sales_chart" width=0.8 caption="Quarterly performance" %}
{% table "regional_data" order_by="Revenue" desc=true %}
""")
notebook.save_sync("output/notebook_example_default.pptx")
Examples
python examples/comprehensive_demo.pypython examples/gslides_demo.pyPlanned CLI and Extras
slidegen (equivalent to python -m slide_generator.generator)slide-generator[gslides] for Google Slides dependencies, slide-generator[math] for LaTeX/KaTeX renderingContributions are welcome. See CONTRIBUTING.md.