マクロツイーター

はてダから移行した記事の表示が崩れてますが、そのうちに直せればいいのに(えっ)

PXrubrica の新しいやつ(v1.1)

W32TeXTeX Live では既に更新されている。

バグがチョット減った

前側の禁則が破れていた

pxrubrica の仕様としては、ルビ付文字列前後の禁則処理は「大抵は上手くいく」((複雑な場合には禁則が破れることがあり、その場合がユーザが補助設定“*”を補う必要がある。))ことになっている。ところが、以前の実装では前側の禁則処理が全く機能していなかった。(自分が pTeX の禁則ペナルティの挿入処理について誤解をしていたのが原因。)

% pLaTeX文書
\documentclass[a4paper]{jsarticle}
\usepackage{pxrubrica}
\begin{document}
\parbox{15zw}{% 行長を全角15文字分に
こうして、世の中にまた一つの
「\ruby[g]{ネ申}{かみ}Excel」が
誕生したのである。}
\end{document}

(旧版の出力)

新版ではこれが修正されて、禁則が保たれるようになる。

(新版の出力)

両側ルビと小書き文字変換の組合せがアレだった

両側ルビ(\truby)で小書き文字変換を有効(基本モード f)にした場合、下側(縦組では左側)のルビで小書き文字変換が効いていなかった。

% pLaTeX文書
\documentclass[a4paper]{jsarticle}
\usepackage{pxrubrica}
\begin{document}
例えば
% 'f'指定で"かっこう"→"かつこう"となる
\truby[f]{閑古鳥}{かっこう}{かんこどり}とか
% だけど下側ルビには効かなかった…
\truby[f]{閑古鳥}{かんこどり}{かっこう}とか。
\end{document}

(旧版の出力)

新版ではちゃんと両方のルビに小書き文字変換が適用される。

(新版の出力)

欧文ゴースト処理がサッパリ使えなかった

以前の記事でチョット触れたように、pxrubrica では既定ではゴースト処理を利用しないが、\userubyjghost でゴースト処理を利用する設定に切り替えることができる。(ゴースト処理の使用・不使用は一長一短がある。)

\userubyjghost和文ルビを対象とするものだが、同様に欧文ルビ(\aruby)についても(欧文の)ゴースト処理を有効にする \rubyuseaghost という命令がある。ところが、実際にこの設定を使うと、\aruby で常にエラーが起こってしまい、全く使い物にならなかった。

% pLaTeX文書
\documentclass[a4paper]{jsarticle}
\usepackage{pxrubrica}
\rubyuseaghost % 欧文ゴースト処理を有効化, したいが…
\begin{document}
求む、\aruby{\TeX}{アレ}とか
\aruby{Ti\emph{k}Z}{ヒャッハー}に詳しい人。
\end{document}
<code>! Undefined control sequence.
\pxrr@aprologue -&gt;\ifpxrr@aghost \pxrr@aghost 
                                              \fi \begingroup \pxrr@abodytru...
l.5 求む、\aruby
                {\TeX}{アレ}とか
? 

新版では欧文ゴースト処理が使えるようになる。

(新版の出力)

ちなみに、ゴースト処理を用いない場合、特に欧文ルビの場合は、前後の文字と辻褄を合わせるための補助設定を自分で行う必要がある。(既定では、前後ともに行分割禁止で空き挿入無しとなる。*1

% '.'は空白無しで行分割許可
% ':'は和欧文間空白入りで行分割許可
求む、\aruby[.-:]{\TeX}{アレ}とか
\aruby[:-:]{Ti\emph{k}Z}{ヒャッハー}に詳しい人。

従って、「欧文ルビだけ(進入しないことにして)ゴースト処理を有効にする」という判断が妥当な場合もあるだろう。

LuaLaTeX・XeLaTeX できるようになった

これまで pxrubrica は(少なくとも公式には)pLaTeX と upLaTeX のみをサポートしていたが、新版では LuaLaTeX・XeLaTeX もサポートされる。特に、LuaLaTeX + LuaTeX-ja および XeLaTeX + xeCJK の環境では、全ての機能が利用できるはずである。*2

% XeLaTeX文書, 文字コードUTF-8
\documentclass[xelatex,ja=standard,a5paper]{bxjsarticle}
\usepackage{pxrubrica}
% Lohit Fonts: https://pagure.io/lohit
\newfontfamily{\fTaml}[Script=Tamil]{Lohit-Tamil.ttf}
\begin{document}
% やっぱり「XeLaTeXで日本語」は面倒くさいね
\noindent\mbox{}%
「わー、このカレー、すごく\ruby{}{かれ}ぇー」\\
「何だ、その\ruby{}{こけ}\ruby{}{}した
ような古いギャグは」\\
「まあ。でも、よく考えてみると、『辛い』という言葉は
英語の\aruby[:-:]{curry}{カリー}が日本に入ってくる
ずっと前からあるわけだよな」\\
「だから何?{}\\
「もしかして、日本語の起源は英語なのかも!{}\\
「何だ、また唐突に……。大体、英語のcurry自体が
元々はどこかインドの言葉だろ。何せカレーだから。
えーと……、ウィキペによると、元はタミル語\aruby[:-]{\fTaml கறி}{カリ}、らしい」\\
「わかった!{} 日本語はタミル語だ!{}\end{document}
\Entry{latha.ttf}
\Entry{vijaya.ttf}

*1:この仕様の根拠は、「和文ルビでは前後に普通の和文文字がある状態を既定とする」のに合わせて「欧文ルビでは前後に普通の欧文文字がある状態を既定とする」と定めたからである。また、「不適切に行分割が発生する」よりも「不適切に行分割が抑止される」方がまだ“安全”である、という考えもある。

*2:日本語組版用パッケージを利用しない場合、例えば「和欧文間空白」などの概念がそもそも存在しないことになるため、「和欧文間空白を自動挿入する」という機能は働かなくなる。