2015年8月9日日曜日

bxjsbook.clsを試してみた。

BXjsclsのバージョン1.0が出たそうです。
すでにCTANのファイルが更新されていて、texlive2015でアップデートをかければ導入されるようです。バージョンが1.0になったことで、これまで無かったjsbook.clsに対応するクラスファイルbxjsbook.clsなどが追加されたので、早速試してみました。

私はこれまで主にjsbook.clsを使って数学ノートの作成をしていたのですが、jsbookクラスファイルは1行に40文字が基準となっていて、フォントサイズを変更すると余白が大きくなりすぎると感じていました。

例えばplatexで
\documentclass[dvipdfmx,b5paper,10pt]{jsbook}
でタイプセットすれば次のようなレイアウトになります。

いつもはこの状態で作成しています。
これを
\documentclass[dvipdfmx,b5paper,9pt]{jsbook}
にしてタイプセットすると

となります。この左側の余白が気になるので、奥村先生のpLaTeX2e 新ドキュメントクラスにあるように\textwidthやマージンを調整して
\documentclass[dvipdfmx,b5paper,9pt]{jsbook}
\setlength{\textwidth}{\fullwidth}
\setlength{\evensidemargin}{\oddsidemargin}
とすれば今度は

となるので、幅が広すぎると感じてしまうわけです。そこで短絡的に\textwidthを少しいじって
\documentclass[dvipdfmx,b5paper,9pt]{jsbook}
\setlength{\textwidth}{0.9\fullwidth}
\setlength{\evensidemargin}{\oddsidemargin}
と変更すると、
となりレイアウトが崩れます。こんな感じで、jsbookについてはレイアウトの調整が面倒だなという印象が出来てしまいきちんと調べることをしていませんでした。

bxjsbook.clsではこの辺の挙動が改善されていないかと思い試してみました。まず調整なしで
\documentclass[platex,dvipdfmx,b5paper,10pt]{bxjsbook}
と設定すると

となりました。これでは余白が大きすぎると思ったので、マニュアルを見て
\documentclass[platex,dvipdfmx,b5paper,9pt]{bxjsbook}
\renewcommand{\jsTextWidthLimit}{45}
\pagelayout{hmargin=20mm}
と設定すると

となりました。\jsTextWidthLimitで1行内の文字数の上限を設定するようになっていて、通常は40に設定されています。ここを設定し直すだけで文字数を変更できるので、jsbookに比べて遥かに設定が楽になっていると感じました。これからはbxjsbook.clsに完全に移行したいと思います。

ただ、bxjsbook.clsにしてから
LaTeX Font Warning: Command \normalsize invalid in math mode
という警告が大量に出るようになりました。別行立ての数式全体で発生しているようです。内部でフォントサイズの変更をしているのかな?

今のところplatex以外のlatexエンジンを使う必要性に迫られていないので、BXjsclsの特徴であるlatexエンジン非依存性の恩恵を享受することはなさそうなのですが、上記の理由だけでも移行する価値が十分にあるという話でした。

追記2015/09/10: texlive2015に含まれているbxjsbook.clsのアップデートがあり、バグフィックスが行われたようで別行立ての数式で発生していたエラーは無くなりました。