This is #3 of 5 series Tips about the vertically address scripting (wiki : Horizontal and vertical writing in East Asian scripts).
To use this tips, it is necessary that you have a Japanese version of Adobe InDesign because it use one of the build-in feature of that only available in Japanese version of Adobe InDesign.
As basic knowledge and tips of the vertical address scripting, please refer to my old post regarding the vertical address scripting.
[JP]
これは宛名の縦組みに関するTipsシリーズのパート3です。本Tipsの使用は日本語版のAdobe InDesign使用を前提としています。
また、宛名の縦組みに関する基本方法は過去の投稿「宛名の縦書き」を参照して下さい。
How to change text frame depends on how many digit in the customer address as maximum.
住所に含まれる番地や部屋番号などの連続数値の桁数に応じて表示するテキストフレームを変更する
This tips if for user who have below request.
このTipsは以下の様な要望をお持ちのユーザー向けです。
- Need to display customer address in different text frame which have different text formatting, only when address contain multiple digit number in it.
- 住所の見栄えを良くする為に、住所に複数桁数の数字が含まれている場合に、異なるテキスト設定を行ったフレームにて表示させたい
What you can achieve with this tip?
このTipsで何が出来るのか?
This tips make you able to display variable text in different text frame where you set different text formatting.(Although you can see text in each text frames in below screen shot, it is only for better understanding of differences between each Tips. By Using this VBScript, you can divide text frame for display customer address, especially depends on whether address contain any number larger than 100(3 digit) or not.)
本Tipsを使用すると、以下の様に複数桁数を含む住所を処理する際に別のテキストフレームにて表示する事が可能です。(それぞれのTipsによる表示結果の差異を明示する為に全てのテキストフレームに住所を表示させていますが、実際にこのTipsを使用した場合には、住所が3桁以上の連続する数値を含む場合にのみ、ターゲットのテキストフレームに住所を表示させる事が可能です。レイヤー・バリアブルと併せて使用することで、表示するテキストフレームを変更出来ます。)
Preview :
プレビュー:
As you can see, the text frame in the right side(nogtips3) display entire of customer address by using “MOJI-TSUME” which is the menu only available on Japanese version of InDesign:-)
So you can see 3 digit number which looks use similar width than other single characters.
ご覧のとおり、一番右の今回のTipsを適用したテキストフレームでは、文字に「文字ツメ」の効果がかかっており、連続する3桁以上の数を表示するにあたっても、別の数値と近い文字幅にて表示しています。
Setup
設定方法
Please refer to former post of this series regarding basic setting.
縦組みのテキストフレームに関する基本的設定方法は過去の投稿を参照してください。
- Create variables at outside of page layout. Those variables will be used for script.
ページのレイアウト範囲外にスクリプトで使用するためのバリアブルを作成します。
- Create text frame for vertically scripting.
宛名用に縦組みのテキストフレームを作成します。 - Register all frames in DSM-Bridge as variable element.
(Since this database has multiple column that each column has small part of recipient address. So I made another variable that can integrated 4 column that all records has value in it)
Please refer to my last postregarding the assignment for Case1 and Case2.
全てのテキストフレームをDSMブリッジへ登録します。
(本Tipsは複数の項目にて住所情報を保存しているDBの使用を想定しています。ですので、始めにある程度住所情報を結合して表示するための代替用バリアブル項目([[Address]])を作成しています。またこのバリアブルへの割り当て設置段階で、ハイフン「-」を全角マイナス「ー」に置き換える設定を行います。詳細についてはTips第1弾を参照して下さい) - Setup for “nogtips_Multi_Digit_Address” :
For this text frame, we set “MOJI-TSUME” with 100 as its value. So all text will be displayed by shrinking space beteen each character.(*This feature only available on Japanese version of Adobe InDesign)
バリアブル[[nogtips_Multi_Digit_Address]]の設定:
このテキストフレームは「文字ツメ」効果を設定し、テキストが詰まって表示されるように設定します。これにより、複数桁数の数値を縦中横で表示する際でも、ある程度全体の文字幅を縮めて表示する事が可能になります。
- Edit VBScript
Let’s edit vbscript. I made script that named as “Vertical Script3”. Here is the entire of script code.
VBスクリプトの編集:
それではVBスクリプトを編集します。今回は以下のようにしました。
function VerticalScript3() Dim address, s, t S=Var.GetS("Case2") Set address = new RegExp address.pattern = *\d{3,}* '今回は明示的に表示するフレームを変更する方法を取るので以下条件に合わない場合Falseとしていますが、適宜変更してください。 'To control a using text frame more explictly, it force to false. Threrefore please change it to suit with you. If address.Test(s) Then Var.PutS "nogtips_Multi_Digit_Address", s VerticalScript3=True Else Var.PutS "nogtips_Multi_Digit_Address", "" VerticalScript3=False End If End function
This script handles all text like below.
It search if there is any number that larger than 3 digit by using Regular Expression. If it find any number that higher than 99, then it will assign a customer address to “nogtips_Multi_Digit_Address”. If not, then it assign just empty value.
正規表現を使って住所に3桁以上の数値が含まれている場合にのみ、バリアブル[[nogtips_Multi_Digit_Address]]に対して住所を割り当てます。それ以外の場合は空の値を割り当てます。 - Layer Variable :
To change display text frame depends on whether address contain multiple digit number in it, we set the condition for InDesign Layer. So layer that have a variable [[nogtips_Multi_Digit_Address]] will be used only when it match with condition.
バリアブル・レイヤー:
住所に複数桁数の数値が含まれている場合にのみ表示するテキストフレームを変更します。今回はバリアブル・レイヤーを使用します。
- Edit variable property :
The last thing and most important is to specify the order of variable process. If you don’t set it, or set wrong order, you will get unexpected result or simply it won’t work. Please set correct order depends on your variable assignment and script that you set.
バリアブルのプロパティ設定を行う:
最後にして、一番重要なTipsはバリアブルに対する「値を受け取る順序設定」です。この設定が正しくない、正しい順序で設定されていない場合は、予期せぬ表示結果を得る可能性があります。ですので、確実に順序立てて値を受け取れるように各バリアブルに対してプロパティを設定していきます。
Here is the exactly order in this sample.
各バリアブルの値を受け取る順序設定は以下の通りです。
”Address” = 1
“Case1″ = 2
“Case2″ = 2
“Case3″ = 2
“Vertical Script” = 3
“nogtips_Address” =4
“Vertical Script 3” = 3
“nogtips_Multi_Digit_Address” = 4