マクロツイーター

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

新しい bxjscls の話をもうチョット

だいぶ間が空いてしまったが、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: “段落冒頭のフック”を無効にする。つまり空き補正が行われない。