Skip to content

Preguntas Frecuentes: Qué hacer si las tablas no se formatean

Lo que aprenderás

Esta lección te ayudará a diagnosticar y resolver rápidamente problemas comunes al usar el complemento:

  • Identificar las razones por las que las tablas no se formatean
  • Comprender el significado del error "estructura de tabla inválida"
  • Conocer las limitaciones conocidas del complemento y escenarios donde no aplica
  • Verificar rápidamente si la configuración es correcta

Problema 1: Las tablas no se formatean automáticamente

Síntomas

La IA generó una tabla, pero los anchos de columna no son consistentes y no están alineados.

Causas posibles y soluciones

Causa 1: Complemento no configurado

Pasos de verificación:

  1. Abre el archivo .opencode/opencode.jsonc
  2. Confirma que el complemento esté en el array plugin:
jsonc
{
  "plugin": ["@franlol/[email protected]"]
}
  1. Si no está, agrega la configuración del complemento
  2. Reinicia OpenCode para que la configuración surta efecto

Formato de configuración

Asegúrate de que el número de versión y el nombre del paquete sean correctos, usando el formato @franlol/opencode-md-table-formatter + @ + número de versión.

Causa 2: OpenCode no se reinició

Solución:

Después de agregar el complemento, debes reiniciar OpenCode por completo (no solo recargar la página) para que el complemento se cargue.

Causa 3: Falta la fila separadora en la tabla

Ejemplo de síntoma:

markdown
| Name | Age |
| Alice | 25 |
| Bob | 30 |

Esta tabla no se formateará.

Solución:

Agrega la fila separadora (segunda fila, en formato |---|):

markdown
| Name | Age |
|--- | ---|
| Alice | 25 |
| Bob | 30 |

Función de la fila separadora

La fila separadora es la sintaxis estándar de las tablas Markdown, utilizada para distinguir entre el encabezado y las filas de contenido, y también para especificar la alineación. El complemento debe detectar la fila separadora para formatear la tabla.

Causa 4: Versión de OpenCode demasiado antigua

Pasos de verificación:

  1. Abre el menú de ayuda de OpenCode
  2. Verifica el número de versión actual
  3. Confirma que la versión sea >= 1.0.137

Solución:

Actualiza a la última versión de OpenCode.

Requisito de versión

El complemento utiliza el hook experimental.text.complete, que está disponible en OpenCode versión 1.0.137+.


Problema 2: Ver el comentario "invalid structure"

Síntomas

Aparece al final de la tabla:

markdown
<!-- table not formatted: invalid structure -->

¿Qué es una "estructura de tabla inválida"?

El complemento valida cada tabla Markdown, y solo se formatean las tablas que pasan la validación. Si la estructura de la tabla no cumple con las especificaciones, el complemento conservará el texto original y agregará este comentario.

Causas comunes

Causa 1: Número insuficiente de filas

Ejemplo incorrecto:

markdown
| Name |

Solo tiene 1 fila, el formato está incompleto.

Ejemplo correcto:

markdown
| Name |
|---|

Se requieren al menos 2 filas (incluida la fila separadora).

Causa 2: Número de columnas inconsistente

Ejemplo incorrecto:

markdown
| Name | Age |
|--- | ---|
| Alice |

La primera fila tiene 2 columnas, la segunda fila tiene 1 columna, el número de columnas es inconsistente.

Ejemplo correcto:

markdown
| Name | Age |
|--- | ---|
| Alice | 25 |

Todas las filas deben tener el mismo número de columnas.

Causa 3: Falta la fila separadora

Ejemplo incorrecto:

markdown
| Name | Age |
| Alice | 25 |
| Bob | 30 |

No hay una fila separadora como |---|---|.

Ejemplo correcto:

markdown
| Name | Age |
|--- | ---|
| Alice | 25 |
| Bob | 30 |

Cómo diagnosticar rápidamente

Usa la siguiente lista de verificación:

  • [ ] La tabla tiene al menos 2 filas
  • [ ] Todas las filas tienen el mismo número de columnas (cuenta cuántos | hay en cada fila)
  • [ ] Existe una fila separadora (la segunda fila suele estar en formato |---|)

Si todo lo anterior se cumple pero aún aparece el error, verifica si hay caracteres ocultos o espacios adicionales que causen un error en el cálculo del número de columnas.


Problema 3: Ver el comentario "table formatting failed"

Síntomas

Aparece al final del texto:

markdown
<!-- table formatting failed: {错误信息} -->

Causa

El complemento lanzó una excepción no esperada internamente.

Solución

  1. Verifica el mensaje de error: la parte {错误信息} en el comentario explicará el problema específico
  2. Verifica el contenido de la tabla: confirma si hay casos extremos especiales (como líneas muy largas, combinaciones de caracteres especiales)
  3. Conserva el texto original: incluso si falla, el complemento no destruirá el texto original, tu contenido está seguro
  4. Reporta el problema: si el problema ocurre repetidamente, puedes enviar un reporte en GitHub Issues

Aislamiento de errores

El complemento envuelve la lógica de formateo con try-catch, por lo que incluso si hay un error, no interrumpirá el flujo de trabajo de OpenCode.


Problema 4: Algunos tipos de tablas no son compatibles

Tipos de tablas no compatibles

Tablas HTML

No compatible:

html
<table>
  <tr><th>Name</th></tr>
  <tr><td>Alice</td></tr>
</table>

Solo compatible: Tablas de canalización Markdown (Pipe Table)

Celdas multilínea

No compatible:

markdown
| Name | Description |
|--- | ---|
| Alice | Line 1<br>Line 2 |

Por qué no es compatible

El complemento está diseñado para tablas simples generadas por IA, las celdas multilínea requieren una lógica de diseño más compleja.

Tablas sin fila separadora

No compatible:

markdown
| Name | Age |
| Alice | 25 |
| Bob | 30 |

Debe tener una fila separadora (ver "Causa 3" arriba).


Problema 5: Las tablas aún no están alineadas después del formateo

Causas posibles

Causa 1: Modo de ocultación no habilitado

El complemento está optimizado para el modo de ocultación (Concealment Mode) de OpenCode, que oculta los símbolos Markdown (como **, *).

Si tu editor no tiene habilitado el modo de ocultación, las tablas pueden parecer "no alineadas" porque los símbolos Markdown ocupan el ancho real.

Solución:

Confirma que el modo de ocultación de OpenCode esté habilitado (habilitado por defecto).

Causa 2: Contenido de celda demasiado largo

Si el contenido de una celda es muy largo, la tabla puede estirarse mucho.

Este es un comportamiento normal, el complemento no truncará el contenido.

Causa 3: Símbolos en código en línea

Los símbolos Markdown en código en línea (`**code**`) se calculan según el ancho literal y no se eliminarán.

Ejemplo:

| 符号 | 宽度 |
|--- | ---|
| 普通文本 | 4 |
| `**bold**` | 8 |

Este es el comportamiento correcto, porque en el modo de ocultación, los símbolos dentro de los bloques de código son visibles.


Resumen de la lección

En esta lección, has aprendido:

  • Diagnosticar tablas sin formato: verificar configuración, reinicio, requisitos de versión, fila separadora
  • Comprender errores de tabla inválida: validación de número de filas, número de columnas, fila separadora
  • Identificar limitaciones conocidas: tablas HTML, celdas multilínea, tablas sin fila separadora no son compatibles
  • Autoverificación rápida: usar la lista de verificación para validar la estructura de la tabla

¿Aún no resuelto?

Si has verificado todos los problemas anteriores pero el problema persiste:

  1. Verifica los registros completos: el complemento funciona en modo silencioso por defecto, sin registros detallados
  2. Envía un Issue: en GitHub Issues proporciona tu ejemplo de tabla y el mensaje de error
  3. Consulta cursos avanzados: lee Especificaciones de tablas y Principios del modo de ocultación para obtener más detalles técnicos

Próxima lección

En la próxima lección aprenderemos Limitaciones conocidas: ¿Dónde están los límites del complemento?.

Aprenderás:

  • Los límites de diseño y restricciones del complemento
  • Posibles mejoras futuras
  • Cómo determinar si un escenario es adecuado para usar este complemento

Apéndice: Referencia del código fuente

Haz clic para expandir y ver la ubicación del código fuente

Fecha de actualización: 2026-01-26

FunciónRuta del archivoLínea
Lógica de validación de tablaindex.ts70-88
Detección de filas de tablaindex.ts58-61
Detección de fila separadoraindex.ts63-68
Manejo de erroresindex.ts15-20
Comentario de tabla inválidaindex.ts44-47

Reglas de negocio clave:

  • isValidTable(): valida que la tabla tenga al menos 2 filas, todas las filas con el mismo número de columnas, y exista una fila separadora (líneas 70-88)
  • isSeparatorRow(): usa la expresión regular /^\s*:?-+:?\s*$/ para detectar la fila separadora (líneas 63-68)
  • Ancho mínimo de columna: 3 caracteres (línea 115)

Mecanismo de manejo de errores:

  • try-catch envuelve la función de procesamiento principal (líneas 15-20)
  • Fallo de formateo: conservar texto original + agregar comentario <!-- table formatting failed: {message} -->
  • Fallo de validación: conservar texto original + agregar comentario <!-- table not formatted: invalid structure -->