Acetaminophen’s diary

化学に関すること,TeXに関すること,ゆきだるまに関すること。

TeX Live 2015 で変わったこと、変わらなかったこと

先日正式にリリースされた TeX Live 2015 であるが、アップデートするメリットはなんだろうか? というわけで、ここに「TeX Live 2015 で変わったこと、変わらなかったこと」の気づいた点をまとめてみる。とはいっても、すべて網羅する気は全くなく、一般ユーザである僕の独断と偏見で選んでいる。

f:id:acetaminophen:20150614155359p:plain

f:id:acetaminophen:20150614155415p:plain

  • TeX Live 2015 released | There and back again
  • Twitter より:

 

変わったこと (1):dvipdfmx の進化

まずは、dvipdfmx がいろいろ進化したことを書いておくべきだろう。

(u)pLaTeX + dvipdfmx で複数ページ PDF の2ページ目以降を利用可能に

pdfLaTeX では従来から複数ページ PDF の2ページ目以降を \includegraphics することができたが、dvipdfmx は extractbb が2ページ目以降の BoundingBox 情報を取得できなかったため不可能だった。それが TeX Live 2015 以降および W32TeX [2014/12/03] 以降では、以下のようにして可能になった。

\documentclass{jsarticle}
\usepackage[dvipdfmx]{graphicx}
\begin{document}
\begin{figure}[htb]
  \centering
  \includegraphics[page=1,clip]{fig.pdf}
  \caption{1ページ目です}
  \includegraphics[page=2,clip]{fig.pdf}
  \caption{2ページ目です}
  \includegraphics[page=3,clip]{fig.pdf}
  \caption{3ページ目です}
\end{figure}
\end{document}

詳細は以下のリンクを参照:

dvipdfmx が /DecodeParms を含む PDF を処理可能に

Adobe 純正品の Illustrator, Distiller 等を使って PDF を作成した場合にとりわけ多い現象であるが、しばしば PDF-1.5 以上ではそのストリームの中に /DecodeParms が含まれてしまう。これが運悪く extractbb (dvipdfmx) の解釈すべき範囲にあるときに dvipdfmx が非対応であるため、その PDF 画像を \includegraphics できないという問題があった。これは TeX Live 2015 以降および W32TeX [2014/08/14] 以降、/DecodeParms に対応する処理が施された。したがって、主に Adobe 純正品ユーザにとってこの問題を気にする必要がなくなった。

詳細は以下のリンクを参照:

extractbb の自動実行が標準で許可された

これは dvipdfmx 自身の進化も一因といえるだろう。

画像の BoundingBox 情報を取得する extractbb というプログラムを実行しなければ、LaTeX は図を貼り込む領域を確保できない。この extractbb は、TeX Live 2013 以前では .xbb ファイルを吐いていたため、paranoid 制約に反していた。2014/07/02 の変更で extractbb は BoundingBox 情報を .xbb ファイルを書き出すのを止め、代わりにその内容を標準出力に書き出すようになったので、それを TeX エンジンがパイプ入力を用いて読み込めば paranoid 制約を満たすことができる。これに伴い、TeX Live 2015 以降では自動実行が許可されたのである。具体的にはTEXMFDIST/web2c/texmf.cnf の shell_escape_commands に extractbb が追加されているのがわかる。

詳細は以下のリンクを参照:

 

変わったこと (2):Ghostsctipt 9.16 への更新

TeX Live 2015 (Windows) や MacTeX-2015 に付属した Ghostscript はバージョン9.16である。以前の記事で説明したとおり、アウトライン化した EPS を出力するために従来からよく用いられてきた epswrite というデバイスが gs9.15 を境に廃止され、代わりに eps2write というデバイスが追加されて現在に至っている。

eps2write には epswrite と比較して出力する EPS のソース中にバイナリを含む(従来はテキストのみだった)という点にも注意が必要。この変更の影響を直に受けたアプリケーションが次々と対策を講じた。

ここで注意すべきなのは、TeX Live 2015 に付属した Asymptote 2.35 では eps2write に対応させると同時に従来の epswrite のサポートが打ち切られてしまった。このため、Asymptote のバージョンを上げた場合に Ghostscript のバージョンが 9.10 以下だとエラーになる。

 

変わったこと (3):e-pTeX 新プリミティブの実装

タイトルでは分かりにくいが、\pdfshellescape と \lastnodechar というプリミティブが実装された。\pdfshellescape は pdfTeX と同様のものであるので割愛する。\lastnodechar については分かりやすい例がある。例えば pLaTeX

これは,\textgt{『ほげ党宣言』}の…

のように書くと「全角カンマと開き括弧の間に全角アキが挿入されてしまう」という挙動が話題になっていて、この問題を解決すべく実装されたのが \lastnodechar プリミティブである。これらが TeX Live 2015 には取り込まれた。以下を参照。

 

変わったこと (4):LaTeX2e が新しくなった

従来の「バグ修正用のパッチは LaTeX2e 本体(カーネル)とは別に fixltx2e パッケージとして提供する」という方針が転換し、パッチが標準で適用されるようになった。一般ユーザにとっては問題になりそうにないが、念のためメモしておく。

 

変わらなかったこと

やっぱり TeX はアレです。

 

MacTeX-2015 の TeX Live Utility の不具合

さて一方で、早速不具合も報告されている。MacTeX-2015 の TeX Live ユーティリティで内部エラーが発生したり、リポジトリにアクセスできなかったりするようである。対処法は Forum に書かれている。

 

その他(おまけ)

今年4月に TeXworks 0.4.6 がリリースされた際、「エラー時に子プロセスを呼び出すプログラムを停止しようとするとフリーズする」という問題が発生した。TeX Forum での議論を元に開発チームに対処していただいたので、TeX Live 2015 に間に合った。