マクロツイーター

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

BXjscls がもっと新しくなった

……らしい。

TeX Live 2015 でも既に利用可能になっている。)

以下、v1.0a での変更点を述べる。

バグが直った

このバグがなくなった。素晴らしい。

基底フォントサイズをQ単位で指定する

BXJS クラスでは basejbase を用いることで、基底フォントサイズを任意の値に設定できる。そこで「本文の和文のサイズを 11Q」にしてみよう。

% XeLaTeX 文書
% v1.0aではOK, v1.0以前はNG
\documentclass[xelatex,b5paper,jbase=11Q,ja=standard]{bxjsbook}

実は、従来の版ではこれでは上手くいかない。jbase の値には任意の長さ値が指定できるが Q は XeLaTeX の有効な単位ではないからである。(つまり、代わりに jbase=2.75mm と書く必要がある。)

TeX Wiki の解説にある通り、BXJS クラスの標準設定では「Q」に相当する長さ命令として \jQ が用意されている。しかし残念ながらこの位置では標準設定が未完了であるため \jQ も使用できない。*1

この対策として、v1.0a では basejbase の値に限って「Q」単位の指定をサポートした。((ただし制限がある。BXJS クラスでは calc パッケージを読み込んでいるため、普通は長さの指定に calc の式(base=6pt*2 等)が使えるはずだが、Q 指定は特別扱いなので“式”での指定はできない。なお、(u)pLaTeX では Q が有効な長さ単位であるので 6Q*2 等も有効な calc 式である。))すなわち、上掲の例は v1.0a では期待通りに動作する。

pdfLaTeX + hyperref での日本語の文書情報

pdfLaTeX で BXJS クラスの標準設定を使用した場合、(bxcjkjatype を通して)CJKutf8 パッケージが読み込まれる。ここで、hyperref を利用して、PDF の文書情報(pdftitle 等)に日本語を含む文字列を設定すると、以前の版では正常に処理されずエラーが発生する。v1.0a ではこれに対する対策が行われているので正常に処理できるようになる。

% pdfLaTeX 文書, 文字コードは UTF-8
\documentclass[pdflatex,a4paper,ja=standard]{bxjsarticle}
\usepackage[unicode,colorlinks]{hyperref}
% v1.0以前ではNG, v1.0aではOK.
\hypersetup{pdftitle={文書タイトルです}}
\begin{document}\end{document}

ちなみに、v1.0 以前でエラーになるのは、要するに、「CJKutf8 ではそういう使い方はできない」からである。*2

% pdfLaTeX 文書, 文字コードは UTF-8
\documentclass[a4paper]{article}
\usepackage{CJKutf8}
\usepackage[unicode,colorlinks]{hyperref}
% これもダメ
\hypersetup{pdftitle={文書タイトルです}}
\begin{document}\end{document}

この場合、\hypersetup 命令全体を CJK* 環境で囲えば期待通りの動作になるようである。ただこれが“正しい方法”であるかは判然としない。

% pdfLaTeX 文書, 文字コードは UTF-8
\documentclass[a4paper]{article}
\usepackage{CJKutf8}
\usepackage[unicode,colorlinks]{hyperref}
\begin{CJK*}{UTF8}{ipxm}
\hypersetup{pdftitle={文書タイトルです}}
\end{CJK*}
\begin{document}\end{document}

BXJS クラスではなるべく CJK* 環境を明示的に書くことを避けたいと考えているため、特別に対策を行った。このため最初に挙げた例が正常に処理できる。

ただし、pdftitle 等の文書情報を指定する場合は必ず \hypersetup 命令を使う必要があることに注意してほしい。(このことは hyperref のマニュアルでも注意が述べられている。)次のようにパッケージオプションで指定すると上手くいかない。

% pdfLaTeX 文書, 文字コードは UTF-8
\documentclass[pdflatex,a4paper,ja=standard]{bxjsarticle}
% パッケージオプションでの pdftitle 指定はダメ
\usepackage[unicode,colorlinks,
  pdftitle={文書タイトルです}]{hyperref}
\begin{document}\end{document}

なお、v1.0 の機能により、unicode オプションも省略できることを補足しておく。

% pdfLaTeX 文書, 文字コードは UTF-8
\documentclass[pdflatex,a4paper,ja=standard]{bxjsarticle}
\usepackage[colorlinks]{hyperref}% unicode は不要
\hypersetup{pdftitle={文書タイトルです}}
\begin{document}
\section{節タイトルです}
本文です
\end{document}

*1:そもそも「オプションの値の中で“新しい制御綴”を使えるようにする」こと自体、LaTeX の仕様上無理なのである。

*2:「CJKutf8 でない CJK パッケージ」の場合は話はもっと複雑になる。