【InDesign/JavaScript】段間に罫線をひくスクリプト | Blue-Scre{7}n.net | よそいちのDTPメモ

トップページ » InDesign » 【InDesign/JavaScript】段間に罫線をひくスクリプト

【InDesign/JavaScript】段間に罫線をひくスクリプト

公開日:2014年9月20日 

組み方向、段数、段間を設定して、その設定に応じて段間に罫線を引くスクリプトです。線幅は0.1mmの決め打ちになっています。

段間罫を引きたいページの、最初のテキストフレームを選択して使用します。

動画を見る

注意点(2014.09.23追記)

スクリプトの「activePage」は、ドキュメント左下にある「ページボックス」に表示されているページ数を参照します。もしオブジェクトを選択してこのスクリプトを実行したとき意図したページと違うページに段間罫が引かれたら、選択オブジェクトのあるページとページボックスに表示されているページ数が一致しているか確認します。

ページボックスを確認

ダウンロード(2014.10.28修正版に差し替えています)

ここからダウンロード(boxにアクセスします。.zip)

txtFrUni-Column-Line.jsx」(テキストフレーム、フレームグリッドを連結した段組み用)のふたつが入っています。段組みの作り方に応じて使い分けます。

スクリプト本文(2014.10.28修正:罫線の色を[黒]に)

//4段組みまでの段間罫を引くスクリプト
//テキストフレーム(フレームグリッド)を連結して2-4段まで段組みしている場合に、段数、段間に応じて線をひけるスクリプト。リストから入力、選択式
//2014/09/01 v1
//20140918 v2
//20141028 v3
//動かす前には、そのページ始めのテキストフレームを選択しておいてください。

//選択しているものを変数に代入する
var selObj = app.selection[0]

//座標を取得
//[左上のy座標、左上のx座標、右下のy座標、右下のx座標]という形の配列形式
var y1 = selObj.visibleBounds[0] ; //配列は0からスタートする
var x1 = selObj.visibleBounds[1] ;
var y2 = selObj.visibleBounds[2] ;
var x2 = selObj.visibleBounds[3] ;

//組み方向を求めるドロップダウン
var CLWDL = app.dialogs.add({ name:"組み方向を選択してちょんまげ" });
var tmp0 = CLWDL.dialogColumns.add();
var CLWList = tmp0.dropdowns.add({stringList: ["縦組み","横組み"], selectedIndex:0, minWidth:120});
CLWDL.show();

//段数を求めるドロップダウン
var CLNDL = app.dialogs.add({ name:"段数を選択してちょんまげ" });
var tmp1 = CLNDL.dialogColumns.add();
var CNList = tmp1.dropdowns.add({stringList: ["2","3","4"], selectedIndex:0, minWidth:120});
CLNDL.show();

//段間を求める
var clmngt=prompt("段間の幅を単位無しで入力してちょんまげ",""); //段間を入力
var clmngtline=clmngt/2
//横組み用処理
if(CLWList.selectedIndex==1){
//テキストフレームの幅
var txtfWidth=x2-x1;

//2段組み用の線
function CLM2(){
myDoc = app.activeWindow.activePage;
myLineh = myDoc.rectangles.add();
myLineh.strokeWeight ="0.1mm";
myLineh.strokeColor=app.activeDocument.swatches.itemByName("Black");//[スウォッチ]パネルの黒を指定

myLineh.paths.item(0).entirePath = [ [x2+clmngtline,y1],[x2+clmngtline,y2] ];
myLineh.paths.item(0).pathType=PathType.openPath;//オープンパス
}

//3段組み用の線
function CLM3(){
myDoc = app.activeWindow.activePage;
myLineh = myDoc.rectangles.add();
myLineh.strokeWeight ="0.1mm";
myLineh.strokeColor=app.activeDocument.swatches.itemByName("Black");//[スウォッチ]パネルの黒を指定

myLineh.paths.item(0).entirePath = [ [(x2+txtfWidth)+(clmngt*1.5),y1],[(x2+txtfWidth)+(clmngt*1.5),y2] ];
myLineh.paths.item(0).pathType=PathType.openPath;//オープンパス
}

//4段組み用の線のために座標を求める
var CLM4point=(x2+txtfWidth*2)+(clmngt*2*1.5)-clmngtline;

//4段組み用の線
function CLM4(){
myDoc = app.activeWindow.activePage;
myLineh = myDoc.rectangles.add();
myLineh.strokeWeight ="0.1mm";
myLineh.strokeColor=app.activeDocument.swatches.itemByName("Black");//[スウォッチ]パネルの黒を指定

myLineh.paths.item(0).entirePath = [ [CLM4point,y1],[CLM4point,y2] ];
myLineh.paths.item(0).pathType=PathType.openPath;//オープンパス
}

//2段組みの場合
if(CNList.selectedIndex==0)
{
CLM2();
}

//3段組みの場合
if(CNList.selectedIndex==1)
{
CLM2();
CLM3();
}

//3段組みの場合
if(CNList.selectedIndex==2)
{
CLM2();
CLM3();
CLM4();
}
}

//縦組み用処理
if(CLWList.selectedIndex==0){
//テキストフレームの高さ
var txtfHeight=y2-y1;

//縦組み2段組み用の線
function CLMV2(){
myDoc = app.activeWindow.activePage;
myLinev = myDoc.rectangles.add();
myLinev.strokeWeight ="0.1mm"//線幅
myLinev.strokeColor=app.activeDocument.swatches.itemByName("Black");//[スウォッチ]パネルの黒を指定

myLinev.paths.item(0).entirePath = [ [x1,y2+clmngtline],[x2,y2+clmngtline] ];
myLinev.paths.item(0).pathType=PathType.openPath;//オープンパスに。選択しやすくするため
}
//縦組み3段組み用の線
function CLMV3(){
myDoc = app.activeWindow.activePage;
myLinev = myDoc.rectangles.add();
myLinev.strokeWeight ="0.1mm"//線幅
myLinev.strokeColor=app.activeDocument.swatches.itemByName("Black");//[スウォッチ]パネルの黒を指定

myLinev.paths.item(0).entirePath = [ [x1,(y2+txtfHeight)+(clmngt*1.5)],[x2,(y2+txtfHeight)+(clmngt*1.5)] ];
myLinev.paths.item(0).pathType=PathType.openPath;//オープンパスに。選択しやすくするため
}

//4段組み用の線のために座標を求める
var CLMV4point=(y2+txtfHeight*2)+(clmngt*2*1.5);
//縦組み4段組み用の線
function CLMV4(){
myDoc = app.activeWindow.activePage;
myLinev = myDoc.rectangles.add();
myLinev.strokeWeight ="0.1mm"//線幅
myLinev.strokeColor=app.activeDocument.swatches.itemByName("Black");//[スウォッチ]パネルの黒を指定

myLinev.paths.item(0).entirePath = [ [x1,CLMV4point-clmngtline],[x2,CLMV4point-clmngtline] ];
myLinev.paths.item(0).pathType=PathType.openPath;//オープンパスに。選択しやすくするため
}

//縦組み2段組みの場合
if(CNList.selectedIndex==0)
{
CLMV2();
}

//縦組み3段組みの場合
if(CNList.selectedIndex==1)
{
CLMV2();
CLMV3();
}

//縦組み4段組みの場合
if(CNList.selectedIndex==2)
{
CLMV2();
CLMV3();
CLMV4();
}

}

上に戻る

動画


タグ: | 


広告