dvipdfmxを使うとbookmarksopenでしおりが展開しない
platexで文書を組版していて、dvipdfmxで生成したpdfのしおりが展開されない問題がありました。例えば以下のような場合です。
\documentclass{jsarticle}
\usepackage[dvipdfmx,%
bookmarksopen=true,% ブックマーク展開
bookmarksopenlevel=3,% 展開レベル
% hidelinks,% リンク枠色なし
]{hyperref}
\usepackage{pxjahyper} % 文字化け防止
\begin{document}
\tableofcontents
\part{piyo}
\section{hoge}
section.
\subsection{hogehoge}
subsection.
\subsubsection{hogehogehoge}
bookmarksdepth=tocdepth(\the\value{tocdepth})
\end{document}
このコードではhyperref
パッケージをbookmarksopen
オプション付きで読み込んでいるため、section・subsectionのしおり木構造は展開した状態で表示設定されるはずでした1。しかし、Acrobat Reader等で開いてみても下図のように閉じたままです。PDFリーダーの設定や対応状況によるものかとも思い調べてみましたが、他の方もupLaTeX + dvipdfmxの環境下ではしおり展開されないことが分かりました。
うまく行かないことを知ると気になってしまい、対処法を色々と調べてみました。
まずヒットしたページでは、私と同様にdvipdfm(x)でしおり展開されないことを質問していました。回答には、dvipdfm(x)のサポートするspecial
ではbookmarksopen
を取り扱えないため、dvipdfm(x)に-E
オプションを付加して展開を指示する旨の記述があります。しかし、試しても変化はありませんでした。日時が2003年ですし仕様が変わったのかもしれません。
解決法
-E
オプションは使用できませんでしたが、dvipdfmxの他のオプションを調べてみました。その結果、dvipdfmxのコマンドラインオプションに-O 数値
の形式で、しおりの展開深度を指定できることが分かりました23。
例えば、dvipdfmx -O 1 foo.dvi
ならsectionまでの展開。dvipdfmx -O 2 foo.dvi
ならsubsectionまでの展開になります。-O 2
を設定した場合、以下のようにsubsectionまで展開されるようになりました!
まとめ
hyperrefパッケージを用いてURLリンクする方法については、この記事で説明しています。リンクやしおりに限らずhyperrefには様々な機能があるので、文書クオリティを上げるために調べてみましょう!
-
デフォルトでは、subsubsection以下の見出し語はしおりになりません。これは
hyperref
のbookmarksdepth
オプションで決定され、初期値はtocdepth
です。jsarticleにおいてはtocdepth
が2(subsection
)に設定されています。変更方法には、bookmarksdepth=subsubsection
のように設定を変更する手法や、tocdepthカウンタ値をsetcounterで直接変更する手法があります。 ↩ -
先の質問サイトに記されている通り、hyperrefの
bookmarksopen
オプション指定はdvipdfmxを使用する場合では無視されます。 ↩ -
デフォルトでは0です。jsarticleなどのarticle系クラスにおいては、深さレベル番号0に相当するコマンドは
\part
なので、partまでしおり展開されます。 ↩