Cómo insertar etiquetas de continuidad en tus bloques de código HTML
Imagina que tienes un bloque de código HTML muy largo que ocupa varias páginas en InDesign. Cada vez que el texto “salta” de una página a la siguiente, quieres que aparezcan dos palabritas mágicas:
- ← Continuación del código anterior al final de la página que se quedó “colgada”
- El código continúa en la página siguiente → al principio de la página nueva
Para lograrlo con un script en JavaScript (ExtendScript) para InDesign:
- Limpiar primero cualquier etiqueta vieja (por si ya habías corrido el script antes).
- Recorrer cada historia de texto y cada par de párrafos consecutivos.
- Detectar cuándo esos dos párrafos están en páginas distintas.
- Insertar justo después del último carácter de la primera página el texto
css
CopiarEditar
← Continuación del código anterior
(con un retorno para separarlo).
- Insertar justo antes del primer carácter de la siguiente página el texto
css
CopiarEditar
El código continúa en la página siguiente →
- Aplicar a cada uno su estilo de párrafo (“Etiquetacontinuacion” y “Etiquetacontinua”) para que salgan con el formato que hayas definido.
En lenguaje sencillo:
- Recorres todo tu documento.
- Cada vez que el código “cruza” de una página a la siguiente, pegas esas dos frases en el lugar correcto.
- Y así el lector siempre sabe que el bloque de código sigue, sin perderse ni confundirlo con el resto del texto.

(function(){
var doc = app.activeDocument;
if (!doc) {
alert("❌ Abre primero un documento.");
return;
}
// 0) Ajusta estos nombres si no coinciden con tus estilos
var styleCode = "CodigoHTML";
var styleContinua = "Etiquetacontinuacion"; // ← Continuación…
var styleSiguiente = "Etiquetacontinua"; // El código continúa…
// 1) Eliminar etiquetas antiguas
var olds = [
"← Continuación del código anterior",
"El código continúa en la página siguiente →"
];
for (var s = 0; s < doc.stories.length; s++){
var st = doc.stories[s];
for (var i = st.paragraphs.length - 1; i >= 0; i--){
var p = st.paragraphs[i];
var txt = String(p.contents)
.replace(/[\r\n]/g, " ")
.replace(/\s+/g, " ")
.replace(/^\s+|\s+$/g, "");
for (var k = 0; k < olds.length; k++){
if (txt === olds[k]) { p.remove(); break; }
}
}
}
// 2) Inserción de las dos etiquetas
for (var s2 = 0; s2 < doc.stories.length; s2++){
var st2 = doc.stories[s2];
for (var i2 = 0; i2 < st2.paragraphs.length - 1; i2++){
var p1 = st2.paragraphs[i2],
p2 = st2.paragraphs[i2 + 1];
// a) Solo bloques de código
if (!p1.appliedParagraphStyle || p1.appliedParagraphStyle.name !== styleCode) continue;
if (!p2.appliedParagraphStyle || p2.appliedParagraphStyle.name !== styleCode) continue;
if (!p1.characters.length || !p2.characters.length) continue;
// b) Detectar salto de página real
var pg1 = p1.characters[0].parentTextFrames[0].parentPage,
pg2 = p2.characters[0].parentTextFrames[0].parentPage;
if (!pg1 || !pg2 || pg1.name === pg2.name) continue;
// c) Insertar flecha “← Continuación…” al final de p1
var ipEnd = p1.insertionPoints.lastItem();
ipEnd.contents = "\r← Continuación del código anterior\r";
// Aplicar estilo
var newBack = st2.paragraphs[i2 + 1];
newBack.appliedParagraphStyle =
doc.paragraphStyles.itemByName(styleContinua);
// d) Insertar flecha “El código continúa…” al inicio de p2
// p2 habrá subido un índice, pasa a i2+2
var ipStart = st2.paragraphs[i2 + 2].insertionPoints.firstItem();
ipStart.contents = "El código continúa en la página siguiente →\r";
var newForward = st2.paragraphs[i2 + 2];
newForward.appliedParagraphStyle =
doc.paragraphStyles.itemByName(styleSiguiente);
// e) Saltamos los dos párrafos insertados
i2 += 2;
}
}
alert("✅ Etiquetas de continuidad limpias e insertadas correctamente.");
})();
