…がリリースされた。
- Package BXjscls (CTAN) 1.4版。
数式中の和文文字の出力のサポート
(以下の話は“標準設定”(standard 和文ドライバ)を前提にする。)
周知の通り、(u)pLaTeX では「数式の一部として和文文字を出力する」((念のため言っておくが、「数式の一部として和文文字を出力する」と「数式の中に日本語を含める(そしてその中で和文文字を出力する)」は全く違う話であり、後者はよく行われるが、前者が行われることは非常に稀である。例えば、「p: 奇素数」のような表記の中の“奇素数”は日本語であって数式ではない(一般に、この用法の“:”の右側には自然言語が書かれる)。よってこれを LaTeX の数式中に含める場合は“p\colon\text{奇素数}
”と書くことになる。))ことができる。jsclasses バンドルの文書クラス(JS クラス)ではこの機能が普通に利用できる。
% upLaTeX 文書 \documentclass[uplatex,a4paper]{jsarticle} \begin{document} \[ % <の>を数式の一部として使っている e^{の} = \sum_{k=0}^{\infty} \frac{の^k}{k!} = 1 + の + \frac{の^2}{2!} + \frac{の^3}{3!} + \cdots \] \end{document}
これに対して、従来の BXjscls の文書クラス(BXJS クラス)では、数式中の和文文字をサポートしていないので、先の例のような数式は通らなかった。
% upLaTeX 文書 \documentclass[uplatex,dvipdfmx,ja=standard, a4paper]{bxjsarticle} \begin{document} \[ e^{の} = \sum_{k=0}^{\infty} \frac{の^k}{k!} = 1 + の + \frac{の^2}{2!} + \frac{の^3}{3!} + \cdots \] \end{document}
この bxjsarticle クラスの文書を(uplatex で)コンパイルすると以下のエラーが出る。
! Not two-byte family. l.6 e^{の } = \sum_{k=0}^{\infty} \frac{の^k}{k!} ?
数式の和文に対応してなかった理由は単純で「単にサボっていたから」である。
BXJS クラス + (u)pLaTeX で和文の数式ができるようになった話
新しい BXJS クラスでは、エンジンが (u)pLaTeX の場合に JS クラスと同等の「和文数式ファミリ」の設定が行われるため、前掲の文書が正常にコンパイルできるようになる。出力結果は最初に挙げた JS クラスの文書と同じである。
なお、JS クラスでは和文数式ファミリの設定を無効化する“disablejfam”というクラスオプションがあるが、この仕様は((u)pLaTeX では)BXJS クラスでもサポートされる。
だけど和文があまり数式でない話
ただし、飽くまでも「JS クラスと同等」であるため、数式としては組版があまり適切でない場合があることに注意。*1
\[ (の + x)^2 = の^2 + 2のx + x^2 \]
次の BXJS + LuaLaTeX での組版の結果と比較してほしい。
なお、LuaTeX-ja パッケージはそれ自身が和文数式ファミリの設定を行うので、LuaTeX-ja が使われている限りは数式中の和文文字は常に使える状態にある。従って、旧版の BXJS クラスでももちろん使える。無効化はできないので、disablejfam オプションはサポートされない(指定すると警告が出て無視される)。
BXJS クラス + XeLaTeX で和文の数式ができるようになった話
エンジンが XeLaTeX の場合は、既定では数式中の和文文字はサポートされないが、オプションに“enablejfam=true”を指定するとサポートされるようになる。
% XeLaTeX 文書, UTF-8 \documentclass[xelatex,ja=standard,enablejfam=true, a4paper]{bxjsarticle} \begin{document} \[ (の + x)^3 = の^3 + 3の^2x + 3のx^2 + x^3 \] \end{document}
この機能は xeCJK の \xeCJKsetup{CJKmath=true}
を実行することで実現されている。これ自体の仕様について自分があまり理解しておらず、思わぬ副作用が出るおそれがあるため、既定で有効化することを見送っている。
\mathmc とか \mathgt とかの話
和文数式フォント命令の \mathmc
と \mathgt
は、エンジンが (u)pLaTeX(disablejfam でない場合)か LuaLaTeX の場合は“本物の”数式フォント命令として働く。それ以外の場合は、「内部で一時的にテキストに切り替えて出力する」というフォールバック的な動作を行う。従って、これらの“和文数式フォント命令”の引数の中では常に(pdfLaTeX であっても)和文文字が使えることになる。
なお、この「テキストに切り替える」のには既定では \mbox
が使われるが、これは添字の中では適切な出力にならない。amstext(または amsmath)パッケージが読み込まれている場合は \text
命令が使われるので、そちらの方が望ましい。
enablejfam オプション、disablejfam オプション
- enablejfam=true : 数式中の和文文字をサポートする。
- enablejfam=false : 数式中の和文文字をサポートしない。
- disablejfam : “enablejfam=false”と同値。(JS クラスとの互換のため。)
- enablejfam=default : 当該エンジンでの既定の状態に戻す。
既定の値はエンジンごとに異なり、(standard 和文ドライバでは)以下のようになっている。
- (u)pLaTeX では既定で true だが false に変更できる。
- XeLaTeX では既定で false だが true に変更できる。
- LuaLaTeX では常に true である(enablejfam=false を指定すると警告が出る)。
- pdfLaTeX では常に false である(enablejfam=true を指定すると警告が出る)。
※minimal 和文ドライバでは enablejfam/disablejfam は無視される。
その他諸々
- 全角幅((「全角幅」とは
\zw
のこと。もっと厳密にいうと\jsZw
のこと。))の水平空きを出力する命令\zwspace
を新設した。 - アレに対する修正を行った。