オンライン小説なオリジナル小説サイト うにたなで“秀丸マクロ”が含まれるブログ記事
あらすじ自動作成マクロを作っていたのですが、もう三ヶ月くらい頓挫しています。マクロ作成に時間をとれなくなって、それっきりになってしまっているのです。
あらすじ自動作成マクロっていっても、そんな大それたものじゃないんですよ。あらかじめ短い文章をいくつか用意してランダムにつなぎあわせるだけ。冒頭とラストだけは特別なテキストを差し込みますので、パッと見にはランダムに作成されたようには見えないようになっています。自動作成のあらすじですから小説を書くときには使えませんが、お遊びとしてはおもしろいかなと思ってたんです。
秀丸で動作する秀丸マクロでつくってたんですが、三ヶ月もほったらかしにしてますと、もうすっかり忘れてしまってます。また、いちからですわい。いろいろ試しながら完成させることにします。
いつまで続くかわかりませんが、あらすじ自動作成マクロについて、可能な限り記事にしたいと思います。たぶん、とちゅうで妥協しそうな気がしますが……。
小説は文章の連なりだ。ひとつひとつの文章が読みづらいと小説も読みづらくなる。では、読みやすい文章を書くためには、なにに注意しなければならないのか。
文の長さだ。
一文は50文字~60文字くらいが目安だといわれている。もちろん、一概には決めつけられない。60文字を超えていても、語順に気をつけてさえいれば読みやすい文章が書けるだろう。
だが、いちおうの目安があるのだから、推敲時のチェックに利用するのも手だろう。
そこで、秀丸エディタで使用できるマクロを作成してみた。一文の文字数をカウントするマクロだ。長すぎる文があれば別のファイルに抽出してくれる。タグジャンプを使えば元ファイルの該当箇所へジャンプできるようにもしている。活用していただきたい。
以下、引用部分が長文発見マクロである。
//長文発見マクロ。とりあえず作ってみたバージョン //一文が50文字を超えた場合、該当箇所を抽出するマクロ// 超えたくない文字数設定
// 行頭字下げの全角スペースをカウントしたり、文末の判定があやしかったりするので、2文字分の余裕をもたせる。
#moji = 52;// 初期設定
#hidemaru = hidemaruhandle(0);
$hidename = basename2;#count = 0; //文字数のカウント
#startx = 0; //カウント開始位置x
#starty = 0; //カウント開始位置y
#line= 0; //エディタ的に計算した行番号(タグジャンプ用)
#endx = 0; //カウント終了位置x
#endy = 0; //カウント終了位置y// テンポラリファイル作成
// マクロが完成するまでは見えるようにしておく。
newfile;
#hidetemp = hidemaruhandle(0);
// 文字のカウント開始
setactivehidemaru #hidemaru;
gofiletop;// EOFが見つかるまで処理を繰り返す
while (code != -1) {// タブと改行(0x0dを使う。\nはNG)が続くかぎりカーソル移動。
while (code == 0x0d || code == '\t') {
right;
}// カウント開始座標の記憶
#startx = x;
#starty = y;
#line = lineno;// 文末まで処理を繰り返す(ただし文末の判定があやふや)
while (code != '。' && code != '?' && code != '!' && code != 0x0d && code != -1) {// 文末でなければ文字数をカウントしてカーソル移動
#count = #count + 1;
right;}
// カウント終了座標の記憶
right; //句点ふくめてコピーするためのカーソル移動
#endx = x;
#endy = y;// カウントのチェック
if (#count > #moji) {// 該当箇所をコピー
beginsel;
moveto #startx,#starty;
$text = gettext(seltopx,seltopy,selendx,selendy);// テンポラリファイルにペースト
setactivehidemaru #hidetemp;
insert $hidename + "(" + str(#line) + "): " + $text + "\n\n";// 元のファイルに戻りカーソル移動
setactivehidemaru #hidemaru;
moveto #endx,#endy;}
// 文字数カウント初期化
#count = 0;}
// 抽出したテキストの整形
setactivehidemaru #hidetemp;
replaceallfast "」\\n","」",regular;endmacro;
なにぶん素人の作成した秀丸マクロなので、あまりエレガントではない。
「とりあえず動く」
という程度。実際に使っていただければ幸せだが、使用の際は自己責任でお願いします。
最近のコメント