シナリオ書式自動整形ツールです。
無償ですので、ご自由にお使い下さい。
配布も自由です。
本マクロの著作権は高山カツヒコに帰属します。
個人的にマクロプログラムを修正して使うのは構いませんが、修正したマクロは第三者に配布しないで下さい。
おきまりの文句で恐縮ですが、当マクロによって発生したいかなる障害も責任を負いかねますので、ソコの所はご了承ください。

改行のみで書かれた文書をこのマクロで処理すると――

――このように、セリフやト書きを自動的に検出し、シナリオ書式に整形してくれます。
ご存じの通り、シナリオの書式には一般的なフォーマットがあります。
● 縦書き、縦20文字。(原稿用紙からの通例。 尺の目安になる)
● シーンを表す『柱』の頭には ”□” ないしは ”○” などの印をつけ、前を一行空ける。
● 舞台説明や劇行動を表す『ト書き』の行は2文字下げる。(手書きの場合は、3文字下げる人も多い)
● 『セリフ』は、頭に人物名を書き、セリフは「」でくくる。 2行以上にわたる時は、2行目から1文字下げる。
● 基本的に200字詰め原稿用紙をベースにしたフォーマットで、時間にして、原稿用紙2枚を約1分と計算する。
書式サンプル
一太郎ビューア無料ダウンロード
このシナリオ書式、手書きの場合は、ト書きやセリフの字下げのために空白を空けるのに手間はかからないのですが、ワープロを使う場合は逆に、書式の整形に意外と手間がかかるものです。
一度体裁を整えた後で、2稿、3稿と直す時の体裁の手直しも、結構手間がかかります。
このマクロは、文書から自動的に“セリフ”、“ト書き”、“柱”を検出し、適切な字下げを自動的に行う、シナリオ書式用自動整形ツールです。
また、半角の“!!”や“!?”に縦中横を設定し、縦書き文書中で横に寝た文字を直します。
ペラ枚数の計算も自動で行ってくれます。
字下げの文字数も自由に設定できるので、コピーで配るアフレコ台本を作る時にも重宝します。
基本的に、JustSystem 社のワープロソフト、一太郎8以降で作動します。
7太郎以前のバージョンでは正常に動作しません。
機能
まず、このマクロの機能ですが、自動的に、
1. 『ト書き』の全行に、字下げをインデントで設定する。(文字数が自由に設定可能)
2. 『セリフ』の2行目以降に、字下げをインデントで設定する。(文字数が自由に設定可能)
3. 『柱』の2行目から、字下げをインデントで設定する。
そして、『柱』の前の行との間に1行の間を作る。
4. “×”で始まる行を一端消去して、“ × × ×”に置き換える。
5. 半角の “「」” を全角の “「」” に変換する。
6. 文章頭、文章末のよけいな空白を削除する。
7. 余計な改行コードを削除する。
8. !! や !? などの半角文字に縦中横を設定し、文字が横に転ばないようにする。
9. 200字原稿用紙換算の枚数を計算する。(一行の字数が20の時のみ)
10. マクロ終了後、自動的に印刷を始めることもできます。
このマクロとは直接関係はありませんが、一太郎やWordでは禁則処理の関係で文字数を20字に設定しておくと、19文字目で改行されてしまい作業上困る事があります。
裏技ですが、一太郎の場合は“スタイル設定”で、用紙を“コクヨ ケ-70”にすると、原稿用紙に準じた禁則処理になり、21文字目に禁則文字をぶら下げる事ができます。
しかし、そのままでは方眼目が邪魔ですから、“表示”メニューの中の“表示切り替え”の中の“グリッド詳細設定”で、グリッドの色を白にすると、方眼目を消す事ができます。
使用方法
まず、処理にかける原稿の書き方ですが、
● 『柱』の文頭は、 “□” か、 “○” で始めて下さい。
このマクロは、○や、□から始まる行を柱として認識し、処理します。
(他の記号にしたい時は、プログラムの9行目か10行目の “□” や “○” を、好きな記号に変更して下さい)
● 『セリフ』の最後は、全角の “
このマクロは、文章の最後が 全角の“」”で終わるっていると、それをセリフ行と認識して処理します。
『ト書き』を “
● “
それ以外の文では決して文頭に “
(他の記号にしたい場合は、プログラムの11行目の “
●
次に、操作方法ですが、
一太郎で、自動インデントをかける文書を開いた状態で、
後は、処理したい項目のチェックボックスの中にチェックを入れて、
処理の序盤に、縦中横に関してのみ確認を求められますので、
このマクロでは、全角の ” 」” で終わる文をセリフと判断しますので、 ”」” の後ろに余計な空白が付いていると、セリフと判断されなくなります。 また、半角の”」” でもセリフと判断されません。
ですので
一太郎の“画面表示設定”で、改行記号を表示するように設定しておくと、確認がしやすくて良いでしょう。
初稿に初めて処理をかける時は、全てのチェックボックスにチェックを入れておく事を推奨します。
2稿以降に処理をかける時や、訂正後の再処理の時には、必要な部分にだけチェックを入れておくと、処理時間が節約できます。
かけたインデントを解除するには、[CTR+A]で全てを選択し、“書式”メニューの中の“インデント/タブ”の中の“インデント解除”で、全て解除できます。
もし、バグとか、不都合とか、こうすると使いやすいとか、こういう機能が欲しいとか、その他ご意見ありましたらお知らせ下さい。
また思いついた時にでもバージョンアップします。
マクロのインストール方法
一太郎にこのマクロを設定する手順です。
まず、このページの下にある
(Windowsだと、右クリックでコピーを選択)
次に、一太郎を起動します。
(図 1)

すると
と、入力し、見出し欄に、
『 シナリオ書式のインデントを自動的に設定します。 柱の最初に"□"か"○"を。 セリフの最後には、"」"を付けてください。 "× × ×"以外の行頭には、決して"×"を使わないで下さい。 また、字数を20字に設定しておくと200字換算の枚数が計算されます。』
と、4行にわたって注意書きを入力します(図 2)。
(図 2)

そして
そのマクロ編集のエディットウィンドゥにカーソルを持っていき、クリップボードから先ほどのマクロプログラムを貼り付けます。
(Windowsでは、右クリックで貼り付け(P)を選択)
そして、
以上、終わりです。
(図 3)

そして
と、登録して、上記と同じ注意書きを入力します。
そしてマクロの種類を
以後、
(図 4)

(図 5)

マクロ本体
!!『シナリオ自動インデント設定』マクロ Ver1.04
!! for 一太郎8以降(SuperPlayRite)
!! Copyright2002/02/16 by高山カツヒコ(川崎ヒロユキ脚本研究所)
ErrorBreakMode(0,0,0)
KeyBreakMode(1)
%セリフ末 = "」" !!セリフ文の末の文字は"」"とします。
%柱記号A = "□" !!柱の先頭文字は"□"とします。
%柱記号B = "○" !!柱の先頭文字は"○"とします。
%バツ記号 = "×" !!先頭が"×"の行は、以下になおします。
%バツ行 = " × × ×"
!! == 使用説明 ==
CreateDialog(%m)
LocationDialog(%m, 3, 3,54,20)
CreateStaticString(%m,"S1",13,1,"シナリオ自動インデント設定 Ver1.04")
CreateStaticString(%m,"S2",21,3,"――使用説明――")
CreateStaticString(%m,"S3",9,5," シナリオの書式を自動成形するマクロです。")
CreateStaticString(%m,"S4",11,6,"□・○で始まる文は柱として前を一行開けます。")
CreateStaticString(%m,"S5",11,7,"」 で終わる文は、セリフとして、2行目から")
CreateStaticString(%m,"S6",9,8,"インデントで文字を下げます。(文字数指定可)")
CreateStaticString(%m,"S7",11,9,"×で始まる文はいったん削除して × × ×")
CreateStaticString(%m,"S8",9,10,"にします。(× × ×以外の文頭には、決し")
CreateStaticString(%m,"S9",9,11,"て × を使わないで下さい。削除されます。)")
CreateStaticString(%m,"S10",11,12,"上記以外の文はト書きと判断してインデント")
CreateStaticString(%m,"S11",9,13,"で字下げを行います。(文字数指定可)")
CreateStaticString(%m,"S12",11,14,"!!、!?の半角文字に縦中横を設定します。")
CreateStaticString(%m,"S13",11,15,"字数を20字に設定しておくと200字換算")
CreateStaticString(%m,"S14",9,16,"の枚数が計算されます。")
CreateStaticString(%m,"S15",11,17,"自動的に印刷の開始も出来ます。")
CreateOKButton(%m,"OB",23,19," OK ")
%a = DeleteAfterShowDialog(%m)
!! == チェックボックス(選択/解除)を選ぶダイアログ作成 ==
CreateDialog(%set)
LocationDialog(%set, 3, 3,54,21)
CreateStaticString(%set,"SS1",13, 01, "シナリオ自動インデント設定 Ver1.04")
CreateCheckBox(%set,"CB00",10,03," 半角「」を全角「」に変換する。(推奨)",1)
CreateCheckBox(%set,"CB01E",10,04," 文末の空白を整理する。(推奨)",1)
CreateCheckBox(%set,"CB01S",10,05," 文頭の空白を整理する。",0)
CreateCheckBox(%set,"CB02",10,06," 改行コードを整理する。", 0)
CreateCheckBox(%set,"CB03",10,07," ×行を整理する。", 0)
CreateCheckBox(%set,"CB04",10,08," 2文字以下の半角英文字に縦中横を行う。",0)
CreateCheckBox(%set,"CB05",10,09," 2文字以下の半角数字/括弧に縦中横を行う。",0)
CreateCheckBox(%set,"CB06",10,10," 半角 !!・!?・?? に縦中横を行う。",1)
CreateCheckBox(%set,"CB07",10,11," インデントを設定する。",1)
CreateNumericField(%set,"INDS",14,12, 2, 0, 15, 1,1)
CreateNumericField(%set,"INDT",14,13, 2, 0, 15, 2,1)
CreateStaticString(%set,"SS3",20,12,"セリフのインデント字数")
CreateStaticString(%set,"SS4",20,13,"ト書きのインデント字数")
CreateCheckBox(%set,"CB08",10,14," 枚数計算をする。(20字の時のみ)",1)
CreateCheckBox(%set,"CB09",10,15," 印刷を開始する。", 0)
CreateStaticString(%set,"SS5",19,16,"カーソル↑↓:項目の選択")
CreateStaticString(%set,"SS6",19,17,"スペースキー :選択/解除")
CreateStaticString(%set,"SS7",10,18,"作業中断は、Ctrl+Break/Shift+Ctrl+Pause")
CreateStaticString(%set,"SS8",13,19,"(98キーボードの場合、CTRL+STOP)")
CreateOKButton(%set,"OB",23,20," START ")
%a = DeleteAfterShowDialog(%set)
!! == 半角"「" "」" を 全角"「" "」" に変換 ==
if (%a("CB00")) = 1 then
Message("半角 「 を 全角 「 に変換します。",0)
ReplaceStringAll("「","「", 3, 0, 0)
Message("半角 」 を 全角 」 に変換します。",0)
ReplaceStringAll("」","」", 3, 0, 0)
end if
!! == 縦中横の設定 ==
if (%a("CB06")) = 1 then
Message("!! に、縦中横を設定します。",0)
SelectStringAll("!!",3,0,0)
SetTateChuYoko()
Message("!? に、縦中横を設定します。",0)
SelectStringAll("!?",3,0,0)
SetTateChuYoko()
Message("?! に、縦中横を設定します。",0)
SelectStringAll("?!",3,0,0)
SetTateChuYoko()
Message("?? に、縦中横を設定します。",0)
SelectStringAll("??",3,0,0)
SetTateChuYoko()
CancelAllRange()
end if
if (%a("CB04")) = 1 or (%a("CB05")) = 1 then
Message("半角文字に、縦中横を設定します。",0)
JumpStart()
RangeMode(1) !! 文字単位での範囲指定
RangeStart() !! 範囲指定開始
JumpEnd()
RangeEnd(1, 1) !! 範囲指定終了
SelectSetTateChuYoko((%a("CB04")*2)+(%a("CB05")), 0, 2)
CancelAllRange()
end if
!! == 空白の整理 ==
if (%a("CB01S")) or (%a("CB01E")) = 1 then
Message("文頭・文末の空白を整理します。",0)
JumpStart()
do
StartOfParagraph()
if (%a("CB01S")) =1 then
do
%GC = GetCharacter()
if %GC = " " or %GC = " " then
Delete()
end if
%GC = GetCharacter()
loop while %GC = " " or %GC = " "
end if
EndOfParagraph(1)
%Line = GetRow()
CursorLeft(1)
if %Line <> GetRow() then
NextLine(1)
else
if (%a("CB01E")) = 1 then
do
%GC = GetCharacter()
if %GC = " " or %GC = " " then
Delete()
CursorLeft(1)
end if
%GC = GetCharacter()
loop while %GC = " " or %GC = " "
end if
end if
NextParagraph(1)
loop until OutOfDocument() = true
end if
!! == 改行コードの整理 ==
if (%a("CB02")) = 1 then
Message("改行コードを整理します。",0)
JumpEnd()
InsertReturn(1)
JumpStart()
do
EndOfParagraph(1)
%Line = GetRow()
CursorLeft(1)
if %Line <> GetRow() then
NextLine(1)
Delete()
CursorUp(1)
end if
NextParagraph(1)
loop until OutOfDocument() = true
JumpStart()
NextParagraph(1)
do
StartOfParagraph()
if GetCharacter() = %柱記号A or GetCharacter() = %柱記号B then
InsertReturn(1,1)
end if
NextParagraph(1)
loop until OutOfDocument() = true
end if
!! == ×行の整理 ==
if (%a("CB03")) = 1 then
Message("×行を整理します。",0)
JumpStart()
do
if GetCharacter() = %バツ記号 then
Insert(%バツ行,1)
DeleteLine(1)
CursorUp(1)
end if
NextParagraph(1)
loop until OutOfDocument() = true
end if
!! == インデント設定 ==
if (%a("CB07")) = 1 then
Message("インデントを設定します。",0)
JumpStart()
do
if GetCharacter() = %柱記号A or GetCharacter() = %柱記号B then
Indent(1,2,0,-2,0)
else
EndOfParagraph(1)
%Line = GetRow()
CursorLeft(1)
if %Line <> GetRow() then
NextLine(1)
else
if GetCharacter() = %セリフ末 then
Indent(1,(%a("INDS"))*2,0,-(%a("INDS"))*2,0)
else
Indent(1,(%a("INDT"))*2,0,0,0)
end if
end if
end if
NextParagraph(1)
loop until OutOfDocument() = true
end if
!! == 枚数計算 ==
if (%a("CB08")) = 1 then
JumpEnd()
%layout = GetDocumentStyleLayout()
%LN = %layout("字数")
if %LN = 20 then
%LL = %layout("行数")
%Page = GetPage()
%Line = GetRow()
%LAll = %Line + (%Page - 1) * %LL - 1
Insert(" 【二百字換算")
Insert(Han(Ceil(%LAll / 10)))
Insert("枚(")
Insert(Han(%LAll div 10))
Insert("枚+")
Insert(Han(%LAll mod 10))
Insert("行)】")
RangeMode(2)
RangeStart()
RangeEnd()
SelectSetTateChuYoko(1,0,3)
end if
end if
!! == 印刷 ==
if (%a("CB09")) = 1 then
PrintDocument()
end if
!! == 終了メッセージ ==
beep
Message("作業終了しました。",0)
end
!! == プログラム・エンド ==