Chapter 07: Reaction Mechanism Arndt Eistert reaction, Baeyer villiger reaction, diels elder reaction, Grignard reaction, metal hydride reduction, wolf Kishner reduction, friedel craft reaction, Perkin reaction, Cannizzaros reaction & mannich reaction Unit 08: reactive intermediate and free radicals stability of free radicals, hemolytic and heterolytic fission, carbene and nitrene, carbanions Unit 09: carbonium rearrangements Pinnacle pinocolon rearrangement, Wagner meerwein rearrangement, Wolf rearrangement hofman rearrangement, beckmann rearrangements, Unit 10: Carbanions rearrangements Condensation reaction, Favorski rearrangement, and witting rearrangement Note: create a study plan from 8:00 a.m. to 9:00 p.m. which have three slots divide this content in these slots and also mention the time Note I have just one day you can increase time 9pm to 11:55pm just At the end create a Image
A clean, modern one-day chemistry study schedule poster. Title at top: "Organic Chemistry - One Day Study Plan". Three colored slots arranged vertically with a timeline on the left side. SLOT 1 (Morning, orange): 8:00 AM - 12:30 PM, Unit 07 Reaction Mechanisms - lists Arndt-Eistert, Baeyer-Villiger, Diels-Alder, Grignard, Metal Hydride Reduction, Wolff-Kishner, Friedel-Crafts, Perkin, Cannizzaro, Mannich. Lunch Break 12:30 - 1:30 PM (grey). SLOT 2 (Afternoon, blue): 1:30 PM - 5:30 PM, Units 08 and 09 - Reactive Intermediates and Carbonium Rearrangements - lists Free Radicals, Homolytic/Heterolytic Fission, Carbene, Nitrene, Carbanions, Pinacol-Pinacolone, Wagner-Meerwein, Wolff, Hofmann, Beckmann. Evening Break 5:30 - 6:30 PM (grey). SLOT 3 (Night, purple): 6:30 PM - 11:55 PM, Unit 10 Carbanion Rearrangements plus Revision - Condensation, Favorskii, Wittig, Full Unit Revision, Self-Test. Chemistry molecule decorations in corners. Professional academic style with white background.
| Slot | Time | Duration | Content |
|---|---|---|---|
| Slot 1 | 8:00 AM - 12:30 PM | 4.5 hrs | Unit 07 - All 10 Reactions |
| Lunch | 12:30 - 1:30 PM | 1 hr | Break |
| Slot 2 | 1:30 PM - 5:30 PM | 4 hrs | Unit 08 + Unit 09 |
| Evening | 5:30 - 6:30 PM | 1 hr | Break |
| Slot 3 | 6:30 PM - 11:55 PM | 5.5 hrs | Unit 10 + Full Revision + Self-Test |
Generate a PDF summary sheet of all reaction mechanisms for quick review
ls -la /home/daytona/workspace/ 2>/dev/null || echo "workspace does not exist yeβ¦
mkdir -p /home/daytona/workspace/organic-chem-summary
~/organic-chem-summary/generate_pdf.py
from reportlab.lib.pagesizes import A4
from reportlab.lib import colors
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.platypus import (
SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle,
HRFlowable, PageBreak, KeepTogether
)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
OUTPUT = "/home/daytona/workspace/organic-chem-summary/Organic_Chemistry_Reaction_Mechanisms.pdf"
# ββ Colour palette ββββββββββββββββββββββββββββββββββββββββββββββββββ
C_DARK = colors.HexColor("#1a1a2e")
C_BLUE = colors.HexColor("#16213e")
C_ACCENT = colors.HexColor("#e94560")
C_GOLD = colors.HexColor("#f5a623")
C_GREEN = colors.HexColor("#27ae60")
C_PURPLE = colors.HexColor("#8e44ad")
C_TEAL = colors.HexColor("#1abc9c")
C_ORANGE = colors.HexColor("#e67e22")
C_LTGREY = colors.HexColor("#f4f6f8")
C_WHITE = colors.white
C_BLACK = colors.HexColor("#1c1c1c")
# ββ Styles ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
styles = getSampleStyleSheet()
def make_style(name, parent='Normal', **kw):
return ParagraphStyle(name, parent=styles[parent], **kw)
cover_title = make_style('CoverTitle', 'Title', fontSize=28, textColor=C_WHITE,
alignment=TA_CENTER, spaceAfter=6, leading=34)
cover_sub = make_style('CoverSub', 'Normal', fontSize=13, textColor=C_GOLD,
alignment=TA_CENTER, spaceAfter=4)
cover_date = make_style('CoverDate', 'Normal', fontSize=10, textColor=colors.HexColor("#aaaaaa"),
alignment=TA_CENTER, spaceAfter=0)
unit_hdr = make_style('UnitHdr', 'Heading1', fontSize=14, textColor=C_WHITE,
spaceAfter=4, spaceBefore=10, leading=18)
rxn_title = make_style('RxnTitle', 'Heading2', fontSize=11, textColor=C_DARK,
spaceBefore=8, spaceAfter=2, leading=14)
rxn_label = make_style('RxnLabel', 'Normal', fontSize=9, textColor=C_WHITE,
leading=11)
body_style = make_style('Body', 'Normal', fontSize=9, textColor=C_BLACK,
leading=13, spaceAfter=2, alignment=TA_JUSTIFY)
bullet_style = make_style('Bullet', 'Normal', fontSize=9, textColor=C_BLACK,
leading=13, leftIndent=12, spaceAfter=1,
bulletIndent=4)
mech_style = make_style('Mech', 'Normal', fontSize=8.5, textColor=colors.HexColor("#2c3e50"),
leading=12, leftIndent=14, spaceAfter=1,
fontName='Courier')
key_style = make_style('Key', 'Normal', fontSize=9, textColor=C_WHITE,
leading=12, spaceAfter=1)
note_style = make_style('Note', 'Normal', fontSize=8.5, textColor=colors.HexColor("#555555"),
leading=12, leftIndent=10, spaceAfter=2,
fontName='Helvetica-Oblique')
# ββ Helper builders βββββββββββββββββββββββββββββββββββββββββββββββββ
def unit_header(text, bg=C_BLUE):
data = [[Paragraph(text, unit_hdr)]]
t = Table(data, colWidths=[17*cm])
t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), bg),
('TOPPADDING', (0,0), (-1,-1), 8),
('BOTTOMPADDING', (0,0), (-1,-1), 8),
('LEFTPADDING', (0,0), (-1,-1), 12),
('ROUNDEDCORNERS', [4,4,4,4]),
]))
return t
def reaction_block(number, name, reagents, mechanism_steps, key_points,
note=None, badge_color=C_ACCENT):
"""Returns a KeepTogether block for one named reaction."""
elems = []
# Badge + title row
badge_data = [[Paragraph(f"<b>{number}</b>", rxn_label), Paragraph(f"<b>{name}</b>", rxn_title)]]
badge_t = Table(badge_data, colWidths=[1.2*cm, 15.8*cm])
badge_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,0), badge_color),
('BACKGROUND', (1,0), (1,0), C_LTGREY),
('VALIGN', (0,0), (-1,-1), 'MIDDLE'),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (0,0), 4),
('LEFTPADDING', (1,0), (1,0), 8),
('ROUNDEDCORNERS', [3,3,3,3]),
]))
elems.append(badge_t)
# Reagents / conditions row
if reagents:
elems.append(Spacer(1, 3))
row = [[Paragraph("<b>Reagents/Conditions:</b>", make_style('tmp','Normal',fontSize=8.5,textColor=C_TEAL,leading=11)),
Paragraph(reagents, body_style)]]
rt = Table(row, colWidths=[4.5*cm, 12.5*cm])
rt.setStyle(TableStyle([
('TOPPADDING', (0,0), (-1,-1), 2),
('BOTTOMPADDING', (0,0), (-1,-1), 2),
('LEFTPADDING', (0,0), (-1,-1), 0),
]))
elems.append(rt)
# Mechanism steps
elems.append(Spacer(1, 3))
elems.append(Paragraph("<b>Mechanism Steps:</b>", make_style('tmp2','Normal',fontSize=8.5,textColor=C_PURPLE,leading=11)))
for step in mechanism_steps:
elems.append(Paragraph(f"→ {step}", mech_style))
# Key points box
if key_points:
elems.append(Spacer(1, 4))
kp_rows = [[Paragraph(f"• {kp}", key_style)] for kp in key_points]
kp_t = Table(kp_rows, colWidths=[17*cm])
kp_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C_DARK),
('TOPPADDING', (0,0), (-1,-1), 3),
('BOTTOMPADDING', (0,0), (-1,-1), 3),
('LEFTPADDING', (0,0), (-1,-1), 10),
('ROUNDEDCORNERS', [3,3,3,3]),
]))
elems.append(kp_t)
# Optional note
if note:
elems.append(Paragraph(f"<i>Note: {note}</i>", note_style))
elems.append(Spacer(1, 8))
elems.append(HRFlowable(width="100%", thickness=0.4, color=colors.HexColor("#dddddd")))
elems.append(Spacer(1, 4))
return KeepTogether(elems)
# ββ Reaction Data ββββββββββββββββββββββββββββββββββββββββββββββββββββ
UNIT07_REACTIONS = [
{
"number": "01", "name": "Arndt-Eistert Reaction",
"badge_color": C_ACCENT,
"reagents": "Acid chloride + CH2N2 (diazomethane), then Ag2O/H2O (Wolff rearrangement)",
"steps": [
"Acid chloride (RCOCl) reacts with diazomethane -> alpha-diazoketone (RCOCHN2)",
"Ag2O catalyst triggers Wolff rearrangement: diazoketone -> ketene (R-CH=C=O) + N2",
"Ketene reacts with nucleophile (H2O, ROH, NH3) -> homologated acid/ester/amide",
],
"keys": [
"Net result: converts RCO-X to RCH2-COOH (one carbon homologation)",
"Wolff rearrangement = 1,2-shift in carbene intermediate",
"Ag2O or UV light can catalyze the Wolff step",
],
"note": "Connects to Unit 09 - Wolff rearrangement is a carbene-driven 1,2-shift",
},
{
"number": "02", "name": "Baeyer-Villiger Reaction",
"badge_color": C_ORANGE,
"reagents": "Ketone/aldehyde + peracid (mCPBA, peracetic acid) in CH2Cl2",
"steps": [
"Peracid attacks carbonyl carbon -> tetrahedral Criegee intermediate",
"Migration of group antiperiplanar to O-O bond (concerted)",
"Loss of carboxylic acid -> ester (from ketone) or formate (from aldehyde)",
],
"keys": [
"Migratory aptitude: 3-deg > 2-deg > aryl > 1-deg > methyl > H",
"More substituted / electron-rich group migrates preferentially",
"Stereospecific: configuration at migrating carbon is retained",
],
"note": None,
},
{
"number": "03", "name": "Diels-Alder Reaction",
"badge_color": C_GREEN,
"reagents": "Conjugated diene (s-cis) + dienophile (electron-poor alkene); often no catalyst",
"steps": [
"Diene adopts s-cis conformation (required for orbital overlap)",
"Concerted [4+2] cycloaddition: HOMO(diene) + LUMO(dienophile) overlap",
"New sigma bonds form simultaneously; six-membered ring product",
],
"keys": [
"Endo rule: endo product kinetically favored (secondary orbital interactions)",
"syn addition: substituents on dienophile retain relative stereochemistry",
"Electron-withdrawing groups on dienophile accelerate reaction",
"Inverse electron demand: electron-rich dienophile + electron-poor diene",
],
"note": None,
},
{
"number": "04", "name": "Grignard Reaction",
"badge_color": C_TEAL,
"reagents": "R-X + Mg in dry ether -> RMgX; then carbonyl compound, then H3O+",
"steps": [
"Mg inserts into C-X bond -> organomagnesium halide (RMgX) in ether",
"RMgX acts as carbanion (R-) nucleophile; attacks electrophilic carbonyl carbon",
"Tetrahedral alkoxide intermediate forms; protonation (H3O+) gives alcohol",
],
"keys": [
"HCHO -> 1-deg alcohol; RCHO -> 2-deg; R2CO -> 3-deg; CO2 -> carboxylic acid",
"Strict anhydrous conditions: water/protic solvents destroy Grignard",
"Cannot have acidic H (OH, NH, COOH) in molecule",
],
"note": None,
},
{
"number": "05", "name": "Metal Hydride Reduction",
"badge_color": C_PURPLE,
"reagents": "LiAlH4 (LAH) in dry THF/ether, OR NaBH4 in MeOH/EtOH",
"steps": [
"Hydride (H-) from metal hydride attacks electrophilic carbonyl carbon",
"Aluminum/boron alkoxide intermediate forms",
"Aqueous workup releases alcohol product",
],
"keys": [
"LiAlH4: reduces acids, esters, amides, ketones, aldehydes, epoxides (stronger)",
"NaBH4: selectively reduces ketones & aldehydes only (milder, protic-solvent safe)",
"DIBAL-H at -78C: reduces esters to aldehydes (stops at hemiacetal stage)",
],
"note": None,
},
{
"number": "06", "name": "Wolff-Kishner Reduction",
"badge_color": C_BLUE,
"reagents": "Ketone/aldehyde + H2NNH2 (hydrazine) + KOH in ethylene glycol, heat",
"steps": [
"Carbonyl condenses with hydrazine -> hydrazone (C=NNH2) + H2O",
"Strong base (KOH) deprotonates hydrazone -> resonance-stabilized anion",
"Proton transfer and N2 elimination -> carbanion -> protonation -> alkane",
],
"keys": [
"Converts C=O directly to CH2 (deoxygenation)",
"Complements Clemmensen (Zn/Hg, HCl) - use Wolff-Kishner for acid-sensitive substrates",
"Huang-Minlon modification: simpler workup using excess hydrazine",
],
"note": None,
},
{
"number": "07", "name": "Friedel-Crafts Reaction",
"badge_color": C_ACCENT,
"reagents": "Alkylation: R-X + AlCl3 | Acylation: RCOCl + AlCl3, benzene/aromatic ring",
"steps": [
"Lewis acid (AlCl3) activates R-X or RCOCl -> electrophile (carbocation or acylium)",
"Electrophile attacks pi-electron cloud of benzene -> sigma complex (arenium ion)",
"Proton loss restores aromaticity -> product",
],
"keys": [
"Alkylation limitation: carbocation rearrangements give unexpected products",
"Acylation gives stable acylium; no rearrangement; then Clemmensen -> alkane",
"Deactivated rings (NO2, COR, COOH) do not undergo FC reactions",
"Multiple alkylation problem in alkylation (product more reactive than starting material)",
],
"note": None,
},
{
"number": "08", "name": "Perkin Reaction",
"badge_color": C_GREEN,
"reagents": "Aromatic aldehyde + acid anhydride + sodium salt of the acid (base), heat",
"steps": [
"Base (carboxylate) deprotonates alpha-C of anhydride -> enolate (nucleophile)",
"Enolate attacks aldehyde carbonyl -> beta-hydroxy intermediate",
"Intramolecular acylation -> mixed anhydride",
"Elimination and hydrolysis -> alpha,beta-unsaturated carboxylic acid",
],
"keys": [
"Gives alpha,beta-unsaturated (cinnamic acid-type) products",
"Only aromatic or non-enolizable aldehydes work (no self-condensation)",
"Knoevenagel is analogous but uses active methylene compounds",
],
"note": None,
},
{
"number": "09", "name": "Cannizzaro Reaction",
"badge_color": C_ORANGE,
"reagents": "Non-enolizable aldehyde (no alpha-H) + conc. NaOH (50%)",
"steps": [
"OH- attacks aldehyde -> tetrahedral alkoxide intermediate",
"Hydride transfer (intramolecular or intermolecular) from one aldehyde to another",
"One molecule oxidized -> carboxylate (COO-)",
"Other molecule reduced -> primary alcohol",
],
"keys": [
"Disproportionation: same compound is both oxidized and reduced",
"Requires NO alpha-H (formaldehyde, benzaldehyde, pivaldehyde)",
"Cross-Cannizzaro: formaldehyde preferentially oxidized (best hydride donor)",
],
"note": None,
},
{
"number": "10", "name": "Mannich Reaction",
"badge_color": C_PURPLE,
"reagents": "Active methylene compound + formaldehyde + 2-deg amine (or NH3), acid catalyst",
"steps": [
"Amine + formaldehyde -> iminium ion (R2N+=CH2) - electrophilic",
"Active methylene compound (beta-keto ester, ketone) forms enol/enolate",
"Enol/enolate attacks iminium ion -> beta-amino carbonyl (Mannich base)",
],
"keys": [
"Three-component condensation: carbonyl + amine + CH-acidic compound",
"Mannich bases are beta-amino carbonyl compounds",
"Reverse Mannich (retro-Mannich) used in synthesis for ring fragmentation",
"Key in synthesis of alkaloids and pharmaceutical intermediates",
],
"note": None,
},
]
UNIT08_REACTIONS = [
{
"number": "11", "name": "Homolytic vs Heterolytic Fission",
"badge_color": C_TEAL,
"reagents": "Bond breaking under radical conditions (homolytic) or ionic conditions (heterolytic)",
"steps": [
"Homolytic: A:B -> A* + B* (one electron to each atom - free radicals formed)",
"Heterolytic: A:B -> A(+) + B(:) or A(:) + B(+) (both electrons to one atom)",
"Homolytic favored by: heat, UV, nonpolar solvents, weak bonds",
"Heterolytic favored by: polar solvents, electronegativity difference",
],
"keys": [
"Homolytic -> free radicals; heterolytic -> ions (carbocations/carbanions)",
"Bond dissociation energy (BDE) determines ease of homolytic cleavage",
"Radical chain reactions: initiation -> propagation -> termination",
],
"note": None,
},
{
"number": "12", "name": "Stability of Free Radicals",
"badge_color": C_ACCENT,
"reagents": "Generated by homolytic fission of C-H or C-X bonds",
"steps": [
"Radical stabilized by hyperconjugation (adjacent C-H sigma bonds donate into SOMO)",
"Resonance delocalization further stabilizes allylic/benzylic radicals",
"More substituents = more hyperconjugation = greater stability",
],
"keys": [
"Stability order: 3-deg > 2-deg > 1-deg > methyl radical",
"Allylic = benzylic >> 3-deg > 2-deg > 1-deg > methyl > vinyl",
"Captodative effect: radical stabilized by both EWG and EDG simultaneously",
],
"note": None,
},
{
"number": "13", "name": "Carbene",
"badge_color": C_GREEN,
"reagents": "CHCl2 + strong base; or photolysis/thermolysis of diazo compounds/ketene",
"steps": [
"Singlet carbene: paired electrons in sp2 orbital (empty p orbital); highly reactive",
"Triplet carbene: two unpaired electrons in separate orbitals (diradical); less reactive",
"Singlet: concerted stereospecific addition to alkenes -> cyclopropane",
"Triplet: stepwise (diradical) addition -> non-stereospecific cyclopropane",
],
"keys": [
"Singlet carbene: insertion into C-H bonds, cyclopropanation (stereospecific syn)",
"Triplet carbene: behaves like diradical; non-stereospecific addition",
"Simmons-Smith: :CH2 from Zn/CH2I2 -> cyclopropanation without free carbene",
"Reimer-Tiemann reaction uses :CCl2 carbene intermediate",
],
"note": None,
},
{
"number": "14", "name": "Nitrene",
"badge_color": C_ORANGE,
"reagents": "Thermal/photolytic decomposition of azides (R-N3) or nitroso compounds",
"steps": [
"R-N3 (azide) -> heat/hv -> R-N: (nitrene) + N2",
"Singlet nitrene: concerted insertion into N-H, C-H bonds; ring expansion",
"Triplet nitrene: abstracts hydrogen (like carbene triplet); diradical behavior",
],
"keys": [
"Nitrene is nitrogen analog of carbene (neutral, monovalent, 6 electrons on N)",
"Singlet nitrene: stereospecific C-H and N-H insertion",
"Used in Hofmann-type rearrangements via isocyanate intermediates",
"Photolysis of acyl azides -> isocyanates (Curtius-type, photochemical)",
],
"note": None,
},
{
"number": "15", "name": "Carbanions",
"badge_color": C_PURPLE,
"reagents": "Strong base (BuLi, NaNH2, NaH) removes acidic proton; or organometallic formation",
"steps": [
"R-H + strong base -> R(-) + BH (carbanion generated at sp3 carbon)",
"Stability governed by: inductive effects, hybridization, resonance",
"sp > sp2 > sp3 (more s-character = greater stability of carbanion)",
],
"keys": [
"Stabilized by: EWG groups (CN, COR, NO2), resonance delocalization",
"Destabilized by: EDG groups (alkyl groups donate electrons)",
"pKa order: terminal alkyne (25) > NH3 (38) > alkane (~50)",
"Carbanions are nucleophiles and bases; react with electrophilic carbons",
],
"note": None,
},
]
UNIT09_REACTIONS = [
{
"number": "16", "name": "Pinacol-Pinacolone Rearrangement",
"badge_color": C_ACCENT,
"reagents": "1,2-diol (pinacol) + dilute H2SO4 (acid catalyst), heat",
"steps": [
"Protonation of one OH group -> oxonium ion",
"Loss of water -> tertiary carbocation (most stable)",
"1,2-alkyl or aryl shift (migrates from adjacent C to carbocation center)",
"Loss of proton from remaining OH -> pinacolone (ketone product)",
],
"keys": [
"1,2-diol -> ketone; net: dehydration + 1,2-shift",
"More substituted carbocation formed first (driving force)",
"Migratory aptitude: aryl > alkyl; electron-rich groups migrate preferentially",
"Anti-periplanar geometry required for migration",
],
"note": "Classic example of 1,2-shift in carbocation chemistry",
},
{
"number": "17", "name": "Wagner-Meerwein Rearrangement",
"badge_color": C_ORANGE,
"reagents": "Solvolysis of alcohols/halides with neighboring group; SN1-type conditions",
"steps": [
"Ionization of leaving group -> primary/secondary carbocation",
"1,2-hydride or 1,2-alkyl shift -> more stable (2-deg or 3-deg) carbocation",
"Nucleophile captures rearranged carbocation -> rearranged product",
],
"keys": [
"Occurs whenever rearrangement gives a more stable carbocation",
"Can involve 1,2-H shift or 1,2-carbon (alkyl/aryl) shift",
"Responsible for 'abnormal' solvolysis products in norbornyl systems",
"Norbornyl cation: bridged non-classical carbocation (Brown vs Winstein debate)",
],
"note": None,
},
{
"number": "18", "name": "Wolff Rearrangement",
"badge_color": C_GREEN,
"reagents": "Alpha-diazoketone + heat or Ag2O catalyst (part of Arndt-Eistert)",
"steps": [
"Alpha-diazoketone loses N2 -> alpha-oxocarbene (Wolff carbene)",
"Concerted 1,2-acyl shift -> ketene",
"Ketene trapped by nucleophile (H2O, ROH, NHR2) -> homologated product",
],
"keys": [
"Wolff rearrangement = carbene -> ketene via 1,2-acyl migration",
"Photochemical or thermal; Ag2O lowers activation energy",
"Central to Arndt-Eistert one-carbon homologation sequence",
],
"note": "Direct link to Arndt-Eistert (Unit 07, Reaction 01)",
},
{
"number": "19", "name": "Hofmann Rearrangement",
"badge_color": C_TEAL,
"reagents": "Primary amide (RCONH2) + Br2 + NaOH (aqueous), then acidify",
"steps": [
"Br2 + NaOH brominate amide N -> N-bromoamide (RCONHB r)",
"Base deprotonates N-bromoamide -> N-bromoamide anion",
"Anion rearranges: R migrates to N (1,2-shift) + Br- leaves -> isocyanate (R-N=C=O)",
"Isocyanate hydrolyzes in aqueous NaOH -> primary amine (R-NH2) + CO2",
],
"keys": [
"Net: RCONH2 -> RNH2 (loss of one carbon as CO2)",
"Isocyanate is the key intermediate (can be isolated in anhydrous conditions)",
"Migration is stereospecific: configuration at R is retained",
"Analogous to Curtius (from acyl azide) and Lossen (from hydroxamic acid)",
],
"note": None,
},
{
"number": "20", "name": "Beckmann Rearrangement",
"badge_color": C_PURPLE,
"reagents": "Ketoxime + PCl5, H2SO4, polyphosphoric acid, or SOCl2 (acid catalyst)",
"steps": [
"Protonation (or activation) of oxime OH -> good leaving group",
"Anti group (trans to OH) migrates from C to N as OH leaves (concerted)",
"Nitrilium ion intermediate forms",
"Water attacks nitrilium carbon -> amide (Beckmann product)",
],
"keys": [
"Anti group (anti to -OH) always migrates (stereospecific)",
"Cyclic ketoximes -> ring expansion (cyclopentanone oxime -> caprolactam, nylon-6)",
"E-oxime and Z-oxime give different amides",
"Industrial importance: cyclohexanone oxime -> caprolactam",
],
"note": None,
},
]
UNIT10_REACTIONS = [
{
"number": "21", "name": "Condensation Reactions (Aldol & Claisen)",
"badge_color": C_ACCENT,
"reagents": "Aldol: aldehyde/ketone + dil. NaOH or dil. HCl | Claisen: ester + NaOEt",
"steps": [
"Aldol: Base abstracts alpha-H -> enolate; enolate attacks carbonyl -> beta-hydroxy carbonyl",
"Aldol condensation: heating eliminates water -> alpha,beta-unsaturated carbonyl",
"Claisen: enolate of ester attacks another ester -> beta-ketoester after loss of OR-",
"Mixed (Directed) aldol: use LDA to form kinetic enolate exclusively",
],
"keys": [
"Aldol addition: gives beta-hydroxy carbonyl (no elimination)",
"Aldol condensation: gives alpha,beta-unsaturated carbonyl (after elimination)",
"Claisen condensation: ester + ester -> beta-ketoester",
"Dieckmann: intramolecular Claisen -> cyclic beta-ketoester",
],
"note": None,
},
{
"number": "22", "name": "Favorskii Rearrangement",
"badge_color": C_ORANGE,
"reagents": "Alpha-halo ketone + NaOH (or NaOR, NaNH2) - nucleophilic base",
"steps": [
"Base abstracts alpha-H (on side WITHOUT halogen) -> enolate",
"Enolate displaces halide intramolecularly -> cyclopropanone intermediate",
"Nucleophile (OH- or OR-) opens strained cyclopropanone ring",
"Ring opens to give rearranged acid/ester (ring contraction by one C if cyclic)",
],
"keys": [
"Alpha-halo ketone -> rearranged carboxylic acid/ester (carbon skeleton rearranges)",
"Cyclic alpha-halo ketones: ring contraction (6-membered -> 5-membered acid)",
"Semibenzilic mechanism: when no alpha-H on one side (1,2-acyl shift path)",
"Key test: presence of alpha-H on non-halogen side determines mechanism",
],
"note": "Carbanion-driven rearrangement (contrast with carbocation rearrangements in Unit 09)",
},
{
"number": "23", "name": "Wittig Reaction (Rearrangement)",
"badge_color": C_GREEN,
"reagents": "Phosphonium ylide (Ph3P=CHR) + aldehyde or ketone, THF or CH2Cl2",
"steps": [
"Ylide preparation: Ph3P + R-X -> phosphonium salt; strong base (BuLi) -> ylide (Ph3P=CR2)",
"Ylide (nucleophilic carbon) attacks carbonyl -> betaine intermediate (zwitterion)",
"Betaine cyclizes -> oxaphosphetane (4-membered ring)",
"[2+2] cycloreversion of oxaphosphetane -> alkene + Ph3P=O",
],
"keys": [
"Net: C=O + Ph3P=CR2 -> C=CR2 (replaces oxygen with carbon)",
"Stabilized ylides (EWG): give mostly E-alkene",
"Non-stabilized ylides (alkyl): give mostly Z-alkene (cis-selective)",
"Ph3P=O byproduct is the thermodynamic driving force",
"Horner-Wadsworth-Emmons (HWE): phosphonate ester variant; better E-selectivity",
],
"note": None,
},
]
# ββ Build PDF ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
doc = SimpleDocTemplate(
OUTPUT,
pagesize=A4,
rightMargin=2*cm, leftMargin=2*cm,
topMargin=1.5*cm, bottomMargin=1.5*cm,
title="Organic Chemistry Reaction Mechanisms",
author="Orris Study Planner",
subject="Quick Review Sheet - Units 07-10"
)
story = []
# ββ COVER PAGE ββ
cover_bg_data = [[Paragraph("ORGANIC CHEMISTRY", cover_title)],
[Paragraph("Reaction Mechanisms & Rearrangements", cover_sub)],
[Paragraph("Quick Review Sheet | Units 07 - 10", cover_sub)],
[Spacer(1, 0.3*cm)],
[HRFlowable(width="80%", thickness=1.5, color=C_GOLD)],
[Spacer(1, 0.3*cm)],
[Paragraph("23 Named Reactions | Reactive Intermediates | Rearrangements", cover_date)],
[Paragraph("Study Date: May 24, 2026", cover_date)],
]
cover_t = Table(cover_bg_data, colWidths=[17*cm])
cover_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,-1), C_DARK),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 20),
('ROUNDEDCORNERS', [8,8,8,8]),
]))
story.append(Spacer(1, 1.5*cm))
story.append(cover_t)
story.append(Spacer(1, 0.8*cm))
# Quick TOC
toc_data = [
[Paragraph("<b>Unit</b>", make_style('th','Normal',fontSize=9,textColor=C_WHITE,alignment=TA_CENTER)),
Paragraph("<b>Topic</b>", make_style('th2','Normal',fontSize=9,textColor=C_WHITE)),
Paragraph("<b>Reactions</b>", make_style('th3','Normal',fontSize=9,textColor=C_WHITE,alignment=TA_CENTER))],
[Paragraph("07", make_style('td','Normal',fontSize=9,textColor=C_DARK,alignment=TA_CENTER)),
Paragraph("Reaction Mechanisms", body_style),
Paragraph("01 - 10", make_style('td2','Normal',fontSize=9,textColor=C_DARK,alignment=TA_CENTER))],
[Paragraph("08", make_style('td','Normal',fontSize=9,textColor=C_DARK,alignment=TA_CENTER)),
Paragraph("Reactive Intermediates & Free Radicals", body_style),
Paragraph("11 - 15", make_style('td2','Normal',fontSize=9,textColor=C_DARK,alignment=TA_CENTER))],
[Paragraph("09", make_style('td','Normal',fontSize=9,textColor=C_DARK,alignment=TA_CENTER)),
Paragraph("Carbonium Ion Rearrangements", body_style),
Paragraph("16 - 20", make_style('td2','Normal',fontSize=9,textColor=C_DARK,alignment=TA_CENTER))],
[Paragraph("10", make_style('td','Normal',fontSize=9,textColor=C_DARK,alignment=TA_CENTER)),
Paragraph("Carbanion Rearrangements & Condensations", body_style),
Paragraph("21 - 23", make_style('td2','Normal',fontSize=9,textColor=C_DARK,alignment=TA_CENTER))],
]
toc_t = Table(toc_data, colWidths=[2*cm, 11*cm, 4*cm])
toc_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), C_BLUE),
('BACKGROUND', (0,1), (-1,-1), C_LTGREY),
('ROWBACKGROUNDS',(0,1), (-1,-1), [C_LTGREY, colors.white]),
('TOPPADDING', (0,0), (-1,-1), 6),
('BOTTOMPADDING', (0,0), (-1,-1), 6),
('LEFTPADDING', (0,0), (-1,-1), 8),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#cccccc")),
('ROUNDEDCORNERS', [4,4,4,4]),
]))
story.append(toc_t)
story.append(PageBreak())
# ββ UNIT 07 ββ
story.append(unit_header("UNIT 07 | Reaction Mechanisms (Reactions 01-10)", bg=C_ACCENT))
story.append(Spacer(1, 8))
for rx in UNIT07_REACTIONS:
story.append(reaction_block(
rx["number"], rx["name"],
rx["reagents"], rx["steps"], rx["keys"],
note=rx.get("note"), badge_color=rx.get("badge_color", C_ACCENT)
))
story.append(PageBreak())
# ββ UNIT 08 ββ
story.append(unit_header("UNIT 08 | Reactive Intermediates & Free Radicals (Reactions 11-15)", bg=C_TEAL))
story.append(Spacer(1, 8))
for rx in UNIT08_REACTIONS:
story.append(reaction_block(
rx["number"], rx["name"],
rx["reagents"], rx["steps"], rx["keys"],
note=rx.get("note"), badge_color=rx.get("badge_color", C_TEAL)
))
story.append(PageBreak())
# ββ UNIT 09 ββ
story.append(unit_header("UNIT 09 | Carbonium Ion Rearrangements (Reactions 16-20)", bg=C_ORANGE))
story.append(Spacer(1, 8))
for rx in UNIT09_REACTIONS:
story.append(reaction_block(
rx["number"], rx["name"],
rx["reagents"], rx["steps"], rx["keys"],
note=rx.get("note"), badge_color=rx.get("badge_color", C_ORANGE)
))
story.append(PageBreak())
# ββ UNIT 10 ββ
story.append(unit_header("UNIT 10 | Carbanion Rearrangements & Condensations (Reactions 21-23)", bg=C_PURPLE))
story.append(Spacer(1, 8))
for rx in UNIT10_REACTIONS:
story.append(reaction_block(
rx["number"], rx["name"],
rx["reagents"], rx["steps"], rx["keys"],
note=rx.get("note"), badge_color=rx.get("badge_color", C_PURPLE)
))
story.append(PageBreak())
# ββ QUICK COMPARISON TABLE ββ
story.append(unit_header("QUICK COMPARISON: Rearrangements at a Glance", bg=C_BLUE))
story.append(Spacer(1, 8))
comp_headers = [
Paragraph("<b>Reaction</b>", make_style('ch','Normal',fontSize=8.5,textColor=C_WHITE)),
Paragraph("<b>Starting Material</b>", make_style('ch2','Normal',fontSize=8.5,textColor=C_WHITE)),
Paragraph("<b>Key Intermediate</b>", make_style('ch3','Normal',fontSize=8.5,textColor=C_WHITE)),
Paragraph("<b>Product</b>", make_style('ch4','Normal',fontSize=8.5,textColor=C_WHITE)),
Paragraph("<b>Driving Force</b>", make_style('ch5','Normal',fontSize=8.5,textColor=C_WHITE)),
]
comp_rows = [
["Arndt-Eistert", "Acid chloride", "Carbene/Ketene", "Homologated acid", "1,2-acyl shift"],
["Baeyer-Villiger", "Ketone", "Criegee int.", "Ester", "O-insertion"],
["Pinacol", "1,2-Diol", "Carbocation", "Ketone", "1,2-C/Ar shift"],
["Wagner-Meerwein", "Alcohol/Halide", "Carbocation", "Rearranged product", "1,2-H or C shift"],
["Wolff", "Diazoketone", "Oxocarbene", "Ketene", "1,2-acyl shift"],
["Hofmann", "Primary amide", "Isocyanate", "Primary amine (-1C)", "1,2-N migration"],
["Beckmann", "Ketoxime", "Nitrilium ion", "Amide", "Anti-group shift"],
["Favorskii", "Alpha-halo ketone", "Cyclopropanone", "Acid/Ester", "Carbanion + ring"],
["Wittig", "Carbonyl", "Oxaphosphetane", "Alkene", "P=O bond strength"],
["Cannizzaro", "Non-enolizable ald.", "Hydride transfer", "Acid + Alcohol", "Disproportionation"],
]
comp_style_cell = make_style('cc','Normal',fontSize=8.5,textColor=C_BLACK,leading=11)
table_data = [comp_headers]
for row in comp_rows:
table_data.append([Paragraph(cell, comp_style_cell) for cell in row])
comp_t = Table(table_data, colWidths=[3.2*cm, 3.4*cm, 3.2*cm, 3.4*cm, 3.8*cm])
comp_t.setStyle(TableStyle([
('BACKGROUND', (0,0), (-1,0), C_DARK),
('ROWBACKGROUNDS',(0,1), (-1,-1), [C_LTGREY, colors.white]),
('GRID', (0,0), (-1,-1), 0.4, colors.HexColor("#cccccc")),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 6),
('VALIGN', (0,0), (-1,-1), 'TOP'),
]))
story.append(comp_t)
story.append(Spacer(1, 0.5*cm))
# ββ MNEMONICS PAGE ββ
story.append(Spacer(1, 0.3*cm))
story.append(unit_header("MNEMONICS & MEMORY AIDS", bg=C_GREEN))
story.append(Spacer(1, 8))
mnemonics = [
("Arndt-Eistert", "Diazo loses N2 -> Wolff carbene -> Ketene -> Homologate (+1C)"),
("Baeyer-Villiger", "Oxygen INSERTS beside the BEST migrator (3-deg > 2-deg > aryl > 1-deg > Me > H)"),
("Diels-Alder", "s-cis diene + electron-poor dienophile = 6-membered ring; ENDO = kinetic product"),
("Grignard", "Mg metal + RX in dry ether; attacks electrophiles; HATE water"),
("LiAlH4 vs NaBH4","LAH = powerful (reduces acids/esters); NaBH4 = gentle (ketones/aldehydes only)"),
("Wolff-Kishner", "C=O -> CH2; hydrazine + KOH; use for acid-SENSITIVE substrates"),
("Friedel-Crafts", "AlCl3 activates; acylation preferred (no rearrangement, no poly-substitution)"),
("Pinacol", "1,2-diol + H+ -> lose OH -> carbo+ -> 1,2-SHIFT -> ketone"),
("Hofmann", "AMIDE shrinks by 1C (Br2/NaOH); isocyanate intermediate; config RETAINED"),
("Beckmann", "ANTI group migrates; E-oxime and Z-oxime give DIFFERENT amides"),
("Favorskii", "Alpha-HALO ketone + base -> cyclopropanone -> ring opens = CONTRACTION"),
("Wittig", "Ylide (Ph3P=CR2) + C=O -> alkene + Ph3P=O; non-stabilized = Z; stabilized = E"),
("Mannich", "3 components: formaldehyde + amine + active CH2 = Mannich BASE"),
("Cannizzaro", "NO alpha-H + conc. NaOH = one oxidized (acid) + one reduced (alcohol)"),
]
mnem_style = make_style('ms','Normal',fontSize=9,textColor=C_BLACK,leading=12)
mnem_name_style = make_style('mn','Normal',fontSize=9,textColor=C_WHITE,leading=12,fontName='Helvetica-Bold')
for rxn_name, mnem in mnemonics:
row_data = [[Paragraph(rxn_name, mnem_name_style), Paragraph(mnem, mnem_style)]]
mt = Table(row_data, colWidths=[4.5*cm, 12.5*cm])
mt.setStyle(TableStyle([
('BACKGROUND', (0,0), (0,0), C_DARK),
('BACKGROUND', (1,0), (1,0), C_LTGREY),
('TOPPADDING', (0,0), (-1,-1), 5),
('BOTTOMPADDING', (0,0), (-1,-1), 5),
('LEFTPADDING', (0,0), (-1,-1), 8),
('GRID', (0,0), (-1,-1), 0.3, colors.HexColor("#dddddd")),
]))
story.append(mt)
story.append(Spacer(1, 2))
# ββ Footer note ββ
story.append(Spacer(1, 0.8*cm))
story.append(HRFlowable(width="100%", thickness=0.6, color=C_ACCENT))
story.append(Spacer(1, 4))
story.append(Paragraph(
"Organic Chemistry Quick Review | Units 07-10 | 23 Named Reactions | Generated by Orris",
make_style('footer','Normal', fontSize=8, textColor=colors.HexColor("#999999"), alignment=TA_CENTER)
))
# ββ Build ββ
doc.build(story)
print(f"PDF generated: {OUTPUT}")
cd /home/daytona/workspace/organic-chem-summary && python generate_pdf.py 2>&1
ls -lh /home/daytona/workspace/organic-chem-summary/Organic_Chemistry_Reaction_Mβ¦
Organic Chemistry Reaction Mechanisms
PDF Document Β· PDF
| Section | Content |
|---|---|
| Cover Page | Title, unit overview, table of contents |
| Unit 07 | 10 named reactions (Arndt-Eistert through Mannich) |
| Unit 08 | 5 reactive intermediates (Homolytic/Heterolytic, Free Radicals, Carbene, Nitrene, Carbanions) |
| Unit 09 | 5 carbonium rearrangements (Pinacol, Wagner-Meerwein, Wolff, Hofmann, Beckmann) |
| Unit 10 | 3 carbanion reactions (Aldol/Claisen, Favorskii, Wittig) |
| Comparison Table | All 10 rearrangements side-by-side (starting material, intermediate, product, driving force) |
| Mnemonics Page | 14 one-line memory aids for every reaction |
Create a PowerPoint presentation with visual mechanism diagrams
~/organic-chem-summary/generate_pptx.js
const pptxgen = require("pptxgenjs");
const pres = new pptxgen();
pres.layout = "LAYOUT_WIDE"; // 13.3" x 7.5"
pres.title = "Organic Chemistry Reaction Mechanisms";
pres.author = "Orris Study Planner";
pres.subject = "Units 07-10 | Named Reactions & Rearrangements";
// βββ PALETTE ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
const C = {
dark: "1a1a2e",
navy: "16213e",
accent: "e94560",
gold: "f5a623",
green: "27ae60",
purple: "8e44ad",
teal: "1abc9c",
orange: "e67e22",
blue: "2980b9",
ltgrey: "f4f6f8",
midgrey: "bdc3c7",
white: "FFFFFF",
black: "1c1c1c",
red: "c0392b",
};
// βββ HELPERS ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
// Dark slide background
function darkBg(slide, color = C.dark) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color } });
}
// Light slide background
function lightBg(slide, color = C.ltgrey) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color } });
}
// Accent top strip
function topStrip(slide, color, h = 0.08) {
slide.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h, fill: { color } });
}
// Section header bar
function headerBar(slide, text, bgColor, y = 0, h = 0.85) {
slide.addShape(pres.ShapeType.rect, { x: 0, y, w: 13.3, h, fill: { color: bgColor } });
slide.addText(text, { x: 0.3, y: y + 0.05, w: 12.7, h: h - 0.05, fontSize: 22, bold: true, color: C.white, valign: "middle" });
}
// Unit badge pill
function unitBadge(slide, unitText, x, y, bgColor) {
slide.addShape(pres.ShapeType.roundRect, { x, y, w: 1.4, h: 0.45, fill: { color: bgColor }, rectRadius: 0.12 });
slide.addText(unitText, { x, y, w: 1.4, h: 0.45, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
}
// Step box (coloured rectangle with text)
function stepBox(slide, text, x, y, w, h, fill, textColor = C.white, fontSize = 9.5) {
slide.addShape(pres.ShapeType.roundRect, { x, y, w, h, fill: { color: fill }, rectRadius: 0.08,
shadow: { type: "outer", color: "000000", blur: 4, offset: 1, angle: 135, opacity: 0.18 } });
slide.addText(text, { x: x + 0.05, y, w: w - 0.1, h, fontSize, color: textColor,
align: "center", valign: "middle", wrap: true });
}
// Arrow (right-pointing)
function arrowRight(slide, x, y, w = 0.38) {
slide.addShape(pres.ShapeType.rightArrow, { x, y, w, h: 0.28, fill: { color: C.midgrey } });
}
// Arrow down
function arrowDown(slide, x, y, h = 0.3) {
slide.addShape(pres.ShapeType.downArrow, { x, y, w: 0.28, h, fill: { color: C.midgrey } });
}
// Key points sidebar
function keyBox(slide, lines, x, y, w, h, bgColor = C.navy) {
slide.addShape(pres.ShapeType.roundRect, { x, y, w, h, fill: { color: bgColor }, rectRadius: 0.1 });
const items = lines.map((l, i) => ({
text: "β’ " + l,
options: { breakLine: i < lines.length - 1, fontSize: 9, color: C.white }
}));
slide.addText(items, { x: x + 0.12, y: y + 0.1, w: w - 0.2, h: h - 0.2, valign: "top", wrap: true });
}
// Label above a box
function label(slide, text, x, y, w, color = C.black, fontSize = 8.5) {
slide.addText(text, { x, y, w, h: 0.28, fontSize, color, align: "center", italic: true });
}
// Numbered circle
function numCircle(slide, n, x, y, color) {
slide.addShape(pres.ShapeType.ellipse, { x, y, w: 0.38, h: 0.38, fill: { color } });
slide.addText(String(n), { x, y, w: 0.38, h: 0.38, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
}
// Molecule/compound box (slightly different style)
function molBox(slide, text, x, y, w = 2.2, h = 0.62, fill = C.white, textColor = C.dark) {
slide.addShape(pres.ShapeType.roundRect, { x, y, w, h, fill: { color: fill },
line: { color: C.midgrey, width: 1 }, rectRadius: 0.1 });
slide.addText(text, { x: x + 0.05, y, w: w - 0.1, h, fontSize: 9, color: textColor,
align: "center", valign: "middle", wrap: true, bold: false });
}
// βββ SLIDE 1 β COVER βββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
darkBg(s);
// Large accent bar on left
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: C.accent } });
// Top label
s.addText("ORGANIC CHEMISTRY", {
x: 0.5, y: 0.7, w: 12.3, h: 0.6,
fontSize: 13, bold: true, color: C.accent, charSpacing: 8, align: "center"
});
// Main title
s.addText("Reaction Mechanisms\n& Rearrangements", {
x: 0.5, y: 1.3, w: 12.3, h: 2.0,
fontSize: 42, bold: true, color: C.white, align: "center", valign: "middle", lineSpacingMultiple: 1.15
});
// Divider
s.addShape(pres.ShapeType.rect, { x: 3.5, y: 3.45, w: 6.3, h: 0.05, fill: { color: C.gold } });
// Subtitle
s.addText("Units 07 - 10 | 23 Named Reactions | Quick Review Deck", {
x: 0.5, y: 3.6, w: 12.3, h: 0.5,
fontSize: 14, color: C.gold, align: "center"
});
// Unit badges across middle
const units = [
{ label: "UNIT 07\nReaction Mechanisms", color: C.accent },
{ label: "UNIT 08\nReactive Intermediates", color: C.teal },
{ label: "UNIT 09\nCarbonium Rearrangements", color: C.orange },
{ label: "UNIT 10\nCarbanion Rearrangements", color: C.purple },
];
units.forEach((u, i) => {
const x = 0.5 + i * 3.2;
s.addShape(pres.ShapeType.roundRect, { x, y: 4.35, w: 2.9, h: 1.3, fill: { color: u.color }, rectRadius: 0.12 });
s.addText(u.label, { x, y: 4.35, w: 2.9, h: 1.3, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle", lineSpacingMultiple: 1.3 });
});
s.addText("Study Date: May 24, 2026 | Prepared by Orris", {
x: 0.5, y: 6.9, w: 12.3, h: 0.4, fontSize: 9, color: "888888", align: "center"
});
}
// βββ SLIDE 2 β TABLE OF CONTENTS βββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.dark, 0.08);
headerBar(s, "π Contents at a Glance", C.dark);
const items = [
{ num: "07", title: "Reaction Mechanisms", color: C.accent, reactions: "Arndt-Eistert Β· Baeyer-Villiger Β· Diels-Alder Β· Grignard Β· Metal Hydride Β· Wolff-Kishner Β· Friedel-Crafts Β· Perkin Β· Cannizzaro Β· Mannich" },
{ num: "08", title: "Reactive Intermediates", color: C.teal, reactions: "Homolytic/Heterolytic Fission Β· Free Radical Stability Β· Carbene Β· Nitrene Β· Carbanions" },
{ num: "09", title: "Carbonium Ion Rearrangements", color: C.orange, reactions: "Pinacol-Pinacolone Β· Wagner-Meerwein Β· Wolff Β· Hofmann Β· Beckmann" },
{ num: "10", title: "Carbanion Rearrangements", color: C.purple, reactions: "Condensation (Aldol/Claisen) Β· Favorskii Β· Wittig" },
];
items.forEach((item, i) => {
const y = 1.1 + i * 1.45;
s.addShape(pres.ShapeType.roundRect, { x: 0.4, y, w: 12.5, h: 1.28, fill: { color: C.white },
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.1 }, rectRadius: 0.1 });
s.addShape(pres.ShapeType.roundRect, { x: 0.4, y, w: 1.05, h: 1.28, fill: { color: item.color }, rectRadius: 0.1 });
s.addText("UNIT\n" + item.num, { x: 0.4, y, w: 1.05, h: 1.28, fontSize: 14, bold: true, color: C.white, align: "center", valign: "middle", lineSpacingMultiple: 1.2 });
s.addText(item.title, { x: 1.6, y: y + 0.1, w: 11.0, h: 0.45, fontSize: 14, bold: true, color: item.color });
s.addText(item.reactions, { x: 1.6, y: y + 0.55, w: 11.0, h: 0.55, fontSize: 9.5, color: C.black, wrap: true });
});
}
// βββ UNIT 07 DIVIDER ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
darkBg(s, C.accent);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 13.3, h: 7.5, fill: { color: C.dark, transparency: 20 } });
s.addText("UNIT 07", { x: 0.5, y: 1.5, w: 12.3, h: 0.8, fontSize: 52, bold: true, color: C.accent, align: "center", charSpacing: 14 });
s.addText("Reaction Mechanisms", { x: 0.5, y: 2.5, w: 12.3, h: 0.7, fontSize: 30, color: C.white, align: "center" });
s.addShape(pres.ShapeType.rect, { x: 4, y: 3.4, w: 5.3, h: 0.05, fill: { color: C.gold } });
const names = ["Arndt-Eistert", "Baeyer-Villiger", "Diels-Alder", "Grignard", "Metal Hydride", "Wolff-Kishner", "Friedel-Crafts", "Perkin", "Cannizzaro", "Mannich"];
names.forEach((n, i) => {
const col = i < 5 ? 0 : 1;
const row = i < 5 ? i : i - 5;
s.addText("β€ " + n, { x: 2.5 + col * 4.5, y: 3.7 + row * 0.55, w: 4.2, h: 0.5, fontSize: 12, color: C.white });
});
}
// βββ SLIDE: ARNDT-EISTERT βββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.accent);
headerBar(s, "01 | Arndt-Eistert Reaction β One-Carbon Homologation", C.accent);
unitBadge(s, "UNIT 07", 11.9, 0.2, C.dark);
// Flow diagram
const boxes = [
{ text: "Acid\nChloride\nR-COCl", fill: C.blue },
{ text: "+ CHβNβ\n(diazomethane)\nβ Ξ±-Diazoketone", fill: C.teal },
{ text: "Wolff\nRearrangement\n(AgβO / hΞ½)", fill: C.orange },
{ text: "Ketene\nR-CH=C=O\n+ Nβ", fill: C.purple },
{ text: "Nucleophile\n(HβO / ROH / NHβ)\nβ Product", fill: C.green },
];
boxes.forEach((b, i) => {
stepBox(s, b.text, 0.35 + i * 2.55, 1.15, 2.2, 1.1, b.fill, C.white, 9.5);
if (i < boxes.length - 1) arrowRight(s, 2.6 + i * 2.55, 1.6, 0.32);
});
// Labels
label(s, "Step 1", 0.35, 1.02, 2.2, C.blue);
label(s, "Step 2", 2.9, 1.02, 2.2, C.teal);
label(s, "Step 3 β Key", 5.45, 1.02, 2.2, C.orange);
label(s, "Intermediate", 8.0, 1.02, 2.2, C.purple);
label(s, "Product", 10.55, 1.02, 2.2, C.green);
// Net equation strip
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 2.55, w: 12.6, h: 0.62, fill: { color: C.dark }, rectRadius: 0.08 });
s.addText("NET: R-COCl β R-CHβ-COOH (chain extended by 1 carbon)", {
x: 0.5, y: 2.55, w: 12.3, h: 0.62, fontSize: 13, bold: true, color: C.gold, align: "center", valign: "middle"
});
keyBox(s, [
"Wolff rearrangement: Ξ±-oxocarbene β ketene via 1,2-acyl shift (carbene intermediate)",
"AgβO catalyst or UV light drives the Wolff step",
"Stereospecific: configuration at migrating carbon is retained",
"Links to Unit 09 β Wolff rearrangement = carbene-driven 1,2-shift",
], 0.35, 3.38, 8.2, 1.6, C.navy);
// Migratory note box
s.addShape(pres.ShapeType.roundRect, { x: 8.85, y: 3.38, w: 4.1, h: 1.6, fill: { color: C.accent }, rectRadius: 0.1 });
s.addText("β EXAM TIP\n\nThis reaction is tested by asking:\nβ’ What is the Wolff intermediate?\nβ’ What is the net change?\n(Answer: +1 carbon)", {
x: 8.98, y: 3.42, w: 3.85, h: 1.5, fontSize: 9.5, color: C.white, valign: "top", wrap: true
});
s.addText("Reagents: R-COCl + CHβNβ, then AgβO or hΞ½, then HβO/ROH/NHβ", {
x: 0.35, y: 5.18, w: 12.6, h: 0.38, fontSize: 9.5, color: "666666", italic: true
});
}
// βββ SLIDE: BAEYER-VILLIGER βββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.orange);
headerBar(s, "02 | Baeyer-Villiger Reaction β O-Insertion into Ketones", C.orange);
unitBadge(s, "UNIT 07", 11.9, 0.2, C.dark);
// Mechanism flow
const msteps = [
{ t: "Ketone\nR-CO-R'", f: C.blue },
{ t: "Peracid\n(mCPBA)\nAttacks C=O", f: C.teal },
{ t: "Criegee\nIntermediate\n(tetrahedral)", f: C.orange },
{ t: "Migration\n+ Loss of\ncarboxylic acid", f: C.purple },
{ t: "Ester\nR-COO-R'", f: C.green },
];
msteps.forEach((b, i) => {
stepBox(s, b.t, 0.35 + i * 2.55, 1.15, 2.2, 1.05, b.f, C.white, 9.5);
if (i < msteps.length - 1) arrowRight(s, 2.6 + i * 2.55, 1.58, 0.32);
});
// Migratory aptitude table
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 2.55, w: 12.6, h: 1.5, fill: { color: C.dark }, rectRadius: 0.1 });
s.addText("MIGRATORY APTITUDE (highest β lowest)", {
x: 0.5, y: 2.62, w: 12.3, h: 0.38, fontSize: 12, bold: true, color: C.gold, align: "center"
});
const mig = ["3Β° alkyl", "2Β° alkyl", "Aryl", "1Β° alkyl", "Methyl", "H"];
const migC = [C.red, C.orange, C.teal, C.blue, C.purple, "888888"];
mig.forEach((m, i) => {
const x = 0.8 + i * 2.0;
s.addShape(pres.ShapeType.roundRect, { x, y: 3.08, w: 1.65, h: 0.65, fill: { color: migC[i] }, rectRadius: 0.08 });
s.addText(m, { x, y: 3.08, w: 1.65, h: 0.65, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
if (i < mig.length - 1) s.addText(">", { x: x + 1.65, y: 3.08, w: 0.35, h: 0.65, fontSize: 14, bold: true, color: C.gold, align: "center", valign: "middle" });
});
keyBox(s, [
"Oxygen inserts between the carbonyl C and the best migrating group",
"Stereospecific: configuration at the migrating carbon is RETAINED",
"Peracids used: mCPBA, peracetic acid, trifluoroperacetic acid",
"Baeyer-Villiger oxidation of aldehydes β formate esters (H migrates)",
], 0.35, 4.1, 8.2, 1.55, C.navy);
s.addShape(pres.ShapeType.roundRect, { x: 8.85, y: 4.1, w: 4.1, h: 1.55, fill: { color: C.orange }, rectRadius: 0.1 });
s.addText("NET RESULT:\nKetone β Ester\n(O inserted next to\nbest migrating group)", {
x: 8.98, y: 4.15, w: 3.85, h: 1.45, fontSize: 10.5, bold: true, color: C.white, valign: "middle", align: "center", wrap: true
});
}
// βββ SLIDE: DIELS-ALDER βββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.green);
headerBar(s, "03 | Diels-Alder Reaction β [4+2] Cycloaddition", C.green);
unitBadge(s, "UNIT 07", 11.9, 0.2, C.dark);
// Requirements boxes
s.addText("REQUIREMENTS", { x: 0.35, y: 1.05, w: 5.5, h: 0.35, fontSize: 11, bold: true, color: C.green });
const req = ["Diene in s-CIS conformation", "Electron-rich diene (EDG)", "Electron-poor dienophile (EWG)", "Heat (thermal) β no catalyst needed"];
req.forEach((r, i) => {
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 1.45 + i * 0.52, w: 5.5, h: 0.45, fill: { color: C.green }, rectRadius: 0.07 });
s.addText("β " + r, { x: 0.45, y: 1.45 + i * 0.52, w: 5.3, h: 0.45, fontSize: 9.5, color: C.white, valign: "middle" });
});
// Orbital diagram text
s.addShape(pres.ShapeType.roundRect, { x: 6.2, y: 1.05, w: 6.75, h: 2.35, fill: { color: C.dark }, rectRadius: 0.1 });
s.addText("ORBITAL INTERACTION", { x: 6.35, y: 1.12, w: 6.4, h: 0.38, fontSize: 11, bold: true, color: C.gold });
s.addText([
{ text: "HOMO (diene)", options: { color: C.teal, bold: true, breakLine: true } },
{ text: " + LUMO (dienophile) overlap\n\n", options: { color: C.white, breakLine: true } },
{ text: " C1βC2βC3βC4 + CβC\n", options: { color: C.orange, bold: true, breakLine: true } },
{ text: " (diene, s-cis) (dienophile)\n\n", options: { color: "888888", breakLine: true } },
{ text: " β 6-membered cyclohexene ring", options: { color: C.green, bold: true } },
], { x: 6.35, y: 1.55, w: 6.4, h: 1.7, fontSize: 10, valign: "top", wrap: true });
// Stereochemistry rules
s.addText("STEREOCHEMISTRY RULES", { x: 0.35, y: 3.72, w: 12.6, h: 0.38, fontSize: 11, bold: true, color: C.dark });
const stereo = [
{ rule: "syn addition", desc: "Both new bonds form from same face of dienophile β substituents retain relative config", color: C.teal },
{ rule: "Endo rule", desc: "Endo product = kinetically favored (secondary orbital interactions stabilize TS)", color: C.orange },
{ rule: "Exo product", desc: "Exo product = thermodynamically more stable but kinetically slower", color: C.blue },
];
stereo.forEach((r, i) => {
s.addShape(pres.ShapeType.roundRect, { x: 0.35 + i * 4.3, y: 4.15, w: 4.0, h: 1.32, fill: { color: r.color }, rectRadius: 0.1 });
s.addText(r.rule, { x: 0.45 + i * 4.3, y: 4.22, w: 3.8, h: 0.4, fontSize: 11, bold: true, color: C.white });
s.addText(r.desc, { x: 0.45 + i * 4.3, y: 4.62, w: 3.8, h: 0.8, fontSize: 9, color: C.white, wrap: true, valign: "top" });
});
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 5.65, w: 12.6, h: 0.52, fill: { color: C.dark }, rectRadius: 0.08 });
s.addText("NET: Diene (4Ο) + Dienophile (2Ο) β Cyclohexene | CONCERTED β no intermediates", {
x: 0.5, y: 5.65, w: 12.3, h: 0.52, fontSize: 12, bold: true, color: C.gold, align: "center", valign: "middle"
});
}
// βββ SLIDE: GRIGNARD + METAL HYDRIDE ββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.teal);
headerBar(s, "04 & 05 | Grignard Reaction + Metal Hydride Reduction", C.teal);
unitBadge(s, "UNIT 07", 11.9, 0.2, C.dark);
// Left panel: Grignard
s.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 1.05, w: 6.2, h: 4.88, fill: { color: C.white },
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.12 }, rectRadius: 0.1 });
s.addText("GRIGNARD REACTION", { x: 0.5, y: 1.12, w: 5.8, h: 0.4, fontSize: 12, bold: true, color: C.teal });
const gsteps = ["R-X + Mg β R-MgX\n(dry ether)", "R-MgX + C=O β\nalkoxide intermediate", "HβOβΊ workup\nβ alcohol product"];
gsteps.forEach((t, i) => {
stepBox(s, t, 0.55, 1.62 + i * 0.95, 5.7, 0.82, [C.blue, C.teal, C.green][i], C.white, 9.5);
if (i < 2) arrowDown(s, 3.18, 2.44 + i * 0.95, 0.27);
});
s.addText("Products by substrate:", { x: 0.5, y: 4.62, w: 5.8, h: 0.3, fontSize: 9.5, bold: true, color: C.dark });
const prods = ["HCHO β 1Β° alcohol", "RCHO β 2Β° alcohol", "RβCO β 3Β° alcohol", "COβ β carboxylic acid"];
prods.forEach((p, i) => {
const x = 0.55 + (i % 2) * 2.9;
const y = 4.95 + Math.floor(i / 2) * 0.42;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 2.7, h: 0.35, fill: { color: C.teal }, rectRadius: 0.06 });
s.addText(p, { x, y, w: 2.7, h: 0.35, fontSize: 8.5, color: C.white, align: "center", valign: "middle" });
});
// Right panel: Metal Hydride
s.addShape(pres.ShapeType.roundRect, { x: 6.8, y: 1.05, w: 6.15, h: 4.88, fill: { color: C.white },
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.12 }, rectRadius: 0.1 });
s.addText("METAL HYDRIDE REDUCTION", { x: 7.0, y: 1.12, w: 5.75, h: 0.4, fontSize: 12, bold: true, color: C.purple });
// Comparison table
const hydrides = [
{ h: "LiAlHβ (LAH)", c: C.accent, sub: "Dry THF or ether\nReduces: acids, esters,\namides, ketones, aldehydes,\nepoxides β STRONG" },
{ h: "NaBHβ", c: C.blue, sub: "Protic solvents (MeOH)\nReduces: ketones &\naldehydes ONLY β MILD\n(safe, selective)" },
{ h: "DIBAL-H (β78Β°C)", c: C.green, sub: "Toluene at β78Β°C\nReduces ester β aldehyde\n(stops at hemiacetal)\nSELECTIVE" },
];
hydrides.forEach((h, i) => {
s.addShape(pres.ShapeType.roundRect, { x: 7.0, y: 1.6 + i * 1.42, w: 5.75, h: 1.3, fill: { color: h.c }, rectRadius: 0.1 });
s.addText(h.h, { x: 7.1, y: 1.65 + i * 1.42, w: 5.55, h: 0.4, fontSize: 11, bold: true, color: C.white });
s.addText(h.sub, { x: 7.1, y: 2.05 + i * 1.42, w: 5.55, h: 0.8, fontSize: 9, color: C.white, wrap: true, valign: "top" });
});
}
// βββ SLIDE: WOLFF-KISHNER + FRIEDEL-CRAFTS ββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.blue);
headerBar(s, "06 & 07 | Wolff-Kishner Reduction + Friedel-Crafts Reaction", C.blue);
unitBadge(s, "UNIT 07", 11.9, 0.2, C.dark);
// WK panel
s.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 1.05, w: 6.1, h: 5.0, fill: { color: C.white }, rectRadius: 0.1,
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.12 } });
s.addText("WOLFF-KISHNER REDUCTION", { x: 0.5, y: 1.12, w: 5.7, h: 0.4, fontSize: 12, bold: true, color: C.blue });
const wksteps = [
{ t: "Ketone/Aldehyde\n(C=O)", f: C.blue },
{ t: "Hydrazone\nC=NNHβ\n(+HβNNHβ)", f: C.teal },
{ t: "KOH / EG\nheat\nβ Anion", f: C.orange },
{ t: "Nβ loss β CHβ\n(Alkane)", f: C.green },
];
wksteps.forEach((b, i) => {
stepBox(s, b.t, 0.5 + (i % 2) * 2.85, 1.65 + Math.floor(i / 2) * 1.3, 2.65, 1.1, b.f, C.white, 9.5);
if (i === 0) arrowRight(s, 3.2, 2.12, 0.35);
if (i === 1) arrowDown(s, 1.7, 2.78, 0.28);
if (i === 2) arrowRight(s, 3.2, 3.42, 0.35);
});
s.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 4.15, w: 5.7, h: 0.55, fill: { color: C.dark }, rectRadius: 0.07 });
s.addText("NET: C=O β CHβ (complete deoxygenation)", { x: 0.5, y: 4.15, w: 5.7, h: 0.55, fontSize: 11, bold: true, color: C.gold, align: "center", valign: "middle" });
s.addText("vs Clemmensen: Zn/Hg + HCl β use for base-sensitive substrates\nWolff-Kishner: use for acid-sensitive substrates", {
x: 0.5, y: 4.8, w: 5.7, h: 0.65, fontSize: 9, color: "555555", italic: true, wrap: true
});
// FC panel
s.addShape(pres.ShapeType.roundRect, { x: 6.7, y: 1.05, w: 6.25, h: 5.0, fill: { color: C.white }, rectRadius: 0.1,
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.12 } });
s.addText("FRIEDEL-CRAFTS REACTION", { x: 6.9, y: 1.12, w: 5.85, h: 0.4, fontSize: 12, bold: true, color: C.orange });
// Alkylation vs Acylation
[
{ title: "Alkylation", reagent: "R-X + AlClβ", prob: "Carbocation rearrangements!\nMultiple alkylation!", color: C.orange },
{ title: "Acylation", reagent: "RCOCl + AlClβ", prob: "No rearrangement\n(acylium stable)\nThen reduce: Clemmensen/WK", color: C.green },
].forEach((fc, i) => {
const y = 1.6 + i * 1.8;
s.addShape(pres.ShapeType.roundRect, { x: 6.9, y, w: 5.85, h: 1.62, fill: { color: fc.color }, rectRadius: 0.1 });
s.addText(fc.title, { x: 7.05, y: y + 0.1, w: 5.55, h: 0.38, fontSize: 13, bold: true, color: C.white });
s.addText("Reagents: " + fc.reagent, { x: 7.05, y: y + 0.48, w: 5.55, h: 0.35, fontSize: 10, color: C.white });
s.addText(fc.prob, { x: 7.05, y: y + 0.85, w: 5.55, h: 0.65, fontSize: 9.5, color: C.white, wrap: true, valign: "top" });
});
s.addShape(pres.ShapeType.roundRect, { x: 6.9, y: 5.28, w: 5.85, h: 0.62, fill: { color: C.dark }, rectRadius: 0.08 });
s.addText("β FC fails on: NOβ, COR, COOH groups (deactivated rings)", {
x: 7.0, y: 5.28, w: 5.65, h: 0.62, fontSize: 10, bold: true, color: C.accent, valign: "middle", align: "center"
});
}
// βββ SLIDE: PERKIN + CANNIZZARO + MANNICH βββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.purple);
headerBar(s, "08, 09, 10 | Perkin Β· Cannizzaro Β· Mannich Reactions", C.purple);
unitBadge(s, "UNIT 07", 11.9, 0.2, C.dark);
const threePanels = [
{
title: "PERKIN REACTION",
color: C.purple,
lines: [
"ArCHO + (RCO)βO + RCOONa β Ξ±,Ξ²-unsaturated acid",
"1. Base deprotonates Ξ±-C of anhydride β enolate",
"2. Enolate attacks ArCHO β Ξ²-hydroxy intermediate",
"3. Intramolecular acylation β mixed anhydride",
"4. Elimination + hydrolysis β cinnamic acid type",
"β Only non-enolizable aromatic aldehydes work",
]
},
{
title: "CANNIZZARO REACTION",
color: C.orange,
lines: [
"RCHO (no Ξ±-H) + conc. NaOH β RCOOβ» + RCHβOH",
"1. OHβ» attacks RCHO β tetrahedral intermediate",
"2. Intramolecular hydride (Hβ») transfer to 2nd RCHO",
"3. One molecule oxidized (β acid); one reduced (β alcohol)",
"Disproportionation β no Ξ±-H required!",
"Cross-Cannizzaro: HCHO acts as hydride donor (oxidized)",
]
},
{
title: "MANNICH REACTION",
color: C.teal,
lines: [
"RβNH + HCHO + CH-acidic compound β Ξ²-amino carbonyl",
"1. Amine + HCHO β iminium ion (RβNβΊ=CHβ) β electrophile",
"2. Active methylene β enol/enolate β nucleophile",
"3. Enolate attacks iminium β Mannich base",
"Three-component reaction (carbonyl + amine + active CHβ)",
"Key in alkaloid and pharmaceutical synthesis",
]
},
];
threePanels.forEach((p, i) => {
const x = 0.35 + i * 4.33;
s.addShape(pres.ShapeType.roundRect, { x, y: 1.08, w: 4.1, h: 5.4, fill: { color: C.white },
shadow: { type: "outer", color: "000000", blur: 4, offset: 1, angle: 135, opacity: 0.12 }, rectRadius: 0.1 });
s.addShape(pres.ShapeType.roundRect, { x, y: 1.08, w: 4.1, h: 0.55, fill: { color: p.color }, rectRadius: 0.1 });
s.addText(p.title, { x: x + 0.1, y: 1.08, w: 3.9, h: 0.55, fontSize: 11, bold: true, color: C.white, valign: "middle" });
p.lines.forEach((line, j) => {
const bullet = j > 0;
const lineColor = j === 0 ? p.color : C.black;
const fontSz = j === 0 ? 9.5 : 9;
const lBold = j === 0;
s.addText((bullet ? "βΊ " : "") + line, {
x: x + 0.12, y: 1.72 + j * 0.62, w: 3.85, h: 0.58,
fontSize: fontSz, color: lineColor, bold: lBold, wrap: true, valign: "top"
});
});
});
}
// βββ UNIT 08 DIVIDER ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
darkBg(s, C.navy);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: C.teal } });
s.addText("UNIT 08", { x: 0.5, y: 1.5, w: 12.3, h: 0.8, fontSize: 52, bold: true, color: C.teal, align: "center", charSpacing: 14 });
s.addText("Reactive Intermediates & Free Radicals", { x: 0.5, y: 2.5, w: 12.3, h: 0.7, fontSize: 28, color: C.white, align: "center" });
s.addShape(pres.ShapeType.rect, { x: 3.5, y: 3.42, w: 6.3, h: 0.05, fill: { color: C.gold } });
const u8items = ["Homolytic & Heterolytic Fission", "Free Radical Stability", "Carbene", "Nitrene", "Carbanions"];
u8items.forEach((n, i) => {
s.addText("β€ " + n, { x: 4.0, y: 3.7 + i * 0.55, w: 5.5, h: 0.5, fontSize: 13, color: C.white, align: "center" });
});
}
// βββ SLIDE: FISSION + FREE RADICALS ββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.teal);
headerBar(s, "11 & 12 | Homolytic / Heterolytic Fission + Free Radical Stability", C.teal);
unitBadge(s, "UNIT 08", 11.9, 0.2, C.dark);
// Fission side-by-side
[
{ title: "HOMOLYTIC FISSION", eq: "A:B β Aβ’ + Bβ’", desc: "One electron to each fragment\nβ Free radicals formed\nFavored by: heat, UV, nonpolar solvents, weak bonds", color: C.accent },
{ title: "HETEROLYTIC FISSION", eq: "A:B β AβΊ + B:β»\nor A:β» + BβΊ", desc: "Both electrons to one fragment\nβ Ions (carbocations / carbanions)\nFavored by: polar solvents, large electronegativity difference", color: C.blue },
].forEach((f, i) => {
const x = 0.35 + i * 6.3;
s.addShape(pres.ShapeType.roundRect, { x, y: 1.05, w: 6.0, h: 2.72, fill: { color: f.color }, rectRadius: 0.1 });
s.addText(f.title, { x: x + 0.12, y: 1.1, w: 5.75, h: 0.45, fontSize: 13, bold: true, color: C.white });
s.addShape(pres.ShapeType.roundRect, { x: x + 0.12, y: 1.6, w: 5.75, h: 0.65, fill: { color: "00000033" }, rectRadius: 0.07 });
s.addText(f.eq, { x: x + 0.12, y: 1.6, w: 5.75, h: 0.65, fontSize: 13, bold: true, color: C.gold, align: "center", valign: "middle" });
s.addText(f.desc, { x: x + 0.12, y: 2.32, w: 5.75, h: 1.3, fontSize: 9.5, color: C.white, wrap: true, valign: "top" });
});
// Free radical stability
s.addText("FREE RADICAL STABILITY (decreasing)", { x: 0.35, y: 4.0, w: 12.6, h: 0.38, fontSize: 12, bold: true, color: C.dark });
const radicals = [
{ label: "Allylic /\nBenzylic", color: C.red, rank: "MOST STABLE" },
{ label: "3Β°", color: C.orange, rank: "β" },
{ label: "2Β°", color: C.teal, rank: "β" },
{ label: "1Β°", color: C.blue, rank: "β" },
{ label: "Methyl", color: C.purple, rank: "β" },
{ label: "Vinyl /\nAryl", color: "888888", rank: "LEAST" },
];
radicals.forEach((r, i) => {
const x = 0.55 + i * 2.08;
s.addShape(pres.ShapeType.roundRect, { x, y: 4.48, w: 1.85, h: 0.72, fill: { color: r.color }, rectRadius: 0.1 });
s.addText(r.label, { x, y: 4.48, w: 1.85, h: 0.72, fontSize: 11, bold: true, color: C.white, align: "center", valign: "middle" });
s.addText(r.rank, { x, y: 5.22, w: 1.85, h: 0.3, fontSize: 9, color: "666666", align: "center" });
});
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 5.65, w: 12.6, h: 0.52, fill: { color: C.dark }, rectRadius: 0.08 });
s.addText("Stability explained by: hyperconjugation (adjacent C-H Ο bonds donate into SOMO) + resonance delocalization", {
x: 0.5, y: 5.65, w: 12.3, h: 0.52, fontSize: 10, color: C.white, align: "center", valign: "middle"
});
}
// βββ SLIDE: CARBENE + NITRENE βββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.green);
headerBar(s, "13 & 14 | Carbene + Nitrene β Reactive Intermediates", C.green);
unitBadge(s, "UNIT 08", 11.9, 0.2, C.dark);
[
{
title: "CARBENE :CRβ", color: C.green,
rows: [
["Type", "Electron Config", "Reactions", "Stereospecific?"],
["Singlet :CRβ", "Paired eβ» in spΒ²\n(empty p orbital)", "Concerted cyclopropanation\nC-H insertion", "YES β syn addition"],
["Triplet :CRβ", "Two unpaired eβ»\n(diradical)", "Stepwise cyclopropanation\nH-abstraction", "NO β non-stereospecific"],
],
note: "Generation: CHClβ + t-BuOK; or hΞ½/Ξ of diazo compounds\nSimmons-Smith: Zn/CHβIβ β :CHβ equivalent (stereospecific cyclopropanation)"
},
{
title: "NITRENE :NR", color: C.orange,
rows: [
["Type", "Electron Config", "Reactions", "Notes"],
["Singlet :NR", "Paired eβ» in spΒ²\n(empty p orbital)", "N-H, C-H insertion\nRing expansion", "Stereospecific"],
["Triplet :NR", "Two unpaired eβ»\n(diradical)", "H-abstraction\nRadical-type reactions", "Non-stereospecific"],
],
note: "Generation: Photolysis of azides R-Nβ β R-N: + Nβ\nKey: N analog of carbene (6 electrons on N, monovalent)\nLinks to Hofmann rearrangement via isocyanate intermediate"
},
].forEach((panel, pi) => {
const xBase = 0.35 + pi * 6.45;
const w = 6.2;
s.addShape(pres.ShapeType.roundRect, { x: xBase, y: 1.05, w, h: 5.55, fill: { color: C.white },
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.12 }, rectRadius: 0.1 });
s.addShape(pres.ShapeType.roundRect, { x: xBase, y: 1.05, w, h: 0.5, fill: { color: panel.color }, rectRadius: 0.1 });
s.addText(panel.title, { x: xBase + 0.1, y: 1.05, w: w - 0.2, h: 0.5, fontSize: 13, bold: true, color: C.white, valign: "middle" });
// Table header
const cols = [1.4, 1.55, 1.75, 1.4];
panel.rows[0].forEach((h, ci) => {
const cx = xBase + 0.1 + cols.slice(0, ci).reduce((a, b) => a + b, 0);
s.addShape(pres.ShapeType.rect, { x: cx, y: 1.62, w: cols[ci], h: 0.38, fill: { color: panel.color } });
s.addText(h, { x: cx, y: 1.62, w: cols[ci], h: 0.38, fontSize: 8.5, bold: true, color: C.white, align: "center", valign: "middle" });
});
// Data rows
panel.rows.slice(1).forEach((row, ri) => {
const rowColors = [C.ltgrey, C.white];
row.forEach((cell, ci) => {
const cx = xBase + 0.1 + cols.slice(0, ci).reduce((a, b) => a + b, 0);
s.addShape(pres.ShapeType.rect, { x: cx, y: 2.02 + ri * 0.9, w: cols[ci], h: 0.88, fill: { color: rowColors[ri] } });
s.addText(cell, { x: cx + 0.04, y: 2.02 + ri * 0.9, w: cols[ci] - 0.08, h: 0.88, fontSize: 8.5, color: C.black, wrap: true, valign: "middle" });
});
});
s.addText(panel.note, { x: xBase + 0.1, y: 3.92, w: w - 0.2, h: 0.6, fontSize: 8.5, color: "555555", italic: true, wrap: true, valign: "top" });
});
}
// βββ UNIT 09 DIVIDER ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
darkBg(s, "1a0a00");
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: C.orange } });
s.addText("UNIT 09", { x: 0.5, y: 1.5, w: 12.3, h: 0.8, fontSize: 52, bold: true, color: C.orange, align: "center", charSpacing: 14 });
s.addText("Carbonium Ion Rearrangements", { x: 0.5, y: 2.5, w: 12.3, h: 0.7, fontSize: 28, color: C.white, align: "center" });
s.addShape(pres.ShapeType.rect, { x: 3.5, y: 3.42, w: 6.3, h: 0.05, fill: { color: C.gold } });
const u9items = ["Pinacol-Pinacolone Rearrangement", "Wagner-Meerwein Rearrangement", "Wolff Rearrangement", "Hofmann Rearrangement", "Beckmann Rearrangement"];
u9items.forEach((n, i) => {
s.addText("β€ " + n, { x: 3.2, y: 3.7 + i * 0.55, w: 7.0, h: 0.5, fontSize: 12.5, color: C.white, align: "center" });
});
}
// βββ SLIDE: PINACOL + WAGNER-MEERWEIN ββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.orange);
headerBar(s, "16 & 17 | Pinacol-Pinacolone + Wagner-Meerwein Rearrangements", C.orange);
unitBadge(s, "UNIT 09", 11.9, 0.2, C.dark);
// Pinacol
s.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 1.05, w: 6.1, h: 5.1, fill: { color: C.white }, rectRadius: 0.1,
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.12 } });
s.addText("PINACOL β PINACOLONE", { x: 0.5, y: 1.12, w: 5.7, h: 0.4, fontSize: 12, bold: true, color: C.orange });
const psteps = [
{ t: "1,2-Diol\n(Pinacol)", f: C.blue },
{ t: "HβΊ protonates\none -OH", f: C.teal },
{ t: "Loss of HβO\nβ Tertiary\ncarbocation", f: C.orange },
{ t: "1,2-Alkyl /\nAryl SHIFT", f: C.accent },
{ t: "Ketone\n(Pinacolone)", f: C.green },
];
psteps.forEach((b, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
const x = 0.5 + col * 2.9;
const y = 1.65 + row * 1.35;
stepBox(s, b.t, x, y, 2.65, 1.08, b.f, C.white, 9.5);
if (i === 0) arrowRight(s, 3.18, 2.12, 0.3);
if (i === 1) arrowDown(s, 1.75, 2.76, 0.28);
if (i === 2) arrowRight(s, 3.18, 3.47, 0.3);
if (i === 3) arrowDown(s, 4.65, 2.76, 0.28);
});
s.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 4.78, w: 5.7, h: 0.48, fill: { color: C.dark }, rectRadius: 0.07 });
s.addText("1,2-Diol + HβΊ β Ketone (1,2-shift drives reaction)", { x: 0.5, y: 4.78, w: 5.7, h: 0.48, fontSize: 10, bold: true, color: C.gold, align: "center", valign: "middle" });
// Wagner-Meerwein
s.addShape(pres.ShapeType.roundRect, { x: 6.7, y: 1.05, w: 6.25, h: 5.1, fill: { color: C.white }, rectRadius: 0.1,
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.12 } });
s.addText("WAGNER-MEERWEIN REARRANGEMENT", { x: 6.9, y: 1.12, w: 5.85, h: 0.4, fontSize: 12, bold: true, color: C.teal });
const wmsteps = [
{ t: "Substrate\n(Alcohol / Halide)", f: C.blue },
{ t: "Ionization\nβ 1Β° or 2Β° Carbocation", f: C.orange },
{ t: "1,2-H or C shift\nβ More stable carbo+", f: C.accent },
{ t: "Nucleophile capture\nβ Rearranged product", f: C.green },
];
wmsteps.forEach((b, i) => {
stepBox(s, b.t, 6.9 + (i % 2) * 2.9, 1.62 + Math.floor(i / 2) * 1.35, 2.72, 1.08, b.f, C.white, 9.5);
if (i === 0) arrowRight(s, 9.65, 2.12, 0.32);
if (i === 1) arrowDown(s, 8.2, 2.73, 0.28);
if (i === 2) arrowRight(s, 9.65, 3.45, 0.32);
});
s.addShape(pres.ShapeType.roundRect, { x: 6.9, y: 4.1, w: 5.85, h: 0.72, fill: { color: C.navy }, rectRadius: 0.07 });
s.addText([
{ text: "Key: ", options: { bold: true, color: C.gold } },
{ text: "Rearrangement occurs whenever a more stable carbocation can be formed via 1,2-H or 1,2-C shift", options: { color: C.white } },
], { x: 7.0, y: 4.1, w: 5.65, h: 0.72, fontSize: 9.5, valign: "middle", wrap: true });
s.addText("Classic example: norbornyl cation (non-classical bridged carbocation)\nResponsible for 'abnormal' solvolysis products", {
x: 6.9, y: 4.92, w: 5.85, h: 0.62, fontSize: 9, color: "666666", italic: true, wrap: true
});
}
// βββ SLIDE: HOFMANN + BECKMANN ββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.purple);
headerBar(s, "19 & 20 | Hofmann Rearrangement + Beckmann Rearrangement", C.purple);
unitBadge(s, "UNIT 09", 11.9, 0.2, C.dark);
// Hofmann
s.addShape(pres.ShapeType.roundRect, { x: 0.3, y: 1.05, w: 6.1, h: 5.4, fill: { color: C.white }, rectRadius: 0.1,
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.12 } });
s.addText("HOFMANN REARRANGEMENT", { x: 0.5, y: 1.12, w: 5.7, h: 0.4, fontSize: 12, bold: true, color: C.purple });
const hofsteps = [
{ t: "Primary Amide\nR-CONHβ", f: C.blue },
{ t: "Brβ + NaOH\nβ N-Bromoamide\nR-CONHBr", f: C.teal },
{ t: "Base removes H\nβ Anion + Brβ» leaves\nβ Isocyanate R-N=C=O", f: C.orange },
{ t: "HβO hydrolysis\nβ Primary Amine\nR-NHβ + COβ", f: C.green },
];
hofsteps.forEach((b, i) => {
stepBox(s, b.t, 0.5 + (i % 2) * 2.85, 1.62 + Math.floor(i / 2) * 1.42, 2.65, 1.22, b.f, C.white, 9.5);
if (i === 0) arrowRight(s, 3.18, 2.18, 0.3);
if (i === 1) arrowDown(s, 1.75, 2.87, 0.3);
if (i === 2) arrowRight(s, 3.18, 3.62, 0.3);
});
s.addShape(pres.ShapeType.roundRect, { x: 0.5, y: 4.98, w: 5.7, h: 0.58, fill: { color: C.dark }, rectRadius: 0.07 });
s.addText("NET: RCONHβ β RNHβ (loses 1 carbon as COβ)\nConfig at R is RETAINED", {
x: 0.5, y: 4.98, w: 5.7, h: 0.58, fontSize: 10, bold: true, color: C.gold, align: "center", valign: "middle"
});
// Beckmann
s.addShape(pres.ShapeType.roundRect, { x: 6.7, y: 1.05, w: 6.25, h: 5.4, fill: { color: C.white }, rectRadius: 0.1,
shadow: { type: "outer", color: "000000", blur: 5, offset: 1, angle: 135, opacity: 0.12 } });
s.addText("BECKMANN REARRANGEMENT", { x: 6.9, y: 1.12, w: 5.85, h: 0.4, fontSize: 12, bold: true, color: C.teal });
const becksteps = [
{ t: "Ketoxime\nR-C(=NOH)-R'", f: C.blue },
{ t: "HβΊ activates OH\nβ Good leaving group", f: C.teal },
{ t: "ANTI group migrates\nCβN + OH leaves\nβ Nitrilium ion", f: C.orange },
{ t: "HβO attacks\nnitrilium carbon\nβ Amide product", f: C.green },
];
becksteps.forEach((b, i) => {
stepBox(s, b.t, 6.9 + (i % 2) * 2.9, 1.62 + Math.floor(i / 2) * 1.42, 2.72, 1.22, b.f, C.white, 9.5);
if (i === 0) arrowRight(s, 9.65, 2.18, 0.32);
if (i === 1) arrowDown(s, 8.22, 2.87, 0.3);
if (i === 2) arrowRight(s, 9.65, 3.62, 0.32);
});
s.addShape(pres.ShapeType.roundRect, { x: 6.9, y: 4.98, w: 5.85, h: 0.58, fill: { color: C.dark }, rectRadius: 0.07 });
s.addText("NET: Ketoxime β Amide | ANTI group migrates (STEREOSPECIFIC)\nβ Industrial: Cyclohexanone oxime β Caprolactam (Nylon-6)", {
x: 6.9, y: 4.98, w: 5.85, h: 0.58, fontSize: 9.5, bold: true, color: C.gold, align: "center", valign: "middle"
});
}
// βββ UNIT 10 DIVIDER ββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
darkBg(s, "1a001a");
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: C.purple } });
s.addText("UNIT 10", { x: 0.5, y: 1.5, w: 12.3, h: 0.8, fontSize: 52, bold: true, color: C.purple, align: "center", charSpacing: 14 });
s.addText("Carbanion Rearrangements", { x: 0.5, y: 2.5, w: 12.3, h: 0.7, fontSize: 28, color: C.white, align: "center" });
s.addShape(pres.ShapeType.rect, { x: 3.5, y: 3.42, w: 6.3, h: 0.05, fill: { color: C.gold } });
const u10 = ["Condensation Reactions (Aldol / Claisen)", "Favorskii Rearrangement", "Wittig Reaction"];
u10.forEach((n, i) => {
s.addText("β€ " + n, { x: 3.0, y: 3.7 + i * 0.65, w: 7.5, h: 0.6, fontSize: 14, color: C.white, align: "center" });
});
}
// βββ SLIDE: FAVORSKII βββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.orange);
headerBar(s, "22 | Favorskii Rearrangement β Carbanion-Driven Ring Contraction", C.orange);
unitBadge(s, "UNIT 10", 11.9, 0.2, C.dark);
const fsteps = [
{ t: "Ξ±-Halo Ketone\n(RCOCHβCl)", f: C.blue },
{ t: "Base removes\nΞ±'-H (other side)\nβ Enolate", f: C.teal },
{ t: "SNβ: enolate\ndisplaces halide\nβ Cyclopropanone", f: C.orange },
{ t: "Nuβ» (OHβ»/ORβ»)\nopens ring\nasymmetrically", f: C.purple },
{ t: "Rearranged\nAcid or Ester\n(ring contracted)", f: C.green },
];
fsteps.forEach((b, i) => {
stepBox(s, b.t, 0.35 + i * 2.55, 1.18, 2.2, 1.12, b.f, C.white, 9.5);
if (i < fsteps.length - 1) arrowRight(s, 2.6 + i * 2.55, 1.7, 0.32);
});
label(s, "Starting\nMaterial", 0.35, 1.03, 2.2, C.blue, 8);
label(s, "Nucleophile\n(base)", 2.9, 1.03, 2.2, C.teal, 8);
label(s, "KEY\nIntermediate", 5.45, 1.03, 2.2, C.orange, 8);
label(s, "Ring\nOpening", 8.0, 1.03, 2.2, C.purple, 8);
label(s, "Product", 10.55, 1.03, 2.2, C.green, 8);
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 2.55, w: 12.6, h: 0.55, fill: { color: C.dark }, rectRadius: 0.08 });
s.addText("NET: Ξ±-Halo Ketone + Base β Rearranged Carboxylic Acid / Ester (ring contracts by 1 C if cyclic)", {
x: 0.5, y: 2.55, w: 12.3, h: 0.55, fontSize: 11, bold: true, color: C.gold, align: "center", valign: "middle"
});
keyBox(s, [
"Cyclopropanone is the KEY intermediate (strained 3-membered ring)",
"Cyclic Ξ±-halo ketones β ring contraction (6-membered β 5-membered ring acid)",
"Semibenzilic mechanism: when NO Ξ±'-H exists (1,2-acyl shift path instead)",
"CONTRAST with Unit 09: Favorskii is carbanion-driven; pinacol/WM are carbocation-driven",
], 0.35, 3.3, 8.2, 1.65, C.navy);
s.addShape(pres.ShapeType.roundRect, { x: 8.85, y: 3.3, w: 4.1, h: 1.65, fill: { color: C.orange }, rectRadius: 0.1 });
s.addText("β EXAM TIP\n\nAlways identify:\n1. Is there an Ξ±'-H?\n(determines mechanism path)\n2. Product: acid (OHβ») or ester (ORβ»)?", {
x: 8.98, y: 3.35, w: 3.85, h: 1.55, fontSize: 9.5, color: C.white, valign: "top", wrap: true
});
}
// βββ SLIDE: WITTIG ββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.green);
headerBar(s, "23 | Wittig Reaction β Carbonyl β Alkene (C=O β C=C)", C.green);
unitBadge(s, "UNIT 10", 11.9, 0.2, C.dark);
const wsteps = [
{ t: "PhβP + R-X\nβ Phosphonium\nSalt", f: C.blue },
{ t: "BuLi (strong base)\ndeprotonates\nβ Ylide PhβP=CRβ", f: C.teal },
{ t: "Ylide (carbanion)\nattacks C=O\nβ Betaine", f: C.orange },
{ t: "Betaine cyclizes\nβ Oxaphosphetane\n(4-membered ring)", f: C.purple },
{ t: "[2+2] retro-cyclo.\nβ Alkene + PhβP=O", f: C.green },
];
wsteps.forEach((b, i) => {
stepBox(s, b.t, 0.35 + i * 2.55, 1.18, 2.2, 1.12, b.f, C.white, 9.5);
if (i < wsteps.length - 1) arrowRight(s, 2.6 + i * 2.55, 1.7, 0.32);
});
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 2.55, w: 12.6, h: 0.55, fill: { color: C.dark }, rectRadius: 0.08 });
s.addText("NET: RβC=O + PhβP=CRβ β RβC=CRβ + PhβP=O (replaces O with C)", {
x: 0.5, y: 2.55, w: 12.3, h: 0.55, fontSize: 11, bold: true, color: C.gold, align: "center", valign: "middle"
});
// Selectivity table
s.addText("ALKENE SELECTIVITY", { x: 0.35, y: 3.3, w: 12.6, h: 0.38, fontSize: 11, bold: true, color: C.dark });
const selRows = [
["Ylide Type", "Example", "Major Product", "Reason"],
["Non-stabilized\n(alkyl groups)", "PhβP=CH-alkyl\n(BuLi generated)", "Z-alkene (cis)", "Kinetic β less steric TS\noxaphosphetane"],
["Stabilized\n(EWG: ester, CN)", "PhβP=CHCOβEt\n(weaker base OK)", "E-alkene (trans)", "Thermodynamic β betaine\ncan equilibrate"],
["HWE variant\n(phosphonate)", "R-P(O)(OEt)β=CRβ\n+ base (NaH)", "E-alkene (trans)", "Better E-selectivity\neasier workup"],
];
const cws = [2.8, 3.5, 3.0, 3.2];
selRows.forEach((row, ri) => {
row.forEach((cell, ci) => {
const x = 0.35 + cws.slice(0, ci).reduce((a, b) => a + b, 0);
const bgFill = ri === 0 ? C.green : (ri % 2 === 0 ? C.white : C.ltgrey);
const textCol = ri === 0 ? C.white : C.black;
s.addShape(pres.ShapeType.rect, { x, y: 3.72 + ri * 0.82, w: cws[ci], h: 0.8, fill: { color: bgFill },
line: { color: C.midgrey, width: 0.5 } });
s.addText(cell, { x: x + 0.05, y: 3.72 + ri * 0.82, w: cws[ci] - 0.1, h: 0.8, fontSize: 8.5,
color: textCol, bold: ri === 0, valign: "middle", wrap: true });
});
});
}
// βββ SLIDE: ALDOL + CLAISEN CONDENSATION βββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.accent);
headerBar(s, "21 | Condensation Reactions β Aldol & Claisen", C.accent);
unitBadge(s, "UNIT 10", 11.9, 0.2, C.dark);
[
{
title: "ALDOL CONDENSATION", color: C.accent, x: 0.35,
steps: [
{ t: "Carbonyl\n(aldehyde or ketone)", f: C.blue },
{ t: "Base removes\nΞ±-H β Enolate", f: C.teal },
{ t: "Enolate attacks\nC=O β Ξ²-hydroxy\ncarbonyl (Aldol adduct)", f: C.orange },
{ t: "Heat eliminates\nHβO β Ξ±,Ξ²-unsaturated\ncarbonyl (Aldol product)", f: C.green },
],
net: "Aldehyde/Ketone β Ξ²-Hydroxy carbonyl (addition) or Ξ±,Ξ²-Unsaturated carbonyl (condensation)"
},
{
title: "CLAISEN CONDENSATION", color: C.blue, x: 6.85,
steps: [
{ t: "Ester\nR-COOR'", f: C.blue },
{ t: "NaOEt removes\nΞ±-H β Ester enolate", f: C.teal },
{ t: "Enolate attacks\nester C=O β Tetrahedral\nintermediate", f: C.orange },
{ t: "Loss of OR'β»\nβ Ξ²-Ketoester\nproduct", f: C.green },
],
net: "2 Esters β Ξ²-Ketoester + ROH | Dieckmann: intramolecular β cyclic Ξ²-ketoester"
},
].forEach((panel) => {
s.addText(panel.title, { x: panel.x + 0.2, y: 1.05, w: 5.8, h: 0.4, fontSize: 12, bold: true, color: panel.color });
panel.steps.forEach((b, i) => {
const col = i % 2;
const row = Math.floor(i / 2);
stepBox(s, b.t, panel.x + 0.2 + col * 2.85, 1.55 + row * 1.42, 2.65, 1.22, b.f, C.white, 9);
if (i === 0) arrowRight(s, panel.x + 2.88, 2.12, 0.3);
if (i === 1) arrowDown(s, panel.x + 1.42, 2.8, 0.28);
if (i === 2) arrowRight(s, panel.x + 2.88, 3.58, 0.3);
});
s.addShape(pres.ShapeType.roundRect, { x: panel.x + 0.2, y: 4.45, w: 5.9, h: 0.52, fill: { color: C.dark }, rectRadius: 0.07 });
s.addText(panel.net, { x: panel.x + 0.3, y: 4.45, w: 5.7, h: 0.52, fontSize: 8.5, bold: true, color: C.gold, valign: "middle", wrap: true });
});
// Divider
s.addShape(pres.ShapeType.rect, { x: 6.62, y: 1.05, w: 0.06, h: 4.05, fill: { color: C.midgrey } });
s.addShape(pres.ShapeType.roundRect, { x: 0.35, y: 5.15, w: 12.6, h: 0.68, fill: { color: C.navy }, rectRadius: 0.08 });
s.addText([
{ text: "Remember: ", options: { bold: true, color: C.gold } },
{ text: "Aldol = carbonyl + carbonyl (C-C bond forms); Claisen = ester + ester (C-C bond forms); both driven by enolate nucleophile attacking electrophilic carbonyl carbon", options: { color: C.white } },
], { x: 0.5, y: 5.15, w: 12.3, h: 0.68, fontSize: 9.5, valign: "middle", wrap: true });
}
// βββ SLIDE: COMPARISON TABLE ββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
lightBg(s);
topStrip(s, C.gold);
headerBar(s, "Quick Comparison β All Rearrangements at a Glance", C.dark);
const headers = ["Reaction", "Starting Material", "Key Intermediate", "Product", "Mechanism Type"];
const rows = [
["Arndt-Eistert", "Acid chloride", "Ketene (via Wolff)", "Homologated acid", "Carbene / 1,2-acyl shift"],
["Baeyer-Villiger", "Ketone", "Criegee intermediate", "Ester", "O-insertion / migration"],
["Pinacol", "1,2-Diol", "Tertiary carbocation", "Ketone", "1,2-shift (carbocation)"],
["Wagner-Meerwein", "Alcohol / Halide", "Carbocation", "Rearranged product", "1,2-H or C shift"],
["Wolff", "Ξ±-Diazoketone", "Oxocarbene", "Ketene", "1,2-acyl shift (carbene)"],
["Hofmann", "Primary amide", "Isocyanate (R-N=C=O)", "1Β° Amine (β1C)", "N-migration / nitrene-like"],
["Beckmann", "Ketoxime", "Nitrilium ion", "Amide", "Anti-group migration"],
["Favorskii", "Ξ±-Halo ketone", "Cyclopropanone", "Acid / Ester", "Carbanion + ring formation"],
["Wittig", "Carbonyl + ylide", "Oxaphosphetane", "Alkene + PhβP=O", "Cycloaddition / retrocyclo"],
["Cannizzaro", "Non-enolizable ald.", "Hydride transfer complex","Acid + Alcohol", "Disproportionation"],
];
const colW = [2.3, 2.3, 2.6, 2.3, 3.35];
const hColors = [C.dark, C.dark, C.dark, C.dark, C.dark];
headers.forEach((h, ci) => {
const x = 0.2 + colW.slice(0, ci).reduce((a, b) => a + b, 0);
s.addShape(pres.ShapeType.rect, { x, y: 1.05, w: colW[ci], h: 0.45, fill: { color: C.dark } });
s.addText(h, { x: x + 0.04, y: 1.05, w: colW[ci] - 0.08, h: 0.45, fontSize: 9.5, bold: true, color: C.gold, valign: "middle" });
});
const rowBg = [C.white, C.ltgrey];
rows.forEach((row, ri) => {
const rowColors = [C.accent, C.orange, C.orange, C.orange, C.orange, C.purple, C.teal, C.green, C.green, C.blue];
row.forEach((cell, ci) => {
const x = 0.2 + colW.slice(0, ci).reduce((a, b) => a + b, 0);
const bg = ci === 0 ? rowColors[ri] : rowBg[ri % 2];
const tc = ci === 0 ? C.white : C.black;
s.addShape(pres.ShapeType.rect, { x, y: 1.52 + ri * 0.54, w: colW[ci], h: 0.52, fill: { color: bg },
line: { color: C.midgrey, width: 0.4 } });
s.addText(cell, { x: x + 0.04, y: 1.52 + ri * 0.54, w: colW[ci] - 0.08, h: 0.52, fontSize: 8.5, color: tc, bold: ci === 0, valign: "middle", wrap: true });
});
});
}
// βββ SLIDE: MNEMONICS βββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
darkBg(s, C.dark);
topStrip(s, C.gold, 0.1);
s.addText("MNEMONICS & MEMORY AIDS", { x: 0.5, y: 0.18, w: 12.3, h: 0.55, fontSize: 20, bold: true, color: C.gold, align: "center", charSpacing: 4 });
const mnems = [
["Arndt-Eistert", "Diazo β Nβ loss β Wolff carbene β Ketene β Homologate (+1C)", C.accent],
["Baeyer-Villiger","O inserts beside BEST migrator: 3Β° > 2Β° > aryl > 1Β° > Me > H", C.orange],
["Diels-Alder", "s-CIS diene + EWG dienophile β 6-ring; ENDO = kinetic", C.green],
["Grignard", "RMgX attacks electrophile; HATES water; HCHOβ1Β°, RCHOβ2Β°, RβCOβ3Β°", C.teal],
["LAH vs NaBHβ", "LAH = STRONG (all carbonyls); NaBHβ = GENTLE (ketones/aldehydes only)", C.blue],
["Wolff-Kishner", "C=O β CHβ; HβNNHβ + KOH; for ACID-SENSITIVE substrates", C.purple],
["Pinacol", "1,2-Diol + HβΊ β lose OHβ» β carboβΊ β 1,2-SHIFT β ketone", C.orange],
["Hofmann", "AMIDE shrinks by 1C (Brβ/NaOH); isocyanate β amine; config RETAINED", C.purple],
["Beckmann", "ANTI group migrates; E & Z oximes give DIFFERENT amides; β caprolactam", C.teal],
["Favorskii", "Ξ±-Halo ketone + base β cyclopropanone β ring CONTRACTION", C.green],
["Wittig", "Ylide + C=O β alkene + PhβP=O; non-stabilized β Z; stabilized β E", C.green],
["Cannizzaro", "NO Ξ±-H + conc. NaOH β one OXIDIZED (acid) + one REDUCED (alcohol)", C.blue],
];
const perCol = 6;
mnems.forEach((m, i) => {
const col = Math.floor(i / perCol);
const row = i % perCol;
const x = 0.25 + col * 6.55;
const y = 0.88 + row * 1.05;
s.addShape(pres.ShapeType.roundRect, { x, y, w: 6.3, h: 0.9, fill: { color: m[2] }, rectRadius: 0.1 });
s.addText(m[0], { x: x + 0.1, y: y + 0.05, w: 6.1, h: 0.32, fontSize: 10, bold: true, color: C.white });
s.addText(m[1], { x: x + 0.1, y: y + 0.38, w: 6.1, h: 0.48, fontSize: 8.5, color: C.white, wrap: true, valign: "top" });
});
}
// βββ FINAL SLIDE ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
{
const s = pres.addSlide();
darkBg(s);
s.addShape(pres.ShapeType.rect, { x: 0, y: 0, w: 0.18, h: 7.5, fill: { color: C.gold } });
s.addText("YOU'VE GOT THIS!", { x: 0.5, y: 1.8, w: 12.3, h: 1.0, fontSize: 40, bold: true, color: C.white, align: "center" });
s.addShape(pres.ShapeType.rect, { x: 3.5, y: 3.0, w: 6.3, h: 0.05, fill: { color: C.gold } });
s.addText("23 Reactions | 4 Units | 1 Day\nOrganic Chemistry β Units 07-10", {
x: 0.5, y: 3.15, w: 12.3, h: 0.85, fontSize: 16, color: C.gold, align: "center", lineSpacingMultiple: 1.4
});
const tips = ["Draw every mechanism by hand β muscle memory beats reading", "Link related reactions: Arndt-Eistert β Wolff; Hofmann β Curtius β Lossen", "Unit 09 = carbocation drives shift; Unit 10 = carbanion drives shift", "Good luck on your exam! π―"];
tips.forEach((t, i) => {
s.addText("β " + t, { x: 2.5, y: 4.2 + i * 0.58, w: 8.5, h: 0.52, fontSize: 12, color: C.white, align: "center" });
});
s.addText("Prepared by Orris | May 24, 2026", { x: 0.5, y: 7.05, w: 12.3, h: 0.35, fontSize: 9, color: "888888", align: "center" });
}
// βββ WRITE ββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββββ
const outPath = "/home/daytona/workspace/organic-chem-summary/Organic_Chemistry_Mechanisms.pptx";
pres.writeFile({ fileName: outPath }).then(() => {
console.log("PPTX written:", outPath);
}).catch(err => {
console.error("Error:", err);
process.exit(1);
});
cd /home/daytona/workspace/organic-chem-summary && node generate_pptx.js 2>&1
~/organic-chem-summary/generate_pptx.js
Error: String not found in file: ' fill: { color: panel.color }, rectRadius: 0.1 });
s.addText(panel.title, { x: xBase + 0.1, y: 1.05, w: w - 0.2, h: 0.5, fontSize: 13, bold: true, color: C.white, valign: "middle" });'ls -lh /home/daytona/workspace/organic-chem-summary/Organic_Chemistry_Mechanismsβ¦
Organic Chemistry Mechanisms
Presentation Β· PPTX
| Slide(s) | Content |
|---|---|
| 1 | Cover β dark theme, all 4 unit badges |
| 2 | Table of Contents β all units with reaction lists |
| 3 | Unit 07 divider slide |
| 4 | Arndt-Eistert β 5-step flow diagram with net equation strip |
| 5 | Baeyer-Villiger β flow diagram + migratory aptitude bar (colour-coded) |
| 6 | Diels-Alder β requirements, orbital interaction, stereochemistry rules |
| 7 | Grignard + Metal Hydride β split panel with step flows and product table |
| 8 | Wolff-Kishner + Friedel-Crafts β side-by-side panels |
| 9 | Perkin + Cannizzaro + Mannich β 3-column panel layout |
| 10 | Unit 08 divider |
| 11 | Homolytic/Heterolytic Fission + Free Radical stability bar |
| 12 | Carbene + Nitrene β comparison tables (singlet vs triplet) |
| 13 | Unit 09 divider |
| 14 | Pinacol-Pinacolone + Wagner-Meerwein β grid flow diagrams |
| 15 | Hofmann + Beckmann β step-by-step flows with net result boxes |
| 16 | Unit 10 divider |
| 17 | Favorskii β 5-step flow + exam tip box |
| 18 | Wittig β flow + selectivity table (stabilized vs non-stabilized ylide) |
| 19 | Aldol + Claisen β split panel flows |
| 20 | Master Comparison Table β all 10 rearrangements |
| 21 | Mnemonics grid β 12 colour-coded memory aids |
| 22 | Closing slide |