[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