attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment
attachment

Give me a detailed explanation of all the questions from section b and c for my first year mbbs exams, taking reference from bd chaurasiya, make the answers point based and diagrammatic

analyse_media
analyse_media
analyse_media
analyse_media
analyse_media
Reading File
Finding Sources
Finding Sources
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
Reading File
Reading File
Finding Sources
Finding Sources
Loading Image
Loading Image
Loading Image
Loading Image
Loading Image

And compile your answers into a pdf

Reading File
Running Command

mkdir -p /home/daytona/workspace/anatomy-exam && ls /home/daytona/workspace/anat…

Are you working on it?

Keep on sending the ones that you're done with while working on the others

Okay make it in separate PDFs for each paper and then send

Writing File

~/anatomy-exam/generate_pdfs.py

from reportlab.lib.pagesizes import A4
from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle
from reportlab.lib.units import cm
from reportlab.lib import colors
from reportlab.platypus import SimpleDocTemplate, Paragraph, Spacer, HRFlowable, Table, TableStyle, KeepTogether
from reportlab.lib.enums import TA_LEFT, TA_CENTER, TA_JUSTIFY

W, H = A4

def make_styles():
    s = getSampleStyleSheet()
    styles = {}
    styles['title'] = ParagraphStyle('title', fontSize=16, fontName='Helvetica-Bold',
        textColor=colors.HexColor('#1a237e'), alignment=TA_CENTER, spaceAfter=6)
    styles['subtitle'] = ParagraphStyle('subtitle', fontSize=11, fontName='Helvetica',
        textColor=colors.HexColor('#37474f'), alignment=TA_CENTER, spaceAfter=14)
    styles['section'] = ParagraphStyle('section', fontSize=13, fontName='Helvetica-Bold',
        textColor=colors.white, backColor=colors.HexColor('#1a237e'),
        borderPad=6, spaceAfter=8, spaceBefore=12, leftIndent=0)
    styles['qhead'] = ParagraphStyle('qhead', fontSize=11, fontName='Helvetica-Bold',
        textColor=colors.HexColor('#0d47a1'), spaceBefore=10, spaceAfter=4)
    styles['case'] = ParagraphStyle('case', fontSize=9.5, fontName='Helvetica-Oblique',
        textColor=colors.HexColor('#37474f'), backColor=colors.HexColor('#e8f5e9'),
        borderPad=5, spaceAfter=6, leftIndent=8, rightIndent=8)
    styles['subq'] = ParagraphStyle('subq', fontSize=10, fontName='Helvetica-Bold',
        textColor=colors.HexColor('#1565c0'), spaceBefore=6, spaceAfter=2, leftIndent=8)
    styles['ans_head'] = ParagraphStyle('ans_head', fontSize=10, fontName='Helvetica-Bold',
        textColor=colors.HexColor('#2e7d32'), spaceBefore=4, spaceAfter=2, leftIndent=12)
    styles['bullet'] = ParagraphStyle('bullet', fontSize=9.5, fontName='Helvetica',
        textColor=colors.HexColor('#212121'), leftIndent=28, firstLineIndent=-10,
        spaceAfter=2, leading=13)
    styles['subbullet'] = ParagraphStyle('subbullet', fontSize=9, fontName='Helvetica',
        textColor=colors.HexColor('#424242'), leftIndent=44, firstLineIndent=-10,
        spaceAfter=1, leading=12)
    styles['diagram'] = ParagraphStyle('diagram', fontSize=8.5, fontName='Courier',
        textColor=colors.HexColor('#1a237e'), backColor=colors.HexColor('#f3f4f6'),
        borderPad=6, spaceAfter=4, leftIndent=12, leading=11)
    styles['note'] = ParagraphStyle('note', fontSize=9, fontName='Helvetica-Oblique',
        textColor=colors.HexColor('#6a1b9a'), leftIndent=12, spaceAfter=4)
    return styles

def B(text):   return f'<b>{text}</b>'
def I(text):   return f'<i>{text}</i>'
def U(text):   return f'<u>{text}</u>'

def bullet(st, text):
    return Paragraph(f'• {text}', st['bullet'])

def subbullet(st, text):
    return Paragraph(f'  – {text}', st['subbullet'])

def subq(st, label, text):
    return Paragraph(f'{label} {text}', st['subq'])

def diag(st, lines):
    joined = '<br/>'.join(lines)
    return Paragraph(joined, st['diagram'])

def hr():
    return HRFlowable(width='100%', thickness=0.5, color=colors.HexColor('#90a4ae'), spaceAfter=4)

def section_header(st, text):
    return Paragraph(f'&nbsp;&nbsp;{text}', st['section'])

def qhead(st, text):
    return Paragraph(text, st['qhead'])

# ─────────────────────────────────────────────
# PAPER 1
# ─────────────────────────────────────────────
def paper1(st):
    story = []
    story.append(Paragraph('FIRST YEAR MBBS ANATOMY', st['title']))
    story.append(Paragraph('Paper 1 — Sections B &amp; C  |  Detailed Answers (BD Chaurasia Reference)', st['subtitle']))
    story.append(hr())

    # ── SECTION B ──
    story.append(section_header(st, 'SECTION B'))

    # Q1 Case
    story.append(qhead(st, 'Q1. Case Study: Deep cut in right posterior triangle of neck'))
    story.append(Paragraph('<i>Middle-aged woman, deep cut in posterior triangle → difficulty combing hair</i>', st['case']))

    story.append(subq(st, '(a)', 'Which blood vessel is severed?'))
    story += [
        bullet(st, B('External Jugular Vein (EJV)') + ' — most superficial vessel crossing the posterior triangle'),
        bullet(st, 'It runs from angle of mandible → subclavian vein, crossing superficial to sternocleidomastoid (SCM)'),
        bullet(st, 'Lies in superficial fascia; easily cut by a deep skin incision in this region'),
        bullet(st, 'Other vessels in the triangle: subclavian artery (floor level), transverse cervical &amp; suprascapular arteries'),
    ]

    story.append(subq(st, '(b)', 'Important nerves in the posterior triangle'))
    story += [
        bullet(st, B('Spinal Accessory Nerve (CN XI)') + ' — motor to trapezius &amp; SCM; crosses obliquely through the triangle'),
        bullet(st, B('Cutaneous branches of cervical plexus') + ' (all emerge at Erb\'s point / posterior border of SCM):'),
        subbullet(st, 'Lesser occipital nerve (C2) — scalp behind ear'),
        subbullet(st, 'Great auricular nerve (C2,3) — ear &amp; parotid region'),
        subbullet(st, 'Transverse cervical nerve (C2,3) — anterior neck'),
        subbullet(st, 'Supraclavicular nerves (C3,4) — shoulder &amp; clavicle'),
        bullet(st, B('Brachial plexus trunks') + ' — in lower part of triangle, behind subclavian artery'),
        bullet(st, B('Phrenic nerve') + ' — on anterior scalene (floor), C3,4,5'),
    ]

    story.append(subq(st, '(c)', 'Why difficulty in combing hair?'))
    story += [
        bullet(st, 'Combing hair requires ' + B('abduction of arm above 90°') + ' + external rotation at shoulder'),
        bullet(st, B('Spinal Accessory Nerve (CN XI)') + ' was injured by the deep cut'),
        bullet(st, 'CN XI innervates ' + B('Trapezius muscle') + ' — responsible for:'),
        subbullet(st, 'Rotating scapula upward (needed for arm elevation beyond 90°)'),
        subbullet(st, 'Retraction and depression of scapula'),
        bullet(st, 'Loss of trapezius → ' + B('inability to abduct arm above 90°') + ' → cannot comb hair'),
        bullet(st, 'Also causes ' + B('winging of scapula') + ' (mild, unlike serratus anterior palsy)'),
    ]

    story.append(subq(st, '(d)', 'Floor muscles + Diagram of Posterior Triangle'))
    story += [
        bullet(st, B('Floor muscles') + ' (covered by prevertebral fascia, from above downward):'),
        subbullet(st, '1. Splenius capitis'),
        subbullet(st, '2. Levator scapulae'),
        subbullet(st, '3. Posterior scalene'),
        subbullet(st, '4. Middle scalene'),
        subbullet(st, '5. Anterior scalene'),
    ]
    story.append(diag(st, [
        '         DIAGRAM — POSTERIOR TRIANGLE OF NECK',
        '  ┌─────────────────────────────────────────────┐',
        '  │     Mastoid process (apex)                  │',
        '  │           /\\                                │',
        '  │          /  \\                               │',
        '  │   SCM   /    \\  Trapezius                  │',
        '  │ (ant.) /  PT  \\ (post.)                    │',
        '  │       /  border\\                            │',
        '  │      /──────────\\                           │',
        '  │  Omohyoid divides into:                     │',
        '  │  Upper = Occipital triangle                 │',
        '  │  Lower = Subclavian/Omoclavicular triangle  │',
        '  │          _______________                    │',
        '  │         Clavicle (base)                     │',
        '  │                                             │',
        '  │  Contents: EJV, CN XI, Cervical plexus,    │',
        '  │  Brachial plexus (lower), Subclavian A     │',
        '  └─────────────────────────────────────────────┘',
    ]))

    story.append(Spacer(1, 6))

    # Q2
    story.append(qhead(st, 'Q2. Short Notes (any four)'))

    # (a) Speech areas
    story.append(subq(st, '(a)', 'Speech Areas'))
    story += [
        bullet(st, B('Broca\'s area') + ' (Area 44, 45) — Inferior frontal gyrus, dominant hemisphere'),
        subbullet(st, 'Motor speech area — controls muscles of speech production'),
        subbullet(st, 'Damage → Expressive (motor) aphasia — cannot speak but understands'),
        bullet(st, B('Wernicke\'s area') + ' (Area 22) — Superior temporal gyrus, posterior part'),
        subbullet(st, 'Sensory speech area — comprehension of spoken &amp; written language'),
        subbullet(st, 'Damage → Receptive (sensory) aphasia — speaks fluently but meaninglessly'),
        bullet(st, B('Arcuate fasciculus') + ' — connects Broca\'s and Wernicke\'s areas'),
        subbullet(st, 'Damage → Conduction aphasia'),
        bullet(st, B('Angular gyrus') + ' (Area 39) — reading and writing'),
        bullet(st, 'All areas are in the ' + B('dominant (usually left) hemisphere')),
    ]
    story.append(diag(st, [
        '  SPEECH AREAS (Lateral view, left hemisphere):',
        '  ┌──────────────────────────────────────────┐',
        '  │  FRONTAL     PARIETAL      OCCIPITAL      │',
        '  │  [Broca 44,45]  [Angular g. 39]          │',
        '  │      |               |                    │',
        '  │  TEMPORAL                                 │',
        '  │  [Wernicke 22] ←─── Arcuate fasciculus   │',
        '  └──────────────────────────────────────────┘',
    ]))

    # (b) Cubital fossa
    story.append(subq(st, '(b)', 'Cubital Fossa'))
    story += [
        bullet(st, B('Definition:') + ' Triangular depression in front of elbow'),
        bullet(st, B('Boundaries:')),
        subbullet(st, 'Lateral: Brachioradialis'),
        subbullet(st, 'Medial: Pronator teres'),
        subbullet(st, 'Superior (base): Imaginary line joining medial &amp; lateral epicondyles'),
        subbullet(st, 'Apex: Where brachioradialis and pronator teres meet'),
        subbullet(st, 'Floor: Brachialis + Supinator'),
        subbullet(st, 'Roof: Deep fascia + Bicipital aponeurosis + Skin'),
        bullet(st, B('Contents (lateral to medial — TAN):') + ' Tendon of biceps | Brachial Artery | Median Nerve'),
        bullet(st, 'Radial nerve lies between brachioradialis and brachialis (just outside fossa)'),
    ]
    story.append(diag(st, [
        '  CUBITAL FOSSA:',
        '  ┌──────────────────────────────────────────┐',
        '  │  Lateral epicondyle   Medial epicondyle   │',
        '  │         \\                  /              │',
        '  │   Brachioradialis \\  / Pronator teres    │',
        '  │                    \\/                    │',
        '  │    Contents (L→M): Tendon | Art. | Nerve │',
        '  │    Floor: Brachialis + Supinator          │',
        '  └──────────────────────────────────────────┘',
    ]))

    # (c) Safety muscle of larynx
    story.append(subq(st, '(c)', 'Safety Muscle of Larynx'))
    story += [
        bullet(st, B('Posterior cricoarytenoid (PCA)') + ' is called the "Safety muscle of Larynx"'),
        bullet(st, B('Why?') + ' It is the ' + B('ONLY abductor of vocal cords')),
        bullet(st, 'Origin: Posterior surface of cricoid cartilage'),
        bullet(st, 'Insertion: Muscular process of arytenoid cartilage'),
        bullet(st, 'Action: Rotates arytenoid laterally → abducts vocal cord → opens glottis'),
        bullet(st, 'Nerve supply: Recurrent laryngeal nerve (branch of CN X vagus)'),
        bullet(st, B('Clinical:') + ' Bilateral PCA palsy → both cords adducted → severe dyspnea → emergency tracheostomy'),
        bullet(st, 'If this muscle is paralyzed, the airway closes → life-threatening'),
    ]

    # (d) Precaution during thyroidectomy
    story.append(subq(st, '(d)', 'Precautions during Thyroidectomy'))
    story += [
        bullet(st, B('1. Identify and preserve Recurrent Laryngeal Nerve (RLN):'),),
        subbullet(st, 'Runs in tracheo-oesophageal groove'),
        subbullet(st, 'Damage → hoarseness (unilateral), aphonia / dyspnea (bilateral)'),
        bullet(st, B('2. Preserve Parathyroid glands (4 glands):'),),
        subbullet(st, 'Located on posterior surface of thyroid'),
        subbullet(st, 'Removal → hypocalcemia → tetany (carpopedal spasm)'),
        bullet(st, B('3. Ligate Superior thyroid artery close to gland') + ' — to protect external laryngeal nerve'),
        subbullet(st, 'External laryngeal nerve → cricothyroid muscle → pitch of voice'),
        bullet(st, B('4. Ligate Inferior thyroid artery away from gland') + ' — to protect RLN'),
        bullet(st, B('5. Leave posterior capsule intact') + ' — to protect parathyroids &amp; RLN'),
        bullet(st, B('6. Pretracheal fascia') + ' — thyroid enclosed within it; ensures it moves with deglutition'),
    ]

    # (e) Neural tube
    story.append(subq(st, '(e)', 'Neural Tube'))
    story += [
        bullet(st, B('Definition:') + ' Embryonic precursor of brain &amp; spinal cord'),
        bullet(st, B('Formation:') + ' Neurulation — thickening of ectoderm → neural plate → neural folds → fuse → neural tube'),
        bullet(st, B('Timeline:') + ' Begins day 18; fusion complete by day 28'),
        bullet(st, B('Derivatives:'),),
        subbullet(st, 'Cranial end → Brain (prosencephalon, mesencephalon, rhombencephalon)'),
        subbullet(st, 'Caudal part → Spinal cord'),
        subbullet(st, 'Lumen → Ventricles of brain &amp; central canal of spinal cord'),
        bullet(st, B('Neural crest cells') + ' migrate from edges → PNS, melanocytes, adrenal medulla etc.'),
        bullet(st, B('Defects — Neural Tube Defects (NTDs):'),),
        subbullet(st, 'Failure of cranial end to close → Anencephaly'),
        subbullet(st, 'Failure of caudal end → Spina bifida'),
        subbullet(st, 'Prevention: Folic acid supplementation before &amp; during pregnancy'),
    ]

    # Q3
    story.append(qhead(st, 'Q3. Enumerate the Following'))

    story.append(subq(st, '(a)', 'Branches of External Carotid Artery'))
    story += [
        bullet(st, B('Mnemonic: SALFOP IT')),
        bullet(st, '1. Superior thyroid artery'),
        bullet(st, '2. Ascending pharyngeal artery'),
        bullet(st, '3. Lingual artery'),
        bullet(st, '4. Facial artery'),
        bullet(st, '5. Occipital artery'),
        bullet(st, '6. Posterior auricular artery'),
        bullet(st, '7. Superficial temporal artery (terminal)'),
        bullet(st, '8. Maxillary artery (terminal)'),
    ]

    story.append(subq(st, '(b)', 'Structures Related to Lateral Wall of Cavernous Sinus'))
    story += [
        bullet(st, B('From above downward (mnemonic: O T F O T):'),),
        bullet(st, '1. CN III — Oculomotor nerve'),
        bullet(st, '2. CN IV — Trochlear nerve'),
        bullet(st, '3. CN V1 — Ophthalmic division of trigeminal'),
        bullet(st, '4. CN V2 — Maxillary division of trigeminal'),
        bullet(st, '(CN VI lies inside sinus, medial to ICA, not in lateral wall)'),
    ]

    story.append(subq(st, '(c)', 'Branches of Axillary Nerve'))
    story += [
        bullet(st, '1. ' + B('Anterior branch') + ' — winds around surgical neck of humerus → motor to anterior deltoid'),
        bullet(st, '2. ' + B('Posterior branch') + ' → motor to posterior deltoid + teres minor'),
        bullet(st, '3. ' + B('Upper lateral cutaneous nerve of arm') + ' — sensory to lower deltoid region (regimental badge area)'),
        bullet(st, '4. Articular branch to shoulder joint'),
        bullet(st, B('Root value:') + ' C5, C6 — posterior cord of brachial plexus'),
    ]

    story.append(subq(st, '(d)', 'Arteries Responsible for Epistaxis'))
    story += [
        bullet(st, B('Little\'s area (Kiesselbach\'s plexus)') + ' — most common site for epistaxis'),
        bullet(st, '1. ' + B('Anterior ethmoidal artery') + ' (from ophthalmic → internal carotid)'),
        bullet(st, '2. ' + B('Sphenopalatine artery') + ' (from maxillary → external carotid) — most common'),
        bullet(st, '3. ' + B('Superior labial artery') + ' (from facial artery)'),
        bullet(st, '4. ' + B('Greater palatine artery') + ' (from maxillary artery)'),
        bullet(st, '5. ' + B('Posterior ethmoidal artery') + ' (minor contribution)'),
    ]

    story.append(subq(st, '(e)', 'Folds of Dura Mater'))
    story += [
        bullet(st, '1. ' + B('Falx cerebri') + ' — sickle-shaped, separates two cerebral hemispheres'),
        bullet(st, '2. ' + B('Tentorium cerebelli') + ' — separates cerebrum from cerebellum'),
        bullet(st, '3. ' + B('Falx cerebelli') + ' — separates two cerebellar hemispheres'),
        bullet(st, '4. ' + B('Diaphragma sellae') + ' — roof of sella turcica; has aperture for pituitary stalk'),
    ]

    # ── SECTION C ──
    story.append(section_header(st, 'SECTION C'))

    # Q1 Case — Carpal Tunnel Syndrome
    story.append(qhead(st, 'Q1. Case Study: Carpal Tunnel Syndrome'))
    story.append(Paragraph('<i>50yr female, rheumatoid arthritis, pain + numbness lateral 2/3 palm, lateral 3½ digits, worse at night; ape thumb, pointing index, +ve Tinel\'s &amp; Phalen\'s test</i>', st['case']))

    story.append(subq(st, '(a)', 'Name the Condition'))
    story += [
        bullet(st, B('Carpal Tunnel Syndrome (CTS)')),
        bullet(st, 'Compression neuropathy of the median nerve within the carpal tunnel'),
        bullet(st, 'Most common nerve compression in the upper limb'),
    ]

    story.append(subq(st, '(b)', 'Which Nerve is Compressed?'))
    story += [
        bullet(st, B('Median nerve') + ' — compressed within the carpal tunnel'),
        bullet(st, 'Root value: C6, C7, C8, T1'),
        bullet(st, 'Lateral cord (C6, C7) + Medial cord (C8, T1) → Median nerve'),
    ]

    story.append(subq(st, '(c)', 'Anatomical Basis of Pointing Index'))
    story += [
        bullet(st, 'Pointing index = ' + B('Index finger remains extended when fist is made')),
        bullet(st, 'Normally: ' + B('Lumbricals 1 &amp; 2') + ' (median nerve) flex MCPj + extend IPj of index &amp; middle fingers'),
        bullet(st, 'In CTS: Lumbricals 1 &amp; 2 are paralyzed'),
        bullet(st, 'Unopposed action of: Long extensors (extend MCPj) + Long flexors (flex IPj)'),
        bullet(st, 'Result: Index finger takes a pointing/extended posture'),
        bullet(st, 'Also: Loss of flexor digitorum superficialis to index → cannot make full fist'),
    ]

    story.append(subq(st, '(d)', 'Why Pain Increases at Night?'))
    story += [
        bullet(st, '1. ' + B('Venous stasis') + ' — lying flat → reduced venous drainage → increased pressure in carpal tunnel'),
        bullet(st, '2. ' + B('Reduced wrist movement') + ' at night → no pumping action → fluid accumulates'),
        bullet(st, '3. ' + B('Wrist flexion') + ' during sleep narrows tunnel further → increased compression'),
        bullet(st, '4. ' + B('Inflammatory fluid') + ' (rheumatoid arthritis) pools in tunnel at night'),
        bullet(st, 'Relief by ' + B('dangling/shaking hand') + ' (increases blood flow, drains fluid)'),
    ]

    story.append(subq(st, '(e)', 'Diagram: Transverse Section through Carpal Tunnel (Flexor Aspect of Wrist)'))
    story.append(diag(st, [
        '  TRANSVERSE SECTION — CARPAL TUNNEL:',
        '  ┌────────────────────────────────────────────────────┐',
        '  │              Flexor Retinaculum (roof)             │',
        '  │  ┌──────────────────────────────────────────────┐  │',
        '  │  │  FDS (x4)          FDS                       │  │',
        '  │  │  ┌────┐ ┌────┐ ┌────┐ ┌────┐                │  │',
        '  │  │  │ I  │ │ M  │ │ R  │ │ L  │   FDS tendons  │  │',
        '  │  │  └────┘ └────┘ └────┘ └────┘                │  │',
        '  │  │  FDP (x4) deeper       FPL (x1)             │  │',
        '  │  │                                              │  │',
        '  │  │  MEDIAN NERVE (just deep to retinaculum,     │  │',
        '  │  │               radial side of FDS to middle)  │  │',
        '  │  └──────────────────────────────────────────────┘  │',
        '  │  Hamate (ulnar)             Scaphoid/Trapezium (R) │',
        '  │  NOTE: 9 tendons + median nerve pass through       │',
        '  │  Ulnar nerve & artery outside (Guyon\'s canal)      │',
        '  └────────────────────────────────────────────────────┘',
    ]))

    # Q2 Section C
    story.append(qhead(st, 'Q2. Short Notes (any four)'))

    story.append(subq(st, '(a)', 'Connective Tissue'))
    story += [
        bullet(st, B('Definition:') + ' Most abundant tissue; binds, supports, protects other tissues'),
        bullet(st, B('Components:') + ' Cells + Fibres + Ground substance (matrix)'),
        bullet(st, B('Cells:') + ' Fibroblasts (main), Mast cells, Macrophages, Plasma cells, Adipocytes'),
        bullet(st, B('Fibres:') + ' Collagen (type I-V), Reticular (type III), Elastic'),
        bullet(st, B('Types:'),),
        subbullet(st, 'Loose (areolar) — fills spaces; found under epithelium'),
        subbullet(st, 'Dense regular — tendons, ligaments'),
        subbullet(st, 'Dense irregular — dermis'),
        subbullet(st, 'Specialised — adipose, blood, bone, cartilage'),
    ]

    story.append(subq(st, '(b)', 'Lateral Medullary Syndrome (Wallenberg\'s Syndrome)'))
    story += [
        bullet(st, B('Cause:') + ' Occlusion of ' + B('Posterior Inferior Cerebellar Artery (PICA)') + ' or vertebral artery'),
        bullet(st, B('Area infarcted:') + ' Lateral medulla oblongata'),
        bullet(st, B('Features (mnemonic AICA PICA):'),),
        subbullet(st, B('Ipsilateral:') + ' Loss of pain &amp; temp — face (V nucleus), Horner\'s syndrome, ataxia, dysphagia, hoarseness (IX, X)'),
        subbullet(st, B('Contralateral:') + ' Loss of pain &amp; temp — body (spinothalamic tract)'),
        bullet(st, 'NO motor weakness (corticospinal tract spared — in medial medulla)'),
        bullet(st, B('Key:') + ' Crossed sensory loss is pathognomonic'),
    ]

    story.append(subq(st, '(c)', 'Rotator Cuff'))
    story += [
        bullet(st, B('Definition:') + ' 4 muscles blending with shoulder joint capsule; stabilise glenohumeral joint'),
        bullet(st, B('Mnemonic: SITS'),),
        subbullet(st, B('S') + 'upraspinatus — abduction (first 15°); suprascapular nerve (C5)'),
        subbullet(st, B('I') + 'nfraspinatus — lateral rotation; suprascapular nerve (C5,6)'),
        subbullet(st, B('T') + 'eres minor — lateral rotation; axillary nerve (C5,6)'),
        subbullet(st, B('S') + 'ubscapularis — medial rotation; subscapular nerve (C5,6)'),
        bullet(st, B('Clinical:') + ' Supraspinatus most commonly torn → painful arc 60-120°'),
        bullet(st, 'Strengthens superior, anterior &amp; posterior aspects; inferior = weakest (most common dislocation site)'),
    ]

    story.append(subq(st, '(d)', 'Anatomical Snuff Box'))
    story += [
        bullet(st, B('Definition:') + ' Triangular hollow on lateral (radial) aspect of wrist, visible when thumb extended'),
        bullet(st, B('Boundaries:'),),
        subbullet(st, 'Anterior (medial): Extensor pollicis longus tendon'),
        subbullet(st, 'Posterior (lateral): Extensor pollicis brevis + Abductor pollicis longus tendons'),
        subbullet(st, 'Proximal: Styloid process of radius'),
        subbullet(st, 'Floor: Scaphoid + Trapezium bones'),
        bullet(st, B('Contents:') + ' Radial artery, Cephalic vein (origin), Branches of radial nerve (superficial)'),
        bullet(st, B('Clinical:') + ' Tenderness in snuff box = scaphoid fracture (until proven otherwise)'),
        subbullet(st, 'Scaphoid has poor blood supply → avascular necrosis risk'),
    ]

    story.append(subq(st, '(e)', 'Universal Precautions During Cadaver Dissection'))
    story += [
        bullet(st, '1. ' + B('Personal Protective Equipment (PPE)') + ' — gloves (double), gown, mask, goggles'),
        bullet(st, '2. ' + B('Vaccination') + ' — Hepatitis B mandatory; Tetanus recommended'),
        bullet(st, '3. ' + B('No eating/drinking') + ' in the dissection hall'),
        bullet(st, '4. ' + B('Handle sharp instruments carefully') + ' — scalpels, needles; never recap needles'),
        bullet(st, '5. ' + B('Immediate wound care') + ' if injured — wash with soap and water; report to supervisor'),
        bullet(st, '6. ' + B('Proper disposal') + ' — biohazard bags, sharps containers'),
        bullet(st, '7. ' + B('Wash hands thoroughly') + ' after dissection'),
        bullet(st, '8. ' + B('Respectful behavior') + ' toward cadaver (cadaver as first teacher)'),
        bullet(st, '9. ' + B('Formaldehyde precautions') + ' — adequate ventilation; known carcinogen'),
    ]

    # Q3 Section C
    story.append(qhead(st, 'Q3. Anatomical / Embryological Basis'))

    story.append(subq(st, '(a)', 'Mammary Gland Abscess Drained by Radial Incision'))
    story += [
        bullet(st, B('Anatomy:') + ' Breast tissue is divided into 15-20 lobes by ' + B('fibrous septa (Cooper\'s ligaments)')),
        bullet(st, 'These septa radiate from nipple to skin and deep fascia'),
        bullet(st, B('Basis for radial incision:'),),
        subbullet(st, 'Septa run radially → radial incision follows these natural planes'),
        subbullet(st, 'Less damage to lactiferous ducts (also arranged radially)'),
        subbullet(st, 'Better drainage along natural compartment walls'),
        subbullet(st, 'Less scarring &amp; better cosmetic outcome'),
        bullet(st, 'Circumareolar incision preferred near areola'),
        bullet(st, B('Avoid transverse incision') + ' — cuts across multiple septa → poor drainage'),
    ]

    story.append(subq(st, '(b)', 'Winging of Scapula'))
    story += [
        bullet(st, B('Definition:') + ' Medial border of scapula lifts away from chest wall — like a wing'),
        bullet(st, B('Cause:') + ' Paralysis of ' + B('Serratus anterior muscle')),
        bullet(st, B('Nerve injured:') + ' ' + B('Long thoracic nerve of Bell') + ' (C5, C6, C7)'),
        bullet(st, 'This nerve runs superficially on chest wall — vulnerable in:'),
        subbullet(st, 'Axillary dissection / lymph node clearance'),
        subbullet(st, 'Blow to lateral chest wall'),
        subbullet(st, 'Carrying heavy weights on shoulder'),
        bullet(st, B('Test:') + ' Ask patient to push against wall → winging appears'),
        bullet(st, 'Serratus anterior holds medial border of scapula to chest wall &amp; rotates scapula for arm elevation'),
    ]

    story.append(subq(st, '(c)', 'Lingual Thyroid'))
    story += [
        bullet(st, B('Embryological basis:'),),
        bullet(st, 'Thyroid develops as median outgrowth from ' + B('floor of pharynx at foramen cecum') + ' (junction of anterior 2/3 and posterior 1/3 of tongue)'),
        bullet(st, 'It descends via ' + B('thyroglossal duct') + ' to final position in neck'),
        bullet(st, 'If thyroid fails to descend → remains at base of tongue = ' + B('Lingual thyroid')),
        bullet(st, 'May be the ' + B('only functioning thyroid tissue')),
        bullet(st, B('Clinical:') + ' Dysphagia, dyspnea, dysphonia; hypothyroidism common'),
        bullet(st, B('Important:') + ' Must confirm with radioisotope scan before removal — patient may become hypothyroid'),
    ]

    story.append(subq(st, '(d)', 'Removal of Ear Wax Causes Coughing'))
    story += [
        bullet(st, B('Anatomical basis:') + ' Auricular branch of vagus nerve (Arnold\'s nerve)'),
        bullet(st, 'Arnold\'s nerve (CN X) supplies the skin of:'),
        subbullet(st, 'Posterior external auditory meatus'),
        subbullet(st, 'Posterior part of pinna'),
        bullet(st, 'When the external ear canal is stimulated (wax removal, syringing, cold wind):'),
        subbullet(st, 'Vagal reflex is triggered'),
        subbullet(st, 'Stimulation of vagus → cough reflex (Arnold\'s reflex / ear-cough reflex)'),
        bullet(st, B('Also:') + ' Can cause bradycardia, vomiting (vagal stimulation)'),
        bullet(st, 'Clinically important: warn patients before aural toilet procedures'),
    ]

    story.append(subq(st, '(e)', 'Turner\'s Syndrome'))
    story += [
        bullet(st, B('Karyotype:') + ' 45, XO (monosomy X) — most common sex chromosome disorder'),
        bullet(st, B('Embryological basis:') + ' Non-disjunction during meiosis (usually in father\'s sperm)'),
        bullet(st, B('Features:'),),
        subbullet(st, 'Short stature (primary feature)'),
        subbullet(st, 'Webbed neck (pterygium colli)'),
        subbullet(st, 'Shield chest, widely spaced nipples'),
        subbullet(st, 'Primary amenorrhea — streak ovaries'),
        subbullet(st, 'Cubitus valgus (increased carrying angle)'),
        subbullet(st, 'Cardiovascular: Coarctation of aorta, bicuspid aortic valve'),
        subbullet(st, 'Lymphedema of hands &amp; feet at birth'),
        bullet(st, B('Gonads:') + ' Streak gonads (fibrous remnants) — no functional ovaries'),
        bullet(st, B('Treatment:') + ' Growth hormone + oestrogen replacement'),
    ]

    return story

# ─────────────────────────────────────────────
# PAPER 2
# ─────────────────────────────────────────────
def paper2(st):
    story = []
    story.append(Paragraph('FIRST YEAR MBBS ANATOMY', st['title']))
    story.append(Paragraph('Paper 2 — Sections B &amp; C  |  Detailed Answers (BD Chaurasia Reference)', st['subtitle']))
    story.append(hr())

    story.append(section_header(st, 'SECTION B'))

    story.append(qhead(st, 'Q1. Case: Fracture shaft humerus → wrist drop, flaccid paralysis extensors'))

    story.append(subq(st, '(a)', 'Which nerve is affected?'))
    story += [
        bullet(st, B('Radial nerve') + ' — damaged in the radial groove of humerus'),
        bullet(st, 'Inability to extend wrist (wrist drop) + flaccid paralysis of extensors = classic radial nerve injury'),
    ]

    story.append(subq(st, '(b)', 'Root value + Sites of injury'))
    story += [
        bullet(st, B('Root value:') + ' C5, C6, C7, C8 (mainly C7)'),
        bullet(st, 'Arises from ' + B('posterior cord') + ' of brachial plexus'),
        bullet(st, B('Sites of injury:')),
        subbullet(st, '1. ' + B('In axilla') + ' — "Saturday night palsy" / crutch palsy → all muscles including triceps paralyzed'),
        subbullet(st, '2. ' + B('In radial groove (mid-shaft humerus)') + ' — most common → wrist drop; triceps SPARED'),
        subbullet(st, '3. ' + B('At lateral epicondyle') + ' — posterior interosseous nerve palsy → finger drop; radial extensors spared'),
    ]

    story.append(subq(st, '(c)', 'Origin, Course and Distribution of Radial Nerve'))
    story += [
        bullet(st, B('Origin:') + ' Posterior cord of brachial plexus (C5-C8, T1)'),
        bullet(st, B('Course:'),),
        subbullet(st, 'Axilla: Posterior to axillary artery; gives branches to triceps (long &amp; medial heads)'),
        subbullet(st, 'Arm: Enters posterior compartment through triangular interval; lies in radial groove with profunda brachii artery'),
        subbullet(st, 'Pierces lateral intermuscular septum → anterior to lateral epicondyle'),
        subbullet(st, 'Divides: Superficial (sensory) + Deep = Posterior interosseous nerve (motor)'),
        bullet(st, B('Distribution / Muscles supplied:'),),
        subbullet(st, 'Arm: Triceps, anconeus, brachioradialis, extensor carpi radialis longus'),
        subbullet(st, 'Forearm (via PIN): All extensors — ECRB, ECU, EDC, EDM, EPL, EPB, APL, EI'),
        bullet(st, B('Sensory:') + ' Posterior cutaneous nerve of arm + forearm; dorsum of hand (lateral 2.5 digits to proximal phalanx)'),
    ]
    story.append(diag(st, [
        '  RADIAL NERVE COURSE:',
        '  Posterior cord (C5-C8)',
        '      |',
        '  Axilla (behind axillary A) → branches to triceps (long + medial heads)',
        '      |',
        '  Triangular interval → Radial groove (with profunda brachii A)',
        '      |',
        '  Lateral intermuscular septum (pierces it)',
        '      |',
        '  Anterior to lateral epicondyle',
        '      |',
        '  ┌──────────────────────┐',
        '  Superficial branch    Deep branch (PIN)',
        '  (purely sensory)      (motor to extensors)',
    ]))

    story.append(qhead(st, 'Q2. Short Notes'))

    story.append(subq(st, '(a)', 'Rotator Cuff'))
    story += [
        bullet(st, B('4 muscles: SITS') + ' — Supraspinatus, Infraspinatus, Teres minor, Subscapularis'),
        bullet(st, 'Form a musculotendinous cuff around glenohumeral joint'),
        bullet(st, 'Functions: Stabilise humeral head in glenoid; assist in rotation'),
        bullet(st, B('Supraspinatus:') + ' most commonly torn; causes painful arc 60°-120°'),
        bullet(st, B('Nerve supply:') + ' Suprascapular (SS, IS), Axillary (TMin), Subscapular (SubS)'),
    ]

    story.append(subq(st, '(b)', 'Cavernous Sinus'))
    story += [
        bullet(st, B('Type:') + ' Paired venous dural sinuses on either side of sella turcica'),
        bullet(st, B('Boundaries:') + ' Medial wall = pituitary gland &amp; sphenoid sinus; Lateral wall = CN III, IV, V1, V2; Inside = CN VI + ICA'),
        bullet(st, B('Tributaries:') + ' Superior &amp; inferior ophthalmic veins, sphenoparietal sinus, middle cerebral veins'),
        bullet(st, B('Drains into:') + ' Superior &amp; inferior petrosal sinuses → sigmoid sinus → IJV'),
        bullet(st, B('Contents (lateral wall):') + ' CN III (top), CN IV, CN V1, CN V2; CN VI &amp; ICA inside sinus'),
        bullet(st, B('Clinical — Cavernous sinus thrombosis:') + ' secondary to "dangerous area of face" infections'),
        subbullet(st, 'Features: proptosis, chemosis, ophthalmoplegia, periorbital edema'),
    ]

    story.append(subq(st, '(c)', 'Histology of Palatine Tonsil'))
    story += [
        bullet(st, B('Location:') + ' Lateral wall of oropharynx, between palatoglossal &amp; palatopharyngeal folds'),
        bullet(st, B('Covering:') + ' Non-keratinized stratified squamous epithelium'),
        bullet(st, B('Features:'),),
        subbullet(st, '10-20 crypts extending into tonsillar substance'),
        subbullet(st, 'Lymphoid follicles with germinal centres (B cells)'),
        subbullet(st, 'Inter-follicular T lymphocytes'),
        subbullet(st, 'Fibrous capsule on deep surface'),
        bullet(st, B('No afferent lymphatics') + ' — part of Waldeyer\'s ring'),
        bullet(st, 'Blood supply: Tonsillar branch of facial artery (main)'),
    ]

    story.append(subq(st, '(d)', 'Derivatives of Neural Crest'))
    story += [
        bullet(st, B('Neural crest cells') + ' — emigrate from dorsal neural tube; highly migratory'),
        bullet(st, B('Derivatives (mnemonic: MADAMES P):'),),
        subbullet(st, 'Melanocytes (skin)'),
        subbullet(st, 'Adrenal medulla chromaffin cells'),
        subbullet(st, 'Dorsal root ganglia (sensory ganglia of spinal nerves)'),
        subbullet(st, 'Autonomic ganglia (sympathetic + parasympathetic)'),
        subbullet(st, 'Meninges (pia + arachnoid of brain)'),
        subbullet(st, 'Enteric nervous system (Meissner\'s + Auerbach\'s plexus)'),
        subbullet(st, 'Schwann cells'),
        subbullet(st, 'Parafollicular (C) cells of thyroid'),
        subbullet(st, 'Facial &amp; skull bones (cranial neural crest)'),
    ]

    story.append(qhead(st, 'Q3. Enumerate'))

    story.append(subq(st, '(a)', 'Parts of Internal Capsule'))
    story += [
        bullet(st, '1. Anterior limb — frontopontine fibers; anterior thalamic radiations'),
        bullet(st, '2. Genu — corticobulbar fibers (for face/head muscles)'),
        bullet(st, '3. Posterior limb — corticospinal fibers; thalamocortical (sensory); optic radiations'),
        bullet(st, '4. Retrolenticular part — optic radiations (visual fibers)'),
        bullet(st, '5. Sublenticular part — auditory radiations; temporopontine fibers'),
        bullet(st, B('Blood supply:') + ' Lenticulostriate arteries (branches of MCA) — "arteries of stroke"'),
    ]

    story.append(subq(st, '(b)', 'Derivatives of 2nd Pharyngeal Arch (Reichert\'s Cartilage)'))
    story += [
        bullet(st, B('Cartilage derivatives:') + ' Stapes, Styloid process, Stylohyoid ligament, Lesser cornu + upper body of hyoid'),
        bullet(st, B('Muscle derivatives:') + ' Muscles of facial expression, Stapedius, Stylohyoid, Posterior belly of digastric'),
        bullet(st, B('Nerve:') + ' Facial nerve (CN VII)'),
    ]

    story.append(subq(st, '(c)', 'Branches of Internal Carotid Artery'))
    story += [
        bullet(st, 'In cervical part: None'),
        bullet(st, 'In cavernous part: Cavernous, hypophyseal, ophthalmic (usually)'),
        bullet(st, '1. Ophthalmic artery'),
        bullet(st, '2. Posterior communicating artery'),
        bullet(st, '3. Anterior choroidal artery'),
        bullet(st, '4. Anterior cerebral artery (terminal)'),
        bullet(st, '5. Middle cerebral artery (terminal)'),
    ]

    story.append(subq(st, '(d)', 'Structures Piercing Clavipectoral Fascia'))
    story += [
        bullet(st, '1. Cephalic vein (passes upward)'),
        bullet(st, '2. Thoracoacromial artery (passes downward)'),
        bullet(st, '3. Lateral pectoral nerve'),
        bullet(st, '4. Lymphatics from breast'),
    ]

    story.append(subq(st, '(e)', 'Muscular Branches of Axillary Nerve'))
    story += [
        bullet(st, '1. Anterior branch → Anterior &amp; middle parts of deltoid'),
        bullet(st, '2. Posterior branch → Posterior deltoid + Teres minor'),
        bullet(st, '(Also: Articular branch to shoulder joint; Cutaneous — upper lateral cutaneous nerve of arm)'),
    ]

    story.append(section_header(st, 'SECTION C'))

    story.append(qhead(st, 'Q1. Case: Thyroid swelling, exophthalmos, tachycardia — Hyperthyroidism'))
    story.append(Paragraph('<i>40yr male, midline nodular neck swelling moves with deglutition, exophthalmos, tachycardia, tremors → Thyroid gland</i>', st['case']))

    story.append(subq(st, '(a)', 'Structure affected'))
    story += [bullet(st, B('Thyroid gland'))]

    story.append(subq(st, '(b)', 'Coverings of Thyroid Gland'))
    story += [
        bullet(st, '1. ' + B('True capsule') + ' — fibrous capsule from thyroid itself; sends septa into gland dividing it into lobules'),
        bullet(st, '2. ' + B('False capsule (surgical capsule)') + ' — derived from ' + B('pretracheal layer of deep cervical fascia')),
        subbullet(st, 'Between true and false capsule: parathyroid glands + branches of thyroid arteries + RLN'),
        bullet(st, '3. ' + B('Sternothyroid muscle') + ' (infrahyoid muscle) lies superficially'),
    ]

    story.append(subq(st, '(c)', 'Why thyroid swelling moves with deglutition'))
    story += [
        bullet(st, 'Thyroid gland is enclosed within ' + B('pretracheal fascia')),
        bullet(st, 'This fascia is attached to the cricoid cartilage and upper tracheal rings'),
        bullet(st, 'During deglutition, ' + B('larynx and trachea move upward') + ' (pulled by suprahyoid muscles + palatopharyngeus)'),
        bullet(st, 'Since thyroid is tethered to trachea via pretracheal fascia → it moves up with swallowing'),
        bullet(st, B('Clinical use:') + ' Differentiates thyroid swelling from other neck masses (e.g., lymph nodes don\'t move with swallowing)'),
        bullet(st, 'Exception: Very large goiter may not move freely due to adhesions'),
    ]

    story.append(subq(st, '(d)', 'Blood Supply of Thyroid Gland'))
    story += [
        bullet(st, B('Arteries:'),),
        subbullet(st, B('Superior thyroid artery') + ' — 1st branch of external carotid artery → descends to upper pole'),
        subbullet(st, B('Inferior thyroid artery') + ' — branch of thyrocervical trunk (subclavian) → enters at lower pole'),
        subbullet(st, B('Thyroidea ima artery') + ' — small, inconstant; from aortic arch or brachiocephalic; enters at isthmus (7%)'),
        bullet(st, B('Veins:'),),
        subbullet(st, 'Superior thyroid vein → internal jugular vein'),
        subbullet(st, 'Middle thyroid vein → internal jugular vein'),
        subbullet(st, 'Inferior thyroid vein → brachiocephalic vein'),
        bullet(st, B('Lymphatics:') + ' deep cervical, pretracheal, paratracheal nodes'),
    ]

    story.append(qhead(st, 'Q2. Short Notes'))

    story.append(subq(st, '(a)', 'Fourth Ventricle'))
    story += [
        bullet(st, B('Location:') + ' Between brainstem (pons + medulla) anteriorly and cerebellum posteriorly'),
        bullet(st, B('Shape:') + ' Diamond / rhomboid (rhomboid fossa = floor)'),
        bullet(st, B('Roof:') + ' Superior medullary velum + Inferior medullary velum + Nodule of cerebellum'),
        bullet(st, B('Floor:') + ' Rhomboid fossa — has facial colliculus, hypoglossal triangle, vagal triangle'),
        bullet(st, B('Communications:'),),
        subbullet(st, 'Superiorly: Cerebral aqueduct (connects to 3rd ventricle)'),
        subbullet(st, 'Foramina of Luschka (2, lateral) → subarachnoid space'),
        subbullet(st, 'Foramen of Magendie (1, median) → subarachnoid space'),
        bullet(st, B('CSF pathway:') + ' Lateral ventricles → 3rd ventricle → aqueduct → 4th ventricle → subarachnoid space'),
    ]

    story.append(subq(st, '(b)', 'Carpal Tunnel Syndrome'))
    story += [
        bullet(st, B('Carpal tunnel:') + ' Fibro-osseous tunnel at wrist — floor/walls = carpal bones; roof = flexor retinaculum'),
        bullet(st, B('Contents:') + ' 9 tendons (4 FDS + 4 FDP + 1 FPL) + Median nerve'),
        bullet(st, B('CTS:') + ' Compression of median nerve within tunnel'),
        bullet(st, B('Causes:') + ' RA, pregnancy, hypothyroidism, obesity, repetitive movements, idiopathic'),
        bullet(st, B('Features:') + ' Pain &amp; numbness lateral 3.5 digits; worse at night; thenar wasting; ape thumb; pointing index'),
        bullet(st, B('Tests:') + ' Tinel\'s sign (percussion at wrist), Phalen\'s test (wrist flexion 60 sec)'),
        bullet(st, B('Treatment:') + ' Splint, steroid injection, surgical decompression (carpal tunnel release)'),
    ]

    story.append(subq(st, '(c)', 'Ligaments of Larynx'))
    story += [
        bullet(st, B('Extrinsic (connect larynx to adjacent structures):'),),
        subbullet(st, 'Thyrohyoid membrane — thyroid cartilage to hyoid bone'),
        subbullet(st, 'Cricotracheal ligament — cricoid to trachea'),
        subbullet(st, 'Hyoepiglottic ligament — epiglottis to hyoid'),
        bullet(st, B('Intrinsic (within larynx):'),),
        subbullet(st, 'Cricothyroid ligament (conus elasticus) — most important; site of emergency cricothyrotomy'),
        subbullet(st, 'Vestibular ligament — false vocal cord'),
        subbullet(st, 'Vocal ligament — true vocal cord (thickened upper edge of conus elasticus)'),
        subbullet(st, 'Quadrangular membrane — vestibular folds'),
    ]

    story.append(subq(st, '(d)', 'Anatomy Act'))
    story += [
        bullet(st, B('Full name:') + ' The Anatomy Act 1984 (India: Human Anatomy Acts of respective states)'),
        bullet(st, 'Governs supply, use, and disposal of human cadavers for anatomical teaching'),
        bullet(st, B('Provisions:'),),
        subbullet(st, 'Voluntary body donation — most ethical source'),
        subbullet(st, 'Unclaimed bodies from hospitals/jails can be used'),
        subbullet(st, 'Bodies cannot be bought/sold'),
        subbullet(st, 'Relatives\' consent required unless body donated voluntarily'),
        subbullet(st, 'Parts not used must be cremated/buried respectfully'),
        bullet(st, 'Purpose: Ensure adequate cadavers for medical education while protecting human dignity'),
    ]

    story.append(qhead(st, 'Q3. Anatomical Basis'))

    story.append(subq(st, '(a)', 'Epistaxis'))
    story += [
        bullet(st, B('Most common site:') + ' Little\'s area (Kiesselbach\'s plexus) — anteroinferior nasal septum'),
        bullet(st, 'Anastomosis of ' + B('5 arteries') + ': Anterior ethmoidal, Posterior ethmoidal, Sphenopalatine (main), Greater palatine, Superior labial'),
        bullet(st, 'This area is superficial with thin mucosa — easily traumatized by:'),
        subbullet(st, 'Nose picking, dry air, trauma, hypertension, anticoagulants'),
        bullet(st, B('Posterior epistaxis:') + ' from sphenopalatine artery; more severe; may need ligation/embolization'),
    ]

    story.append(subq(st, '(b)', 'Tetany after Total Thyroidectomy'))
    story += [
        bullet(st, B('Cause:') + ' Accidental removal of all 4 ' + B('parathyroid glands') + ' during thyroidectomy'),
        bullet(st, 'Parathyroid glands lie on posterior surface of thyroid, between true &amp; false capsule'),
        bullet(st, 'PTH ↓ → ' + B('Hypocalcemia') + ' → increased neuromuscular excitability'),
        bullet(st, B('Features of tetany:'),),
        subbullet(st, 'Carpopedal spasm — characteristic hand posture (obstetrician\'s hand)'),
        subbullet(st, 'Chvostek\'s sign — tapping facial nerve → facial twitch'),
        subbullet(st, 'Trousseau\'s sign — BP cuff inflation → carpal spasm'),
        subbullet(st, 'Laryngospasm (life-threatening)'),
        bullet(st, B('Treatment:') + ' IV calcium gluconate (acute); oral calcium + Vit D (long-term)'),
    ]

    story.append(subq(st, '(c)', 'IM injection in deltoid → loss of abduction'))
    story += [
        bullet(st, 'Deltoid IM injection site: ' + B('Anterolateral aspect, 3 fingerbreadths below acromion')),
        bullet(st, B('Axillary nerve') + ' winds around surgical neck of humerus, just below deltoid insertion'),
        bullet(st, 'Incorrect deep injection → damages axillary nerve (C5, C6)'),
        bullet(st, B('Axillary nerve:') + ' motor to deltoid (all fibers) + teres minor'),
        bullet(st, 'Loss → ' + B('inability to abduct arm') + ' (deltoid is prime mover 15°-90°)'),
        bullet(st, B('Prevention:') + ' Inject into upper outer quadrant of deltoid, perpendicular to skin, aspirate before injecting'),
    ]

    story.append(subq(st, '(d)', 'Medially Deviated Eyeball in 6th Nerve Palsy'))
    story += [
        bullet(st, B('CN VI = Abducens nerve') + ' — innervates ' + B('Lateral rectus') + ' only'),
        bullet(st, '6th nerve palsy → Lateral rectus paralyzed'),
        bullet(st, 'Unopposed action of ' + B('Medial rectus') + ' (CN III) → eye deviated medially = ' + B('Esotropia') + ' / convergent squint'),
        bullet(st, B('Features:') + ' Diplopia on lateral gaze; eye cannot abduct beyond midline'),
        bullet(st, B('Causes:') + ' DM, hypertension, raised ICP (false localizing sign), cavernous sinus pathology, Wernicke\'s encephalopathy'),
    ]

    story.append(subq(st, '(e)', 'Removal of Ear Wax Causes Coughing'))
    story += [
        bullet(st, B('Arnold\'s reflex') + ' — vagus nerve (CN X) gives auricular branch to posterior EAM'),
        bullet(st, 'Stimulation of vagal fibers in ear canal → triggers cough reflex via vagal efferents to larynx/trachea'),
        bullet(st, 'Also can cause: bradycardia, vomiting, syncope (vagal stimulation)'),
    ]

    return story

# ─────────────────────────────────────────────
# PAPER 3
# ─────────────────────────────────────────────
def paper3(st):
    story = []
    story.append(Paragraph('FIRST YEAR MBBS ANATOMY', st['title']))
    story.append(Paragraph("Paper 3 — Sections B &amp; C  |  Detailed Answers (BD Chaurasia Reference)", st['subtitle']))
    story.append(hr())

    story.append(section_header(st, 'SECTION B'))
    story.append(qhead(st, "Q1. Case: Bell's Palsy — inability to close left eye, loss of nasolabial fold"))
    story.append(Paragraph('<i>36yr woman, inability to close left eye, loss of nasolabial fold, drooling, difficulty chewing — Bell\'s palsy</i>', st['case']))

    story.append(subq(st, '(a)', "Site of Lesion in Bell's Palsy"))
    story += [
        bullet(st, B("Bell's palsy") + " = idiopathic lower motor neuron (LMN) facial nerve palsy"),
        bullet(st, B("Site:") + " Geniculate ganglion region within the facial canal (stylomastoid foramen region most affected)"),
        bullet(st, "The facial nerve is compressed within the rigid bony facial canal → ischemia → demyelination"),
        bullet(st, "All branches of facial nerve affected → " + B("complete ipsilateral hemi-facial paralysis")),
        bullet(st, B("Upper face involvement") + " (cannot close eye, forehead wrinkling lost) = key LMN feature"),
    ]

    story.append(subq(st, '(b)', 'Functional Components of Facial Nerve (CN VII)'))
    story += [
        bullet(st, "1. " + B("SVE (Special Visceral Efferent)") + " — motor to muscles of facial expression, stapedius, stylohyoid, posterior belly of digastric"),
        bullet(st, "2. " + B("GVE (General Visceral Efferent)") + " — parasympathetic to lacrimal, submandibular, sublingual glands"),
        bullet(st, "3. " + B("SVA (Special Visceral Afferent)") + " — taste from anterior 2/3 of tongue (via chorda tympani)"),
        bullet(st, "4. " + B("GSA (General Somatic Afferent)") + " — sensation from skin of ear (auricular branch)"),
    ]

    story.append(subq(st, '(c)', 'Course of Facial Nerve'))
    story += [
        bullet(st, B("Origin:") + " Lower border of pons, at cerebellopontine angle"),
        bullet(st, B("Internal acoustic meatus:") + " Enters with CN VIII"),
        bullet(st, B("Facial canal (petrous temporal bone):"),),
        subbullet(st, "Geniculate ganglion → Greater petrosal nerve (to lacrimal gland)"),
        subbullet(st, "Nerve to stapedius"),
        subbullet(st, "Chorda tympani (taste anterior 2/3 tongue + secretomotor to submandibular &amp; sublingual glands)"),
        bullet(st, B("Exits:") + " Stylomastoid foramen"),
        bullet(st, B("In parotid gland:") + " Divides into 5 terminal branches"),
    ]

    story.append(subq(st, '(d)', 'Branches of Facial Nerve'))
    story += [
        bullet(st, B("In petrous bone:"),),
        subbullet(st, "Greater petrosal nerve (GSPN) → parasympathetic to lacrimal, nasal, palatine glands"),
        subbullet(st, "Nerve to stapedius → stapedius muscle"),
        subbullet(st, "Chorda tympani → taste anterior 2/3 tongue; secretomotor submandibular + sublingual"),
        bullet(st, B("After stylomastoid foramen:"),),
        subbullet(st, "Posterior auricular nerve — occipitalis + auricular muscles"),
        subbullet(st, "Nerve to stylohyoid &amp; posterior belly of digastric"),
        bullet(st, B("Terminal branches in face (mnemonic: Two Zebras Bit My Cat):"),),
        subbullet(st, B("T") + "emporal — frontalis, corrugator supercilii, orbicularis oculi (upper)"),
        subbullet(st, B("Z") + "ygomatic — orbicularis oculi (lower)"),
        subbullet(st, B("B") + "uccal — buccinator, muscles of upper lip"),
        subbullet(st, B("M") + "arginal mandibular — muscles of lower lip"),
        subbullet(st, B("C") + "ervical — platysma"),
    ]

    story.append(qhead(st, 'Q2. Short Notes'))

    story.append(subq(st, '(a)', 'Transverse Section of Midbrain at Level of Superior Colliculus'))
    story += [
        bullet(st, B("3 parts:") + " Tectum (posterior), Tegmentum (middle), Crus cerebri (anterior)"),
        bullet(st, B("Tectum:") + " Superior colliculi (visual reflex centre)"),
        bullet(st, B("Tegmentum:") + " Red nucleus, Substantia nigra, CN III nucleus, MLF, spinothalamic tract, medial lemniscus"),
        bullet(st, B("Crus cerebri:") + " Corticospinal + corticobulbar + corticopontine fibers"),
        bullet(st, B("CN III (oculomotor)") + " exits from interpeduncular fossa (between crus cerebri, medially)"),
        bullet(st, B("Edinger-Westphal nucleus:") + " parasympathetic to pupil (pupillary constriction)"),
    ]

    story.append(subq(st, '(b)', 'Lymphatic Drainage of Breast'))
    story += [
        bullet(st, B("75% drains to axillary nodes") + " (most important):"),
        subbullet(st, "Anterior (pectoral) → Central → Apical axillary nodes"),
        bullet(st, B("25% to internal mammary nodes") + " (parasternal) — especially medial quadrants"),
        bullet(st, "Other routes:"),
        subbullet(st, "Supraclavicular nodes (via apical)"),
        subbullet(st, "Intercostal nodes → posterior mediastinal"),
        subbullet(st, "Cross drainage to opposite breast"),
        subbullet(st, "To subdiaphragmatic → liver"),
        bullet(st, B("Clinical:") + " Lymph node palpation essential in breast examination; axillary clearance in cancer surgery"),
    ]

    story.append(subq(st, '(c)', 'Dangerous Area of Face'))
    story += [
        bullet(st, B("Definition:") + " Triangular area of face bounded by: corners of mouth — bridge of nose — upper lip"),
        bullet(st, B("Why dangerous?") + " Veins of face drain via ophthalmic veins or pterygoid plexus into " + B("cavernous sinus")),
        bullet(st, "Facial veins have " + B("no valves") + " → infection can spread RETROGRADE into cavernous sinus"),
        bullet(st, B("Consequence:") + " Cavernous sinus thrombosis — life-threatening"),
        bullet(st, "Features: High fever, proptosis, chemosis, ophthalmoplegia, papilledema, coma"),
        bullet(st, B("Rule:") + " Never squeeze a boil/pimple in this area"),
    ]

    story.append(subq(st, '(d)', 'Histology of Trachea'))
    story += [
        bullet(st, B("Epithelium:") + " Pseudostratified ciliated columnar with goblet cells (respiratory epithelium)"),
        bullet(st, B("Lamina propria:") + " Loose CT with lymphocytes, mast cells, elastic fibers"),
        bullet(st, B("Submucosa:") + " Seromucous glands (tracheal glands)"),
        bullet(st, B("Cartilage:") + " C-shaped hyaline cartilage rings (16-20); " + B("open posteriorly") + " (trachealis muscle closes gap)"),
        bullet(st, B("Trachealis muscle:") + " Smooth muscle — connects posterior ends of C-rings; allows food bolus expansion of esophagus"),
        bullet(st, B("Adventitia:") + " Outer fibrous connective tissue"),
    ]

    story.append(subq(st, '(e)', 'Musculotendinous Cuff of Shoulder Joint (Rotator Cuff)'))
    story += [
        bullet(st, B("SITS:") + " Supraspinatus, Infraspinatus, Teres minor, Subscapularis"),
        bullet(st, "Tendons blend with fibrous capsule of shoulder joint → musculotendinous cuff"),
        bullet(st, "Strengthens: Superior (SS), Posterior (IS + Tmin), Anterior (SubS) capsule"),
        bullet(st, "Inferior capsule is weakest — most common direction of dislocation is inferior/anterior"),
        bullet(st, B("Impingement syndrome:") + " SS tendon compressed under coracoacromial arch"),
    ]

    story.append(qhead(st, 'Q3. Enumerate'))

    story.append(subq(st, '(a)', 'Layers of Scalp (mnemonic: SCALP)'))
    story += [
        bullet(st, "1. " + B("S") + "kin — thick, hair-bearing"),
        bullet(st, "2. " + B("C") + "onnective tissue (dense) — arteries, veins, nerves embedded; bleeds profusely when cut"),
        bullet(st, "3. " + B("A") + "poneurosis (epicranial) — galea aponeurotica; connects frontalis to occipitalis"),
        bullet(st, "4. " + B("L") + "oose areolar tissue — dangerous layer; allows fluid/pus/blood to spread; limits to attachments of galea"),
        bullet(st, "5. " + B("P") + "ericranium — periosteum of skull"),
    ]

    story.append(subq(st, '(b)', 'Parts of Corpus Callosum (from front to back)'))
    story += [
        bullet(st, "1. Rostrum — anteroinferior part"),
        bullet(st, "2. Genu — hooks forward"),
        bullet(st, "3. Body (trunk) — largest part"),
        bullet(st, "4. Splenium — posterior, bulbous"),
        bullet(st, "Radiation: Forceps minor (genu) + Forceps major (splenium)"),
    ]

    story.append(subq(st, '(c)', 'Arteries Supplying Nasal Septum'))
    story += [
        bullet(st, "1. Anterior ethmoidal artery (from ophthalmic → ICA)"),
        bullet(st, "2. Posterior ethmoidal artery (from ophthalmic → ICA)"),
        bullet(st, "3. Sphenopalatine artery (from maxillary → ECA) — main supply"),
        bullet(st, "4. Greater palatine artery (from maxillary → ECA)"),
        bullet(st, "5. Superior labial artery (from facial → ECA)"),
        bullet(st, "Anastomose at Little's area (Kiesselbach's plexus) — common site for epistaxis"),
    ]

    story.append(subq(st, '(d)', 'Muscles Responsible for Flexion at Elbow Joint'))
    story += [
        bullet(st, "1. " + B("Biceps brachii") + " — most powerful (supination + flexion); musculocutaneous N (C5,6)"),
        bullet(st, "2. " + B("Brachialis") + " — pure flexor; musculocutaneous N (C5,6)"),
        bullet(st, "3. " + B("Brachioradialis") + " — flexes in midprone position; radial N (C5,6)"),
        bullet(st, "4. Pronator teres — weak flexor; median N"),
        bullet(st, "5. Flexor carpi radialis — weak flexor; median N"),
    ]

    story.append(subq(st, '(e)', 'Branches of Posterior Division of Mandibular Nerve (V3)'))
    story += [
        bullet(st, "1. Auriculotemporal nerve — scalp (temple), TMJ, external acoustic meatus, parotid (secretomotor via glossopharyngeal)"),
        bullet(st, "2. Lingual nerve — general sensation anterior 2/3 tongue, floor of mouth, lower gum"),
        bullet(st, "3. Inferior alveolar nerve — teeth of lower jaw; gives mental nerve (chin + lower lip)"),
        bullet(st, "4. Nerve to mylohyoid (from inferior alveolar) — mylohyoid + anterior belly of digastric"),
    ]

    story.append(section_header(st, 'SECTION C'))

    story.append(qhead(st, "Q1. Case: Erb's Palsy — Birth injury, left arm weakness after shoulder dystocia"))
    story.append(Paragraph('<i>30yr woman, difficult shoulder delivery, baby has weakness + reduced movement in left arm</i>', st['case']))

    story.append(subq(st, '(a)', 'Probable Diagnosis'))
    story += [
        bullet(st, B("Erb's Palsy (Erb-Duchenne Palsy)") + " — upper brachial plexus injury"),
        bullet(st, "Injury to " + B("C5, C6 roots") + " of brachial plexus"),
        bullet(st, B("\"Waiter's tip\" position:") + " Arm adducted, medially rotated, elbow extended, forearm pronated, wrist flexed"),
    ]

    story.append(subq(st, '(b)', 'Nerve Roots Involved'))
    story += [
        bullet(st, B("C5 and C6") + " (superior trunk of brachial plexus)"),
        bullet(st, B("Erb's point:") + " Where C5 &amp; C6 meet to form upper trunk — just above clavicle, posterior triangle of neck"),
        bullet(st, "Mechanism: Excessive lateral flexion of neck away from shoulder during delivery → traction injury"),
    ]

    story.append(subq(st, '(c)', 'Anatomical Organization of Brachial Plexus'))
    story += [
        bullet(st, B("Roots:") + " Anterior rami of C5, C6, C7, C8, T1"),
        bullet(st, B("Trunks:"),),
        subbullet(st, "Superior trunk: C5 + C6"),
        subbullet(st, "Middle trunk: C7"),
        subbullet(st, "Inferior trunk: C8 + T1"),
        bullet(st, B("Divisions:") + " Each trunk → anterior + posterior division (6 divisions total)"),
        bullet(st, B("Cords:"),),
        subbullet(st, "Lateral cord: Anterior divisions of Superior + Middle trunks"),
        subbullet(st, "Medial cord: Anterior division of Inferior trunk"),
        subbullet(st, "Posterior cord: All 3 posterior divisions"),
        bullet(st, B("Terminal branches:"),),
        subbullet(st, "Lateral cord: Musculocutaneous N, lateral root of median N"),
        subbullet(st, "Medial cord: Ulnar N, medial root of median N"),
        subbullet(st, "Posterior cord: Radial N, Axillary N"),
    ]

    story.append(subq(st, '(d)', "Potential Complications of Erb's Palsy"))
    story += [
        bullet(st, "1. " + B("Permanent weakness") + " of shoulder abduction &amp; external rotation if untreated"),
        bullet(st, "2. " + B("Shoulder joint deformity") + " — posterior shoulder subluxation"),
        bullet(st, "3. " + B("Muscle contractures") + " — internal rotation contracture"),
        bullet(st, "4. " + B("Limb shortening") + " — growth arrest"),
        bullet(st, "5. " + B("Horner's syndrome") + " — if T1 root also involved (ptosis, miosis, anhidrosis)"),
        bullet(st, "6. Phrenic nerve injury (C3,4,5) → respiratory difficulty"),
    ]

    story.append(qhead(st, 'Q2. Short Notes'))

    story.append(subq(st, '(a)', 'Blood Supply of Internal Capsule'))
    story += [
        bullet(st, B("Anterior limb:") + " Medial striate arteries (from ACA) + lateral striate (lenticulostriate, from MCA)"),
        bullet(st, B("Genu:") + " Lenticulostriate arteries (MCA)"),
        bullet(st, B("Posterior limb:") + " Lenticulostriate arteries (MCA) + anterior choroidal artery (from ICA)"),
        bullet(st, B("Lenticulostriate arteries") + " = \"arteries of cerebral hemorrhage\" (Charcot's arteries)"),
        bullet(st, B("Clinical:") + " Rupture of lenticulostriate arteries → internal capsule hemorrhage → contralateral hemiplegia"),
    ]

    story.append(subq(st, '(b)', 'Microscopic Structure of Thyroid Gland'))
    story += [
        bullet(st, B("Capsule:") + " Fibrous; sends septa dividing gland into lobules"),
        bullet(st, B("Follicles:") + " Spherical units; main functional unit"),
        subbullet(st, "Wall: Simple cuboidal to columnar follicular epithelium (height depends on activity)"),
        subbullet(st, "Lumen: Filled with colloid (thyroglobulin)"),
        bullet(st, B("Active gland:") + " Tall columnar follicular cells; scalloped colloid at periphery; small follicles"),
        bullet(st, B("Inactive gland:") + " Flat cuboidal cells; large follicles; dense homogeneous colloid"),
        bullet(st, B("Parafollicular (C) cells:") + " In interfollicular spaces; secrete calcitonin; larger, paler cells"),
    ]

    story.append(subq(st, '(c)', "Waldeyer's Lymphatic Ring"))
    story += [
        bullet(st, B("Definition:") + " Ring of lymphoid tissue around entrance to pharynx"),
        bullet(st, B("Components:"),),
        subbullet(st, "Pharyngeal tonsil (adenoids) — roof of nasopharynx"),
        subbullet(st, "2 x Tubal tonsils — around eustachian tube openings"),
        subbullet(st, "2 x Palatine tonsils — between palatoglossal &amp; palatopharyngeal folds"),
        subbullet(st, "Lingual tonsil — posterior 1/3 of tongue"),
        bullet(st, B("Function:") + " First line immune defense against inhaled/ingested antigens"),
        bullet(st, B("Clinical:") + " Enlarged adenoids → mouth breathing, otitis media; enlarged tonsils → tonsillar abscess"),
    ]

    story.append(subq(st, '(d)', 'Pulp Space of Thumb'))
    story += [
        bullet(st, B("Location:") + " Closed fibro-fatty compartment at tip of thumb (and all digits)"),
        bullet(st, "Fibrous septa extend from skin to periosteum of distal phalanx → create loculi"),
        bullet(st, B("Contents:") + " Fat, digital artery branches, nerve endings"),
        bullet(st, B("Infection (Felon/Whitlow):"),),
        subbullet(st, "Pus trapped → intense throbbing pain"),
        subbullet(st, "Can compress digital arteries → avascular necrosis of distal phalanx"),
        bullet(st, B("Treatment:") + " Incision + drainage (lateral approach, not fishmouth incision)"),
    ]

    story.append(subq(st, '(e)', 'Action of Genioglossus Muscle'))
    story += [
        bullet(st, B("Origin:") + " Mental spine of mandible"),
        bullet(st, B("Insertion:") + " Whole length of tongue + hyoid bone"),
        bullet(st, B("Nerve:") + " Hypoglossal nerve (CN XII)"),
        bullet(st, B("Actions:"),),
        subbullet(st, "Protrudes tongue (main action) — pushes tongue forward"),
        subbullet(st, "Depresses tongue (inferior fibers)"),
        subbullet(st, "Elevates hyoid bone"),
        bullet(st, B("Clinical:") + " Bilateral genioglossus contraction prevents tongue falling back"),
        bullet(st, "In CN XII palsy: tongue deviates " + B("toward the side of lesion") + " on protrusion"),
        bullet(st, B("Airways:") + " Chin lift/jaw thrust maneuver contracts genioglossus → opens airway"),
    ]

    story.append(qhead(st, 'Q3. Anatomical / Embryological Basis'))

    story.append(subq(st, '(a)', 'Bifid Tongue'))
    story += [
        bullet(st, B("Embryological basis:") + " Tongue develops from " + B("1st, 2nd, 3rd, 4th pharyngeal arches")),
        bullet(st, "Anterior 2/3: Two lateral lingual swellings + tuberculum impar (1st arch) fuse in midline"),
        bullet(st, "Posterior 1/3: Copula (2nd arch) + Hypobranchial eminence (3rd/4th arch)"),
        bullet(st, B("Bifid tongue:") + " Failure of two lateral lingual swellings to fuse in midline"),
        bullet(st, "Results in tongue cleft anteriorly"),
    ]

    story.append(subq(st, '(b)', "Frey's Syndrome"))
    story += [
        bullet(st, B("Definition:") + " Gustatory sweating — sweating over pre-auricular region during eating/thinking of food"),
        bullet(st, B("Cause:") + " Damage to auriculotemporal nerve (after parotid surgery, parotitis)"),
        bullet(st, B("Mechanism:") + " Aberrant regeneration of parasympathetic secretomotor fibers"),
        subbullet(st, "Parasympathetic fibers (normally to parotid) grow into sympathetic pathways to sweat glands of skin"),
        subbullet(st, "Food stimulus → activates these misrouted parasympathetic fibers → sweating instead of salivation"),
        bullet(st, B("Treatment:") + " Antiperspirants, botulinum toxin injection"),
    ]

    story.append(subq(st, '(c)', 'Down Syndrome'))
    story += [
        bullet(st, B("Karyotype:") + " Trisomy 21 (47 chromosomes) — most common chromosomal abnormality"),
        bullet(st, B("Mechanism:") + " Non-disjunction in meiosis I (usually maternal, increases with age)"),
        bullet(st, B("Features:"),),
        subbullet(st, "Flat facies, epicanthic folds, Brushfield spots"),
        subbullet(st, "Upward slanting palpebral fissures"),
        subbullet(st, "Small ears, protruding tongue, single palmar crease (simian crease)"),
        subbullet(st, "Hypotonia"),
        subbullet(st, "Intellectual disability"),
        subbullet(st, "Congenital heart disease (ASD/VSD, AV canal) — 40-50%"),
        subbullet(st, "Increased risk of leukemia, Alzheimer's disease"),
        bullet(st, B("Prenatal diagnosis:") + " Triple test, NIPT, amniocentesis"),
    ]

    story.append(subq(st, '(d)', 'Median Cubital Vein as Vein of Choice for IV Infusion'))
    story += [
        bullet(st, B("Location:") + " Anterior cubital fossa; oblique vein connecting cephalic to basilic vein"),
        bullet(st, B("Advantages:"),),
        subbullet(st, "Lies superficially — easily visible and palpable"),
        subbullet(st, "Large caliber — accommodates large cannula"),
        subbullet(st, "Relatively fixed — does not roll"),
        subbullet(st, B("Bicipital aponeurosis") + " separates it from brachial artery — protects from accidental arterial puncture"),
        subbullet(st, "No major nerves immediately adjacent"),
        bullet(st, B("Other veins used:") + " Cephalic vein (radial side), Basilic vein (ulnar side, deeper)"),
    ]

    story.append(subq(st, '(e)', 'Tetany after Total Thyroidectomy'))
    story += [
        bullet(st, "Accidental removal of all 4 parathyroid glands → " + B("hypoparathyroidism → hypocalcemia → tetany")),
        bullet(st, "PTH regulates calcium — without it, serum Ca²⁺ falls rapidly"),
        bullet(st, "Low Ca²⁺ → increased nerve/muscle excitability → spontaneous discharges"),
        bullet(st, B("Signs:") + " Chvostek's sign, Trousseau's sign, carpopedal spasm, laryngospasm"),
    ]

    return story

# ─────────────────────────────────────────────
# HELPER: build one PDF
# ─────────────────────────────────────────────
def build_pdf(filename, title_text, story_fn, st):
    doc = SimpleDocTemplate(
        filename,
        pagesize=A4,
        leftMargin=1.8*cm, rightMargin=1.8*cm,
        topMargin=2*cm, bottomMargin=2*cm,
    )
    story = story_fn(st)
    doc.build(story)
    print(f"Created: {filename}")

if __name__ == '__main__':
    st = make_styles()
    build_pdf('/home/daytona/workspace/anatomy-exam/Paper1_PostTriangle_CTS.pdf', 'Paper 1', paper1, st)
    build_pdf('/home/daytona/workspace/anatomy-exam/Paper2_RadialNerve_Thyroid.pdf', 'Paper 2', paper2, st)
    build_pdf('/home/daytona/workspace/anatomy-exam/Paper3_FacialNerve_BrachialPlexus.pdf', 'Paper 3', paper3, st)
    print("All done.")
Running Command

cd /home/daytona/workspace/anatomy-exam && python generate_pdfs.py 2>&1

This is a shared conversation. Sign in to Orris to start your own chat.