Copy link to clipboard
Copied
Hi
I am working on Al-Quran which has many anchors to the text (red color text frame with text in the attached image)
I now want to replace the red frame with some other box. Say the blue box (shown in the image).
How do I do that with grep. I tried find and replace with ~a and ~c but that is deleting all the text inside the red text box.
I want the text to remain and change the box only. What would be the process using grep?
Thanks
The problem is that the background frame is anchored. Sorry, I should have mentioned that it should be floating, as it were, not anchored. You can simply copy and paste the frame that you placed, then it should work.
Copy link to clipboard
Copied
GREP finds text, not frames. Well, it can frames but only via text. But the solution is simple: change the object style that's applied to those boxes. If no specific object style was used, now's the time to create a style and apply the style. You can't do that in the interface, but a small script can do it for you.
First, create an object style for the blue box (if you don't have it already). The script assumes blue box, you can use something else but then you need to change the name in the script.
Here's the script:
ostyle = app.documents[0].objectStyles.item('blue box');
app.findGrepPreferences = null;
app.findGrepPreferences.findWhat = '~a';
frames = app.documents[0].findGrep();
for (i = 0; i < frames.length; i++) {
frames[i].pageItems[0].appliedObjectStyle = ostyle;
}
P.
Copy link to clipboard
Copied
Thank you so much Peter.
This worked partly. Its my mistake, I should have mentioned it in my question.
The code is replacing other anchors also who doesnot have any object style applied to them or some other object style is applied.
In short. I want to replace all the RedsBox object style Text Frame with Blue Box.
Thanks
Copy link to clipboard
Copied
In that case you can use the Object tab of the Find/Change window.
Copy link to clipboard
Copied
Thanks Peter. It works but in that case I am not able to use my imported line art image which I want to use.
Regards
Copy link to clipboard
Copied
I don't entirely understand. Please elaborate. The red frame is an image?
Copy link to clipboard
Copied
First of all I am sorry, I am not able to explain it properly. I'll try to explain once again by the help of attached image.
In the attachment, the ones circled in red color are text frames (object style named Waqf has been applied to these boxes ) attached to the main text. I want to put some line art image here (Circled with magenta color in the attachement. My final output should look like this)
The one circled in blue color is my line art image.
I tried the GREP method which did not work. Its replacing the text in red circle
There are approx 1000 pages where modification is required.
Sorry for the inconvenience and thanks in advance.
Copy link to clipboard
Copied
I see. What you need to do is to place the images behind the anchored text frames. The best way to do that is to create an object style for the images, then place the anchor immediately before the anchors of the text frames. The precise location of the images is set in the object style -- that'll be a bit fiddly but you need to do it only once.
Do this:
1. Place just one image. Name it background on the Layers panel: open the Layers panel (F7), select the image, in the layers panel do a slow double-click and type the name.
2. Create an object style, call it background, and apply it to the image. The object style should be a custom anchor (just like Waqf). Fiddle with the settings until it sits exactly centred behind the anchored text frames.
3. Then run this script:
doc = app.documents[0];
background = doc.pageItems.item('background');
app.findObjectPreferences = null;
app.findObjectPreferences.appliedObjectStyles = doc.objectStyles.item('Waqf');
waqfs = doc.findObject();
for (i = waqfs.length-1; i >= 0; i--) {
duped = background.duplicate();
duped.anchoredObjectSettings.insertAnchoredObject (
waqfs[i].parent.insertionPoints[0],
AnchorPosition.INLINE_POSITION
);
duped.clearObjectStyleOverrides();
}
Copy link to clipboard
Copied
Copy link to clipboard
Copied
The problem is that the background frame is anchored. Sorry, I should have mentioned that it should be floating, as it were, not anchored. You can simply copy and paste the frame that you placed, then it should work.
Copy link to clipboard
Copied
Thanks Peter.
It worked.