WindowsのKindleアプリから文章をコピーすると、改行せずに1行で張り付けられてしまうようです。
前回に引き続き今回は英語の例文をサクラエディタのマクロをJavaScriptせ作成して作成しました。
文章の状態を確認すると
24. I have to act like I belong. この 場 に 相応しく 振る舞わ ない と。 25. They’ re just a little blah! あの 人達、 つまらない のよね。 26. He’ s gonna take over this project. 彼 に この 仕事 を 引き継い で もらお う。
一つの項目で見ると番号 → 英文→日本文の順番で書かれてました。
まずは番号の前で改行
var str2 = str.replace(/(\d+.)/g,"\n$1");
数字+.(ドット)+スペースの構成になっていたので、正規表現で検出して、改行コードを前につけて置換します。検出時に()カッコの中にいれたところが$1に置き換わります。
英文の後で改行
var str3 = str2.replace(/(\.+|\!+|\?+)\s(\W)/g,"$1\n$2");
英文の最後は「.」か「!」か「?」で終わります。
いずれの文字もエスケープをつける必要があります。
「!」は2つ続くこともあるので、+(1つ以上繰り返し)をつけました。
英文が2つに分かれていることがあると最初の文の最後も検出するので、\W(単語を構成する文字以外)を指定することにより、日本文を検
ただし、日本文の最初が半角英数字の場合、検出できませんが数があまり多くないので、あとで手動で対応します。
(\.+|\!+|\?+)が$1になり、日本文の先頭文字が(\W)で検出され$2に置き換わります。結果間のスペースは削除されます。
キーマクロ記録
この後、番号.日本文(改行)英文(改行)の形にしたかったので、これは「キーのマクロ記録」で操作しながら記録しました。
//キーボードマクロのファイル
GoLineTop(0); // 行頭に移動(折り返し単位)
WordRight_Sel(0); // (選択)単語の右端に移動
WordRight_Sel(0); // (選択)単語の右端に移動
Cut(0); // 切り取り
Down(0); // カーソル下移動
Paste(0); // 貼り付け
GoLineTop(0); // 行頭に移動(折り返し単位)
GoLineEnd_Sel(0); // (選択)行末に移動(折り返し単位)
Cut(0); // 切り取り
Up(0); // カーソル上移動
Paste(0); // 貼り付け
Char(13); // 文字入力
最後に
目的は前回の記事に書いた通り、Kindleの英語の例文をプリントアウトしたいことが目的です。
200個の例文をマクロを作って加工し終わるのに約5時間かかりました。しかし、文章加工にマクロを使うことができたし、再利用もできるかもしれないので無駄ではありません。