Skip to content
This repository was archived by the owner on Aug 11, 2026. It is now read-only.
This repository was archived by the owner on Aug 11, 2026. It is now read-only.

latex_octaved_sargam_letter should use Unicode for lower octaves due to matplotlib incompatibility #24

Description

@jon-myers

Issue Description

The latex_octaved_sargam_letter property produces LaTeX syntax that doesn't render properly in matplotlib for lower octaves, making the API output unusable in the most common Python plotting scenario.

Problem

Currently, latex_octaved_sargam_letter outputs:

  • Upper octaves: $\dot{\mathrm{D}}$ ✅ Works in matplotlib
  • Lower octaves: $\underset{\cdot}{\mathrm{D}}$Doesn't render in matplotlib

The \underset command is not supported by matplotlib's LaTeX engine, so lower octave diacritics simply don't appear, leaving users with broken output.

Impact

  • Any visualization using matplotlib will have missing lower octave diacritics
  • Users must implement workarounds, defeating the purpose of a "latex" property
  • API is inconsistent - works for upper octaves, fails for lower octaves

Proposed Solution

Update latex_octaved_sargam_letter to use Unicode characters directly for lower octaves:

  • Upper octaves: $\dot{\mathrm{D}}$ (keep LaTeX - works perfectly)
  • Lower octaves: (use Unicode directly - works perfectly)
  • Normal octave: D (no change needed)

This would make the API robust and usable across all plotting libraries.

Example

from idtap.classes.pitch import Pitch

# Current (broken in matplotlib):
p_lower = Pitch({'swara': 'dha', 'oct': -1, 'raised': True})
print(p_lower.latex_octaved_sargam_letter)  # '$\\underset{\\cdot}{\\mathrm{D}}$' - doesn't render

# Proposed (works everywhere):
print(p_lower.latex_octaved_sargam_letter)  # 'Ḍ' - renders perfectly

Context

Discovered while implementing cyclic visualizations. Had to implement a workaround that checks octave levels and uses Unicode for lower octaves manually, which defeats the purpose of having a dedicated LaTeX property in the API.

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Type

    No type

    Projects

    No projects

      Milestone

      No milestone

      Relationships

      None yet

      Development

      No branches or pull requests

      Issue actions