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

(DTPtechNote:432) Re: QX3.3での「回り込みなし」は?



>適当な答え(^^;;;;; 

あぁ、しょうちゃん、QXPのスクリプトの書き方はすっかり忘れてしまったのね‥‥

たしかに複製したボックスの回り込みをなしにしてもちゃんと適用されないですね。
まぁ、バグなんでしょう。複製前になしにしてあとで戻せば大丈夫。
おまけでボックスを1行目の高さに合わせるルーチンも付けました。
普通なら line1HeightRealでいいんだけど、計算誤差でオーバーフローになることもあります。
まぁ、これに1mmぐらい足してやるのがオーソドックスなやり方ですが
今回は特別に計算誤差を完全に排除する方法も教えましょう
line1HeightLongを使うには programmer's toolというosaxが必要。

tell application "QuarkXPress 3.3" to tell document 1
	set bx to object reference of current box
	--set selection to null
	tell bx
		set oldRunaround to runaround
		set properties to {color:"シアン", shade:5, runaround:none runaround}
		duplicate it to before it
		set properties to {color:"シアン", shade:20}
		my line1HeightLong(bx) --要programmer's tool
		--my line1HeightReal(bx)
	end tell
	--元のボックスの回り込みを復帰
	set runaround of generic box after bx to oldRunaround
end tell

on line1HeightLong(bx)
	tell application "QuarkXPress 3.3" to tell bx
		tell line 1 --1行目の高さを求める
			set bl to baseline
			set dc to descent
		end tell
		--テキストとの間隔
		set inB to bottom of text inset
		--計算誤差をなくすために整数演算をする
		set bl to cast bl to "long"
		set dc to cast dc to "long"
		set inB to cast inB to "long"
		set h to cast (bl + dc + inB) to "FXMM"
		set height of bounds to h
	end tell
end line1HeightLong

on line1HeightReal(bx)
	tell application "QuarkXPress 3.3" to tell bx
		tell line 1 --1行目の高さを求める
			set bl to baseline as millimeters as real
			set dc to descent as millimeters as real
		end tell
		--テキストとの間隔
		set inB to bottom of text inset as millimeters as real
		set height of bounds to (bl + dc + inB) as millimeters
	end tell
end line1HeightReal