Contexto
El PR #3 introdujo el atributo specific-use="modo|prefijo|sufijo" en <xref ref-type="bibr"> para preservar el modo de cita Pandoc y los textos accesorios. El delimitador entre las tres partes es el carácter |.
Problema
Si el prefijo o el sufijo contienen literalmente el carácter |, el parseo posterior en el XSLT se rompe: el split por | produce más de tres partes y los valores quedan mal asignados.
Probabilidad
Muy baja en textos académicos reales. Es difícil que alguien escriba [ver | @key] o [@key, p. 5 | parte A]. Pero la posibilidad existe y es trazable.
Opciones a evaluar
- Mantener el
| y documentar la restricción en el código y en una nota técnica.
- Escapar el
| en el filtro Lua (por ejemplo \|) y desescapar en el XSLT.
- Usar un separador no imprimible como
 (Unit Separator, U+001F), que es prácticamente imposible de teclear o pegar accidentalmente desde un editor de texto.
- Cambiar el modelo y descomponer en atributos separados (por ejemplo
specific-use="modo" más atributos custom para prefijo y sufijo en otro namespace).
La opción 3 es la más robusta sin sumar lógica de escape. La 4 es la más limpia semánticamente pero requiere más cambios en el XSLT consumer.
Prioridad sugerida
Baja. Es un edge case teórico que no se ha observado en producción.
Referencias
Contexto
El PR #3 introdujo el atributo
specific-use="modo|prefijo|sufijo"en<xref ref-type="bibr">para preservar el modo de cita Pandoc y los textos accesorios. El delimitador entre las tres partes es el carácter|.Problema
Si el prefijo o el sufijo contienen literalmente el carácter
|, el parseo posterior en el XSLT se rompe: el split por|produce más de tres partes y los valores quedan mal asignados.Probabilidad
Muy baja en textos académicos reales. Es difícil que alguien escriba
[ver | @key]o[@key, p. 5 | parte A]. Pero la posibilidad existe y es trazable.Opciones a evaluar
|y documentar la restricción en el código y en una nota técnica.|en el filtro Lua (por ejemplo\|) y desescapar en el XSLT.(Unit Separator, U+001F), que es prácticamente imposible de teclear o pegar accidentalmente desde un editor de texto.specific-use="modo"más atributos custom para prefijo y sufijo en otro namespace).La opción 3 es la más robusta sin sumar lógica de escape. La 4 es la más limpia semánticamente pero requiere más cambios en el XSLT consumer.
Prioridad sugerida
Baja. Es un edge case teórico que no se ha observado en producción.
Referencias
0eaebe5).hidden/filters/cite-to-xref.lua(funciónCite()) y.hidden/xslt/jats-to-latex.xsl(templatexref[@ref-type='bibr']).