Obsidianで小説を書くTips:Templaterでルビや傍点用の記号を一発入力

タイトル通り!
最近ルビ振りたいなということがあるのでTemplaterスクリプト書きました。

Obsidianで日本語小説を書く設定 の環境で使うととても便利。

挿入できるのは、いわゆる「なろう」「青空文庫」形式のルビです。

プレビュー対応はプラグイン書かないと出来ないので今回はパス。
気が向いたらそのうち作ろうかなと思っていますが、あまり個人的需要がなくて……。

→と言いつつルビプレビューしながら編集できるプラグイン作りました。よろしければこちらもどうぞ

 Obsidian用の日本語小説用ルビプラグインをリリースしました

Templaterの導入方法は Obsidianで小説を書くTips:Templaterで章番号を自動挿入 などをどうぞ。

ルビ用記号を挿入するスクリプト

つかいかた

ルビを振りたいところを選択して呼び出すと、選択範囲がルビ記号で囲まれます。

百合が好き
 ↓ の「百合」を選択中に呼び出す
|百合《》が好き

《》の間にカーソルがセットされるので、「ゆり」だけ入れればいいってワケ!

スクリプト&導入方法

以下をInsertRubyなどの名前でTemplater用フォルダに保存。

ホットキーやボタンで呼び出すことを前提にしているので、
コミュニティプラグイン>Templater>Template hotkeys で
Add new hotkey for template から保存したファイルを選んでおいてください。

あとはショートカットキーを割り付けるなり、ツールバー等にボタンを追加するなりすればOK。

<%*
 const edit = this.app.workspace.activeLeaf.view.editor;
 // 選択開始位置と終了位置を取る
 const curF = edit.getCursor('from');
 const curT = edit.getCursor('to');
 // 開始位置に区切り記号を入れる
 edit.setCursor(curF.line, curF.ch);
 tp.file.cursor_append("|");
 // 終了位置の後ろにルビカッコを入れる ↑で1文字入れているので+1する
 edit.setCursor(curT.line, curT.ch+1);
 tp.file.cursor_append("《》");
 // 《》の間にカーソルを戻しておく
 const cur = edit.getCursor();
 edit.setCursor(cur.line, cur.ch-1);
%>

特にややこしいことはしていません。
だいたいコメントに書いてあるので言うことがない。

傍点を挿入するスクリプト

ルビのおまけで作ってみました。

つかいかた

記号の形式はルビと同じなので、使い方も同じです。

百合を信じろ
 ↓ の「信じろ」を選択中に呼び出す
百合を|信《・》|じ《・》|ろ《・》

こうなるってワケ!

スクリプト&導入方法

導入方法もルビと同じです。コピーして適当な名前で保存して使ってください。

<%*
 const edit = this.app.workspace.activeLeaf.view.editor;
 // 選択開始位置と終了位置を取る
 const curF = edit.getCursor('from');
 const curT = edit.getCursor('to');
 const cnt = edit.posToOffset(curT) - edit.posToOffset(curF); // オフセットに変換し選択範囲の文字数を取る
 edit.setCursor(curF.line, curF.ch); // 開始位置にカーソルセット
 // 選択範囲について一文字ずつ処理する
 for(let c=0; c<cnt; c++) {
  tp.file.cursor_append("|"); // 頭に区切り記号を入れる
  cNow = edit.getCursor();
  edit.setCursor(cNow.line, cNow.ch+1); // 点を振る文字の後にカーソル移動
  tp.file.cursor_append("《・》");
 }
%>

以下はコードの話なのでそこに興味ない方には関係ありません。

getCursorで取れるのはカーソル位置を示すEditorPositionというもの。
この中身はlineとch(何行目か / その行の中での何文字目か)に分かれています。

これはそのままだと「傍点をここからここまで振る」と単純に扱いにくい。
ので、posToOffsetで、ファイルの先頭から何文字目か? の数値に変換。
単純な文字数を取っています。

あとは区切り記号を入れて、傍点を振る文字の後ろにカーソル移動し、傍点を挿入し……を繰り返しているだけ。

ちなみにこれらのスクリプト、改行(折り返しではない)をまたいで使おうとするとたぶん変なことになると思いますが、日本語を書く者としてそもそもそんなことはするなと思うので特に対応しません!(思想強め)

おわりに

ちなみに私は概ねAndroidで文章を書いているので、画面下のモバイルツールバーなどにだいたいのTemplaterスクリプトを登録して、Commanderプラグインでアイコンを変えています。

(適したアイコンがなくて若干無理矢理感もありますが、慣れます……)

ただ、Commanderプラグインでモバイルツールバーのアイコンを変えるには一工夫いります。
私は下記サイトの記事を参考にさせていただきました。

当サイトに載せてきた内容全部盛りのObsidian、かなり最強な執筆環境になってあまりカスタマイズの余地もなくなったので更新の間が空いてしまいましたが、今後とも何か思いついたら更新していきたいと思います。

それでは良いObsidianライフをʕ ·ᴥ·ʔノシ

コメント

タイトルとURLをコピーしました