LoginSignup
5
2

More than 3 years have passed since last update.

カクヨム風記法でルビと圏点(傍点)が振れるpandocフィルタを作った

Last updated at Posted at 2019-06-19

動機

皆さんはいつもドキュメントを書く時に何を使ってますか?

自分はmarkdown使ってます。いいですよね、markdown。pandoc使えばepubやpdfに変換できますし、VSCodeでそのプレビューもできる。

しかし、markdownだけではどうしようもない事がありました。それがルビです。

ルビを振るにはtexに変換した後に手動でコマンドを入れるか、htmlタグを手動で入れるぐらいしか方法がありません。これではwordに負けてしまいます。

先人(mod_poppo氏)の記事1によると、公式でpandocフィルタがあるらしいのですが、やはり自分もその記法が気に食わなかったので自分で作る運びとなりました。

要件

  • pythonで書く
    • 今度Windows10にも標準で付くらしいので環境構築が楽(多分)
    • 既にそれ用のライブラリがあったから
  • 先人のフィルタと同等以上の機能を付ける
    • でなきゃただの劣化コピーなのでわざわざ作る意味がない

記法

カクヨム記法をベースに使います。カクヨムは標準で圏点に対応しているため、これをそのまま流用するのが楽だと考えました。

なお、カクヨムでは区切り文字に半角縦棒|も使えますが、このフィルタでは使えません。ぶっちゃけ日本語入力中にわざわざ半角に切り替える事なんてそうそうないし大丈夫でしょう。(慢心)

また、markdownのマークアップ(強調、上付き、下付き等)と併用する事はできません。

また、このフィルタは長音記号と和文(ひらがな、カタカナ、漢字)にのみ対応しております。アルファベット及び記号には対応しておりませんので悪しからず。(追記: 長音記号以外の記号(unicodeで定義された約物)にも対応しましたが、LaTeXの特殊文字との競合は一切考慮しておりません。この辺は運用でカバーしてください。ここがアマチュアプログラマの限界です。

## 範囲を明示的に指定してルビを振る

あれは|雀《すずめ》です。

あれは|雲雀《ひばり》です。

### ひらがな・カタカナにも振れる

このコードは|読みにくい《くそったれ》です。

これは|スパゲティー《くそったれ》コードです。

## 漢字だけを対象にルビを振る

あれは雀《すずめ》です。

あれは雲雀《ひばり》です。

### これはそのまま出力される

このコードは読みにくい《くそったれ》です。

皆さんも|Linux《リナックス》を使いましょう。

## 一行中にいくつでも使える。

“事故”る奴は…“不運《ハードラック》”と”踊《ダンス》”っちまったんだよ…

## 圏点も振れる

《《アレ》》には気をつけてください。

### もちろんルビと併用可

《《アレ》》を処理《こわ》してください。

### アルファベットには対応していない

ワタシ 《《Linux》》 チョットデキル。

### 記号が入ってても使えない

《《彼は「あれが欲しい」と言った。》》

ついでにpxrubricaというLaTeXで使えるルビのパッケージがあるため、そちらのグループルビ・熟語ルビなど一部の機能も使えるようにしました。(markdownのfront-matterで指定する必要あり)

ちなみにこちらも区切り文字は全角縦棒で統一しています。半角だと動きません。

ルビ内に区切り文字を入れなければluatexja-rubyなど他のパッケージでも使用可能です。(区切り文字があるとエラーを吐く)

要するに\ruby{親文字}{ルビ}\kenten{親文字}にさえ対応していれば何でも使えます。(多分)

---
header-includes: # pxrubricaを読み込み、自動切替熟語モード(進入大)に指定
  - \usepackage{pxrubrica}
  - \rubysetup{<J>}
---

## グループルビ

あれは雲雀《ひばり》です。

あれは啄木鳥《きつつき》です。

## 熟語ルビ

それには苦労《く|ろう》しました。

ダウンロード・インストール

Githubの方からどうぞ。(投げやり)

(6/19 18:30追記)ルビ記法のエスケープに対応

なんか足りないなと思ったらルビ記法のエスケープ機能がありませんでした。以下の記法でエスケープできます。

単語|《よみがな》

実際の表示はこうなります。

単語《よみがな》

参考記事

5
2
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
5
2