Skip to main content
Inspiring
December 16, 2024
Question

Index page range script issue InDesign

  • December 16, 2024
  • 2 replies
  • 213 views

I have a script for generating page ranges for an index document in InDesign. While the script executes successfully and creates the page ranges, there is an issue with hyperlinks. For example, if the input is 10, 29, 30, 31, 32, 33, 34, the script converts it to⁣.10, 29-34 However, after the hyphen, the first digit (3 in this case) does not retain its hyperlink, while the last digit (4) does. I have verified this issue both in InDesign and in the ePub output.

Below is my script. If anyone can assist in resolving this, it would be greatly appreciated.

 

 

 if (app.selection.length > 0 && app.selection[0].hasOwnProperty ('baseline')) 
{ 
    var s = app.selection[0].parentStory;   
    app.findGrepPreferences = app.changeGrepPreferences = NothingEnum.nothing;   
       
    app.findGrepPreferences.findWhat = '\\d+, ([\\d+, ])+';   
    var r = s.findGrep();   
    for ( aLine = r.length-1; aLine >= 0; aLine-- )   
        r[aLine].contents= checkOneLine ( r[aLine].contents );   
} 
else 
        alert('Achtung!\nBitte einen Textabschnitt auswählen.');     
 
   
function checkOneLine ( aString )   
{   
    var a = aString.split( ', ');   
    for ( var i = 0; i < aString.length-1; i++ )   
    {   
        var k = i +1;   
        while ( k < aString.length && a[k] == Number( a[k-1] ) + 1)   
        {   
            k++;   
        }   
        if ( Number(a[k-1]) >  Number( a[i] ) )   
        {   
            a[i] = a[i] + '–' + a[k-1];   
            a.splice( i+1, k-1-i );   
        }   
    }   
    return  a.join( ', ');   
}   

 

 

 

 

This topic has been closed for replies.

2 replies

Robert at ID-Tasker
Legend
December 16, 2024

@Shanpub 

 

Because you are modifying text contents - not text objects.

 

A different solution to what @Peter Kahrel suggested:

 

After you get your find grep search result - you would've to iterate though all found elements, check if they belong to the same paragraph, then process them - by removing ones in between.

 

Peter Kahrel
Community Expert
Community Expert
December 16, 2024

The script rearranges page numbers but does nothing to the hyperlink text sources (those applied to page numbers). The best would be to remove the text sources from all page numbers of a topic in which some page numbers were ranged and create new hyperlinks. That should be pretty staightforward.