scientific-skills/scientific-slides/assets/powerpoint_design_guide.md
This guide provides comprehensive instructions for creating professional scientific presentations using PowerPoint, with emphasis on integration with the pptx skill for programmatic creation and best practices for scientific content.
CRITICAL: Avoid dry, text-heavy presentations. Scientific slides should be:
Anti-Pattern Warning: All-bullet-point slides with black text on white background = instant boredom and forgotten science.
For complete technical documentation on PowerPoint creation, refer to:
document-skills/pptx/SKILL.mdpptx/html2pptx.mdpptx/ooxml.mdBest for: Creating presentations from scratch with custom designs and data visualizations.
Workflow:
document-skills/pptx/SKILL.md completelyhtml2pptx() functionExample Structure:
const pptx = new PptxGenJS();
// Add title slide
const slide1 = pptx.addSlide();
slide1.addText("Your Title", {
x: 1, y: 2, w: 8, h: 1,
fontSize: 44, bold: true, align: "center"
});
// Add content slide with figure
const slide2 = pptx.addSlide();
slide2.addText("Results", { x: 0.5, y: 0.5, fontSize: 32 });
slide2.addImage({ path: "figure.png", x: 1, y: 1.5, w: 8, h: 4 });
pptx.writeFile({ fileName: "presentation.pptx" });
Best for: Using existing PowerPoint templates or editing existing presentations.
Workflow:
scripts/rearrange.py to duplicate/reorder slidesscripts/inventory.py to extract textscripts/replace.py to update contentKey Scripts:
rearrange.py: Duplicate and reorder slidesinventory.py: Extract all text shapesreplace.py: Apply text replacementsthumbnail.py: Visual validationSlide Master Setup:
Standard Layouts:
Title Slide:
┌─────────────────────────┐
│ │
│ Presentation Title │
│ Your Name │
│ Institution │
│ Date / Conference │
│ │
└─────────────────────────┘
Content Slide:
┌─────────────────────────┐
│ Slide Title │
├─────────────────────────┤
│ • Bullet point 1 │
│ • Bullet point 2 │
│ • Bullet point 3 │
│ │
│ [Optional figure] │
└─────────────────────────┘
Two-Column Slide:
┌─────────────────────────┐
│ Slide Title │
├───────────┬─────────────┤
│ │ │
│ Text │ Figure │
│ Content │ or │
│ │ Data │
└───────────┴─────────────┘
Full-Figure Slide:
┌─────────────────────────┐
│ Figure Title (small) │
├─────────────────────────┤
│ │
│ Large Figure or │
│ Visualization │
│ │
└─────────────────────────┘
Font Selection:
Font Sizes:
Text Formatting:
The 6×6 Rule:
Selecting Colors:
Consider your subject matter and audience:
Example Palettes:
Classic Scientific:
Modern Research:
High Contrast (for large venues):
Accessibility Guidelines:
Figures and Images:
Data Visualizations:
Icons and Shapes:
When to Use:
When to Avoid:
Recommended Animations:
Slide Transitions:
Step 0: Choose Modern Color Palette Based on Topic
CRITICAL: Select colors that reflect your subject matter, not generic defaults.
Topic-Based Palette Examples:
See full palette options in pptx skill SKILL.md (lines 76-94).
Step 1: Plan Design System (With Modern Palette)
// Define design constants with MODERN colors (not defaults)
const DESIGN = {
colors: {
primary: "0A9396", // Teal (modern, engaging)
accent: "EE6C4D", // Coral (attention-grabbing)
text: "2C2C2C", // Charcoal (readable)
background: "FFFFFF" // White (clean)
},
fonts: {
title: { size: 40, bold: true, face: "Arial" },
heading: { size: 28, bold: true, face: "Arial" },
body: { size: 24, face: "Arial" },
caption: { size: 16, face: "Arial" }
},
layout: {
margin: 0.5,
titleY: 0.5,
contentY: 1.5
}
};
Step 2: Create Reusable Functions
function addTitleSlide(pptx, title, subtitle, author) {
const slide = pptx.addSlide();
slide.background = { color: DESIGN.colors.primary };
slide.addText(title, {
x: 1, y: 2, w: 8, h: 1,
fontSize: 44, bold: true, color: "FFFFFF",
align: "center"
});
slide.addText(subtitle, {
x: 1, y: 3.2, w: 8, h: 0.5,
fontSize: 24, color: "FFFFFF",
align: "center"
});
slide.addText(author, {
x: 1, y: 4, w: 8, h: 0.4,
fontSize: 18, color: "FFFFFF",
align: "center"
});
return slide;
}
function addContentSlide(pptx, title, bullets) {
const slide = pptx.addSlide();
slide.addText(title, {
x: DESIGN.layout.margin,
y: DESIGN.layout.titleY,
w: 9,
h: 0.5,
...DESIGN.fonts.heading,
color: DESIGN.colors.primary
});
slide.addText(bullets, {
x: DESIGN.layout.margin,
y: DESIGN.layout.contentY,
w: 9,
h: 3,
...DESIGN.fonts.body,
bullet: true
});
return slide;
}
Step 3: Build Presentation (Visual-First Approach)
const pptx = new PptxGenJS();
pptx.layout = "LAYOUT_16x9";
// Title slide with background image or color block
const titleSlide = pptx.addSlide();
titleSlide.background = { color: DESIGN.colors.primary }; // Bold color background
addTitleSlide(
pptx,
"Research Title",
"Subtitle or Conference Name",
"Your Name • Institution • Date"
);
// Introduction with image/icon
const introSlide = pptx.addSlide();
introSlide.addImage({
path: "concept_image.png", // Visual representation of concept
x: 5, y: 1.5, w: 4, h: 3
});
introSlide.addText("Background", { x: 0.5, y: 0.5, fontSize: 36, bold: true });
introSlide.addText([
"Key context point 1 (AuthorA, 2023)",
"Key context point 2 (AuthorB, 2022)",
"Research gap identified (AuthorC, 2021)"
], {
x: 0.5, y: 1.5, w: 4, h: 2,
fontSize: 24, bullet: true
});
// Results slide - FIGURE DOMINATES
const resultsSlide = pptx.addSlide();
resultsSlide.addText("Main Finding", { x: 0.5, y: 0.5, fontSize: 32, bold: true });
resultsSlide.addImage({
path: "results_figure.png", // Large, clear figure
x: 0.5, y: 1.5, w: 9, h: 4 // Nearly full slide
});
// Minimal text annotation only
resultsSlide.addText("34% improvement (p < 0.001)", {
x: 7, y: 1, fontSize: 20, color: DESIGN.colors.accent, bold: true
});
// Save
pptx.writeFile({ fileName: "presentation.pptx" });
Key Changes from Dry Presentations:
Equations (as images):
// Render equation as PNG first (using LaTeX or online tool)
// Then add to slide
slide.addImage({
path: "equation.png",
x: 2, y: 3, w: 6, h: 1
});
Tables:
slide.addTable([
[
{ text: "Method", options: { bold: true } },
{ text: "Accuracy", options: { bold: true } },
{ text: "Time (s)", options: { bold: true } }
],
["Method A", "0.85", "10"],
["Method B", "0.92", "25"],
["Method C", "0.88", "15"]
], {
x: 2, y: 2, w: 6,
fontSize: 20,
border: { pt: 1, color: "888888" },
fill: { color: "F5F5F5" }
});
Charts:
// Bar chart
slide.addChart(pptx.ChartType.bar, [
{
name: "Control",
labels: ["Metric 1", "Metric 2", "Metric 3"],
values: [45, 67, 82]
},
{
name: "Treatment",
labels: ["Metric 1", "Metric 2", "Metric 3"],
values: [52, 78, 91]
}
], {
x: 1, y: 1.5, w: 8, h: 4,
chartColors: [DESIGN.colors.primary, DESIGN.colors.accent],
showTitle: false,
showLegend: true,
fontSize: 18
});
After creating presentation:
# Create thumbnail grid for quick review
python scripts/thumbnail.py presentation.pptx review/thumbnails --cols 4
# Or for individual slides
python scripts/thumbnail.py presentation.pptx review/slide
For each slide, check:
Text Overflow:
Element Overlap:
Poor Contrast:
If you have an existing template:
python scripts/inventory.py template.pptx inventory.json
python scripts/thumbnail.py template.pptx template_review
Analyze layouts and document which slides to use
Rearrange slides:
python scripts/rearrange.py template.pptx working.pptx 0,5,5,12,18,22
python scripts/replace.py working.pptx replacements.json output.pptx
Color Contrast:
Color Blindness:
Readability:
With Scientific Writing:
With Data Visualization:
With Research Lookup:
PowerPoint Tutorials:
Design Tools:
PPTX Skill Documentation:
document-skills/pptx/SKILL.md: Main documentationdocument-skills/pptx/html2pptx.md: HTML to PPTX workflowdocument-skills/pptx/ooxml.md: Advanced editingdocument-skills/pptx/scripts/: Utility scripts| Element | Minimum | Recommended |
|---|---|---|
| Title slide | 40pt | 44-54pt |
| Slide title | 28pt | 32-40pt |
| Body text | 18pt | 24-28pt |
| Caption | 14pt | 16-20pt |
| Footer | 10pt | 10-12pt |
Problem: Text appears cut off
Problem: Figures are blurry
Problem: Colors look different when projected
Problem: File size too large
Problem: Animations not working
Effective PowerPoint presentations for science require:
Use the pptx skill for programmatic creation and the visual review workflow to ensure professional quality before presenting.