[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

(DTPtechNote:875) Re: properties of margin preferences of page x



書き忘れてた。
とりあえず、汎用性なし。

tell application "InDesign CS_J"
	tell document 1
		tell document preferences
			set toji to page binding
		end tell
		set tmp to {}
		repeat with i from 1 to count every page
			set page_obj to page i
			set {m_top, m_left, m_bottom, m_right} to my get_margin(page_obj, toji) --ページのマージンをGET
			set tmp to tmp & {(name of page_obj), m_left}
		end repeat
		get tmp
	end tell
end tell

--ページのマージンをgetする
(*
のだけど、InDesign CSのバグで見開きスプレッドの右も左も同じ値になる<あほ。
めんどうなことをしても、どうせ完全ではないので、
とりあえず、ノンブルの偶数、奇数と綴じ方向だけで判定することにする。
もうバカくさいったらない。
だから、スプレッドの中に3ページ以上あるようなものは対応しない。
ノンブルにアラビア数字以外を指定してあるものも対応しない。
セクションプレフィックスがなにか入っているとダメポ。
*)
to get_margin(page_obj, toji)
	tell application "InDesign CS_J"
		--ページ数が渡されたとき用
		if class of page_obj is not page then
			set page_obj to page (page_obj as integer) of active document
		end if
		
		if exists page_obj then
			try
				set page_number to (name of page_obj) as integer
			on error errMsg number errNum
				my my_error("おそらく、ノンブルスタイルがちがいます" & return & errMsg)
			end try
			
			--マージンをゲット		
			set {top:m_top, left:m_left, bottom:m_bottom, right:m_right, parent:p_obj, column count:c_count, column gutter:c_gutter} to properties of margin preferences of page_obj
			
			--該当ページは奇数か偶数か
			set odd_f to my my_odd(page_number)
			--お返事
			if toji = left to right and odd_f then --左綴じでかつ、奇数ページ
				return {m_top, m_left, m_bottom, m_right, p_obj, c_count, c_gutter}
			else if toji = right to left and not odd_f then --右綴じでかつ偶数ページ
				return {m_top, m_left, m_bottom, m_right, p_obj, c_count, c_gutter}
			else --それ以外はページマージンの左右入れ替え
				return {m_top, m_right, m_bottom, m_left, p_obj, c_count, c_gutter}
			end if
		else
			return false --pagenumberがなければfalseを返す
		end if
	end tell
end get_margin



----------------------------------------------○渡された数字が奇数ならばtrue,偶数ならばfalseを返します。
to my_odd(num)
	if num mod 2 = 0 then
		return false
	else
		return true
	end if
end my_odd

----------------------------------------------○エラーダイアログ-->スクリプト停止
to my_error(err_mess)
	set err_mess to err_mess as Unicode text
	beep 2
	display dialog err_mess buttons {"スクリプト停止"} default button 1 with icon 0
	error number -128
end my_error