TeX に含まれている hyperref
パッケージはリンクつきのリソース
(DVI,
PS,
PDF, etc)
などを作るために必要です.
PDF のしおりは非 ASCII 文字を利用する場合には
BOM が先頭にある
Unicode (UCS-2)
で記述する必要がありますが,
hyperref
パッケージでは文字コードの変換まではサポートしていないので,
結果的にしおりは文字化けをしてしまいます.
最近の
dvipdfmx
は文字コードの変換をサポートしているので,
LaTeX ソース中に命令を記述すればしおりも無事に日本語になります.
次に示すのが LaTeX で記述した文書の例です.
また, hyperref
6.77a (2007 年 10 月 29 日) 版で
重要な仕様変更がありました.
古い TeX パッケージをインストールした場合は
\AtBeginShipoutFirst
の代わりに
\AtBeginDvi
を使うことでうまくいくはずです.
とある方からの指摘により,
pTeX のバージョンによっては TeX ソースの文字コードによって
CMap の指示を変える必要がないということが判明しました.
うまくいかない場合は \special
命令における CMap の指示について
いろいろ試してみてください.
\documentclass{article} \usepackage{atbegshi} %\AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}} % for JIS/EUC-JP %\AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}} % for Shift JIS \AtBeginShipoutFirst{\special{pdf:tounicode UTF8-UTF16}} % for UTF-8 \usepackage[% dvipdfmx, setpagesize=false,% bookmarks, bookmarksopen, bookmarksnumbered,% colorlinks, breaklinks,% pdfstartview={FitH -32768},% pdftitle={日本語を含むしおりの作成},% pdfsubject={dvipdfmx が dvipdfm よりも進んでいるところ},% pdfauthor={著作 権利者},% pdfkeywords={dvipdfmx, TeX, pdf, 変換, 日本語, しおり}% ]{hyperref} \begin{document} \section{日本語を含むしおり} かつて, {\LaTeX} から PDF に変換するときに, しおりに日本語が含まれている場合は, out2uni を使う必要があった. \end{document}
\usepackage
コマンドで hyperref を呼び出すときに,
いろいろなオプションをつけています.
その中で, 文字列を引数にするオプション
(先の例では pdfauthor など) を記述するときは,
ブレース ({}) でくくるのが無難です.
また, 近年の
hyperref パッケージでは,
setpagesize
オプションを false に指定しないと,
hyperref パッケージが紙面サイズの定義を中途半端に上書きすることがあり,
組版に悪影響が出ることがあります. デフォルトではなぜか
true 指定になっているので, 明示的に指定する必要があります.
Windows 版と Mac 版の Acrobat Reader では, 日本語のしおりをきちんと見ることが出来ますが, Linux 版 (私が確認したのは Vine Linux 2.6 の acroread 5 です) では, しおりの中に含まれる 非 ASCII 文字は表示されないようです.
最新のオリジナルの dvipdfmx
には Shift JIS と Unicode の関係を示す CMap ファイルの
90ms-RKSJ-UCS2 が含まれていないようです.
角藤 亮さんが配布している
Windows 用 の TeX パッケージには含まれているので,
必要ならばそこからコピーして利用するのがよいでしょう.
Windows ネイティブの環境の場合は始めから角藤さんが配布しているパッケージを利用するのが無難です.
例文ファイルを
ZIP 形式で圧縮してまとめたものを置いておきます.
内容は, jpdfbook/jpdfbook-{euc,jis,sjis,utf8}.tex,
jpdfbook/jpdfbook.tex 及び jpdfbook/pxjahyper.tex の 6 つのファイルです.
最初の 4 つのファイルは, 上記の TeX ソースについて,
文字コードを EUC-JP, ISO-2022-JP (JIS), Shift JIS, UTF-8
にしたものです.
また, jpdfbook/jpdfbook.tex は,
文字コードの切り替えをマクロで行ったもの (参考: TeX
Wiki),
jpdfbook/jpdfbook-pxjahyper.tex は
zrbabbler
氏により作成された
PXjahyper
パッケージを使用したものです.
platex
コマンドを何度か繰り返し使うと,
拡張子が .out
のファイルが出来るので, それを確認した後にもう一度 platex
コマンドをかけた後に, dvipdfmx
で
DVI ファイルを PDF 形式に変換しましょう.
残念ながら, この方法は万能ではありません.
PSTricks などのパッケージを使う場合は,
一度 dvips などで PS 形式にしてから
ps2pdf (Ghostscript のツールのひとつ) で PDF に変換する必要があります.
この場合は out2uni
が必要です.
サンプルのプレアンブル中にある
\AtBeginShipoutFirst{\special{pdf:tounicode EUC-UCS2}}
(あるいは \AtBeginShipoutFirst{\special{pdf:tounicode 90ms-RKSJ-UCS2}})を削除し,
hyperref パッケージを呼び出すときの
\usepackage
のオプションも,
dvipdfm の部分を適切なオプションに変更する必要があります.