Hatena::ブログ(Diary)

アセトアミノフェンの気ままな日常

2016-06-18

pLaTeX と共存できていない LaTeX パッケージの備忘録(続・続編)

なんか多忙のためサブブログを書かない日が数週間続いてしまった。この期間にメインブログの記事は 3 回も更新したが…

気を取り直して、初回第2回に続き、3回目。

color パッケージ

縦組で使うと、ドライバ dvipdfmx 指定だと正常終了なのに dvips 指定だとエラー。

\documentclass[dvips]{tarticle}
\usepackage{color}
\begin{document}

{\color{red}あいうえお}

\end{document}
./test.tex:7: Incompatible direction list can't be unboxed.
\@begindvi ->\unvbox \@begindvibox 
                                   \global \let \@begindvi \@empty 
l.7 \end{document}
                  
? 

原因はまだ調べていない。別のところで報告されているのすら見つからない…

追記 (2016-06-23):TeX Live 2015 最終版では通る模様。2016 最新版はエラー。

  • 2015 は「dvips.def 2015/12/30 v3.0k」
  • 2016 は「dvips.def 2016/06/02 v3.0l」あるいは「dvips.def 2016/06/17 v3.0m」

なので、この間の変更すなわち setpagesize が関係していると推測*1
→ かなり厄介そうなので forum:1956 へ。とりあえず回避するには:

(1) ユーザ側でなんとかする案:nosetpagesize オプション
\documentclass[dvips]{tarticle}
\usepackage[nosetpagesize]{color}
\begin{document}

{\color{red}あいうえお}

\end{document}

デフォルトが setpagesize なので、それを override する。しかし、この方法はよほどユーザが注意しないと忘れがちだと思う*2

(2) pLaTeX で対処できるかもしれない案
\makeatletter
\def\@begindvi{%
  \box\@begindvibox
  \global\let\@begindvi\@empty
}
\makeatother
\documentclass[dvips]{tarticle}
\usepackage{color}
\begin{document}

{\color{red}あいうえお}

\end{document}

これはエラーなく終了して出力も正常。ただし unbox しないことで良からぬ副作用がないかどうかは未検討。もし副作用がないならこれは優れた方法かも。

(3) pLaTeX でエラーだけ消し去る案(レイアウトは駄目なまま)
\makeatletter
\def\@begindvi{%
  \iftbox\@begindvibox\tate\else\yoko\fi
  \unvbox\@begindvibox
  \global\let\@begindvi\@empty
}
\makeatother
\documentclass[dvips]{tarticle}
\usepackage{color}
\begin{document}

{\color{red}あいうえお}

\end{document}

先述の心配事である unbox は保持できるが、dvips.def に対して pLaTeX 縦組用に ad hoc な変更を加えてもらうことが前提として必要になってしまう。
もう少し調べてみた (2016-06-24) 。

ちょっと前の biblatex パッケージ(?)

これは forum:1508 より。最小ソースは置いてあるんだが…あれ、今やってみるとエラー出なかった… biblatex が変わったのかな。

CJK パッケージ ← 要注意!

欧文 LaTeX (pdflatex) などで日中韓文書を作りたい場合に便利な CJK パッケージだが、結論を言うと僕自身は CJK.sty は pLaTeX とは共存しないと思う。最も引っかかりそうなのが、ruby.sty という「ルビをふるパッケージ」である*3。これが CJK パッケージ群のものだとは名前からは気づきにくい。

\documentclass[a4j]{tarticle}
\usepackage{ruby} % including CJK.sty here!
\begin{document}
振り仮名のテスト。\ruby{}{}\ruby{}{}\ruby{}{}のテスト。
\end{document}

ルビが小書きにならないのは、pLaTeX が再定義している \selectfont が CJK.sty によって上書きされてしまうから。同じ原因で、OTF パッケージが文字化けするという問題も知られている (forum:1748) 。pLaTeX でルビをつけたければ、美しい pxrubrica パッケージを使うか、簡単なマクロなら okumacro を参考に \ruby を作ってしまうのが上策だろう。

先日の記事では everysel / tracefnt パッケージによる \selectfont の再定義をうまく回避する方法を考察したが、これは everysel など(や、それに依存したパッケージたち)に一定の有用性を見いだせたからである。しかし、CJK の場合はなにが有用なのか分からない… というわけで、forum:1954 へ出した。

*1:geometry パッケージが縦組で使えないのも同じエラーなので、たぶん現象としては近いことが起きているのかも。

*2:第三者のパッケージが color を呼ぶ事例は極めて多いが、ページを shipout するところで初めてエラーが出るため、原因に気づきづらいはずだ。

*3:なお、いくつかの Web サイトでは、同名ではあるが全く異なる ruby.sty を紹介していることがある(たとえば大東文化大学の水谷氏が配布している『LaTeX 入門』2013 年度β版など)。これは pLaTeX 向けのルビパッケージであるが、TeX Live や W32TeX には収録されていない。決して混同しないように!

スパム対策のためのダミーです。もし見えても何も入力しないでください
ゲスト


画像認証

Connection: close