attachment
attachment
attachment
attachment

Make this into table form

Here are the two arches converted into table form:

60. Medial Longitudinal Arch

CategorySub-categoryDetails
Key FeaturesFormed byMore bones
MobilityHigher and more mobile
ResilienceMore resilient
RoleInvolved in initiation of next step while walking
Bones Forming the ArchCalcaneum, Talus, Navicular, Three cuneiforms, Medial three metatarsals
PillarsAnterior pillarHeads of three metatarsal bones
Posterior pillarMedial half of calcaneum
SummitTalus - Key stone of medial longitudinal arch
JointsTalocalcaneonavicular joint, Subtalar joint
Factors Maintaining the ArchBonesSustentaculum tali - supports the head of talus
LigamentsSpring ligament, Interosseous ligaments, Interosseous talocalcanean ligament
Muscles/tendons/aponeurosis-
Tie beamsPrevent separation of bones
SlingsAct from above
Tie BeamsTibialis anterior tendon, Flexor hallucis longus, Tibialis posterior tendon
SlingsTibialis posterior tendonBulkiest muscle to support the arch - Stretches the arch like a string of a bow
Supports calcaneum while passing underneath sustentaculum tali
Supports talus as it passes along the posterior groove
Flexor hallucis longus-
Plantar aponeurosis-
Abductor hallucis-
Flexor hallucis brevis-
FunctionsDistribution of body weight to the weight-bearing points of sole
Acts like shock absorbers during jumping
Provides a propulsive force during locomotion
Concavity of the arches protects nerves and vessels of the sole
Applied AnatomyFlat foot/pes planusCommonest foot problem - Due to collapse of medial longitudinal arch
Clumsy shuffling gaitDue to loss of spring action in foot
Compression of nerves and vessels of footMetatarsalgia
Foot more liable to traumaDue to loss of shock-absorbing nature
Pes cavusExaggeration of longitudinal arch

61. Lateral Longitudinal Arch

CategorySub-categoryDetails
Key FeaturesFormed byLess bones
MobilityLower and less mobile
RigidityMore rigid
RoleInvolved in receiving and supporting body weight
Bones Forming the ArchCalcaneum, Cuboid, 4th and 5th metatarsal bones
PillarsAnterior pillarHeads of 4th and 5th metatarsal bones
Posterior pillarLateral tubercle of calcaneum
SummitArticular facets of the superior surface of calcaneum - At the level of subtalar joint
JointsCalcaneocuboid joint
Factors Maintaining the ArchBonesProper shaping of calcaneum and cuboid - Cuboid is keystone of lateral arch
LigamentsShort plantar ligament, Long plantar ligament
Muscles/tendons/aponeurosis-
Tie beamsPrevent separation of bones
SlingsAct from above
Tie BeamsPlantar aponeurosisLateral part
Intrinsic muscles of little toe-
SlingsTendon of peroneus brevis-
Tendon of peroneus tertius-
NoteThese are weak slings from above
Peroneus longus (Pulley)Supports cuboid from above as it passes through groove on inferior surface of cuboid
FunctionsDistribution of body weight to weight-bearing area of foot
Acts like shock absorber while jumping
Lateral arch acts like static organ of support and weight transmission
Concavity of the arch protects vessels and nerves of the foot
Applied AnatomyPes cavusExaggeration of longitudinal arches of foot

Create an Excel file with these arch comparisons

Reading File
Running Command

ls -la /tmp/workspace/ 2>/dev/null || mkdir -p /tmp/workspace && echo "created"

Running Command

mkdir -p /tmp/workspace/arch-comparison && python3 << 'EOF' import openpyxl from openpyxl.styles import ( Font, PatternFill, Alignment, Border, Side, GradientFill ) from openpyxl.utils import get_column_letter wb = openpyxl.Workbook() # ── Sheet 1: Side-by-side comparison ────────────────────────────────────────── ws1 = wb.active ws1.title = "Arch Comparison" # Color palette HEADER_BG = "4472C4" # dark blue – main header MED_BG = "70AD47" # green – medial arch header LAT_BG = "ED7D31" # orange – lateral arch header CAT_BG = "D9E1F2" # light blue – category rows WHITE = "FFFFFF" ALT_ROW = "F2F2F2" def hfont(bold=True, color="FFFFFF", size=11): return Font(name="Arial", bold=bold, color=color, size=size) def cell_font(bold=False, color="000000", size=10): return Font(name="Arial", bold=bold, color=color, size=size) def fill(hex_color): return PatternFill("solid", fgColor=hex_color) def border(): thin = Side(style="thin", color="BFBFBF") return Border(left=thin, right=thin, top=thin, bottom=thin) def set_cell(ws, row, col, value, bold=False, bg=None, align="left", font_color="000000", size=10, wrap=True): c = ws.cell(row=row, column=col, value=value) c.font = Font(name="Arial", bold=bold, color=font_color, size=size) if bg: c.fill = fill(bg) c.alignment = Alignment(horizontal=align, vertical="center", wrap_text=wrap) c.border = border() return c # ── Title row ────────────────────────────────────────────────────────────────── ws1.merge_cells("A1:D1") t = ws1.cell(row=1, column=1, value="Longitudinal Arches of the Foot – Comparison") t.font = Font(name="Arial", bold=True, color=WHITE, size=14) t.fill = fill(HEADER_BG) t.alignment = Alignment(horizontal="center", vertical="center") t.border = border() ws1.row_dimensions[1].height = 30 # ── Column headers ───────────────────────────────────────────────────────────── headers = ["Category", "Sub-category", "Medial Longitudinal Arch", "Lateral Longitudinal Arch"] for ci, h in enumerate(headers, 1): bg = MED_BG if ci == 3 else (LAT_BG if ci == 4 else HEADER_BG) set_cell(ws1, 2, ci, h, bold=True, bg=bg, align="center", font_color=WHITE, size=11) ws1.row_dimensions[2].height = 22 # ── Data rows: (category, subcategory, medial, lateral) ─────────────────────── rows = [ # Key Features ("Key Features", "Formed by", "More bones", "Less bones"), ("Key Features", "Mobility", "Higher and more mobile", "Lower and less mobile"), ("Key Features", "Rigidity", "More resilient", "More rigid"), ("Key Features", "Role", "Involved in initiation of next step while walking", "Involved in receiving and supporting body weight"), # Bones ("Bones Forming the Arch", "—", "Calcaneum, Talus, Navicular, Three cuneiforms, Medial three metatarsals", "Calcaneum, Cuboid, 4th and 5th metatarsal bones"), # Pillars ("Pillars", "Anterior pillar", "Heads of three metatarsal bones", "Heads of 4th and 5th metatarsal bones"), ("Pillars", "Posterior pillar", "Medial half of calcaneum", "Lateral tubercle of calcaneum"), # Summit ("Summit", "—", "Talus – Keystone of medial longitudinal arch", "Articular facets of the superior surface of calcaneum – at the level of subtalar joint"), # Joints ("Joints", "—", "Talocalcaneonavicular joint; Subtalar joint", "Calcaneocuboid joint"), # Factors – Bones ("Factors Maintaining the Arch", "Bones", "Sustentaculum tali – supports the head of talus", "Proper shaping of calcaneum and cuboid – Cuboid is keystone of lateral arch"), # Factors – Ligaments ("Factors Maintaining the Arch", "Ligaments", "Spring ligament; Interosseous ligaments; Interosseous talocalcanean ligament", "Short plantar ligament; Long plantar ligament"), # Factors – Tie beams ("Factors Maintaining the Arch", "Tie beams", "Tibialis anterior tendon; Flexor hallucis longus; Tibialis posterior tendon", "Plantar aponeurosis (lateral part); Intrinsic muscles of little toe"), # Factors – Slings ("Factors Maintaining the Arch", "Slings (act from above)", "Tibialis posterior tendon – bulkiest muscle; stretches the arch like a string of a bow; " "supports calcaneum while passing underneath sustentaculum tali; supports talus along the posterior groove\n" "Flexor hallucis longus; Plantar aponeurosis; Abductor hallucis; Flexor hallucis brevis", "Tendon of peroneus brevis; Tendon of peroneus tertius; Peroneus longus (Pulley) – supports cuboid from above " "as it passes through groove on inferior surface of cuboid\n" "Note: these are weak slings from above"), # Functions ("Functions", "—", "1. Distribution of body weight to weight-bearing points of sole\n" "2. Acts like shock absorbers during jumping\n" "3. Provides a propulsive force during locomotion\n" "4. Concavity protects nerves and vessels of the sole", "1. Distribution of body weight to weight-bearing area of foot\n" "2. Acts like shock absorber while jumping\n" "3. Lateral arch = static organ of support and weight transmission\n" "4. Concavity protects vessels and nerves of the foot"), # Applied Anatomy ("Applied Anatomy", "Flat foot / Pes planus", "Commonest foot problem – due to collapse of medial longitudinal arch", "—"), ("Applied Anatomy", "Clumsy shuffling gait", "Due to loss of spring action in foot", "—"), ("Applied Anatomy", "Metatarsalgia", "Compression of nerves and vessels of foot", "—"), ("Applied Anatomy", "Trauma susceptibility", "Foot more liable to trauma – due to loss of shock-absorbing nature", "—"), ("Applied Anatomy", "Pes cavus", "Exaggeration of longitudinal arch", "Exaggeration of longitudinal arches of foot"), ] # Write data rows, merging identical category cells current_cat = None cat_start = 3 # first data row def apply_cat_merge(ws, cat, start, end): if end > start: ws.merge_cells(start_row=start, start_column=1, end_row=end, end_column=1) c = ws.cell(row=start, column=1) c.font = Font(name="Arial", bold=True, color="000000", size=10) c.fill = fill(CAT_BG) c.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True) c.border = border() row_idx = 3 cat_groups = {} # cat -> (first_row, last_row) for (cat, subcat, med, lat) in rows: bg = ALT_ROW if (row_idx % 2 == 0) else WHITE # col 1 (category) – written later after grouping ws1.cell(row=row_idx, column=1, value=cat) # placeholder set_cell(ws1, row_idx, 2, subcat, bg=bg) set_cell(ws1, row_idx, 3, med, bg=bg) set_cell(ws1, row_idx, 4, lat, bg=bg) ws1.row_dimensions[row_idx].height = 60 if "\n" in (med+lat) else 30 if cat not in cat_groups: cat_groups[cat] = [row_idx, row_idx] else: cat_groups[cat][1] = row_idx row_idx += 1 # Now merge category column and style for cat, (first, last) in cat_groups.items(): if last > first: ws1.merge_cells(start_row=first, start_column=1, end_row=last, end_column=1) c = ws1.cell(row=first, column=1, value=cat) c.font = Font(name="Arial", bold=True, color="000000", size=10) c.fill = fill(CAT_BG) c.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True, text_rotation=0) c.border = border() # re-apply border to merged cells for r in range(first, last+1): ws1.cell(row=r, column=1).border = border() # Column widths ws1.column_dimensions["A"].width = 22 ws1.column_dimensions["B"].width = 26 ws1.column_dimensions["C"].width = 46 ws1.column_dimensions["D"].width = 46 # Freeze panes ws1.freeze_panes = "A3" # ── Sheet 2: Medial Longitudinal Arch (detail) ──────────────────────────────── ws2 = wb.create_sheet("Medial Longitudinal Arch") def make_detail_sheet(ws, title, color, data): ws.merge_cells("A1:C1") t = ws.cell(row=1, column=1, value=title) t.font = Font(name="Arial", bold=True, color=WHITE, size=13) t.fill = fill(color) t.alignment = Alignment(horizontal="center", vertical="center") t.border = border() ws.row_dimensions[1].height = 28 col_headers = ["Category", "Sub-category", "Details"] for ci, h in enumerate(col_headers, 1): set_cell(ws, 2, ci, h, bold=True, bg=color, align="center", font_color=WHITE, size=11) ws.row_dimensions[2].height = 20 row_idx = 3 cat_groups = {} for (cat, subcat, detail) in data: bg = ALT_ROW if (row_idx % 2 == 0) else WHITE ws.cell(row=row_idx, column=1, value=cat) set_cell(ws, row_idx, 2, subcat, bg=bg) set_cell(ws, row_idx, 3, detail, bg=bg) ws.row_dimensions[row_idx].height = 55 if "\n" in detail else 28 if cat not in cat_groups: cat_groups[cat] = [row_idx, row_idx] else: cat_groups[cat][1] = row_idx row_idx += 1 for cat, (first, last) in cat_groups.items(): if last > first: ws.merge_cells(start_row=first, start_column=1, end_row=last, end_column=1) c = ws.cell(row=first, column=1, value=cat) c.font = Font(name="Arial", bold=True, size=10) c.fill = fill(CAT_BG) c.alignment = Alignment(horizontal="center", vertical="center", wrap_text=True) for r in range(first, last+1): ws.cell(row=r, column=1).border = border() ws.column_dimensions["A"].width = 24 ws.column_dimensions["B"].width = 28 ws.column_dimensions["C"].width = 60 ws.freeze_panes = "A3" medial_data = [ ("Key Features", "Formed by", "More bones"), ("Key Features", "Mobility", "Higher and more mobile"), ("Key Features", "Resilience", "More resilient"), ("Key Features", "Role", "Involved in initiation of next step while walking"), ("Bones Forming the Arch", "—", "Calcaneum, Talus, Navicular, Three cuneiforms, Medial three metatarsals"), ("Pillars", "Anterior pillar", "Heads of three metatarsal bones"), ("Pillars", "Posterior pillar", "Medial half of calcaneum"), ("Summit", "—", "Talus – Keystone of medial longitudinal arch"), ("Joints", "—", "Talocalcaneonavicular joint; Subtalar joint"), ("Factors Maintaining the Arch", "Bones", "Sustentaculum tali – supports the head of talus"), ("Factors Maintaining the Arch", "Ligaments", "Spring ligament; Interosseous ligaments; Interosseous talocalcanean ligament"), ("Factors Maintaining the Arch", "Tie beams", "Tibialis anterior tendon; Flexor hallucis longus; Tibialis posterior tendon"), ("Factors Maintaining the Arch", "Slings", "Tibialis posterior tendon – bulkiest muscle; stretches arch like a string of a bow;\n" "Supports calcaneum while passing underneath sustentaculum tali;\n" "Supports talus as it passes along the posterior groove\n" "Flexor hallucis longus; Plantar aponeurosis; Abductor hallucis; Flexor hallucis brevis"), ("Functions", "—", "1. Distribution of body weight to weight-bearing points of sole\n" "2. Acts like shock absorbers during jumping\n" "3. Provides a propulsive force during locomotion\n" "4. Concavity of the arches protects nerves and vessels of the sole"), ("Applied Anatomy", "Flat foot / Pes planus", "Commonest foot problem – due to collapse of medial longitudinal arch"), ("Applied Anatomy", "Clumsy shuffling gait", "Due to loss of spring action in foot"), ("Applied Anatomy", "Metatarsalgia", "Compression of nerves and vessels of foot"), ("Applied Anatomy", "Trauma susceptibility", "Foot more liable to trauma due to loss of shock-absorbing nature"), ("Applied Anatomy", "Pes cavus", "Exaggeration of longitudinal arch"), ] lateral_data = [ ("Key Features", "Formed by", "Less bones"), ("Key Features", "Mobility", "Lower and less mobile"), ("Key Features", "Rigidity", "More rigid"), ("Key Features", "Role", "Involved in receiving and supporting body weight"), ("Bones Forming the Arch", "—", "Calcaneum, Cuboid, 4th and 5th metatarsal bones"), ("Pillars", "Anterior pillar", "Heads of 4th and 5th metatarsal bones"), ("Pillars", "Posterior pillar", "Lateral tubercle of calcaneum"), ("Summit", "—", "Articular facets of the superior surface of calcaneum – at the level of subtalar joint"), ("Joints", "—", "Calcaneocuboid joint"), ("Factors Maintaining the Arch", "Bones", "Proper shaping of calcaneum and cuboid; Cuboid = keystone of lateral arch"), ("Factors Maintaining the Arch", "Ligaments", "Short plantar ligament; Long plantar ligament"), ("Factors Maintaining the Arch", "Tie beams", "Plantar aponeurosis (lateral part); Intrinsic muscles of little toe"), ("Factors Maintaining the Arch", "Slings", "Tendon of peroneus brevis\nTendon of peroneus tertius\n" "Peroneus longus (Pulley) – supports cuboid from above as it passes through groove on inferior surface of cuboid\n" "Note: these are weak slings from above"), ("Functions", "—", "1. Distribution of body weight to weight-bearing area of foot\n" "2. Acts like shock absorber while jumping\n" "3. Lateral arch acts as static organ of support and weight transmission\n" "4. Concavity of the arch protects vessels and nerves of the foot"), ("Applied Anatomy", "Pes cavus", "Exaggeration of longitudinal arches of foot"), ] make_detail_sheet(ws2, "Medial Longitudinal Arch", "70AD47", medial_data) ws3 = wb.create_sheet("Lateral Longitudinal Arch") make_detail_sheet(ws3, "Lateral Longitudinal Arch", "ED7D31", lateral_data) out = "/tmp/workspace/arch-comparison/Longitudinal_Arches_Comparison.xlsx" wb.save(out) print("Saved:", out) EOF

Your Excel file is ready with 3 sheets:
  1. Arch Comparison - Side-by-side table comparing Medial vs Lateral arch across all categories (Key Features, Bones, Pillars, Summit, Joints, Factors Maintaining the Arch, Functions, Applied Anatomy)
  2. Medial Longitudinal Arch - Full detail sheet for the medial arch
  3. Lateral Longitudinal Arch - Full detail sheet for the lateral arch
Color coding: green headers for Medial, orange headers for Lateral, blue for the main comparison header, and light blue for category rows.

Longitudinal Arches Comparison

Spreadsheet · XLSX

Create a study guide PDF about foot arches for quick review

Reading File
Running Command

python3 << 'PYEOF' from reportlab.lib.pagesizes import A4 from reportlab.lib import colors from reportlab.lib.units import mm, cm from reportlab.lib.styles import getSampleStyleSheet, ParagraphStyle from reportlab.platypus import ( SimpleDocTemplate, Paragraph, Spacer, Table, TableStyle, HRFlowable, KeepTogether, PageBreak ) from reportlab.lib.enums import TA_CENTER, TA_LEFT, TA_JUSTIFY from reportlab.platypus import FrameBreak from reportlab.pdfgen import canvas from reportlab.lib.colors import HexColor # ── Output path ──────────────────────────────────────────────────────────────── import os os.makedirs("/tmp/workspace/arch-comparison", exist_ok=True) OUT = "/tmp/workspace/arch-comparison/Foot_Arches_Study_Guide.pdf" # ── Colour palette ───────────────────────────────────────────────────────────── C_DARK_BLUE = HexColor("#1F3864") C_MED_BLUE = HexColor("#2E75B6") C_LIGHT_BLUE = HexColor("#D9E1F2") C_GREEN = HexColor("#375623") C_GREEN_MED = HexColor("#70AD47") C_GREEN_LIGHT = HexColor("#E2EFDA") C_ORANGE = HexColor("#843C0C") C_ORANGE_MED = HexColor("#ED7D31") C_ORANGE_LIGHT= HexColor("#FCE4D6") C_YELLOW = HexColor("#FFF2CC") C_YELLOW_D = HexColor("#D6A800") C_RED_LIGHT = HexColor("#FFE2E2") C_RED = HexColor("#C00000") C_GRAY_LIGHT = HexColor("#F2F2F2") C_GRAY = HexColor("#BFBFBF") C_WHITE = colors.white C_BLACK = colors.black C_PURPLE = HexColor("#7030A0") C_PURPLE_LIGHT= HexColor("#EBD5F5") W, H = A4 # 595.27 x 841.89 # ── Styles ───────────────────────────────────────────────────────────────────── base = getSampleStyleSheet() def PS(name, parent="Normal", **kw): return ParagraphStyle(name, parent=base[parent], **kw) sTitle = PS("sTitle", fontName="Helvetica-Bold", fontSize=22, textColor=C_WHITE, alignment=TA_CENTER, spaceAfter=4) sSubtitle = PS("sSubtitle", fontName="Helvetica", fontSize=11, textColor=C_LIGHT_BLUE, alignment=TA_CENTER, spaceAfter=6) sH1 = PS("sH1", fontName="Helvetica-Bold", fontSize=14, textColor=C_WHITE, alignment=TA_CENTER, spaceAfter=2, spaceBefore=6) sH2 = PS("sH2", fontName="Helvetica-Bold", fontSize=12, textColor=C_DARK_BLUE, spaceAfter=4, spaceBefore=8) sH2g = PS("sH2g", fontName="Helvetica-Bold", fontSize=12, textColor=C_GREEN, spaceAfter=4, spaceBefore=8) sH2o = PS("sH2o", fontName="Helvetica-Bold", fontSize=12, textColor=C_ORANGE, spaceAfter=4, spaceBefore=8) sBod = PS("sBod", fontName="Helvetica", fontSize=9, textColor=C_BLACK, spaceAfter=2, leading=13) sBodB = PS("sBodB", fontName="Helvetica-Bold", fontSize=9, textColor=C_BLACK, spaceAfter=2, leading=13) sBul = PS("sBul", fontName="Helvetica", fontSize=9, textColor=C_BLACK, leftIndent=12, bulletIndent=4, spaceAfter=2, leading=13) sNote = PS("sNote", fontName="Helvetica-Oblique", fontSize=8.5, textColor=C_MED_BLUE, spaceAfter=3, leading=12) sMnemo= PS("sMnemo",fontName="Helvetica-Bold", fontSize=9, textColor=C_PURPLE, leftIndent=8, spaceAfter=3, leading=13) sKey = PS("sKey", fontName="Helvetica-Bold", fontSize=8.5, textColor=C_BLACK, spaceAfter=1, leading=12) def bullet(text, style=sBul): return Paragraph(f"• {text}", style) def bold(t): return f"<b>{t}</b>" def green(t): return f'<font color="#375623">{t}</font>' def orange(t): return f'<font color="#843C0C">{t}</font>' # ── Page canvas callback (header/footer) ────────────────────────────────────── def on_page(canv, doc): canv.saveState() # header bar canv.setFillColor(C_DARK_BLUE) canv.rect(0, H - 22*mm, W, 22*mm, fill=1, stroke=0) canv.setFont("Helvetica-Bold", 13) canv.setFillColor(C_WHITE) canv.drawCentredString(W/2, H - 13*mm, "FOOT ARCHES – Quick Study Guide") # footer canv.setFillColor(C_DARK_BLUE) canv.rect(0, 0, W, 10*mm, fill=1, stroke=0) canv.setFont("Helvetica", 8) canv.setFillColor(C_WHITE) canv.drawString(15*mm, 3.5*mm, "Mind Maps in Anatomy – Foot Arches") canv.drawRightString(W - 15*mm, 3.5*mm, f"Page {doc.page}") canv.restoreState() def on_first_page(canv, doc): on_page(canv, doc) # ── Document ─────────────────────────────────────────────────────────────────── doc = SimpleDocTemplate( OUT, pagesize=A4, leftMargin=18*mm, rightMargin=18*mm, topMargin=26*mm, bottomMargin=16*mm ) story = [] # ════════════════════════════════════════════════════════════════════════════════ # COVER BANNER # ════════════════════════════════════════════════════════════════════════════════ cover_data = [[Paragraph("FOOT ARCHES", PS("cov", fontName="Helvetica-Bold", fontSize=28, textColor=C_WHITE, alignment=TA_CENTER))], [Paragraph("Medial &amp; Lateral Longitudinal Arches", sSubtitle)], [Paragraph("Anatomy Quick Review Card", PS("cov2", fontName="Helvetica-Oblique", fontSize=11, textColor=C_LIGHT_BLUE, alignment=TA_CENTER))]] cover_tbl = Table(cover_data, colWidths=[W - 36*mm]) cover_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), C_DARK_BLUE), ("TOPPADDING", (0,0), (-1,-1), 10), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("ROUNDEDCORNERS", [6]), ])) story.append(cover_tbl) story.append(Spacer(1, 6*mm)) # ════════════════════════════════════════════════════════════════════════════════ # SECTION 0: OVERVIEW BOX # ════════════════════════════════════════════════════════════════════════════════ overview = [ [Paragraph("OVERVIEW – Types of Foot Arches", PS("ov", fontName="Helvetica-Bold", fontSize=11, textColor=C_WHITE, alignment=TA_CENTER))], [Paragraph( "The foot has <b>three arches</b>: <b>Medial Longitudinal</b>, " "<b>Lateral Longitudinal</b>, and <b>Transverse</b>. " "Together they distribute body weight, absorb shock, and provide propulsion during gait. " "This guide focuses on the two longitudinal arches.", PS("ovb", fontName="Helvetica", fontSize=9, textColor=C_BLACK, leading=13, alignment=TA_JUSTIFY))] ] ov_tbl = Table(overview, colWidths=[W - 36*mm]) ov_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), C_MED_BLUE), ("BACKGROUND", (0,1), (0,1), C_LIGHT_BLUE), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10), ("BOX", (0,0), (-1,-1), 1, C_MED_BLUE), ])) story.append(ov_tbl) story.append(Spacer(1, 6*mm)) # ════════════════════════════════════════════════════════════════════════════════ # SECTION 1: SIDE-BY-SIDE KEY FEATURES # ════════════════════════════════════════════════════════════════════════════════ story.append(Paragraph("1. KEY FEATURES AT A GLANCE", sH2)) story.append(HRFlowable(width="100%", thickness=1.5, color=C_MED_BLUE, spaceAfter=4)) feat_hdr = [ Paragraph("Feature", PS("fh", fontName="Helvetica-Bold", fontSize=9, textColor=C_WHITE, alignment=TA_CENTER)), Paragraph("Medial Longitudinal Arch", PS("fh2", fontName="Helvetica-Bold", fontSize=9, textColor=C_WHITE, alignment=TA_CENTER)), Paragraph("Lateral Longitudinal Arch", PS("fh3", fontName="Helvetica-Bold", fontSize=9, textColor=C_WHITE, alignment=TA_CENTER)), ] def p(t, c=C_BLACK, bold=False, align=TA_LEFT): fn = "Helvetica-Bold" if bold else "Helvetica" return Paragraph(t, PS("_", fontName=fn, fontSize=9, textColor=c, leading=13, alignment=align)) feat_rows = [ feat_hdr, [p("Bones"), p("More bones (5 bones)"), p("Less bones (3 bones)")], [p("Mobility"), p("Higher & more mobile"), p("Lower & less mobile")], [p("Rigidity"), p("More resilient"), p("More rigid")], [p("Role"), p("Initiates next step during walking"), p("Receives & supports body weight")], [p("Height"), p("Higher arch"), p("Lower arch")], [p("Keystone"), p("Talus"), p("Cuboid")], [p("Posterior pillar"), p("Medial half of calcaneum"), p("Lateral tubercle of calcaneum")], [p("Anterior pillar"), p("Heads of medial 3 metatarsals"), p("Heads of 4th & 5th metatarsals")], ] CW = (W - 36*mm) / 3 feat_tbl = Table(feat_rows, colWidths=[CW, CW, CW]) feat_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_DARK_BLUE), ("BACKGROUND", (1,0), (1,0), C_GREEN_MED), ("BACKGROUND", (2,0), (2,0), C_ORANGE_MED), ("BACKGROUND", (0,1), (0,-1), C_GRAY_LIGHT), ("BACKGROUND", (1,1), (1,-1), C_GREEN_LIGHT), ("BACKGROUND", (2,1), (2,-1), C_ORANGE_LIGHT), ("ROWBACKGROUNDS",(0,2), (-1,-1), [C_WHITE, C_GRAY_LIGHT]), ("GRID", (0,0), (-1,-1), 0.5, C_GRAY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("RIGHTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"), ])) story.append(feat_tbl) story.append(Spacer(1, 6*mm)) # ════════════════════════════════════════════════════════════════════════════════ # SECTION 2: BONES & JOINTS # ════════════════════════════════════════════════════════════════════════════════ # Two-column layout using a 2-col Table def arch_box(title, bg_title, bg_body, rows_content): rows = [[Paragraph(title, PS("bt", fontName="Helvetica-Bold", fontSize=10, textColor=C_WHITE, alignment=TA_CENTER))]] for item in rows_content: rows.append([Paragraph(item, sBod)]) t = Table(rows, colWidths=[(W-36*mm)/2 - 4*mm]) t.setStyle(TableStyle([ ("BACKGROUND", (0,0), (0,0), bg_title), ("BACKGROUND", (0,1), (0,-1), bg_body), ("BOX", (0,0), (-1,-1), 1, bg_title), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8), ])) return t story.append(Paragraph("2. BONES & JOINTS", sH2)) story.append(HRFlowable(width="100%", thickness=1.5, color=C_MED_BLUE, spaceAfter=4)) med_bones_rows = [ "Calcaneum (posterior pillar)", "Talus (summit / keystone)", "Navicular", "3 Cuneiforms (medial, intermediate, lateral)", "Heads of medial 3 metatarsals (anterior pillar)", "Joints: Talocalcaneonavicular joint, Subtalar joint", ] lat_bones_rows = [ "Calcaneum (posterior pillar)", "Cuboid (keystone)", "Heads of 4th & 5th metatarsals (anterior pillar)", "Joint: Calcaneocuboid joint", ] bones_tbl = Table( [[arch_box("Medial Arch – Bones & Joints", C_GREEN_MED, C_GREEN_LIGHT, med_bones_rows), arch_box("Lateral Arch – Bones & Joints", C_ORANGE_MED, C_ORANGE_LIGHT, lat_bones_rows)]], colWidths=[(W-36*mm)/2 + 2*mm, (W-36*mm)/2 - 2*mm], hAlign="LEFT" ) bones_tbl.setStyle(TableStyle([ ("VALIGN", (0,0), (-1,-1), "TOP"), ("LEFTPADDING", (0,0), (-1,-1), 0), ("RIGHTPADDING", (0,0), (-1,-1), 4), ])) story.append(bones_tbl) story.append(Spacer(1, 6*mm)) # ════════════════════════════════════════════════════════════════════════════════ # SECTION 3: FACTORS MAINTAINING THE ARCH # ════════════════════════════════════════════════════════════════════════════════ story.append(Paragraph("3. FACTORS MAINTAINING THE ARCHES", sH2)) story.append(HRFlowable(width="100%", thickness=1.5, color=C_MED_BLUE, spaceAfter=4)) factors_hdr = [ p("Factor", bold=True), p("Medial Arch", bold=True), p("Lateral Arch", bold=True), ] factors_rows = [ factors_hdr, [p("Bones", bold=True), p("Sustentaculum tali supports head of talus"), p("Shape of calcaneum & cuboid (cuboid = keystone)")], [p("Ligaments", bold=True), p("• Spring ligament\n• Interosseous ligaments\n• Interosseous talocalcanean ligament"), p("• Short plantar ligament\n• Long plantar ligament")], [p("Tie Beams\n(prevent bone\nseparation)", bold=True), p("• Tibialis anterior tendon\n• Flexor hallucis longus\n• Tibialis posterior tendon"), p("• Plantar aponeurosis (lateral)\n• Intrinsic muscles of little toe")], [p("Slings\n(act from above)", bold=True), p("Tibialis posterior tendon (bulkiest – like a string of a bow)\nFlexor hallucis longus\nPlantar aponeurosis\nAbductor hallucis\nFlexor hallucis brevis"), p("Peroneus brevis tendon\nPeroneus tertius tendon\nPeroneus longus (pulley) – runs in groove under cuboid\n(weak slings from above)")], [p("Muscles /\nAponeurosis", bold=True), p("Plantar aponeurosis, intrinsic foot muscles"), p("Plantar aponeurosis (lateral part)")], ] CW2 = (W-36*mm) / 3 fac_tbl = Table(factors_rows, colWidths=[CW2*0.8, CW2*1.1, CW2*1.1]) fac_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_DARK_BLUE), ("TEXTCOLOR", (0,0), (-1,0), C_WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("BACKGROUND", (0,1), (0,-1), C_LIGHT_BLUE), ("BACKGROUND", (1,1), (1,-1), C_GREEN_LIGHT), ("BACKGROUND", (2,1), (2,-1), C_ORANGE_LIGHT), ("GRID", (0,0), (-1,-1), 0.5, C_GRAY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("RIGHTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "TOP"), ("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"), ("FONTSIZE", (0,1), (0,-1), 8.5), ])) story.append(fac_tbl) story.append(Spacer(1, 6*mm)) # ════════════════════════════════════════════════════════════════════════════════ # SECTION 4: FUNCTIONS # ════════════════════════════════════════════════════════════════════════════════ story.append(Paragraph("4. FUNCTIONS", sH2)) story.append(HRFlowable(width="100%", thickness=1.5, color=C_MED_BLUE, spaceAfter=4)) func_data = [ [p("Function", bold=True), p("Medial Arch", bold=True), p("Lateral Arch", bold=True)], [p("Weight distribution"), p("Distributes weight to weight-bearing points of sole"), p("Distributes weight to weight-bearing area of foot")], [p("Shock absorption"), p("Acts like shock absorber during jumping"), p("Acts like shock absorber while jumping")], [p("Locomotion"), p("Provides propulsive force during locomotion"), p("Static organ of support and weight transmission")], [p("Protection"), p("Concavity protects nerves and vessels of the sole"), p("Concavity protects vessels and nerves of the foot")], ] func_tbl = Table(func_data, colWidths=[CW2*0.8, CW2*1.1, CW2*1.1]) func_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_DARK_BLUE), ("TEXTCOLOR", (0,0), (-1,0), C_WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("BACKGROUND", (0,1), (0,-1), C_LIGHT_BLUE), ("BACKGROUND", (1,1), (1,-1), C_GREEN_LIGHT), ("BACKGROUND", (2,1), (2,-1), C_ORANGE_LIGHT), ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_GRAY_LIGHT]), ("GRID", (0,0), (-1,-1), 0.5, C_GRAY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("RIGHTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "TOP"), ("FONTNAME", (0,1), (0,-1), "Helvetica-Bold"), ("BACKGROUND", (1,1), (1,-1), C_GREEN_LIGHT), ("BACKGROUND", (2,1), (2,-1), C_ORANGE_LIGHT), ])) story.append(func_tbl) story.append(Spacer(1, 6*mm)) # ════════════════════════════════════════════════════════════════════════════════ # SECTION 5: APPLIED ANATOMY # ════════════════════════════════════════════════════════════════════════════════ story.append(KeepTogether([ Paragraph("5. APPLIED ANATOMY (CLINICAL RELEVANCE)", sH2), HRFlowable(width="100%", thickness=1.5, color=C_MED_BLUE, spaceAfter=4), ])) app_data = [ [p("Condition", bold=True), p("Description", bold=True), p("Arch Affected", bold=True)], [p("Flat Foot / Pes Planus", bold=True), p("Commonest foot problem. Collapse of the medial longitudinal arch. " "Patient has clumsy shuffling gait due to loss of spring action."), p("Medial")], [p("Metatarsalgia", bold=True), p("Compression of nerves and vessels of the foot due to loss of arch height."), p("Medial")], [p("Trauma Susceptibility", bold=True), p("Foot is more liable to trauma due to loss of shock-absorbing nature of the arch."), p("Medial")], [p("Pes Cavus", bold=True), p("Exaggeration / excessive height of the longitudinal arch. " "Opposite of flat foot – very high arch."), p("Both")], [p("Clumsy Shuffling Gait", bold=True), p("Direct result of flat foot – loss of spring action during walking."), p("Medial")], ] app_tbl = Table(app_data, colWidths=[CW2*0.85, CW2*1.7, CW2*0.45]) app_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,0), C_RED), ("TEXTCOLOR", (0,0), (-1,0), C_WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("ROWBACKGROUNDS",(0,1), (-1,-1), [C_WHITE, C_RED_LIGHT]), ("GRID", (0,0), (-1,-1), 0.5, C_GRAY), ("TOPPADDING", (0,0), (-1,-1), 5), ("BOTTOMPADDING", (0,0), (-1,-1), 5), ("LEFTPADDING", (0,0), (-1,-1), 7), ("RIGHTPADDING", (0,0), (-1,-1), 7), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(app_tbl) story.append(Spacer(1, 6*mm)) # ════════════════════════════════════════════════════════════════════════════════ # SECTION 6: MEMORY AIDS # ════════════════════════════════════════════════════════════════════════════════ story.append(KeepTogether([ Paragraph("6. MEMORY AIDS & MNEMONICS", sH2), HRFlowable(width="100%", thickness=1.5, color=C_MED_BLUE, spaceAfter=4), ])) mnem_rows = [ [Paragraph("Medial arch bones – <b>\"Can't Take No Cups, Man\"</b>", PS("m", fontName="Helvetica", fontSize=9, textColor=C_PURPLE, leading=13)), Paragraph("<b>C</b>alcaneum → <b>T</b>alus → <b>N</b>avicular → <b>C</b>uneiforms (3) → <b>M</b>etatarsals (medial 3)", PS("m2", fontName="Helvetica", fontSize=9, textColor=C_BLACK, leading=13))], [Paragraph("Lateral arch bones – <b>\"CuCu 45\"</b>", PS("m", fontName="Helvetica", fontSize=9, textColor=C_PURPLE, leading=13)), Paragraph("<b>C</b>alcaneum → <b>Cu</b>boid → 4th & 5th <b>M</b>etatarsals", PS("m2", fontName="Helvetica", fontSize=9, textColor=C_BLACK, leading=13))], [Paragraph("Keystones – <b>\"TALus = TALL medial, CUBoid = CUBE lateral\"</b>", PS("m", fontName="Helvetica", fontSize=9, textColor=C_PURPLE, leading=13)), Paragraph("Talus is the keystone of the medial arch; Cuboid is the keystone of the lateral arch.", PS("m2", fontName="Helvetica", fontSize=9, textColor=C_BLACK, leading=13))], [Paragraph("Medial slings – <b>\"TFA\"</b>", PS("m", fontName="Helvetica", fontSize=9, textColor=C_PURPLE, leading=13)), Paragraph("<b>T</b>ibialis posterior (bulkiest sling), <b>F</b>lexor hallucis longus, " "<b>A</b>bductor hallucis / plantar <b>A</b>poneurosis", PS("m2", fontName="Helvetica", fontSize=9, textColor=C_BLACK, leading=13))], [Paragraph("Lateral slings – <b>\"PPP weak\"</b>", PS("m", fontName="Helvetica", fontSize=9, textColor=C_PURPLE, leading=13)), Paragraph("<b>P</b>eroneus brevis, <b>P</b>eroneus tertius, <b>P</b>eroneus longus (pulley); " "all three are weak slings.", PS("m2", fontName="Helvetica", fontSize=9, textColor=C_BLACK, leading=13))], [Paragraph("Flat foot vs. Pes Cavus", PS("m", fontName="Helvetica", fontSize=9, textColor=C_PURPLE, leading=13)), Paragraph("<b>Flat foot</b> = collapsed arch (too low). <b>Pes Cavus</b> = exaggerated arch (too high).", PS("m2", fontName="Helvetica", fontSize=9, textColor=C_BLACK, leading=13))], ] mnem_tbl = Table(mnem_rows, colWidths=[(W-36*mm)*0.4, (W-36*mm)*0.6]) mnem_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), C_PURPLE_LIGHT), ("ROWBACKGROUNDS",(0,0), (-1,-1), [C_PURPLE_LIGHT, C_WHITE]), ("GRID", (0,0), (-1,-1), 0.5, C_GRAY), ("TOPPADDING", (0,0), (-1,-1), 6), ("BOTTOMPADDING", (0,0), (-1,-1), 6), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8), ("VALIGN", (0,0), (-1,-1), "TOP"), ])) story.append(mnem_tbl) story.append(Spacer(1, 6*mm)) # ════════════════════════════════════════════════════════════════════════════════ # SECTION 7: QUICK-RECALL FLASH FACTS # ════════════════════════════════════════════════════════════════════════════════ story.append(KeepTogether([ Paragraph("7. QUICK-RECALL FLASH FACTS", sH2), HRFlowable(width="100%", thickness=1.5, color=C_MED_BLUE, spaceAfter=4), ])) ff_rows = [ [p("Q", bold=True), p("A", bold=True)], [p("Which arch has more bones?"), p("Medial (5 bones vs 3)")], [p("Keystone of medial arch?"), p("Talus")], [p("Keystone of lateral arch?"), p("Cuboid")], [p("Which arch is higher?"), p("Medial")], [p("Bulkiest sling of medial arch?"), p("Tibialis posterior tendon")], [p("What does tibialis posterior sling do?"), p("Stretches arch like a string of a bow; supports calcaneum under sustentaculum tali")], [p("Pulley mechanism of lateral arch?"), p("Peroneus longus runs through groove under cuboid, acting as a pulley")], [p("Spring ligament supports which bone?"), p("Head of talus")], [p("What is Pes Planus?"), p("Flat foot – collapse of medial longitudinal arch")], [p("What is Pes Cavus?"), p("Exaggeration of the longitudinal arch")], [p("Nerve/vessel protection is due to?"), p("Concavity of the arch acting as a tunnel")], [p("Which arch initiates next step?"), p("Medial longitudinal arch")], [p("Which arch receives body weight?"), p("Lateral longitudinal arch")], [p("Most common foot problem in arch?"), p("Flat foot / Pes planus")], [p("Tie beams do what?"), p("Prevent separation of the arch bones")], ] ff_tbl = Table(ff_rows, colWidths=[(W-36*mm)*0.45, (W-36*mm)*0.55]) ff_style = [ ("BACKGROUND", (0,0), (-1,0), C_DARK_BLUE), ("TEXTCOLOR", (0,0), (-1,0), C_WHITE), ("FONTNAME", (0,0), (-1,0), "Helvetica-Bold"), ("GRID", (0,0), (-1,-1), 0.5, C_GRAY), ("TOPPADDING", (0,0), (-1,-1), 4), ("BOTTOMPADDING", (0,0), (-1,-1), 4), ("LEFTPADDING", (0,0), (-1,-1), 8), ("RIGHTPADDING", (0,0), (-1,-1), 8), ("VALIGN", (0,0), (-1,-1), "MIDDLE"), ] # Alternate row colors for i in range(1, len(ff_rows)): bg = C_YELLOW if i % 2 == 1 else C_WHITE ff_style.append(("BACKGROUND", (0,i), (-1,i), bg)) ff_tbl.setStyle(TableStyle(ff_style)) story.append(ff_tbl) story.append(Spacer(1, 6*mm)) # ════════════════════════════════════════════════════════════════════════════════ # FOOTER NOTE # ════════════════════════════════════════════════════════════════════════════════ note_data = [[Paragraph( "📌 <b>Exam Tips:</b> The most common exam question is about the <b>keystone of each arch</b> " "(Talus = medial, Cuboid = lateral). Also remember <b>tibialis posterior</b> as the " "<b>bulkiest sling</b> and <b>spring ligament</b> as the most important ligament for the " "medial arch. Pes planus vs pes cavus are common clinical MCQ topics.", PS("nt", fontName="Helvetica", fontSize=9, textColor=C_DARK_BLUE, leading=13))]] note_tbl = Table(note_data, colWidths=[W - 36*mm]) note_tbl.setStyle(TableStyle([ ("BACKGROUND", (0,0), (-1,-1), C_YELLOW), ("BOX", (0,0), (-1,-1), 1.5, C_YELLOW_D), ("TOPPADDING", (0,0), (-1,-1), 8), ("BOTTOMPADDING", (0,0), (-1,-1), 8), ("LEFTPADDING", (0,0), (-1,-1), 10), ("RIGHTPADDING", (0,0), (-1,-1), 10), ])) story.append(note_tbl) # ── Build ────────────────────────────────────────────────────────────────────── doc.build(story, onFirstPage=on_first_page, onLaterPages=on_page) print("Done:", OUT) PYEOF

Your study guide PDF is ready! Here's what's included:
7 Sections:
  1. Overview - Quick intro to foot arches
  2. Key Features at a Glance - Side-by-side comparison table (green = medial, orange = lateral)
  3. Bones & Joints - Two-column layout per arch
  4. Factors Maintaining the Arches - Bones, ligaments, tie beams, and slings compared
  5. Functions - All 4 functions for both arches
  6. Applied Anatomy - Clinical conditions (Pes planus, Pes cavus, Metatarsalgia, etc.) in a red-highlighted table
  7. Memory Aids & Mnemonics - "Can't Take No Cups, Man", "CuCu 45", and more, plus a Quick-Recall Q&A Flash Facts section with 15 exam-style questions
Comes with a header bar, page numbers, and a yellow Exam Tips box at the end highlighting the highest-yield facts.

Foot Arches Study Guide

PDF Document · PDF

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