073.【Id】[基本段落]があたっている段落を[段落スタイルなし]にする
挙動
- inddを開いた状態で実行する
- 「(^.+$|\r)」で正規表現検索を行う
- 2.で取得した段落のうち、[基本段落]があたっているものに対し[段落スタイルなし]をあてがう(あたっている段落スタイルは変えるが、現状の体裁を保持する)
InDesignの検索置換を利用しているため、ロックされたレイヤーにあるテキストフレーム・ロックされたテキストフレームは対象としない。
コード
var main = function () { app.scriptPreferences.enableRedraw = false; var doc = app.activeDocument; var tgts = myFindGrep("(^.+$|\r)"); for (var i = 0; i < tgts.length; i++) { if (tgts[i].appliedParagraphStyle.name === "[基本段落]") { tgts[i].applyParagraphStyle(doc.paragraphStyles.item("[段落スタイルなし]"), false); } } function myFindGrep(rgx) { app.findGrepPreferences = NothingEnum.NOTHING; app.findGrepPreferences.findWhat = rgx; var result = app.findGrep(); app.findGrepPreferences = NothingEnum.NOTHING; return result; } }; app.doScript(main, ScriptLanguage.JAVASCRIPT, undefined, UndoModes.FAST_ENTIRE_SCRIPT, File.decode($.fileName.replace(/^.+\//, "")));
メモ
段落スタイルの変更について
appliedParagraphStyleプロパティを変更するやり方ではオーバーライドを保持できない。
一方 applyParagraphStyle(using, [clearingOverrides]) メソッドは第二引数 [clearingOverrides] で既存の属性を消去するかどうか指定できる。
- true:既存の属性を消去する(規定値)
- false:既存の属性を消去しない
積み残し
- テキスト終端文字(#のような制御文字で示されるあれ)だけの行が[基本段落]のままになってしまう。
検索でテキスト終端文字がとれないようなので、地道に全テキストフレーム・表を再起処理で探っていって、linesひとつひとつのapplyParagraphStyleを見ていくのが正解?
(テキスト終端文字だけの行はparagraphsではなくlines扱い) - 段落スタイルのなかで、基準スタイルが [基本段落] になっているものを [段落スタイルなし] にする。