CommunityProgramación y desarrollogithub.com

37-vertin/markdown-math-render

Habilidades de renderizado de fórmulas matemáticas en Markdown para la app Codex (solo bloques, Unicode en línea, seguro para tablas) más script de autoverificación.

¿Qué es markdown-math-render?

Esta habilidad establece reglas estrictas y un proceso de autoverificación para garantizar que las fórmulas matemáticas se rendericen correctamente en el escritorio de Codex App, que solo admite fórmulas en bloque `$$...$$` y no las inline `$...$`. Proporciona tres mecanismos activadores: descripción previa, montaje en flujo de trabajo y autoverificación previa a la publicación con un script Python. Incluye una tabla de conversión rápida de fórmulas inline a Unicode (superíndices, subíndices, raíces, fracciones) y manejo especial para fórmulas dentro de tablas (prohibiendo delimitadores, usando Unicode o colocando fórmulas después de la tabla). El script `check_inline_math.py` escanea archivos Markdown para detectar `$...$` y `^(...)` no permitidos, asegurando que no haya fallos de renderizado. También incluye validación de sintaxis TeX mediante KaTeX CLI. Es compatible con Codex App y está diseñada para desarrolladores, tutores y cualquier persona que escriba documentos matemáticos en Markdown.

Compatible con✓Claude Code✓Codex CLI~Cursor
npx skills add 37-vertin/markdown-math-render

Installed? Explore more Programación y desarrollo skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Preguntar en tu IA favorita

Abre un nuevo chat con esta habilidad de agente ya precargada.

Documentación

Reglas de renderizado de fórmulas matemáticas en Markdown y verificación

Cadena de activación: tres seguros para evitar que la habilidad no se ejecute

Esta habilidad garantiza su ejecución al escribir fórmulas mediante tres cadenas:

  1. Activación previa: esta descripción declara "antes de escribir cualquier fórmula matemática" para activarse, sin esperar a que falle el renderizado.
  2. Montaje en flujo de trabajo: la habilidad principal del repositorio math-question-skill (D:\math_question\SKILL.md) referencia esta habilidad en sus reglas obligatorias: al resolver problemas, explicar o generar la pregunta diaria, siempre se pasa por esta cadena.
  3. Autoverificación previa a la publicación: antes de finalizar un texto con fórmulas, se ejecuta scripts/check_inline_math.py para escanear; si se encuentra $...$ en línea, debe cambiarse a fórmula en bloque o texto plano antes de enviar/escribir.

Reglas principales (obligatorias en Codex App)

La aplicación de escritorio Codex solo renderiza fórmulas en bloque independientes $$...$$, no las inline $...$ (confirmado por el issue #14985 oficial). La fórmula en sí no está mal, el problema es el delimitador:

❌ $f(x)=\sqrt[3]{x}$                       ← inline $...$, la App no renderiza
❌ $\dfrac{f(x_0+h)-f(x_0)}{h}$             ← inline $...$, la App no renderiza

Solución: la fórmula debe estar en su propia línea, usando $$...$$:

✅ Por
$$
f'(x_0)=\lim_{h\to0}\dfrac{f(x_0+h)-f(x_0)}{h}
$$
se tiene que es derivable ⟺ el límite existe y es finito

Para expresiones cortas en línea, use caracteres Unicode matemáticos para embellecer, con apariencia similar al resultado renderizado:

  • Superíndice/subíndice: xˣ (U+02E3), 10⁶, 2ⁿ, x₀, x₁
  • Raíz cuadrada: √x (U+221A), ∛x (U+221B raíz cúbica)
  • Fracción con superíndice: x¹⁄³ (¹ U+00B9 + ⁄ U+2044 + ³ U+00B3)
  • Apóstrofe de derivada: f′(x) (U+2032, no usar apóstrofe recto ')
  • Operadores/símbolos: ·, −, ±, ∞, ≠, ≤, ≥, ∈

⚠️ No usar notación de programación ^(...): x^(1/3) parece código fuente; use ∛x o x¹⁄³.

Las expresiones inline complejas (fracciones, raíces, límites) deben dividirse en bloques $$...$$, no forzarse como texto plano.

Qué hacer cuando el usuario solicita "conservar fórmulas inline" (las reglas duras no cambian)

En medio de una conversación, el usuario podría decir "conserva $...$ para fórmulas inline, solo corrige espacios" — esto no cambia el comportamiento de renderizado de la App. Las $...$ inline nunca se renderizan en Codex App, agregar espacios solo da "código fuente con espacios", empeora la apariencia y sigue siendo un fallo (lección histórica: después de corregir espacios, el usuario aún reportaba "estos lugares siguen teniendo problemas", la causa raíz era que las $...$ inline no se habían convertido a Unicode). Por lo tanto:

  • Antes de finalizar, siga las reglas duras: las expresiones inline cortas se convierten a Unicode, las complejas se dividen en $$...$$ independientes.
  • Si el usuario insiste en conservar $...$ inline, primero explique las consecuencias (la App muestra el código fuente) y añada un "aviso de renderizado" al final del resultado.
  • No omita la autoverificación check_inline_math.py por petición del usuario; [FAIL] debe llegar a cero para considerar la tarea completada.

Tabla de conversión rápida: fórmula inline → Unicode

EscenarioLaTeX inline (prohibido)Corrección Unicode
Variable de una letra$f$, $g$, $A$f, g, A (texto plano)
Superíndice/subíndice$x^n$, $x_0$, $a_n$xⁿ, x₀, aₙ
Raíz$\sqrt{x}$, $\sqrt[3]{x}$√x, ∛x
Fracción$\frac1n$, $\frac{x^n}{1+x}$Corta 1/n; compleja dividir en bloque $$...$$
Límite$\lim_{n\to\infty}a_n$lim(n→∞) aₙ (Unicode no tiene flecha con subíndice, la condición de aproximación se incluye entre paréntesis dentro de lim; compleja dividir en bloque)
Integral$\int_0^1 f(x)\,dx$Compleja dividir en bloque $$...$$, no forzar inline
Valor absoluto$\lvert x\rvert$`
Conjuntos/relaciones$x\in[0,1]$, $f\le g$x∈[0,1], f ≤ g
Flechas$x\to0$, $n\to\infty$x→0, n→∞
Puntos suspensivos$a_1+\cdots+a_k$a₁+…+aₖ

Fórmulas dentro de tablas (segundo escenario más común en Codex App)

Las $...$ dentro de celdas de tabla no se renderizan; y $$...$$ independientes rompen la fila de la tabla. Nunca colocar delimitadores de fórmula dentro de celdas de tabla:

PrácticaExplicación
❌ Escribir $x^{1/3}$ en una celdaInline no se renderiza, se muestra como código fuente
❌ Escribir $$x^{1/3}$$ en una celdaLos delimitadores de varias líneas rompen la tabla
✅ Solo texto plano/Unicode en la celda∛x, `
✅ Fórmula debajo de la tablaCada fórmula en su propia línea $$...$$, después de la tabla
✅ El contenido es principalmente fórmulaUsar lista estructurada (subtítulo + $$...$$), no tabla

Ejemplo: tres casos de no derivabilidad:

FunciónModo de fallo en x = 0
∛xTangente vertical, cociente diferencial → +∞
x·sin(1/x)Oscilación violenta, el límite no existe

Fórmula debajo de la tabla:

$$ \lim_{h\to0}\frac{h^{1/3}}{h}=+\infty $$

Autoverificación previa a la publicación (30 segundos, obligatorio antes de finalizar)

⚠️ Primero configure la consola en UTF-8: la consola de Windows por defecto es GBK, los scripts con caracteres chinos o emoji (como ✅) producirán UnicodeEncodeError o caracteres ilegibles. Antes de ejecutar la verificación, ejecute:

[Console]::OutputEncoding = [System.Text.Encoding]::UTF8
$OutputEncoding = [System.Text.Encoding]::UTF8
$env:PYTHONIOENCODING = 'utf-8'

Para verificar un borrador de mensaje de chat:

python "D:\math_question\.agents\skills\markdown-math-render\scripts\check_inline_math.py" - < borrador.txt

Para verificar un archivo ya escrito:

python "D:\math_question\.agents\skills\markdown-math-render\scripts\check_inline_math.py" "D:\math_question\archivo_destino.md"
  • Código de salida 0 (salida [OK]) → limpio, se puede enviar/escribir
  • Código de salida 0 + aviso [STYLE] → hay ^(...) de superíndice estilo código fuente (ej. x^(1/3)), apariencia de código, se sugiere cambiar a ∛x/x¹⁄³ o fórmula en bloque (sugerencia de estilo, no bloquea)
  • Código de salida 1 (salida [FAIL] con número de línea) → dos tipos de problemas: $...$ inline (cambiar a $$...$$ independiente o texto plano Unicode); $$...$$ no está en su propia línea (mover texto al inicio/fin de la línea que contiene $$). Corregir según la línea y volver a ejecutar hasta que no haya [FAIL]

Confirmar que la fórmula en sí no está rota (30 segundos)

El repositorio incluye KaTeX CLI, para verificar la sintaxis TeX:

@'
\dfrac{f(x_0+h)-f(x_0)}{h}
'@ | node scripts/node_modules/katex/cli.js
  • Salida contiene <annotation ...> y código de salida 0 → la fórmula es correcta, el problema es el delimitador/renderizador
  • Lanza ParseError → error de sintaxis TeX, corregir primero la fórmula

Principio en una frase

En Codex App, las fórmulas siempre deben estar en su propia línea usando $$...$$; las expresiones cortas inline se embellecen con Unicode en superíndices/subíndices (xˣ, f′(x)); las celdas de tabla no contienen fórmulas, estas se colocan debajo de la tabla; ejecute check_inline_math.py como red de seguridad antes de publicar; prohibido el uso de $...$ inline.

Skills relacionados