pxruburicaパッケージとLuaLaTeXにおいて任意の1文字をコマンドのように扱うことができるnewunicodecharパッケージ、それに\defにおけるパターンマッチ風引数の取り方を組み合わせて、青空文庫の注記方式(|親文字《ルビ》という記法)に似たルビの 振り方ができるのではないかと思い付きました。
そこでこのようなマクロを作ってみました。
https://gist.github.com/hakuoku/3e235ef4a14282095e41e4ef30770a80
質問したいのは、ここから\x@my@rubyマクロにオプション引数を設定するにはどうしたらいいかということです。
最終的には|郭公《かっこう》[Jf]を、\ruby[Jf]{郭公}{かっこう}という形に展開したいです。(第三引数は省略可能)
原始的に
\def\x@my@ruby#1《#2》{\@ifnextchar[{\x@my@ruby@a}{\x@my@ruby@b}}
\def\x@my@ruby@a#1《#2》[#3]{\ruby[#3]{#1}{#2}}
\def\x@my@ruby@b#1《#2》{\ruby{#1}{#2}}
とするだけでは、
Argument of \x@my@ruby has an extra }.
<inserted text>
\par
l.36 |郭公《か���こう》
というエラーが出てしまいました。
省略可能なオプション引数を設定する方法について、ご教授頂けましたら幸いです。
(環境はWindows、質問時で最新のTeX Live、TeXWorksでLuaLaTeXを走らせています)