マクロツイーター

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

チョット BXjscls が新しくなった

今回の改修内容はバグ修正が主。

番号付リストの第2レベル

以前の版でこの XeLaTeX 文書をコンパイルすると……

\documentclass[xelatex,a4paper,ja=standard]{bxjsarticle}
\begin{document}
\begin{enumerate}
\item ほげほげ
  \begin{enumerate}
  \item アレ
  \item コレ
  \item ソレ
  \end{document}
\item ふがふが
\end{document}

……結果がアレ。

新しい版での結果はコレ。

この不具合の根本的な原因は zxjatype での \inhibitglue の実装にあるのだが、そっちはかなり厄介な問題なので、取りあえず BXJS クラスの方に応急措置をした。

別行立て数式での余計な警告

迂闊にも今まで気付かなかったのだが、以前の版では別行立て数式が出現する度に次のような余計な警告が出ていた。((この理由は、別行数式に入る時に自動的に \narrowbaselines が呼ばれて、これが中で現在値のフォントサイズ命令を実行しなおすからである。JS クラスでは対策が行われているが、BXJS はその部分が別の実装に置き換わっていてそこでの対策が抜けていた。))

LaTeX Font Warning: Command \normalsize invalid in math mode on input line 10.

新しい版ではこの警告が出なくなる。

ちなみに、本来はこの警告は、次のように数式中でフォントサイズ命令が使われた場合(これは不正)に出るものである。

$a + {\small B}$

このようなソースが現れた場合にはちゃんと警告が出る。((JS クラスではこの警告を完全に潰すことで対策しているので、このようなケースでも警告が出ない。BXJS クラスでは“\narrowbaselines の時だけ警告を潰す”ようにした。))

未知のオプション

以前の版では、次のように未知のオプションがあるとエラーが発生した。

\documentclass[xelatex,a4paper,hoge,ja=standard]{bxjsarticle}

新しい版ではエラーにならずに無視される。

……というと、エラーになる方が適切な動作のようにも思えるだろう。しかし、文書クラス(\documentclass 命令)のオプションは「グローバルオプション」としての役割があるので、文書クラス自体が解釈できないものでもエラーにしない方が便利なのである。

例えば、XeLaTeX で BXJS クラス(標準設定)を利用していたとして、fontspec パッケージに no-math オプションを指定したいとする。

\documentclass[xelatex,a4paper,ja=standard]{bxjsarticle}
\usepackage[no-math]{fontspec}% ダメ

ところがこれでは「Option clash」のエラーが発生する。何故なら、bxjsarticle 自身が fontspec をオプション無しで既に読み込んでいるからである。“既に読込済”の原因が(パッケージでなく)文書クラスにあるので、パッケージ読込の順番を入れ替えるといういつもの回避策は使えない。こういう場合の最終手段として、「当該のオプションをグローバルオプションとしておいて、内部での fontspec 読込時にそれを認識させる」ことができるのである。

\documentclass[xelatex,a4paper,no-math,ja=standard]{bxjsarticle}
\usepackage{fontspec}% こちらはオプション無し
% もちろん読込済なので \usepackage しなくてもよい

以前の版ではこの“最終手段”もエラーになって使えなかった。新しい版では使えるようになる。