Skip to content

Instantly share code, notes, and snippets.

@yarakos95
Created December 14, 2025 15:36
Show Gist options
  • Select an option

  • Save yarakos95/2738e76e7c4747367201316d93c9be43 to your computer and use it in GitHub Desktop.

Select an option

Save yarakos95/2738e76e7c4747367201316d93c9be43 to your computer and use it in GitHub Desktop.
ルビを振る必要のないものにはrubyを与えないようにするコマンド定義[LaTeX]
%% The MIT License Copyright (c) 2025 Yarakashi Kikohshi
%% luatexja-ruby あるいは pxrubrica を読み込むことを前提とする
%% \keyword{ 親|文|字 }[ ル|ビ| ]
%% 「送り仮名」にルビを振る際、`\ruby{送り仮名}{おくりがな}' では「り」までルビ振りが行われてしまう
%% `\ruby{送}{おく}り\ruby{仮名}{がな}' とするべきだが面倒だ
%% そこで、ルビが不要な親文字も含められるように \keyword を定義した。これで以下のように記述できる
%% \keyword{送|り|仮名}[おく||がな] ⇒ \ruby{送}{おく}り\ruby{仮名}{がな}
%% 実際、「送り仮名」の例は luatexja-ruby で上手くいくが、\ruby{宝|探|し}{たから|さが|} では上手くいかない
%% そもそも、空文字をルビに指定することが想定されていないと思われる
\NewDocumentCommand{ \keyword }{ m o }{
\group_begin:
{
\gtfamily
\IfNoValueTF{ #2 }
{ #1 }
{
\tl_if_in:nnTF { #1 } { | }
{
\seq_set_split:Nnn \l_tmpa_seq { | } { #1 }
\seq_set_split:Nnn \l_tmpb_seq { | } { #2 }
\seq_map_inline:Nn \l_tmpa_seq
{
\seq_pop:NN \l_tmpb_seq \l_tmpa_tl
\tl_if_empty:NTF \l_tmpa_tl
{ ##1 }
{ \ruby[fontcmd=\mcfamily]{ ##1 }{ \tl_use:N \l_tmpa_tl } }
}
}
{
\ruby[fontcmd=\mcfamily]{ #1 }{ #2 }
}
}
}
\group_end:
}
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment