attachment
attachment

I have a seminar on descending tract so how I explain this

Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Loading Image
Loading Image
Finding Sources
Finding Sources
Reading File
Reading File
Loading Image
I now have everything needed. Here is your complete seminar guide on Descending Tracts, structured exactly as per the marking criteria from your notice.

🧠 Seminar Guide: Descending Tracts

Department of Physiology | SAMC & PGI, Indore Time: 5-6 minutes | Total Marks: 10

1. INTRODUCTION (1 mark) - ~30 seconds

Start with:
"Good morning everyone. I am [Your Name], from [Batch/Roll No.]. Today I will be presenting on Descending Tracts - the motor pathways that carry voluntary and involuntary commands from the brain down to the spinal cord to control our muscles."
Hook line: "Every movement you make - typing, walking, even blinking - is made possible by these tracts."

2. SEQUENTIALLY ARRANGED CONTENT (2.5 marks)

Classification of Descending Tracts

Descending tracts are broadly divided into two systems:
SystemTractsFunction
Pyramidal (Lateral Motor System)Corticospinal, CorticobulbarVoluntary, fine, discrete movements
Extrapyramidal (Medial Motor System)Rubrospinal, Reticulospinal, Vestibulospinal, TectospinalPosture, tone, balance, gross movements

3. COVERED THE TOPIC (3 marks) - The main content

A. Corticospinal (Pyramidal) Tract - THE MOST IMPORTANT

Corticospinal (pyramidal) tract showing the pathway from motor cortex through internal capsule, pons, and medulla down to spinal cord
Fig: Corticospinal (Pyramidal) Tract - Guyton & Hall
Origin:
  • 30% from primary motor cortex (Area 4)
  • 30% from premotor and supplementary motor areas (Area 6)
  • 40% from somatosensory areas posterior to the central sulcus
Course (remember top to bottom):
  1. Cortex → through the posterior limb of the internal capsule
  2. → Basis pedunculi (crus cerebri) of the midbrain
  3. → Longitudinal fascicles of the pons
  4. → Pyramids of the medulla oblongata (this is where the tract gets its name)
  5. → Pyramidal decussation at the lower medulla (~85-90% of fibers cross)
  6. → Lateral corticospinal tract (crossed fibers) - in the lateral funiculus of the spinal cord
  7. → Ventral (anterior) corticospinal tract (uncrossed fibers, ~10-15%) - in the anterior funiculus
Termination: Mostly on interneurons in the intermediate zone of cord gray matter; a few directly on anterior motor neurons.
Key feature - Betz Cells:
  • Giant pyramidal cells found only in the primary motor cortex
  • ~60 Ξm in diameter, give rise to large 16 Ξm fibers
  • Transmit at 70 m/sec - fastest signals from brain to cord
  • ~34,000 Betz cell fibers per tract; total fibers >1 million (Betz cells = only 3%)
Function: Voluntary, fine, skilled movements - especially hands and fingers.

B. Corticorubrospinal (Rubrospinal) Tract

Corticorubrospinal pathway showing motor cortex to red nucleus to rubrospinal tract, with cerebellar connections
Fig: Corticorubrospinal pathway - Guyton & Hall
  • Origin: Red nucleus in the midbrain (magnocellular portion), which receives fibers from motor cortex via the corticorubral tract
  • Course: Crosses in lower midbrain (ventral tegmental decussation) → travels in lateral column adjacent to corticospinal tract
  • Termination: Interneurons in intermediate zone; some directly on anterior motor neurons
  • Function: Accessory pathway for relatively discrete limb movements (especially wrist movements); part of the lateral motor system together with the corticospinal tract

C. Reticulospinal Tracts

Vestibulospinal and reticulospinal tracts in the spinal cord cross-section showing excitatory and inhibitory pathways
Fig: Reticulospinal and vestibulospinal tracts - Guyton & Hall
Two sub-tracts with opposing functions:
TractOriginLocation in cordEffect
Pontine reticulospinalPontine reticular nucleiAnterior columnExcitatory - stimulates antigravity muscles
Medullary reticulospinalMedullary reticular nucleiLateral columnInhibitory - relaxes antigravity muscles
Function: Control of posture, axial/proximal muscles, balance, and muscle tone. Part of the medial motor system.

D. Vestibulospinal Tracts

  • Origin: Vestibular nuclei in the brainstem (Deiter's nucleus)
  • Two divisions:
    • Lateral vestibulospinal tract - excites extensor/antigravity muscles (ipsilateral)
    • Medial vestibulospinal tract - in the medial longitudinal fasciculus
  • Function: Maintains upright posture, coordinates head and eye movements with body balance

E. Tectospinal Tract

  • Origin: Superior colliculus (tectum of midbrain)
  • Crosses in the midbrain, descends in the anterior funiculus
  • Function: Reflex turning of head and eyes toward visual/auditory stimuli

Lateral vs Medial Motor System - Quick Summary Table

FeatureLateral (Pyramidal + Rubrospinal)Medial (Reticulospinal + Vestibulospinal)
Location in cordLateral funiculusAnterior/medial funiculus
Muscles controlledDistal limb musclesAxial, proximal, antigravity
Movement typeFine, skilled, discreteGross, postural, balance
DecussationLower medulla (pyramidal)Variable

Clinical Correlation (to impress the examiner!)

  • Upper Motor Neuron (UMN) lesion (e.g., stroke involving internal capsule): contralateral spastic paralysis, hyperreflexia, Babinski sign positive - because corticospinal + inhibitory cortical fibers are damaged together
  • Pyramidal tract alone lesion: loss of fine hand/finger movements, but some gross movements retained via rubrospinal tract
  • Decorticate posture: lesion above red nucleus → arms flexed, legs extended (rubrospinal still active)
  • Decerebrate posture: lesion below red nucleus → all four limbs extended (only vestibulospinal/reticulospinal active, unopposed)

4. CLEARLY AUDIBLE & CONFIDENT (1 mark)

Tips:
  • Speak at a moderate pace - do NOT rush
  • Face the audience, not the board
  • Use a pointer when showing diagrams
  • Pause briefly after important points like "pyramidal decussation" and "Betz cells"

5. PROPER USE OF A/V AIDS (1 mark)

Suggested slides/visuals:
  1. Slide 1: Classification table (pyramidal vs extrapyramidal)
  2. Slide 2: Diagram of corticospinal tract (the image above showing motor cortex → spinal cord pathway)
  3. Slide 3: Cross-section of spinal cord showing positions of all tracts
  4. Slide 4: Rubrospinal pathway diagram
  5. Slide 5: Reticulospinal/vestibulospinal diagram
  6. Slide 6: Clinical correlations (postures table)

6. SUMMARY AT THE END (1 mark) - ~30 seconds

"To summarize - descending tracts are the efferent motor highways of the CNS. The corticospinal tract is the primary pathway for voluntary fine movements, decussating at the medullary pyramids. The rubrospinal tract serves as an accessory lateral pathway. The reticulospinal and vestibulospinal tracts form the medial motor system controlling posture and tone. Lesions in these pathways produce characteristic UMN signs seen in clinical practice. Thank you."

7. FINISH WITHIN TIME (0.5 mark)

Rough time split for 5-6 minutes:
  • Introduction: 30 sec
  • Classification: 30 sec
  • Corticospinal tract: 2 min
  • Other tracts (rubro + reticulo + vestibulo): 1.5 min
  • Clinical correlations: 30 sec
  • Summary: 30 sec
  • Total: ~5.5 min ✓

Key numbers to remember:
  • Corticospinal tract: 30-30-40 rule for origin
  • 85-90% fibers decussate at lower medulla
  • Betz cells: 60 Ξm, 16 Ξm fibers, 70 m/sec conduction
  • 34,000 Betz fibers out of >1 million total (only 3%)
(Sources: Guyton & Hall Textbook of Medical Physiology, 14th ed., p. 689-693; Kandel's Principles of Neural Science, 6th ed., p. 867-868)

What I exactly explain in time

Here is your exact word-by-word script for 5-6 minutes. Just follow this and you'll cover everything perfectly.

ðŸŽĪ EXACT SEMINAR SCRIPT — Descending Tracts

(5-6 minutes | Follow second by second)


⏱ 0:00 – 0:30 | INTRODUCTION (1 mark)

"Good morning everyone. I am [Your Name], from [your batch]. Today my topic is Descending Tracts — the pathways that carry motor commands from the brain down to the spinal cord to control our muscles."
"These tracts are divided into two major systems — the Pyramidal system and the Extrapyramidal system."

⏱ 0:30 – 1:00 | CLASSIFICATION

Point to your slide/board and say:
"Descending tracts are classified as:
  • Pyramidal tracts — Corticospinal and Corticobulbar
  • Extrapyramidal tracts — Rubrospinal, Reticulospinal, Vestibulospinal, and Tectospinal"
"The pyramidal tracts control fine voluntary movements, while extrapyramidal tracts control posture, tone, and balance."

⏱ 1:00 – 3:00 | CORTICOSPINAL TRACT (most important — 2 full minutes)

Point to diagram and say:
"The most important descending tract is the Corticospinal tract, also called the Pyramidal tract."
Origin:
"It originates from three areas — 30% from primary motor cortex Area 4, 30% from premotor and supplementary motor areas, and 40% from somatosensory areas posterior to the central sulcus."
Course — say this like a journey:
"The fibers travel downward through the posterior limb of the internal capsule, then through the basis pedunculi of the midbrain, then through the longitudinal fascicles of the pons, and then form the pyramids of the medulla — which is why this tract is called the pyramidal tract."
"At the lower end of the medulla, about 85 to 90% of fibers cross to the opposite side — this is called the pyramidal decussation or decussation of pyramids. These crossed fibers form the lateral corticospinal tract in the lateral funiculus of the spinal cord."
"The remaining 10 to 15% fibers do not cross and descend as the ventral corticospinal tract in the anterior funiculus."
Termination:
"Most fibers terminate on interneurons in the intermediate zone of the cord gray matter. Very few terminate directly on anterior motor neurons."
Betz Cells — drop this fact confidently:
"The most important fibers in this tract originate from Betz cells — giant pyramidal cells found only in the primary motor cortex. They are 60 micrometers in diameter, conduct at 70 meters per second — the fastest signals from brain to spinal cord — and there are about 34,000 such fibers in each tract."
Function:
"The corticospinal tract is responsible for voluntary, fine, skilled movements — especially of the hands and fingers."

⏱ 3:00 – 4:30 | OTHER TRACTS (1.5 minutes)

Rubrospinal Tract:
"The Rubrospinal tract originates from the red nucleus in the midbrain. It crosses in the midbrain and travels in the lateral funiculus — just next to the corticospinal tract. Together, these two form the Lateral Motor System. It controls relatively discrete limb movements."
Reticulospinal Tracts:
"Next are the Reticulospinal tracts — there are two of them." "The Pontine reticulospinal tract is excitatory — it stimulates antigravity muscles." "The Medullary reticulospinal tract is inhibitory — it relaxes the same muscles." "Together they control posture and muscle tone. They form part of the Medial Motor System."
Vestibulospinal Tract:
"The Vestibulospinal tract originates from the vestibular nuclei. It has two parts — lateral and medial. It maintains upright posture and balance by exciting extensor muscles."
Tectospinal Tract:
"Finally, the Tectospinal tract arises from the superior colliculus and controls reflex turning of the head and eyes toward visual or auditory stimuli."

⏱ 4:30 – 5:15 | CLINICAL CORRELATION

Say confidently:
"Clinically, damage to these tracts produces Upper Motor Neuron lesions — seen in conditions like stroke." "Features include: contralateral spastic paralysis, hyperreflexia, and a positive Babinski sign."
"We also see characteristic postures:" "Decorticate posture — lesion above the red nucleus — arms are flexed, legs extended — because the rubrospinal tract is still working." "Decerebrate posture — lesion below the red nucleus — all four limbs extended — only vestibulospinal and reticulospinal tracts are active."

⏱ 5:15 – 5:45 | SUMMARY (1 mark)

"To summarize —" "Descending tracts are motor pathways carrying commands from brain to spinal cord." "The Corticospinal tract is the most important — it decussates at the medullary pyramids and controls fine voluntary movements." "The Rubrospinal tract is an accessory lateral pathway." "The Reticulospinal and Vestibulospinal tracts form the medial system controlling posture and tone." "Lesions cause UMN signs — spasticity, hyperreflexia, Babinski positive." "Thank you."

⏱ Done at ~5:45 ✅


📌 Quick Memory Cheatsheet

What to rememberValue
Corticospinal origin30 + 30 + 40 rule
Fibers that cross85-90% at lower medulla
Betz cell size60 Ξm
Betz fiber diameter16 Ξm
Conduction velocity70 m/sec
Lateral motor systemCorticospinal + Rubrospinal
Medial motor systemReticulospinal + Vestibulospinal
DecorticateLesion ABOVE red nucleus
DecerebrateLesion BELOW red nucleus

Just read this script 2-3 times before your seminar and you will be fully prepared. Good luck! ðŸŽŊ

How I write on board

Here is exactly what to write on the board, step by step, as you speak.

🖊ïļ BOARD WRITING PLAN — Descending Tracts


📋 BOARD LAYOUT (Divide board into 3 sections)

|_______________|___________________|_______________|
|   LEFT SIDE   |    CENTRE (main)  |   RIGHT SIDE  |
|  Classification|   Corticospinal  |   Other tracts|
|_______________|___________________|_______________|

✍ïļ STEP 1 — Write Heading First (Centre Top)

         DESCENDING TRACTS
         ═════════════════
Underline it with a double line. Takes 5 seconds.

✍ïļ STEP 2 — Left Side: Classification

Write this as you speak the classification:
CLASSIFICATION
──────────────
1. PYRAMIDAL
   â€Ē Corticospinal
   â€Ē Corticobulbar

2. EXTRAPYRAMIDAL
   â€Ē Rubrospinal
   â€Ē Reticulospinal
   â€Ē Vestibulospinal
   â€Ē Tectospinal

✍ïļ STEP 3 — Centre: Corticospinal Tract Course

Write this flow diagram as you explain the journey:
CORTICOSPINAL TRACT
────────────────────

  Motor Cortex (Area 4, 6, somatosensory)
           ↓
  Posterior limb of Internal Capsule
           ↓
  Basis Pedunculi (Midbrain)
           ↓
  Longitudinal fascicles (Pons)
           ↓
  Pyramids of Medulla
           ↓
  Pyramidal Decussation (lower medulla)
        ↙         ↘
  85-90%          10-15%
(crosses)       (uncrossed)
    ↓                ↓
Lateral CST      Ventral CST
(Lat. funiculus) (Ant. funiculus)
        ↓
  Interneurons / Anterior motor neurons

✍ïļ STEP 4 — Under the flow, write Betz Cell box

┌─────────────────────────────┐
│        BETZ CELLS           │
│  Size       = 60 ξm         │
│  Fiber dia  = 16 ξm         │
│  Velocity   = 70 m/sec      │
│  Number     = 34,000/tract  │
└─────────────────────────────┘

✍ïļ STEP 5 — Right Side: Other Tracts (simple table)

OTHER TRACTS
─────────────────────────────────────
Tract          Origin      Function
─────────────────────────────────────
Rubrospinal    Red nucleus  Fine limb mvmt
               (midbrain)   Lateral system

Pontine        Pontine      EXCITATORY
Reticulospinal reticular    (antigravity)
               nuclei

Medullary      Medullary    INHIBITORY
Reticulospinal reticular    (antigravity)
               nuclei

Vestibulospinal Vestibular  Posture/Balance
                nuclei

Tectospinal    Sup.         Head-eye reflex
               colliculus
─────────────────────────────────────

✍ïļ STEP 6 — Bottom Right Corner: Clinical (write last)

CLINICAL
─────────────────────────────
UMN lesion → Spastic paralysis
           → Hyperreflexia
           → Babinski +ve

Decorticate → Lesion ABOVE red nucleus
              Arms flexed, legs extended

Decerebrate → Lesion BELOW red nucleus
              All 4 limbs extended

⏱ Timing for Board Writing

StepWhat you writeWhen
Step 1HeadingVery beginning
Step 2ClassificationWhile saying intro
Step 3CST flow chartWhile explaining CST course
Step 4Betz cell boxWhile saying Betz cell facts
Step 5Other tracts tableWhile explaining extrapyramidal
Step 6ClinicalWhile explaining clinical

🔑 Golden Rules for Board Writing

  1. Write HEADINGS in CAPITALS — easy to read from back of class
  2. Use arrows (↓) for pathways — looks clean and professional
  3. Box important numbers — Betz cell data in a box stands out
  4. Never write full sentences — only keywords and numbers
  5. Write while talking — do not stop speaking to write
  6. Left hand points, right hand writes — keep facing the audience as much as possible
  7. Underline every heading

This board layout will look neat, complete, and professional — and will directly show the examiner that your content is well-organized (2.5 marks for sequentially arranged content). ðŸŽŊ

Create a PDF handout/notes I can print and study

Reading File
Running Command

mkdir -p /home/daytona/workspace/descending-tracts && ls /home/daytona/workspaceâ€Ķ

Writing File

~/descending-tracts/create_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, mm
from reportlab.platypus import (SimpleDocTemplate, Paragraph, Spacer, Table,
                                 TableStyle, HRFlowable, KeepTogether)
from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY
from reportlab.platypus import Flowable
import reportlab.lib.colors as rcolors

# ── colour palette ──────────────────────────────────────────────────────────
DARK_BLUE   = colors.HexColor('#1a3a5c')
MED_BLUE    = colors.HexColor('#2e6da4')
LIGHT_BLUE  = colors.HexColor('#d6e8f7')
ACCENT      = colors.HexColor('#e8523a')
YELLOW_HL   = colors.HexColor('#fff8cc')
GREEN       = colors.HexColor('#2d7a3a')
LIGHT_GREEN = colors.HexColor('#d4edda')
GRAY_BG     = colors.HexColor('#f5f5f5')
BORDER_GRAY = colors.HexColor('#cccccc')
WHITE       = colors.white

doc = SimpleDocTemplate(
    '/home/daytona/workspace/descending-tracts/Descending_Tracts_Handout.pdf',
    pagesize=A4,
    rightMargin=1.8*cm, leftMargin=1.8*cm,
    topMargin=1.5*cm, bottomMargin=1.5*cm
)

styles = getSampleStyleSheet()

# ── custom paragraph styles ─────────────────────────────────────────────────
def S(name, **kw):
    return ParagraphStyle(name, **kw)

title_style = S('Title2', fontSize=20, textColor=WHITE,
                alignment=TA_CENTER, fontName='Helvetica-Bold',
                spaceAfter=4, leading=24)

subtitle_style = S('Subtitle2', fontSize=10, textColor=LIGHT_BLUE,
                   alignment=TA_CENTER, fontName='Helvetica',
                   spaceAfter=2)

section_style = S('Section', fontSize=12, textColor=WHITE,
                  fontName='Helvetica-Bold', alignment=TA_LEFT,
                  spaceAfter=2, leading=16)

sub_section_style = S('SubSection', fontSize=10, textColor=DARK_BLUE,
                      fontName='Helvetica-Bold', spaceBefore=6, spaceAfter=3)

body_style = S('Body2', fontSize=9, textColor=colors.black,
               fontName='Helvetica', leading=13, spaceAfter=3,
               alignment=TA_JUSTIFY)

bullet_style = S('Bullet2', fontSize=9, textColor=colors.black,
                 fontName='Helvetica', leading=13, spaceAfter=2,
                 leftIndent=14, bulletIndent=4)

bold_body = S('BoldBody', fontSize=9, textColor=DARK_BLUE,
              fontName='Helvetica-Bold', leading=13, spaceAfter=2)

clinical_style = S('Clinical', fontSize=9, textColor=colors.HexColor('#7b1f1f'),
                   fontName='Helvetica-BoldOblique', leading=13, spaceAfter=2,
                   leftIndent=10)

tip_style = S('Tip', fontSize=8.5, textColor=GREEN,
              fontName='Helvetica-Bold', leading=12, spaceAfter=2)

footer_style = S('Footer', fontSize=7.5, textColor=colors.gray,
                 alignment=TA_CENTER, fontName='Helvetica-Oblique')

# ── helper: coloured banner ─────────────────────────────────────────────────
def banner(text, bg=DARK_BLUE, style=section_style, pad=6):
    return Table(
        [[Paragraph(text, style)]],
        colWidths=[17.4*cm],
        style=TableStyle([
            ('BACKGROUND', (0,0), (-1,-1), bg),
            ('TOPPADDING',    (0,0), (-1,-1), pad),
            ('BOTTOMPADDING', (0,0), (-1,-1), pad),
            ('LEFTPADDING',   (0,0), (-1,-1), 10),
            ('ROUNDEDCORNERS', [4]),
        ])
    )

def sub_banner(text):
    return banner(text, bg=MED_BLUE, pad=4)

# ── helper: info box ────────────────────────────────────────────────────────
def info_box(rows, bg=LIGHT_BLUE, border=MED_BLUE):
    data = [[Paragraph(r, body_style)] for r in rows]
    return Table(data, colWidths=[17.4*cm],
        style=TableStyle([
            ('BACKGROUND',    (0,0), (-1,-1), bg),
            ('BOX',           (0,0), (-1,-1), 0.8, border),
            ('TOPPADDING',    (0,0), (-1,-1), 4),
            ('BOTTOMPADDING', (0,0), (-1,-1), 4),
            ('LEFTPADDING',   (0,0), (-1,-1), 10),
        ]))

# ── helper: two-col table ───────────────────────────────────────────────────
def two_col_table(headers, rows, col_widths=None):
    if col_widths is None:
        col_widths = [5*cm, 12.4*cm]
    head_row = [Paragraph(h, S('th', fontName='Helvetica-Bold', fontSize=9,
                                textColor=WHITE)) for h in headers]
    data = [head_row] + [
        [Paragraph(str(c), body_style) for c in row] for row in rows
    ]
    ts = TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), DARK_BLUE),
        ('BACKGROUND',    (0,1), (-1,-1), GRAY_BG),
        ('ROWBACKGROUNDS',(0,1), (-1,-1), [WHITE, GRAY_BG]),
        ('BOX',           (0,0), (-1,-1), 0.5, BORDER_GRAY),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('TOPPADDING',    (0,0), (-1,-1), 4),
        ('BOTTOMPADDING', (0,0), (-1,-1), 4),
        ('LEFTPADDING',   (0,0), (-1,-1), 6),
        ('VALIGN',        (0,0), (-1,-1), 'TOP'),
    ])
    return Table(data, colWidths=col_widths,
                 style=ts, hAlign='LEFT')

# ── helper: multi-col table ─────────────────────────────────────────────────
def multi_col_table(headers, rows, col_widths):
    head_row = [Paragraph(h, S('th2', fontName='Helvetica-Bold', fontSize=8.5,
                                textColor=WHITE)) for h in headers]
    data = [head_row] + [
        [Paragraph(str(c), S('td', fontSize=8.5, fontName='Helvetica',
                              leading=12)) for c in row]
        for row in rows
    ]
    ts = TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), DARK_BLUE),
        ('ROWBACKGROUNDS',(0,1), (-1,-1), [WHITE, GRAY_BG]),
        ('BOX',           (0,0), (-1,-1), 0.5, BORDER_GRAY),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('TOPPADDING',    (0,0), (-1,-1), 4),
        ('BOTTOMPADDING', (0,0), (-1,-1), 4),
        ('LEFTPADDING',   (0,0), (-1,-1), 5),
        ('VALIGN',        (0,0), (-1,-1), 'TOP'),
    ])
    return Table(data, colWidths=col_widths, style=ts, hAlign='LEFT')

# ── helper: highlight box (yellow) ─────────────────────────────────────────
def highlight_box(text, bg=YELLOW_HL, border=colors.HexColor('#e6c800')):
    return Table([[Paragraph(text, S('hl', fontSize=9, fontName='Helvetica-Bold',
                                     textColor=DARK_BLUE, leading=13))]],
        colWidths=[17.4*cm],
        style=TableStyle([
            ('BACKGROUND',    (0,0), (-1,-1), bg),
            ('BOX',           (0,0), (-1,-1), 1, border),
            ('TOPPADDING',    (0,0), (-1,-1), 5),
            ('BOTTOMPADDING', (0,0), (-1,-1), 5),
            ('LEFTPADDING',   (0,0), (-1,-1), 10),
        ]))

# ── helper: clinical red box ────────────────────────────────────────────────
def red_box(rows):
    data = [[Paragraph(r, S('rb', fontSize=9, fontName='Helvetica',
                             textColor=colors.HexColor('#5c0000'), leading=13))]
            for r in rows]
    return Table(data, colWidths=[17.4*cm],
        style=TableStyle([
            ('BACKGROUND',    (0,0), (-1,-1), colors.HexColor('#fdecea')),
            ('BOX',           (0,0), (-1,-1), 1, ACCENT),
            ('TOPPADDING',    (0,0), (-1,-1), 4),
            ('BOTTOMPADDING', (0,0), (-1,-1), 4),
            ('LEFTPADDING',   (0,0), (-1,-1), 10),
        ]))

def sp(n=4): return Spacer(1, n)

# ════════════════════════════════════════════════════════════════════════════
# BUILD DOCUMENT
# ════════════════════════════════════════════════════════════════════════════
story = []

# ── TITLE BANNER ────────────────────────────────────────────────────────────
title_tbl = Table(
    [[Paragraph('DESCENDING TRACTS', title_style)],
     [Paragraph('Physiology Seminar Handout  |  Department of Physiology  |  SAMC & PGI, Indore', subtitle_style)]],
    colWidths=[17.4*cm],
    style=TableStyle([
        ('BACKGROUND', (0,0), (-1,-1), DARK_BLUE),
        ('TOPPADDING',    (0,0), (-1,-1), 10),
        ('BOTTOMPADDING', (0,0), (-1,-1), 10),
        ('LEFTPADDING',   (0,0), (-1,-1), 14),
        ('ROUNDEDCORNERS', [6]),
    ])
)
story += [title_tbl, sp(8)]

# ── SECTION 1: INTRODUCTION ──────────────────────────────────────────────────
story += [banner('1.  INTRODUCTION'), sp(4)]
story.append(Paragraph(
    'Descending tracts are bundles of nerve fibres that carry motor commands '
    '<b>from higher centres (brain)</b> downward to the <b>spinal cord</b> to '
    'control skeletal muscles. They are responsible for <b>voluntary movement, '
    'posture, muscle tone, and balance</b>.',
    body_style))
story += [sp(4)]

story.append(highlight_box(
    '⭐  KEY CONCEPT:  Every voluntary movement you perform — writing, walking, '
    'speaking — is initiated and controlled by these descending motor tracts.'))
story += [sp(8)]

# ── SECTION 2: CLASSIFICATION ────────────────────────────────────────────────
story += [banner('2.  CLASSIFICATION OF DESCENDING TRACTS'), sp(4)]

class_data = [
    ['PYRAMIDAL SYSTEM', 'EXTRAPYRAMIDAL SYSTEM'],
    ['â€Ē Corticospinal tract\n  (Lateral + Ventral)\nâ€Ē Corticobulbar tract',
     'â€Ē Rubrospinal tract\nâ€Ē Reticulospinal tract\n  (Pontine + Medullary)\n'
     'â€Ē Vestibulospinal tract\n  (Lateral + Medial)\nâ€Ē Tectospinal tract'],
    ['Fine, voluntary, discrete movements\n(especially hands & fingers)',
     'Posture, muscle tone, balance,\ngross/axial movements'],
]
ct = Table(class_data, colWidths=[8.7*cm, 8.7*cm],
    style=TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), MED_BLUE),
        ('TEXTCOLOR',     (0,0), (-1,0), WHITE),
        ('FONTNAME',      (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE',      (0,0), (-1,-1), 9),
        ('BACKGROUND',    (0,1), (0,1), LIGHT_BLUE),
        ('BACKGROUND',    (1,1), (1,1), colors.HexColor('#e8f4e8')),
        ('BACKGROUND',    (0,2), (0,2), colors.HexColor('#cce0f5')),
        ('BACKGROUND',    (1,2), (1,2), colors.HexColor('#d4edda')),
        ('BOX',           (0,0), (-1,-1), 0.8, MED_BLUE),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('TOPPADDING',    (0,0), (-1,-1), 6),
        ('BOTTOMPADDING', (0,0), (-1,-1), 6),
        ('LEFTPADDING',   (0,0), (-1,-1), 8),
        ('ALIGN',         (0,0), (-1,0), 'CENTER'),
        ('VALIGN',        (0,0), (-1,-1), 'TOP'),
    ]))
story += [ct, sp(8)]

# ── SECTION 3: CORTICOSPINAL TRACT ───────────────────────────────────────────
story += [banner('3.  CORTICOSPINAL (PYRAMIDAL) TRACT'), sp(4)]

story += [sub_banner('  3a.  Origin'), sp(3)]
origin_rows = [
    ['30%', 'Primary Motor Cortex — Area 4 (precentral gyrus)'],
    ['30%', 'Premotor cortex (Area 6) & Supplementary Motor Area (SMA)'],
    ['40%', 'Somatosensory areas — posterior to central sulcus (Areas 1, 2, 3)'],
]
story += [two_col_table(['%', 'Cortical Area of Origin'], origin_rows,
                         col_widths=[2*cm, 15.4*cm]), sp(6)]

story += [sub_banner('  3b.  Course (follow the pathway top → bottom)'), sp(3)]
course_text = [
    '<b>1. Motor Cortex</b> — fibres collect and converge',
    '<b>2. Posterior limb of Internal Capsule</b> — between caudate nucleus and putamen',
    '<b>3. Basis Pedunculi (Crus Cerebri)</b> — midbrain',
    '<b>4. Longitudinal fascicles of Pons</b> — fibres dispersed then regroup',
    '<b>5. Pyramids of Medulla Oblongata</b> — visible ventral bulge (gives the tract its name!)',
    '<b>6. Pyramidal Decussation</b> — lower medulla: 85–90% of fibres cross to the opposite side',
    '<b>7a. Lateral Corticospinal Tract</b> — crossed fibres → lateral funiculus of spinal cord',
    '<b>7b. Ventral (Anterior) Corticospinal Tract</b> — uncrossed fibres (10–15%) → anterior funiculus',
]
for c in course_text:
    story.append(Paragraph('â–ķ  ' + c, bullet_style))
story += [sp(4)]

story += [highlight_box(
    '📍  PYRAMIDAL DECUSSATION:  85–90% fibres cross at the lower medulla → '
    'form Lateral CST (contralateral).  10–15% remain uncrossed → form Ventral CST (ipsilateral, '
    'but most eventually cross in the cervical/upper thoracic cord).'), sp(6)]

story += [sub_banner('  3c.  Termination'), sp(3)]
story.append(Paragraph(
    'â€Ē Majority terminate on <b>interneurons</b> in the intermediate zone of cord gray matter<br/>'
    'â€Ē Some terminate on <b>sensory relay neurons</b> in the dorsal horn<br/>'
    'â€Ē Very few terminate <b>directly on anterior motor neurons</b> (monosynaptic — most important for fine finger control)',
    body_style))
story += [sp(6)]

story += [sub_banner('  3d.  Betz Cells — Key Facts'), sp(3)]
betz_data = [
    ['Parameter', 'Value'],
    ['Cell body diameter', '60 micrometres (ξm) — among the largest neurons in CNS'],
    ['Axon (fibre) diameter', '16 Ξm (large myelinated)'],
    ['Conduction velocity', '70 m/sec — fastest from brain to spinal cord'],
    ['Number per tract', '~34,000 Betz cell fibres'],
    ['Total fibres per CST', '>1,000,000'],
    ['Betz cells as % of total', 'Only 3%'],
    ['Location', 'ONLY in primary motor cortex (Area 4) — Layer V'],
]
bt = Table(betz_data, colWidths=[6*cm, 11.4*cm],
    style=TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), colors.HexColor('#e8523a')),
        ('TEXTCOLOR',     (0,0), (-1,0), WHITE),
        ('FONTNAME',      (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE',      (0,0), (-1,-1), 9),
        ('ROWBACKGROUNDS',(0,1), (-1,-1), [YELLOW_HL, WHITE]),
        ('BOX',           (0,0), (-1,-1), 0.8, ACCENT),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('TOPPADDING',    (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING',   (0,0), (-1,-1), 8),
        ('VALIGN',        (0,0), (-1,-1), 'TOP'),
    ]))
story += [bt, sp(6)]

story += [sub_banner('  3e.  Function'), sp(3)]
story.append(Paragraph(
    'Voluntary, fine, skilled, discrete movements — especially of the <b>distal muscles '
    '(hands and fingers)</b>. The corticospinal system is the primary pathway for executing '
    'precise motor commands.',
    body_style))
story += [sp(8)]

# ── SECTION 4: OTHER TRACTS ──────────────────────────────────────────────────
story += [banner('4.  EXTRAPYRAMIDAL TRACTS'), sp(4)]

# 4a Rubrospinal
story += [sub_banner('  4a.  Rubrospinal Tract'), sp(3)]
story.append(Paragraph(
    '<b>Origin:</b> Magnocellular (large-cell) portion of the <b>Red Nucleus</b>, midbrain (receives input from motor cortex via corticorubral tract and from cerebellum)<br/>'
    '<b>Decussation:</b> Crosses in the midbrain (ventral tegmental decussation)<br/>'
    '<b>Course:</b> Lateral funiculus of spinal cord — immediately adjacent and anterior to corticospinal tract<br/>'
    '<b>Termination:</b> Interneurons in intermediate zone; some directly on anterior motor neurons<br/>'
    '<b>Function:</b> Accessory pathway for relatively discrete limb movements; controls wrist movements even when CST is damaged<br/>'
    '<b>System:</b> Part of the <b>LATERAL MOTOR SYSTEM</b> (with corticospinal tract)',
    body_style))
story += [sp(5)]

# 4b Reticulospinal
story += [sub_banner('  4b.  Reticulospinal Tracts'), sp(3)]
ret_data = [
    ['Feature', 'Pontine Reticulospinal', 'Medullary Reticulospinal'],
    ['Origin', 'Pontine reticular nuclei\n(slightly posterior/lateral)', 'Medullary reticular nuclei\n(ventral and medial)'],
    ['Location in cord', 'Anterior (ventral) column', 'Lateral column'],
    ['Effect', '⮆ EXCITATORY\n(antigravity muscles)', '⮇ INHIBITORY\n(antigravity muscles)'],
    ['Excitation source', 'Vestibular nuclei +\ncerebellar deep nuclei', 'Corticospinal collaterals\n(cortical inhibitory input)'],
    ['Function', 'Stimulates axial/extensor\nmuscles; supports body\nagainst gravity', 'Inhibits same antigravity\nmuscles; allows relaxation'],
]
rt = Table(ret_data, colWidths=[4*cm, 6.7*cm, 6.7*cm],
    style=TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), MED_BLUE),
        ('TEXTCOLOR',     (0,0), (-1,0), WHITE),
        ('FONTNAME',      (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE',      (0,0), (-1,-1), 8.5),
        ('FONTNAME',      (0,1), (0,-1), 'Helvetica-Bold'),
        ('BACKGROUND',    (1,1), (1,-1), colors.HexColor('#e8f4e8')),
        ('BACKGROUND',    (2,1), (2,-1), colors.HexColor('#fdecea')),
        ('BOX',           (0,0), (-1,-1), 0.8, MED_BLUE),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('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 += [rt, sp(5)]

# 4c Vestibulospinal
story += [sub_banner('  4c.  Vestibulospinal Tracts'), sp(3)]
vest_data = [
    ['Feature', 'Lateral Vestibulospinal', 'Medial Vestibulospinal'],
    ['Origin', "Deiter's nucleus\n(lateral vestibular nucleus)", 'Medial vestibular nucleus'],
    ['Course', 'Entire spinal cord\n(anterior funiculus)', 'Cervical cord only\n(via MLF)'],
    ['Effect', 'EXCITATORY — ipsilateral\nextensor muscles', 'EXCITATORY/INHIBITORY\nneck/axial muscles'],
    ['Function', 'Maintains upright posture;\nbalance against gravity', 'Coordinates head/eye movements'],
]
vt = Table(vest_data, colWidths=[4*cm, 6.7*cm, 6.7*cm],
    style=TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), MED_BLUE),
        ('TEXTCOLOR',     (0,0), (-1,0), WHITE),
        ('FONTNAME',      (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE',      (0,0), (-1,-1), 8.5),
        ('FONTNAME',      (0,1), (0,-1), 'Helvetica-Bold'),
        ('BACKGROUND',    (1,1), (1,-1), LIGHT_BLUE),
        ('BACKGROUND',    (2,1), (2,-1), colors.HexColor('#e8f0fa')),
        ('BOX',           (0,0), (-1,-1), 0.8, MED_BLUE),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('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 += [vt, sp(5)]

# 4d Tectospinal
story += [sub_banner('  4d.  Tectospinal Tract'), sp(3)]
story.append(Paragraph(
    '<b>Origin:</b> Superior colliculus (tectum of midbrain)<br/>'
    '<b>Decussation:</b> Crosses in midbrain (dorsal tegmental decussation — fountain decussation of Meynert)<br/>'
    '<b>Course:</b> Anterior funiculus of cervical spinal cord<br/>'
    '<b>Termination:</b> Cervical motor neurons (mainly C1–C4)<br/>'
    '<b>Function:</b> Reflex turning of <b>head and eyes</b> toward sudden visual or auditory stimuli',
    body_style))
story += [sp(8)]

# ── SECTION 5: LATERAL vs MEDIAL MOTOR SYSTEM ──────────────────────────────
story += [banner('5.  LATERAL vs MEDIAL MOTOR SYSTEM'), sp(4)]
lm_data = [
    ['Feature', 'LATERAL Motor System', 'MEDIAL Motor System'],
    ['Tracts included', 'Corticospinal\nRubrospinal', 'Reticulospinal\nVestibulospinal\nTectospinal'],
    ['Location in cord', 'Lateral funiculus', 'Anterior/medial funiculus'],
    ['Muscles controlled', 'Distal limb muscles\n(hands, fingers, wrists)', 'Axial & proximal muscles\n(trunk, neck, girdles)'],
    ['Type of movement', 'Fine, skilled, discrete\nvoluntary movements', 'Gross, postural\nautomatic movements'],
    ['Decussation', 'Contralateral\n(crosses in medulla/midbrain)', 'Mostly ipsilateral\nor bilateral'],
    ['Damage effect', 'Loss of fine motor control\nof distal muscles', 'Postural instability\nimpaired tone'],
]
lmt = Table(lm_data, colWidths=[4*cm, 6.7*cm, 6.7*cm],
    style=TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), DARK_BLUE),
        ('TEXTCOLOR',     (0,0), (-1,0), WHITE),
        ('FONTNAME',      (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE',      (0,0), (-1,-1), 8.5),
        ('FONTNAME',      (0,1), (0,-1), 'Helvetica-Bold'),
        ('BACKGROUND',    (1,1), (1,-1), LIGHT_BLUE),
        ('BACKGROUND',    (2,1), (2,-1), LIGHT_GREEN),
        ('BOX',           (0,0), (-1,-1), 0.8, DARK_BLUE),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('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 += [lmt, sp(8)]

# ── SECTION 6: CLINICAL CORRELATIONS ────────────────────────────────────────
story += [banner('6.  CLINICAL CORRELATIONS', bg=colors.HexColor('#8b1a1a')), sp(4)]

story.append(Paragraph('<b>A.  Upper Motor Neuron (UMN) Lesion</b>', sub_section_style))
story += [red_box([
    'â€Ē Caused by damage to corticospinal + accessory cortical fibers (e.g., stroke involving internal capsule)',
    'â€Ē <b>Contralateral</b> spastic paralysis (because fibers have crossed)',
    'â€Ē <b>Hyperreflexia</b> — deep tendon reflexes exaggerated',
    'â€Ē <b>Positive Babinski sign</b> — big toe extends upward on plantar stimulation',
    'â€Ē <b>Spasticity</b> — increased muscle tone (due to loss of cortical inhibition on reticular/vestibular nuclei)',
    'â€Ē <b>No muscle wasting</b> (lower motor neuron intact)',
]), sp(5)]

story.append(Paragraph('<b>B.  Decorticate vs Decerebrate Posture</b>', sub_section_style))
posture_data = [
    ['Feature', 'DECORTICATE Posture', 'DECEREBRATE Posture'],
    ['Level of lesion', 'ABOVE red nucleus\n(cortex/internal capsule)', 'BELOW red nucleus\n(midbrain/pons)'],
    ['Upper limbs', 'FLEXED\n(arms, wrists, fingers)', 'EXTENDED and internally rotated'],
    ['Lower limbs', 'Extended', 'Extended'],
    ['Reason', 'Rubrospinal tract intact\n→ some flexion preserved', 'Only vestibulospinal &\nreticulospinal active\n→ pure extensor tone'],
    ['Prognosis', 'Less severe', 'More severe'],
]
pt = Table(posture_data, colWidths=[4*cm, 6.7*cm, 6.7*cm],
    style=TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), colors.HexColor('#8b1a1a')),
        ('TEXTCOLOR',     (0,0), (-1,0), WHITE),
        ('FONTNAME',      (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE',      (0,0), (-1,-1), 8.5),
        ('FONTNAME',      (0,1), (0,-1), 'Helvetica-Bold'),
        ('BACKGROUND',    (1,1), (1,-1), colors.HexColor('#fdecea')),
        ('BACKGROUND',    (2,1), (2,-1), colors.HexColor('#fff0e0')),
        ('BOX',           (0,0), (-1,-1), 0.8, colors.HexColor('#8b1a1a')),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('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 += [pt, sp(5)]

story.append(Paragraph('<b>C.  Isolated Pyramidal Tract Lesion</b>', sub_section_style))
story += [red_box([
    'â€Ē Loss of fine voluntary movements of the hand and fingers',
    'â€Ē Gross limb movements retained (via rubrospinal tract)',
    'â€Ē Wrist movements preserved if rubrospinal tract intact',
    'â€Ē True isolated pyramidal lesion is rare — most strokes damage adjacent areas too',
]), sp(8)]

# ── SECTION 7: QUICK MEMORY TABLES ──────────────────────────────────────────
story += [banner('7.  ALL TRACTS AT A GLANCE — MASTER SUMMARY TABLE'), sp(4)]
master_data = [
    ['Tract', 'Origin', 'Decussation', 'Location\nin Cord', 'Function'],
    ['Lateral\nCorticospinal', 'Motor cortex\n(Areas 4,6,SSA)', 'Lower medulla\n(85-90%)', 'Lateral\nfuniculus', 'Fine voluntary\nmovements'],
    ['Ventral\nCorticospinal', 'Motor cortex', 'Cervical/thoracic\ncord (10-15%)', 'Anterior\nfuniculus', 'Bilateral\npostural control'],
    ['Corticobulbar', 'Motor cortex', 'Variable\n(to brainstem)', 'Internal\ncapsule (genu)', 'Head & face\nmuscles (CN nuclei)'],
    ['Rubrospinal', 'Red nucleus\n(midbrain)', 'Midbrain\n(ventral tegmental)', 'Lateral\nfuniculus', 'Discrete distal\nlimb movements'],
    ['Pontine\nReticulospinal', 'Pontine reticular\nnuclei', 'Uncrossed\n(ipsilateral)', 'Anterior\nfuniculus', 'Excites antigravity\nmuscles'],
    ['Medullary\nReticulospinal', 'Medullary reticular\nnuclei', 'Crossed &\nuncrossed', 'Lateral\nfuniculus', 'Inhibits antigravity\nmuscles'],
    ['Lateral\nVestibulospinal', "Deiter's\nnucleus", 'Uncrossed\n(ipsilateral)', 'Anterior\nfuniculus', 'Excites extensors;\nbalance/posture'],
    ['Medial\nVestibulospinal', 'Medial vestibular\nnucleus', 'Bilateral', 'Anterior\nfuniculus (MLF)', 'Head-eye\ncoordination'],
    ['Tectospinal', 'Superior\ncolliculus', 'Midbrain\n(Meynert decuss.)', 'Anterior\nfuniculus', 'Reflex head-eye\norientation'],
]
mt = Table(master_data, colWidths=[3.2*cm, 3.6*cm, 3.2*cm, 2.8*cm, 4.6*cm],
    style=TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), DARK_BLUE),
        ('TEXTCOLOR',     (0,0), (-1,0), WHITE),
        ('FONTNAME',      (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE',      (0,0), (-1,-1), 7.5),
        ('ROWBACKGROUNDS',(0,1), (-1,-1), [WHITE, GRAY_BG]),
        ('BOX',           (0,0), (-1,-1), 0.8, DARK_BLUE),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('TOPPADDING',    (0,0), (-1,-1), 4),
        ('BOTTOMPADDING', (0,0), (-1,-1), 4),
        ('LEFTPADDING',   (0,0), (-1,-1), 4),
        ('VALIGN',        (0,0), (-1,-1), 'TOP'),
    ]))
story += [mt, sp(8)]

# ── SECTION 8: KEY NUMBERS CHEATSHEET ───────────────────────────────────────
story += [banner('8.  KEY NUMBERS & FACTS TO MEMORISE'), sp(4)]

nums_data = [
    ['FACT', 'VALUE / DETAIL'],
    ['CST origin — primary motor cortex', '30%'],
    ['CST origin — premotor + SMA', '30%'],
    ['CST origin — somatosensory cortex', '40%'],
    ['Fibres that decussate at lower medulla', '85–90%'],
    ['Fibres forming ventral CST (uncrossed)', '10–15%'],
    ['Betz cell body diameter', '60 Ξm'],
    ['Betz cell axon diameter', '16 Ξm (largest myelinated fibres)'],
    ['Betz cell conduction velocity', '70 m/sec (fastest cortex → cord)'],
    ['Betz cell fibres per tract', '~34,000'],
    ['Total fibres per corticospinal tract', '>1,000,000'],
    ['Betz cells as % of total CST fibres', 'Only 3%'],
    ['Decorticate: lesion level', 'ABOVE red nucleus'],
    ['Decerebrate: lesion level', 'BELOW red nucleus'],
]
nt = Table(nums_data, colWidths=[10*cm, 7.4*cm],
    style=TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), colors.HexColor('#e8523a')),
        ('TEXTCOLOR',     (0,0), (-1,0), WHITE),
        ('FONTNAME',      (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE',      (0,0), (-1,-1), 9),
        ('ROWBACKGROUNDS',(0,1), (-1,-1), [YELLOW_HL, WHITE]),
        ('BOX',           (0,0), (-1,-1), 0.8, ACCENT),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('TOPPADDING',    (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING',   (0,0), (-1,-1), 8),
        ('VALIGN',        (0,0), (-1,-1), 'MIDDLE'),
    ]))
story += [nt, sp(8)]

# ── SECTION 9: SEMINAR SCRIPT SUMMARY ───────────────────────────────────────
story += [banner('9.  SEMINAR SPEAKING OUTLINE (5–6 minutes)'), sp(4)]
outline_data = [
    ['Time', 'What to Say', 'Marks'],
    ['0:00–0:30', 'Introduction — name yourself, introduce topic, state definition of descending tracts', '1'],
    ['0:30–1:00', 'Classification — pyramidal vs extrapyramidal, show table on board', '—'],
    ['1:00–3:00', 'Corticospinal tract — origin (30-30-40), course (internal capsule → pyramidal decussation), Betz cells, function', '3'],
    ['3:00–4:30', 'Other tracts — rubrospinal, reticulospinal (excitatory/inhibitory), vestibulospinal, tectospinal', '—'],
    ['4:30–5:15', 'Clinical correlations — UMN lesion features, decorticate vs decerebrate posture', '—'],
    ['5:15–5:45', 'Summary — recap 5 key points, thank audience', '1'],
]
ot = Table(outline_data, colWidths=[2.5*cm, 12.9*cm, 2*cm],
    style=TableStyle([
        ('BACKGROUND',    (0,0), (-1,0), MED_BLUE),
        ('TEXTCOLOR',     (0,0), (-1,0), WHITE),
        ('FONTNAME',      (0,0), (-1,0), 'Helvetica-Bold'),
        ('FONTSIZE',      (0,0), (-1,-1), 9),
        ('ROWBACKGROUNDS',(0,1), (-1,-1), [WHITE, GRAY_BG]),
        ('BOX',           (0,0), (-1,-1), 0.8, MED_BLUE),
        ('INNERGRID',     (0,0), (-1,-1), 0.3, BORDER_GRAY),
        ('TOPPADDING',    (0,0), (-1,-1), 5),
        ('BOTTOMPADDING', (0,0), (-1,-1), 5),
        ('LEFTPADDING',   (0,0), (-1,-1), 6),
        ('VALIGN',        (0,0), (-1,-1), 'TOP'),
        ('ALIGN',         (2,0), (2,-1), 'CENTER'),
    ]))
story += [ot, sp(8)]

# ── FOOTER NOTE ─────────────────────────────────────────────────────────────
story.append(HRFlowable(width='100%', thickness=0.5, color=BORDER_GRAY))
story += [sp(4)]
story.append(Paragraph(
    'Sources: Guyton & Hall Textbook of Medical Physiology, 14th Edition, pp. 689–693  |  '
    "Kandel's Principles of Neural Science, 6th Edition, pp. 867–868  |  "
    'SAMC & PGI Physiology Seminar — July 2026',
    footer_style))

# ── BUILD ────────────────────────────────────────────────────────────────────
doc.build(story)
print("PDF created successfully.")
Running Command

cd /home/daytona/workspace/descending-tracts && python create_pdf.py

Running Command

ls -lh /home/daytona/workspace/descending-tracts/

Your printable PDF handout is ready! Download it here:

Descending Tracts Handout

PDF Document · PDF


What's inside the PDF (9 sections, print-ready A4):

SectionContent
1. IntroductionDefinition and overview
2. ClassificationPyramidal vs Extrapyramidal — colour-coded table
3. Corticospinal TractOrigin (30-30-40), full course pathway, Betz cell data table, termination, function
4. Extrapyramidal TractsRubrospinal, Reticulospinal (comparison table), Vestibulospinal (comparison table), Tectospinal
5. Lateral vs Medial SystemSide-by-side comparison table
6. Clinical CorrelationsUMN lesion features, Decorticate vs Decerebrate posture table
7. Master Summary TableAll 9 tracts — origin, decussation, location, function in one table
8. Key Numbers CheatsheetAll important numbers highlighted in yellow (great for last-minute revision)
9. Seminar Speaking OutlineTimed script summary (0:00 to 5:45)
Just print it, read it twice, and you are ready for the seminar. Good luck! ðŸŽŊ
This is a shared conversation. Sign in to Orris to start your own chat.