es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

¿Cómo subrayar caracteres en InDesign con JavaScript?

Empecé a escribir este código para InDesign para subrayar todas las letras excepto la que tiene descendientes, y agregué una ventana de diálogo para elegir el trazo y la compensación de la línea.
Ahora tengo dos problemas:

  1. el programa subraya todas las letras
  2. el trazo y offset no cambian

Soy principiante en Javascript y es la primera vez programando para InDesign. ¿Alguien tiene alguna idea? ¡Gracias!

// SUBRAYAR TODO MENOS NO DESCENDIENTES

// Asegúrese de que la interacción del usuario (visualización de diálogos, etc.) esté activada.

app.scriptPreferences.userInteractionLevel = UserInteractionLevels.interactWithAll;

if (app.documents.length != 0){
try {
// Ejecutar secuencia de comandos con una sola reversión si es compatible.
if (parseFloat(app.version) < 6) {
main();
} else {
app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.ENTIRE_SCRIPT, “Expandir abreviaturas del estado”);
}
// Informe global de errores
} catch ( error ) {
alert( error + ” (Línea ” + error.line + ” en archivo ” + error.fileName + “)”);
}
}else{
alert(“Abra un documento antes de ejecutar este script.”);
}

// FUNCIÓN PRINCIPAL
function main(){

 if(app.selection.length != 0){
    myDisplayDialog();
}

}

// INTERFAZ
function myDisplayDialog(){
// Declarar variables
  // general
var myDoc = app.activeDocument;
var mS = myDoc.selection;
// diálogo
var myDialog = app.dialogs.add({name:”Subrayador”});
var myLabelWidth = 70;
with(myDialog.dialogColumns.add()){
with(borderPanels.add()){
with(dialogColumns.add()){
with(dialogRows.add()){
staticTexts.add({staticLabel:”Trama:”, minWidth:myLabelWidth});
staticTexts.add({staticLabel:”Compensación:”, minWidth:myLabelWidth});
}
}
with(dialogRows.add()){
staticTexts.add({staticLabel:””});
var myStroke = measurementEditboxes.add({editValue:1, editUnits:MeasurementUnits.points});
var myOffset = measurementEditboxes.add({editValue: 15, editUnits:MeasurementUnits.points});

            }

    }
}

var myResult = myDialog.show();
if(myResult == true){
    var myStroke = myStroke.editValue;
    var myOffset = myOffset.editValue;
    myDialog.destroy();
    underline(mS,myStroke,myOffset);
}
else{
    myDialog.destroy();
    alert("Rango de página no válido.");
}

}

// FUNCIÓN REAL
function underline(charList,stroke, offset){
var len = charList.length;
const doNotUnderline = [‘g’,’j’,’p’,’q’,’y’];
for (var i=0; i<len; i++){=”” try{=”” var=”” mychar=”charList[i];” console.log(typeof=”” mytext);=”” if=”” (includes(mychar,=”” donotunderline)=”=” false)=”” {=”” mychar.underline=”true;” mychar.underlineweight=”=” stroke;=”” mychar.underlineoffset=”=” offset;=”” }=”” else=”” {=”” mychar.underline=”false;” }=”” }catch(r){=”” alert(r.description);=”” break;=”” }=”” }=”” }=”” función=”” para=”” saber=”” si=”” el=”” carácter=”” está=”” en=”” la=”” matriz=”” function=”” includes(element,array)=”” {=”” var=”” len=”array.length;” for(var=”” i=”0;”></len;><len; i++)
{
if(array[i]==element){return true;}
}
return false;
} i++)=”” {=”” if(array[i]=”=element){return” true;}=”” }=”” return=”” false;=””></len; i++)
{
if(array[i]==element){return true;}
}
return false;
}>

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Problema con la subrayado de código en InDesign

    El código proporcionado tiene la intención de subrayar todas las letras excepto aquellas con descendencia, e incluye una ventana de diálogo para elegir el trazo y la distancia de la línea. Sin embargo, el usuario se encuentra con dos problemas:

    1. El código subraya todas las letras, en lugar de solo aquellas sin descendencia.
    2. El trazo y la distancia seleccionados en la ventana de diálogo no afectan la subrayado.

    El usuario es principiante en JavaScript y agradecería cualquier ayuda para resolver estos problemas. El código incluye varias funciones y una función principal, que llama a la función myDisplayDialog cuando se selecciona un objeto en el documento de InDesign. La función myDisplayDialog muestra una caja de diálogo para que el usuario seleccione el trazo y la distancia.

    La función underline tiene la intención de recorrer cada carácter en el objeto seleccionado y subrayarlo si no contiene ninguna de las letras con descendencia. Sin embargo, la función actualmente está subrayando todos los caracteres, independientemente de su apariencia.

    La función includes se utiliza para verificar si un carácter está incluido en una matriz de letras con descendencia.

Comments are closed.