マクロツイーター

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

新しい bxpdfver パッケージ(v0.3)の話

新しくなったらしい。

コレ is 何

以前の記事で紹介したように、bxpdfver パッケージを使うと、出力の PDF 文書について、以下のことが指定できる。

  • ①バージョンを指定できる。
    % 出力 PDF のバージョンを 1.4 にする
    \usepackage[1.4]{bxpdfver}
    
  • ②ストリームデータの圧縮を抑止できる。
    \usepackage[nocompress]{bxpdfver}
    
  • ③オブジェクトストリームの使用を抑止できる。
    \usepackage[noobjcompress]{bxpdfver}
    

今回の版において、サポート対象の全てのエンジン・ドライバ(pdfTeX/LuaTeX/XeTeX/dvipdfmx)において、全ての機能が使えるようになった。

dvipdfmx/XeTeX で nocompress/noobjcompress できる話

従来の bxpdfver では、このうちの②と③の機能は pdfTeX/LuaTeX においてのみサポートされていて、XeTeX および dvipdfmx では使えなかった。このような制限がある理由は非常に単純で、「そもそも XeTeX/dvipdfmx において文書中で②や③を指定する手段がなかった」からである。

しかし、(x)dvipdfmx の 20160307 版(TeX Live 2016 に含まれる版)において新しい special 命令が追加され、コマンドラインで行うオプション設定が文書ファイル内でも行えるようになった。

というわけで、bxpdfver では早速この機能を利用して、XeTeX と dvipdfmx を完全にサポートした。

% upLaTeX 文書
\documentclass[uplatex,dvipdfmx,a4paper]{jsarticle}% dvipdfmx するぞ
\usepackage[1.4,nocompress]{bxpdfver}% nocompress できる!
\begin{document}
ゆきだるま☃ ああゆきだるま☃ ゆきだるま☃
\end{document}
チョット注意

当然であるが、②と③の機能を利用するには新しい(20160307 版以降の)(x)dvipdfmx が必要である。例えば、TeX Live 2015 において上の文書をコンパイルすると、インストールされている dvipdfmx が古いのでエラーになる。

! Package bxpdfver Error: Cannot suppress compression, because the
(bxpdfver)                version of dvipdfmx in use (v.20150315) is too old
(bxpdfver)                (v.20160307 or later is required).

また現状では、“実装の都合”で、TeX エンジンにおいて extractbb と kpsewhich のシェル実行が許可されている必要がある(新しい TeX Live であれば既定でそうなっている)。例えば、TeX Live 2016 であっても uplatex を -no-shell-escape 付きで実行すると以下のエラーが出る。

! Package bxpdfver Error: Cannot suppress compression, because the
(bxpdfver)                version of dvipdfmx in use is unknown
(bxpdfver)                (v.20160307 or later is required).

その他の話

“新しい LuaTeX 対策”を行って正しく動作するようにした。(えっ今までやってなかったの!?)