Skip to main content
urouro
Known Participant
May 12, 2022
Answered

「スプレッド(見開き)ごとに連結解除するスクリプト」に変更する方法を教えてください。

  • May 12, 2022
  • 2 replies
  • 2183 views

「BreakFrame.jsx」「BreakFrame.applescript」(バージョン不問)など、どちらでも構いません。

「テキストフレームを連結解除するスクリプト」において、

「スプレッド(見開き)ごとに連結解除するスクリプト」に変更するには、

スクリプトのどの部分を書き換えれば良いでしょうか?

 

何卒よろしくお願いいたします。

This topic has been closed for replies.
Correct answer 琥珀 猫太郎

サンプルの「SplitStory.jsx」の

function mySplitStoryの部分を

// スプレッド毎に連結機能を追加(テキストフレームがページ上にないと上手くいきません)
function mySplitStory(myStory){
	var myTextFrame;
    // 前のテキストフレーム
    var myPreviousTextFrame;
    // 次のテキストフレーム
    var myNextTextFrame;
	//Duplicate each text frame in the story.(逆から順になっている)
	for(var myCounter = myStory.textContainers.length-1; myCounter >= 0; myCounter --){
		myTextFrame = myStory.textContainers[myCounter];
		myPreviousTextFrame = myTextFrame.duplicate();
        // 次のテキストフレームがundifinedではない
        if(myNextTextFrame != undefined){
            // テキストフレームがページにある
            if(myPreviousTextFrame.parentPage !=null && myNextTextFrame.parentPage != null){
                // 前のテキストフレームと次のテキストフレームが同じスプレッド
                if(myPreviousTextFrame.parentPage.parent.index == myNextTextFrame.parentPage.parent.index){
                    // 前に連結
                    myNextTextFrame.previousTextFrame = myPreviousTextFrame;
                }
            }
        }
        // 次のテキストフレームに前のテキストフレームを入れる
        myNextTextFrame = myPreviousTextFrame;
	}
}

に変えてみました。

 

どうでしょう?

2 replies

Inspiring
June 12, 2022

全て連結解除したのち、スプレッド毎に連結し直すというのはどうでしょう?

スクリプトに「連結し直し」を追加すれば良い様な気がします。

urouro
urouroAuthor
Known Participant
June 14, 2022

皆様のご厚意に感謝申し上げます。

 

今日、漸くmacOSの基本環境が整備完了しました。

そして、図書館から貸出3冊(Adobe関連)の返却期限が数日後に迫っています。

正確で新しくより多くの動作・用語を蓄積しなければと思っています。

もともとは編集校正ですので、明らかに組版実務の知識不足でもあります

体調を崩し在宅勤務就職ができるよう、再就職先でも皆様のお役に立てるよう、

「現代的な編集校正組版の手法」を蓄積開始中です。

(この1か月間ほどはMacに掛かり切りでしたが...)

再就職をし、以前のようにAdobe新製品を購入利用できるよう勉励しています。

状況が落ち着きましたら、ご報告させていただきます。

本当にありがとうございます。

Ten A
Community Expert
Community Expert
May 12, 2022

サンプルのやつですかね?
初めてソース読んでみたのですが、このスクリプトは選択範囲「app.selection」に対して処理を行います。コンストラクターネームによる振り分けが入っているので選択範囲を総当りでループしながらターゲットがTextColumnの場合のみそのparentのテキストフレームの最初のものを配列に収集し、myBreakFrames関数を介してmyBreakFrame関数にてリンクを切る処理を行います。
この選択範囲を対象にしてテキストフレームをリストアップする部分をスプレッド内のテキストフレームを収集するように書き換えるのが良いのではないかと思います。

urouro
urouroAuthor
Known Participant
May 13, 2022
理路整然としたご助言をありがとうございます。
 
私の説明不足でした。申し訳もございません。
私は10年程前に、美大でコンピュータ・情報処理関連の基礎(出版編集用)の勉強しましが、
スクリプトの書換えは、ほぼそれ以来で、基礎知識が欠落しています。
最近テキストを読み直し始めているのですが、このような無知識な状態です。
 
本件の着手動機は、
先に勤めていた会社で「全文を流し込みしスプレッドごとに切れる」と助かる書籍案件が多く、
持病の治療に目処がつき、就活中の今、余暇に試し始めたところです。
(MacOSのスクリプトエディタにてapplescriptで試行中です。)
自力では途方もなく、乞い願わくはこちらでご教示願えればと投稿させていただきました。
 
 
>スプレッド内のテキストフレームを収集するように書き換える
 
それを実行するには、どのようにしたら良いでしょうか?
 
「スプレッド内のテキストフレーム」を
「どこ」に「何」と入力・置換すれば良いのかなどをご教示いただけましたら幸いに存じます。
 
 
下記のスクリプトの一部分を書換え試行していますが、成功できません。
 
set myTextObjects to {text, text frame, insertion point, character, word, text style range, line, paragraph, text column}
 
if class of myObject is not text frame then
set myObject to item 1 of parent text frames of myObject
end if
tell myObject to duplicate
tell text 1 of myObject to delete
tell myObject to delete
Inspiring
May 19, 2022

良い題材だったので、javascriptで書いてみました。

長文だと、オーバーセットテキストの処理に時間がかかるかもしれません。