TeX & LaTeX Advent Calendar
2015/12/01 〜 2015/12/25参加者募集中!! ☃
〠
bxokumacro パッケージとは、コレに入っている何か。
- BXptool パッケージバンドル (奥底)
奥村氏の「新ドキュメントクラス」(JSクラス)のパッケージにオマケとして入っているのが okumacro パッケージで、それを他のエンジンでも使えるように某 ZR 氏が改造したのが bxokumacro パッケージである。
okumacro が素晴らしい件
(bx)okumacro パッケージでどんなことができるかというと……。
\挨拶
大変素晴らしい。*1
……ではあるが、恐らくこのパッケージで一番よく用いられている機能は、ルビを出力する \ruby
命令であろう。
\ruby{小}{こ}\ruby{鳩}{ばと}\quad \ruby{鶺鴒}{せきれい}\quad \ruby{雷鳥}{らいちょう}\quad \ruby{百舌鳥}{もず}
他の“高機能な”パッケージと比べると柔軟性には劣るが、入力に気を付けていれば日本語として“まともな”ルビ出力が得られ、何よりの利点として、仕様が非常に単純なので誰でも容易に使える。
bxokumacro がアレな件
okumacro パッケージは pLaTeX 専用であるが、それを改造して他のエンジンでも使えるようにしたのが bxokumacro パッケージである。大概の機能(例えば Enter キー(リターンキー)の図を出力する \return
命令など)は“日本語処理”と無関係なので本当にどのエンジンでも(pdfLaTeX でも)使えるが、先述の \挨拶
や \ruby
は“日本語処理”ができる環境が必要になるので、これらは“日本語できる LaTeX”でのみサポートされている。bxokumacro が作られた当時(2009 年)に“日本語できる LaTeX”といえば (u)pLaTeX の他に「XeLaTeX + zxjatype パッケージ」の環境があったので、これらの 2 種類の環境がサポートされていた。
しかし、何せ相当に古いパッケージのため、最新の XeLaTeX では正常に動作しなくなっていたようである。*2
bxokumacro が更新された件
というわけで、新しい zxjatype に対応させる改修を行った。
- BXptool パッケージバンドル (GitHub/zr-tex8r) 0.4 版。*3
実はそれだけではない。そもそも bxokumacro を作った動機が「(u)pLaTeX 以外のエンジンをサポートする」ことであり、今では“日本語できる LaTeX”の種類も増えているので、それらもサポート対象に加えた。具体的には、次の環境で \ruby
などの“日本語絡み”の機能が使える。(“日本語絡み”でないものは当然全てのエンジンで使える。)
- pLaTeX および upLaTeX。
- XeLaTeX + zxjatype パッケージ。
- LuaLaTeX + LuaTeX-ja パッケージ。
- pdfLaTeX 上で、BXJS クラス(BXjscls パッケージの文書クラス)を“標準設定”(standard 和文ドライバ)で用いている場合。ただし以下のような制限がある。
というわけで、bxokumacro を使うと、pdfLaTeX でも挨拶やルビができる。
% pdfLaTeX 文書, 文字コードは UTF-8 \documentclass[pdflatex,a5paper,ja=standard]{bxjsarticle} \usepackage{bxokumacro} \begin{document} \AISATSU \par\bigskip \ruby{小}{こ}\ruby{鳩}{ばと}\quad \ruby{鶺鴒}{せきれい}\quad \ruby{雷鳥}{らいちょう}\quad \ruby{百舌鳥}{もず} \end{document}
(u)pLaTeX 用のルビ出力パッケージは幾つもあり、また LuaLaTeX + LuaTeX-ja では luatexja-ruby パッケージが使えるが、XeLaTeX + zxjatype や pdfLaTeX + BXJS の環境については、現状では bxokumacro の \ruby
が日本語的ルビを“まともに”出力するための唯一の手段といえるだろう。*5
*1:文言の中の「○○の候」の部分は、コンパイル時点の月により自動的に適切な語が選ばれる。素晴らしい。
*2:xeCJK パッケージが 2.x 版から 3.x 版への更新で全面的にコードが書きなおされていて、これに伴い zxjatype も 0.5 版から 0.6 版でほぼ全面的に改訂された。そして、bxokumacro は zxjatype の 0.5 版以前の実装に依存していた。
*3:このような互いに関係の薄いパッケージを集めたバンドルでバンドル自体にバージョンを持たせるのは無理があるような気がしてきた。検討の要あり。
*4:倍角ダーシを出力する命令。
*5:pdfLaTeX + BXJS は CJK パッケージを用いているので、CJK 付属の ruby パッケージを使うことができるが、このパッケージの機能で“まともに”ルビを出力するのは相当困難であると思う。なお、XeLaTeX や LuaLaTeX においては ruby パッケージは絶対に読み込んではいけない。