だいぶ間が空いてしまったが、1.7 版の bxjscls の話の続き。
hyperref の unicode オプションの“固定”の廃止
従来の BXJS クラスでは hyperref の unicode オプションについて、次のような“固定”の処理を行っていた(詳細)。
- (u)pLaTeX では無効に“固定”する、すなわち、hyperref で
unicode=true
が指定されても無視されるようにする。 - LuaLaTeX では有効に“固定”する、すなわち、
unicode=ttue
を指定し、その後でunicode=false
が指定されても無視されるようにする。
オプションの“固定”はかなり強引な方策であるが、これは本来は「Pandoc の標準テンプレートを無事に通す」という特殊な目的のものであった。ところが今ではその目的のための「Pandoc モード」が存在する。従って新版では、unicode オプションの“固定”は Pandoc モード以外では一切行わないという方針に変更した。代わりに、unicode が確実に不適切な値になっている場合にエラーを出すようにした。
すなわち、Pandoc モード以外で次のような動作になる。
- (u)pLaTeX では、
unicode=true
が指定されるとエラーを出す。- なお、hyperref と新しい pxjahyper を併用する場合は、unicode オプションが使用可能になる。このため、新しい pxjahyper では BXJS のエラーを抑止する処理も入れている。
- pdfLaTeX では unicode を既定で有効にする。
- LuaLaTeX では unicode を既定で有効にし、
unicode=false
が指定されるとエラーを出す。 - XeLaTeX では unicode を既定で有効にする。
- ただし XeTeX が古い(0.99992 版より前)場合は何もしない。
従って、BXJS の autodetect-engine
を使って「どのエンジンでも通る」文書を作りたい場合、hyperref の unicode オプションキーについては「一切指定しない」ことにすればよい。
※この「hyperref の unicode オプションに関する“お節介”」はクラスオプション hyperref-enc=False
で全部無効化できることにも注意。
空白関連の命令
幾つかの命令が新設された。既存のものと合わせて列挙しておく。
\zwspace
:[一般] 全角幅の空き。\jaenspace
:[一般] 半角幅の空き。\jathinspace
:[一般] 和欧文間空白。\>
:[一般] 非数式モードでは和欧文間空白を出力する。。- jlreq クラス互換の命令:
\‹全角空白›
((つまり、“\
の後に全角空白”の名前の命令)):[一般] 全角幅の空き。((jlreq クラスとは異なり、単に\hspace{\jsZw}
と等価である。))\jaspace{‹名前›}
:[一般] 引数zenkaku
で全角幅、nibu
で二分幅、shibu
で四分幅の空きを出力する。
jaspace-cmd クラスオプション
上記の和文空白関連の命令を(再)定義するかはクラスオプションで選択できる。ただし(諸般の事情のため)\zwspace
は常に定義される。
jaspace-cmd=true
(既定): 空白関連の命令を定義する。jaspace-cmd=false
: 空白関連の命令を定義しない。
everyparhook クラスオプション
段落冒頭の括弧類の空き補正のために入れる“段落冒頭のフック”をどのように実現するか。(詳しい話は後日に……書ければいいね。)
everyparhook=compat
: JS クラスと同じ方式。everyparhook=modern
:\everypar
を乗っ取る方式。LuaTeX-ja の jsclasses 互換クラスと同様。everyparhook=none
: “段落冒頭のフック”を無効にする。つまり空き補正が行われない。