マクロツイーター

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

BXjsclsが新しくなった(v2.0a)

2020-03-25にBXjsclsの新しいメジャーバージョンとなる2.0版がリリースされた。TeX Liveについては、2020-04-10にリリースされたTeX Live 2020の初期版が2.0版となる。現在の最新版は2.0a版である。

メジャー改版であるため後方互換性を損なう仕様変更が含まれる。注意してほしい。

※2.0→2.0a版の違いは、一部の非推奨機能への警告の追加のみである1

【仕様変更】LuaLaTeX/XeLaTeXで既定の和文フォントが「原ノ味フォント」に変わった

TeX Live 2020において、updmapでの和文(日本語)のフォントの既定値がipaexからharanoajiに変更された2。つまり、(u)pLaTeXの標準和文フォントとして使われる物理フォントが「IPAexフォント」から「原ノ味フォント」変わることになる。これに追随する形で、LuaTeX-jaにおける既定の和文フォントも「IPAexフォント」から「原ノ味フォント」に変更された。

そこで、BXjsclsクラスもこれに追随して、LuaLaTeX/XeLaTeX上の動作における既定の和文フォントを「IPAexフォント」から「原ノ味フォント」に変更することにした3

% LuaLaTeX文書; UTF-8
% フォント指定(jafont)が無い
\documentclass[lualatex,ja=standard,a4paper]{bxjsarticle}
\begin{document}
☃っ☃☃☃っ☃っ☃~~♪
\end{document}

フォント指定(jafontオプション)のない上掲の文書をlualatexでコンパイルした場合、旧版では「IPA明朝」で出力される。

f:id:zrbabbler:20200418211117p:plain
旧版での出力(IPAex明朝)

対して、新版(2.0版以降)では「原ノ味明朝」で出力される。

f:id:zrbabbler:20200418211258p:plain
新版での出力(原ノ味明朝)

なお、和文フォントのプリセットの種類はjafontで指定できるので、「IPAexフォント」で出力したい場合はクラスオプションにjafont=ipaexを指定すればよい。

% LuaLaTeX文書; UTF-8
%フォント指定(jafont=ipaex)がある
\documentclass[lualatex,ja=standard,jafont=ipaex,
    a4paper]{bxjsarticle}
\begin{document}
☃っ☃☃☃っ☃っ☃~~♪
\end{document}

LuaLaTeX・XeLaTeX以外の話

(u)pLaTeX上の動作の場合は、BXjsclsのクラスは和文フォント(のフォントマップ)の指定を何も行わず、従ってDVIウェアの設定(TeX Liveの場合はupdmapの設定)がそのまま適用される。従ってTeX Live 2020であれば、LuaLaTeX/XeLaTeXと同様に「原ノ味フォント」が使用される4

pdfLaTeXで和文を扱う場合は和文フォントを「Type1形式のサブフォント」として用意する必要がある。現状では「原ノ味フォント」のType1形式サブフォントは存在しないので、従来の「IPAexのType1形式サブフォント」(ipaex-type1パッケージ)が引き続き既定値として用いられる。

【仕様変更】\ifdraft が廃止された

開発者用命令5\ifdraftは1.2版(2016-08-01)において既に非推奨の扱いになっていたが、2.0版において廃止された。代わりの開発者用命令として\ifjsDraftが用意されているので、そちらを利用する必要がある。

※ユーザレベルで「draftモードであるかを判定したい」場合は、ifdraftパッケージの使用を推奨する。

\ifdraftはjsclassesの機能を継承したものであるが、本家のjsclassesにおいては\ifdraftは2016年7月に(非推奨ではなく)廃止されている。「ifdraftパッケージと衝突する」という問題があったためである。

【仕様変更】geometry 4.x版のサポートを廃止した

geometry 4.x版の使用は1.2版(2016-08-01)において既に非推奨となっていたが、2.0版ではgeometryの4.x版のサポートが廃止となり、5.0版(2010-02-12)以降が必須となる。

イロイロ非推奨になった

既に1.9版のリリースのときに予告されていたように、旧版との互換のための機能の多くが2.0版で非推奨の扱いとなった。(廃止ではない。)

“ja”オプションの省略は非推奨

エンジンが(u)pLaTeX以外の場合に和文ドライバ指定(jaオプション)を省略した場合はminimalが指定されていた。

% XeLaTeX文書; UTF-8
\documentclass[xelatex,a4paper]{bxjsarticle}
\usepackage{zxjatype}
\setCJKmainfont{IPAexMincho}
\setCJKsansfont{IPAexGothic}
\begin{document}
{\TeX}言語\textsf{危険}、ダメゼッタイ。
\end{document}

以前の版において既にjaオプションを明示することが“推奨”されていたが、2.0版において正式に、省略が非推奨となった。2.0a版においてはjaを省略すると以下のような警告が出る。

Class bxjsarticle Warning: The option 'ja' is MISSING!!
(bxjsarticle)              So 'ja=minimal' is assumed as fallback, but
(bxjsarticle)              such implicit setting is now DEPRECATED!
(bxjsarticle)              You should write 'ja=minimal' explicitly,
(bxjsarticle)              if it is intended.

以前の動作を保ちたい場合はja=minimalを指定すべきである。

% XeLaTeX文書; UTF-8
% 和文ドライバを明示的に指定する
\documentclass[xelatex,ja=minimal,a4paper]{bxjsarticle}
\usepackage{zxjatype}
\setCJKmainfont{IPAexMincho}
\setCJKsansfont{IPAexGothic}
\begin{document}
{\TeX}言語\textsf{危険}、ダメゼッタイ。
\end{document}

ただし実際には「minimalモード」ではなく「standardモード」を使う方が妥当6であることが多いはずである。今まで“ja無し”で使っていた人は「standardモード」への移行を検討してほしい。

% XeLaTeX文書; UTF-8
% standardモードの方が便利
\documentclass[xelatex,ja=standard,jafont=ipaex,a4paper]{bxjsarticle}
\begin{document}
{\TeX}言語\textsf{危険}、ダメゼッタイ。
\end{document}

※エンジンが(ujpLaTeXである場合はjaの既定値はstandardであり、この場合はjaの省略は非推奨ではない。

“dvipdfmx-if-dvi”オプションは非推奨 → “dvi=dvipdfmx”

現在のBXjsclsには「DVIモードでのみ適用されるドライバ指定」を行うためのdviオプションがあるが、昔はdvi=dvipdfmxに相当するdvipdfmx-if-dviというオプションが利用されていた。

% エンジン自動判別, DVIモード時はdvipdfmxドライバを指定
\documentclass[autodetect-engine,dvipdfmx-if-dvi,ja=standard]{bxjsbook}

dvipdfmx-if-dviは2.0版で非推奨の扱いとなり、2.0a版では警告が出る。

Class bxjsbook Warning: The old option 'dvipdfmx-if-dvi' is DEPRECATED
(bxjsbook)              and may be abolished in future!
(bxjsbook)              You should write 'dvi=dvipdfmx' instead.

代わりにdvi=dvipdfmxを指定すべきである。

% エンジン自動判別, DVIモード時はdvipdfmxドライバを指定
\documentclass[autodetect-engine,dvi=dvipdfmx,ja=standard]{bxjsbook}

その他もろもろ非推奨

以上に述べたものの他、以下のオプションが非推奨となる。

  • (no)js(→disguise-js=<真偽値>)
  • (no)zw(→use-zw=<真偽値>)
  • (no)precisetext(→precise-text=<真偽値>)
  • (no)simplejasetup(→simple-ja-setup=<真偽値>)
  • textwidth-limit=<整数>(→textwidth-limit=<整数>zw)
  • magstyle=mag/real/xreal(→magstyle=usemag/nomag/nomag*)
  • jadriver=<名前>(→ja=<名前>)
  • noscale(→scale=1)

  1. 2.0a版においても、非推奨の全てで警告が出るわけではないので注意。

  2. 「原ノ味フォント」自体(haranoajiパッケージ)とupdmapでのサポート(ptex-fontmapsの改版)は2020年2月にCTANに登録されているため、TeX Live 2019の最終版にも含まれている。

  3. なお、updmapの和文フォント既定値のharanoajiについては「2004JIS字形」が指定されている。従来の「IPAexフォント」はAJ1非対応のフォントであり字形選択が無効であるため自動的にフォントの既定である2004JIS字形が選ばれていたが、「原ノ味フォント」はAJ1対応のフォントであり字形選択が有効(かつ必須)になる。そこで従来の2004JIS字形を保つために「2004JIS字形」を選択している。LuaTeX-jaやzxjatype(XeTeX)では字形選択は可能であるが必須ではない。LuaTeX-jaの和文フォントの既定では字形選択を行わず、結果的に「原ノ味フォント」の既定である2004JIS字形が選ばれる。BXjsclsのLuaLaTeX/XeLaTeX上の既定設定も同様である。要するに、旧版でも新版でも既定の和文フォントは2004JIS字形となる。

  4. なお、LuaLaTeX上の動作の場合はLuaTeX-jaの新しい既定値は既に「原ノ味フォント」であるが、XeLaTeXと動作を合わせるために「原ノ味フォント」を明示的に設定している。従って、古いLuaTeX-jaと組み合わせた場合でも既定値は「原ノ味フォント」である。

  5. 実態はTeX言語のif-トークンである。なので、ユーザレベルでもifthenパッケージを介して\ifthenelse{\boolean{draft}}...という形で一応利用できていた。

  6. TeX Wikiの解説をみればわかるように、BXjsclsの多くの追加機能はstandardモードでのみサポートされる。