- ๐ Support for plots, widgets, and rich media
- ๐จ Customizable themes and layouts
- ๐ฑ Responsive design for various screen sizes
- ๐ค Export to HTML/PDF (limited content type)
- ๐ฏ Frame-by-frame animations
- ๐ Speaker notes support
- ๐ Markdown file synchronization
- โ๏ธ Drawing support during presentations
- Install:
pip install ipyslides # Basic installation
pip install ipyslides[extra] # Full features
- Create Slides:
import ipyslides as isd
slides = isd.Slides()
# Add content programmatically
slides.build(-1, """
# My First Slide
- Point 1
- Point 2
$E = mc^2$
""")
# Or use cell magic
%%slide 0
# Title Slide
Welcome to IPySlides!
- Run Examples:
slides.docs() # View documentation
slides.demo() # See demo presentation
Support for various content types including:
- ๐ Extended Markdown, see
slides.xmd_syntax
- ๐ Plots (Matplotlib, Plotly, Altair)
- ๐ง Interactive Widgets
- ๐ท Images and Media
- โ LaTeX Equations
- ยฉ๏ธ Citations and References
- ๐ป Auto update variables in markdown
- ๐ฅ Videos (YouTube, local)
- ๐ฎ Enhanced interactive widgets (with fullscreen support, thanks to
anywidget
)
import numpy as np
from ipywidgets import HTML
@slides.ei.interact(html = HTML(), amplitude= (0, 2),frequency=(0, 5))
def plot(html, amplitude, frequency):
x = np.linspace(0, 2*np.pi, 100)
y = amplitude * np.sin(frequency * x)
plt.plot(x, y)
html.value = slides.plt2html(). value
- For comprehensive dashbords, subclass
InteractBase
import numpy as np
from ipywidgets import HTML
from ipyslides.interaction import InteractBase, callback
class MyDashboard(InteractBase):
def _interactive_params(self): # Define interactive parameters
return {
'html': HTML(),
'amplitude': (0, 2),
'frequency': (0, 5),
}
@callback
def plot(self, html, amplitude, frequency):
x = np.linspace(0, 2*np.pi, 100)
y = amplitude * np.sin(frequency * x)
plt.plot(x, y)
html.value = slides.plt2html().value
@callback('out-text')
def text(self, amplitude, frequency):
print(f"Amplitude: {amplitude}\n Frequency: {frequency}")
dash = MyDashboard(auto_update=False)
dash.relayout( # can be set via app_layout parameter
left_sidebar = dash.groups.controls,
center = ['html','out-text'], # out-plot, out-text collected in center
pane_widths = [3,5,0]
)
dash.set_css(
main = { # can be set via grid_css parameter
'grid-gap': '4px', 'margin': '8px',
'.left-sidebar': {'background': '#eee','border-radius': '8px'},
},
center = { # can be set via grid_css parameter targetting '> .center'
'> *': {'background-color': 'whitesmoke', 'border-radius': '8px','padding':'8px'}
'grid-template-columns': '5fr 3fr', # side-by-side layout for outputs
'grid-gap': '4px', # central grid gap
'> *': {'background-color': 'whitesmoke', 'border-radius': '8px','padding':'8px'}
})
display(dash)
See more examples in einteract repository and on
.
- And much more!
-
HTML Export
Useslides.export_html
to build static slides that you can print as well. Read export details in settings panel, where you can also export with a single click. -
PDF Export
- Export to HTML first
- Open in Chrome/Edge browser
- Use Print โ Save as PDF and enable background graphics
-
Custom Objects Serialization:
- You can serialize custom objects to HTML using
Slides.serializer
API. - You can extend markdown syntax using
Slides.extender
API. See some good extensions to add from PyMdown.
- You can serialize custom objects to HTML using
-
Speaker Notes: Enable via Settings Panel โ Show Notes and add notes via
slides.notes
. -
Custom Styling:
slides.set_css({ # on all slides or slide[index,].set_css() per slide
'--bg1-color': '#f0f0f0',
'--text-color': '#333'
})
- File Sync:
Live edit a linked markdown file that updates slides in real-time using
slides.sync_with_file
.
-
Markdown Cells:
- Jupyter markdown cells are not processed by IPySlides
- Instead, you can use
%%slide number -m
cell magic and link an external markdown file usingslides.sync_with_file
-
Slide Numbering:
- Use
-1
for automatic slide numbering - Manual numbering requires careful tracking to avoid overwriting slides
- Use
-
Speaker Notes:
- Experimental feature - use with caution
git clone https://github.com/asaboor-gh/ipyslides.git
cd ipyslides
pip install -e .
Contributions are welcome! Please feel free to submit a Pull Request.
- Full documentation:
slides.docs()
- Examples:
slides.demo()
- GitHub Repository
Made with โค๏ธ by Abdul Saboor