マクロツイーター

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

考察:文書情報が文字化けしない hyperref の設定

前回までの「実験」の結果を受けて、hyperref の適切なオプション(無し、unicodepdfencoding=auto ((前述の通り、「無し」は pdfencoding=pdfdoc と同じ、unicodepdfencoding=unicode と同じである。)))の設定が何であるかを考える。できるだけ不正な表示や警告が起こらないものを選ぶと以下に示す設定が最適となる。一般の LaTeX ユーザはこの結果だけを知っていれば十分であろう。

欧文(CJK無し)の文書の場合
  • 欧文 8 ビット TeX*1unicode、または pdfencoding=auto
    pTeX 系でも文書情報に和文文字がないならこちらで構わない。
    ※「OT1 + Latin-1」の範囲の文字のみ使用ならば「無し」でも構わない。
  • XeTeX: 無し、または pdfencoding=auto
  • LuaTeX: unicode、または pdfencoding=auto
和文(または CJK)の文書の場合
  • pTeX: 無し;pxjahyper パッケージを読み込む。
    ※ ただし「JIS X 0208 + ASCII」の範囲外の文字は欠落またはフォールバックの表示となる。
  • upTeX: 無し;pxjahyper パッケージを読み込む。
  • XeTeX*2: 無し、または pdfencoding=auto
  • LuaTeX: unicode、または pdfencoding=auto
  • 欧文 8 ビット TeX + CJK パッケージ:
    • UTF-8 入力の場合: unicode を指定;CJKutf8 パッケージを読み込む。
    • それ以外: CJKbookmarks を指定;その上で hyperref の出力を外部フィルタもしくは(dvipdfmx の場合)pdf:tounicode special を用いて変換されるようにする。

*1:LaTeX のコマンド名でいうと latex と pdflatex が該当する。

*2:XeTeX/LuaTeX については、CJK 文字の有無、また CJK の出力を補助するパッケージ(xeCJK や LuaTeX-ja 等)のパッケージの有無に関わらず設定は同じである。