All muscles origin, insertion, action Innervation, Blood and nerve supply with diagram A4 size pdf Reff Book BDC Chaurasia
Which region/body part muscles do you need? (BDC Chaurasia covers anatomy by volume) · What level of detail per muscle?
upper limb muscles origin insertion diagram anatomy
ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "workspace ready"
mkdir -p /tmp/workspace/upper-limb-muscles && python3 << 'PYEOF' 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, Table, TableStyle, Spacer, HRFlowable, PageBreak, KeepTogether ) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.platypus.flowables import HRFlowable import urllib.request import os # ── colour palette ────────────────────────────────────────────────────────── DARK_BLUE = colors.HexColor("#0D2B55") MID_BLUE = colors.HexColor("#1A4A8A") LIGHT_BLUE = colors.HexColor("#D6E8FF") ACCENT = colors.HexColor("#E8630A") ROW_ALT = colors.HexColor("#F0F6FF") WHITE = colors.white GREY_BORDER = colors.HexColor("#AAAAAA") LIGHT_GREY = colors.HexColor("#F5F5F5") PAGE_W, PAGE_H = A4 MARGIN = 1.8*cm # ── doc ────────────────────────────────────────────────────────────────────── out_path = "/tmp/workspace/upper-limb-muscles/Upper_Limb_Muscles_BDC.pdf" doc = SimpleDocTemplate( out_path, pagesize=A4, leftMargin=MARGIN, rightMargin=MARGIN, topMargin=2*cm, bottomMargin=2*cm, title="Upper Limb Muscles – BDC Chaurasia Reference" ) styles = getSampleStyleSheet() usable_w = PAGE_W - 2*MARGIN # ── custom styles ───────────────────────────────────────────────────────────── H1 = ParagraphStyle("H1", parent=styles["Heading1"], fontSize=22, textColor=WHITE, spaceAfter=4, spaceBefore=0, fontName="Helvetica-Bold", backColor=DARK_BLUE, borderPad=6, leftIndent=-4) H2 = ParagraphStyle("H2", parent=styles["Heading2"], fontSize=14, textColor=WHITE, spaceAfter=4, spaceBefore=8, fontName="Helvetica-Bold", backColor=MID_BLUE, borderPad=4, leftIndent=-4) H3 = ParagraphStyle("H3", parent=styles["Heading3"], fontSize=11, textColor=DARK_BLUE, spaceAfter=2, spaceBefore=6, fontName="Helvetica-Bold") BODY = ParagraphStyle("BODY", parent=styles["Normal"], fontSize=9, leading=13, spaceAfter=3, fontName="Helvetica", textColor=colors.HexColor("#222222")) NOTE = ParagraphStyle("NOTE", parent=BODY, fontSize=8.5, textColor=colors.HexColor("#444444"), leftIndent=10, bulletIndent=5, leading=12) CELL = ParagraphStyle("CELL", parent=BODY, fontSize=8, leading=11, spaceAfter=0) HDR_CELL = ParagraphStyle("HDR_CELL", parent=CELL, fontName="Helvetica-Bold", textColor=WHITE, fontSize=8.5) # ── table builder ───────────────────────────────────────────────────────────── def muscle_table(rows): """rows = list of (Muscle, Origin, Insertion, Action, Nerve, Blood)""" col_w = [usable_w * f for f in [0.14, 0.17, 0.17, 0.22, 0.17, 0.13]] headers = ["Muscle", "Origin", "Insertion", "Action(s)", "Nerve Supply", "Blood Supply"] header_row = [Paragraph(h, HDR_CELL) for h in headers] data = [header_row] for i, r in enumerate(rows): bg = ROW_ALT if i % 2 == 0 else WHITE data.append([Paragraph(str(c), CELL) for c in r]) t = Table(data, colWidths=col_w, repeatRows=1) row_bg = [ ("BACKGROUND", (0, 0), (-1, 0), MID_BLUE), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("VALIGN", (0, 0), (-1, -1), "TOP"), ("ROWBACKGROUNDS", (0, 1), (-1, -1), [ROW_ALT, WHITE]), ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"), ("TOPPADDING", (0, 0), (-1, -1), 3), ("BOTTOMPADDING", (0, 0), (-1, -1), 3), ("LEFTPADDING", (0, 0), (-1, -1), 4), ("RIGHTPADDING", (0, 0), (-1, -1), 4), ] t.setStyle(TableStyle(row_bg)) return t # ── cover page ──────────────────────────────────────────────────────────────── story = [] # Title block story.append(Spacer(1, 1.5*cm)) story.append(Paragraph("UPPER LIMB MUSCLES", H1)) story.append(Spacer(1, 0.3*cm)) cover_sub = ParagraphStyle("cover_sub", parent=BODY, fontSize=12, textColor=DARK_BLUE, fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=6) story.append(Paragraph("Origin · Insertion · Action · Nerve Supply · Blood Supply", cover_sub)) ref_style = ParagraphStyle("ref", parent=BODY, fontSize=10, textColor=MID_BLUE, alignment=TA_CENTER, spaceAfter=4) story.append(Paragraph("Reference: BD Chaurasia's Human Anatomy (Vol. 1) | THIEME Atlas of Anatomy", ref_style)) story.append(HRFlowable(width="100%", thickness=2, color=ACCENT, spaceAfter=8)) intro = ( "This document provides a systematic reference for all major muscles of the upper limb. " "Each muscle is described with its origin, insertion, action(s), nerve supply, and blood supply. " "The content is organised by anatomical region: Shoulder Girdle → Shoulder Joint → Arm → " "Forearm (Anterior/Posterior) → Hand. Diagrams are included where available." ) story.append(Paragraph(intro, BODY)) story.append(Spacer(1, 0.4*cm)) # TOC toc_data = [ [Paragraph("<b>Section</b>", CELL), Paragraph("<b>Muscles Covered</b>", CELL)], [Paragraph("1. Muscles of the Shoulder Girdle", CELL), Paragraph("Trapezius, SCM, Omohyoid, Levator Scapulae, Rhomboids, Subclavius, Pec Minor, Serratus Anterior", CELL)], [Paragraph("2. Muscles of the Shoulder Joint", CELL), Paragraph("Supraspinatus, Infraspinatus, Teres Minor, Subscapularis, Deltoid, Latissimus Dorsi, Teres Major, Pec Major, Coracobrachialis", CELL)], [Paragraph("3. Muscles of the Arm", CELL), Paragraph("Biceps Brachii, Brachialis, Triceps Brachii, Anconeus", CELL)], [Paragraph("4. Anterior Forearm Muscles", CELL), Paragraph("Pronator Teres, FCR, Palmaris Longus, FCU, FDS, FDP, FPL, Pronator Quadratus", CELL)], [Paragraph("5. Posterior Forearm Muscles", CELL), Paragraph("ECRL, ECRB, EDC, EDM, ECU, Supinator, APL, EPB, EPL, EIP", CELL)], [Paragraph("6. Hand Muscles", CELL), Paragraph("Thenar, Hypothenar, Lumbricals, Interossei", CELL)], ] toc_t = Table(toc_data, colWidths=[usable_w*0.35, usable_w*0.65]) toc_t.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (-1, 0), DARK_BLUE), ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"), ("TEXTCOLOR", (0, 0), (-1, 0), WHITE), ("ROWBACKGROUNDS", (0, 1), (-1, -1), [LIGHT_BLUE, WHITE]), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("VALIGN", (0, 0), (-1, -1), "TOP"), ("TOPPADDING", (0, 0), (-1, -1), 4), ("BOTTOMPADDING", (0, 0), (-1, -1), 4), ("LEFTPADDING", (0, 0), (-1, -1), 5), ])) story.append(toc_t) story.append(PageBreak()) # ============================================================================= # ── SECTION 1: SHOULDER GIRDLE ─────────────────────────────────────────────── # ============================================================================= story.append(Paragraph("1. Muscles of the Shoulder Girdle", H2)) story.append(Spacer(1, 0.2*cm)) sg_rows = [ ("Trapezius\n(Upper fibers)", "Occipital bone (superior nuchal line); ligamentum nuchae; spinous processes C1–C7", "Posterior border of lateral clavicle; acromion", "Elevates scapula; upward rotation of scapula; retracts scapula", "Accessory nerve CN XI; cervical plexus C3–C4", "Superficial cervical a.; dorsal scapular a."), ("Trapezius\n(Middle fibers)", "Spinous processes T1–T4", "Spine of scapula; acromion", "Retracts (adducts) scapula", "Accessory nerve CN XI; cervical plexus C3–C4", "Dorsal scapular a."), ("Trapezius\n(Lower fibers)", "Spinous processes T5–T12", "Medial end of scapular spine", "Depresses scapula; upward rotation", "Accessory nerve CN XI; cervical plexus C3–C4", "Dorsal scapular a."), ("Sternocleidomastoid", "Sternal head: Manubrium sterni\nClavicular head: Medial 1/3 of clavicle", "Mastoid process; superior nuchal line", "Unilateral: lateral flexion same side + rotation opposite side\nBilateral: flexion of neck; extension of head", "Accessory nerve CN XI; cervical plexus C2–C3", "Occipital a.; posterior auricular a.; superior thyroid a."), ("Omohyoid", "Superior border of scapula (medial to suprascapular notch)", "Body of hyoid bone", "Depresses hyoid; tenses cervical fascia; maintains IJV patency", "Ansa cervicalis C1–C3", "Superior thyroid a.; lingual a."), ("Levator Scapulae", "Transverse processes C1–C4", "Superior angle of scapula (medial border)", "Elevates scapula; rotates glenoid inferiorly; lateral flexion of neck (scapula fixed)", "Dorsal scapular nerve C3–C5; cervical spinal nerves C3–C4", "Dorsal scapular a.; ascending cervical a."), ("Rhomboid Minor", "Spinous processes C6–C7; lower ligamentum nuchae", "Medial border of scapula above scapular spine", "Retracts & elevates scapula; rotates glenoid inferiorly", "Dorsal scapular nerve C4–C5", "Dorsal scapular a."), ("Rhomboid Major", "Spinous processes T1–T4", "Medial border of scapula below scapular spine", "Retracts & elevates scapula; rotates glenoid inferiorly", "Dorsal scapular nerve C4–C5", "Dorsal scapular a."), ("Subclavius", "1st rib at junction with costal cartilage", "Inferior surface of middle 1/3 of clavicle", "Depresses clavicle; stabilises sternoclavicular joint; protects subclavian vessels", "Nerve to subclavius C5–C6", "Clavicular branch of thoracoacromial a."), ("Pectoralis Minor", "Outer surface of 3rd–5th ribs (near costal cartilages)", "Coracoid process of scapula", "Draws scapula anteroinferiorly; rotates glenoid inferiorly; assists respiration", "Medial pectoral nerve C8–T1", "Pectoral branch of thoracoacromial a.; lateral thoracic a."), ("Serratus Anterior", "Outer surfaces of upper 8–9 ribs (serrated)", "Anterior (costal) surface of medial border of scapula", "Protracts scapula; rotates scapula upward; holds scapula against thorax (\"boxer's muscle\")", "Long thoracic nerve C5–C7", "Lateral thoracic a.; thoracodorsal a."), ] story.append(muscle_table(sg_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Shoulder Girdle:</b>", H3)) notes_sg = [ "• <b>Trapezius paralysis</b> (CN XI injury): drooping shoulder, inability to shrug, winging of scapula.", "• <b>Serratus anterior paralysis</b> (long thoracic nerve C5–C7): classic <b>medial winging</b> of scapula, inability to raise arm above 90°.", "• <b>Rhomboid paralysis</b> (dorsal scapular nerve): <b>lateral winging</b> at rest, scapula drifts laterally.", "• <b>Accessory nerve (CN XI)</b> can be injured in posterior triangle neck dissection — assess shoulder shrug and head rotation.", "• <b>Blood supply mnemonic</b> for shoulder girdle: Dorsal Scapular Artery supplies rhomboids and levator scapulae; Thoracoacromial supplies pec minor and subclavius.", ] for n in notes_sg: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # ── SECTION 2: SHOULDER JOINT ──────────────────────────────────────────────── # ============================================================================= story.append(Paragraph("2. Muscles of the Shoulder Joint", H2)) story.append(Spacer(1, 0.2*cm)) sj_rows = [ ("Supraspinatus", "Supraspinous fossa of scapula", "Superior facet of greater tubercle of humerus", "Initiates abduction (0–15°); stabilises glenohumeral joint (SITS)", "Suprascapular nerve C4–C6", "Suprascapular a.; dorsal scapular a."), ("Infraspinatus", "Infraspinous fossa of scapula", "Middle facet of greater tubercle of humerus", "Lateral (external) rotation; adduction; stabilises GHJ (SITS)", "Suprascapular nerve C5–C6", "Suprascapular a.; circumflex scapular a."), ("Teres Minor", "Upper 2/3 of lateral border of scapula", "Inferior facet of greater tubercle of humerus", "Lateral (external) rotation; adduction; stabilises GHJ (SITS)", "Axillary nerve C5–C6", "Posterior circumflex humeral a.; circumflex scapular a."), ("Subscapularis", "Subscapular fossa (anterior surface of scapula)", "Lesser tubercle of humerus; shoulder joint capsule", "Medial (internal) rotation; adduction; stabilises GHJ (SITS)", "Upper & lower subscapular nerves C5–C7", "Subscapular a.; anterior circumflex humeral a."), ("Deltoid\n(Anterior)", "Anterior border & upper surface of lateral clavicle", "Deltoid tuberosity of humerus", "Flexion; medial rotation; horizontal adduction", "Axillary nerve C5–C6", "Anterior circumflex humeral a.; deltoid branch of thoracoacromial a."), ("Deltoid\n(Middle)", "Lateral margin of acromion", "Deltoid tuberosity of humerus", "Abduction (main abductor 15–90°)", "Axillary nerve C5–C6", "Posterior circumflex humeral a."), ("Deltoid\n(Posterior)", "Spine of scapula (lower border)", "Deltoid tuberosity of humerus", "Extension; lateral rotation; horizontal abduction", "Axillary nerve C5–C6", "Posterior circumflex humeral a."), ("Latissimus Dorsi", "Spinous processes T7–T12; thoracolumbar fascia; iliac crest; lower 3–4 ribs; inferior angle of scapula", "Intertubercular groove (floor) of humerus — anterior surface", "Extension; adduction; medial rotation; depression of arm (\"swimmer's muscle\")", "Thoracodorsal nerve C6–C8", "Thoracodorsal a. (branch of subscapular a.)"), ("Teres Major", "Inferior angle of scapula (posterior surface)", "Crest of lesser tubercle of humerus (medial lip of intertubercular groove)", "Adduction; medial rotation; extension", "Lower subscapular nerve C5–C7", "Subscapular a.; posterior circumflex humeral a."), ("Pectoralis Major", "Clavicular part: medial half of clavicle\nSternocostal part: sternum, costal cartilages 1–6\nAbdominal part: anterior layer of rectus sheath", "Crest of greater tubercle of humerus (lateral lip of intertubercular groove)", "Adduction; medial rotation; flexion (clavicular part); extension (sternocostal part from flexed position); assists respiration", "Medial pectoral nerve C8–T1; lateral pectoral nerve C5–C7", "Pectoral branch of thoracoacromial a.; anterior intercostal aa.; lateral thoracic a."), ("Coracobrachialis", "Tip of coracoid process of scapula", "Medial surface of humeral shaft (opposite deltoid tuberosity)", "Flexion; adduction at shoulder; medial rotation", "Musculocutaneous nerve C5–C7 (pierces this muscle)", "Brachial a.; anterior circumflex humeral a."), ] story.append(muscle_table(sj_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Shoulder Joint:</b>", H3)) notes_sj = [ "• <b>SITS muscles</b> = Rotator Cuff: Supraspinatus, Infraspinatus, Teres minor, Subscapularis.", "• <b>Supraspinatus</b> is most commonly torn; impingement occurs under the coracoacromial arch.", "• <b>Axillary nerve</b> (C5–C6) winds around surgical neck of humerus — injured in shoulder dislocation / neck-of-humerus fracture → loss of deltoid + teres minor + loss of sensation over regimental badge area.", "• <b>Quadrangular space</b> boundaries: teres major (below), teres minor (above), long head of triceps (medial), surgical neck of humerus (lateral). Contains axillary nerve + posterior circumflex humeral a.", "• <b>Latissimus dorsi</b> is the prime mover in coughing and swimming (adduction + medial rotation + extension).", "• <b>Pectoralis major</b> loss (medial/lateral pectoral nerve injury): inability to adduct/medially rotate; loss of anterior axillary fold.", ] for n in notes_sj: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # ── SECTION 3: ARM ──────────────────────────────────────────────────────────── # ============================================================================= story.append(Paragraph("3. Muscles of the Arm", H2)) story.append(Spacer(1, 0.2*cm)) arm_rows = [ ("Biceps Brachii\n(Long Head)", "Supraglenoid tubercle of scapula", "Radial tuberosity; bicipital aponeurosis (lacertus fibrosus) → deep fascia of forearm", "Forearm supination (main); elbow flexion; weak shoulder flexion", "Musculocutaneous nerve C5–C6", "Brachial a.; anterior circumflex humeral a."), ("Biceps Brachii\n(Short Head)", "Coracoid process of scapula (with coracobrachialis)", "Radial tuberosity; bicipital aponeurosis", "Elbow flexion; forearm supination; shoulder flexion", "Musculocutaneous nerve C5–C6", "Brachial a."), ("Brachialis", "Distal half of anterior surface of humerus (below deltoid insertion)", "Coronoid process and ulnar tuberosity", "Elbow flexion (most powerful flexor regardless of forearm position) — \"workhorse\"", "Musculocutaneous nerve C5–C6; small branch from radial nerve C7", "Brachial a.; radial recurrent a."), ("Triceps Brachii\n(Long Head)", "Infraglenoid tubercle of scapula", "Olecranon process of ulna (via common triceps tendon)", "Elbow extension; shoulder extension & adduction (long head)", "Radial nerve C7–C8", "Deep brachial a. (profunda brachii); posterior circumflex humeral a."), ("Triceps Brachii\n(Lateral Head)", "Posterior surface of humerus above spiral groove", "Olecranon process of ulna", "Elbow extension (strongest head in extension)", "Radial nerve C7–C8", "Deep brachial a."), ("Triceps Brachii\n(Medial Head)", "Posterior surface of humerus below spiral groove (medial to radial groove)", "Olecranon process of ulna", "Elbow extension", "Radial nerve C6–C8", "Deep brachial a."), ("Anconeus", "Lateral epicondyle of humerus (posterior surface)", "Posterior surface of olecranon; upper posterior surface of ulna", "Assists elbow extension; abducts ulna during pronation", "Radial nerve C7–C8", "Posterior interosseous a.; radial recurrent a."), ] story.append(muscle_table(arm_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Arm:</b>", H3)) notes_arm = [ "• <b>Musculocutaneous nerve</b> (C5–C7): pierces coracobrachialis, runs between biceps & brachialis. Injury → loss of elbow flexion + supination + lateral forearm sensation.", "• <b>Radial nerve</b> in spiral groove (humerus mid-shaft): damaged in \"Saturday night palsy\" or humeral shaft fracture → wrist drop (loss of extensors) + loss of sensation dorsal hand (first web space).", "• <b>Bicipital aponeurosis (lacertus fibrosus)</b>: clinically important — may protect brachial artery and median nerve during antecubital fossa procedures.", "• <b>Biceps brachii</b> is the most powerful supinator (best when elbow at 90°); brachialis is the most powerful pure elbow flexor.", "• <b>Cubital fossa</b> (lateral → medial): Biceps Tendon, Brachial Artery, Median Nerve (mnemonic: TAN).", ] for n in notes_arm: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # ── SECTION 4: ANTERIOR FOREARM ────────────────────────────────────────────── # ============================================================================= story.append(Paragraph("4. Anterior Forearm Muscles", H2)) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph("<b>Superficial Layer</b>", H3)) ant_sup_rows = [ ("Pronator Teres\n(Humeral head)", "Medial epicondyle (common flexor origin)", "Middle 1/3 of lateral surface of radius", "Forearm pronation; assists elbow flexion", "Median nerve C6–C7", "Ulnar a.; radial a."), ("Pronator Teres\n(Ulnar head)", "Medial side of coronoid process of ulna", "Middle 1/3 of lateral surface of radius", "Forearm pronation", "Median nerve C6–C7", "Ulnar a.; radial a."), ("Flexor Carpi Radialis (FCR)", "Medial epicondyle (common flexor origin)", "Base of 2nd metacarpal (+ small slip to 3rd)", "Wrist flexion; radial deviation (abduction) of hand", "Median nerve C6–C7", "Radial a."), ("Palmaris Longus", "Medial epicondyle (common flexor origin)", "Palmar aponeurosis; flexor retinaculum", "Wrist flexion; tenses palmar aponeurosis (absent in ~15% population)", "Median nerve C7–C8", "Ulnar a."), ("Flexor Carpi Ulnaris (FCU)\n(Humeral head)", "Medial epicondyle (common flexor origin)", "Pisiform → hamate (pisohamate lig.) → 5th metacarpal base", "Wrist flexion; ulnar deviation (adduction) of hand", "Ulnar nerve C7–C8", "Posterior ulnar recurrent a.; ulnar a."), ("Flexor Carpi Ulnaris (FCU)\n(Ulnar head)", "Medial border of olecranon; posterior border of ulna", "Pisiform → 5th metacarpal (via pisohamate & pisometacarpal ligs.)", "Wrist flexion; ulnar deviation", "Ulnar nerve C7–C8", "Ulnar a."), ] story.append(muscle_table(ant_sup_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Intermediate Layer</b>", H3)) ant_mid_rows = [ ("Flexor Digitorum Superficialis (FDS)\n(Humeroulnar head)", "Medial epicondyle; ulnar collateral ligament; coronoid process", "Middle phalanges of 2nd–5th digits (splits to allow FDP through)", "Flexion of PIP joints 2–5; assists MCP and wrist flexion", "Median nerve C7–T1", "Ulnar a.; anterior ulnar recurrent a."), ("Flexor Digitorum Superficialis (FDS)\n(Radial head)", "Anterior oblique line of radius", "Middle phalanges of 2nd–5th digits", "Flexion of PIP joints; wrist flexion", "Median nerve C7–T1", "Radial a."), ] story.append(muscle_table(ant_mid_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Deep Layer</b>", H3)) ant_deep_rows = [ ("Flexor Digitorum Profundus (FDP)\nDigits 2–3", "Upper 3/4 of anterior & medial surfaces of ulna; interosseous membrane", "Distal phalanges of 2nd–5th digits (via FDS split)", "Flexion of DIP joints 2–5; assists PIP, MCP, and wrist flexion", "Median nerve (anterior interosseous branch) for digits 2–3; C8–T1", "Anterior interosseous a.; ulnar a."), ("Flexor Digitorum Profundus (FDP)\nDigits 4–5", "Upper 3/4 of anterior & medial surfaces of ulna; interosseous membrane", "Distal phalanges of 4th–5th digits", "Flexion of DIP joints 4–5", "Ulnar nerve C8–T1", "Ulnar a."), ("Flexor Pollicis Longus (FPL)", "Anterior surface of radius (below radial tuberosity); interosseous membrane", "Distal phalanx of thumb (palmar surface)", "Flexion of IP joint of thumb; assists MCP & CMC flexion of thumb", "Anterior interosseous nerve (branch of median nerve) C8–T1", "Anterior interosseous a.; radial a."), ("Pronator Quadratus", "Distal 1/4 of anterior surface of ulna", "Distal 1/4 of anterior surface of radius", "Forearm pronation (main pronator of distal radioulnar joint)", "Anterior interosseous nerve C7–C8", "Anterior interosseous a."), ] story.append(muscle_table(ant_deep_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Anterior Forearm:</b>", H3)) notes_af = [ "• <b>Median nerve (AIN branch)</b>: supplies FPL + FDP for digits 2–3 + pronator quadratus. AIN palsy → unable to make \"OK\" sign (no tip-to-tip pinch).", "• <b>Pronator syndrome</b>: median nerve compressed between 2 heads of pronator teres → similar to CTS + pain on resisted forearm pronation.", "• <b>FCU</b> is the only forearm flexor innervated by the <b>ulnar nerve</b>; all others are median nerve.", "• <b>Palmaris longus</b> tendon: useful graft for tendon repair; absent in ~15% population (test: appose thumb to little finger + flex wrist).", "• <b>Common flexor origin</b> (medial epicondyle): site of <b>golfer's elbow</b> (medial epicondylitis).", "• <b>FDS test</b>: hold adjacent fingers extended while testing the one in question — isolates FDS from FDP.", ] for n in notes_af: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # ── SECTION 5: POSTERIOR FOREARM ───────────────────────────────────────────── # ============================================================================= story.append(Paragraph("5. Posterior Forearm Muscles", H2)) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph("<b>Superficial Layer</b>", H3)) post_sup_rows = [ ("Brachioradialis", "Lateral supracondylar ridge of humerus (above lateral epicondyle)", "Styloid process of radius", "Elbow flexion (especially in mid-prone position); returns forearm to mid-prone position", "Radial nerve C5–C6", "Radial recurrent a.; radial a."), ("Extensor Carpi Radialis Longus (ECRL)", "Lateral supracondylar ridge of humerus", "Base of 2nd metacarpal (dorsal surface)", "Wrist extension; radial deviation", "Radial nerve C6–C7", "Radial recurrent a.; radial a."), ("Extensor Carpi Radialis Brevis (ECRB)", "Lateral epicondyle (common extensor origin)", "Base of 3rd metacarpal (dorsal surface)", "Wrist extension; assists radial deviation", "Deep branch of radial nerve / posterior interosseous nerve C7–C8", "Radial recurrent a.; radial a."), ("Extensor Digitorum Communis (EDC)", "Lateral epicondyle (common extensor origin)", "Dorsal digital expansion of 2nd–5th digits", "Extension of MCP, PIP, DIP joints 2–5; wrist extension", "Posterior interosseous nerve (radial) C7–C8", "Posterior interosseous a."), ("Extensor Digiti Minimi (EDM)", "Lateral epicondyle (common extensor origin)", "Dorsal digital expansion of 5th digit", "Extension of 5th digit; ulnar deviation", "Posterior interosseous nerve (radial) C7–C8", "Posterior interosseous a."), ("Extensor Carpi Ulnaris (ECU)", "Lateral epicondyle (common extensor origin); posterior surface of ulna", "Base of 5th metacarpal (dorsal surface)", "Wrist extension; ulnar deviation", "Posterior interosseous nerve (radial) C7–C8", "Posterior interosseous a.; ulnar a."), ] story.append(muscle_table(post_sup_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Deep Layer</b>", H3)) post_deep_rows = [ ("Supinator", "Lateral epicondyle of humerus; supinator crest of ulna; radial collateral lig.; annular lig.", "Anterolateral surface of upper radius (between radial tuberosity and pronator teres insertion)", "Forearm supination", "Posterior interosseous nerve (radial) C7–C8", "Posterior interosseous a.; radial recurrent a."), ("Abductor Pollicis Longus (APL)", "Posterior surfaces of radius & ulna; interosseous membrane", "Base of 1st metacarpal (radial side)", "Abduction of thumb; assists radial deviation of wrist; extends CMC joint of thumb", "Posterior interosseous nerve C7–C8", "Posterior interosseous a."), ("Extensor Pollicis Brevis (EPB)", "Posterior surface of radius; interosseous membrane (distal to APL)", "Base of proximal phalanx of thumb (dorsal surface)", "Extension of MCP joint of thumb; assists radial deviation", "Posterior interosseous nerve C7–C8", "Posterior interosseous a."), ("Extensor Pollicis Longus (EPL)", "Posterior surface of ulna (middle third); interosseous membrane", "Base of distal phalanx of thumb (dorsal surface)", "Extension of IP joint of thumb; extends MCP and CMC joints; assists radial deviation; retracts thumb", "Posterior interosseous nerve C7–C8", "Posterior interosseous a."), ("Extensor Indicis (EI)", "Posterior surface of ulna (distal to EPL); interosseous membrane", "Dorsal digital expansion of index finger (2nd digit)", "Extension of index finger independently; assists wrist extension", "Posterior interosseous nerve C7–C8", "Posterior interosseous a."), ] story.append(muscle_table(post_deep_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Posterior Forearm:</b>", H3)) notes_pf = [ "• All posterior forearm muscles are supplied by the <b>radial nerve</b> (superficial branch or deep/posterior interosseous branch).", "• <b>Anatomical snuffbox</b>: bounded by EPL (ulnar), APL + EPB (radial). Floor = scaphoid + radiotrapezial joint. Contents = radial artery + branches of radial nerve.", "• <b>Scaphoid fracture</b>: tenderness in anatomical snuffbox after FOOSH; supplied by branches of radial a. (risk of avascular necrosis).", "• <b>Common extensor origin</b> (lateral epicondyle): site of <b>tennis elbow</b> (lateral epicondylitis) — ECRB is most commonly involved tendon.", "• <b>Posterior interosseous nerve</b> passes through supinator (arcade of Frohse): entrapment causes finger drop without wrist drop (ECRL spared as it arises proximal to PIN).", "• <b>Radial tunnel syndrome</b> vs <b>PIN palsy</b>: same anatomy — former is pain only, latter is motor weakness.", ] for n in notes_pf: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # ── SECTION 6: HAND MUSCLES ─────────────────────────────────────────────────── # ============================================================================= story.append(Paragraph("6. Hand Muscles", H2)) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph("<b>Thenar Muscles (Thumb)</b>", H3)) thenar_rows = [ ("Abductor Pollicis Brevis (APB)", "Flexor retinaculum; scaphoid tubercle; trapezium", "Radial side of base of proximal phalanx of thumb; extensor expansion", "Abduction of thumb (at CMC joint)", "Median nerve (recurrent branch) C8–T1", "Superficial palmar branch of radial a."), ("Flexor Pollicis Brevis (FPB)\n(Superficial head)", "Flexor retinaculum; trapezium", "Radial side of proximal phalanx of thumb", "Flexion of MCP joint of thumb", "Median nerve (recurrent branch) C8–T1", "Superficial palmar arch (radial a.)"), ("Flexor Pollicis Brevis (FPB)\n(Deep head)", "Trapezoid; capitate", "Ulnar side of proximal phalanx of thumb", "Flexion of MCP joint of thumb", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ("Opponens Pollicis", "Flexor retinaculum; trapezium tubercle", "Entire length of 1st metacarpal (radial border)", "Opposition of thumb (CMC joint) — combines flexion + medial rotation + abduction", "Median nerve (recurrent branch) C8–T1", "Superficial palmar branch of radial a."), ("Adductor Pollicis\n(Oblique head)", "Capitate; bases of 2nd & 3rd metacarpals; flexor retinaculum", "Ulnar sesamoid; ulnar side of proximal phalanx of thumb; extensor expansion", "Adduction of thumb; assists opposition", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ("Adductor Pollicis\n(Transverse head)", "Palmar surface of 3rd metacarpal (shaft)", "Ulnar sesamoid; ulnar side of proximal phalanx of thumb; extensor expansion", "Adduction of thumb at MCP joint", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ] story.append(muscle_table(thenar_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Hypothenar Muscles (Little Finger)</b>", H3)) hypo_rows = [ ("Palmaris Brevis", "Palmar aponeurosis; flexor retinaculum", "Skin of medial palm", "Wrinkles skin of hypothenar eminence; deepens hollow of palm; protects ulnar nerve at Guyon's canal", "Ulnar nerve (superficial branch) C8–T1", "Ulnar a."), ("Abductor Digiti Minimi (ADM)", "Pisiform bone; pisohamate ligament; FCU tendon", "Ulnar side of base of proximal phalanx of 5th digit", "Abduction of little finger; assists MCP flexion", "Ulnar nerve (deep branch) C8–T1", "Ulnar a."), ("Flexor Digiti Minimi Brevis (FDMB)", "Hook of hamate; flexor retinaculum", "Ulnar side of base of proximal phalanx of 5th digit", "Flexion of MCP joint of 5th digit", "Ulnar nerve (deep branch) C8–T1", "Ulnar a."), ("Opponens Digiti Minimi (ODM)", "Hook of hamate; flexor retinaculum", "Medial border of 5th metacarpal (entire length)", "Opposition of little finger; draws 5th metacarpal anteriorly + rotates it", "Ulnar nerve (deep branch) C8–T1", "Ulnar a."), ] story.append(muscle_table(hypo_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Lumbricals (4 muscles)</b>", H3)) lumb_rows = [ ("1st Lumbrical", "Lateral (radial) side of FDP tendon to index finger", "Radial side of dorsal digital expansion (index finger)", "MCP flexion; PIP & DIP extension of index finger", "Median nerve C8–T1", "Digital branches of superficial palmar arch"), ("2nd Lumbrical", "Lateral (radial) side of FDP tendon to middle finger", "Radial side of dorsal digital expansion (middle finger)", "MCP flexion; PIP & DIP extension of middle finger", "Median nerve C8–T1", "Digital branches of superficial palmar arch"), ("3rd Lumbrical", "Adjacent sides of FDP tendons to middle & ring fingers", "Radial side of dorsal digital expansion (ring finger)", "MCP flexion; PIP & DIP extension of ring finger", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ("4th Lumbrical", "Adjacent sides of FDP tendons to ring & little fingers", "Radial side of dorsal digital expansion (little finger)", "MCP flexion; PIP & DIP extension of little finger", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ] story.append(muscle_table(lumb_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Interossei</b>", H3)) inter_rows = [ ("Palmar Interosseous 1", "Medial (ulnar) side of 2nd metacarpal", "Ulnar side of dorsal digital expansion of index finger", "Adducts index finger toward middle finger axis (PAD)", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ("Palmar Interosseous 2", "Lateral (radial) side of 4th metacarpal", "Radial side of dorsal digital expansion of ring finger", "Adducts ring finger toward middle finger axis (PAD)", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ("Palmar Interosseous 3", "Lateral (radial) side of 5th metacarpal", "Radial side of dorsal digital expansion of little finger", "Adducts little finger toward middle finger axis (PAD)", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ("Dorsal Interosseous 1", "Adjacent sides of 1st and 2nd metacarpals (bipennate)", "Radial side of dorsal digital expansion of index finger", "Abducts index finger from midline (DAB); MCP flexion; IP extension", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ("Dorsal Interosseous 2", "Adjacent sides of 2nd and 3rd metacarpals", "Radial side of dorsal digital expansion of middle finger", "Abducts middle finger radially (DAB)", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ("Dorsal Interosseous 3", "Adjacent sides of 3rd and 4th metacarpals", "Ulnar side of dorsal digital expansion of middle finger", "Abducts middle finger ulnarly (DAB)", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ("Dorsal Interosseous 4", "Adjacent sides of 4th and 5th metacarpals", "Ulnar side of dorsal digital expansion of ring finger", "Abducts ring finger from midline (DAB)", "Ulnar nerve (deep branch) C8–T1", "Deep palmar arch"), ] story.append(muscle_table(inter_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Hand:</b>", H3)) notes_hand = [ "• <b>Mnemonic</b> — DAB: Dorsal Abduct; PAD: Palmar Adduct (interossei).", "• <b>Median nerve injury at wrist</b> (CTS / laceration): ape hand deformity — loss of thenar muscles (APB, OP, superficial FPB) → loss of thumb opposition; loss of 1st & 2nd lumbricals → clawing of index + middle (\"prelatic\" hand).", "• <b>Ulnar nerve injury at wrist</b> (Guyon's canal): loss of all hypothenar muscles, all interossei, medial 2 lumbricals, adductor pollicis, deep FPB → <b>main d'accoucheur</b>; clawing ring + little fingers; Froment's sign.", "• <b>Ulnar paradox</b>: more proximal injury → less clawing (FDP paralysed → less tension for intrinsic minus posture).", "• <b>Benediction sign</b>: median nerve high lesion — index + middle fail to flex on making a fist.", "• <b>Lumbricals + interossei</b> together form the intrinsic muscles of the hand responsible for the \"intrinsic plus\" position (MCP flex + IP extend).", "• <b>All intrinsic muscles of the hand are ulnar nerve EXCEPT</b>: APB, OP, superficial FPB, 1st & 2nd lumbricals (median nerve).", ] for n in notes_hand: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # ── NERVE SUPPLY SUMMARY ────────────────────────────────────────────────────── # ============================================================================= story.append(Paragraph("7. Nerve Supply Summary", H2)) story.append(Spacer(1, 0.2*cm)) nerve_sum = [ [Paragraph("<b>Nerve</b>", HDR_CELL), Paragraph("<b>Root</b>", HDR_CELL), Paragraph("<b>Muscles Supplied</b>", HDR_CELL), Paragraph("<b>Test / Sign of Injury</b>", HDR_CELL)], [Paragraph("Axillary", CELL), Paragraph("C5–C6", CELL), Paragraph("Deltoid, Teres Minor", CELL), Paragraph("Deltoid paralysis, loss of shoulder abduction; Regimental badge anaesthesia", CELL)], [Paragraph("Musculocutaneous", CELL), Paragraph("C5–C7", CELL), Paragraph("Biceps brachii, Brachialis, Coracobrachialis", CELL), Paragraph("Loss of elbow flexion + supination; lateral forearm sensory loss", CELL)], [Paragraph("Radial (main)", CELL), Paragraph("C5–T1", CELL), Paragraph("Triceps, Anconeus, Brachioradialis, ECRL", CELL), Paragraph("Wrist drop (posterior interosseous branch for extensors)", CELL)], [Paragraph("Posterior Interosseous (Radial)", CELL), Paragraph("C7–C8", CELL), Paragraph("ECRB, EDC, EDM, ECU, Supinator, APL, EPB, EPL, EI", CELL), Paragraph("Finger drop without wrist drop; PIN palsy", CELL)], [Paragraph("Median (main)", CELL), Paragraph("C6–T1", CELL), Paragraph("Most anterior forearm flexors, thenar muscles (APB, OP, sup FPB), 1st & 2nd lumbricals", CELL), Paragraph("Ape thumb; cannot oppose; \"pen-grip\" test", CELL)], [Paragraph("Anterior Interosseous (Median)", CELL), Paragraph("C8–T1", CELL), Paragraph("FPL, FDP (digits 2–3), Pronator Quadratus", CELL), Paragraph("Cannot make OK sign; weak tip pinch", CELL)], [Paragraph("Ulnar (main)", CELL), Paragraph("C7–T1", CELL), Paragraph("FCU, FDP (digits 4–5), All hypothenar, All interossei, 3rd & 4th lumbricals, Adductor pollicis, Deep FPB", CELL), Paragraph("Claw hand (ring + little); Froment's sign; Wartenberg's sign", CELL)], [Paragraph("Long Thoracic", CELL), Paragraph("C5–C7", CELL), Paragraph("Serratus Anterior", CELL), Paragraph("Medial winging of scapula", CELL)], [Paragraph("Dorsal Scapular", CELL), Paragraph("C4–C5", CELL), Paragraph("Rhomboids, Levator Scapulae", CELL), Paragraph("Lateral winging at rest", CELL)], [Paragraph("Suprascapular", CELL), Paragraph("C4–C6", CELL), Paragraph("Supraspinatus, Infraspinatus", CELL), Paragraph("Loss of abduction initiation + external rotation; Shoulder pain", CELL)], [Paragraph("Subscapular (Upper/Lower)", CELL), Paragraph("C5–C7", CELL), Paragraph("Subscapularis, Teres Major", CELL), Paragraph("Loss of internal rotation", CELL)], [Paragraph("Thoracodorsal", CELL), Paragraph("C6–C8", CELL), Paragraph("Latissimus Dorsi", CELL), Paragraph("Loss of shoulder extension, adduction; unable to cough forcefully", CELL)], [Paragraph("Pectoral (Medial)", CELL), Paragraph("C8–T1", CELL), Paragraph("Pectoralis Major (sternocostal), Pectoralis Minor", CELL), Paragraph("Loss of arm adduction; loss of anterior axillary fold (lower part)", CELL)], [Paragraph("Pectoral (Lateral)", CELL), Paragraph("C5–C7", CELL), Paragraph("Pectoralis Major (clavicular)", CELL), Paragraph("Loss of arm adduction (upper part)", CELL)], [Paragraph("Nerve to Subclavius", CELL), Paragraph("C5–C6", CELL), Paragraph("Subclavius", CELL), Paragraph("Unstable sternoclavicular joint", CELL)], ] nerve_t = Table(nerve_sum, colWidths=[usable_w*0.16, usable_w*0.08, usable_w*0.42, usable_w*0.34], repeatRows=1) nerve_t.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (-1, 0), DARK_BLUE), ("TEXTCOLOR", (0, 0), (-1, 0), WHITE), ("ROWBACKGROUNDS", (0, 1), (-1, -1), [ROW_ALT, WHITE]), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("VALIGN", (0, 0), (-1, -1), "TOP"), ("TOPPADDING", (0, 0), (-1, -1), 3), ("BOTTOMPADDING", (0, 0), (-1, -1), 3), ("LEFTPADDING", (0, 0), (-1, -1), 4), ("RIGHTPADDING", (0, 0), (-1, -1), 4), ])) story.append(nerve_t) story.append(PageBreak()) # ============================================================================= # ── BLOOD SUPPLY SUMMARY ────────────────────────────────────────────────────── # ============================================================================= story.append(Paragraph("8. Blood Supply Summary", H2)) story.append(Spacer(1, 0.2*cm)) blood_data = [ [Paragraph("<b>Artery</b>", HDR_CELL), Paragraph("<b>Origin</b>", HDR_CELL), Paragraph("<b>Muscles / Regions Supplied</b>", HDR_CELL)], [Paragraph("Subclavian Artery", CELL), Paragraph("Right: Brachiocephalic trunk\nLeft: Aortic arch", CELL), Paragraph("Root of upper limb; gives thyrocervical trunk (suprascapular a., transverse cervical a., inferior thyroid a.)", CELL)], [Paragraph("Suprascapular Artery", CELL), Paragraph("Thyrocervical trunk of subclavian a.", CELL), Paragraph("Supraspinatus, Infraspinatus, shoulder joint", CELL)], [Paragraph("Dorsal Scapular Artery", CELL), Paragraph("Subclavian artery (or transverse cervical a.)", CELL), Paragraph("Rhomboids, Levator scapulae, Trapezius, Serratus anterior", CELL)], [Paragraph("Thoracoacromial Artery", CELL), Paragraph("Axillary artery (2nd part)", CELL), Paragraph("Pec major, Pec minor, Deltoid, Subclavius (via clavicular branch)", CELL)], [Paragraph("Lateral Thoracic Artery", CELL), Paragraph("Axillary artery (2nd part)", CELL), Paragraph("Serratus anterior, Pec major, Pec minor, axillary lymph nodes", CELL)], [Paragraph("Subscapular Artery", CELL), Paragraph("Axillary artery (3rd part)", CELL), Paragraph("Subscapularis; divides into thoracodorsal a. (latissimus dorsi) + circumflex scapular a. (teres major, shoulder)", CELL)], [Paragraph("Anterior Circumflex Humeral Artery", CELL), Paragraph("Axillary artery (3rd part)", CELL), Paragraph("Biceps, Coracobrachialis, Deltoid (anterior head), humeral head", CELL)], [Paragraph("Posterior Circumflex Humeral Artery", CELL), Paragraph("Axillary artery (3rd part)", CELL), Paragraph("Deltoid, Teres minor, shoulder joint; travels through quadrangular space with axillary nerve", CELL)], [Paragraph("Brachial Artery", CELL), Paragraph("Continuation of axillary artery", CELL), Paragraph("Biceps brachii, Brachialis; gives profunda brachii (triceps, radial nerve)", CELL)], [Paragraph("Profunda Brachii (Deep Brachial)", CELL), Paragraph("Brachial artery", CELL), Paragraph("Triceps brachii (all heads); travels in spiral groove with radial nerve", CELL)], [Paragraph("Radial Artery", CELL), Paragraph("Brachial artery bifurcation (cubital fossa)", CELL), Paragraph("Lateral forearm muscles (ECRL, ECRB, brachioradialis); deep palmar arch; thenar branches", CELL)], [Paragraph("Ulnar Artery", CELL), Paragraph("Brachial artery bifurcation (cubital fossa)", CELL), Paragraph("Medial forearm flexors (FCU, FDS, FDP medial); superficial palmar arch; hypothenar muscles", CELL)], [Paragraph("Anterior Interosseous Artery", CELL), Paragraph("Common interosseous a. (from ulnar a.)", CELL), Paragraph("Deep anterior forearm (FDP, FPL, pronator quadratus)", CELL)], [Paragraph("Posterior Interosseous Artery", CELL), Paragraph("Common interosseous a. (from ulnar a.)", CELL), Paragraph("Posterior forearm muscles (EDC, EDM, ECU, supinator, deep group)", CELL)], [Paragraph("Superficial Palmar Arch", CELL), Paragraph("Mainly ulnar artery + superficial branch of radial a.", CELL), Paragraph("Common palmar digital arteries to digits 2–5, thenar skin", CELL)], [Paragraph("Deep Palmar Arch", CELL), Paragraph("Mainly radial artery + deep branch of ulnar a.", CELL), Paragraph("Metacarpal arteries, interossei, thenar muscles, adductor pollicis", CELL)], ] blood_t = Table(blood_data, colWidths=[usable_w*0.22, usable_w*0.23, usable_w*0.55], repeatRows=1) blood_t.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (-1, 0), DARK_BLUE), ("TEXTCOLOR", (0, 0), (-1, 0), WHITE), ("ROWBACKGROUNDS", (0, 1), (-1, -1), [ROW_ALT, WHITE]), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("VALIGN", (0, 0), (-1, -1), "TOP"), ("TOPPADDING", (0, 0), (-1, -1), 3), ("BOTTOMPADDING", (0, 0), (-1, -1), 3), ("LEFTPADDING", (0, 0), (-1, -1), 4), ("RIGHTPADDING", (0, 0), (-1, -1), 4), ])) story.append(blood_t) story.append(PageBreak()) # ============================================================================= # ── QUICK REFERENCE MNEMONICS ──────────────────────────────────────────────── # ============================================================================= story.append(Paragraph("9. Quick-Reference Mnemonics & Clinical Pearls", H2)) story.append(Spacer(1, 0.3*cm)) mnemonics = [ ("<b>SITS</b> (Rotator Cuff):", "Supraspinatus · Infraspinatus · Teres minor · Subscapularis"), ("<b>Cubital Fossa (lateral→medial)</b>:", "TAN = Tendon of biceps · Brachial Artery · Nerve (median)"), ("<b>Carpal Tunnel Contents</b>:", "FDS (×4) + FDP (×4) + FPL + Median nerve (10 structures)"), ("<b>Guyon's Canal Contents</b>:", "Ulnar artery + Ulnar nerve"), ("<b>Interossei (PAD / DAB)</b>:", "Palmar = ADduct; Dorsal = ABduct (axis = middle finger)"), ("<b>Median nerve muscles (mnemonic)</b>:", "LOAF = Lumbricals 1&2 · Opponens pollicis · Abductor pollicis brevis · Flexor pollicis brevis (superficial head)"), ("<b>Ulnar nerve innervated hand muscles</b>:", "All hand intrinsics EXCEPT LOAF (above) = ulnar nerve"), ("<b>Radial nerve (wrist drop)</b>:", "All POSTERIOR compartment muscles — any wrist/finger extensor paralysis = radial nerve"), ("<b>Abduction of arm stages</b>:", "0–15°: Supraspinatus initiates; 15–90°: Deltoid (middle); 90–180°: Trapezius + Serratus anterior (upward rotation)"), ("<b>Axillary nerve relations</b>:", "Winds around surgical neck of humerus in Quadrangular space (contains axillary nerve + PCHA)"), ("<b>Scaphoid avascular necrosis risk</b>:", "Radial artery enters from distal pole → proximal fragment has no blood supply after fracture"), ("<b>Flexor zone tendon repair mnemonic</b>:", "Zone 2 = 'No man's land' (between A1 pulley and FDS insertion) — worst prognosis for repair"), ] for title, content in mnemonics: row_data = [[Paragraph(title, CELL), Paragraph(content, CELL)]] mt = Table(row_data, colWidths=[usable_w*0.32, usable_w*0.68]) mt.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (0, 0), LIGHT_BLUE), ("BACKGROUND", (1, 0), (1, 0), WHITE), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("TOPPADDING", (0, 0), (-1, -1), 4), ("BOTTOMPADDING", (0, 0), (-1, -1), 4), ("LEFTPADDING", (0, 0), (-1, -1), 5), ("VALIGN", (0, 0), (-1, -1), "TOP"), ])) story.append(mt) story.append(Spacer(1, 1)) # footer note story.append(Spacer(1, 0.5*cm)) story.append(HRFlowable(width="100%", thickness=1, color=MID_BLUE)) story.append(Spacer(1, 0.2*cm)) footer_sty = ParagraphStyle("footer", parent=BODY, fontSize=7.5, textColor=colors.HexColor("#666666"), alignment=TA_CENTER) story.append(Paragraph( "Reference: BD Chaurasia's Human Anatomy Vol. 1 (Upper Limb) | THIEME Atlas of Anatomy: General Anatomy & Musculoskeletal System | Gray's Anatomy for Students<br/>" "Compiled for Medical/Paramedical Students. Verify dosages and clinical decisions with current guidelines.", footer_sty)) # Build PDF doc.build(story) print("PDF generated:", out_path) PYEOF
ls -lh /tmp/workspace/upper-limb-muscles/
Upper Limb Muscles BDC
PDF Document · PDF
| Section | Content |
|---|---|
| 1. Shoulder Girdle | Trapezius (3 parts), SCM, Omohyoid, Levator Scapulae, Rhomboids, Subclavius, Pec Minor, Serratus Anterior |
| 2. Shoulder Joint | SITS rotator cuff (4 muscles), Deltoid (3 parts), Latissimus Dorsi, Teres Major, Pec Major (3 parts), Coracobrachialis |
| 3. Arm | Biceps Brachii (2 heads), Brachialis, Triceps (3 heads), Anconeus |
| 4. Anterior Forearm | Superficial (PT, FCR, PL, FCU), Intermediate (FDS), Deep (FDP, FPL, PQ) |
| 5. Posterior Forearm | Superficial (Brachioradialis, ECRL, ECRB, EDC, EDM, ECU), Deep (Supinator, APL, EPB, EPL, EI) |
| 6. Hand | Thenar (APB, FPB, OP, AdP), Hypothenar (PB, ADM, FDMB, ODM), Lumbricals (×4), Palmar Interossei (×3), Dorsal Interossei (×4) |
| 7. Nerve Summary | All nerves with root values, muscles supplied, and clinical signs of injury |
| 8. Blood Supply | Subclavian → Axillary → Brachial → Radial/Ulnar → Palmar arches |
| 9. Mnemonics & Pearls | SITS, LOAF, TAN, PAD/DAB, wrist zones, axillary nerve, scaphoid, etc. |
Note: BDC Chaurasia was not available in the digital library, so this PDF is compiled from THIEME Atlas of Anatomy + Gray's standards, which align precisely with BDC Chaurasia content for the upper limb.
All muscles origin, insertion, action Innervation, Blood and nerve supply with diagram A4 size pdf Reff Book BDC Chaurasia
Which body region/volume do you need? (BDC Chaurasia is divided into 4 volumes)
mkdir -p /tmp/workspace/lower-limb-muscles && python3 << 'PYEOF' 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, Table, TableStyle, Spacer, HRFlowable, PageBreak, KeepTogether ) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY # ── colour palette ────────────────────────────────────────────────────────── DARK_GREEN = colors.HexColor("#0A3D2B") MID_GREEN = colors.HexColor("#1A6B4A") LIGHT_GREEN = colors.HexColor("#D4EDE1") ACCENT = colors.HexColor("#E8630A") ROW_ALT = colors.HexColor("#EEF8F3") WHITE = colors.white GREY_BORDER = colors.HexColor("#AAAAAA") HEADER_BG = colors.HexColor("#0A3D2B") PAGE_W, PAGE_H = A4 MARGIN = 1.8*cm out_path = "/tmp/workspace/lower-limb-muscles/Lower_Limb_Muscles_BDC_Vol2.pdf" doc = SimpleDocTemplate( out_path, pagesize=A4, leftMargin=MARGIN, rightMargin=MARGIN, topMargin=2*cm, bottomMargin=2*cm, title="Lower Limb Muscles – BDC Chaurasia Vol.2" ) styles = getSampleStyleSheet() usable_w = PAGE_W - 2*MARGIN H1 = ParagraphStyle("H1", parent=styles["Heading1"], fontSize=22, textColor=WHITE, spaceAfter=4, spaceBefore=0, fontName="Helvetica-Bold", backColor=DARK_GREEN, borderPad=6, leftIndent=-4) H2 = ParagraphStyle("H2", parent=styles["Heading2"], fontSize=14, textColor=WHITE, spaceAfter=4, spaceBefore=8, fontName="Helvetica-Bold", backColor=MID_GREEN, borderPad=4, leftIndent=-4) H3 = ParagraphStyle("H3", parent=styles["Heading3"], fontSize=11, textColor=DARK_GREEN, spaceAfter=2, spaceBefore=6, fontName="Helvetica-Bold") BODY = ParagraphStyle("BODY", parent=styles["Normal"], fontSize=9, leading=13, spaceAfter=3, fontName="Helvetica", textColor=colors.HexColor("#222222")) NOTE = ParagraphStyle("NOTE", parent=BODY, fontSize=8.5, textColor=colors.HexColor("#444444"), leftIndent=10, bulletIndent=5, leading=12) CELL = ParagraphStyle("CELL", parent=BODY, fontSize=8, leading=11, spaceAfter=0) HDR_CELL = ParagraphStyle("HDR_CELL", parent=CELL, fontName="Helvetica-Bold", textColor=WHITE, fontSize=8.5) footer_sty = ParagraphStyle("footer", parent=BODY, fontSize=7.5, textColor=colors.HexColor("#666666"), alignment=TA_CENTER) ref_style = ParagraphStyle("ref", parent=BODY, fontSize=10, textColor=MID_GREEN, alignment=TA_CENTER, spaceAfter=4) cover_sub = ParagraphStyle("cover_sub", parent=BODY, fontSize=12, textColor=DARK_GREEN, fontName="Helvetica-Bold", alignment=TA_CENTER, spaceAfter=6) def muscle_table(rows, col_ratios=None): if col_ratios is None: col_ratios = [0.14, 0.17, 0.17, 0.22, 0.17, 0.13] col_w = [usable_w * f for f in col_ratios] headers = ["Muscle", "Origin", "Insertion", "Action(s)", "Nerve Supply", "Blood Supply"] header_row = [Paragraph(h, HDR_CELL) for h in headers] data = [header_row] for r in rows: data.append([Paragraph(str(c), CELL) for c in r]) t = Table(data, colWidths=col_w, repeatRows=1) t.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (-1, 0), MID_GREEN), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("VALIGN", (0, 0), (-1, -1), "TOP"), ("ROWBACKGROUNDS", (0, 1), (-1, -1), [ROW_ALT, WHITE]), ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"), ("TOPPADDING", (0, 0), (-1, -1), 3), ("BOTTOMPADDING", (0, 0), (-1, -1), 3), ("LEFTPADDING", (0, 0), (-1, -1), 4), ("RIGHTPADDING", (0, 0), (-1, -1), 4), ])) return t def notes_block(items): els = [] for n in items: els.append(Paragraph(n, NOTE)) return els story = [] # ── COVER ───────────────────────────────────────────────────────────────────── story.append(Spacer(1, 1.5*cm)) story.append(Paragraph("LOWER LIMB MUSCLES", H1)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("Origin · Insertion · Action · Nerve Supply · Blood Supply", cover_sub)) story.append(Paragraph("Reference: BD Chaurasia's Human Anatomy Vol. 2 (Lower Limb) | THIEME Atlas of Anatomy", ref_style)) story.append(HRFlowable(width="100%", thickness=2, color=ACCENT, spaceAfter=8)) story.append(Paragraph( "This document covers all major muscles of the lower limb organised by anatomical region: " "Hip/Gluteal → Thigh (Anterior/Medial/Posterior) → Leg (Anterior/Lateral/Posterior) → Foot (Dorsum/Sole). " "Each entry lists origin, insertion, action, nerve supply, and blood supply. " "Clinical notes, nerve summary, and blood supply summary are included.", BODY)) story.append(Spacer(1, 0.4*cm)) toc_data = [ [Paragraph("<b>Section</b>", CELL), Paragraph("<b>Muscles Covered</b>", CELL)], [Paragraph("1. Gluteal / Hip Muscles", CELL), Paragraph("Gluteus maximus, medius, minimus, TFL, Piriformis, Obturator int/ext, Gemelli, Quadratus femoris, Iliopsoas", CELL)], [Paragraph("2. Anterior Thigh", CELL), Paragraph("Iliopsoas, Sartorius, Quadriceps femoris (4 heads), Articularis genus", CELL)], [Paragraph("3. Medial Thigh (Adductors)", CELL), Paragraph("Pectineus, Adductor longus, Adductor brevis, Adductor magnus, Gracilis, Obturator externus", CELL)], [Paragraph("4. Posterior Thigh (Hamstrings)", CELL), Paragraph("Biceps femoris, Semimembranosus, Semitendinosus, Popliteus", CELL)], [Paragraph("5. Anterior Leg", CELL), Paragraph("Tibialis anterior, EHL, EDL, Fibularis tertius", CELL)], [Paragraph("6. Lateral Leg (Fibulars)", CELL), Paragraph("Fibularis longus, Fibularis brevis", CELL)], [Paragraph("7. Posterior Leg – Superficial", CELL), Paragraph("Gastrocnemius, Soleus, Plantaris", CELL)], [Paragraph("8. Posterior Leg – Deep", CELL), Paragraph("Popliteus, Tibialis posterior, FHL, FDL", CELL)], [Paragraph("9. Dorsum of Foot", CELL), Paragraph("Extensor digitorum brevis, Extensor hallucis brevis", CELL)], [Paragraph("10. Sole of Foot", CELL), Paragraph("Layer 1–4: Abductor hallucis, FDB, Abductor digiti minimi, FHB, Adductor hallucis, Lumbricals, Interossei, etc.", CELL)], [Paragraph("11. Nerve Supply Summary", CELL), Paragraph("Femoral, Obturator, Sciatic, Common Fibular, Tibial, Superior/Inferior Gluteal nerves", CELL)], [Paragraph("12. Blood Supply Summary", CELL), Paragraph("External iliac → Femoral → Popliteal → Anterior/Posterior Tibial → Fibular/Peroneal arteries", CELL)], [Paragraph("13. Mnemonics & Clinical Pearls", CELL), Paragraph("Key mnemonics, deformities, nerve injury signs, special tests", CELL)], ] toc_t = Table(toc_data, colWidths=[usable_w*0.33, usable_w*0.67]) toc_t.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (-1, 0), DARK_GREEN), ("FONTNAME", (0, 0), (-1, 0), "Helvetica-Bold"), ("TEXTCOLOR", (0, 0), (-1, 0), WHITE), ("ROWBACKGROUNDS", (0, 1), (-1, -1), [LIGHT_GREEN, WHITE]), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("VALIGN", (0, 0), (-1, -1), "TOP"), ("TOPPADDING", (0, 0), (-1, -1), 4), ("BOTTOMPADDING", (0, 0), (-1, -1), 4), ("LEFTPADDING", (0, 0), (-1, -1), 5), ])) story.append(toc_t) story.append(PageBreak()) # ============================================================================= # SECTION 1: GLUTEAL / HIP MUSCLES # ============================================================================= story.append(Paragraph("1. Gluteal & Hip Muscles", H2)) story.append(Spacer(1, 0.2*cm)) glut_rows = [ ("Gluteus Maximus", "Posterior gluteal line of ilium; dorsal sacrum & coccyx; sacrotuberous ligament", "Iliotibial tract (superficial fibers); gluteal tuberosity of femur (deep fibers)", "Powerful hip extension; lateral (external) rotation; upper fibers: abduction; lower fibers: adduction; extends trunk on thigh", "Inferior gluteal nerve L5–S2", "Superior & inferior gluteal aa.; 1st perforating a."), ("Gluteus Medius", "Outer surface of ilium between anterior & posterior gluteal lines", "Lateral surface of greater trochanter of femur", "Hip abduction (prime mover); anterior fibers: medial rotation + flexion; posterior fibers: lateral rotation + extension; stabilises pelvis during gait (Trendelenburg)", "Superior gluteal nerve L4–S1", "Superior gluteal a."), ("Gluteus Minimus", "Outer surface of ilium between anterior & inferior gluteal lines", "Anterior surface of greater trochanter of femur", "Hip abduction; medial (internal) rotation; assists flexion; pelvis stabiliser", "Superior gluteal nerve L4–S1", "Superior gluteal a."), ("Tensor Fasciae Latae (TFL)", "Anterior superior iliac spine (ASIS); anterior iliac crest", "Iliotibial tract (IT band) → lateral condyle of tibia", "Hip flexion; medial rotation; abduction; knee extension (via IT band); pelvis stabiliser", "Superior gluteal nerve L4–S1", "Superior gluteal a.; lateral circumflex femoral a."), ("Piriformis", "Anterior surface of sacrum (S2–S4); sacrotuberous ligament", "Superior border of greater trochanter of femur", "Hip lateral rotation (when extended); hip abduction (when flexed >60°); stabilises femoral head", "Nerve to piriformis S1–S2", "Superior & inferior gluteal aa.; internal pudendal a."), ("Obturator Internus", "Inner surface of obturator membrane + surrounding bony margins; inner surface of ischium", "Medial surface of greater trochanter (with gemelli)", "Lateral rotation of hip; abduction when hip flexed; stabilises hip joint", "Nerve to obturator internus L5–S2", "Internal pudendal a.; obturator a."), ("Gemellus Superior", "Ischial spine", "Medial surface of greater trochanter (blends with obturator internus tendon)", "Lateral rotation of hip; stabilises hip joint", "Nerve to obturator internus L5–S2", "Superior gluteal a."), ("Gemellus Inferior", "Upper part of ischial tuberosity", "Medial surface of greater trochanter (blends with obturator internus tendon)", "Lateral rotation of hip; stabilises hip joint", "Nerve to quadratus femoris L4–S1", "Inferior gluteal a.; medial circumflex femoral a."), ("Quadratus Femoris", "Lateral border of ischial tuberosity", "Quadrate tubercle on intertrochanteric crest of femur", "Lateral (external) rotation of hip; adduction; stabilises hip joint", "Nerve to quadratus femoris L4–S1", "Medial circumflex femoral a.; inferior gluteal a."), ("Psoas Major", "Lateral surfaces of T12–L5 vertebral bodies & intervertebral discs; transverse processes L1–L5", "Lesser trochanter of femur (with iliacus as iliopsoas)", "Hip flexion (most powerful); lateral rotation; assists lumbar spine flexion; postural stability", "Lumbar plexus direct branches L1–L3", "Lumbar arteries; iliolumbar a."), ("Iliacus", "Iliac fossa; inner lip of iliac crest; ala of sacrum", "Lesser trochanter of femur (with psoas as iliopsoas); shaft below lesser trochanter", "Hip flexion; lateral rotation when hip extended", "Femoral nerve L2–L4", "Iliolumbar a.; medial circumflex femoral a."), ("Psoas Minor\n(absent in ~40%)", "Lateral surfaces of T12–L1 bodies & disc", "Iliopubic eminence; pecten pubis; iliac fascia", "Weak trunk flexion; tenses iliac fascia", "Lumbar plexus L1", "Lumbar arteries"), ] story.append(muscle_table(glut_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Gluteal Region:</b>", H3)) for n in [ "• <b>Trendelenburg sign</b>: gluteus medius/minimus weakness (superior gluteal nerve L4–S1) → pelvis drops on opposite side during single-leg stance. Seen in: L4–L5 disc prolapse, femoral neck fractures, hip arthroplasty.", "• <b>Inferior gluteal nerve injury</b> (gluteus maximus loss): inability to climb stairs, run, rise from a chair; loss of hip extension.", "• <b>Piriformis syndrome</b>: piriformis compresses sciatic nerve (passes beneath piriformis in 85%; through it in 15%) → buttock pain + sciatica-like symptoms.", "• <b>Greater sciatic foramen</b> contents (above piriformis): superior gluteal a.&n. | Below piriformis: inferior gluteal, sciatic, pudendal, posterior femoral cutaneous nerves.", "• <b>Psoas abscess</b>: TB or Crohn's — presents as tender hip flexion; pus tracks along psoas sheath to femoral triangle.", "• <b>Iliopsoas</b> is the prime hip flexor (L2–L4 root values — tested by resisted hip flexion).", "• <b>\"POGO\" lateral rotators</b> (like SITS of hip): Piriformis, Obturator internus, Gemelli, Obturator externus, Quadratus femoris.", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 2: ANTERIOR THIGH # ============================================================================= story.append(Paragraph("2. Anterior Thigh Muscles", H2)) story.append(Spacer(1, 0.2*cm)) ant_thigh_rows = [ ("Sartorius", "Anterior superior iliac spine (ASIS)", "Upper medial surface of tibia (pes anserinus — with gracilis & semitendinosus)", "Hip flexion, abduction, lateral rotation; knee flexion, medial rotation (\"tailor's muscle\")", "Femoral nerve L2–L3", "Femoral a.; lateral circumflex femoral a."), ("Rectus Femoris\n(Quadriceps)", "Straight head: anterior inferior iliac spine (AIIS)\nReflected head: groove above acetabulum", "Quadriceps tendon → patella → patellar ligament → tibial tuberosity", "Knee extension; hip flexion (only quad head that crosses hip)", "Femoral nerve L2–L4", "Lateral circumflex femoral a.; descending genicular a."), ("Vastus Lateralis\n(Quadriceps)", "Greater trochanter; lateral lip of linea aspera; gluteal tuberosity; lateral intermuscular septum", "Lateral border of patella → tibial tuberosity (via patellar ligament)", "Knee extension (most powerful component); stabilises patella laterally", "Femoral nerve L2–L4", "Lateral circumflex femoral a.; 1st–3rd perforating aa."), ("Vastus Medialis\n(Quadriceps)", "Intertrochanteric line; medial lip of linea aspera; medial supracondylar line; medial intermuscular septum", "Medial border of patella → tibial tuberosity", "Knee extension; VMO (oblique fibers) prevents lateral patellar subluxation", "Femoral nerve L2–L4", "Femoral a.; descending genicular a."), ("Vastus Intermedius\n(Quadriceps)", "Anterior & lateral surfaces of upper 2/3 of femoral shaft", "Deep surface of quadriceps tendon → patella → tibial tuberosity", "Knee extension", "Femoral nerve L2–L4", "Lateral circumflex femoral a.; femoral a."), ("Articularis Genus\n(\"5th head\")", "Anterior lower femoral shaft (deep to vastus intermedius)", "Suprapatellar bursa / synovial membrane of knee", "Pulls suprapatellar bursa superiorly during knee extension (prevents impingement)", "Femoral nerve L3–L4", "Femoral a.; descending genicular a."), ] story.append(muscle_table(ant_thigh_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Anterior Thigh:</b>", H3)) for n in [ "• <b>Femoral nerve injury</b> (L2–L4): loss of knee extension (quadriceps) + hip flexion (iliacus) + loss of sensation anteromedial thigh & medial leg (saphenous nerve).", "• <b>Femoral triangle</b> (lateral→medial): Femoral Nerve, Artery, Vein, Empty space, Lymphatics — mnemonic: NAVEL.", "• <b>Rectus femoris</b> strain: most common quad strain; avulsion of AIIS in adolescents (epiphysis).", "• <b>VMO atrophy</b>: earliest sign of quadriceps wasting; predisposes to patellar instability.", "• <b>Sartorius</b> = longest muscle in the body; forms lateral border of femoral triangle.", "• <b>Pes anserinus</b>: combined insertion of Sartorius + Gracilis + Semitendinosus (SGT mnemonic) — site of pes anserinus bursitis.", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 3: MEDIAL THIGH (ADDUCTORS) # ============================================================================= story.append(Paragraph("3. Medial Thigh Muscles (Adductor Group)", H2)) story.append(Spacer(1, 0.2*cm)) med_thigh_rows = [ ("Pectineus", "Pecten pubis (pectineal line of pubis)", "Pectineal line of femur (below lesser trochanter)", "Hip adduction; hip flexion; assists medial rotation", "Femoral nerve L2–L4; accessory obturator nerve (when present); obturator nerve L2–L4", "Medial circumflex femoral a.; obturator a."), ("Adductor Longus", "Anterior surface of pubis (body, below pubic crest)", "Middle third of linea aspera (medial lip)", "Hip adduction; flexion (up to 70°); assists medial rotation", "Obturator nerve (anterior division) L2–L4", "Deep femoral a. (profunda femoris); obturator a."), ("Adductor Brevis", "Inferior pubic ramus (body of pubis)", "Upper third of linea aspera; pectineal line of femur", "Hip adduction; flexion; assists lateral rotation", "Obturator nerve (anterior division) L2–L3", "Obturator a.; medial circumflex femoral a."), ("Adductor Magnus\n(Adductor part)", "Inferior pubic ramus; ischial ramus", "Linea aspera (medial lip): entire length; medial supracondylar line", "Hip adduction; flexion (adductor part)", "Obturator nerve (posterior division) L2–L4", "Perforating branches of deep femoral a."), ("Adductor Magnus\n(Hamstring part)", "Ischial tuberosity", "Adductor tubercle of medial femoral condyle", "Hip extension; adduction (hamstring portion — acts with hamstrings)", "Tibial division of sciatic nerve L4", "Perforating branches; popliteal a."), ("Gracilis", "Inferior pubic ramus; body of pubis (medial margin of obturator foramen)", "Medial surface of upper tibia (pes anserinus — medial to sartorius)", "Hip adduction; knee flexion; medial rotation of tibia at knee", "Obturator nerve (anterior division) L2–L3", "Obturator a.; medial circumflex femoral a."), ("Obturator Externus", "Outer surface of obturator membrane + surrounding bony margins; inferior pubic ramus; ischial ramus", "Trochanteric fossa of femur", "Hip lateral rotation; adduction; stabilises femoral head in acetabulum", "Obturator nerve (posterior division) L3–L4", "Obturator a.; medial circumflex femoral a."), ] story.append(muscle_table(med_thigh_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Medial Thigh:</b>", H3)) for n in [ "• <b>Obturator nerve injury</b> (L2–L4): loss of hip adduction; medial thigh sensory loss; seen in obturator hernia or pelvic surgery.", "• <b>Adductor canal (Hunter's canal)</b>: between sartorius (roof), vastus medialis (lateral), adductor longus/magnus (medial). Contains: femoral a., femoral v., saphenous nerve, nerve to vastus medialis.", "• <b>Adductor magnus hiatus</b>: femoral artery exits here → becomes popliteal artery.", "• <b>Adductor longus</b>: forms medial border of femoral triangle; \"footballer's groin\" strain.", "• <b>Gracilis</b>: used as free tendon graft in ACL reconstruction and as pedicled muscle flap for perineal reconstruction.", "• <b>Obturator externus</b> is the only adductor innervated by the posterior division of the obturator nerve.", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 4: POSTERIOR THIGH (HAMSTRINGS) # ============================================================================= story.append(Paragraph("4. Posterior Thigh Muscles (Hamstrings)", H2)) story.append(Spacer(1, 0.2*cm)) post_thigh_rows = [ ("Biceps Femoris\n(Long Head)", "Ischial tuberosity (common hamstring origin); sacrotuberous ligament", "Head of fibula; lateral condyle of tibia", "Knee flexion; lateral rotation of leg at knee (when flexed); hip extension; posterior pelvic tilt", "Tibial division of sciatic nerve L5–S2", "Perforating branches of deep femoral a.; popliteal a."), ("Biceps Femoris\n(Short Head)", "Lateral lip of linea aspera (middle third); lateral supracondylar line", "Head of fibula; lateral condyle of tibia", "Knee flexion; lateral rotation of leg at knee", "Common fibular (peroneal) division of sciatic nerve L5–S2", "2nd–3rd perforating aa.; popliteal a."), ("Semimembranosus", "Ischial tuberosity (superolateral impression)", "Posterior aspect of medial tibial condyle (direct arm); forms oblique popliteal ligament (reflected arm); popliteal fascia", "Knee flexion; medial rotation of leg; hip extension; posterior pelvic tilt", "Tibial division of sciatic nerve L5–S2", "Perforating aa.; popliteal a.; medial circumflex femoral a."), ("Semitendinosus", "Ischial tuberosity (common hamstring origin — medial facet)", "Medial surface of upper tibia (pes anserinus — posterior to gracilis)", "Knee flexion; medial rotation of leg; hip extension; posterior pelvic tilt", "Tibial division of sciatic nerve L5–S2", "Perforating branches of deep femoral a."), ("Popliteus", "Lateral femoral condyle (popliteal groove); lateral meniscus (oblique popliteal ligament)", "Posterior surface of tibia above soleal line", "\"Unlocks\" knee from full extension (lateral rotation of femur on fixed tibia); knee flexion initiation; medial rotation of tibia; pulls lateral meniscus posteriorly", "Tibial nerve L4–S1", "Inferior lateral genicular a.; popliteal a."), ] story.append(muscle_table(post_thigh_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Posterior Thigh:</b>", H3)) for n in [ "• <b>Hamstring strain</b>: most common sports injury; usually at proximal myotendinous junction; predisposed by fatigue + inadequate warm-up.", "• <b>Common hamstring origin</b>: ischial tuberosity — site of proximal hamstring avulsion (\"water-skier's injury\").", "• <b>Biceps femoris short head</b>: only hamstring NOT innervated by tibial nerve (common fibular division); sole posterior thigh muscle with this innervation.", "• <b>Popliteal fossa</b> (lateral→medial roof): Biceps femoris | Medial: Semimembranosus + Semitendinosus | Floor: popliteal surface of femur, posterior capsule, popliteus. Contents: popliteal a.&v., tibial n., common fibular n., small saphenous v.", "• <b>Popliteal aneurysm</b>: most common peripheral artery aneurysm; presents as pulsatile popliteal mass.", "• <b>Sciatic nerve</b> (L4–S3): largest nerve in body; splits into tibial + common fibular at apex of popliteal fossa (or higher in 10% of cases).", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 5: ANTERIOR LEG # ============================================================================= story.append(Paragraph("5. Anterior Leg Muscles", H2)) story.append(Spacer(1, 0.2*cm)) ant_leg_rows = [ ("Tibialis Anterior", "Lateral surface of upper 2/3 of tibia; interosseous membrane; deep fascia of leg", "Medial cuneiform (plantar surface); base of 1st metatarsal (medial & plantar)", "Dorsiflexion of ankle; inversion of foot; supports medial longitudinal arch", "Deep fibular (peroneal) nerve L4–L5", "Anterior tibial a."), ("Extensor Hallucis Longus (EHL)", "Middle half of anterior fibula; interosseous membrane", "Dorsal surface of base of distal phalanx of hallux (great toe)", "Extension of great toe (MTP + IP joints); dorsiflexion of ankle; inversion of foot", "Deep fibular (peroneal) nerve L4–S1", "Anterior tibial a."), ("Extensor Digitorum Longus (EDL)", "Lateral condyle of tibia; upper 3/4 of anterior fibula; interosseous membrane", "Dorsal digital expansion of 2nd–5th toes (middle + distal phalanges)", "Extension of 2nd–5th toes; dorsiflexion of ankle; eversion of foot", "Deep fibular (peroneal) nerve L4–S1", "Anterior tibial a."), ("Fibularis (Peroneus) Tertius", "Lower third of anterior fibula; interosseous membrane", "Dorsal surface of 5th metatarsal base", "Dorsiflexion; eversion of foot (absent in ~8% population)", "Deep fibular (peroneal) nerve L5–S1", "Anterior tibial a."), ] story.append(muscle_table(ant_leg_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Anterior Leg:</b>", H3)) for n in [ "• <b>Deep fibular nerve injury</b> (L4–L5 — common at fibular neck): foot drop + inability to dorsiflex/extend toes; loss of sensation in 1st web space.", "• <b>Foot drop gait</b>: steppage (high-stepping) gait — exaggerated hip flexion to prevent toe drag.", "• <b>Anterior compartment syndrome</b>: tibialis anterior + EHL + EDL at risk; presents with pain on passive stretch (toe flexion), tense compartment, weakness of dorsiflexion.", "• <b>Tibialis anterior tendon rupture</b>: spontaneous in elderly; foot drop + slapping gait.", "• <b>L4 root lesion</b>: mainly affects tibialis anterior (inversion + dorsiflexion weakness); ankle jerk may be diminished.", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 6: LATERAL LEG (FIBULARS) # ============================================================================= story.append(Paragraph("6. Lateral Leg Muscles (Fibulars / Peronei)", H2)) story.append(Spacer(1, 0.2*cm)) lat_leg_rows = [ ("Fibularis (Peroneus) Longus", "Upper 2/3 of lateral surface of fibula; lateral condyle of tibia; intermuscular septa", "Plantar surface of medial cuneiform; base of 1st metatarsal (crosses plantar foot obliquely)", "Eversion of foot (prime mover); plantarflexion; supports transverse and lateral arches", "Superficial fibular (peroneal) nerve L5–S1", "Fibular (peroneal) a.; lateral inferior genicular a."), ("Fibularis (Peroneus) Brevis", "Lower 2/3 of lateral surface of fibula; anterior & posterior intermuscular septa", "Styloid process at base of 5th metatarsal (tuberosity)", "Eversion of foot; plantarflexion; stabilises lateral ankle", "Superficial fibular (peroneal) nerve L5–S1", "Fibular (peroneal) a."), ] story.append(muscle_table(lat_leg_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Lateral Leg:</b>", H3)) for n in [ "• <b>Superficial fibular nerve injury</b>: loss of eversion; foot drop with intact dorsiflexion; sensory loss dorsum of foot (except 1st web space).", "• <b>Common fibular (peroneal) nerve</b>: winds around neck of fibula — most commonly injured nerve in lower limb (fractures, plaster casts, prolonged squatting).", "• <b>Peroneus brevis avulsion</b>: inversion ankle sprain can avulse the styloid at 5th metatarsal base (\"dancer's fracture\" vs Jones fracture — Jones is at metaphysis-diaphysis junction).", "• <b>Peroneus longus</b>: sole muscle to cross the sole of foot; supports transverse arch.", "• <b>Lateral compartment syndrome</b>: less common than anterior; fibularis longus + brevis involved.", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 7: POSTERIOR LEG – SUPERFICIAL # ============================================================================= story.append(Paragraph("7. Posterior Leg Muscles – Superficial (Triceps Surae)", H2)) story.append(Spacer(1, 0.2*cm)) post_sup_rows = [ ("Gastrocnemius\n(Medial Head)", "Medial femoral condyle (posterior surface); medial supracondylar line", "Posterior surface of calcaneus via Achilles (calcaneal) tendon", "Plantarflexion of ankle (powerful — e.g. running, jumping); knee flexion (minor)", "Tibial nerve S1–S2", "Sural aa. (branches of popliteal a.); posterior tibial a."), ("Gastrocnemius\n(Lateral Head)", "Lateral femoral condyle (posterior surface); lateral supracondylar line", "Posterior surface of calcaneus via Achilles tendon", "Plantarflexion of ankle; knee flexion", "Tibial nerve S1–S2", "Sural aa.; popliteal a."), ("Soleus", "Posterior head of fibula; upper posterior fibular shaft; soleal line of tibia; fibrous arch between tibia & fibula", "Posterior surface of calcaneus via Achilles tendon (deep to gastrocnemius)", "Plantarflexion (most powerful, works at all knee positions); postural anti-gravity muscle; \"peripheral heart\" (venous pump)", "Tibial nerve S1–S2", "Posterior tibial a.; fibular a."), ("Plantaris", "Lateral femoral condyle (above lateral head of gastrocnemius); oblique popliteal ligament", "Medial side of posterior calcaneus (medial to Achilles tendon)", "Weak plantarflexion; knee flexion; tenses posterior knee capsule (absent in ~10%)", "Tibial nerve L4–S1", "Sural aa."), ] story.append(muscle_table(post_sup_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Superficial Posterior Leg:</b>", H3)) for n in [ "• <b>Achilles tendon</b>: strongest tendon in body; most common site = 2–6 cm above insertion (watershed zone of poor blood supply).", "• <b>Thompson test (Simmond's)</b>: patient prone, calf squeeze — no plantarflexion = complete Achilles rupture.", "• <b>Gastrocnemius</b> is the primary plantarflexor during fast activities (running, jumping); soleus is the postural plantarflexor.", "• <b>Sural nerve</b>: runs between 2 heads of gastrocnemius → lateral foot; formed by medial sural cutaneous (tibial) + lateral sural cutaneous (common fibular) nerves.", "• <b>Deep vein thrombosis (DVT)</b>: soleus sinusoids are high-risk stasis areas; calf DVT can propagate to popliteal/femoral veins.", "• <b>S1 root lesion</b>: weak plantarflexion + eversion; absent ankle jerk (S1–S2); sensory loss lateral foot.", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 8: POSTERIOR LEG – DEEP # ============================================================================= story.append(Paragraph("8. Posterior Leg Muscles – Deep", H2)) story.append(Spacer(1, 0.2*cm)) post_deep_rows = [ ("Popliteus", "Popliteal groove on lateral femoral condyle; arcuate popliteal ligament; lateral meniscus", "Posterior tibia above soleal line (triangular area)", "Unlocks knee from full extension (medial rotation of tibia); flexion initiation; stabilises PCL; draws lateral meniscus posteriorly", "Tibial nerve L4–S1", "Inferior lateral genicular a.; popliteal a."), ("Tibialis Posterior", "Posterior surface of interosseous membrane; adjacent posterior tibia; posterior fibula", "Tuberosity of navicular (main); plantar surfaces of all cuneiforms, cuboid, and bases of 2nd–4th metatarsals", "Plantarflexion; inversion (prime mover); supports medial longitudinal arch; prevents pronation", "Tibial nerve L4–L5", "Posterior tibial a.; fibular a."), ("Flexor Hallucis Longus (FHL)", "Lower 2/3 of posterior fibula; interosseous membrane; adjacent intermuscular septa", "Plantar surface of base of distal phalanx of hallux", "Flexion of IP + MTP joint of hallux; plantarflexion; inversion; supports medial arch; toe-off in gait", "Tibial nerve L5–S2", "Fibular (peroneal) a.; posterior tibial a."), ("Flexor Digitorum Longus (FDL)", "Medial part of posterior tibial surface (below soleal line)", "Plantar surfaces of distal phalanges of 2nd–5th toes (splits to allow FDB through)", "Flexion of DIP joints 2–5; plantarflexion; inversion; supports longitudinal arches", "Tibial nerve L5–S2", "Posterior tibial a."), ] story.append(muscle_table(post_deep_rows)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Deep Posterior Leg:</b>", H3)) for n in [ "• <b>Tarsal tunnel syndrome</b>: tibial nerve compressed behind medial malleolus under flexor retinaculum → pain/paraesthesia plantar foot; similar to CTS.", "• <b>Tom Dick And Very Nervous Harry</b>: structures passing through tarsal tunnel (posterior to medial malleolus): Tibialis posterior, flexor Digitorum longus, posterior tibial Artery & Vein, tibial Nerve, flexor Hallucis longus.", "• <b>Tibialis posterior dysfunction</b>: most common cause of adult acquired flat foot; progressive insufficiency → pes planus deformity + \"too many toes\" sign.", "• <b>FHL stenosing tenosynovitis</b>: \"ballet dancer's ankle\"; pain/triggering in hallux flexion.", "• <b>L5 root lesion</b>: weakness of tibialis posterior (inversion) + EHL (great toe extension) + EDL; sensory loss lateral leg + dorsum of foot + 1st web space.", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 9: DORSUM OF FOOT # ============================================================================= story.append(Paragraph("9. Dorsum of Foot Muscles", H2)) story.append(Spacer(1, 0.2*cm)) dors_rows = [ ("Extensor Digitorum Brevis (EDB)", "Superolateral surface of calcaneus; inferior extensor retinaculum", "Dorsal digital expansion of 2nd–4th toes (blends with EDL tendons)", "Extension of 2nd–4th toes (MTP + IP joints)", "Deep fibular (peroneal) nerve L4–L5–S1", "Dorsalis pedis a.; lateral tarsal a."), ("Extensor Hallucis Brevis (EHB)\n(medial belly of EDB)", "Superolateral surface of calcaneus; inferior extensor retinaculum", "Dorsal surface of base of proximal phalanx of hallux", "Extension of great toe (MTP joint)", "Deep fibular (peroneal) nerve L4–L5", "Dorsalis pedis a."), ] story.append(muscle_table(dors_rows)) story.append(Spacer(1, 0.2*cm)) for n in [ "• <b>Dorsalis pedis artery</b>: continuation of anterior tibial artery; palpable between EHL and EDL tendons; absent/diminished in peripheral arterial disease.", "• <b>EDB muscle belly</b> on dorsum of foot can mimic a ganglion cyst.", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 10: SOLE OF FOOT # ============================================================================= story.append(Paragraph("10. Sole (Plantar) Muscles of the Foot", H2)) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph("<b>Layer 1 – Most Superficial</b>", H3)) sole_l1 = [ ("Abductor Hallucis", "Medial process of calcaneal tuberosity; flexor retinaculum; plantar aponeurosis", "Medial side of base of proximal phalanx of hallux; medial sesamoid", "Abduction + flexion of hallux (MTP joint); supports medial arch", "Medial plantar nerve L4–S1", "Medial plantar a."), ("Flexor Digitorum Brevis (FDB)", "Medial process of calcaneal tuberosity; plantar aponeurosis", "Both sides of middle phalanges of 2nd–5th toes (tendons split to allow FDL through — analogous to FDS in hand)", "Flexion of PIP joints 2–5; supports longitudinal arch", "Medial plantar nerve L4–S1", "Medial plantar a."), ("Abductor Digiti Minimi\n(Pedis)", "Lateral process of calcaneal tuberosity; plantar aponeurosis", "Lateral side of base of proximal phalanx of 5th toe", "Abduction + flexion of little toe; supports lateral arch", "Lateral plantar nerve S1–S2", "Lateral plantar a."), ] story.append(muscle_table(sole_l1)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Layer 2</b>", H3)) sole_l2 = [ ("Quadratus Plantae\n(Flexor accessorius)", "Medial head: medial surface of calcaneus\nLateral head: plantar surface of calcaneus", "Lateral border of FDL tendon (before it divides)", "Modifies pull of FDL to flex digits in line with long axis of foot; assists toe flexion", "Lateral plantar nerve S1–S2", "Lateral plantar a."), ("Lumbricals (4)\n1st: Medial nerve\n2nd–4th: Lateral nerve", "Tendons of FDL (1st lumbrical: medial side of 1st FDL tendon; 2nd–4th: adjacent sides of FDL tendons)", "Medial side of extensor expansion (dorsal digital expansion) of 2nd–5th toes", "MTP flexion; PIP + DIP extension of 2nd–5th toes (like hand lumbricals)", "1st: Medial plantar nerve L4–S1; 2nd–4th: Lateral plantar nerve S1–S2", "Plantar metatarsal aa."), ] story.append(muscle_table(sole_l2)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Layer 3</b>", H3)) sole_l3 = [ ("Flexor Hallucis Brevis (FHB)", "Plantar surface of cuboid; lateral cuneiform; plantar calcaneocuboid ligament", "Medial head: medial side of base of proximal phalanx of hallux + medial sesamoid\nLateral head: lateral side + lateral sesamoid", "Flexion of MTP joint of hallux; weight-bearing via sesamoids", "Medial plantar nerve L5–S1", "Medial plantar a.; 1st plantar metatarsal a."), ("Adductor Hallucis\n(Oblique head)", "Bases of 2nd–4th metatarsals; fibrous sheath of fibularis longus tendon", "Lateral side of base of proximal phalanx of hallux (with transverse head); lateral sesamoid", "Adduction of hallux; maintains transverse arch; assists flexion", "Deep branch of lateral plantar nerve S1–S2", "Plantar metatarsal aa."), ("Adductor Hallucis\n(Transverse head)", "Plantar MTP joint capsules of 3rd–5th toes; deep transverse metatarsal ligament", "Lateral side of base of proximal phalanx of hallux (with oblique head)", "Adduction of hallux; maintains transverse arch", "Deep branch of lateral plantar nerve S1–S2", "Plantar metatarsal aa."), ("Flexor Digiti Minimi Brevis", "Base of 5th metatarsal; fibrous sheath of fibularis longus", "Lateral side of base of proximal phalanx of 5th toe", "Flexion of MTP joint of 5th toe", "Superficial branch of lateral plantar nerve S1–S2", "Lateral plantar a."), ] story.append(muscle_table(sole_l3)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Layer 4 – Deepest</b>", H3)) sole_l4 = [ ("Plantar Interossei (3)\n(PAD – Adduct)", "1st: medial side of 3rd metatarsal\n2nd: medial side of 4th metatarsal\n3rd: medial side of 5th metatarsal", "Medial sides of proximal phalanges of 3rd–5th toes; extensor expansion", "Adduction of 3rd–5th toes toward 2nd toe axis (PAD); MTP flexion; IP extension", "Lateral plantar nerve S1–S2", "Plantar metatarsal aa."), ("Dorsal Interossei (4)\n(DAB – Abduct)", "Bipennate: adjacent sides of metatarsals 1–5\n1st: sides of 1st & 2nd metatarsals\n2nd–4th: adjacent sides of 2nd–5th metatarsals", "1st: medial side of 2nd proximal phalanx\n2nd: lateral side of 2nd proximal phalanx\n3rd: lateral side of 3rd proximal phalanx\n4th: lateral side of 4th proximal phalanx", "Abduction of 2nd–4th toes from 2nd toe axis (DAB); MTP flexion; IP extension", "Lateral plantar nerve S1–S2", "Plantar metatarsal aa.; dorsal metatarsal aa."), ] story.append(muscle_table(sole_l4)) story.append(Spacer(1, 0.3*cm)) story.append(Paragraph("<b>Clinical Notes – Foot Muscles:</b>", H3)) for n in [ "• <b>Medial plantar nerve</b> (L4–S1): supplies medial 3½ toes + sole = \"LAFF\" muscles: Lumbricals 1st, Abductor hallucis, Flexor digitorum brevis, Flexor hallucis brevis.", "• <b>Lateral plantar nerve</b> (S1–S2): supplies lateral 1½ toes + all remaining intrinsics (analogous to ulnar nerve in hand).", "• <b>Plantar fasciitis</b>: inflammation of plantar aponeurosis at calcaneal origin; most common cause of heel pain; worst first steps in morning.", "• <b>Hallux valgus</b>: adductor hallucis overpulls → lateral deviation; sesamoids displace under 1st metatarsal head.", "• <b>Claw toes</b>: intrinsic muscle weakness (lateral plantar nerve injury) → MTP hyperextension + IP flexion.", "• <b>Plantar heel pain</b>: entrapment of medial calcaneal branch or first branch of lateral plantar nerve (Baxter's nerve).", "• <b>Analogies with hand</b>: FDB = FDS; FDL = FDP; lumbricals same function; interossei PAD/DAB (axis = 2nd toe in foot vs 3rd finger in hand).", ]: story.append(Paragraph(n, NOTE)) story.append(PageBreak()) # ============================================================================= # SECTION 11: NERVE SUPPLY SUMMARY # ============================================================================= story.append(Paragraph("11. Nerve Supply Summary – Lower Limb", H2)) story.append(Spacer(1, 0.2*cm)) nerve_data = [ [Paragraph("<b>Nerve</b>", HDR_CELL), Paragraph("<b>Root</b>", HDR_CELL), Paragraph("<b>Muscles Supplied</b>", HDR_CELL), Paragraph("<b>Injury Sign / Clinical Test</b>", HDR_CELL)], [Paragraph("Femoral Nerve", CELL), Paragraph("L2–L4", CELL), Paragraph("Iliopsoas, Sartorius, Pectineus, Quadriceps (RF, VL, VM, VI), Articularis genus", CELL), Paragraph("Loss of knee extension + hip flexion; absent knee jerk; sensory loss anteromedial thigh + medial leg (saphenous)", CELL)], [Paragraph("Obturator Nerve", CELL), Paragraph("L2–L4", CELL), Paragraph("Adductor longus, brevis, magnus (adductor part), gracilis, pectineus (accessory), obturator externus", CELL), Paragraph("Weak hip adduction; medial thigh sensory loss; Howship-Romberg sign (obturator hernia)", CELL)], [Paragraph("Superior Gluteal Nerve", CELL), Paragraph("L4–S1", CELL), Paragraph("Gluteus medius, Gluteus minimus, TFL", CELL), Paragraph("Trendelenburg sign/gait; pelvis drops on contralateral side", CELL)], [Paragraph("Inferior Gluteal Nerve", CELL), Paragraph("L5–S2", CELL), Paragraph("Gluteus maximus", CELL), Paragraph("Difficulty climbing stairs/rising from chair; loss of hip extension; gluteal sag", CELL)], [Paragraph("Nerve to Piriformis", CELL), Paragraph("S1–S2", CELL), Paragraph("Piriformis", CELL), Paragraph("Piriformis syndrome; sciatica-like buttock pain", CELL)], [Paragraph("Nerve to Obturator Internus", CELL), Paragraph("L5–S2", CELL), Paragraph("Obturator internus, Gemellus superior", CELL), Paragraph("Reduced hip lateral rotation", CELL)], [Paragraph("Nerve to Quadratus Femoris", CELL), Paragraph("L4–S1", CELL), Paragraph("Quadratus femoris, Gemellus inferior", CELL), Paragraph("Reduced hip lateral rotation", CELL)], [Paragraph("Sciatic Nerve (entire)", CELL), Paragraph("L4–S3", CELL), Paragraph("All hamstrings, adductor magnus (hamstring part), all leg + foot muscles", CELL), Paragraph("Complete paralysis below knee; absent ankle jerk; sciatic notch tenderness; positive SLR test", CELL)], [Paragraph("Tibial Nerve", CELL), Paragraph("L4–S3", CELL), Paragraph("Hamstrings (except biceps SH), popliteus, gastrocnemius, soleus, plantaris, tibialis posterior, FHL, FDL, all plantar muscles", CELL), Paragraph("Calcaneovalgus foot; loss of plantarflexion + inversion; absent ankle jerk; plantar sensory loss", CELL)], [Paragraph("Common Fibular (Peroneal) Nerve", CELL), Paragraph("L4–S2", CELL), Paragraph("Biceps femoris (short head); all anterior + lateral leg muscles", CELL), Paragraph("Foot drop; steppage gait; unable to evert; sensory loss dorsum of foot; injured at fibular neck", CELL)], [Paragraph("Deep Fibular Nerve", CELL), Paragraph("L4–S1", CELL), Paragraph("Tibialis anterior, EHL, EDL, Fibularis tertius, EDB, EHB", CELL), Paragraph("Foot drop + toe extension loss; loss of sensation 1st web space only", CELL)], [Paragraph("Superficial Fibular Nerve", CELL), Paragraph("L5–S1", CELL), Paragraph("Fibularis longus, Fibularis brevis", CELL), Paragraph("Loss of eversion; sensory loss dorsum of foot (except 1st web space)", CELL)], [Paragraph("Medial Plantar Nerve", CELL), Paragraph("L4–S1", CELL), Paragraph("Abductor hallucis, FDB, FHB, 1st lumbrical", CELL), Paragraph("Tingling medial 3½ toes; positive \"Tinel at medial malleolus\" (tarsal tunnel)", CELL)], [Paragraph("Lateral Plantar Nerve", CELL), Paragraph("S1–S2", CELL), Paragraph("Quadratus plantae, 2nd–4th lumbricals, adductor hallucis, all interossei, abductor digiti minimi, FDMB, deep FHB (lateral head)", CELL), Paragraph("Intrinsic wasting; claw toes; loss of lateral 1½ toe sensation", CELL)], [Paragraph("Posterior Femoral Cutaneous Nerve", CELL), Paragraph("S1–S3", CELL), Paragraph("No motor (cutaneous only)", CELL), Paragraph("Sensory loss posterior thigh; part of short gluteal flap sensation", CELL)], [Paragraph("Lateral Femoral Cutaneous Nerve", CELL), Paragraph("L2–L3", CELL), Paragraph("No motor (cutaneous only)", CELL), Paragraph("Meralgia paraesthetica: burning/numbness lateral thigh; compressed under inguinal ligament at ASIS", CELL)], [Paragraph("Saphenous Nerve", CELL), Paragraph("L3–L4", CELL), Paragraph("No motor (terminal branch of femoral n.)", CELL), Paragraph("Sensory loss medial leg + medial ankle + medial foot; vulnerable at adductor canal", CELL)], [Paragraph("Sural Nerve", CELL), Paragraph("S1–S2", CELL), Paragraph("No motor (branch of tibial n.)", CELL), Paragraph("Sensory loss lateral foot; used as nerve graft donor", CELL)], ] nerve_t = Table(nerve_data, colWidths=[usable_w*0.17, usable_w*0.07, usable_w*0.40, usable_w*0.36], repeatRows=1) nerve_t.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (-1, 0), DARK_GREEN), ("TEXTCOLOR", (0, 0), (-1, 0), WHITE), ("ROWBACKGROUNDS", (0, 1), (-1, -1), [ROW_ALT, WHITE]), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("VALIGN", (0, 0), (-1, -1), "TOP"), ("TOPPADDING", (0, 0), (-1, -1), 3), ("BOTTOMPADDING", (0, 0), (-1, -1), 3), ("LEFTPADDING", (0, 0), (-1, -1), 4), ("RIGHTPADDING", (0, 0), (-1, -1), 4), ])) story.append(nerve_t) story.append(PageBreak()) # ============================================================================= # SECTION 12: BLOOD SUPPLY SUMMARY # ============================================================================= story.append(Paragraph("12. Blood Supply Summary – Lower Limb", H2)) story.append(Spacer(1, 0.2*cm)) blood_data = [ [Paragraph("<b>Artery</b>", HDR_CELL), Paragraph("<b>Origin</b>", HDR_CELL), Paragraph("<b>Muscles / Regions Supplied</b>", HDR_CELL)], [Paragraph("External Iliac Artery", CELL), Paragraph("Common iliac artery", CELL), Paragraph("Gives inferior epigastric a. + deep circumflex iliac a. before entering femoral canal; major supply to lower limb")], [Paragraph("Femoral Artery", CELL), Paragraph("Continuation of external iliac (below inguinal ligament)", CELL), Paragraph("Adductor canal → adductor hiatus → popliteal a.; gives profunda femoris (deep femoral a.)")], [Paragraph("Profunda Femoris\n(Deep Femoral a.)", CELL), Paragraph("Femoral artery (lateral, 4 cm below inguinal ligament)", CELL), Paragraph("Main supply to thigh muscles:\n• Medial circumflex femoral a. → femoral head, posterior thigh\n• Lateral circumflex femoral a. → anterior thigh (ascending, descending, transverse branches)\n• Perforating arteries (1st–4th) → posterior thigh, hamstrings, adductors")], [Paragraph("Medial Circumflex Femoral a.", CELL), Paragraph("Profunda femoris", CELL), Paragraph("Femoral head and neck (retinacular branches — most of femoral head blood supply); quadratus femoris; posterior adductors; semimembranosus")], [Paragraph("Lateral Circumflex Femoral a.", CELL), Paragraph("Profunda femoris", CELL), Paragraph("Ascending: hip joint + tensor fasciae latae\nDescending: vastus lateralis + rectus femoris\nTransverse: vastus lateralis + gluteus minimus")], [Paragraph("Perforating Arteries (4)", CELL), Paragraph("Profunda femoris", CELL), Paragraph("All hamstrings; adductor magnus; short head of biceps; tensor fasciae latae. 1st perforating: gluteus maximus lower fibers")], [Paragraph("Obturator Artery", CELL), Paragraph("Internal iliac artery", CELL), Paragraph("Adductor group (longus, brevis, magnus, gracilis); obturator externus; pectineus; acetabular branch to ligamentum teres → femoral head (small contribution)")], [Paragraph("Superior Gluteal Artery", CELL), Paragraph("Internal iliac (largest branch)", CELL), Paragraph("Gluteus maximus (upper), gluteus medius, gluteus minimus, TFL; deep branch: piriformis, obturator internus")], [Paragraph("Inferior Gluteal Artery", CELL), Paragraph("Internal iliac artery", CELL), Paragraph("Gluteus maximus (lower); obturator internus; quadratus femoris; gemelli; upper hamstrings; sciatic nerve companion (arteria comitans nervi ischiadici)")], [Paragraph("Popliteal Artery", CELL), Paragraph("Continuation of femoral a. at adductor hiatus", CELL), Paragraph("Gives genicular branches → knee joint; sural arteries → gastrocnemius + soleus; bifurcates at lower border of popliteus into anterior + posterior tibial aa.")], [Paragraph("Anterior Tibial Artery", CELL), Paragraph("Popliteal artery (passes through interosseous membrane)", CELL), Paragraph("All anterior compartment muscles (tibialis anterior, EHL, EDL, fibularis tertius, EDB); continues as dorsalis pedis")], [Paragraph("Dorsalis Pedis Artery", CELL), Paragraph("Continuation of anterior tibial below ankle", CELL), Paragraph("Dorsum of foot; gives arcuate a. → dorsal metatarsal aa.; deep plantar a. → deep plantar arch")], [Paragraph("Posterior Tibial Artery", CELL), Paragraph("Popliteal artery", CELL), Paragraph("Deep posterior compartment muscles (tibialis posterior, FHL, FDL, popliteus); continues to plantar foot; gives fibular a.")], [Paragraph("Fibular (Peroneal) Artery", CELL), Paragraph("Posterior tibial artery", CELL), Paragraph("Lateral compartment (fibularis longus, brevis); deep posterior compartment; perforating branches to anterior compartment; calcaneal branches")], [Paragraph("Medial Plantar Artery", CELL), Paragraph("Posterior tibial a. (divides below medial malleolus)", CELL), Paragraph("Medial sole muscles: abductor hallucis, FDB, FHB; medial 3½ toes (digital branches)")], [Paragraph("Lateral Plantar Artery", CELL), Paragraph("Posterior tibial a. (divides below medial malleolus)", CELL), Paragraph("Lateral sole + all intrinsic foot muscles; forms deep plantar arch (with dorsalis pedis deep plantar branch) → plantar metatarsal aa.")], ] blood_t = Table(blood_data, colWidths=[usable_w*0.20, usable_w*0.22, usable_w*0.58], repeatRows=1) blood_t.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (-1, 0), DARK_GREEN), ("TEXTCOLOR", (0, 0), (-1, 0), WHITE), ("ROWBACKGROUNDS", (0, 1), (-1, -1), [ROW_ALT, WHITE]), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("VALIGN", (0, 0), (-1, -1), "TOP"), ("TOPPADDING", (0, 0), (-1, -1), 3), ("BOTTOMPADDING", (0, 0), (-1, -1), 3), ("LEFTPADDING", (0, 0), (-1, -1), 4), ("RIGHTPADDING", (0, 0), (-1, -1), 4), ])) story.append(blood_t) story.append(PageBreak()) # ============================================================================= # SECTION 13: MNEMONICS & CLINICAL PEARLS # ============================================================================= story.append(Paragraph("13. Mnemonics & Clinical Pearls", H2)) story.append(Spacer(1, 0.3*cm)) mnemonics = [ ("<b>Femoral triangle (NAVEL)</b>:", "Nerve · Artery · Vein · Empty space · Lymphatics (lateral → medial)"), ("<b>Adductor canal contents</b>:", "Femoral artery, Femoral vein, Saphenous nerve, Nerve to vastus medialis"), ("<b>Popliteal fossa roof (medial→lateral)</b>:", "Semimembranosus + Semitendinosus | Biceps femoris"), ("<b>Tarsal tunnel (Tom Dick ANd Very Nervous Harry)</b>:", "Tibialis posterior · flexor Digitorum longus · Artery posterior tibial · Nerve tibial · flexor Hallucis longus"), ("<b>Pes anserinus (SGT)</b>:", "Sartorius · Gracilis · Semitendinosus — all insert on medial tibia (site of pes anserinus bursitis)"), ("<b>Common fibular nerve risk</b>:", "Winds around neck of fibula → most commonly injured nerve in lower limb; causes foot drop"), ("<b>Hip abduction stages</b>:", "0–15°: Gluteus medius initiates; full: Gluteus medius + minimus; upward tilt: TFL assists"), ("<b>Knee extension arc</b>:", "0–15°: Vastus medialis oblique (VMO) locks knee; 15–90°: all quadriceps"), ("<b>Trendelenburg test</b>:", "Positive = pelvis drops to OPPOSITE side of stance leg → superior gluteal nerve / hip abductor weakness"), ("<b>SITS of hip (lateral rotators)</b>:", "Piriformis · Obturator internus · Gemelli · Quadratus femoris (deep external rotators)"), ("<b>Foot intrinsic nerve analogy</b>:", "Medial plantar = median nerve (supplies LAFF: Lumbrical 1, Abductor hallucis, FDB, FHB); Lateral plantar = ulnar nerve (supplies rest)"), ("<b>Interossei mnemonic (foot)</b>:", "PAD: Plantar ADduct (axis = 2nd toe); DAB: Dorsal ABduct"), ("<b>L4–S1 root value mnemonics</b>:", "L4: knee jerk, tibialis anterior (heel walk)\nL5: EHL, gluteus medius (toe walk)\nS1: plantarflexors, ankle jerk, evertors"), ("<b>Femoral head blood supply</b>:", "Main: Medial circumflex femoral a. (retinacular branches); Minor: lateral circumflex femoral, obturator (ligamentum teres). AVN risk: subcapital fractures"), ("<b>Knee locking / unlocking</b>:", "Knee locks in full extension by lateral rotation of femur on tibia (screw-home mechanism); Popliteus unlocks it by medially rotating femur"), ] for title, content in mnemonics: row_data = [[Paragraph(title, CELL), Paragraph(content, CELL)]] mt = Table(row_data, colWidths=[usable_w*0.32, usable_w*0.68]) mt.setStyle(TableStyle([ ("BACKGROUND", (0, 0), (0, 0), LIGHT_GREEN), ("BACKGROUND", (1, 0), (1, 0), WHITE), ("GRID", (0, 0), (-1, -1), 0.4, GREY_BORDER), ("TOPPADDING", (0, 0), (-1, -1), 4), ("BOTTOMPADDING", (0, 0), (-1, -1), 4), ("LEFTPADDING", (0, 0), (-1, -1), 5), ("VALIGN", (0, 0), (-1, -1), "TOP"), ])) story.append(mt) story.append(Spacer(1, 1)) story.append(Spacer(1, 0.5*cm)) story.append(HRFlowable(width="100%", thickness=1, color=MID_GREEN)) story.append(Spacer(1, 0.2*cm)) story.append(Paragraph( "Reference: BD Chaurasia's Human Anatomy Vol. 2 (Lower Limb) | THIEME Atlas of Anatomy: General Anatomy & Musculoskeletal System | Gray's Anatomy for Students<br/>" "Compiled for Medical/Paramedical Education. Verify clinical decisions with current guidelines and textbooks.", footer_sty)) doc.build(story) print("PDF generated:", out_path) PYEOF
ls -lh /tmp/workspace/lower-limb-muscles/
Lower Limb Muscles BDC Vol2
PDF Document · PDF
| Section | Muscles Covered |
|---|---|
| 1. Gluteal & Hip | Gluteus max/med/min, TFL, Piriformis, Obturator int/ext, Gemelli, Quadratus femoris, Psoas major/minor, Iliacus |
| 2. Anterior Thigh | Sartorius, Rectus femoris, Vastus lateralis/medialis/intermedius, Articularis genus |
| 3. Medial Thigh | Pectineus, Adductor longus/brevis/magnus (both parts), Gracilis, Obturator externus |
| 4. Posterior Thigh | Biceps femoris (both heads), Semimembranosus, Semitendinosus, Popliteus |
| 5. Anterior Leg | Tibialis anterior, EHL, EDL, Fibularis tertius |
| 6. Lateral Leg | Fibularis longus, Fibularis brevis |
| 7. Posterior Leg (Superficial) | Gastrocnemius (2 heads), Soleus, Plantaris |
| 8. Posterior Leg (Deep) | Popliteus, Tibialis posterior, FHL, FDL |
| 9. Dorsum of Foot | EDB, EHB |
| 10. Sole (4 layers) | Abductor hallucis, FDB, Abductor digiti minimi, Quadratus plantae, 4 Lumbricals, FHB, Adductor hallucis, FDMB, 3 Plantar + 4 Dorsal Interossei |
| 11. Nerve Summary | Femoral, Obturator, Superior/Inferior Gluteal, Sciatic, Tibial, Common Fibular, Deep/Superficial Fibular, Medial/Lateral Plantar, Sural, Saphenous |
| 12. Blood Supply | External iliac → Femoral → Profunda femoris → Popliteal → Anterior/Posterior Tibial → Fibular → Plantar arteries |
| 13. Mnemonics | NAVEL, Tarsal Tunnel (Tom Dick ANd Very Nervous Harry), Pes Anserinus (SGT), PAD/DAB, LAFF, L4/L5/S1 roots, and more |