Re: QuarkXpress Find/Change with style sheets?
Re: QuarkXpress Find/Change with style sheets?
- Subject: Re: QuarkXpress Find/Change with style sheets?
- From: Hans Haesler <email@hidden>
- Date: Mon, 30 Apr 2001 21:43:23 +0200
On Mon, 30 Apr 2001, Graham Sprague wrote:
>
Does any one know how to script the find/change function in QuarkXpress?
<snip>
>
I am using a tag theme. I have text in to Quark with tags like "@Head" or
>
>"@Body" or "@Price" then I am following each section with a hard return.
>
Then I can search and replace each tag with "" (Nothing) and a style sheet
>
of my choice. It all works great but I have no idea where to begin with
>
trying to script this.
Graham,
your example didn't made it through (Chuq is very good at trashing
attachments -- fortunately, I'd say ;-).
Anyway, I don't understand why you don't tell your typist to add a colon
on each tag. Like this: "@Head:". Then you'd have a valid tag of a style
sheet name (without the quotes), and when you import the file, the style
sheet converts the formatting of the text. Provided, that the style spec
"Head" exists. No need for Find/Replace.
Maybe you insist on doing it the hard way, then you could do this:
---
tell document 1 of application "QuarkXPress 4.11"
activate
tell current box
tell story 1
repeat with i from 1 to count paragraphs
tell paragraph i
if it starts with "@Head" then
delete (characters 1 thru 5)
set style sheet to "Head"
else if it starts with "@Body" then
delete (characters 1 thru 5)
set style sheet to "Body"
else if it starts with "@Price" then
delete (characters 1 thru 6)
set style sheet to "Price"
end if
end tell
end repeat
end tell
end tell
end tell
---
A much faster solution would be: save the text as XPress Tags in a file,
read the file in a variable, do a search/replace using the text item
delimiters, write the string to the file and replace the story in the box:
---
set tagsPath to ((path to startup disk) as string) & "test.xtg"
tell application "QuarkXPress 4.11"
activate
set searchList to {"<\\@>Head", "<\\@>Body", "<\\@>Price"}
set replaceList to {"@Head:", "@Body:", "@Price:"}
set convert quotes to true
set import styles to true
tell document 1
tell current box
save story 1 in tagsPath as "TEXT"
end tell
set aString to read file tagsPath
repeat with i from 1 to count of searchList
set sStr to item i of searchList
set rStr to item i of replaceList
set aString to my searchReplace(sStr, rStr, aString)
end repeat
try
open for access file tagsPath with write permission
set eof of file tagsPath to 0
write aString to file tagsPath
close access file tagsPath
on error
close access file tagsPath
end try
tell current box
set story 1 to alias tagsPath
end tell
end tell
end tell
on searchReplace(s, r, t)
set AppleScript's text item delimiters to (s)
set aList to (every text item of t)
set AppleScript's text item delimiters to (r)
set t to aList as string
set AppleScript's text item delimiters to ""
return t
end searchReplace
---
This works for me. However, I'm not happy with using the "@" character
as a visible tag. Look at what we must do for finding it...
Regards,
Hans
---
Hans Haesler | email@hidden