TeXnique を更新

久々に TeXnique を更新. 相変わらず LaTeX ソース → DVI → (dvipdfmx) → しおり付PDF の説明しかないが, この話題だけでも結構厄介な部分があるからメモを残してよかった.

実はこの話題, TeX マクロである程度解決できる方法が確立されていて, それが TeX Wiki に載っている. そんなわけで, このページの存在意義もだいぶ薄れてきているが... そのソースコードを個人的に解釈してみた.

\ifx\kanjiskip\undefined\else % \kanjiskip が定義されていない ((u)pLaTeX/jLaTeX ではない) 場合は hyperref パッケージを読み込まない
  \usepackage{atbegshi}
  \ifx\ucs\undefined % \ucs が定義されていない (upLaTeX ではない) 場合
    \ifnum 42146=\euc"A4A2 % EUC-JP における「あ」が内部コードで 0xA4A2 であるか (EUC-JP か)
      \AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}} % hyperref で埋め込まれたしおり情報の文字コードが EUC-JP なので UCS-2 に変換する
    \else % EUC-JP における「あ」が内部コードで 0xA4A2 と異なっている (EUC-JP とは異なっている) なら
      \AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}} % hyperref で埋め込まれたしおり情報の文字コードが Shift JIS だと決め打ちして UCS-2 に変換する
    \fi
  \else % \ucs が定義されている (upLaTeX である) 場合
    \AtBeginShipoutFirst{\special{pdf:tounicode UTF8-UCS2}} % hyperref で埋め込まれたしおり情報の文字コードが UTF-8 なので UCS-2 に変換する
  \fi
  \usepackage[dvipdfmx]{hyperref}
\fi

ソースコードの解説で, ISO-2022-JP (いわゆる JIS) の扱いはどうなっているのか (MSB が 0 なので) と疑問に思うかもしれませんが, TeX ソースが ISO-2022-JP だった場合, DVI の内部コードは EUC-JP と同じ扱いになるので問題ありません.

コメントを残す